Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rQJYx-000OQ6-I9 for pgsql-hackers@arkaria.postgresql.org; Thu, 18 Jan 2024 03:59:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rQJYw-000JcD-2t for pgsql-hackers@arkaria.postgresql.org; Thu, 18 Jan 2024 03:59:30 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rQJYu-000Jbp-AS for pgsql-hackers@lists.postgresql.org; Thu, 18 Jan 2024 03:59:29 +0000 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rQJYe-0025oS-5N for pgsql-hackers@lists.postgresql.org; Thu, 18 Jan 2024 03:59:26 +0000 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-6d9b37f4804so212442b3a.1 for ; Wed, 17 Jan 2024 19:59:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1705550351; x=1706155151; darn=lists.postgresql.org; 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=2QWy6zLo5jx+27Jw/k4v2v+anS2qsgbulwexhGb8npE=; b=CJFv/k4Hp+0lG4w09PtNuohpUkx3cHSiRC5FIdqLrWwnMC8VfKw6HK2GyBl/41H+gu 9icz5gR2Ji8CoRvSqInoVMjge4ycZ9B4msyIj2GhkotARGAOutG7asRHXTGwEm6UH5y0 XM0J8R3jeCczTTMtk7F8WfNy/fqFFZkjhxGqes7b3Z/8UjkQyze8gOPRuOvF1AhE3cfp 18H++M2M4F/lTG5R1XslQLhRQxRaax/IncOsIKoo3gyIFN+eQX5gtvvH/b9/CMrWy5ui o7wE5HN1NG7S4zCUGJ33kln5KKoQuVaEja4ZxRrIg0G+3hY7QQ/C/deTu1nn1u/VvgqY uwtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705550351; x=1706155151; 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=2QWy6zLo5jx+27Jw/k4v2v+anS2qsgbulwexhGb8npE=; b=k5Y2gnZypB4Hh/GUqVVd8SOLiWJ1jR0c/dNxIf2EJARG4yKKJuJekvct0HBWNd4MII gTk+++mhyJfx7wobsiBdip9VQoQ4oKIYGc5rE5fpJely1xrf/hwWgJe+DNO3LkjP5Cpw HSyde5IXbKgpiR0V3+9pXvj70oO/8cc14XGKGnJujTz9sTEofo7kM1ZREe5euU4gR03z P8vpoTNh5WFiGSRzQLrKDsSITr/scJ+5u6gvaK7JAwARQoR9g4onlKPNf4HSwQqhkT9L wfjCe1Y5DopSZ6rd1pagI8n0gy8ZbnXNbZWHOLNtq752BELTSXfh2CAgDQu0cxzClOvA ObEw== X-Gm-Message-State: AOJu0Yx6Z+0Kw0gr+tWn6LrIZ3iNgaoaPhVsZOoEgZhDooDtQFTIuitf FMtJrbf/iXaDZN1lGz1tSy4hwbdQrnNlb0XnIKoIEsIE6PAgpW6w/BvzokfbJuw= X-Google-Smtp-Source: AGHT+IHqkVztPj/A1wQ+AFX1pzj27GUMdlE1TfGU7uWDlFuGuqTOvsRBeiwE435CsaqYo/lXafFm3w== X-Received: by 2002:a05:6a20:4315:b0:19b:33fe:b768 with SMTP id h21-20020a056a20431500b0019b33feb768mr3541166pzk.24.1705550349907; Wed, 17 Jan 2024 19:59:09 -0800 (PST) Received: from [192.168.2.139] ([50.53.98.191]) by smtp.googlemail.com with ESMTPSA id y4-20020a636404000000b005cd8ada89e5sm471825pgb.70.2024.01.17.19.59.06 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 17 Jan 2024 19:59:08 -0800 (PST) Content-Type: multipart/mixed; boundary="------------5mQnkvShJhECliiRK4zn4H0Z" Message-ID: <0af6a323-f026-4cd9-adf1-941038cd00de@illuminatedcomputing.com> Date: Wed, 17 Jan 2024 19:59:06 -0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: SQL:2011 application time Content-Language: en-US To: jian he , Peter Eisentraut Cc: PostgreSQL Hackers References: <2d9740ad-3bb7-473c-8441-344351caa8ee@illuminatedcomputing.com> <596fefdd-6202-4228-b7c6-f240b1cbe06e@eisentraut.org> <35400587-6865-4a2c-9ea4-4761669478ea@eisentraut.org> <71b45adb-b496-4e58-b134-0a091014e63f@illuminatedcomputing.com> <7be8724a-5c25-46d7-8325-1bd8be6fa523@eisentraut.org> From: Paul Jungwirth 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. --------------5mQnkvShJhECliiRK4zn4H0Z Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello, Here are new patches consolidating feedback from several emails. I haven't addressed everything but I think I'm overdue for a reply: On 1/4/24 21:06, jian he wrote: > > I am confused. > say condition: " (cmp_l1l2 <= 0 && cmp_u1l2 >= 0 && cmp_u1u2 <= 0)" > the following code will only run PartA, never run PartB? > > ` > else if (cmp_l1l2 >= 0 && cmp_u1u2 <= 0) > PartA > else if (cmp_l1l2 <= 0 && cmp_u1l2 >= 0 && cmp_u1u2 <= 0) > PartB > ` > > minimum example: > #include > #include > #include > #include > int > main(void) > { > int cmp_l1l2; > int cmp_u1u2; > int cmp_u1l2; > int cmp_l1u2; > cmp_l1u2 = -1; > cmp_l1l2 = 0; > cmp_u1u2 = 0; > cmp_u1l2 = 0; > assert(cmp_u1l2 == 0); > if (cmp_l1u2 > 0 || cmp_u1l2 < 0) > printf("calling partA\n"); > else if (cmp_l1l2 >= 0 && cmp_u1u2 <= 0) > printf("calling partB\n"); > else if (cmp_l1l2 <= 0 && cmp_u1l2 >= 0 && cmp_u1u2 <= 0) > printf("calling partC\n"); > } All of the branches are used. I've attached a `without_portion.c` minimal example showing different cases. For ranges it helps to go through the Allen relationships (https://en.wikipedia.org/wiki/Allen%27s_interval_algebra) to make a comprehensive check. (But note that our operators don't exactly match that terminology, and it's important to consider closed-vs-open and unbounded cases.) > I am confused with the name "range_without_portion", I think > "range_not_overlap" would be better. I think I covered this in my other reply and we are now in agreement, but if that's mistaken let know me. > select numrange(1.1, 2.2) @- numrange(2.0, 3.0); > the result is not the same as > select numrange(2.0, 3.0) @- numrange(1.1, 2.2); Correct, @- is not commutative. > So your categorize oprkind as 'b' for operator "@-" is wrong? > select oprname,oprkind,oprcanhash,oprcanmerge,oprleft,oprright,oprresult,oprcode > from pg_operator > where oprname = '@-'; 'b' is the correct oprkind. It is a binary (infix) operator. > aslo > select count(*), oprkind from pg_operator group by oprkind; > there are only 5% are prefix operators. > maybe we should design it as: > 1. if both inputs are empty range, the result array is empty. > 2. if both inputs are non-empty and never overlaps, put both of them > to the result array. > 3. if one input is empty another one is not, then put the non-empty > one into the result array. Also covered before, but if any of this still applies please let me know. > after applying the patch: now the catalog data seems not correct to me. > SELECT a1.amopfamily > ,a1.amoplefttype::regtype > ,a1.amoprighttype > ,a1.amopstrategy > ,amoppurpose > ,amopsortfamily > ,amopopr > ,op.oprname > ,am.amname > FROM pg_amop as a1 join pg_operator op on op.oid = a1.amopopr > join pg_am am on am.oid = a1.amopmethod > where amoppurpose = 'p'; > output: > amopfamily | amoplefttype | amoprighttype | amopstrategy | > amoppurpose | amopsortfamily | amopopr | oprname | amname > ------------+---------------+---------------+--------------+-------------+----------------+---------+---------+-------- > 2593 | box | 603 | 31 | p > | 0 | 803 | # | gist > 3919 | anyrange | 3831 | 31 | p > | 0 | 3900 | * | gist > 6158 | anymultirange | 4537 | 31 | p > | 0 | 4394 | * | gist > 3919 | anyrange | 3831 | 32 | p > | 0 | 8747 | @- | gist > 6158 | anymultirange | 4537 | 32 | p > | 0 | 8407 | @- | gist > (5 rows) > > select oprcode, oprname, oprleft::regtype > from pg_operator opr > where opr.oprname in ('#','*','@-') > and oprleft = oprright > and oprleft in (603,3831,4537); > output: > > oprcode | oprname | oprleft > ----------------------------+---------+--------------- > box_intersect | # | box > range_intersect | * | anyrange > multirange_intersect | * | anymultirange > range_without_portion | @- | anyrange > multirange_without_portion | @- | anymultirange > (5 rows) This seems correct. '#' is the name of the box overlaps operator. Probably I should add a box @- operator too. But see below. . . . > should amoppurpose = 'p' is true apply to ' @-' operator? Yes. > catalog-pg-amop.html: > ` > amopsortfamily oid (references pg_opfamily.oid): > The B-tree operator family this entry sorts according to, if an > ordering operator; zero if a search operator > ` > you should also update the above entry, the amopsortfamily is also > zero for "portion operator" for the newly implemented "portion > operator". Okay, done. > v21-0006-Add-UPDATE-DELETE-FOR-PORTION-OF.patch > create mode 100644 src/backend/utils/adt/period.c > create mode 100644 src/include/utils/period.h > you should put these two files to v21-0008-Add-PERIODs.patch. > it's not related to that patch, it also makes people easy to review. You're right, sorry! On 1/8/24 16:00, jian he wrote: > > +/* > + * ForPortionOfClause > + * representation of FOR PORTION OF FROM TO > + * or FOR PORTION OF () > + */ > +typedef struct ForPortionOfClause > +{ > + NodeTag type; > + char *range_name; > + int range_name_location; > + Node *target; > + Node *target_start; > + Node *target_end; > +} ForPortionOfClause; > > "range_name_location" can be just "location"? > generally most of the struct put the "location" to the last field in the struct. > (that's the pattern I found all over other code) Agreed, done. > + if (isUpdate) > + { > + /* > + * Now make sure we update the start/end time of the record. > + * For a range col (r) this is `r = r * targetRange`. > + */ > + Expr *rangeSetExpr; > + TargetEntry *tle; > + > + strat = RTIntersectStrategyNumber; > + GetOperatorFromCanonicalStrategy(opclass, InvalidOid, "intersects", > "FOR PORTION OF", &opid, &strat); > + rangeSetExpr = (Expr *) makeSimpleA_Expr(AEXPR_OP, get_opname(opid), > + (Node *) copyObject(rangeVar), targetExpr, > + forPortionOf->range_name_location); > + rangeSetExpr = (Expr *) transformExpr(pstate, (Node *) rangeSetExpr, > EXPR_KIND_UPDATE_PORTION); > + > + /* Make a TLE to set the range column */ > + result->rangeSet = NIL; > + tle = makeTargetEntry(rangeSetExpr, range_attno, range_name, false); > + result->rangeSet = lappend(result->rangeSet, tle); > + > + /* Mark the range column as requiring update permissions */ > + target_perminfo->updatedCols = bms_add_member(target_perminfo->updatedCols, > + range_attno - FirstLowInvalidHeapAttributeNumber); > + } > + else > + result->rangeSet = NIL; > I think the name "rangeSet" is misleading, since "set" is generally > related to a set of records. > but here it's more about the "range intersect". Okay, I can see that. I used "rangeSet" because we add it to the SET clause of the UPDATE command. Here I've changed it to rangeTargetList. I think this matches other code and better indicates what it holds. Any objections? In the PERIOD patch we will need two TLEs here (that's why it's a List): one for the start column and one for the end column. > in ExecDelete > we have following code pattern: > ExecDeleteEpilogue(context, resultRelInfo, tupleid, oldtuple, changingPart); > if (processReturning && resultRelInfo->ri_projectReturning) > { > .... > if (!table_tuple_fetch_row_version(resultRelationDesc, tupleid, > SnapshotAny, slot)) > elog(ERROR, "failed to fetch deleted tuple for DELETE RETURNING"); > } > } > > but the ExecForPortionOfLeftovers is inside ExecDeleteEpilogue. > meaning even without ExecForPortionOfLeftovers, we can still call > table_tuple_fetch_row_version > also if it was *not* concurrently updated, then our current process > holds the lock until the ending of the transaction, i think. > So the following TODO is unnecessary? > > + /* > + * Get the range of the old pre-UPDATE/DELETE tuple, > + * so we can intersect it with the FOR PORTION OF target > + * and see if there are any "leftovers" to insert. > + * > + * We have already locked the tuple in ExecUpdate/ExecDelete > + * (TODO: if it was *not* concurrently updated, does > table_tuple_update lock the tuple itself? > + * I don't found the code for that yet, and maybe it depends on the AM?) > + * and it has passed EvalPlanQual. > + * Make sure we're looking at the most recent version. > + * Otherwise concurrent updates of the same tuple in READ COMMITTED > + * could insert conflicting "leftovers". > + */ > + if (!table_tuple_fetch_row_version(resultRelInfo->ri_RelationDesc, > tupleid, SnapshotAny, oldtupleSlot)) > + elog(ERROR, "failed to fetch tuple for FOR PORTION OF"); I think you're right. According to the comments on TM_Result (returned by table_tuple_update), a TM_Ok indicates that the lock was acquired. > +/* ---------------------------------------------------------------- > + * ExecForPortionOfLeftovers > + * > + * Insert tuples for the untouched timestamp of a row in a FOR > + * PORTION OF UPDATE/DELETE > + * ---------------------------------------------------------------- > + */ > +static void > +ExecForPortionOfLeftovers(ModifyTableContext *context, > + EState *estate, > + ResultRelInfo *resultRelInfo, > + ItemPointer tupleid) > > maybe change the comment to > "Insert tuples for the not intersection of a row in a FOR PORTION OF > UPDATE/DELETE." Changed to "untouched portion". > + deconstruct_array(DatumGetArrayTypeP(allLeftovers), > typcache->type_id, typcache->typlen, > + typcache->typbyval, typcache->typalign, &leftovers, NULL, &nleftovers); > + > + if (nleftovers > 0) > + { > I think add something like assert nleftovers >=0 && nleftovers <= 2 > (assume only range not multirange) would improve readability. I added the first assert. The second is not true for non-range types. > + > + If the table has a range column or > + PERIOD, > + you may supply a FOR PORTION OF clause, and > your delete will > + only affect rows that overlap the given interval. Furthermore, if > a row's span > + extends outside the FOR PORTION OF bounds, then > your delete > + will only change the span within those bounds. In effect you are > deleting any > + moment targeted by FOR PORTION OF and no moments outside. > + > + > + > + Specifically, after PostgreSQL deletes > the existing row, > + it will INSERT > + new rows whose range or start/end column(s) receive the remaining > span outside > + the targeted bounds, containing the original values in other columns. > + There will be zero to two inserted records, > + depending on whether the original span extended before the targeted > + FROM, after the targeted TO, > both, or neither. > + > + > + > + These secondary inserts fire INSERT triggers. First > + BEFORE DELETE triggers first, then > + BEFORE INSERT, then AFTER INSERT, > + then AFTER DELETE. > + > + > + > + These secondary inserts do not require INSERT > privilege on the table. > + This is because conceptually no new information has been added. > The inserted rows only preserve > + existing data about the untargeted time period. Note this may > result in users firing INSERT > + triggers who don't have insert privileges, so be careful about > SECURITY DEFINER trigger functions! > + > > I think you need to wrap them into a big paragraph, otherwise they > lose the context? > please see the attached build sql-update.html. Still TODO. > also I think > + PERIOD, > should shove into Add-PERIODs.patch. > > otherwise you cannot build Add-UPDATE-DELETE-FOR-PORTION-OF.patch > without all the patches. Fixed. > I think the "FOR-PORTION-OF" feature is kind of independ? > Because, IMHO, "for portion" is a range datum interacting with another > single range datum, but the primary key with "WITHOUT OVERLAPS", is > range datum interacting with a set of range datums. > now I cannot just git apply v22-0006-Add-UPDATE-DELETE-FOR-PORTION-OF.patch. > That maybe would make it more difficult to get commited? Still TODO. On 1/8/24 21:33, jian he wrote: > > src5=# select range_without_portion(numrange(1.0,3.0,'[]'), > numrange(1.5,2.0,'(]')); > range_without_portion > --------------------------- > {"[1.0,1.5]","(2.0,3.0]"} > (1 row) > > src5=# \gdesc > Column | Type > -----------------------+----------- > range_without_portion | numeric[] > (1 row) > > src5=# \df range_without_portion > List of functions > Schema | Name | Result data type | Argument data > types | Type > ------------+-----------------------+------------------+---------------------+------ > pg_catalog | range_without_portion | anyarray | anyrange, > anyrange | func > (1 row) > > so apparently, you cannot from (anyrange, anyrange) get anyarray the > element type is anyrange. > I cannot find the documented explanation in > https://www.postgresql.org/docs/current/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC > > anyrange is POLYMORPHIC, anyarray is POLYMORPHIC, > but I suppose, getting an anyarray the element type is anyrange would be hard. You're right, that is a problem. I think the right approach is to make intersect and without_portion just be support functions, not operators. Then I don't need to introduce the new 'p' amop strategy at all, which seemed like a dubious idea anyway. Then the without_portion function can return a SETOF instead of an array. Another idea is to add more polymorphic types, anyrangearray and anymultirangearray, but maybe that is too big a thing. OTOH I have wanted those same types before. I will take a stab at it. On 1/11/24 06:44, Peter Eisentraut wrote: > Here is some more detailed review of the first two patches. (I reviewed v20; I see you have also > posted v21, but they don't appear very different for this purpose.) > > v20-0001-Add-stratnum-GiST-support-function.patch > > * contrib/btree_gist/Makefile > > Needs corresponding meson.build updates. Fixed. > * contrib/btree_gist/btree_gist--1.7--1.8.sql > > Should gist_stratnum_btree() live in contrib/btree_gist/ or in core? > Are there other extensions that use the btree strategy numbers for > gist? Moved. None of our other contrib extensions use it. I thought it would be friendly to offer it to outside extensions, but maybe that is too speculative. > +ALTER OPERATOR FAMILY gist_vbit_ops USING gist ADD > + FUNCTION 12 (varbit, varbit) gist_stratnum_btree (int2) ; > > Is there a reason for the extra space after FUNCTION here (repeated > throughout the file)? Fixed. > +-- added in 1.4: > > What is the purpose of these "added in" comments? I added those to help me make sure I was including every type in the extension, but I've taken them out here. > v20-0002-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch > > * contrib/btree_gist/Makefile > > Also update meson.build. Done. > * contrib/btree_gist/sql/without_overlaps.sql > > Maybe also insert a few values, to verify that the constraint actually > does something? Done. > * doc/src/sgml/ref/create_table.sgml > > Is "must have a range type" still true? With the changes to the > strategy number mapping, any type with a supported operator class > should work? Updated. Probably more docs to come; I want to go through them all now that we support more types. > * src/backend/utils/adt/ruleutils.c > > Is it actually useful to add an argument to > decompile_column_index_array()? Wouldn't it be easier to just print > the " WITHOUT OVERLAPS" in the caller after returning from it? Okay, done. > * src/include/access/gist_private.h > > The added function gistTranslateStratnum() isn't really "private" to > gist. So access/gist.h would be a better place for it. Moved. > Also, most other functions there appear to be named "GistSomething", > so a more consistent name might be GistTranslateStratnum. > > * src/include/access/stratnum.h Changed. > The added StrategyIsValid() doesn't seem that useful? Plenty of > existing code just compares against InvalidStrategy, and there is only > one caller for the new function. I suggest to do without it. > > * src/include/commands/defrem.h Okay, removed. > We are using two terms here, well-known strategy number and canonical > strategy number, to mean the same thing (I think?). Let's try to > stick with one. Or explain the relationship? True. Changed everything to "well-known" which seems like a better match for what's going on. I haven't gone through jian he's Jan 13 patch yet, but since he was also implementing Peter's requests I thought I should share what I have. I did this work a while ago, but I was hoping to finish the TODOs above first, and then we got hit with a winter storm that knocked out power. Sorry to cause duplicate work! Rebased to 2f35c14cfb. Yours, -- Paul ~{:-) pj@illuminatedcomputing.com --------------5mQnkvShJhECliiRK4zn4H0Z Content-Type: text/x-patch; charset=UTF-8; name="v23-0001-Add-stratnum-GiST-support-function.patch" Content-Disposition: attachment; filename="v23-0001-Add-stratnum-GiST-support-function.patch" Content-Transfer-Encoding: base64 RnJvbSA5ODk5Nzk5Mjc2MTU4YzgxMjc1ZDM2OGQzMWQwYjQ4MjNhZWZmYTM3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFdlZCwgMTMgRGVjIDIwMjMgMjE6MTc6NTMgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyMyAxLzhdIEFkZCBzdHJhdG51bSBHaVNUIHN1cHBvcnQg ZnVuY3Rpb24KClRoaXMgaXMgc3VwcG9ydCBmdW5jdGlvbiAxMiBmb3IgdGhlIEdpU1QgQU0g YW5kIHRyYW5zbGF0ZXMgIndlbGwta25vd24iClJUKlN0cmF0ZWd5TnVtYmVyIHZhbHVlcyBp bnRvIHdoYXRldmVyIHN0cmF0ZWd5IG51bWJlciBpcyB1c2VkIGJ5IHRoZQpvcGNsYXNzIChz aW5jZSBubyBwYXJ0aWN1bGFyIG51bWJlcnMgYXJlIGFjdHVhbGx5IHJlcXVpcmVkKS4gV2Ug d2lsbCB1c2UKdGhpcyB0byBzdXBwb3J0IHRlbXBvcmFsIFBSSU1BUlkgS0VZL1VOSVFVRS9G T1JFSUdOIEtFWS9GT1IgUE9SVElPTiBPRgpmdW5jdGlvbmFsaXR5LgoKVGhpcyBjb21taXQg YWRkcyB0d28gaW1wbGVtZW50YXRpb25zLCBvbmUgZm9yIGludGVybmFsIEdpU1Qgb3BjbGFz c2VzCihqdXN0IGFuIGlkZW50aXR5IGZ1bmN0aW9uKSBhbmQgYW5vdGhlciBmb3IgYnRyZWVf Z2lzdCBvcGNsYXNzZXMuIEl0CnVwZGF0ZXMgYnRyZWVfZ2lzdCBmcm9tIDEuNyB0byAxLjgs IGFkZGluZyB0aGUgc3VwcG9ydCBmdW5jdGlvbiBmb3IgYWxsCml0cyBvcGNsYXNzZXMuCi0t LQogY29udHJpYi9idHJlZV9naXN0L01ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAgNiAr LQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuNy0tMS44LnNxbCAgfCA4NyAr KysrKysrKysrKysrKysrKysrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QuYyAg ICAgICAgICAgICAgfCAzMCArKysrKysrCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lz dC5jb250cm9sICAgICAgICB8ICAyICstCiBjb250cmliL2J0cmVlX2dpc3QvZXhwZWN0ZWQv c3RyYXRudW0ub3V0ICAgICB8IDEzICsrKwogY29udHJpYi9idHJlZV9naXN0L21lc29uLmJ1 aWxkICAgICAgICAgICAgICAgfCAgMiArCiBjb250cmliL2J0cmVlX2dpc3Qvc3FsL3N0cmF0 bnVtLnNxbCAgICAgICAgICB8ICAzICsKIGRvYy9zcmMvc2dtbC9naXN0LnNnbWwgICAgICAg ICAgICAgICAgICAgICAgIHwgNjUgKysrKysrKysrKysrKystCiBkb2Mvc3JjL3NnbWwveGlu ZGV4LnNnbWwgICAgICAgICAgICAgICAgICAgICB8ICA4ICstCiBzcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0dXRpbC5jICAgICAgICAgICB8IDE0ICsrKysKIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3R2YWxpZGF0ZS5jICAgICAgIHwgIDggKy0KIHNyYy9pbmNsdWRlL2Fj Y2Vzcy9naXN0LmggICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfYW1wcm9jLmRhdCAgICAgICAgICAgIHwgMTggKysrKwogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgfCAgNiArKwogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9taXNjX2Z1bmN0aW9ucy5vdXQgfCAxMyArKysKIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNxbCAgICAgIHwgIDQgKwogMTYgZmlsZXMgY2hh bmdlZCwgMjc1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuNy0tMS44LnNxbAogY3Jl YXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvYnRyZWVfZ2lzdC9leHBlY3RlZC9zdHJhdG51bS5v dXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL2J0cmVlX2dpc3Qvc3FsL3N0cmF0bnVt LnNxbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmlsZSBiL2NvbnRy aWIvYnRyZWVfZ2lzdC9NYWtlZmlsZQppbmRleCAwNzNkY2M3NDVjNC4uYTQxMDE0NDg5MzUg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmlsZQorKysgYi9jb250cmli L2J0cmVlX2dpc3QvTWFrZWZpbGUKQEAgLTMzLDEyICszMywxNCBAQCBFWFRFTlNJT04gPSBi dHJlZV9naXN0CiBEQVRBID0gYnRyZWVfZ2lzdC0tMS4wLS0xLjEuc3FsIFwKICAgICAgICBi dHJlZV9naXN0LS0xLjEtLTEuMi5zcWwgYnRyZWVfZ2lzdC0tMS4yLnNxbCBidHJlZV9naXN0 LS0xLjItLTEuMy5zcWwgXAogICAgICAgIGJ0cmVlX2dpc3QtLTEuMy0tMS40LnNxbCBidHJl ZV9naXN0LS0xLjQtLTEuNS5zcWwgXAotICAgICAgIGJ0cmVlX2dpc3QtLTEuNS0tMS42LnNx bCBidHJlZV9naXN0LS0xLjYtLTEuNy5zcWwKKyAgICAgICBidHJlZV9naXN0LS0xLjUtLTEu Ni5zcWwgYnRyZWVfZ2lzdC0tMS42LS0xLjcuc3FsIFwKKwkJCSBidHJlZV9naXN0LS0xLjct LTEuOC5zcWwKIFBHRklMRURFU0MgPSAiYnRyZWVfZ2lzdCAtIEItdHJlZSBlcXVpdmFsZW50 IEdpU1Qgb3BlcmF0b3IgY2xhc3NlcyIKIAogUkVHUkVTUyA9IGluaXQgaW50MiBpbnQ0IGlu dDggZmxvYXQ0IGZsb2F0OCBjYXNoIG9pZCB0aW1lc3RhbXAgdGltZXN0YW1wdHogXAogICAg ICAgICB0aW1lIHRpbWV0eiBkYXRlIGludGVydmFsIG1hY2FkZHIgbWFjYWRkcjggaW5ldCBj aWRyIHRleHQgdmFyY2hhciBjaGFyIFwKLSAgICAgICAgYnl0ZWEgYml0IHZhcmJpdCBudW1l cmljIHV1aWQgbm90X2VxdWFsIGVudW0gYm9vbCBwYXJ0aXRpb25zCisgICAgICAgIGJ5dGVh IGJpdCB2YXJiaXQgbnVtZXJpYyB1dWlkIG5vdF9lcXVhbCBlbnVtIGJvb2wgcGFydGl0aW9u cyBcCisgICAgICAgIHN0cmF0bnVtCiAKIFNITElCX0xJTksgKz0gJChmaWx0ZXIgLWxtLCAk KExJQlMpKQogCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0t MS43LS0xLjguc3FsIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuNy0tMS44 LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzA3YmZlNTc0 YjAKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0t MS43LS0xLjguc3FsCkBAIC0wLDAgKzEsODcgQEAKKy8qIGNvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV9naXN0LS0xLjctLTEuOC5zcWwgKi8KKworLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlz IHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xl Y2hvIFVzZSAiQUxURVIgRVhURU5TSU9OIGJ0cmVlX2dpc3QgVVBEQVRFIFRPICcxLjgnIiB0 byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworQ1JFQVRFIEZVTkNUSU9OIGdpc3Rfc3RyYXRu dW1fYnRyZWUoc21hbGxpbnQpCitSRVRVUk5TIHNtYWxsaW50CitBUyAnTU9EVUxFX1BBVEhO QU1FJworTEFOR1VBR0UgQyBJTU1VVEFCTEUgUEFSQUxMRUwgU0FGRSBTVFJJQ1Q7CisKK0FM VEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X29pZF9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5D VElPTiAxMiAob2lkLCBvaWQpIGdpc3Rfc3RyYXRudW1fYnRyZWUgKGludDIpIDsKKworQUxU RVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfaW50Ml9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5D VElPTiAxMiAoaW50MiwgaW50MikgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCitB TFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9pbnQ0X29wcyBVU0lORyBnaXN0IEFERAorCUZV TkNUSU9OIDEyIChpbnQ0LCBpbnQ0KSBnaXN0X3N0cmF0bnVtX2J0cmVlIChpbnQyKSA7CisK K0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X2ludDhfb3BzIFVTSU5HIGdpc3QgQURECisJ RlVOQ1RJT04gMTIgKGludDgsIGludDgpIGdpc3Rfc3RyYXRudW1fYnRyZWUgKGludDIpIDsK KworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfZmxvYXQ0X29wcyBVU0lORyBnaXN0IEFE RAorCUZVTkNUSU9OIDEyIChmbG9hdDQsIGZsb2F0NCkgZ2lzdF9zdHJhdG51bV9idHJlZSAo aW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9mbG9hdDhfb3BzIFVTSU5H IGdpc3QgQURECisJRlVOQ1RJT04gMTIgKGZsb2F0OCwgZmxvYXQ4KSBnaXN0X3N0cmF0bnVt X2J0cmVlIChpbnQyKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X3RpbWVzdGFt cF9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElPTiAxMiAodGltZXN0YW1wLCB0aW1lc3Rh bXApIGdpc3Rfc3RyYXRudW1fYnRyZWUgKGludDIpIDsKKworQUxURVIgT1BFUkFUT1IgRkFN SUxZIGdpc3RfdGltZXN0YW1wdHpfb3BzIFVTSU5HIGdpc3QgQURECisJRlVOQ1RJT04gMTIg KHRpbWVzdGFtcHR6LCB0aW1lc3RhbXB0eikgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50Mikg OworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF90aW1lX29wcyBVU0lORyBnaXN0IEFE RAorCUZVTkNUSU9OIDEyICh0aW1lLCB0aW1lKSBnaXN0X3N0cmF0bnVtX2J0cmVlIChpbnQy KSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X2RhdGVfb3BzIFVTSU5HIGdpc3Qg QURECisJRlVOQ1RJT04gMTIgKGRhdGUsIGRhdGUpIGdpc3Rfc3RyYXRudW1fYnRyZWUgKGlu dDIpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfaW50ZXJ2YWxfb3BzIFVTSU5H IGdpc3QgQURECisJRlVOQ1RJT04gMTIgKGludGVydmFsLCBpbnRlcnZhbCkgZ2lzdF9zdHJh dG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9jYXNo X29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OIDEyIChtb25leSwgbW9uZXkpIGdpc3Rf c3RyYXRudW1fYnRyZWUgKGludDIpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3Rf bWFjYWRkcl9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElPTiAxMiAobWFjYWRkciwgbWFj YWRkcikgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBG QU1JTFkgZ2lzdF90ZXh0X29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OIDEyICh0ZXh0 LCB0ZXh0KSBnaXN0X3N0cmF0bnVtX2J0cmVlIChpbnQyKSA7CisKK0FMVEVSIE9QRVJBVE9S IEZBTUlMWSBnaXN0X2JwY2hhcl9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElPTiAxMiAo YnBjaGFyLCBicGNoYXIpIGdpc3Rfc3RyYXRudW1fYnRyZWUgKGludDIpIDsKKworQUxURVIg T1BFUkFUT1IgRkFNSUxZIGdpc3RfYnl0ZWFfb3BzIFVTSU5HIGdpc3QgQURECisJRlVOQ1RJ T04gMTIgKGJ5dGVhLCBieXRlYSkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCitB TFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9udW1lcmljX29wcyBVU0lORyBnaXN0IEFERAor CUZVTkNUSU9OIDEyIChudW1lcmljLCBudW1lcmljKSBnaXN0X3N0cmF0bnVtX2J0cmVlIChp bnQyKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X2JpdF9vcHMgVVNJTkcgZ2lz dCBBREQKKwlGVU5DVElPTiAxMiAoYml0LCBiaXQpIGdpc3Rfc3RyYXRudW1fYnRyZWUgKGlu dDIpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfdmJpdF9vcHMgVVNJTkcgZ2lz dCBBREQKKwlGVU5DVElPTiAxMiAodmFyYml0LCB2YXJiaXQpIGdpc3Rfc3RyYXRudW1fYnRy ZWUgKGludDIpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfaW5ldF9vcHMgVVNJ TkcgZ2lzdCBBREQKKwlGVU5DVElPTiAxMiAoaW5ldCwgaW5ldCkgZ2lzdF9zdHJhdG51bV9i dHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9jaWRyX29wcyBV U0lORyBnaXN0IEFERAorCUZVTkNUSU9OIDEyIChjaWRyLCBjaWRyKSBnaXN0X3N0cmF0bnVt X2J0cmVlIChpbnQyKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X3RpbWV0el9v cHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElPTiAxMiAodGltZXR6LCB0aW1ldHopIGdpc3Rf c3RyYXRudW1fYnRyZWUgKGludDIpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3Rf dXVpZF9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElPTiAxMiAodXVpZCwgdXVpZCkgZ2lz dF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lz dF9tYWNhZGRyOF9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElPTiAxMiAobWFjYWRkcjgs IG1hY2FkZHI4KSBnaXN0X3N0cmF0bnVtX2J0cmVlIChpbnQyKSA7CisKK0FMVEVSIE9QRVJB VE9SIEZBTUlMWSBnaXN0X2VudW1fb3BzIFVTSU5HIGdpc3QgQURECisJRlVOQ1RJT04gMTIg KGFueWVudW0sIGFueWVudW0pIGdpc3Rfc3RyYXRudW1fYnRyZWUgKGludDIpIDsKKworQUxU RVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfYm9vbF9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5D VElPTiAxMiAoYm9vbCwgYm9vbCkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOwpkaWZm IC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QuYyBiL2NvbnRyaWIvYnRy ZWVfZ2lzdC9idHJlZV9naXN0LmMKaW5kZXggOTI1MjBhZWRhZTEuLjBjMzc5ZWZhY2FmIDEw MDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC5jCisrKyBiL2NvbnRy aWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LmMKQEAgLTMsNiArMyw3IEBACiAgKi8KICNpbmNs dWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiYWNjZXNzL3N0cmF0bnVtLmgiCiAjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKIAogUEdfTU9EVUxFX01BR0lDOwpAQCAtMTAsNiAr MTEsNyBAQCBQR19NT0RVTEVfTUFHSUM7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9kZWNv bXByZXNzKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0cmVla2V5X2luKTsKIFBHX0ZVTkNU SU9OX0lORk9fVjEoZ2J0cmVla2V5X291dCk7CitQR19GVU5DVElPTl9JTkZPX1YxKGdpc3Rf c3RyYXRudW1fYnRyZWUpOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKICAqIEluL091dCBmb3Iga2V5cwpAQCAtNTEsMyArNTMsMzEg QEAgZ2J0X2RlY29tcHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlQR19SRVRVUk5fUE9J TlRFUihQR19HRVRBUkdfUE9JTlRFUigwKSk7CiB9CisKKy8qCisgKiBSZXR1cm5zIHRoZSBi dHJlZSBudW1iZXIgZm9yIGVxdWFscywgb3RoZXJ3aXNlIGludmFsaWQuCisgKgorICogVGhp cyBpcyBmb3IgR2lTVCBvcGNsYXNzZXMgaW4gYnRyZWVfZ2lzdCAoYW5kIG1heWJlIGVsc2V3 aGVyZSkKKyAqIHRoYXQgdXNlIHRoZSBCVCpTdHJhdGVneU51bWJlciBjb25zdGFudHMuCisg Ki8KK0RhdHVtCitnaXN0X3N0cmF0bnVtX2J0cmVlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJ U3RyYXRlZ3lOdW1iZXIgc3RyYXQgPSBQR19HRVRBUkdfVUlOVDE2KDApOworCisJc3dpdGNo IChzdHJhdCkKKwl7CisJCWNhc2UgUlRFcXVhbFN0cmF0ZWd5TnVtYmVyOgorCQkJUEdfUkVU VVJOX1VJTlQxNihCVEVxdWFsU3RyYXRlZ3lOdW1iZXIpOworCQljYXNlIFJUTGVzc1N0cmF0 ZWd5TnVtYmVyOgorCQkJUEdfUkVUVVJOX1VJTlQxNihCVExlc3NTdHJhdGVneU51bWJlcik7 CisJCWNhc2UgUlRMZXNzRXF1YWxTdHJhdGVneU51bWJlcjoKKwkJCVBHX1JFVFVSTl9VSU5U MTYoQlRMZXNzRXF1YWxTdHJhdGVneU51bWJlcik7CisJCWNhc2UgUlRHcmVhdGVyU3RyYXRl Z3lOdW1iZXI6CisJCQlQR19SRVRVUk5fVUlOVDE2KEJUR3JlYXRlclN0cmF0ZWd5TnVtYmVy KTsKKwkJY2FzZSBSVEdyZWF0ZXJFcXVhbFN0cmF0ZWd5TnVtYmVyOgorCQkJUEdfUkVUVVJO X1VJTlQxNihCVEdyZWF0ZXJFcXVhbFN0cmF0ZWd5TnVtYmVyKTsKKwkJZGVmYXVsdDoKKwkJ CVBHX1JFVFVSTl9VSU5UMTYoSW52YWxpZFN0cmF0ZWd5KTsKKwl9Cit9CmRpZmYgLS1naXQg YS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC5jb250cm9sIGIvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2dpc3QuY29udHJvbAppbmRleCBmYTkxNzFhODBhMi4uYWJmNjY1Mzhm MzIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LmNvbnRyb2wK KysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QuY29udHJvbApAQCAtMSw2ICsx LDYgQEAKICMgYnRyZWVfZ2lzdCBleHRlbnNpb24KIGNvbW1lbnQgPSAnc3VwcG9ydCBmb3Ig aW5kZXhpbmcgY29tbW9uIGRhdGF0eXBlcyBpbiBHaVNUJwotZGVmYXVsdF92ZXJzaW9uID0g JzEuNycKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjgnCiBtb2R1bGVfcGF0aG5hbWUgPSAnJGxp YmRpci9idHJlZV9naXN0JwogcmVsb2NhdGFibGUgPSB0cnVlCiB0cnVzdGVkID0gdHJ1ZQpk aWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3N0cmF0bnVtLm91dCBi L2NvbnRyaWIvYnRyZWVfZ2lzdC9leHBlY3RlZC9zdHJhdG51bS5vdXQKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjlkODBjNjU5MGQ5Ci0tLSAvZGV2L251bGwK KysrIGIvY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3N0cmF0bnVtLm91dApAQCAtMCww ICsxLDEzIEBACistLSB0ZXN0IHN0cmF0bnVtIHN1cHBvcnQgZnVuYworU0VMRUNUIGdpc3Rf c3RyYXRudW1fYnRyZWUoMzo6c21hbGxpbnQpOworIGdpc3Rfc3RyYXRudW1fYnRyZWUgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAwCisoMSByb3cpCisK K1NFTEVDVCBnaXN0X3N0cmF0bnVtX2J0cmVlKDE4OjpzbWFsbGludCk7CisgZ2lzdF9zdHJh dG51bV9idHJlZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAg IDMKKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L21lc29uLmJ1 aWxkIGIvY29udHJpYi9idHJlZV9naXN0L21lc29uLmJ1aWxkCmluZGV4IGM4OGE2YWM4NGFl Li5hNDRjZTkwNWU1OSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L21lc29uLmJ1 aWxkCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9tZXNvbi5idWlsZApAQCAtNTAsNiArNTAs NyBAQCBpbnN0YWxsX2RhdGEoCiAgICdidHJlZV9naXN0LS0xLjQtLTEuNS5zcWwnLAogICAn YnRyZWVfZ2lzdC0tMS41LS0xLjYuc3FsJywKICAgJ2J0cmVlX2dpc3QtLTEuNi0tMS43LnNx bCcsCisgICdidHJlZV9naXN0LS0xLjctLTEuOC5zcWwnLAogICBrd2FyZ3M6IGNvbnRyaWJf ZGF0YV9hcmdzLAogKQogCkBAIC04OSw2ICs5MCw3IEBAIHRlc3RzICs9IHsKICAgICAgICdl bnVtJywKICAgICAgICdib29sJywKICAgICAgICdwYXJ0aXRpb25zJywKKyAgICAgICdzdHJh dG51bScsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lz dC9zcWwvc3RyYXRudW0uc3FsIGIvY29udHJpYi9idHJlZV9naXN0L3NxbC9zdHJhdG51bS5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY1OGNkYmU5M2Rh Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9idHJlZV9naXN0L3NxbC9zdHJhdG51bS5z cWwKQEAgLTAsMCArMSwzIEBACistLSB0ZXN0IHN0cmF0bnVtIHN1cHBvcnQgZnVuYworU0VM RUNUIGdpc3Rfc3RyYXRudW1fYnRyZWUoMzo6c21hbGxpbnQpOworU0VMRUNUIGdpc3Rfc3Ry YXRudW1fYnRyZWUoMTg6OnNtYWxsaW50KTsKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9n aXN0LnNnbWwgYi9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21sCmluZGV4IDlhYzZiMDNlNmU0Li45 MTNjNWNkM2JiYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvZ2lzdC5zZ21sCkBAIC0yNzIsNyArMjcyLDcgQEAgQ1JFQVRFIElOREVY IE9OIG15X3RhYmxlIFVTSU5HIEdJU1QgKG15X2luZXRfY29sdW1uIGluZXRfb3BzKTsKIAog IDxwYXJhPgogICAgVGhlcmUgYXJlIGZpdmUgbWV0aG9kcyB0aGF0IGFuIGluZGV4IG9wZXJh dG9yIGNsYXNzIGZvcgotICAgPGFjcm9ueW0+R2lTVDwvYWNyb255bT4gbXVzdCBwcm92aWRl LCBhbmQgc2l4IHRoYXQgYXJlIG9wdGlvbmFsLgorICAgPGFjcm9ueW0+R2lTVDwvYWNyb255 bT4gbXVzdCBwcm92aWRlLCBhbmQgc2V2ZW4gdGhhdCBhcmUgb3B0aW9uYWwuCiAgICBDb3Jy ZWN0bmVzcyBvZiB0aGUgaW5kZXggaXMgZW5zdXJlZAogICAgYnkgcHJvcGVyIGltcGxlbWVu dGF0aW9uIG9mIHRoZSA8ZnVuY3Rpb24+c2FtZTwvZnVuY3Rpb24+LCA8ZnVuY3Rpb24+Y29u c2lzdGVudDwvZnVuY3Rpb24+CiAgICBhbmQgPGZ1bmN0aW9uPnVuaW9uPC9mdW5jdGlvbj4g bWV0aG9kcywgd2hpbGUgZWZmaWNpZW5jeSAoc2l6ZSBhbmQgc3BlZWQpIG9mIHRoZQpAQCAt Mjk1LDYgKzI5NSwxMCBAQCBDUkVBVEUgSU5ERVggT04gbXlfdGFibGUgVVNJTkcgR0lTVCAo bXlfaW5ldF9jb2x1bW4gaW5ldF9vcHMpOwogICAgdXNlci1zcGVjaWZpZWQgcGFyYW1ldGVy cy4KICAgIFRoZSBvcHRpb25hbCBlbGV2ZW50aCBtZXRob2QgPGZ1bmN0aW9uPnNvcnRzdXBw b3J0PC9mdW5jdGlvbj4gaXMgdXNlZCB0bwogICAgc3BlZWQgdXAgYnVpbGRpbmcgYSA8YWNy b255bT5HaVNUPC9hY3JvbnltPiBpbmRleC4KKyAgIFRoZSBvcHRpb25hbCB0d2VsZnRoIG1l dGhvZCA8ZnVuY3Rpb24+c3RyYXRudW08L2Z1bmN0aW9uPiBpcyB1c2VkIHRvIHRyYW5zbGF0 ZQorICAgd2VsbC1rbm93biA8bGl0ZXJhbD5SVCpTdHJhdGVneU51bWJlcnM8L2xpdGVyYWw+ IChmcm9tCisgICA8ZmlsZW5hbWU+c3JjL2luY2x1ZGUvYWNjZXNzL3N0cmF0bnVtLmg8L2Zp bGVuYW1lPikgaW50byBzdHJhdGVneSBudW1iZXJzCisgICB1c2VkIGJ5IHRoZSBvcGNsYXNz LgogIDwvcGFyYT4KIAogIDx2YXJpYWJsZWxpc3Q+CkBAIC0xMTY5LDYgKzExNzMsNjUgQEAg bXlfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKICAgICAgIDwvcGFyYT4KICAgICAg PC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8dmFybGlzdGVudHJ5Pgor ICAgICA8dGVybT48ZnVuY3Rpb24+c3RyYXRudW08L2Z1bmN0aW9uPjwvdGVybT4KKyAgICAg PGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgR2l2ZW4gYW4gPGxpdGVyYWw+UlQq U3RyYXRlZ3lOdW1iZXI8L2xpdGVyYWw+IHZhbHVlIGZyb20KKyAgICAgICA8ZmlsZW5hbWU+ c3JjL2luY2x1ZGUvYWNjZXNzL3N0cmF0bnVtLmg8L2ZpbGVuYW1lPiwKKyAgICAgICByZXR1 cm5zIGEgc3RyYXRlZ3kgbnVtYmVyIHVzZWQgYnkgdGhpcyBvcGNsYXNzIGZvciBtYXRjaGlu ZyBmdW5jdGlvbmFsaXR5LgorICAgICAgIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDxs aXRlcmFsPkludmFsaWRTdHJhdGVneTwvbGl0ZXJhbD4KKyAgICAgICBpZiB0aGUgb3BjbGFz cyBoYXMgbm8gbWF0Y2hpbmcgc3RyYXRlZ3ksCisgICAgICAgb3IgYXQgbGVhc3QgYSBzdHJh dGVneSBudW1iZXIgdGhhdCBpc24ndCB1c2VkIGJ5IHRoaXMgb3BjbGFzcy4KKyAgICAgIDwv cGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgVGhlIDxhY3JvbnltPlNRTDwvYWNyb255 bT4gZGVjbGFyYXRpb24gb2YgdGhlIGZ1bmN0aW9uIG11c3QgbG9vayBsaWtlCisgICAgICAg dGhpczoKKworPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04g bXlfc3RyYXRudW0oaW50ZWdlcikKK1JFVFVSTlMgaW50ZWdlcgorQVMgJ01PRFVMRV9QQVRI TkFNRScKK0xBTkdVQUdFIEMgU1RSSUNUOworPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwv cGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgbWF0Y2hpbmcgY29kZSBpbiB0 aGUgQyBtb2R1bGUgY291bGQgdGhlbiBmb2xsb3cgdGhpcyBza2VsZXRvbjoKKworPHByb2dy YW1saXN0aW5nPgorUEdfRlVOQ1RJT05fSU5GT19WMShteV9zdHJhdG51bSk7CisKK0RhdHVt CitteV9zdHJhdG51bShQR19GVU5DVElPTl9BUkdTKQoreworICAgIFN0cmF0ZWd5TnVtYmVy IHN0cmF0ZWd5ID0gKFN0cmF0ZWd5TnVtYmVyKSBQR19HRVRBUkdfVUlOVDE2KDEpOworICAg IFN0cmF0ZWd5TnVtYmVyIHJldCA9IEludmFsaWRTdHJhdGVneTsKKworICAgIHN3aXRjaCAo c3RyYXRlZ3kpCisgICAgeworICAgICAgICBjYXNlIFJURXF1YWxTdHJhdGVneU51bWJlcjoK KyAgICAgICAgICAgIHJldCA9IEJURXF1YWxTdHJhdGVneU51bWJlcjsKKyAgICB9CisKKyAg ICBQR19SRVRVUk5fVUlOVDE2KHJldCk7Cit9Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICAg PC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICBPbmUgdHJhbnNsYXRpb24gZnVuY3Rp b24gaXMgcHJvdmlkZWQgYnkgUG9zdGdyZXM6CisgICAgICAgPGxpdGVyYWw+Z2lzdF9zdHJh dG51bV9pZGVudGl0eTwvbGl0ZXJhbD4gaXMgZm9yIG9wY2xhc3NlcyB0aGF0CisgICAgICAg YWxyZWFkeSB1c2UgdGhlIDxsaXRlcmFsPlJUKlN0cmF0ZWd5TnVtYmVyPC9saXRlcmFsPiBj b25zdGFudHMuCisgICAgICAgSXQgcmV0dXJucyB3aGF0ZXZlciBpcyBwYXNzZWQgdG8gaXQu CisgICAgICAgVGhlIDxsaXRlcmFsPmJ0cmVlX2dpc3Q8L2xpdGVyYWw+IGV4dGVuc2lvbiBk ZWZpbmVzIGEgc2Vjb25kCisgICAgICAgdHJhbnNsYXRpb24gZnVuY3Rpb24sIDxsaXRlcmFs Pmdpc3Rfc3RyYXRudW1fYnRyZWU8L2xpdGVyYWw+LAorICAgICAgIGZvciBvcGNsYXNzZXMg dGhhdCB1c2UgdGhlIDxsaXRlcmFsPkJUKlN0cmF0ZWd5TnVtYmVyPC9saXRlcmFsPgorICAg ICAgIGNvbnN0YW50cy4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8 L3Zhcmxpc3RlbnRyeT4KICAgPC92YXJpYWJsZWxpc3Q+CiAKICAgPHBhcmE+CmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwveGluZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwveGluZGV4LnNn bWwKaW5kZXggMjJkOGFkMWFhYzQuLjhjNGVkZTMxMDU3IDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwveGluZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3hpbmRleC5zZ21sCkBAIC01 MDgsNyArNTA4LDcgQEAKICAgIDwvdGFibGU+CiAKICAgPHBhcmE+Ci0gICBHaVNUIGluZGV4 ZXMgaGF2ZSBlbGV2ZW4gc3VwcG9ydCBmdW5jdGlvbnMsIHNpeCBvZiB3aGljaCBhcmUgb3B0 aW9uYWwsCisgICBHaVNUIGluZGV4ZXMgaGF2ZSB0d2VsdmUgc3VwcG9ydCBmdW5jdGlvbnMs IHNldmVuIG9mIHdoaWNoIGFyZSBvcHRpb25hbCwKICAgIGFzIHNob3duIGluIDx4cmVmIGxp bmtlbmQ9InhpbmRleC1naXN0LXN1cHBvcnQtdGFibGUiLz4uCiAgICAoRm9yIG1vcmUgaW5m b3JtYXRpb24gc2VlIDx4cmVmIGxpbmtlbmQ9Imdpc3QiLz4uKQogICA8L3BhcmE+CkBAIC01 OTAsNiArNTkwLDEyIEBACiAgICAgICAgIChvcHRpb25hbCk8L2VudHJ5PgogICAgICAgIDxl bnRyeT4xMTwvZW50cnk+CiAgICAgICA8L3Jvdz4KKyAgICAgIDxyb3c+CisgICAgICAgPGVu dHJ5PjxmdW5jdGlvbj5zdHJhdG51bTwvZnVuY3Rpb24+PC9lbnRyeT4KKyAgICAgICA8ZW50 cnk+dHJhbnNsYXRlIHdlbGwta25vd24gc3RyYXRlZ3kgbnVtYmVycyB0byBvbmVzCisgICAg ICAgIHVzZWQgYnkgdGhlIG9wY2xhc3MgKG9wdGlvbmFsKTwvZW50cnk+CisgICAgICAgPGVu dHJ5PjEyPC9lbnRyeT4KKyAgICAgIDwvcm93PgogICAgICA8L3Rib2R5PgogICAgIDwvdGdy b3VwPgogICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0 L2dpc3R1dGlsLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jCmluZGV4 IGRkZGMwODg5M2ExLi5kNGQwOGJkMTE4ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHV0aWwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0 dXRpbC5jCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9pbmRleGZzbS5o IgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInV0aWxzL2Zsb2F0Lmgi CisjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9z eXNjYWNoZS5oIgpAQCAtMTA1NiwzICsxMDU3LDE2IEBAIGdpc3RHZXRGYWtlTFNOKFJlbGF0 aW9uIHJlbCkKIAkJcmV0dXJuIEdldEZha2VMU05Gb3JVbmxvZ2dlZFJlbCgpOwogCX0KIH0K KworLyoKKyAqIFJldHVybnMgdGhlIHNhbWUgbnVtYmVyIHRoYXQgd2FzIHJlY2VpdmVkLgor ICoKKyAqIFRoaXMgaXMgZm9yIEdpU1Qgb3BjbGFzc2VzIHRoYXQgdXNlIHRoZSBSVCpTdHJh dGVneU51bWJlciBjb25zdGFudHMuCisgKi8KK0RhdHVtCitnaXN0X3N0cmF0bnVtX2lkZW50 aXR5KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU3RyYXRlZ3lOdW1iZXIgc3RyYXQgPSBQR19H RVRBUkdfVUlOVDE2KDApOworCisJUEdfUkVUVVJOX1VJTlQxNihzdHJhdCk7Cit9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2YWxpZGF0ZS5jCmluZGV4IDdlMmE3MTUyMDBhLi42 OThlMDFlZDJmNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZh bGlkYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhbGlkYXRlLmMK QEAgLTE0Nyw2ICsxNDcsMTAgQEAgZ2lzdHZhbGlkYXRlKE9pZCBvcGNsYXNzb2lkKQogCQkJ CW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jLCBWT0lET0lE LCB0cnVlLAogCQkJCQkJCQkJCQkxLCAxLCBJTlRFUk5BTE9JRCk7CiAJCQkJYnJlYWs7CisJ CQljYXNlIEdJU1RfU1RSQVROVU1fUFJPQzoKKwkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWdu YXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSU5UMk9JRCwgdHJ1ZSwKKwkJCQkJCQkJCQkJMSwg MSwgSU5UMk9JRCk7CisJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCWVyZXBvcnQoSU5G TywKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiks CkBAIC0yNjcsNyArMjcxLDggQEAgZ2lzdHZhbGlkYXRlKE9pZCBvcGNsYXNzb2lkKQogCQkJ Y29udGludWU7CQkJLyogZ290IGl0ICovCiAJCWlmIChpID09IEdJU1RfRElTVEFOQ0VfUFJP QyB8fCBpID09IEdJU1RfRkVUQ0hfUFJPQyB8fAogCQkJaSA9PSBHSVNUX0NPTVBSRVNTX1BS T0MgfHwgaSA9PSBHSVNUX0RFQ09NUFJFU1NfUFJPQyB8fAotCQkJaSA9PSBHSVNUX09QVElP TlNfUFJPQyB8fCBpID09IEdJU1RfU09SVFNVUFBPUlRfUFJPQykKKwkJCWkgPT0gR0lTVF9P UFRJT05TX1BST0MgfHwgaSA9PSBHSVNUX1NPUlRTVVBQT1JUX1BST0MgfHwKKwkJCWkgPT0g R0lTVF9TVFJBVE5VTV9QUk9DKQogCQkJY29udGludWU7CQkJLyogb3B0aW9uYWwgbWV0aG9k cyAqLwogCQllcmVwb3J0KElORk8sCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKQEAgLTMzOSw2ICszNDQsNyBAQCBnaXN0YWRqdXN0bWVtYmVy cyhPaWQgb3BmYW1pbHlvaWQsCiAJCQljYXNlIEdJU1RfRkVUQ0hfUFJPQzoKIAkJCWNhc2Ug R0lTVF9PUFRJT05TX1BST0M6CiAJCQljYXNlIEdJU1RfU09SVFNVUFBPUlRfUFJPQzoKKwkJ CWNhc2UgR0lTVF9TVFJBVE5VTV9QUk9DOgogCQkJCS8qIE9wdGlvbmFsLCBzbyBmb3JjZSBp dCB0byBiZSBhIHNvZnQgZmFtaWx5IGRlcGVuZGVuY3kgKi8KIAkJCQlvcC0+cmVmX2lzX2hh cmQgPSBmYWxzZTsKIAkJCQlvcC0+cmVmX2lzX2ZhbWlseSA9IHRydWU7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3Qu aAppbmRleCBjNmRjZDZhOTBkZC4uZTdjZWQxOGE1YmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9naXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3QuaApAQCAt MzgsNyArMzgsOCBAQAogI2RlZmluZSBHSVNUX0ZFVENIX1BST0MJCQkJCTkKICNkZWZpbmUg R0lTVF9PUFRJT05TX1BST0MJCQkJMTAKICNkZWZpbmUgR0lTVF9TT1JUU1VQUE9SVF9QUk9D CQkJMTEKLSNkZWZpbmUgR0lTVE5Qcm9jcwkJCQkJMTEKKyNkZWZpbmUgR0lTVF9TVFJBVE5V TV9QUk9DCQkJCTEyCisjZGVmaW5lIEdJU1ROUHJvY3MJCQkJCTEyCiAKIC8qCiAgKiBQYWdl IG9wYXF1ZSBkYXRhIGluIGEgR2lTVCBpbmRleCBwYWdlLgpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19h bXByb2MuZGF0CmluZGV4IGY2MzljM2E2YTUxLi4zNTI1NThjMWYwNiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfYW1wcm9jLmRhdApAQCAtNTA3LDYgKzUwNyw5IEBACiAgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnYm94JywgYW1wcm9jbnVtID0+ICc3JywgYW1wcm9jID0+ICdnaXN0X2JveF9z YW1lJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvYm94X29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdib3gnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2JveCcsIGFtcHJvY251bSA9 PiAnOCcsIGFtcHJvYyA9PiAnZ2lzdF9ib3hfZGlzdGFuY2UnIH0sCit7IGFtcHJvY2ZhbWls eSA9PiAnZ2lzdC9ib3hfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2JveCcsCisgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAnYm94JywgYW1wcm9jbnVtID0+ICcxMicsCisgIGFtcHJvYyA9PiAn Z2lzdF9zdHJhdG51bV9pZGVudGl0eScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L3Bv bHlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3BvbHlnb24nLAogICBhbXByb2NyaWdodHR5 cGUgPT4gJ3BvbHlnb24nLCBhbXByb2NudW0gPT4gJzEnLAogICBhbXByb2MgPT4gJ2dpc3Rf cG9seV9jb25zaXN0ZW50JyB9LApAQCAtNTI2LDYgKzUyOSw5IEBACiB7IGFtcHJvY2ZhbWls eSA9PiAnZ2lzdC9wb2x5X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdwb2x5Z29uJywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdwb2x5Z29uJywgYW1wcm9jbnVtID0+ICc4JywKICAgYW1w cm9jID0+ICdnaXN0X3BvbHlfZGlzdGFuY2UnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnZ2lz dC9wb2x5X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdwb2x5Z29uJywKKyAgYW1wcm9jcmln aHR0eXBlID0+ICdwb2x5Z29uJywgYW1wcm9jbnVtID0+ICcxMicsCisgIGFtcHJvYyA9PiAn Z2lzdF9zdHJhdG51bV9pZGVudGl0eScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L2Np cmNsZV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnY2lyY2xlJywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICdjaXJjbGUnLCBhbXByb2NudW0gPT4gJzEnLAogICBhbXByb2MgPT4gJ2dpc3Rf Y2lyY2xlX2NvbnNpc3RlbnQnIH0sCkBAIC01NDQsNiArNTUwLDkgQEAKIHsgYW1wcm9jZmFt aWx5ID0+ICdnaXN0L2NpcmNsZV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnY2lyY2xlJywK ICAgYW1wcm9jcmlnaHR0eXBlID0+ICdjaXJjbGUnLCBhbXByb2NudW0gPT4gJzgnLAogICBh bXByb2MgPT4gJ2dpc3RfY2lyY2xlX2Rpc3RhbmNlJyB9LAoreyBhbXByb2NmYW1pbHkgPT4g J2dpc3QvY2lyY2xlX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdjaXJjbGUnLAorICBhbXBy b2NyaWdodHR5cGUgPT4gJ2NpcmNsZScsIGFtcHJvY251bSA9PiAnMTInLAorICBhbXByb2Mg PT4gJ2dpc3Rfc3RyYXRudW1faWRlbnRpdHknIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lz dC90c3ZlY3Rvcl9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndHN2ZWN0b3InLAogICBhbXBy b2NyaWdodHR5cGUgPT4gJ3RzdmVjdG9yJywgYW1wcm9jbnVtID0+ICcxJywKICAgYW1wcm9j ID0+ICdndHN2ZWN0b3JfY29uc2lzdGVudChpbnRlcm5hbCx0c3ZlY3RvcixpbnQyLG9pZCxp bnRlcm5hbCknIH0sCkBAIC01OTgsNiArNjA3LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdn aXN0L3JhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnlyYW5nZScsCiAgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAnYW55cmFuZ2UnLCBhbXByb2NudW0gPT4gJzcnLAogICBhbXByb2Mg PT4gJ3JhbmdlX2dpc3Rfc2FtZScgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L3Jhbmdl X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnlyYW5nZScsCisgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnYW55cmFuZ2UnLCBhbXByb2NudW0gPT4gJzEyJywKKyAgYW1wcm9jID0+ICdnaXN0 X3N0cmF0bnVtX2lkZW50aXR5JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvbmV0d29y a19vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW5ldCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAnaW5ldCcsIGFtcHJvY251bSA9PiAnMScsCiAgIGFtcHJvYyA9PiAnaW5ldF9naXN0X2Nv bnNpc3RlbnQnIH0sCkBAIC02MTQsNiArNjI2LDkgQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdpbmV0JywgYW1wcm9jbnVtID0+ICc3JywgYW1wcm9jID0+ICdpbmV0X2dpc3Rfc2FtZScg fSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L25ldHdvcmtfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ2luZXQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0g PT4gJzknLCBhbXByb2MgPT4gJ2luZXRfZ2lzdF9mZXRjaCcgfSwKK3sgYW1wcm9jZmFtaWx5 ID0+ICdnaXN0L25ldHdvcmtfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLAorICBh bXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzEyJywKKyAgYW1wcm9j ID0+ICdnaXN0X3N0cmF0bnVtX2lkZW50aXR5JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2dp c3QvbXVsdGlyYW5nZV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYW55bXVsdGlyYW5nZScs CiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYW55bXVsdGlyYW5nZScsIGFtcHJvY251bSA9PiAn MScsCiAgIGFtcHJvYyA9PiAnbXVsdGlyYW5nZV9naXN0X2NvbnNpc3RlbnQnIH0sCkBAIC02 MzIsNiArNjQ3LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L211bHRpcmFuZ2Vfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLAogICBhbXByb2NyaWdodHR5 cGUgPT4gJ2FueW11bHRpcmFuZ2UnLCBhbXByb2NudW0gPT4gJzcnLAogICBhbXByb2MgPT4g J3JhbmdlX2dpc3Rfc2FtZScgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L211bHRpcmFu Z2Vfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLAorICBhbXByb2Ny aWdodHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLCBhbXByb2NudW0gPT4gJzEyJywKKyAgYW1w cm9jID0+ICdnaXN0X3N0cmF0bnVtX2lkZW50aXR5JyB9LAogCiAjIGdpbgogeyBhbXByb2Nm YW1pbHkgPT4gJ2dpbi9hcnJheV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYW55YXJyYXkn LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggNTg4MTFhNjUzMGIuLmEwMjc3ZTU3 YzdkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTEyMTUyLDQgKzEyMTUyLDEw IEBACiAgIHByb2FyZ25hbWVzID0+ICd7c3VtbWFyaXplZF90bGksc3VtbWFyaXplZF9sc24s cGVuZGluZ19sc24sc3VtbWFyaXplcl9waWR9JywKICAgcHJvc3JjID0+ICdwZ19nZXRfd2Fs X3N1bW1hcml6ZXJfc3RhdGUnIH0sCiAKKyMgR2lTVCBzdHJhdG51bSBpbXBsZW1lbnRhdGlv bnMKK3sgb2lkID0+ICc4MDQ3JywgZGVzY3IgPT4gJ0dpU1Qgc3VwcG9ydCcsCisgIHByb25h bWUgPT4gJ2dpc3Rfc3RyYXRudW1faWRlbnRpdHknLCBwcm9yZXR0eXBlID0+ICdpbnQyJywK KyAgcHJvYXJndHlwZXMgPT4gJ2ludDInLAorICBwcm9zcmMgPT4gJ2dpc3Rfc3RyYXRudW1f aWRlbnRpdHknIH0sCisKIF0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvbWlzY19mdW5jdGlvbnMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNj X2Z1bmN0aW9ucy5vdXQKaW5kZXggOTMwMjEzNDA3NzMuLjViMTAzYjBjMWIyIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dApAQCAtNjcw LDMgKzY3MCwxNiBAQCBGUk9NIHBnX3dhbGZpbGVfbmFtZV9vZmZzZXQoJzAvMCc6OnBnX2xz biArIDpzZWdtZW50X3NpemUgLSAxKSwKICAgICAgICAgICAgICAgMCB8IHQKICgxIHJvdykK IAorLS0gdGVzdCBzdHJhdG51bSBzdXBwb3J0IGZ1bmNzCitTRUxFQ1QgZ2lzdF9zdHJhdG51 bV9pZGVudGl0eSgzOjpzbWFsbGludCk7CisgZ2lzdF9zdHJhdG51bV9pZGVudGl0eSAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgIDMKKygxIHJv dykKKworU0VMRUNUIGdpc3Rfc3RyYXRudW1faWRlbnRpdHkoMTg6OnNtYWxsaW50KTsKKyBn aXN0X3N0cmF0bnVtX2lkZW50aXR5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAxOAorKDEgcm93KQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9t aXNjX2Z1bmN0aW9ucy5zcWwKaW5kZXggZDNkYzU5MTE3M2QuLjllNDBlNjA2ODU5IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5jdGlvbnMuc3FsCkBAIC0yNTAsMyArMjUw LDcgQEAgRlJPTSBwZ193YWxmaWxlX25hbWVfb2Zmc2V0KCcwLzAnOjpwZ19sc24gKyA6c2Vn bWVudF9zaXplICsgMSksCiBTRUxFQ1Qgc2VnbWVudF9udW1iZXIsIGZpbGVfb2Zmc2V0ID0g OnNlZ21lbnRfc2l6ZSAtIDEKIEZST00gcGdfd2FsZmlsZV9uYW1lX29mZnNldCgnMC8wJzo6 cGdfbHNuICsgOnNlZ21lbnRfc2l6ZSAtIDEpLAogICAgICBwZ19zcGxpdF93YWxmaWxlX25h bWUoZmlsZV9uYW1lKTsKKworLS0gdGVzdCBzdHJhdG51bSBzdXBwb3J0IGZ1bmNzCitTRUxF Q1QgZ2lzdF9zdHJhdG51bV9pZGVudGl0eSgzOjpzbWFsbGludCk7CitTRUxFQ1QgZ2lzdF9z dHJhdG51bV9pZGVudGl0eSgxODo6c21hbGxpbnQpOwotLSAKMi40Mi4wCgo= --------------5mQnkvShJhECliiRK4zn4H0Z Content-Type: text/x-patch; charset=UTF-8; name="v23-0002-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch" Content-Disposition: attachment; filename*0="v23-0002-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSAxZGI4Y2I5ZGE1ODU5YjliMzYyZjNlNGExMGJjMjY2YzEyYzQzNDk0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IE1vbiwgMjggSnVuIDIwMjEgMTc6MzM6MjcgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyMyAyLzhdIEFkZCB0ZW1wb3JhbCBQUklNQVJZIEtFWSBh bmQgVU5JUVVFIGNvbnN0cmFpbnRzCgotIEFkZGVkIFdJVEhPVVQgT1ZFUkxBUFMgdG8gdGhl IGJpc29uIGdyYW1tYXIuIFdlIHBlcm1pdCBvbmx5IHJhbmdlCiAgY29sdW1ucywgbm90IHll dCBQRVJJT0RzICh3aGljaCB3ZSdsbCBhZGQgc29vbikuCi0gVGVtcG9yYWwgUFJJTUFSWSBL RVlzIGFuZCBVTklRVUUgY29uc3RyYWludHMgYXJlIGJhY2tlZCBieSBHaVNUCiAgaW5kZXhl cyBpbnN0ZWFkIG9mIEItdHJlZSBpbmRleGVzLCBzaW5jZSB0aGV5IGFyZSBlc3NlbnRpYWxs eQogIGV4Y2x1c2lvbiBjb25zdHJhaW50cyB3aXRoID0gZm9yIHRoZSBzY2FsYXIgcGFydHMg b2YgdGhlIGtleSBhbmQgJiYKICBmb3IgdGhlIHRlbXBvcmFsIHBhcnQuCi0gQWRkZWQgcGdf Y29uc3RyYWludC5jb250ZW1wb3JhbCB0byBzYXkgd2hldGhlciBhIGNvbnN0cmFpbnQgaXMg YQogIHRlbXBvcmFsIGNvbnN0cmFpbnQuCi0gQWRkZWQgZG9jcyBhbmQgdGVzdHMuCi0gQWRk ZWQgcGdfZHVtcCBzdXBwb3J0LgotLS0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL2J0cmVlX2dpc3QvZXhwZWN0ZWQvd2l0 aG91dF9vdmVybGFwcy5vdXQgIHwgIDQ0ICsrCiBjb250cmliL2J0cmVlX2dpc3QvbWVzb24u YnVpbGQgICAgICAgICAgICAgICAgfCAgIDEgKwogY29udHJpYi9idHJlZV9naXN0L3NxbC93 aXRob3V0X292ZXJsYXBzLnNxbCAgIHwgIDI1ICsrCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Mu c2dtbCAgICAgICAgICAgICAgICAgICAgfCAgMTAgKwogZG9jL3NyYy9zZ21sL2dpc3Quc2dt bCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE4ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAgfCAgNDMgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R1dGlsLmMgICAgICAgICAgICB8ICAyOSArKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9oZWFwLmMgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9j YXRhbG9nL3BnX2NvbnN0cmFpbnQuYyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgMTU3ICsrKysrKy0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICAgNiArLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jICAgICAgICAgICAgICAgICAgfCAgIDIgKwog c3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgICAyICsK IHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAyOSAr LQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgIDI4 ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICAgfCAg IDIgKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwg IDE4ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAg fCAgMTYgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICAg ICAgfCAgNDAgKysKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAg ICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3QuaCAgICAgICAgICAgICAg ICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCAg ICAgICAgICAgfCAgMTAgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oICAgICAg ICAgICAgICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAg ICAgICAgICAgICAgIHwgICAyICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3Zl cmxhcHMub3V0ICAgICB8IDM5NSArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVn cmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgICAgIHwgMjkwICsrKysrKysrKysrKysK IDMzIGZpbGVzIGNoYW5nZWQsIDExNTUgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhv dXRfb3ZlcmxhcHMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9idHJlZV9naXN0 L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAoKZGlmZiAt LWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmlsZSBiL2NvbnRyaWIvYnRyZWVfZ2lz dC9NYWtlZmlsZQppbmRleCBhNDEwMTQ0ODkzNS4uOWE3NDU3NTc4NTUgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmlsZQorKysgYi9jb250cmliL2J0cmVlX2dpc3Qv TWFrZWZpbGUKQEAgLTQwLDcgKzQwLDcgQEAgUEdGSUxFREVTQyA9ICJidHJlZV9naXN0IC0g Qi10cmVlIGVxdWl2YWxlbnQgR2lTVCBvcGVyYXRvciBjbGFzc2VzIgogUkVHUkVTUyA9IGlu aXQgaW50MiBpbnQ0IGludDggZmxvYXQ0IGZsb2F0OCBjYXNoIG9pZCB0aW1lc3RhbXAgdGlt ZXN0YW1wdHogXAogICAgICAgICB0aW1lIHRpbWV0eiBkYXRlIGludGVydmFsIG1hY2FkZHIg bWFjYWRkcjggaW5ldCBjaWRyIHRleHQgdmFyY2hhciBjaGFyIFwKICAgICAgICAgYnl0ZWEg Yml0IHZhcmJpdCBudW1lcmljIHV1aWQgbm90X2VxdWFsIGVudW0gYm9vbCBwYXJ0aXRpb25z IFwKLSAgICAgICAgc3RyYXRudW0KKyAgICAgICAgc3RyYXRudW0gd2l0aG91dF9vdmVybGFw cwogCiBTSExJQl9MSU5LICs9ICQoZmlsdGVyIC1sbSwgJChMSUJTKSkKIApkaWZmIC0tZ2l0 IGEvY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0IGIv Y29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iZTUyYzUyMmU4OQotLS0gL2Rl di9udWxsCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9leHBlY3RlZC93aXRob3V0X292ZXJs YXBzLm91dApAQCAtMCwwICsxLDQ0IEBACistLSBDb3JlIG11c3QgdGVzdCBXSVRIT1VUIE9W RVJMQVBTCistLSB3aXRoIGFuIGludDRyYW5nZSArIGRhdGVyYW5nZSwKKy0tIHNvIGhlcmUg d2UgZG8gc29tZSBzaW1wbGUgdGVzdHMKKy0tIHRvIG1ha2Ugc3VyZSBpbnQgKyBkYXRlcmFu Z2Ugd29ya3MgdG9vLAorLS0gc2luY2UgdGhhdCBpcyB0aGUgZXhwZWN0ZWQgdXNlLWNhc2Uu CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKyAgaWQgaW50ZWdlciwKKyAgdmFsaWRf YXQgZGF0ZXJhbmdlLAorICBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5n CisgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfcm5nIgorICBDb2x1bW4g IHwgICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlk ICAgICAgIHwgaW50ZWdlciAgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9h dCB8IGRhdGVyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitJbmRleGVzOgorICAg ICJ0ZW1wb3JhbF9ybmdfcGsiIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19j b25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nX3BrJzsKKyAgICAgICAg ICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUFJJTUFSWSBLRVkgKGlkLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2luZGV4 ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFt ZSA9ICd0ZW1wb3JhbF9ybmdfcGsnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwZ19nZXRfaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBVTklRVUUgSU5ERVggdGVtcG9yYWxf cm5nX3BrIE9OIHRlbXBvcmFsX3JuZyBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpCisoMSBy b3cpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMKKyAgKDEsICdbMjAwMC0w MS0wMSwyMDAxLTAxLTAxKScpOworLS0gc2FtZSBrZXksIGRvZXNuJ3Qgb3ZlcmxhcDoKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMKKyAgKDEsICdbMjAwMS0wMS0wMSwyMDAy LTAxLTAxKScpOworLS0gb3ZlcmxhcHMgYnV0IGRpZmZlcmVudCBrZXk6CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTCisgICgyLCAnWzIwMDAtMDEtMDEsMjAwMS0wMS0wMSkn KTsKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUwor ICAoMSwgJ1syMDAwLTA2LTAxLDIwMDEtMDEtMDEpJyk7CitFUlJPUjogIGNvbmZsaWN0aW5n IGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAidGVtcG9yYWxfcm5n X3BrIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPSgxLCBbMDYtMDEtMjAwMCwwMS0w MS0yMDAxKSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5IChpZCwgdmFsaWRfYXQpPSgx LCBbMDEtMDEtMjAwMCwwMS0wMS0yMDAxKSkuCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVl X2dpc3QvbWVzb24uYnVpbGQgYi9jb250cmliL2J0cmVlX2dpc3QvbWVzb24uYnVpbGQKaW5k ZXggYTQ0Y2U5MDVlNTkuLjczYjFiYmY1MmE2IDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVl X2dpc3QvbWVzb24uYnVpbGQKKysrIGIvY29udHJpYi9idHJlZV9naXN0L21lc29uLmJ1aWxk CkBAIC05MSw2ICs5MSw3IEBAIHRlc3RzICs9IHsKICAgICAgICdib29sJywKICAgICAgICdw YXJ0aXRpb25zJywKICAgICAgICdzdHJhdG51bScsCisgICAgICAnd2l0aG91dF9vdmVybGFw cycsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9z cWwvd2l0aG91dF9vdmVybGFwcy5zcWwgYi9jb250cmliL2J0cmVlX2dpc3Qvc3FsL3dpdGhv dXRfb3ZlcmxhcHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li40MzNjNjA5YWIyMgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9z cWwvd2l0aG91dF9vdmVybGFwcy5zcWwKQEAgLTAsMCArMSwyNSBAQAorLS0gQ29yZSBtdXN0 IHRlc3QgV0lUSE9VVCBPVkVSTEFQUworLS0gd2l0aCBhbiBpbnQ0cmFuZ2UgKyBkYXRlcmFu Z2UsCistLSBzbyBoZXJlIHdlIGRvIHNvbWUgc2ltcGxlIHRlc3RzCistLSB0byBtYWtlIHN1 cmUgaW50ICsgZGF0ZXJhbmdlIHdvcmtzIHRvbywKKy0tIHNpbmNlIHRoYXQgaXMgdGhlIGV4 cGVjdGVkIHVzZS1jYXNlLgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisgIGlkIGlu dGVnZXIsCisgIHZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9y bmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsK K1xkIHRlbXBvcmFsX3JuZworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJP TSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nX3BrJzsKK1NF TEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3Ry YWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CisKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZyBWQUxVRVMKKyAgKDEsICdbMjAwMC0wMS0wMSwyMDAxLTAxLTAxKScp OworLS0gc2FtZSBrZXksIGRvZXNuJ3Qgb3ZlcmxhcDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMKKyAgKDEsICdbMjAwMS0wMS0wMSwyMDAyLTAxLTAxKScpOworLS0gb3Zl cmxhcHMgYnV0IGRpZmZlcmVudCBrZXk6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTCisgICgyLCAnWzIwMDAtMDEtMDEsMjAwMS0wMS0wMSknKTsKKy0tIHNob3VsZCBmYWls OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAoMSwgJ1syMDAwLTA2LTAx LDIwMDEtMDEtMDEpJyk7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGMxNWQ4NjFlODIzLi4xNmI5 NDQ2MWIyYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTI3MDksNiArMjcwOSwxNiBAQCBTQ1JB TS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFj ZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwv cm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD5jb253aXRob3V0b3ZlcmxhcHM8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBl PgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhpcyBjb25zdHJhaW50 IGlzIGRlZmluZWQgd2l0aCA8bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPgor ICAgICAgIChmb3IgcHJpbWFyeSBrZXlzIGFuZCB1bmlxdWUgY29uc3RyYWludHMpLgorICAg ICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2Rl ZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5jb25rZXk8L3N0cnVjdGZpZWxkPiA8 dHlwZT5pbnQyW108L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21s IGIvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbAppbmRleCA5MTNjNWNkM2JiYS4uODZiZTdjOTYy NTYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9naXN0LnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2dpc3Quc2dtbApAQCAtMjk4LDcgKzI5OCw4IEBAIENSRUFURSBJTkRFWCBPTiBteV90 YWJsZSBVU0lORyBHSVNUIChteV9pbmV0X2NvbHVtbiBpbmV0X29wcyk7CiAgICBUaGUgb3B0 aW9uYWwgdHdlbGZ0aCBtZXRob2QgPGZ1bmN0aW9uPnN0cmF0bnVtPC9mdW5jdGlvbj4gaXMg dXNlZCB0byB0cmFuc2xhdGUKICAgIHdlbGwta25vd24gPGxpdGVyYWw+UlQqU3RyYXRlZ3lO dW1iZXJzPC9saXRlcmFsPiAoZnJvbQogICAgPGZpbGVuYW1lPnNyYy9pbmNsdWRlL2FjY2Vz cy9zdHJhdG51bS5oPC9maWxlbmFtZT4pIGludG8gc3RyYXRlZ3kgbnVtYmVycwotICAgdXNl ZCBieSB0aGUgb3BjbGFzcy4KKyAgIHVzZWQgYnkgdGhlIG9wY2xhc3MuIFRoaXMgbGV0cyB0 aGUgY29yZSBjb2RlIGxvb2sgdXAgb3BlcmF0b3JzIGZvciB0ZW1wb3JhbAorICAgY29uc3Ry YWludCBpbmRleGVzLgogIDwvcGFyYT4KIAogIDx2YXJpYWJsZWxpc3Q+CkBAIC0xMTg0LDYg KzExODUsMjEgQEAgbXlfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKICAgICAgICBp ZiB0aGUgb3BjbGFzcyBoYXMgbm8gbWF0Y2hpbmcgc3RyYXRlZ3ksCiAgICAgICAgb3IgYXQg bGVhc3QgYSBzdHJhdGVneSBudW1iZXIgdGhhdCBpc24ndCB1c2VkIGJ5IHRoaXMgb3BjbGFz cy4KICAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoaXMgaXMgdXNlZCBm b3IgdGVtcG9yYWwgaW5kZXggY29uc3RyYWludHMKKyAgICAgICAoaS5lLiA8bGl0ZXJhbD5Q UklNQVJZIEtFWTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPlVOSVFVRTwvbGl0ZXJhbD4pLgor ICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgSWYgdGhlIG9wY2xhc3MgcHJv dmlkZXMgdGhpcyBmdW5jdGlvbiBhbmQgaXQgcmV0dXJucyByZXN1bHRzCisgICAgICAgZm9y IDxsaXRlcmFsPlJURXF1YWxTdHJhdGVneU51bWJlcjwvbGl0ZXJhbD4sIGl0IGNhbiBiZSB1 c2VkCisgICAgICAgaW4gdGhlIG5vbi08bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRl cmFsPiBwYXJ0KHMpIG9mIGFuCisgICAgICAgaW5kZXggY29uc3RyYWludC4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIElmIGl0IHJldHVybnMgcmVzdWx0cyBmb3Ig PGxpdGVyYWw+UlRPdmVybGFwU3RyYXRlZ3lOdW1iZXI8L2xpdGVyYWw+LAorICAgICAgIHRo ZSBvcGNsYXNzIGNhbiBiZSB1c2VkIGluIHRoZSA8bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBT PC9saXRlcmFsPgorICAgICAgIHBhcnQgb2YgYW4gaW5kZXggY29uc3RyYWludC4KKyAgICAg IDwvcGFyYT4KIAogICAgICAgPHBhcmE+CiAgICAgICAgVGhlIDxhY3JvbnltPlNRTDwvYWNy b255bT4gZGVjbGFyYXRpb24gb2YgdGhlIGZ1bmN0aW9uIG11c3QgbG9vayBsaWtlCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAppbmRleCBlMDRhMDY5MmM0ZS4uMjc4YWYyZTM4 NjkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbApAQCAtNzgsOCArNzgsOCBA QCBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBV TkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSQogWyBDT05TVFJBSU5UIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxlPiBdCiB7 IENIRUNLICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3Jl cGxhY2VhYmxlPiApIFsgTk8gSU5IRVJJVCBdIHwKICAgTk9UIE5VTEwgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBOTyBJTkhF UklUIF0gfAotICBVTklRVUUgWyBOVUxMUyBbIE5PVCBdIERJU1RJTkNUIF0gKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAu Li4gXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJz PC9yZXBsYWNlYWJsZT4gfAotICBQUklNQVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxl PiB8CisgIFVOSVFVRSBbIE5VTExTIFsgTk9UIF0gRElTVElOQ1QgXSAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBd IFssIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFj ZWFibGU+IFdJVEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAorICBQUklNQVJZIEtFWSAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+IFssIC4uLiBdIFssIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFdJVEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAogICBF WENMVURFIFsgVVNJTkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21l dGhvZDwvcmVwbGFjZWFibGU+IF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ ZXhjbHVkZV9lbGVtZW50PC9yZXBsYWNlYWJsZT4gV0lUSCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4g WyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wcmVkaWNhdGU8L3Jl cGxhY2VhYmxlPiApIF0gfAogICBGT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgUkVGRVJF TkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2Vh YmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVw bGFjZWFibGU+IFssIC4uLiBdICkgXQogICAgIFsgTUFUQ0ggRlVMTCB8IE1BVENIIFBBUlRJ QUwgfCBNQVRDSCBTSU1QTEUgXSBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUKQEAgLTk2NSw3 ICs5NjUsNyBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogCiAgICA8dmFybGlzdGVu dHJ5IGlkPSJzcWwtY3JlYXRldGFibGUtcGFybXMtdW5pcXVlIj4KICAgICA8dGVybT48bGl0 ZXJhbD5VTklRVUUgWyBOVUxMUyBbIE5PVCBdIERJU1RJTkNUIF08L2xpdGVyYWw+IChjb2x1 bW4gY29uc3RyYWludCk8L3Rlcm0+Ci0gICAgPHRlcm0+PGxpdGVyYWw+VU5JUVVFIFsgTlVM TFMgWyBOT1QgXSBESVNUSU5DVCBdICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKTwvbGl0ZXJhbD4KKyAgICA8 dGVybT48bGl0ZXJhbD5VTklRVUUgWyBOVUxMUyBbIE5PVCBdIERJU1RJTkNUIF0gKCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBb LCAuLi4gXSBbLCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8 L3JlcGxhY2VhYmxlPiBXSVRIT1VUIE9WRVJMQVBTIF0gKTwvbGl0ZXJhbD4KICAgICA8b3B0 aW9uYWw+IDxsaXRlcmFsPklOQ0xVREUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dKTwvbGl0ZXJhbD4gPC9vcHRp b25hbD4gKHRhYmxlIGNvbnN0cmFpbnQpPC90ZXJtPgogCiAgICAgPGxpc3RpdGVtPgpAQCAt OTc5LDYgKzk3OSwzMCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgb2Yg dGhlc2UgY29sdW1ucy4KICAgICAgPC9wYXJhPgogCisgICAgIDxwYXJhPgorICAgICAgSWYg dGhlIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IG9wdGlvbiBpcyBzcGVj aWZpZWQgZm9yIHRoZQorICAgICAgbGFzdCBjb2x1bW4sIHRoZW4gdGhhdCBjb2x1bW4gaXMg Y2hlY2tlZCBmb3Igb3ZlcmxhcHMgaW5zdGVhZCBvZgorICAgICAgZXF1YWxpdHkuICBJbiB0 aGF0IGNhc2UsIHRoZSBvdGhlciBjb2x1bW5zIG9mIHRoZSBjb25zdHJhaW50IHdpbGwgYWxs b3cKKyAgICAgIGR1cGxpY2F0ZXMgc28gbG9uZyBhcyB0aGUgZHVwbGljYXRlcyBkb24ndCBv dmVybGFwIGluIHRoZQorICAgICAgPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJh bD4gY29sdW1uLiAgKFRoaXMgaXMgc29tZXRpbWVzIGNhbGxlZCBhCisgICAgICB0ZW1wb3Jh bCBrZXksIGlmIHRoZSBjb2x1bW4gaXMgYSByYW5nZSBvZiBkYXRlcyBvciB0aW1lc3RhbXBz LCBidXQKKyAgICAgIFBvc3RncmVTUUwgYWxsb3dzIHJhbmdlcyBvdmVyIGFueSBiYXNlIHR5 cGUuKSAgSW4gZWZmZWN0LCBzdWNoIGEKKyAgICAgIGNvbnN0cmFpbnQgaXMgZW5mb3JjZWQg d2l0aCBhbiA8bGl0ZXJhbD5FWENMVURFPC9saXRlcmFsPiBjb25zdHJhaW50CisgICAgICBy YXRoZXIgdGhhbiBhIDxsaXRlcmFsPlVOSVFVRTwvbGl0ZXJhbD4gY29uc3RyYWludC4gIFNv IGZvciBleGFtcGxlCisgICAgICA8bGl0ZXJhbD5VTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKTwvbGl0ZXJhbD4gYmVoYXZlcyBsaWtlCisgICAgICA8bGl0ZXJhbD5F WENMVURFIFVTSU5HIEdJU1QgKGlkIFdJVEggPSwgdmFsaWRfYXQgV0lUSAorICAgICAgJmFt cDsmYW1wOyk8L2xpdGVyYWw+LiAgVGhlIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xp dGVyYWw+IGNvbHVtbgorICAgICAgbXVzdCBoYXZlIGEgcmFuZ2Ugb3IgbXVsdGlyYW5nZSB0 eXBlLiAoVGVjaG5pY2FsbHkgYW55IHR5cGUgaXMgYWxsb3dlZAorICAgICAgd2hvc2UgZGVm YXVsdCBHaVNUIG9wY2xhc3MgaW5jbHVkZXMgYW4gb3ZlcmxhcHMgb3BlcmF0b3IuIFNlZSB0 aGUKKyAgICAgIDxsaXRlcmFsPnN0cmF0bnVtPC9saXRlcmFsPiBzdXBwb3J0IGZ1bmN0aW9u IHVuZGVyCisgICAgICA8eHJlZiBsaW5rZW5kPSJnaXN0LWV4dGVuc2liaWxpdHkiLz4gZm9y IGRldGFpbHMuKQorICAgICAgVGhlIG5vbi08bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9s aXRlcmFsPgorICAgICAgY29sdW1ucyBvZiB0aGUgY29uc3RyYWludCBjYW4gYmUgYW55IHR5 cGUgdGhhdCBjYW4gYmUgY29tcGFyZWQgZm9yCisgICAgICBlcXVhbGl0eSBpbiBhIEdpU1Qg aW5kZXguIEJ5IGRlZmF1bHQgb25seSByYW5nZSB0eXBlcyBhcmUgc3VwcG9ydGVkLCBidXQK KyAgICAgIHlvdSBjYW4gdXNlIG90aGVyIHR5cGVzIGJ5IGFkZGluZyB0aGUgPHhyZWYgbGlu a2VuZD0iYnRyZWUtZ2lzdCIvPgorICAgICAgZXh0ZW5zaW9uICh3aGljaCBpcyB0aGUgZXhw ZWN0ZWQgd2F5IHRvIHVzZSB0aGlzIGZlYXR1cmUpLgorICAgICA8L3BhcmE+CisKICAgICAg PHBhcmE+CiAgICAgICBGb3IgdGhlIHB1cnBvc2Ugb2YgYSB1bmlxdWUgY29uc3RyYWludCwg bnVsbCB2YWx1ZXMgYXJlIG5vdAogICAgICAgY29uc2lkZXJlZCBlcXVhbCwgdW5sZXNzIDxs aXRlcmFsPk5VTExTIE5PVCBESVNUSU5DVDwvbGl0ZXJhbD4gaXMKQEAgLTEwMDEsNyArMTAy NSw5IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5u dW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAKICAgICAgPHBhcmE+CiAgICAg ICBBZGRpbmcgYSB1bmlxdWUgY29uc3RyYWludCB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRl IGEgdW5pcXVlIGJ0cmVlCi0gICAgICBpbmRleCBvbiB0aGUgY29sdW1uIG9yIGdyb3VwIG9m IGNvbHVtbnMgdXNlZCBpbiB0aGUgY29uc3RyYWludC4KKyAgICAgIGluZGV4IG9uIHRoZSBj b2x1bW4gb3IgZ3JvdXAgb2YgY29sdW1ucyB1c2VkIGluIHRoZSBjb25zdHJhaW50LiBCdXQg aWYKKyAgICAgIHRoZSBjb25zdHJhaW50IGluY2x1ZGVzIGEgPGxpdGVyYWw+V0lUSE9VVCBP VkVSTEFQUzwvbGl0ZXJhbD4gY2xhdXNlLAorICAgICAgaXQgd2lsbCB1c2UgYSBHaVNUIGlu ZGV4LgogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+CkBAIC0xMDE5LDcgKzEwNDUsNyBA QCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJp Y19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogCiAgICA8dmFybGlzdGVudHJ5IGlkPSJz cWwtY3JlYXRldGFibGUtcGFybXMtcHJpbWFyeS1rZXkiPgogICAgIDx0ZXJtPjxsaXRlcmFs PlBSSU1BUlkgS0VZPC9saXRlcmFsPiAoY29sdW1uIGNvbnN0cmFpbnQpPC90ZXJtPgotICAg IDx0ZXJtPjxsaXRlcmFsPlBSSU1BUlkgS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKTwvbGl0ZXJhbD4K KyAgICA8dGVybT48bGl0ZXJhbD5QUklNQVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFdJ VEhPVVQgT1ZFUkxBUFMgXSApPC9saXRlcmFsPgogICAgIDxvcHRpb25hbD4gPGxpdGVyYWw+ SU5DTFVERSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwv cmVwbGFjZWFibGU+IFssIC4uLl0pPC9saXRlcmFsPiA8L29wdGlvbmFsPiAodGFibGUgY29u c3RyYWludCk8L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KQEAgLTEwNTIs OSArMTA3OCwxMCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICA8L3BhcmE+ CiAKICAgICAgPHBhcmE+Ci0gICAgICBBZGRpbmcgYSA8bGl0ZXJhbD5QUklNQVJZIEtFWTwv bGl0ZXJhbD4gY29uc3RyYWludCB3aWxsIGF1dG9tYXRpY2FsbHkKLSAgICAgIGNyZWF0ZSBh IHVuaXF1ZSBidHJlZSBpbmRleCBvbiB0aGUgY29sdW1uIG9yIGdyb3VwIG9mIGNvbHVtbnMg dXNlZCBpbiB0aGUKLSAgICAgIGNvbnN0cmFpbnQuCisgICAgICBBcyB3aXRoIGEgPGxpdGVy YWw+VU5JUVVFPC9saXRlcmFsPiBjb25zdHJhaW50LCBhZGRpbmcgYQorICAgICAgPGxpdGVy YWw+UFJJTUFSWSBLRVk8L2xpdGVyYWw+IGNvbnN0cmFpbnQgd2lsbCBhdXRvbWF0aWNhbGx5 IGNyZWF0ZSBhCisgICAgICB1bmlxdWUgYnRyZWUgaW5kZXgsIG9yIEdpU1QgaWYgPGxpdGVy YWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gd2FzCisgICAgICBzcGVjaWZpZWQsIG9u IHRoZSBjb2x1bW4gb3IgZ3JvdXAgb2YgY29sdW1ucyB1c2VkIGluIHRoZSBjb25zdHJhaW50 LgogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lz dHV0aWwuYwppbmRleCBkNGQwOGJkMTE4Zi4uZmY0ZWVkMDRhZWMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHV0aWwuYwpAQCAtMTA3MCwzICsxMDcwLDMyIEBAIGdpc3Rfc3RyYXRu dW1faWRlbnRpdHkoUEdfRlVOQ1RJT05fQVJHUykKIAogCVBHX1JFVFVSTl9VSU5UMTYoc3Ry YXQpOwogfQorCisvKgorICogUmV0dXJucyB0aGUgb3BjbGFzcydzIHByaXZhdGUgc3RyYXRu dW0gdXNlZCBmb3IgdGhlIGdpdmVuIHN0cmF0ZWd5LgorICoKKyAqIENhbGxzIHRoZSBvcGNs YXNzJ3MgR0lTVF9TVFJBVE5VTV9QUk9DIHN1cHBvcnQgZnVuY3Rpb24sIGlmIGFueSwKKyAq IGFuZCByZXR1cm5zIHRoZSByZXN1bHQuCisgKiBSZXR1cm5zIEludmFsaWRTdHJhdGVneSBp ZiB0aGUgZnVuY3Rpb24gaXMgbm90IGRlZmluZWQuCisgKi8KK1N0cmF0ZWd5TnVtYmVyCitH aXN0VHJhbnNsYXRlU3RyYXRudW0oT2lkIG9wY2xhc3MsIFN0cmF0ZWd5TnVtYmVyIHN0cmF0 KQoreworCU9pZAlvcGZhbWlseTsKKwlPaWQJb3BjaW50eXBlOworCU9pZAlmdW5jaWQ7CisJ RGF0dW0gcmVzdWx0OworCisJLyogTG9vayB1cCB0aGUgb3BjbGFzcyBmYW1pbHkgYW5kIGlu cHV0IGRhdGF0eXBlLiAqLworCWlmICghZ2V0X29wY2xhc3Nfb3BmYW1pbHlfYW5kX2lucHV0 X3R5cGUob3BjbGFzcywgJm9wZmFtaWx5LCAmb3BjaW50eXBlKSkKKwkJcmV0dXJuIEludmFs aWRTdHJhdGVneTsKKworCS8qIENoZWNrIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGlzIHByb3Zp ZGVkLiAqLworCWZ1bmNpZCA9IGdldF9vcGZhbWlseV9wcm9jKG9wZmFtaWx5LCBvcGNpbnR5 cGUsIG9wY2ludHlwZSwgR0lTVF9TVFJBVE5VTV9QUk9DKTsKKwlpZiAoIU9pZElzVmFsaWQo ZnVuY2lkKSkKKwkJcmV0dXJuIEludmFsaWRTdHJhdGVneTsKKworCS8qIEFzayB0aGUgdHJh bnNsYXRpb24gZnVuY3Rpb24gKi8KKwlyZXN1bHQgPSBPaWRGdW5jdGlvbkNhbGwxQ29sbChm dW5jaWQsIEludmFsaWRPaWQsIFVJbnQxNkdldERhdHVtKHN0cmF0KSk7CisJcmV0dXJuIERh dHVtR2V0VUludDE2KHJlc3VsdCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL2hlYXAuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4IDQ1YTcxMDgx ZDQyLi5jNzNmN2JjZDAxMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFw LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAgLTIxNDEsNiArMjE0MSw3 IEBAIFN0b3JlUmVsQ2hlY2soUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjY25hbWUsIE5v ZGUgKmV4cHIsCiAJCQkJCQkJICBpc19sb2NhbCwgLyogY29uaXNsb2NhbCAqLwogCQkJCQkJ CSAgaW5oY291bnQsIC8qIGNvbmluaGNvdW50ICovCiAJCQkJCQkJICBpc19ub19pbmhlcml0 LAkvKiBjb25ub2luaGVyaXQgKi8KKwkJCQkJCQkgIGZhbHNlLAkvKiBjb253aXRob3V0b3Zl cmxhcHMgKi8KIAkJCQkJCQkgIGlzX2ludGVybmFsKTsgLyogaW50ZXJuYWxseSBjb25zdHJ1 Y3RlZD8gKi8KIAogCXBmcmVlKGNjYmluKTsKQEAgLTIxOTEsNiArMjE5Miw3IEBAIFN0b3Jl UmVsTm90TnVsbChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKm5ubmFtZSwgQXR0ck51bWJl ciBhdHRudW0sCiAJCQkJCQkJICBpc19sb2NhbCwKIAkJCQkJCQkgIGluaGNvdW50LAogCQkJ CQkJCSAgaXNfbm9faW5oZXJpdCwKKwkJCQkJCQkgIGZhbHNlLAkvKiBjb253aXRob3V0b3Zl cmxhcHMgKi8KIAkJCQkJCQkgIGZhbHNlKTsKIAlyZXR1cm4gY29uc3RyT2lkOwogfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jCmluZGV4IGZiZWYzZDUzODJkLi41YzQ5MDY4NGNlMSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYwpAQCAtMTkwNCw2ICsxOTA0LDcgQEAgaW5kZXhfY29uY3VycmVudGx5X3Nl dF9kZWFkKE9pZCBoZWFwSWQsIE9pZCBpbmRleElkKQogICoJCUlOREVYX0NPTlNUUl9DUkVB VEVfVVBEQVRFX0lOREVYOiB1cGRhdGUgdGhlIHBnX2luZGV4IHJvdwogICoJCUlOREVYX0NP TlNUUl9DUkVBVEVfUkVNT1ZFX09MRF9ERVBTOiByZW1vdmUgZXhpc3RpbmcgZGVwZW5kZW5j aWVzCiAgKgkJCW9mIGluZGV4IG9uIHRhYmxlJ3MgY29sdW1ucworICoJCUlOREVYX0NPTlNU Ul9DUkVBVEVfV0lUSE9VVF9PVkVSTEFQUzogY29uc3RyYWludCB1c2VzIFdJVEhPVVQgT1ZF UkxBUFMKICAqIGFsbG93X3N5c3RlbV90YWJsZV9tb2RzOiBhbGxvdyB0YWJsZSB0byBiZSBh IHN5c3RlbSBjYXRhbG9nCiAgKiBpc19pbnRlcm5hbDogaW5kZXggaXMgY29uc3RydWN0ZWQg ZHVlIHRvIGludGVybmFsIHByb2Nlc3MKICAqLwpAQCAtMTkyNywxMSArMTkyOCwxMyBAQCBp bmRleF9jb25zdHJhaW50X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJYm9vbAkJ bWFya19hc19wcmltYXJ5OwogCWJvb2wJCWlzbG9jYWw7CiAJYm9vbAkJbm9pbmhlcml0Owor CWJvb2wJCWlzX3dpdGhvdXRfb3ZlcmxhcHM7CiAJaW50CQkJaW5oY291bnQ7CiAKIAlkZWZl cnJhYmxlID0gKGNvbnN0cl9mbGFncyAmIElOREVYX0NPTlNUUl9DUkVBVEVfREVGRVJSQUJM RSkgIT0gMDsKIAlpbml0ZGVmZXJyZWQgPSAoY29uc3RyX2ZsYWdzICYgSU5ERVhfQ09OU1RS X0NSRUFURV9JTklUX0RFRkVSUkVEKSAhPSAwOwogCW1hcmtfYXNfcHJpbWFyeSA9IChjb25z dHJfZmxhZ3MgJiBJTkRFWF9DT05TVFJfQ1JFQVRFX01BUktfQVNfUFJJTUFSWSkgIT0gMDsK Kwlpc193aXRob3V0X292ZXJsYXBzID0gKGNvbnN0cl9mbGFncyAmIElOREVYX0NPTlNUUl9D UkVBVEVfV0lUSE9VVF9PVkVSTEFQUykgIT0gMDsKIAogCS8qIGNvbnN0cmFpbnQgY3JlYXRp b24gc3VwcG9ydCBkb2Vzbid0IHdvcmsgd2hpbGUgYm9vdHN0cmFwcGluZyAqLwogCUFzc2Vy dCghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpKTsKQEAgLTIwMDgsNiArMjAxMSw3IEBA IGluZGV4X2NvbnN0cmFpbnRfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJ CQkJICAgaXNsb2NhbCwKIAkJCQkJCQkJICAgaW5oY291bnQsCiAJCQkJCQkJCSAgIG5vaW5o ZXJpdCwKKwkJCQkJCQkJICAgaXNfd2l0aG91dF9vdmVybGFwcywKIAkJCQkJCQkJICAgaXNf aW50ZXJuYWwpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf Y29uc3RyYWludC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKaW5k ZXggYTAyMzJhYTFiYmYuLjBhOTU2MDgxNzlkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX2NvbnN0cmFpbnQuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2Nv bnN0cmFpbnQuYwpAQCAtNzgsNiArNzgsNyBAQCBDcmVhdGVDb25zdHJhaW50RW50cnkoY29u c3QgY2hhciAqY29uc3RyYWludE5hbWUsCiAJCQkJCSAgYm9vbCBjb25Jc0xvY2FsLAogCQkJ CQkgIGludCBjb25JbmhDb3VudCwKIAkJCQkJICBib29sIGNvbk5vSW5oZXJpdCwKKwkJCQkJ ICBib29sIGNvbldpdGhvdXRPdmVybGFwcywKIAkJCQkJICBib29sIGlzX2ludGVybmFsKQog ewogCVJlbGF0aW9uCWNvbkRlc2M7CkBAIC0xOTMsNiArMTk0LDcgQEAgQ3JlYXRlQ29uc3Ry YWludEVudHJ5KGNvbnN0IGNoYXIgKmNvbnN0cmFpbnROYW1lLAogCXZhbHVlc1tBbnVtX3Bn X2NvbnN0cmFpbnRfY29uaXNsb2NhbCAtIDFdID0gQm9vbEdldERhdHVtKGNvbklzTG9jYWwp OwogCXZhbHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29uaW5oY291bnQgLSAxXSA9IEludDE2 R2V0RGF0dW0oY29uSW5oQ291bnQpOwogCXZhbHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29u bm9pbmhlcml0IC0gMV0gPSBCb29sR2V0RGF0dW0oY29uTm9Jbmhlcml0KTsKKwl2YWx1ZXNb QW51bV9wZ19jb25zdHJhaW50X2NvbndpdGhvdXRvdmVybGFwcyAtIDFdID0gQm9vbEdldERh dHVtKGNvbldpdGhvdXRPdmVybGFwcyk7CiAKIAlpZiAoY29ua2V5QXJyYXkpCiAJCXZhbHVl c1tBbnVtX3BnX2NvbnN0cmFpbnRfY29ua2V5IC0gMV0gPSBQb2ludGVyR2V0RGF0dW0oY29u a2V5QXJyYXkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRz LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCAzNDAyNDhhM2Yy OS4uNTJmMzE5NDc5MWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNiw2 ICsxNiw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImFjY2Vzcy9h bWFwaS5oIgorI2luY2x1ZGUgImFjY2Vzcy9naXN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hl YXBhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJh Y2Nlc3MvcmVsb3B0aW9ucy5oIgpAQCAtODYsNiArODcsNyBAQCBzdGF0aWMgdm9pZCBDb21w dXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCQkJCQkgIE9pZCBhY2Nl c3NNZXRob2RJZCwKIAkJCQkJCQkgIGJvb2wgYW1jYW5vcmRlciwKIAkJCQkJCQkgIGJvb2wg aXNjb25zdHJhaW50LAorCQkJCQkJCSAgYm9vbCBpc3dpdGhvdXRvdmVybGFwcywKIAkJCQkJ CQkgIE9pZCBkZGxfdXNlcmlkLAogCQkJCQkJCSAgaW50IGRkbF9zZWNfY29udGV4dCwKIAkJ CQkJCQkgIGludCAqZGRsX3NhdmVfbmVzdGxldmVsKTsKQEAgLTE0NCw2ICsxNDYsNyBAQCB0 eXBlZGVmIHN0cnVjdCBSZWluZGV4RXJyb3JJbmZvCiAgKgkJdG8gaW5kZXggb24uCiAgKiAn ZXhjbHVzaW9uT3BOYW1lcyc6IGxpc3Qgb2YgbmFtZXMgb2YgZXhjbHVzaW9uLWNvbnN0cmFp bnQgb3BlcmF0b3JzLAogICoJCW9yIE5JTCBpZiBub3QgYW4gZXhjbHVzaW9uIGNvbnN0cmFp bnQuCisgKiAnaXNXaXRob3V0T3ZlcmxhcHMnOiB0cnVlIGlmZiB0aGlzIGluZGV4IGhhcyBh IFdJVEhPVVQgT1ZFUkxBUFMgY2xhdXNlLgogICoKICAqIFRoaXMgaXMgdGFpbG9yZWQgdG8g dGhlIG5lZWRzIG9mIEFMVEVSIFRBQkxFIEFMVEVSIFRZUEUsIHdoaWNoIHJlY3JlYXRlcwog ICogYW55IGluZGV4ZXMgdGhhdCBkZXBlbmRlZCBvbiBhIGNoYW5naW5nIGNvbHVtbiBmcm9t IHRoZWlyIHBnX2dldF9pbmRleGRlZgpAQCAtMTczLDcgKzE3Niw4IEBAIGJvb2wKIENoZWNr SW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAkJCQkJIGNvbnN0IGNoYXIgKmFjY2Vzc01l dGhvZE5hbWUsCiAJCQkJCSBjb25zdCBMaXN0ICphdHRyaWJ1dGVMaXN0LAotCQkJCQkgY29u c3QgTGlzdCAqZXhjbHVzaW9uT3BOYW1lcykKKwkJCQkJIGNvbnN0IExpc3QgKmV4Y2x1c2lv bk9wTmFtZXMsCisJCQkJCSBib29sIGlzV2l0aG91dE92ZXJsYXBzKQogewogCWJvb2wJCWlz Y29uc3RyYWludDsKIAlPaWQJCSAgICp0eXBlSWRzOwpAQCAtMjQ4LDggKzI1Miw4IEBAIENo ZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAkJCQkJICBjb2xvcHRpb25zLCBhdHRy aWJ1dGVMaXN0LAogCQkJCQkgIGV4Y2x1c2lvbk9wTmFtZXMsIHJlbGF0aW9uSWQsCiAJCQkJ CSAgYWNjZXNzTWV0aG9kTmFtZSwgYWNjZXNzTWV0aG9kSWQsCi0JCQkJCSAgYW1jYW5vcmRl ciwgaXNjb25zdHJhaW50LCBJbnZhbGlkT2lkLCAwLCBOVUxMKTsKLQorCQkJCQkgIGFtY2Fu b3JkZXIsIGlzY29uc3RyYWludCwgaXNXaXRob3V0T3ZlcmxhcHMsIEludmFsaWRPaWQsCisJ CQkJCSAgMCwgTlVMTCk7CiAKIAkvKiBHZXQgdGhlIHNvb24tb2Jzb2xldGUgcGdfaW5kZXgg dHVwbGUuICovCiAJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoSU5ERVhSRUxJRCwgT2JqZWN0 SWRHZXREYXR1bShvbGRJZCkpOwpAQCAtNTU5LDYgKzU2Myw3IEBAIERlZmluZUluZGV4KE9p ZCB0YWJsZUlkLAogCWJvb2wJCWFtY2Fub3JkZXI7CiAJYm9vbAkJYW1pc3N1bW1hcml6aW5n OwogCWFtb3B0aW9uc19mdW5jdGlvbiBhbW9wdGlvbnM7CisJYm9vbAkJZXhjbHVzaW9uOwog CWJvb2wJCXBhcnRpdGlvbmVkOwogCWJvb2wJCXNhZmVfaW5kZXg7CiAJRGF0dW0JCXJlbG9w dGlvbnM7CkBAIC02NzcsNiArNjgyLDEyIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAog CiAJbmFtZXNwYWNlSWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpOwogCisJLyoKKwkg KiBJdCBoYXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgYmVoYXZpb3IgaWYgaXQncyBhbiBFWENM VURFIGNvbnN0cmFpbnQKKwkgKiBvciBhIHRlbXBvcmFsIFBSSU1BUlkgS0VZL1VOSVFVRSBj b25zdHJhaW50CisJICovCisJZXhjbHVzaW9uID0gc3RtdC0+ZXhjbHVkZU9wTmFtZXMgfHwg c3RtdC0+aXN3aXRob3V0b3ZlcmxhcHM7CisKIAkvKiBFbnN1cmUgdGhhdCBpdCBtYWtlcyBz ZW5zZSB0byBpbmRleCB0aGlzIGtpbmQgb2YgcmVsYXRpb24gKi8KIAlzd2l0Y2ggKHJlbC0+ cmRfcmVsLT5yZWxraW5kKQogCXsKQEAgLTg0NSw3ICs4NTYsNyBAQCBEZWZpbmVJbmRleChP aWQgdGFibGVJZCwKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NS RUFURUlEWF9BQ0NFU1NfTUVUSE9EX09JRCwKIAkJCQkJCQkJIGFjY2Vzc01ldGhvZElkKTsK IAotCWlmIChzdG10LT51bmlxdWUgJiYgIWFtUm91dGluZS0+YW1jYW51bmlxdWUpCisJaWYg KHN0bXQtPnVuaXF1ZSAmJiAhc3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMgJiYgIWFtUm91dGlu ZS0+YW1jYW51bmlxdWUpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coImFjY2VzcyBtZXRob2Qg XCIlc1wiIGRvZXMgbm90IHN1cHBvcnQgdW5pcXVlIGluZGV4ZXMiLApAQCAtODYwLDcgKzg3 MSw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJhY2Nlc3MgbWV0aG9kIFwi JXNcIiBkb2VzIG5vdCBzdXBwb3J0IG11bHRpY29sdW1uIGluZGV4ZXMiLAogCQkJCQkJYWNj ZXNzTWV0aG9kTmFtZSkpKTsKLQlpZiAoc3RtdC0+ZXhjbHVkZU9wTmFtZXMgJiYgYW1Sb3V0 aW5lLT5hbWdldHR1cGxlID09IE5VTEwpCisJaWYgKGV4Y2x1c2lvbiAmJiBhbVJvdXRpbmUt PmFtZ2V0dHVwbGUgPT0gTlVMTCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJIGVycm1zZygiYWNjZXNzIG1l dGhvZCBcIiVzXCIgZG9lcyBub3Qgc3VwcG9ydCBleGNsdXNpb24gY29uc3RyYWludHMiLApA QCAtOTEzLDggKzkyNCw5IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkgIGNv bG9wdGlvbnMsIGFsbEluZGV4UGFyYW1zLAogCQkJCQkgIHN0bXQtPmV4Y2x1ZGVPcE5hbWVz LCB0YWJsZUlkLAogCQkJCQkgIGFjY2Vzc01ldGhvZE5hbWUsIGFjY2Vzc01ldGhvZElkLAot CQkJCQkgIGFtY2Fub3JkZXIsIHN0bXQtPmlzY29uc3RyYWludCwgcm9vdF9zYXZlX3VzZXJp ZCwKLQkJCQkJICByb290X3NhdmVfc2VjX2NvbnRleHQsICZyb290X3NhdmVfbmVzdGxldmVs KTsKKwkJCQkJICBhbWNhbm9yZGVyLCBzdG10LT5pc2NvbnN0cmFpbnQsIHN0bXQtPmlzd2l0 aG91dG92ZXJsYXBzLAorCQkJCQkgIHJvb3Rfc2F2ZV91c2VyaWQsIHJvb3Rfc2F2ZV9zZWNf Y29udGV4dCwKKwkJCQkJICAmcm9vdF9zYXZlX25lc3RsZXZlbCk7CiAKIAkvKgogCSAqIEV4 dHJhIGNoZWNrcyB3aGVuIGNyZWF0aW5nIGEgUFJJTUFSWSBLRVkgaW5kZXguCkBAIC05MzIs NyArOTQ0LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogV2UgY291bGQgbGlm dCB0aGlzIGxpbWl0YXRpb24gaWYgd2UgaGFkIGdsb2JhbCBpbmRleGVzLCBidXQgdGhvc2Ug aGF2ZQogCSAqIHRoZWlyIG93biBwcm9ibGVtcywgc28gdGhpcyBpcyBhIHVzZWZ1bCBmZWF0 dXJlIGNvbWJpbmF0aW9uLgogCSAqLwotCWlmIChwYXJ0aXRpb25lZCAmJiAoc3RtdC0+dW5p cXVlIHx8IHN0bXQtPmV4Y2x1ZGVPcE5hbWVzKSkKKwlpZiAocGFydGl0aW9uZWQgJiYgKHN0 bXQtPnVuaXF1ZSB8fCBleGNsdXNpb24pKQogCXsKIAkJUGFydGl0aW9uS2V5IGtleSA9IFJl bGF0aW9uR2V0UGFydGl0aW9uS2V5KHJlbCk7CiAJCWNvbnN0IGNoYXIgKmNvbnN0cmFpbnRf dHlwZTsKQEAgLTk4NiwxMCArOTk4LDEwIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAog CQkJICogYXNzb2NpYXRlZCB3aXRoIGluZGV4IGNvbHVtbnMsIHRvby4gIFdlIGtub3cgd2hh dCB0byBkbyB3aXRoCiAJCQkgKiBidHJlZSBvcGNsYXNzZXM7IGlmIHRoZXJlIGFyZSBldmVy IGFueSBvdGhlciBpbmRleCB0eXBlcyB0aGF0CiAJCQkgKiBzdXBwb3J0IHVuaXF1ZSBpbmRl eGVzLCB0aGlzIGxvZ2ljIHdpbGwgbmVlZCBleHRlbnNpb24uIEJ1dCBpZgotCQkJICogd2Ug aGF2ZSBhbiBleGNsdXNpb24gY29uc3RyYWludCwgaXQgYWxyZWFkeSBrbm93cyB0aGUKLQkJ CSAqIG9wZXJhdG9ycywgc28gd2UgZG9uJ3QgaGF2ZSB0byBpbmZlciB0aGVtLgorCQkJICog d2UgaGF2ZSBhbiBleGNsdXNpb24gY29uc3RyYWludCAob3IgYSB0ZW1wb3JhbCBQSyksIGl0 IGFscmVhZHkKKwkJCSAqIGtub3dzIHRoZSBvcGVyYXRvcnMsIHNvIHdlIGRvbid0IGhhdmUg dG8gaW5mZXIgdGhlbS4KIAkJCSAqLwotCQkJaWYgKHN0bXQtPnVuaXF1ZSAmJiBhY2Nlc3NN ZXRob2RJZCAhPSBCVFJFRV9BTV9PSUQpCisJCQlpZiAoc3RtdC0+dW5pcXVlICYmICFzdG10 LT5pc3dpdGhvdXRvdmVybGFwcyAmJiBhY2Nlc3NNZXRob2RJZCAhPSBCVFJFRV9BTV9PSUQp CiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwKIAkJCQkJCSBlcnJtc2coImNhbm5vdCBtYXRjaCBwYXJ0aXRpb24g a2V5IHRvIGFuIGluZGV4IHVzaW5nIGFjY2VzcyBtZXRob2QgXCIlc1wiIiwKQEAgLTEwMjgs MTIgKzEwNDAsMTIgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCQkJCXsKIAkJCQkJ CU9pZAkJCWlkeF9lcW9wID0gSW52YWxpZE9pZDsKIAotCQkJCQkJaWYgKHN0bXQtPnVuaXF1 ZSkKKwkJCQkJCWlmIChzdG10LT51bmlxdWUgJiYgIXN0bXQtPmlzd2l0aG91dG92ZXJsYXBz KQogCQkJCQkJCWlkeF9lcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihpZHhfb3BmYW1pbHks CiAJCQkJCQkJCQkJCQkJCSAgIGlkeF9vcGNpbnR5cGUsCiAJCQkJCQkJCQkJCQkJCSAgIGlk eF9vcGNpbnR5cGUsCiAJCQkJCQkJCQkJCQkJCSAgIEJURXF1YWxTdHJhdGVneU51bWJlcik7 Ci0JCQkJCQllbHNlIGlmIChzdG10LT5leGNsdWRlT3BOYW1lcykKKwkJCQkJCWVsc2UgaWYg KGV4Y2x1c2lvbikKIAkJCQkJCQlpZHhfZXFvcCA9IGluZGV4SW5mby0+aWlfRXhjbHVzaW9u T3BzW2pdOwogCQkJCQkJQXNzZXJ0KGlkeF9lcW9wKTsKIApAQCAtMTA0Miw3ICsxMDU0LDcg QEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCQkJCQkJZm91bmQgPSB0cnVlOwogCQkJ CQkJCWJyZWFrOwogCQkJCQkJfQotCQkJCQkJZWxzZSBpZiAoc3RtdC0+ZXhjbHVkZU9wTmFt ZXMpCisJCQkJCQllbHNlIGlmIChleGNsdXNpb24pCiAJCQkJCQl7CiAJCQkJCQkJLyoKIAkJ CQkJCQkgKiBXZSBmb3VuZCBhIG1hdGNoLCBidXQgaXQncyBub3QgYW4gZXF1YWxpdHkKQEAg LTExODYsNiArMTE5OCw4IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQljb25zdHJf ZmxhZ3MgfD0gSU5ERVhfQ09OU1RSX0NSRUFURV9ERUZFUlJBQkxFOwogCWlmIChzdG10LT5p bml0ZGVmZXJyZWQpCiAJCWNvbnN0cl9mbGFncyB8PSBJTkRFWF9DT05TVFJfQ1JFQVRFX0lO SVRfREVGRVJSRUQ7CisJaWYgKHN0bXQtPmlzd2l0aG91dG92ZXJsYXBzKQorCQljb25zdHJf ZmxhZ3MgfD0gSU5ERVhfQ09OU1RSX0NSRUFURV9XSVRIT1VUX09WRVJMQVBTOwogCiAJaW5k ZXhSZWxhdGlvbklkID0KIAkJaW5kZXhfY3JlYXRlKHJlbCwgaW5kZXhSZWxhdGlvbk5hbWUs IGluZGV4UmVsYXRpb25JZCwgcGFyZW50SW5kZXhJZCwKQEAgLTE4NTAsNiArMTg2NCw3IEBA IENvbXB1dGVJbmRleEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZvLAogCQkJCSAgT2lkIGFj Y2Vzc01ldGhvZElkLAogCQkJCSAgYm9vbCBhbWNhbm9yZGVyLAogCQkJCSAgYm9vbCBpc2Nv bnN0cmFpbnQsCisJCQkJICBib29sIGlzd2l0aG91dG92ZXJsYXBzLAogCQkJCSAgT2lkIGRk bF91c2VyaWQsCiAJCQkJICBpbnQgZGRsX3NlY19jb250ZXh0LAogCQkJCSAgaW50ICpkZGxf c2F2ZV9uZXN0bGV2ZWwpCkBAIC0xODczLDYgKzE4ODgsMTQgQEAgQ29tcHV0ZUluZGV4QXR0 cnMoSW5kZXhJbmZvICppbmRleEluZm8sCiAJZWxzZQogCQluZXh0RXhjbE9wID0gTlVMTDsK IAorCS8qIGV4Y2x1c2lvbk9wTmFtZXMgY2FuIGJlIG5vbi1OSUwgaWYgd2UgYXJlIGNyZWF0 aW5nIGEgcGFydGl0aW9uICovCisJaWYgKGlzd2l0aG91dG92ZXJsYXBzICYmIGV4Y2x1c2lv bk9wTmFtZXMgPT0gTklMKQorCXsKKwkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25PcHMgPSBw YWxsb2NfYXJyYXkoT2lkLCBua2V5Y29scyk7CisJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9u UHJvY3MgPSBwYWxsb2NfYXJyYXkoT2lkLCBua2V5Y29scyk7CisJCWluZGV4SW5mby0+aWlf RXhjbHVzaW9uU3RyYXRzID0gcGFsbG9jX2FycmF5KHVpbnQxNiwgbmtleWNvbHMpOworCX0K KwogCWlmIChPaWRJc1ZhbGlkKGRkbF91c2VyaWQpKQogCQlHZXRVc2VySWRBbmRTZWNDb250 ZXh0KCZzYXZlX3VzZXJpZCwgJnNhdmVfc2VjX2NvbnRleHQpOwogCkBAIC0yMTQ5LDYgKzIx NzIsMzEgQEAgQ29tcHV0ZUluZGV4QXR0cnMoSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQlp bmRleEluZm8tPmlpX0V4Y2x1c2lvblN0cmF0c1thdHRuXSA9IHN0cmF0OwogCQkJbmV4dEV4 Y2xPcCA9IGxuZXh0KGV4Y2x1c2lvbk9wTmFtZXMsIG5leHRFeGNsT3ApOwogCQl9CisJCWVs c2UgaWYgKGlzd2l0aG91dG92ZXJsYXBzKQorCQl7CisJCQlTdHJhdGVneU51bWJlciBzdHJh dDsKKwkJCU9pZCBvcGlkOworCQkJY2hhciAqb3BuYW1lOworCisJCQlpZiAoYXR0biA9PSBu a2V5Y29scyAtIDEpCisJCQl7CisJCQkJc3RyYXQgPSBSVE92ZXJsYXBTdHJhdGVneU51bWJl cjsKKwkJCQlvcG5hbWUgPSAib3ZlcmxhcHMiOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJ CXN0cmF0ID0gUlRFcXVhbFN0cmF0ZWd5TnVtYmVyOworCQkJCW9wbmFtZSA9ICJlcXVhbHMi OworCQkJfQorCQkJR2V0T3BlcmF0b3JGcm9tV2VsbEtub3duU3RyYXRlZ3kob3BjbGFzc09p ZHNbYXR0bl0sCisJCQkJCQkJCQkJCSBhdHR0eXBlLAorCQkJCQkJCQkJCQkgb3BuYW1lLAor CQkJCQkJCQkJCQkgJm9waWQsCisJCQkJCQkJCQkJCSAmc3RyYXQpOworCQkJaW5kZXhJbmZv LT5paV9FeGNsdXNpb25PcHNbYXR0bl0gPSBvcGlkOworCQkJaW5kZXhJbmZvLT5paV9FeGNs dXNpb25Qcm9jc1thdHRuXSA9IGdldF9vcGNvZGUob3BpZCk7CisJCQlpbmRleEluZm8tPmlp X0V4Y2x1c2lvblN0cmF0c1thdHRuXSA9IHN0cmF0OworCQl9CiAKIAkJLyoKIAkJICogU2V0 IHVwIHRoZSBwZXItY29sdW1uIG9wdGlvbnMgKGluZG9wdGlvbiBmaWVsZCkuICBGb3Igbm93 LCB0aGlzIGlzCkBAIC0yMzc5LDYgKzI0MjcsODcgQEAgR2V0RGVmYXVsdE9wQ2xhc3MoT2lk IHR5cGVfaWQsIE9pZCBhbV9pZCkKIAlyZXR1cm4gSW52YWxpZE9pZDsKIH0KIAorLyoKKyAq IEdldE9wZXJhdG9yRnJvbVdlbGxLbm93blN0cmF0ZWd5CisgKgorICogb3BjbGFzcyAtIHRo ZSBvcGNsYXNzIHRvIHVzZQorICogYXR0dHlwZSAtIHRoZSB0eXBlIHRvIGFzayBhYm91dAor ICogb3BuYW1lIC0gdXNlZCB0byBidWlsZCBlcnJvciBtZXNzYWdlcworICogb3BpZCAtIGhv bGRzIHRoZSBvcGVyYXRvciB3ZSBmb3VuZAorICogc3RyYXQgLSBob2xkcyB0aGUgaW5wdXQg YW5kIG91dHB1dCBzdHJhdGVneSBudW1iZXIKKyAqCisgKiBGaW5kcyBhbiBvcGVyYXRvciBm cm9tIGEgIndlbGwta25vd24iIHN0cmF0ZWd5IG51bWJlci4KKyAqIFRoaXMgaXMgdXNlZCBm b3IgdGVtcG9yYWwgaW5kZXggY29uc3RyYWludHMKKyAqIChhbmQgb3RoZXIgdGVtcG9yYWwg ZmVhdHVyZXMpCisgKiB0byBsb29rIHVwIGVxdWFsaXR5IGFuZCBvdmVybGFwcyBvcGVyYXRv cnMsIHNpbmNlCisgKiB0aGUgc3RyYXRlZ3kgbnVtYmVycyBmb3Igbm9uLWJ0cmVlIGluZGV4 YW1zIG5lZWQgbm90CisgKiBmb2xsb3cgYW55IGZpeGVkIHNjaGVtZS4gV2UgYXNrIGFuIG9w Y2xhc3Mgc3VwcG9ydAorICogZnVuY3Rpb24gdG8gdHJhbnNsYXRlIGZyb20gdGhlIHdlbGwt a25vd24gbnVtYmVyCisgKiB0byB0aGUgaW50ZXJuYWwgdmFsdWUuIElmIHRoZSBmdW5jdGlv biBpc24ndCBkZWZpbmVkCisgKiBvciBpdCBnaXZlcyBubyByZXN1bHQsIHdlIHJldHVybiBJ bnZhbGlkU3RyYXRlZ3kuCisgKi8KK3ZvaWQKK0dldE9wZXJhdG9yRnJvbVdlbGxLbm93blN0 cmF0ZWd5KE9pZCBvcGNsYXNzLAorCQkJCQkJCQkgT2lkIGF0dHR5cGUsCisJCQkJCQkJCSBj b25zdCBjaGFyICpvcG5hbWUsCisJCQkJCQkJCSBPaWQgKm9waWQsCisJCQkJCQkJCSBTdHJh dGVneU51bWJlciAqc3RyYXQpCit7CisJT2lkIG9wZmFtaWx5OworCU9pZCBvcGNpbnR5cGU7 CisJU3RyYXRlZ3lOdW1iZXIgb3BzdHJhdCA9ICpzdHJhdDsKKworCSpvcGlkID0gSW52YWxp ZE9pZDsKKworCWlmIChnZXRfb3BjbGFzc19vcGZhbWlseV9hbmRfaW5wdXRfdHlwZShvcGNs YXNzLAorCQkJCQkJCQkJCQkmb3BmYW1pbHksCisJCQkJCQkJCQkJCSZvcGNpbnR5cGUpKQor CXsKKwkJLyoKKwkJICogQXNrIHRoZSBvcGNsYXNzIHRvIHRyYW5zbGF0ZSB0byBpdHMgaW50 ZXJuYWwgc3RyYXRudW0KKwkJICoKKwkJICogRm9yIG5vdyB3ZSBvbmx5IG5lZWQgR2lTVCBz dXBwb3J0LCBidXQgdGhpcyBjb3VsZCBzdXBwb3J0CisJCSAqIG90aGVyIGluZGV4YW1zIGlm IHdlIHdhbnRlZC4KKwkJICovCisJCSpzdHJhdCA9IEdpc3RUcmFuc2xhdGVTdHJhdG51bShv cGNsYXNzLCBvcHN0cmF0KTsKKwkJaWYgKCpzdHJhdCA9PSBJbnZhbGlkU3RyYXRlZ3kpCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpF Q1QpLAorCQkJCQkgZXJybXNnKCJubyAlcyBvcGVyYXRvciBmb3VuZCBmb3IgV0lUSE9VVCBP VkVSTEFQUyBjb25zdHJhaW50Iiwgb3BuYW1lKSwKKwkJCQkJIGVycmRldGFpbCgiQ291bGQg bm90IHRyYW5zbGF0ZSBzdHJhdGVneSBudW1iZXIgJXUgZm9yIG9wY2xhc3MgJWQuIiwKKwkJ CQkJCSBvcHN0cmF0LCBvcGNsYXNzKSwKKwkJCQkJIGVycmhpbnQoIkRlZmluZSBhIHN0cmF0 bnVtIHN1cHBvcnQgZnVuY3Rpb24gZm9yIHlvdXIgR2lTVCBvcGNsYXNzLiIpKSk7CisKKwkJ Km9waWQgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBvcGNpbnR5cGUsIG9wY2lu dHlwZSwgKnN0cmF0KTsKKwl9CisKKwlpZiAoIU9pZElzVmFsaWQoKm9waWQpKQorCXsKKwkJ SGVhcFR1cGxlCW9wZnR1cGxlOworCQlGb3JtX3BnX29wZmFtaWx5IG9wZmZvcm07CisKKwkJ LyoKKwkJICogYXR0cmlidXRlLT5vcGNsYXNzIG1pZ2h0IG5vdCBleHBsaWNpdGx5IG5hbWUg dGhlIG9wZmFtaWx5LAorCQkgKiBzbyBmZXRjaCB0aGUgbmFtZSBvZiB0aGUgc2VsZWN0ZWQg b3BmYW1pbHkgZm9yIHVzZSBpbiB0aGUKKwkJICogZXJyb3IgbWVzc2FnZS4KKwkJICovCisJ CW9wZnR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKE9QRkFNSUxZT0lELAorCQkJCQkJCQkgICBP YmplY3RJZEdldERhdHVtKG9wZmFtaWx5KSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZChv cGZ0dXBsZSkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3Bm YW1pbHkgJXUiLAorCQkJCSBvcGZhbWlseSk7CisJCW9wZmZvcm0gPSAoRm9ybV9wZ19vcGZh bWlseSkgR0VUU1RSVUNUKG9wZnR1cGxlKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1zZygibm8gJXMg b3BlcmF0b3IgZm91bmQgZm9yIFdJVEhPVVQgT1ZFUkxBUFMgY29uc3RyYWludCIsIG9wbmFt ZSksCisJCQkJIGVycmRldGFpbCgiVGhlcmUgbXVzdCBiZSBhbiAlcyBvcGVyYXRvciB3aXRo aW4gb3BmYW1pbHkgXCIlc1wiIGZvciB0eXBlIFwiJXNcIi4iLAorCQkJCQkJICAgb3BuYW1l LAorCQkJCQkJICAgTmFtZVN0cihvcGZmb3JtLT5vcGZuYW1lKSwKKwkJCQkJCSAgIGZvcm1h dF90eXBlX2JlKGF0dHR5cGUpKSkpOworCX0KK30KKwogLyoKICAqCW1ha2VPYmplY3ROYW1l KCkKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDJhNTZhNDM1N2M5Li5l ODYyMmI3YThlNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTEwMzM2LDYg KzEwMzM2LDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNlZChMaXN0ICoqd3F1ZXVlLCBDb25z dHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgY29uaXNs b2NhbCwJLyogaXNsb2NhbCAqLwogCQkJCQkJCQkJICBjb25pbmhjb3VudCwJLyogaW5oY291 bnQgKi8KIAkJCQkJCQkJCSAgY29ubm9pbmhlcml0LCAvKiBjb25Ob0luaGVyaXQgKi8KKwkJ CQkJCQkJCSAgZmFsc2UsCS8qIGNvbldpdGhvdXRPdmVybGFwcyAqLwogCQkJCQkJCQkJICBm YWxzZSk7CS8qIGlzX2ludGVybmFsICovCiAKIAlPYmplY3RBZGRyZXNzU2V0KGFkZHJlc3Ms IENvbnN0cmFpbnRSZWxhdGlvbklkLCBjb25zdHJPaWQpOwpAQCAtMTA2MzQsNiArMTA2MzUs NyBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50 ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgZmFsc2UsCiAJCQkJ CQkJCQkgIDEsCiAJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJICBmYWxzZSwJLyogY29u V2l0aG91dE92ZXJsYXBzICovCiAJCQkJCQkJCQkgIGZhbHNlKTsKIAogCQkJLyoKQEAgLTEx MTM5LDYgKzExMTQxLDcgQEAgQ2xvbmVGa1JlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIFJl bGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydFJlbCkKIAkJCQkJCQkJICBmYWxzZSwJ LyogaXNsb2NhbCAqLwogCQkJCQkJCQkgIDEsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJCSAg ZmFsc2UsCS8qIGNvbk5vSW5oZXJpdCAqLworCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25XaXRo b3V0T3ZlcmxhcHMgKi8KIAkJCQkJCQkJICB0cnVlKTsKIAogCQkvKiBTZXQgdXAgcGFydGl0 aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhlIG5ldyBjb25zdHJhaW50ICovCkBAIC0xNDU1Miw3 ICsxNDU1NSw4IEBAIFRyeVJldXNlSW5kZXgoT2lkIG9sZElkLCBJbmRleFN0bXQgKnN0bXQp CiAJaWYgKENoZWNrSW5kZXhDb21wYXRpYmxlKG9sZElkLAogCQkJCQkJCSBzdG10LT5hY2Nl c3NNZXRob2QsCiAJCQkJCQkJIHN0bXQtPmluZGV4UGFyYW1zLAotCQkJCQkJCSBzdG10LT5l eGNsdWRlT3BOYW1lcykpCisJCQkJCQkJIHN0bXQtPmV4Y2x1ZGVPcE5hbWVzLAorCQkJCQkJ CSBzdG10LT5pc3dpdGhvdXRvdmVybGFwcykpCiAJewogCQlSZWxhdGlvbglpcmVsID0gaW5k ZXhfb3BlbihvbGRJZCwgTm9Mb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCmluZGV4 IDA4ODBjYTUxZmIyLi5hN2M5MjQxNmY1NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwpA QCAtODQxLDYgKzg0MSw3IEBAIENyZWF0ZVRyaWdnZXJGaXJpbmdPbihDcmVhdGVUcmlnU3Rt dCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkJCQkJCSAgdHJ1ZSwg LyogaXNsb2NhbCAqLwogCQkJCQkJCQkJCQkgIDAsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJ CQkJCSAgdHJ1ZSwgLyogbm9pbmhlcml0ICovCisJCQkJCQkJCQkJCSAgZmFsc2UsIC8qIGNv bndpdGhvdXRvdmVybGFwcyAqLwogCQkJCQkJCQkJCQkgIGlzSW50ZXJuYWwpOwkvKiBpc19p bnRlcm5hbCAqLwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlw ZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKaW5kZXggMjdjYzE4 NmMxNmYuLmE0MDBmYjM5ZjY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90 eXBlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKQEAgLTM1 NDQsNiArMzU0NCw3IEBAIGRvbWFpbkFkZENvbnN0cmFpbnQoT2lkIGRvbWFpbk9pZCwgT2lk IGRvbWFpbk5hbWVzcGFjZSwgT2lkIGJhc2VUeXBlT2lkLAogCQkJCQkJCSAgdHJ1ZSwgLyog aXMgbG9jYWwgKi8KIAkJCQkJCQkgIDAsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJICBmYWxz ZSwJLyogY29ubm9pbmhlcml0ICovCisJCQkJCQkJICBmYWxzZSwJLyogY29ud2l0aG91dG92 ZXJsYXBzICovCiAJCQkJCQkJICBmYWxzZSk7CS8qIGlzX2ludGVybmFsICovCiAJaWYgKGNv bnN0ckFkZHIpCiAJCU9iamVjdEFkZHJlc3NTZXQoKmNvbnN0ckFkZHIsIENvbnN0cmFpbnRS ZWxhdGlvbklkLCBjY29pZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRm dW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCAyOTZiYTg0NTE4 Ny4uMDNmNjdiNjg1MDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNz LmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAtNzU2LDYgKzc1Niw3 IEBAIF9vdXRDb25zdHJhaW50KFN0cmluZ0luZm8gc3RyLCBjb25zdCBDb25zdHJhaW50ICpu b2RlKQogCQljYXNlIENPTlNUUl9QUklNQVJZOgogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZyhzdHIsICJQUklNQVJZX0tFWSIpOwogCQkJV1JJVEVfTk9ERV9GSUVMRChrZXlzKTsKKwkJ CVdSSVRFX0JPT0xfRklFTEQod2l0aG91dF9vdmVybGFwcyk7CiAJCQlXUklURV9OT0RFX0ZJ RUxEKGluY2x1ZGluZyk7CiAJCQlXUklURV9OT0RFX0ZJRUxEKG9wdGlvbnMpOwogCQkJV1JJ VEVfU1RSSU5HX0ZJRUxEKGluZGV4bmFtZSk7CkBAIC03NjgsNiArNzY5LDcgQEAgX291dENv bnN0cmFpbnQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IENvbnN0cmFpbnQgKm5vZGUpCiAJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKHN0ciwgIlVOSVFVRSIpOwogCQkJV1JJVEVfQk9PTF9G SUVMRChudWxsc19ub3RfZGlzdGluY3QpOwogCQkJV1JJVEVfTk9ERV9GSUVMRChrZXlzKTsK KwkJCVdSSVRFX0JPT0xfRklFTEQod2l0aG91dF9vdmVybGFwcyk7CiAJCQlXUklURV9OT0RF X0ZJRUxEKGluY2x1ZGluZyk7CiAJCQlXUklURV9OT0RFX0ZJRUxEKG9wdGlvbnMpOwogCQkJ V1JJVEVfU1RSSU5HX0ZJRUxEKGluZGV4bmFtZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9ub2Rlcy9yZWFkZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCmlu ZGV4IDE2MjRiMzQ1ODEyLi5jZmI1NTJmZGU3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv bm9kZXMvcmVhZGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMK QEAgLTQyNyw2ICs0MjcsNyBAQCBfcmVhZENvbnN0cmFpbnQodm9pZCkKIAogCQljYXNlIENP TlNUUl9QUklNQVJZOgogCQkJUkVBRF9OT0RFX0ZJRUxEKGtleXMpOworCQkJUkVBRF9CT09M X0ZJRUxEKHdpdGhvdXRfb3ZlcmxhcHMpOwogCQkJUkVBRF9OT0RFX0ZJRUxEKGluY2x1ZGlu Zyk7CiAJCQlSRUFEX05PREVfRklFTEQob3B0aW9ucyk7CiAJCQlSRUFEX1NUUklOR19GSUVM RChpbmRleG5hbWUpOwpAQCAtNDM4LDYgKzQzOSw3IEBAIF9yZWFkQ29uc3RyYWludCh2b2lk KQogCQljYXNlIENPTlNUUl9VTklRVUU6CiAJCQlSRUFEX0JPT0xfRklFTEQobnVsbHNfbm90 X2Rpc3RpbmN0KTsKIAkJCVJFQURfTk9ERV9GSUVMRChrZXlzKTsKKwkJCVJFQURfQk9PTF9G SUVMRCh3aXRob3V0X292ZXJsYXBzKTsKIAkJCVJFQURfTk9ERV9GSUVMRChpbmNsdWRpbmcp OwogCQkJUkVBRF9OT0RFX0ZJRUxEKG9wdGlvbnMpOwogCQkJUkVBRF9TVFJJTkdfRklFTEQo aW5kZXhuYW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDM0NjBmZWE1NmJhLi4xMzBmN2ZjN2Mz ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CkBAIC01MjksNyArNTI5LDcgQEAgc3RhdGljIE5vZGUgKm1h a2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5v ZGUgKnF1ZXJ5KTsKIAkJCQljb2x1bW5yZWYgaW5fZXhwciBoYXZpbmdfY2xhdXNlIGZ1bmNf dGFibGUgeG1sdGFibGUgYXJyYXlfZXhwcgogCQkJCU9wdFdoZXJlQ2xhdXNlIG9wZXJhdG9y X2RlZl9hcmcKICV0eXBlIDxsaXN0Pglyb3dzZnJvbV9pdGVtIHJvd3Nmcm9tX2xpc3Qgb3B0 X2NvbF9kZWZfbGlzdAotJXR5cGUgPGJvb2xlYW4+IG9wdF9vcmRpbmFsaXR5CisldHlwZSA8 Ym9vbGVhbj4gb3B0X29yZGluYWxpdHkgb3B0X3dpdGhvdXRfb3ZlcmxhcHMKICV0eXBlIDxs aXN0PglFeGNsdXNpb25Db25zdHJhaW50TGlzdCBFeGNsdXNpb25Db25zdHJhaW50RWxlbQog JXR5cGUgPGxpc3Q+CWZ1bmNfYXJnX2xpc3QgZnVuY19hcmdfbGlzdF9vcHQKICV0eXBlIDxu b2RlPglmdW5jX2FyZ19leHByCkBAIC00MTMzLDcgKzQxMzMsNyBAQCBDb25zdHJhaW50RWxl bToKIAkJCQkJbi0+aW5pdGlhbGx5X3ZhbGlkID0gdHJ1ZTsKIAkJCQkJJCQgPSAoTm9kZSAq KSBuOwogCQkJCX0KLQkJCXwgVU5JUVVFIG9wdF91bmlxdWVfbnVsbF90cmVhdG1lbnQgJygn IGNvbHVtbkxpc3QgJyknIG9wdF9jX2luY2x1ZGUgb3B0X2RlZmluaXRpb24gT3B0Q29uc1Rh YmxlU3BhY2UKKwkJCXwgVU5JUVVFIG9wdF91bmlxdWVfbnVsbF90cmVhdG1lbnQgJygnIGNv bHVtbkxpc3Qgb3B0X3dpdGhvdXRfb3ZlcmxhcHMgJyknIG9wdF9jX2luY2x1ZGUgb3B0X2Rl ZmluaXRpb24gT3B0Q29uc1RhYmxlU3BhY2UKIAkJCQlDb25zdHJhaW50QXR0cmlidXRlU3Bl YwogCQkJCXsKIAkJCQkJQ29uc3RyYWludCAqbiA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOwpA QCAtNDE0MiwxMSArNDE0MiwxMiBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJbi0+bG9jYXRp b24gPSBAMTsKIAkJCQkJbi0+bnVsbHNfbm90X2Rpc3RpbmN0ID0gISQyOwogCQkJCQluLT5r ZXlzID0gJDQ7Ci0JCQkJCW4tPmluY2x1ZGluZyA9ICQ2OwotCQkJCQluLT5vcHRpb25zID0g JDc7CisJCQkJCW4tPndpdGhvdXRfb3ZlcmxhcHMgPSAkNTsKKwkJCQkJbi0+aW5jbHVkaW5n ID0gJDc7CisJCQkJCW4tPm9wdGlvbnMgPSAkODsKIAkJCQkJbi0+aW5kZXhuYW1lID0gTlVM TDsKLQkJCQkJbi0+aW5kZXhzcGFjZSA9ICQ4OwotCQkJCQlwcm9jZXNzQ0FTYml0cygkOSwg QDksICJVTklRVUUiLAorCQkJCQluLT5pbmRleHNwYWNlID0gJDk7CisJCQkJCXByb2Nlc3ND QVNiaXRzKCQxMCwgQDEwLCAiVU5JUVVFIiwKIAkJCQkJCQkJICAgJm4tPmRlZmVycmFibGUs ICZuLT5pbml0ZGVmZXJyZWQsIE5VTEwsCiAJCQkJCQkJCSAgIE5VTEwsIHl5c2Nhbm5lcik7 CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAgLTQxNjcsNyArNDE2OCw3IEBAIENvbnN0cmFp bnRFbGVtOgogCQkJCQkJCQkgICBOVUxMLCB5eXNjYW5uZXIpOwogCQkJCQkkJCA9IChOb2Rl ICopIG47CiAJCQkJfQotCQkJfCBQUklNQVJZIEtFWSAnKCcgY29sdW1uTGlzdCAnKScgb3B0 X2NfaW5jbHVkZSBvcHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFjZQorCQkJfCBQUklN QVJZIEtFWSAnKCcgY29sdW1uTGlzdCBvcHRfd2l0aG91dF9vdmVybGFwcyAnKScgb3B0X2Nf aW5jbHVkZSBvcHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFjZQogCQkJCUNvbnN0cmFp bnRBdHRyaWJ1dGVTcGVjCiAJCQkJewogCQkJCQlDb25zdHJhaW50ICpuID0gbWFrZU5vZGUo Q29uc3RyYWludCk7CkBAIC00MTc1LDExICs0MTc2LDEyIEBAIENvbnN0cmFpbnRFbGVtOgog CQkJCQluLT5jb250eXBlID0gQ09OU1RSX1BSSU1BUlk7CiAJCQkJCW4tPmxvY2F0aW9uID0g QDE7CiAJCQkJCW4tPmtleXMgPSAkNDsKLQkJCQkJbi0+aW5jbHVkaW5nID0gJDY7Ci0JCQkJ CW4tPm9wdGlvbnMgPSAkNzsKKwkJCQkJbi0+d2l0aG91dF9vdmVybGFwcyA9ICQ1OworCQkJ CQluLT5pbmNsdWRpbmcgPSAkNzsKKwkJCQkJbi0+b3B0aW9ucyA9ICQ4OwogCQkJCQluLT5p bmRleG5hbWUgPSBOVUxMOwotCQkJCQluLT5pbmRleHNwYWNlID0gJDg7Ci0JCQkJCXByb2Nl c3NDQVNiaXRzKCQ5LCBAOSwgIlBSSU1BUlkgS0VZIiwKKwkJCQkJbi0+aW5kZXhzcGFjZSA9 ICQ5OworCQkJCQlwcm9jZXNzQ0FTYml0cygkMTAsIEAxMCwgIlBSSU1BUlkgS0VZIiwKIAkJ CQkJCQkJICAgJm4tPmRlZmVycmFibGUsICZuLT5pbml0ZGVmZXJyZWQsIE5VTEwsCiAJCQkJ CQkJCSAgIE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAgLTQy NDcsNiArNDI0OSwxMSBAQCBvcHRfbm9faW5oZXJpdDoJTk8gSU5IRVJJVAkJCQkJCQl7ICAk JCA9IHRydWU7IH0KIAkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyAgJCQgPSBmYWxzZTsgfQog CQk7CiAKK29wdF93aXRob3V0X292ZXJsYXBzOgorCQkJV0lUSE9VVCBPVkVSTEFQUwkJCQkJ CXsgJCQgPSB0cnVlOyB9CisJCQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IGZhbHNlOyB9 CisJOworCiBvcHRfY29sdW1uX2xpc3Q6CiAJCQknKCcgY29sdW1uTGlzdCAnKScJCQkJCQl7 ICQkID0gJDI7IH0KIAkJCXwgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gTklMOyB9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCBiMmQxZmE5ZDBkNi4uMDc3MmEwMjEw ZTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMTcxNiw2ICsxNzE2 LDcgQEAgZ2VuZXJhdGVDbG9uZWRJbmRleFN0bXQoUmFuZ2VWYXIgKmhlYXBSZWwsIFJlbGF0 aW9uIHNvdXJjZV9pZHgsCiAJaW5kZXgtPnVuaXF1ZSA9IGlkeHJlYy0+aW5kaXN1bmlxdWU7 CiAJaW5kZXgtPm51bGxzX25vdF9kaXN0aW5jdCA9IGlkeHJlYy0+aW5kbnVsbHNub3RkaXN0 aW5jdDsKIAlpbmRleC0+cHJpbWFyeSA9IGlkeHJlYy0+aW5kaXNwcmltYXJ5OworCWluZGV4 LT5pc3dpdGhvdXRvdmVybGFwcyA9IChpZHhyZWMtPmluZGlzcHJpbWFyeSB8fCBpZHhyZWMt PmluZGlzdW5pcXVlKSAmJiBpZHhyZWMtPmluZGlzZXhjbHVzaW9uOwogCWluZGV4LT50cmFu c2Zvcm1lZCA9IHRydWU7CS8qIGRvbid0IG5lZWQgdHJhbnNmb3JtSW5kZXhTdG10ICovCiAJ aW5kZXgtPmNvbmN1cnJlbnQgPSBmYWxzZTsKIAlpbmRleC0+aWZfbm90X2V4aXN0cyA9IGZh bHNlOwpAQCAtMTc2NSw3ICsxNzY2LDkgQEAgZ2VuZXJhdGVDbG9uZWRJbmRleFN0bXQoUmFu Z2VWYXIgKmhlYXBSZWwsIFJlbGF0aW9uIHNvdXJjZV9pZHgsCiAJCQkJaW50CQkJbkVsZW1z OwogCQkJCWludAkJCWk7CiAKLQkJCQlBc3NlcnQoY29ucmVjLT5jb250eXBlID09IENPTlNU UkFJTlRfRVhDTFVTSU9OKTsKKwkJCQlBc3NlcnQoY29ucmVjLT5jb250eXBlID09IENPTlNU UkFJTlRfRVhDTFVTSU9OIHx8CisJCQkJCQkoaW5kZXgtPmlzd2l0aG91dG92ZXJsYXBzICYm CisJCQkJCQkgKGNvbnJlYy0+Y29udHlwZSA9PSBDT05TVFJBSU5UX1BSSU1BUlkgfHwgY29u cmVjLT5jb250eXBlID09IENPTlNUUkFJTlRfVU5JUVVFKSkpOwogCQkJCS8qIEV4dHJhY3Qg b3BlcmF0b3IgT0lEcyBmcm9tIHRoZSBwZ19jb25zdHJhaW50IHR1cGxlICovCiAJCQkJZGF0 dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgaHRfY29uc3RyLAogCQkJ CQkJCQkJCQkgICBBbnVtX3BnX2NvbnN0cmFpbnRfY29uZXhjbG9wKTsKQEAgLTIzMDUsNiAr MjMwOCw3IEBAIHRyYW5zZm9ybUluZGV4Q29uc3RyYWludChDb25zdHJhaW50ICpjb25zdHJh aW50LCBDcmVhdGVTdG10Q29udGV4dCAqY3h0KQogCX0KIAlpbmRleC0+bnVsbHNfbm90X2Rp c3RpbmN0ID0gY29uc3RyYWludC0+bnVsbHNfbm90X2Rpc3RpbmN0OwogCWluZGV4LT5pc2Nv bnN0cmFpbnQgPSB0cnVlOworCWluZGV4LT5pc3dpdGhvdXRvdmVybGFwcyA9IGNvbnN0cmFp bnQtPndpdGhvdXRfb3ZlcmxhcHM7CiAJaW5kZXgtPmRlZmVycmFibGUgPSBjb25zdHJhaW50 LT5kZWZlcnJhYmxlOwogCWluZGV4LT5pbml0ZGVmZXJyZWQgPSBjb25zdHJhaW50LT5pbml0 ZGVmZXJyZWQ7CiAKQEAgLTIzOTcsNiArMjQwMSwxMSBAQCB0cmFuc2Zvcm1JbmRleENvbnN0 cmFpbnQoQ29uc3RyYWludCAqY29uc3RyYWludCwgQ3JlYXRlU3RtdENvbnRleHQgKmN4dCkK IAkJCQkJIGVycm1zZygiaW5kZXggXCIlc1wiIGlzIG5vdCB2YWxpZCIsIGluZGV4X25hbWUp LAogCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBjb25zdHJhaW50LT5s b2NhdGlvbikpKTsKIAorCQkvKgorCQkgKiBUb2RheSB3ZSBmb3JiaWQgbm9uLXVuaXF1ZSBp bmRleGVzLCBidXQgd2UgY291bGQgcGVybWl0IEdpU1QKKwkJICogaW5kZXhlcyB3aG9zZSBs YXN0IGVudHJ5IGlzIGEgcmFuZ2UgdHlwZSBhbmQgdXNlIHRoYXQgdG8gY3JlYXRlIGEKKwkJ ICogV0lUSE9VVCBPVkVSTEFQUyBjb25zdHJhaW50IChpLmUuIGEgdGVtcG9yYWwgY29uc3Ry YWludCkuCisJCSAqLwogCQlpZiAoIWluZGV4X2Zvcm0tPmluZGlzdW5pcXVlKQogCQkJZXJl cG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSks CkBAIC0yNjczLDYgKzI2ODIsMjMgQEAgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0 cmFpbnQgKmNvbnN0cmFpbnQsIENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpCiAJCQkJbm90bnVs bGNtZHMgPSBsYXBwZW5kKG5vdG51bGxjbWRzLCBub3RudWxsY21kKTsKIAkJCX0KIAkJfQor CisJCWlmIChjb25zdHJhaW50LT53aXRob3V0X292ZXJsYXBzKQorCQl7CisJCQkvKgorCQkJ ICogVGhpcyBlbmZvcmNlcyB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBlcXVhbGl0eSBj b2x1bW4gYmVzaWRlcworCQkJICogdGhlIFdJVEhPVVQgT1ZFUkxBUFMgY29sdW1ucy4gIFRo aXMgaXMgcGVyIFNRTCBzdGFuZGFyZC4gIFhYWAorCQkJICogRG8gd2UgbmVlZCB0aGlzPwor CQkJICovCisJCQlpZiAobGlzdF9sZW5ndGgoY29uc3RyYWludC0+a2V5cykgPCAyKQorCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkJCWVycm1zZygiY29uc3RyYWludCB1c2luZyBXSVRIT1VUIE9WRVJMQVBTIG5lZWRz IGF0IGxlYXN0IHR3byBjb2x1bW5zIikpOworCisJCQkvKiBXSVRIT1VUIE9WRVJMQVBTIHJl cXVpcmVzIGEgR2lTVCBpbmRleCAqLworCQkJaW5kZXgtPmFjY2Vzc01ldGhvZCA9ICJnaXN0 IjsKKwkJfQorCiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRl eCAwYjJhMTY0MDU3Yi4uYjYyNWY0NzFhODQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMKQEAgLTIzODAsNiArMjM4MCw4IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtl cihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCQkJCQkJCQkgQW51 bV9wZ19jb25zdHJhaW50X2NvbmtleSk7CiAKIAkJCQlrZXlhdHRzID0gZGVjb21waWxlX2Nv bHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCAmYnVmKTsKKwkJCQlp ZiAoY29uRm9ybS0+Y29ud2l0aG91dG92ZXJsYXBzKQorCQkJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKCZidWYsICIgV0lUSE9VVCBPVkVSTEFQUyIpOwogCiAJCQkJYXBwZW5kU3RyaW5n SW5mb0NoYXIoJmJ1ZiwgJyknKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMK aW5kZXggMjAyNzNmMGJlMTYuLjY2ZTE5YjlmNmRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3JlbGNhY2hlLmMKQEAgLTU1NjgsMTEgKzU1NjgsMTQgQEAgUmVsYXRpb25HZXRJZGVudGl0 eUtleUJpdG1hcChSZWxhdGlvbiByZWxhdGlvbikKIC8qCiAgKiBSZWxhdGlvbkdldEV4Y2x1 c2lvbkluZm8gLS0gZ2V0IGluZm8gYWJvdXQgaW5kZXgncyBleGNsdXNpb24gY29uc3RyYWlu dAogICoKLSAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGZvciBhbiBpbmRleCB0aGF0 IGlzIGtub3duIHRvIGhhdmUgYW4KLSAqIGFzc29jaWF0ZWQgZXhjbHVzaW9uIGNvbnN0cmFp bnQuICBJdCByZXR1cm5zIGFycmF5cyAocGFsbG9jJ2QgaW4gY2FsbGVyJ3MKLSAqIGNvbnRl eHQpIG9mIHRoZSBleGNsdXNpb24gb3BlcmF0b3IgT0lEcywgdGhlaXIgdW5kZXJseWluZyBm dW5jdGlvbnMnCi0gKiBPSURzLCBhbmQgdGhlaXIgc3RyYXRlZ3kgbnVtYmVycyBpbiB0aGUg aW5kZXgncyBvcGNsYXNzZXMuICBXZSBjYWNoZQotICogYWxsIHRoaXMgaW5mb3JtYXRpb24g c2luY2UgaXQgcmVxdWlyZXMgYSBmYWlyIGFtb3VudCBvZiB3b3JrIHRvIGdldC4KKyAqIFRo aXMgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGZvciBhbiBpbmRleCB0aGF0IGlzIGtub3duIHRv IGhhdmUgYW4gYXNzb2NpYXRlZAorICogZXhjbHVzaW9uIGNvbnN0cmFpbnQgb3IgcHJpbWFy eSBrZXkvdW5pcXVlIGNvbnN0cmFpbnQgdXNpbmcgV0lUSE9VVAorICogT1ZFUkxBUFMuCisK KyAqIEl0IHJldHVybnMgYXJyYXlzIChwYWxsb2MnZCBpbiBjYWxsZXIncyBjb250ZXh0KSBv ZiB0aGUgZXhjbHVzaW9uIG9wZXJhdG9yCisgKiBPSURzLCB0aGVpciB1bmRlcmx5aW5nIGZ1 bmN0aW9ucycgT0lEcywgYW5kIHRoZWlyIHN0cmF0ZWd5IG51bWJlcnMgaW4gdGhlCisgKiBp bmRleCdzIG9wY2xhc3Nlcy4gIFdlIGNhY2hlIGFsbCB0aGlzIGluZm9ybWF0aW9uIHNpbmNl IGl0IHJlcXVpcmVzIGEgZmFpcgorICogYW1vdW50IG9mIHdvcmsgdG8gZ2V0LgogICovCiB2 b2lkCiBSZWxhdGlvbkdldEV4Y2x1c2lvbkluZm8oUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwK QEAgLTU2MzYsNyArNTYzOSwxMCBAQCBSZWxhdGlvbkdldEV4Y2x1c2lvbkluZm8oUmVsYXRp b24gaW5kZXhSZWxhdGlvbiwKIAkJaW50CQkJbmVsZW07CiAKIAkJLyogV2Ugd2FudCB0aGUg ZXhjbHVzaW9uIGNvbnN0cmFpbnQgb3duaW5nIHRoZSBpbmRleCAqLwotCQlpZiAoY29uZm9y bS0+Y29udHlwZSAhPSBDT05TVFJBSU5UX0VYQ0xVU0lPTiB8fAorCQlpZiAoKGNvbmZvcm0t PmNvbnR5cGUgIT0gQ09OU1RSQUlOVF9FWENMVVNJT04gJiYKKwkJCQkJIShjb25mb3JtLT5j b253aXRob3V0b3ZlcmxhcHMgJiYgKAorCQkJCQkJCWNvbmZvcm0tPmNvbnR5cGUgPT0gQ09O U1RSQUlOVF9QUklNQVJZCisJCQkJCQkJfHwgY29uZm9ybS0+Y29udHlwZSA9PSBDT05TVFJB SU5UX1VOSVFVRSkpKSB8fAogCQkJY29uZm9ybS0+Y29uaW5kaWQgIT0gUmVsYXRpb25HZXRS ZWxpZChpbmRleFJlbGF0aW9uKSkKIAkJCWNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRl eCBiYzIwYTAyNWNlNC4uYTE5NDQzYmVjZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNzIzMyw2 ICs3MjMzLDcgQEAgZ2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5m b1tdLCBpbnQgbnVtVGFibGVzKQogCQkJCWlfY29ubmFtZSwKIAkJCQlpX2NvbmRlZmVycmFi bGUsCiAJCQkJaV9jb25kZWZlcnJlZCwKKwkJCQlpX2NvbndpdGhvdXRvdmVybGFwcywKIAkJ CQlpX2NvbnRhYmxlb2lkLAogCQkJCWlfY29ub2lkLAogCQkJCWlfY29uZGVmLApAQCAtNzMx NCwxMCArNzMxNSwxNyBAQCBnZXRJbmRleGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0 YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+ PSAxNTAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCSAiaS5p bmRudWxsc25vdGRpc3RpbmN0ICIpOworCQkJCQkJCSAiaS5pbmRudWxsc25vdGRpc3RpbmN0 LCAiKTsKIAllbHNlCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCSAi ZmFsc2UgQVMgaW5kbnVsbHNub3RkaXN0aW5jdCAiKTsKKwkJCQkJCQkgImZhbHNlIEFTIGlu ZG51bGxzbm90ZGlzdGluY3QsICIpOworCisJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0g MTcwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgImMuY29u d2l0aG91dG92ZXJsYXBzICIpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksCisJCQkJCQkJICJOVUxMIEFTIGNvbndpdGhvdXRvdmVybGFwcyAiKTsKIAogCS8qCiAJ ICogVGhlIHBvaW50IG9mIHRoZSBtZXNzeS1sb29raW5nIG91dGVyIGpvaW4gaXMgdG8gZmlu ZCBhIGNvbnN0cmFpbnQgdGhhdApAQCAtNzM4NSw2ICs3MzkzLDcgQEAgZ2V0SW5kZXhlcyhB cmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCWlf Y29ubmFtZSA9IFBRZm51bWJlcihyZXMsICJjb25uYW1lIik7CiAJaV9jb25kZWZlcnJhYmxl ID0gUFFmbnVtYmVyKHJlcywgImNvbmRlZmVycmFibGUiKTsKIAlpX2NvbmRlZmVycmVkID0g UFFmbnVtYmVyKHJlcywgImNvbmRlZmVycmVkIik7CisJaV9jb253aXRob3V0b3ZlcmxhcHMg PSBQUWZudW1iZXIocmVzLCAiY29ud2l0aG91dG92ZXJsYXBzIik7CiAJaV9jb250YWJsZW9p ZCA9IFBRZm51bWJlcihyZXMsICJjb250YWJsZW9pZCIpOwogCWlfY29ub2lkID0gUFFmbnVt YmVyKHJlcywgImNvbm9pZCIpOwogCWlfY29uZGVmID0gUFFmbnVtYmVyKHJlcywgImNvbmRl ZiIpOwpAQCAtNzQ5Miw2ICs3NTAxLDcgQEAgZ2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBU YWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQkJCWNvbnN0cmluZm8tPmNv bmluZGV4ID0gaW5keGluZm9bal0uZG9iai5kdW1wSWQ7CiAJCQkJY29uc3RyaW5mby0+Y29u ZGVmZXJyYWJsZSA9ICooUFFnZXR2YWx1ZShyZXMsIGosIGlfY29uZGVmZXJyYWJsZSkpID09 ICd0JzsKIAkJCQljb25zdHJpbmZvLT5jb25kZWZlcnJlZCA9ICooUFFnZXR2YWx1ZShyZXMs IGosIGlfY29uZGVmZXJyZWQpKSA9PSAndCc7CisJCQkJY29uc3RyaW5mby0+Y29ud2l0aG91 dG92ZXJsYXBzID0gKihQUWdldHZhbHVlKHJlcywgaiwgaV9jb253aXRob3V0b3ZlcmxhcHMp KSA9PSAndCc7CiAJCQkJY29uc3RyaW5mby0+Y29uaXNsb2NhbCA9IHRydWU7CiAJCQkJY29u c3RyaW5mby0+c2VwYXJhdGUgPSB0cnVlOwogCkBAIC0xNzEyOSw2ICsxNzEzOSw4IEBAIGR1 bXBDb25zdHJhaW50KEFyY2hpdmUgKmZvdXQsIGNvbnN0IENvbnN0cmFpbnRJbmZvICpjb25p bmZvKQogCQkJCQkJCQkgIChrID09IDApID8gIiIgOiAiLCAiLAogCQkJCQkJCQkgIGZtdElk KGF0dG5hbWUpKTsKIAkJCX0KKwkJCWlmIChjb25pbmZvLT5jb253aXRob3V0b3ZlcmxhcHMp CisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIiBXSVRIT1VUIE9WRVJMQVBTIik7CiAK IAkJCWlmIChpbmR4aW5mby0+aW5kbmtleWF0dHJzIDwgaW5keGluZm8tPmluZG5hdHRycykK IAkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiKSBJTkNMVURFICgiKTsKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5oCmluZGV4IGYwNzcyZDIxNTc5Li5mNTIzYzNhNTkwZCAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBA IC00NzksNiArNDc5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2NvbnN0cmFpbnRJbmZvCiAJRHVt cElkCQljb25pbmRleDsJCS8qIGlkZW50aWZpZXMgYXNzb2NpYXRlZCBpbmRleCBpZiBhbnkg Ki8KIAlib29sCQljb25kZWZlcnJhYmxlOwkvKiB0cnVlIGlmIGNvbnN0cmFpbnQgaXMgREVG RVJSQUJMRSAqLwogCWJvb2wJCWNvbmRlZmVycmVkOwkvKiB0cnVlIGlmIGNvbnN0cmFpbnQg aXMgSU5JVElBTExZIERFRkVSUkVEICovCisJYm9vbAkJY29ud2l0aG91dG92ZXJsYXBzOwkv KiB0cnVlIGlmIHRoZSBjb25zdHJhaW50IGlzIFdJVEhPVVQgT1ZFUkxBUFMgKi8KIAlib29s CQljb25pc2xvY2FsOwkJLyogdHJ1ZSBpZiBjb25zdHJhaW50IGhhcyBsb2NhbCBkZWZpbml0 aW9uICovCiAJYm9vbAkJc2VwYXJhdGU7CQkvKiB0cnVlIGlmIG11c3QgZHVtcCBhcyBzZXBh cmF0ZSBpdGVtICovCiB9IENvbnN0cmFpbnRJbmZvOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVt cC5wbAppbmRleCAzOTEyZGJmNDgxYS4uNGE0ZDgxYzRkOWYgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAw Ml9wZ19kdW1wLnBsCkBAIC0xMDE1LDYgKzEwMTUsNDYgQEAgbXkgJXRlc3RzID0gKAogCQl9 LAogCX0sCiAKKwknQ09OU1RSQUlOVCBQUklNQVJZIEtFWSAvIFdJVEhPVVQgT1ZFUkxBUFMn ID0+IHsKKwkJY3JlYXRlX3NxbCAgPT4gJ0NSRUFURSBUQUJMRSBkdW1wX3Rlc3QudGVzdF90 YWJsZV90cGsgKAorCQkJCQkJCWNvbDEgaW50NHJhbmdlLAorCQkJCQkJCWNvbDIgdHN0enJh bmdlLAorCQkJCQkJCUNPTlNUUkFJTlQgdGVzdF90YWJsZV90cGtfcGtleSBQUklNQVJZIEtF WSAoY29sMSwgY29sMiBXSVRIT1VUIE9WRVJMQVBTKSk7JywKKwkJcmVnZXhwID0+IHFyL14K KwkJCVxRQUxURVIgVEFCTEUgT05MWSBkdW1wX3Rlc3QudGVzdF90YWJsZV90cGtcRSBcbl5c cysKKwkJCVxRQUREIENPTlNUUkFJTlQgdGVzdF90YWJsZV90cGtfcGtleSBQUklNQVJZIEtF WSAoY29sMSwgY29sMiBXSVRIT1VUIE9WRVJMQVBTKTtcRQorCQkJL3htLAorCQlsaWtlID0+ IHsKKwkJCSVmdWxsX3J1bnMsCisJCQklZHVtcF90ZXN0X3NjaGVtYV9ydW5zLAorCQkJc2Vj dGlvbl9wb3N0X2RhdGEgID0+IDEsCisJCX0sCisJCXVubGlrZSA9PiB7CisJCQlleGNsdWRl X2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwKKwkJCW9ubHlfZHVtcF9tZWFzdXJlbWVudCAgICA9 PiAxLAorCQl9LAorCX0sCisKKwknQ09OU1RSQUlOVCBVTklRVUUgLyBXSVRIT1VUIE9WRVJM QVBTJyA9PiB7CisJCWNyZWF0ZV9zcWwgID0+ICdDUkVBVEUgVEFCTEUgZHVtcF90ZXN0LnRl c3RfdGFibGVfdHVxICgKKwkJCQkJCQljb2wxIGludDRyYW5nZSwKKwkJCQkJCQljb2wyIHRz dHpyYW5nZSwKKwkJCQkJCQlDT05TVFJBSU5UIHRlc3RfdGFibGVfdHVxX3VxIFVOSVFVRSAo Y29sMSwgY29sMiBXSVRIT1VUIE9WRVJMQVBTKSk7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJ CVxRQUxURVIgVEFCTEUgT05MWSBkdW1wX3Rlc3QudGVzdF90YWJsZV90dXFcRSBcbl5ccysK KwkJCVxRQUREIENPTlNUUkFJTlQgdGVzdF90YWJsZV90dXFfdXEgVU5JUVVFIChjb2wxLCBj b2wyIFdJVEhPVVQgT1ZFUkxBUFMpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geworCQkJJWZ1 bGxfcnVucywKKwkJCSVkdW1wX3Rlc3Rfc2NoZW1hX3J1bnMsCisJCQlzZWN0aW9uX3Bvc3Rf ZGF0YSAgPT4gMSwKKwkJfSwKKwkJdW5saWtlID0+IHsKKwkJCWV4Y2x1ZGVfZHVtcF90ZXN0 X3NjaGVtYSA9PiAxLAorCQkJb25seV9kdW1wX21lYXN1cmVtZW50ICAgID0+IDEsCisJCX0s CisJfSwKKwogCSdBTFRFUiBUQUJMRSAocGFydGl0aW9uZWQpIEFERCBDT05TVFJBSU5UIC4u LiBGT1JFSUdOIEtFWScgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNCwKIAkJY3JlYXRlX3Nx bCA9PiAnQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC50ZXN0X3RhYmxlX2ZrICgKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMK aW5kZXggMzdmOTUxNjMyMDEuLjNmOGJmZjU5NTQ4IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMjM3OSw2 ICsyMzc5LDEwIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVt YW5hbWUsCiAJCQllbHNlCiAJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiwgZmFs c2UgQVMgaW5kaXNyZXBsaWRlbnQiKTsKIAkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYs ICIsIGMyLnJlbHRhYmxlc3BhY2UiKTsKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE3MDAw MCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLCBjb24uY29ud2l0aG91dG92 ZXJsYXBzIik7CisJCQllbHNlCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiwg ZmFsc2UgQVMgY29ud2l0aG91dG92ZXJsYXBzIik7CiAJCQlhcHBlbmRQUUV4cEJ1ZmZlcigm YnVmLAogCQkJCQkJCSAgIlxuRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFs b2cucGdfY2xhc3MgYzIsIHBnX2NhdGFsb2cucGdfaW5kZXggaVxuIgogCQkJCQkJCSAgIiAg TEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBjb24gT04gKGNvbnJlbGlkID0g aS5pbmRyZWxpZCBBTkQgY29uaW5kaWQgPSBpLmluZGV4cmVsaWQgQU5EIGNvbnR5cGUgSU4g KCdwJywndScsJ3gnKSlcbiIKQEAgLTI0MDAsOCArMjQwNCwxMiBAQCBkZXNjcmliZU9uZVRh YmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCQlwcmludGZQUUV4cEJ1 ZmZlcigmYnVmLCAiICAgIFwiJXNcIiIsCiAJCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0 LCBpLCAwKSk7CiAKLQkJCQkJLyogSWYgZXhjbHVzaW9uIGNvbnN0cmFpbnQsIHByaW50IHRo ZSBjb25zdHJhaW50ZGVmICovCi0JCQkJCWlmIChzdHJjbXAoUFFnZXR2YWx1ZShyZXN1bHQs IGksIDcpLCAieCIpID09IDApCisJCQkJCS8qCisJCQkJCSAqIElmIGV4Y2x1c2lvbiBjb25z dHJhaW50IG9yIFBLL1VOSVFVRSBjb25zdHJhaW50IFdJVEhPVVQKKwkJCQkJICogT1ZFUkxB UFMsIHByaW50IHRoZSBjb25zdHJhaW50ZGVmCisJCQkJCSAqLworCQkJCQlpZiAoc3RyY21w KFBRZ2V0dmFsdWUocmVzdWx0LCBpLCA3KSwgIngiKSA9PSAwIHx8CisJCQkJCQkJc3RyY21w KFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAxMiksICJ0IikgPT0gMCkKIAkJCQkJewogCQkJCQkJ YXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIiAlcyIsCiAJCQkJCQkJCQkJICBQUWdldHZhbHVl KHJlc3VsdCwgaSwgNikpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3Qu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0LmgKaW5kZXggZTdjZWQxOGE1YmEuLjIyZGQw NGMxNDE4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdC5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9naXN0LmgKQEAgLTE3LDYgKzE3LDcgQEAKICNkZWZpbmUgR0lT VF9ICiAKICNpbmNsdWRlICJhY2Nlc3MvaXR1cC5oIgorI2luY2x1ZGUgImFjY2Vzcy9zdHJh dG51bS5oIgogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAiYWNjZXNz L3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKQEAgLTI0Niw0ICsyNDcs NiBAQCB0eXBlZGVmIHN0cnVjdAogCWRvIHsgKGUpLmtleSA9IChrKTsgKGUpLnJlbCA9IChy KTsgKGUpLnBhZ2UgPSAocGcpOyBcCiAJCSAoZSkub2Zmc2V0ID0gKG8pOyAoZSkubGVhZmtl eSA9IChsKTsgfSB3aGlsZSAoMCkKIAorZXh0ZXJuIFN0cmF0ZWd5TnVtYmVyIEdpc3RUcmFu c2xhdGVTdHJhdG51bShPaWQgb3BjbGFzcywgU3RyYXRlZ3lOdW1iZXIgc3RyYXQpOworCiAj ZW5kaWYJCQkJCQkJLyogR0lTVF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKaW5kZXggOTlkYWI1 OTQwYmMuLjJlZjg1MTJkYmZmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2lu ZGV4LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCkBAIC05Miw2ICs5Miw3 IEBAIGV4dGVybiBPaWQJaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICNk ZWZpbmUJSU5ERVhfQ09OU1RSX0NSRUFURV9JTklUX0RFRkVSUkVECSgxIDw8IDIpCiAjZGVm aW5lCUlOREVYX0NPTlNUUl9DUkVBVEVfVVBEQVRFX0lOREVYCSgxIDw8IDMpCiAjZGVmaW5l CUlOREVYX0NPTlNUUl9DUkVBVEVfUkVNT1ZFX09MRF9ERVBTCSgxIDw8IDQpCisjZGVmaW5l CUlOREVYX0NPTlNUUl9DUkVBVEVfV0lUSE9VVF9PVkVSTEFQUyAoMSA8PCA1KQogCiBleHRl cm4gT2lkCWluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAJCQkJCQkJCQkJICAgT2lkIG9sZEluZGV4SWQsCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfY29uc3RyYWludC5oCmluZGV4IGQ3OTQzMmUxNDJiLi44ZmQ3NmE5NGQ3OCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgKKysrIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgKQEAgLTEwNyw2ICsxMDcsMTIgQEAgQ0FU QUxPRyhwZ19jb25zdHJhaW50LDI2MDYsQ29uc3RyYWludFJlbGF0aW9uSWQpCiAJLyogSGFz IGEgbG9jYWwgZGVmaW5pdGlvbiBhbmQgY2Fubm90IGJlIGluaGVyaXRlZCAqLwogCWJvb2wJ CWNvbm5vaW5oZXJpdDsKIAorCS8qCisJICogRm9yIHByaW1hcnkga2V5cyBhbmQgdW5pcXVl IGNvbnN0cmFpbnRzLCBzaWduaWZpZXMgdGhlIGxhc3QgY29sdW1uIHVzZXMKKwkgKiBvdmVy bGFwcyBpbnN0ZWFkIG9mIGVxdWFscy4KKwkgKi8KKwlib29sCQljb253aXRob3V0b3Zlcmxh cHM7CisKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVs ZHMgc3RhcnQgaGVyZSAqLwogCiAJLyoKQEAgLTE0Niw3ICsxNTIsOCBAQCBDQVRBTE9HKHBn X2NvbnN0cmFpbnQsMjYwNixDb25zdHJhaW50UmVsYXRpb25JZCkKIAogCS8qCiAJICogSWYg YW4gZXhjbHVzaW9uIGNvbnN0cmFpbnQsIHRoZSBPSURzIG9mIHRoZSBleGNsdXNpb24gb3Bl cmF0b3JzIGZvcgotCSAqIGVhY2ggY29sdW1uIG9mIHRoZSBjb25zdHJhaW50CisJICogZWFj aCBjb2x1bW4gb2YgdGhlIGNvbnN0cmFpbnQuICBBbHNvIHNldCBmb3IgdW5pcXVlIGNvbnN0 cmFpbnRzL3ByaW1hcnkKKwkgKiBrZXlzIHVzaW5nIFdJVEhPVVQgT1ZFUkxBUFMuCiAJICov CiAJT2lkCQkJY29uZXhjbG9wWzFdIEJLSV9MT09LVVAocGdfb3BlcmF0b3IpOwogCkBAIC0y MzYsNiArMjQzLDcgQEAgZXh0ZXJuIE9pZAlDcmVhdGVDb25zdHJhaW50RW50cnkoY29uc3Qg Y2hhciAqY29uc3RyYWludE5hbWUsCiAJCQkJCQkJCSAgYm9vbCBjb25Jc0xvY2FsLAogCQkJ CQkJCQkgIGludCBjb25JbmhDb3VudCwKIAkJCQkJCQkJICBib29sIGNvbk5vSW5oZXJpdCwK KwkJCQkJCQkJICBib29sIGNvbldpdGhvdXRPdmVybGFwcywKIAkJCQkJCQkJICBib29sIGlz X2ludGVybmFsKTsKIAogZXh0ZXJuIGJvb2wgQ29uc3RyYWludE5hbWVJc1VzZWQoQ29uc3Ry YWludENhdGVnb3J5IGNvbkNhdCwgT2lkIG9iaklkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvZGVmcmVtLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaApp bmRleCAyOWM1MTFlMzE5Ni4uNDM1MmE0Mzg4OTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2RlZnJlbS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5o CkBAIC0xNCw2ICsxNCw3IEBACiAjaWZuZGVmIERFRlJFTV9ICiAjZGVmaW5lIERFRlJFTV9I CiAKKyNpbmNsdWRlICJhY2Nlc3Mvc3RyYXRudW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL29i amVjdGFkZHJlc3MuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJhbXMuaCIKICNpbmNsdWRlICJw YXJzZXIvcGFyc2Vfbm9kZS5oIgpAQCAtNDQsMTAgKzQ1LDE0IEBAIGV4dGVybiBjaGFyICpD aG9vc2VSZWxhdGlvbk5hbWUoY29uc3QgY2hhciAqbmFtZTEsIGNvbnN0IGNoYXIgKm5hbWUy LAogZXh0ZXJuIGJvb2wgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCQkJCQkJ CQkgY29uc3QgY2hhciAqYWNjZXNzTWV0aG9kTmFtZSwKIAkJCQkJCQkJIGNvbnN0IExpc3Qg KmF0dHJpYnV0ZUxpc3QsCi0JCQkJCQkJCSBjb25zdCBMaXN0ICpleGNsdXNpb25PcE5hbWVz KTsKKwkJCQkJCQkJIGNvbnN0IExpc3QgKmV4Y2x1c2lvbk9wTmFtZXMsCisJCQkJCQkJCSBi b29sIGlzV2l0aG91dE92ZXJsYXBzKTsKIGV4dGVybiBPaWQJR2V0RGVmYXVsdE9wQ2xhc3Mo T2lkIHR5cGVfaWQsIE9pZCBhbV9pZCk7CiBleHRlcm4gT2lkCVJlc29sdmVPcENsYXNzKGNv bnN0IExpc3QgKm9wY2xhc3MsIE9pZCBhdHRyVHlwZSwKIAkJCQkJCSAgIGNvbnN0IGNoYXIg KmFjY2Vzc01ldGhvZE5hbWUsIE9pZCBhY2Nlc3NNZXRob2RJZCk7CitleHRlcm4gdm9pZCBH ZXRPcGVyYXRvckZyb21XZWxsS25vd25TdHJhdGVneShPaWQgb3BjbGFzcywgT2lkIGF0dHR5 cGUsCisJCQkJCQkJCQkJCSBjb25zdCBjaGFyICpvcG5hbWUsIE9pZCAqb3BpZCwKKwkJCQkJ CQkJCQkJIFN0cmF0ZWd5TnVtYmVyICpzdHJhdCk7CiAKIC8qIGNvbW1hbmRzL2Z1bmN0aW9u Y21kcy5jICovCiBleHRlcm4gT2JqZWN0QWRkcmVzcyBDcmVhdGVGdW5jdGlvbihQYXJzZVN0 YXRlICpwc3RhdGUsIENyZWF0ZUZ1bmN0aW9uU3RtdCAqc3RtdCk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmgKaW5kZXggYjMxODFmMzRhZWUuLjQ3NmQ1NWRkMjQwIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCkBAIC0yNTkwLDYgKzI1OTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb25z dHJhaW50CiAJYm9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OyAvKiBudWxsIHRyZWF0bWVudCBm b3IgVU5JUVVFIGNvbnN0cmFpbnRzICovCiAJTGlzdAkgICAqa2V5czsJCQkvKiBTdHJpbmcg bm9kZXMgbmFtaW5nIHJlZmVyZW5jZWQga2V5CiAJCQkJCQkJCSAqIGNvbHVtbihzKTsgYWxz byB1c2VkIGZvciBOT1QgTlVMTCAqLworCWJvb2wJCXdpdGhvdXRfb3ZlcmxhcHM7CS8qIFdJ VEhPVVQgT1ZFUkxBUFMgc3BlY2lmaWVkICovCiAJTGlzdAkgICAqaW5jbHVkaW5nOwkJLyog U3RyaW5nIG5vZGVzIG5hbWluZyByZWZlcmVuY2VkIG5vbmtleQogCQkJCQkJCQkgKiBjb2x1 bW4ocykgKi8KIApAQCAtMzIxOSw2ICszMjIwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhT dG10CiAJYm9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OyAvKiBudWxsIHRyZWF0bWVudCBmb3Ig VU5JUVVFIGNvbnN0cmFpbnRzICovCiAJYm9vbAkJcHJpbWFyeTsJCS8qIGlzIGluZGV4IGEg cHJpbWFyeSBrZXk/ICovCiAJYm9vbAkJaXNjb25zdHJhaW50OwkvKiBpcyBpdCBmb3IgYSBw a2V5L3VuaXF1ZSBjb25zdHJhaW50PyAqLworCWJvb2wJCWlzd2l0aG91dG92ZXJsYXBzOwkv KiBpcyB0aGUgY29uc3RyYWludCBXSVRIT1VUIE9WRVJMQVBTPyAqLwogCWJvb2wJCWRlZmVy cmFibGU7CQkvKiBpcyB0aGUgY29uc3RyYWludCBERUZFUlJBQkxFPyAqLwogCWJvb2wJCWlu aXRkZWZlcnJlZDsJLyogaXMgdGhlIGNvbnN0cmFpbnQgSU5JVElBTExZIERFRkVSUkVEPyAq LwogCWJvb2wJCXRyYW5zZm9ybWVkOwkvKiB0cnVlIHdoZW4gdHJhbnNmb3JtSW5kZXhTdG10 IGlzIGZpbmlzaGVkICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3dpdGhvdXRfb3ZlcmxhcHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRo b3V0X292ZXJsYXBzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNzI2ZTk0MTAyYmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CkBAIC0wLDAgKzEsMzk1IEBACistLSBUZXN0 cyBmb3IgV0lUSE9VVCBPVkVSTEFQUy4KKy0tCistLSBXZSBsZWF2ZSBiZWhpbmQgc2V2ZXJh bCB0YWJsZXMgdG8gdGVzdCBwZ19kdW1wIGV0YzoKKy0tIHRlbXBvcmFsX3JuZywgdGVtcG9y YWxfcm5nMiwKKy0tIHRlbXBvcmFsX2ZrX3JuZzJybmcuCistLQorLS0gdGVzdCBpbnB1dCBw YXJzZXIKKy0tCistLSBQSyB3aXRoIG5vIGNvbHVtbnMganVzdCBXSVRIT1VUIE9WRVJMQVBT OgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAodmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKKyk7CitFUlJPUjogIGNvbnN0cmFpbnQgdXNpbmcgV0lUSE9VVCBPVkVS TEFQUyBuZWVkcyBhdCBsZWFzdCB0d28gY29sdW1ucworLS0gUEsgd2l0aCBhIHJhbmdlIGNv bHVtbi9QRVJJT0QgdGhhdCBpc24ndCB0aGVyZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9y bmcgKAorCWlkIElOVEVHRVIsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0VSUk9SOiAgY29s dW1uICJ2YWxpZF9hdCIgbmFtZWQgaW4ga2V5IGRvZXMgbm90IGV4aXN0CitMSU5FIDM6ICBD T05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVS4uLgorICAgICAgICAgXgorLS0gUEsgd2l0aCBhIG5vbi1yYW5nZSBjb2x1bW46CitD UkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQg VEVYVCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRVJST1I6ICBkYXRhIHR5cGUgdGV4dCBo YXMgbm8gZGVmYXVsdCBvcGVyYXRvciBjbGFzcyBmb3IgYWNjZXNzIG1ldGhvZCAiZ2lzdCIK K0hJTlQ6ICBZb3UgbXVzdCBzcGVjaWZ5IGFuIG9wZXJhdG9yIGNsYXNzIGZvciB0aGUgaW5k ZXggb3IgZGVmaW5lIGEgZGVmYXVsdCBvcGVyYXRvciBjbGFzcyBmb3IgdGhlIGRhdGEgdHlw ZS4KKy0tIFBLIHdpdGggb25lIGNvbHVtbiBwbHVzIGEgcmFuZ2U6CitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfcm5nICgKKwktLSBTaW5jZSB3ZSBjYW4ndCBkZXBlbmQgb24gaGF2aW5nIGJ0 cmVlX2dpc3QgaGVyZSwKKwktLSB1c2UgYW4gaW50NHJhbmdlIGluc3RlYWQgb2YgYW4gaW50 LgorCS0tIChUaGUgcmFuZ2V0eXBlcyByZWdyZXNzaW9uIHRlc3QgdXNlcyB0aGUgc2FtZSB0 cmljay4pCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZworICAgICAgICAgICAgICBUYWJsZSAicHVi bGljLnRlbXBvcmFsX3JuZyIKKyAgQ29sdW1uICB8ICAgVHlwZSAgICB8IENvbGxhdGlvbiB8 IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAgICB8IGludDRyYW5nZSB8ICAgICAg ICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgfCB0c3JhbmdlICAgfCAgICAgICAgICAg fCBub3QgbnVsbCB8IAorSW5kZXhlczoKKyAgICAidGVtcG9yYWxfcm5nX3BrIiBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisKK1NFTEVDVCBwZ19nZXRf Y29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0g J3RlbXBvcmFsX3JuZ19wayc7CisgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKygx IHJvdykKKworU0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJP TSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nX3BrJzsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2luZGV4ZGVmICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBD UkVBVEUgVU5JUVVFIElOREVYIHRlbXBvcmFsX3JuZ19wayBPTiB0ZW1wb3JhbF9ybmcgVVNJ TkcgZ2lzdCAoaWQsIHZhbGlkX2F0KQorKDEgcm93KQorCistLSBQSyB3aXRoIHR3byBjb2x1 bW5zIHBsdXMgYSByYW5nZToKKy0tIFdlIGRvbid0IGRyb3AgdGhpcyB0YWJsZSBiZWNhdXNl IHRlc3RzIGJlbG93IGFsc28gbmVlZCBtdWx0aXBsZSBzY2FsYXIgY29sdW1ucy4KK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfcGsg UFJJTUFSWSBLRVkgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsK K1xkIHRlbXBvcmFsX3JuZzIKKyAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFs X3JuZzIiCisgIENvbHVtbiAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8 IERlZmF1bHQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tCisgaWQxICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCBub3Qg bnVsbCB8IAorIGlkMiAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwg fCAKKyB2YWxpZF9hdCB8IHRzcmFuZ2UgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitJ bmRleGVzOgorICAgICJ0ZW1wb3JhbF9ybmcyX3BrIiBQUklNQVJZIEtFWSAoaWQxLCBpZDIs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWlu dGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFs X3JuZzJfcGsnOworICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAs IHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3Ju ZzJfcGsnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2lu ZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBvcmFs X3JuZzJfcGsgT04gdGVtcG9yYWxfcm5nMiBVU0lORyBnaXN0IChpZDEsIGlkMiwgdmFsaWRf YXQpCisoMSByb3cpCisKKy0tIFBLIHdpdGggYSBjdXN0b20gcmFuZ2UgdHlwZToKK0NSRUFU RSBUWVBFIHRleHRyYW5nZTIgQVMgcmFuZ2UgKHN1YnR5cGU9dGV4dCwgY29sbGF0aW9uPSJD Iik7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJaWQgaW50NHJhbmdlLAorCXZh bGlkX2F0IHRleHRyYW5nZTIsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3BrIFBSSU1B UlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ybmczIERST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3BrOworRFJP UCBUQUJMRSB0ZW1wb3JhbF9ybmczOworRFJPUCBUWVBFIHRleHRyYW5nZTI7CistLSBQSyB3 aXRoIGEgbXVsdGlyYW5nZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9tbHRybmcgKAorICBp ZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRzbXVsdGlyYW5nZSwKKyAgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9tbHRybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX21sdHJuZworICAgICAgICAgICAgICBUYWJsZSAi cHVibGljLnRlbXBvcmFsX21sdHJuZyIKKyAgQ29sdW1uICB8ICAgICBUeXBlICAgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAgICB8IGludDRy YW5nZSAgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgfCB0c211bHRp cmFuZ2UgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorSW5kZXhlczoKKyAgICAidGVtcG9y YWxfbWx0cm5nX3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpCisKKy0tIFVOSVFVRSB3aXRoIG5vIGNvbHVtbnMganVzdCBXSVRIT1VUIE9WRVJMQVBT OgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAodmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKyk7CitFUlJPUjogIGNvbnN0cmFpbnQgdXNpbmcgV0lUSE9VVCBPVkVSTEFQ UyBuZWVkcyBhdCBsZWFzdCB0d28gY29sdW1ucworLS0gVU5JUVVFIHdpdGggYSByYW5nZSBj b2x1bW4vUEVSSU9EIHRoYXQgaXNuJ3QgdGhlcmU6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf cm5nMyAoCisJaWQgSU5URUdFUiwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXEgVU5J UVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitFUlJPUjogIGNvbHVt biAidmFsaWRfYXQiIG5hbWVkIGluIGtleSBkb2VzIG5vdCBleGlzdAorTElORSAzOiAgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1YuLi4KKyAgICAgICAgIF4KKy0tIFVOSVFVRSB3aXRoIGEgbm9uLXJhbmdlIGNvbHVtbjoK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgVEVYVCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXEgVU5JUVVFIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitFUlJPUjogIGRhdGEgdHlwZSB0ZXh0IGhh cyBubyBkZWZhdWx0IG9wZXJhdG9yIGNsYXNzIGZvciBhY2Nlc3MgbWV0aG9kICJnaXN0Igor SElOVDogIFlvdSBtdXN0IHNwZWNpZnkgYW4gb3BlcmF0b3IgY2xhc3MgZm9yIHRoZSBpbmRl eCBvciBkZWZpbmUgYSBkZWZhdWx0IG9wZXJhdG9yIGNsYXNzIGZvciB0aGUgZGF0YSB0eXBl LgorLS0gVU5JUVVFIHdpdGggb25lIGNvbHVtbiBwbHVzIGEgcmFuZ2U6CitDUkVBVEUgVEFC TEUgdGVtcG9yYWxfcm5nMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2Us CisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nMworICAgICAgICAgICAgIFRh YmxlICJwdWJsaWMudGVtcG9yYWxfcm5nMyIKKyAgQ29sdW1uICB8ICAgVHlwZSAgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAgICB8IGludDRyYW5n ZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgdmFsaWRfYXQgfCB0c3JhbmdlICAgfCAg ICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAidGVtcG9yYWxfcm5nM191 cSIgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKworU0VMRUNUIHBn X2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5h bWUgPSAndGVtcG9yYWxfcm5nM191cSc7CisgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRk ZWYgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKygxIHJvdykKKwor U0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25z dHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nM191cSc7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfaW5kZXhkZWYgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFU RSBVTklRVUUgSU5ERVggdGVtcG9yYWxfcm5nM191cSBPTiB0ZW1wb3JhbF9ybmczIFVTSU5H IGdpc3QgKGlkLCB2YWxpZF9hdCkKKygxIHJvdykKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9y bmczOworLS0gVU5JUVVFIHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIHJhbmdlOgorQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX3JuZzMgKAorCWlkMSBpbnQ0cmFuZ2UsCisJaWQyIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBV TklRVUUgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRl bXBvcmFsX3JuZzMKKyAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFsX3JuZzMi CisgIENvbHVtbiAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1 bHQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tCisgaWQxICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCAgICAgICAgICB8 IAorIGlkMiAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyB2 YWxpZF9hdCB8IHRzcmFuZ2UgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVz OgorICAgICJ0ZW1wb3JhbF9ybmczX3VxIiBVTklRVUUgKGlkMSwgaWQyLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBG Uk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmczX3VxJzsK KyAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBVTklRVUUgKGlk MSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKDEgcm93KQorCitTRUxFQ1Qg cGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQg V0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmczX3VxJzsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBnX2dldF9pbmRleGRlZiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Q1JFQVRFIFVOSVFVRSBJTkRFWCB0ZW1wb3JhbF9ybmczX3VxIE9OIHRlbXBvcmFsX3JuZzMg VVNJTkcgZ2lzdCAoaWQxLCBpZDIsIHZhbGlkX2F0KQorKDEgcm93KQorCitEUk9QIFRBQkxF IHRlbXBvcmFsX3JuZzM7CistLSBVTklRVUUgd2l0aCBhIGN1c3RvbSByYW5nZSB0eXBlOgor Q1JFQVRFIFRZUEUgdGV4dHJhbmdlMiBBUyByYW5nZSAoc3VidHlwZT10ZXh0LCBjb2xsYXRp b249IkMiKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfYXQgdGV4dHJhbmdlMiwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXEg VU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ybmczIERST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxOworRFJP UCBUQUJMRSB0ZW1wb3JhbF9ybmczOworRFJPUCBUWVBFIHRleHRyYW5nZTI7CistLQorLS0g dGVzdCBBTFRFUiBUQUJMRSBBREQgQ09OU1RSQUlOVAorLS0KK0RST1AgVEFCTEUgdGVtcG9y YWxfcm5nOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgaW50NHJhbmdlLAor CXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmcKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsKKwlQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpOworLS0gUEsgd2l0aCBVU0lORyBJTkRFWCAobm90IHBvc3Np YmxlKToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxp ZF9hdCB0c3JhbmdlCispOworQ1JFQVRFIElOREVYIGlkeF90ZW1wb3JhbDNfdXEgT04gdGVt cG9yYWwzIFVTSU5HIGdpc3QgKGlkLCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bDMKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsKKwlQUklNQVJZIEtFWSBVU0lORyBJ TkRFWCBpZHhfdGVtcG9yYWwzX3VxOworRVJST1I6ICAiaWR4X3RlbXBvcmFsM191cSIgaXMg bm90IGEgdW5pcXVlIGluZGV4CitMSU5FIDI6ICBBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNf cGsKKyAgICAgICAgICAgICBeCitERVRBSUw6ICBDYW5ub3QgY3JlYXRlIGEgcHJpbWFyeSBr ZXkgb3IgdW5pcXVlIGNvbnN0cmFpbnQgdXNpbmcgc3VjaCBhbiBpbmRleC4KK0RST1AgVEFC TEUgdGVtcG9yYWwzOworLS0gVU5JUVVFIHdpdGggVVNJTkcgSU5ERVggKG5vdCBwb3NzaWJs ZSk6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZQorKTsKK0NSRUFURSBJTkRFWCBpZHhfdGVtcG9yYWwzX3VxIE9OIHRlbXBv cmFsMyBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpOworQUxURVIgVEFCTEUgdGVtcG9yYWwz CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxCisJVU5JUVVFIFVTSU5HIElOREVYIGlk eF90ZW1wb3JhbDNfdXE7CitFUlJPUjogICJpZHhfdGVtcG9yYWwzX3VxIiBpcyBub3QgYSB1 bmlxdWUgaW5kZXgKK0xJTkUgMjogIEFERCBDT05TVFJBSU5UIHRlbXBvcmFsM191cQorICAg ICAgICAgICAgIF4KK0RFVEFJTDogIENhbm5vdCBjcmVhdGUgYSBwcmltYXJ5IGtleSBvciB1 bmlxdWUgY29uc3RyYWludCB1c2luZyBzdWNoIGFuIGluZGV4LgorRFJPUCBUQUJMRSB0ZW1w b3JhbDM7CistLSBVTklRVUUgd2l0aCBVU0lORyBbVU5JUVVFXSBJTkRFWCAocG9zc2libGUg YnV0IG5vdCBhIHRlbXBvcmFsIGNvbnN0cmFpbnQpOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs MyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitDUkVBVEUgVU5J UVVFIElOREVYIGlkeF90ZW1wb3JhbDNfdXEgT04gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQp OworQUxURVIgVEFCTEUgdGVtcG9yYWwzCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3Vx CisJVU5JUVVFIFVTSU5HIElOREVYIGlkeF90ZW1wb3JhbDNfdXE7CitOT1RJQ0U6ICBBTFRF UiBUQUJMRSAvIEFERCBDT05TVFJBSU5UIFVTSU5HIElOREVYIHdpbGwgcmVuYW1lIGluZGV4 ICJpZHhfdGVtcG9yYWwzX3VxIiB0byAidGVtcG9yYWwzX3VxIgorRFJPUCBUQUJMRSB0ZW1w b3JhbDM7CistLSBBZGQgcmFuZ2UgY29sdW1uIGFuZCB0aGUgUEsgYXQgdGhlIHNhbWUgdGlt ZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlCispOworQUxURVIg VEFCTEUgdGVtcG9yYWwzCisJQUREIENPTFVNTiB2YWxpZF9hdCB0c3JhbmdlLAorCUFERCBD T05TVFJBSU5UIHRlbXBvcmFsM19waworCVBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tIEFkZCByYW5nZSBj b2x1bW4gYW5kIFVOSVFVRSBjb25zdHJhaW50IGF0IHRoZSBzYW1lIHRpbWUKK0NSRUFURSBU QUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZQorKTsKK0FMVEVSIFRBQkxFIHRlbXBv cmFsMworCUFERCBDT0xVTU4gdmFsaWRfYXQgdHNyYW5nZSwKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbDNfdXEKKwlVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsK K0RST1AgVEFCTEUgdGVtcG9yYWwzOworLS0KKy0tIHRlc3QgUEsgaW5zZXJ0cworLS0KKy0t IG9rYXk6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEsMV0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDMnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAzLTAzJywgJzIwMTgtMDQt MDQnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzIsMl0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDEtMDUnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgTlVMTCkpOwor LS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEs MV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDEtMDUnKSk7CitFUlJPUjogIGNv bmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAidGVt cG9yYWxfcm5nX3BrIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJN b24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAwOjAwOjAwIDIwMTgiKSkg Y29uZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJU dWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiKSku CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTIChOVUxMLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDEtMDUnKSk7CitFUlJPUjogIG51bGwgdmFsdWUgaW4gY29sdW1u ICJpZCIgb2YgcmVsYXRpb24gInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgbm90LW51bGwgY29u c3RyYWludAorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKG51bGwsIFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4IikpLgorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1szLDNdJywgTlVMTCk7CitFUlJPUjog IG51bGwgdmFsdWUgaW4gY29sdW1uICJ2YWxpZF9hdCIgb2YgcmVsYXRpb24gInRlbXBvcmFs X3JuZyIgdmlvbGF0ZXMgbm90LW51bGwgY29uc3RyYWludAorREVUQUlMOiAgRmFpbGluZyBy b3cgY29udGFpbnMgKFszLDQpLCBudWxsKS4KKy0tCistLSB0ZXN0IGEgcmFuZ2Ugd2l0aCBi b3RoIGEgUEsgYW5kIGEgVU5JUVVFIGNvbnN0cmFpbnQKKy0tCitDUkVBVEUgVEFCTEUgdGVt cG9yYWwzICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIGlk MiBpbnQ4cmFuZ2UsCisgIG5hbWUgVEVYVCwKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKyAgQ09OU1RS QUlOVCB0ZW1wb3JhbDNfdW5pcSBVTklRVUUgKGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUykKKyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCwgaWQyLCBu YW1lKQorICBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcy MDEwLTAxLTAxJyksICdbNyw3XScsICdmb28nKSwKKyAgKCdbMiwyXScsIGRhdGVyYW5nZSgn MjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbOSw5XScsICdiYXInKQorOworRFJPUCBU QUJMRSB0ZW1wb3JhbDM7CistLQorLS0gdGVzdCBjaGFuZ2luZyB0aGUgUEsncyBkZXBlbmRl bmNpZXMKKy0tCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJ dmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgdGVt cG9yYWwzIEFMVEVSIENPTFVNTiB2YWxpZF9hdCBEUk9QIE5PVCBOVUxMOworRVJST1I6ICBj b2x1bW4gInZhbGlkX2F0IiBpcyBpbiBhIHByaW1hcnkga2V5CitBTFRFUiBUQUJMRSB0ZW1w b3JhbDMgQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgdHN0enJhbmdlIFVTSU5HIHRzdHpy YW5nZShsb3dlcih2YWxpZF9hdCksIHVwcGVyKHZhbGlkX2F0KSk7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbDMgUkVOQU1FIENPTFVNTiB2YWxpZF9hdCBUTyB2YWxpZF90aHJ1OworQUxURVIg VEFCTEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX3RocnU7CitEUk9QIFRBQkxFIHRl bXBvcmFsMzsKKy0tCistLSB0ZXN0IFBBUlRJVElPTiBCWSBmb3IgcmFuZ2VzCistLQorLS0g dGVtcG9yYWwgUFJJTUFSWSBLRVk6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWQgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4 dCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfcGsgUFJJTUFSWSBLRVkgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKSBQQVJUSVRJT04gQlkgTElTVCAoaWQp OworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQg Rk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1syLDJdJyk7CitDUkVBVEUgVEFCTEUgdHAyIFBB UlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzMsM10n LCAnWzQsNF0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVFUwor ICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwgJ29u ZScpLAorICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMtMDEn KSwgJ29uZScpLAorICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAt MDEtMDEnKSwgJ3RocmVlJyk7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVk IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAg ICAgIHwgbmFtZSAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LQorIFsxLDIpIHwgWzAxLTAxLTIwMDAsMDItMDEtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFsw Mi0wMS0yMDAwLDAzLTAxLTIwMDApIHwgb25lCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0w MS0yMDEwKSB8IHRocmVlCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5h bWUgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEsMikg fCBbMDEtMDEtMjAwMCwwMi0wMS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAyLTAxLTIwMDAs MDMtMDEtMjAwMCkgfCBvbmUKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdHAyIE9SREVS IEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwg bmFtZSAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIFsz LDQpIHwgWzAxLTAxLTIwMDAsMDEtMDEtMjAxMCkgfCB0aHJlZQorKDEgcm93KQorCitEUk9Q IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworLS0gdGVtcG9yYWwgVU5JUVVFOgorQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgZGF0ZXJhbmdlLAorICBuYW1lIHRleHQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9w YXJpdGlvbmVkX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisp IFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdHAxIFBBUlRJVElPTiBP RiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzIsMl0n KTsKK0NSRUFURSBUQUJMRSB0cDIgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk IEZPUiBWQUxVRVMgSU4gKCdbMywzXScsICdbNCw0XScpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWQgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEt MDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIw MDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyksCisgICgnWzMsM10nLCBkYXRlcmFu Z2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAndGhyZWUnKTsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAg IHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCwwMi0wMS0y MDAwKSB8IG9uZQorIFsxLDIpIHwgWzAyLTAxLTIwMDAsMDMtMDEtMjAwMCkgfCBvbmUKKyBb Myw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKKygzIHJvd3MpCisKK1NF TEVDVCAqIEZST00gdHAxIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAg ICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFswMS0wMS0yMDAwLDAyLTAxLTIwMDApIHwgb25l CisgWzEsMikgfCBbMDItMDEtMjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorKDIgcm93cykKKwor U0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAg ICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0wMS0yMDEwKSB8 IHRocmVlCisoMSByb3cpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCBmMDk4N2ZmNTM3Yi4uYjA4YWFh ZTQ0YjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtNzgsNyArNzgs NyBAQCB0ZXN0OiBicmluX2Jsb29tIGJyaW5fbXVsdGkKICMgcHNxbCBkZXBlbmRzIG9uIGNy ZWF0ZV9hbQogIyBhbXV0aWxzIGRlcGVuZHMgb24gZ2VvbWV0cnksIGNyZWF0ZV9pbmRleF9z cGdpc3QsIGhhc2hfaW5kZXgsIGJyaW4KICMgLS0tLS0tLS0tLQotdGVzdDogY3JlYXRlX3Rh YmxlX2xpa2UgYWx0ZXJfZ2VuZXJpYyBhbHRlcl9vcGVyYXRvciBtaXNjIGFzeW5jIGRic2l6 ZSBtZXJnZSBtaXNjX2Z1bmN0aW9ucyBzeXN2aWV3cyB0c3JmIHRpZCB0aWRzY2FuIHRpZHJh bmdlc2NhbiBjb2xsYXRlLmljdS51dGY4IGluY3JlbWVudGFsX3NvcnQgY3JlYXRlX3JvbGUK K3Rlc3Q6IGNyZWF0ZV90YWJsZV9saWtlIGFsdGVyX2dlbmVyaWMgYWx0ZXJfb3BlcmF0b3Ig bWlzYyBhc3luYyBkYnNpemUgbWVyZ2UgbWlzY19mdW5jdGlvbnMgc3lzdmlld3MgdHNyZiB0 aWQgdGlkc2NhbiB0aWRyYW5nZXNjYW4gY29sbGF0ZS5pY3UudXRmOCBpbmNyZW1lbnRhbF9z b3J0IGNyZWF0ZV9yb2xlIHdpdGhvdXRfb3ZlcmxhcHMKIAogIyBjb2xsYXRlLioudXRmOCB0 ZXN0cyBjYW5ub3QgYmUgcnVuIGluIHBhcmFsbGVsIHdpdGggZWFjaCBvdGhlcgogdGVzdDog cnVsZXMgcHNxbCBwc3FsX2Nyb3NzdGFiIGFtdXRpbHMgc3RhdHNfZXh0IGNvbGxhdGUubGlu dXgudXRmOCBjb2xsYXRlLndpbmRvd3Mud2luMTI1MgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC93aXRob3V0X292ZXJsYXBzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uYzhlOGFiOTk0YTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApAQCAtMCwwICsxLDI5MCBAQAorLS0gVGVz dHMgZm9yIFdJVEhPVVQgT1ZFUkxBUFMuCistLQorLS0gV2UgbGVhdmUgYmVoaW5kIHNldmVy YWwgdGFibGVzIHRvIHRlc3QgcGdfZHVtcCBldGM6CistLSB0ZW1wb3JhbF9ybmcsIHRlbXBv cmFsX3JuZzIsCistLSB0ZW1wb3JhbF9ma19ybmcycm5nLgorCistLQorLS0gdGVzdCBpbnB1 dCBwYXJzZXIKKy0tCisKKy0tIFBLIHdpdGggbm8gY29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZF UkxBUFM6CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCXZhbGlkX2F0IHRzcmFu Z2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCistLSBQSyB3aXRoIGEgcmFuZ2UgY29sdW1uL1BF UklPRCB0aGF0IGlzbid0IHRoZXJlOgorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgK KwlpZCBJTlRFR0VSLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFBLIHdpdGggYSBu b24tcmFuZ2UgY29sdW1uOgorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfYXQgVEVYVCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCist LSBQSyB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIHJhbmdlOgorCitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfcm5nICgKKwktLSBTaW5jZSB3ZSBjYW4ndCBkZXBlbmQgb24gaGF2aW5nIGJ0cmVl X2dpc3QgaGVyZSwKKwktLSB1c2UgYW4gaW50NHJhbmdlIGluc3RlYWQgb2YgYW4gaW50Lgor CS0tIChUaGUgcmFuZ2V0eXBlcyByZWdyZXNzaW9uIHRlc3QgdXNlcyB0aGUgc2FtZSB0cmlj ay4pCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVm KG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5n X3BrJzsKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00g cGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CisKKy0t IFBLIHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIHJhbmdlOgorLS0gV2UgZG9uJ3QgZHJvcCB0 aGlzIHRhYmxlIGJlY2F1c2UgdGVzdHMgYmVsb3cgYWxzbyBuZWVkIG11bHRpcGxlIHNjYWxh ciBjb2x1bW5zLgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAorCWlkMSBpbnQ0cmFu Z2UsCisJaWQyIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQg dGVtcG9yYWxfcm5nMl9wayBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nMgorU0VMRUNUIHBnX2dldF9jb25z dHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVt cG9yYWxfcm5nMl9wayc7CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0 cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcy X3BrJzsKKworCistLSBQSyB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGU6CitDUkVBVEUgVFlQ RSB0ZXh0cmFuZ2UyIEFTIHJhbmdlIChzdWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOwor Q1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9h dCB0ZXh0cmFuZ2UyLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM19wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgdGVt cG9yYWxfcm5nMyBEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM19wazsKK0RST1AgVEFC TEUgdGVtcG9yYWxfcm5nMzsKK0RST1AgVFlQRSB0ZXh0cmFuZ2UyOworCistLSBQSyB3aXRo IGEgbXVsdGlyYW5nZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9tbHRybmcgKAorICBpZCBp bnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRzbXVsdGlyYW5nZSwKKyAgQ09OU1RSQUlOVCB0ZW1w b3JhbF9tbHRybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKTsKK1xkIHRlbXBvcmFsX21sdHJuZworCistLSBVTklRVUUgd2l0aCBubyBjb2x1 bW5zIGp1c3QgV0lUSE9VVCBPVkVSTEFQUzoKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Ju ZzMgKAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3Vx IFVOSVFVRSAodmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFVOSVFVRSB3 aXRoIGEgcmFuZ2UgY29sdW1uL1BFUklPRCB0aGF0IGlzbid0IHRoZXJlOgorCitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJaWQgSU5URUdFUiwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX3JuZzNfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7 CisKKy0tIFVOSVFVRSB3aXRoIGEgbm9uLXJhbmdlIGNvbHVtbjoKKworQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3JuZzMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBURVhULAorCUNP TlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQorKTsKKworLS0gVU5JUVVFIHdpdGggb25lIGNvbHVtbiBwbHVzIGEgcmFu Z2U6CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBpbnQ0cmFuZ2UsCisJ dmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXEgVU5JUVVF IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmcz CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQg V0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmczX3VxJzsKK1NFTEVDVCBwZ19nZXRfaW5k ZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25u YW1lID0gJ3RlbXBvcmFsX3JuZzNfdXEnOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmczOwor CistLSBVTklRVUUgd2l0aCB0d28gY29sdW1ucyBwbHVzIGEgcmFuZ2U6CitDUkVBVEUgVEFC TEUgdGVtcG9yYWxfcm5nMyAoCisJaWQxIGludDRyYW5nZSwKKwlpZDIgaW50NHJhbmdlLAor CXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFV RSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9y YWxfcm5nMworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25z dHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nM191cSc7CitTRUxFQ1QgcGdf Z2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hF UkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmczX3VxJzsKK0RST1AgVEFCTEUgdGVtcG9yYWxf cm5nMzsKKworLS0gVU5JUVVFIHdpdGggYSBjdXN0b20gcmFuZ2UgdHlwZToKK0NSRUFURSBU WVBFIHRleHRyYW5nZTIgQVMgcmFuZ2UgKHN1YnR5cGU9dGV4dCwgY29sbGF0aW9uPSJDIik7 CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IHRleHRyYW5nZTIsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgdGVtcG9y YWxfcm5nMyBEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cTsKK0RST1AgVEFCTEUg dGVtcG9yYWxfcm5nMzsKK0RST1AgVFlQRSB0ZXh0cmFuZ2UyOworCistLQorLS0gdGVzdCBB TFRFUiBUQUJMRSBBREQgQ09OU1RSQUlOVAorLS0KKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9y bmc7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgdHNyYW5nZQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZworCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX3JuZ19waworCVBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUyk7CisKKy0tIFBLIHdpdGggVVNJTkcgSU5ERVggKG5vdCBwb3NzaWJs ZSk6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZQorKTsKK0NSRUFURSBJTkRFWCBpZHhfdGVtcG9yYWwzX3VxIE9OIHRlbXBv cmFsMyBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpOworQUxURVIgVEFCTEUgdGVtcG9yYWwz CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3BrCisJUFJJTUFSWSBLRVkgVVNJTkcgSU5E RVggaWR4X3RlbXBvcmFsM191cTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworCistLSBVTklR VUUgd2l0aCBVU0lORyBJTkRFWCAobm90IHBvc3NpYmxlKToKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlCispOworQ1JFQVRF IElOREVYIGlkeF90ZW1wb3JhbDNfdXEgT04gdGVtcG9yYWwzIFVTSU5HIGdpc3QgKGlkLCB2 YWxpZF9hdCk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbDNfdXEKKwlVTklRVUUgVVNJTkcgSU5ERVggaWR4X3RlbXBvcmFsM191cTsKK0RST1Ag VEFCTEUgdGVtcG9yYWwzOworCistLSBVTklRVUUgd2l0aCBVU0lORyBbVU5JUVVFXSBJTkRF WCAocG9zc2libGUgYnV0IG5vdCBhIHRlbXBvcmFsIGNvbnN0cmFpbnQpOgorQ1JFQVRFIFRB QkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7 CitDUkVBVEUgVU5JUVVFIElOREVYIGlkeF90ZW1wb3JhbDNfdXEgT04gdGVtcG9yYWwzIChp ZCwgdmFsaWRfYXQpOworQUxURVIgVEFCTEUgdGVtcG9yYWwzCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWwzX3VxCisJVU5JUVVFIFVTSU5HIElOREVYIGlkeF90ZW1wb3JhbDNfdXE7CitE Uk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0gQWRkIHJhbmdlIGNvbHVtbiBhbmQgdGhlIFBL IGF0IHRoZSBzYW1lIHRpbWUKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRy YW5nZQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT0xVTU4gdmFsaWRfYXQg dHNyYW5nZSwKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsKKwlQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7 CisKKy0tIEFkZCByYW5nZSBjb2x1bW4gYW5kIFVOSVFVRSBjb25zdHJhaW50IGF0IHRoZSBz YW1lIHRpbWUKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZQorKTsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT0xVTU4gdmFsaWRfYXQgdHNyYW5nZSwK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfdXEKKwlVTklRVUUgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworCistLQorLS0gdGVz dCBQSyBpbnNlcnRzCistLQorCistLSBva2F5OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAzJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgn MjAxOC0wMy0wMycsICcyMDE4LTA0LTA0JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1Jykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsIE5VTEwpKTsKKworLS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MTgtMDEtMDUnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTIChOVUxMLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDEtMDUnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcgVkFMVUVTICgnWzMsM10nLCBOVUxMKTsKKworLS0KKy0tIHRlc3QgYSByYW5n ZSB3aXRoIGJvdGggYSBQSyBhbmQgYSBVTklRVUUgY29uc3RyYWludAorLS0KKworQ1JFQVRF IFRBQkxFIHRlbXBvcmFsMyAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQgZGF0ZXJh bmdlLAorICBpZDIgaW50OHJhbmdlLAorICBuYW1lIFRFWFQsCisgIENPTlNUUkFJTlQgdGVt cG9yYWwzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyks CisgIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VuaXEgVU5JUVVFIChpZDIsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRf YXQsIGlkMiwgbmFtZSkKKyAgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAt MDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzcsN10nLCAnZm9vJyksCisgICgnWzIsMl0nLCBk YXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzksOV0nLCAnYmFyJykK KzsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworCistLQorLS0gdGVzdCBjaGFuZ2luZyB0aGUg UEsncyBkZXBlbmRlbmNpZXMKKy0tCisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlk IGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWwz X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisK K0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBBTFRFUiBDT0xVTU4gdmFsaWRfYXQgRFJPUCBOT1Qg TlVMTDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBBTFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQ RSB0c3R6cmFuZ2UgVVNJTkcgdHN0enJhbmdlKGxvd2VyKHZhbGlkX2F0KSwgdXBwZXIodmFs aWRfYXQpKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBSRU5BTUUgQ09MVU1OIHZhbGlkX2F0 IFRPIHZhbGlkX3RocnU7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xVTU4gdmFs aWRfdGhydTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworCistLQorLS0gdGVzdCBQQVJUSVRJ T04gQlkgZm9yIHJhbmdlcworLS0KKworLS0gdGVtcG9yYWwgUFJJTUFSWSBLRVk6CitDUkVB VEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgKAorCWlkIGludDRyYW5nZSwKKwl2YWxp ZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Bh cml0aW9uZWRfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KQorKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJ T04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1sy LDJdJyk7CitDUkVBVEUgVEFCTEUgdHAyIFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRp b25lZCBGT1IgVkFMVUVTIElOICgnWzMsM10nLCAnWzQsNF0nKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAw LTAxLTAxJywgJzIwMDAtMDItMDEnKSwgJ29uZScpLAorICAoJ1sxLDFdJywgZGF0ZXJhbmdl KCcyMDAwLTAyLTAxJywgJzIwMDAtMDMtMDEnKSwgJ29uZScpLAorICAoJ1szLDNdJywgZGF0 ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ3RocmVlJyk7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKK1NF TEVDVCAqIEZST00gdHAxIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKK1NFTEVDVCAqIEZST00g dHAyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWQ7CisKKy0tIHRlbXBvcmFsIFVOSVFVRToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKyAg bmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF91cSBVTklRVUUg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKSBQQVJUSVRJT04gQlkgTElTVCAo aWQpOworQ1JFQVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9u ZWQgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1syLDJdJyk7CitDUkVBVEUgVEFCTEUgdHAy IFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzMs M10nLCAnWzQsNF0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVF UworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwg J29uZScpLAorICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMt MDEnKSwgJ29uZScpLAorICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIw MTAtMDEtMDEnKSwgJ3RocmVlJyk7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKK1NFTEVDVCAqIEZST00gdHAxIE9SREVSIEJZ IGlkLCB2YWxpZF9hdDsKK1NFTEVDVCAqIEZST00gdHAyIE9SREVSIEJZIGlkLCB2YWxpZF9h dDsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7Ci0tIAoyLjQyLjAKCg== --------------5mQnkvShJhECliiRK4zn4H0Z Content-Type: text/x-patch; charset=UTF-8; name="v23-0003-Add-GiST-referencedagg-support-func.patch" Content-Disposition: attachment; filename="v23-0003-Add-GiST-referencedagg-support-func.patch" Content-Transfer-Encoding: base64 RnJvbSBiMTczYjZhYTkyYTdiMjAyNjBjODA0MDU3MmUyYjhmM2QzODY2NWZhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjkgRGVjIDIwMjMgMTQ6MzY6MjcgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyMyAzLzhdIEFkZCBHaVNUIHJlZmVyZW5jZWRhZ2cgc3Vw cG9ydCBmdW5jCgpUaGlzIGlzIHRoZSB0aGlydGVlbnRoIHN1cHBvcnQgZnVuY3Rpb24gYW5k IGxldHMgdXMgaW1wbGVtZW50IHRlbXBvcmFsCmZvcmVpZ24ga2V5cyB3aXRob3V0IGhhcmRj b2RpbmcgdGhlIHJhbmdlX2FnZyBmdW5jdGlvbi4gVGhlIHN1cHBvcnQKZnVuY3Rpb24gc2hv dWxkIGJlIGFuIGFnZ3JlZ2F0ZSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdHlwZSBtYXRjaGlu ZyB0aGUKZm9yZWlnbiBrZXkncyBQRVJJT0QgZWxlbWVudCBhbmQgcmV0dXJucyBhIHR5cGUg dGhhdCBjYW4gYXBwZWFyIG9uIHRoZQpyaWdodGhhbmQgc2lkZSBvZiBhIENvbnRhaW5lZEJ5 IG9wZXJhdG9yLCBzbyB0aGF0IGZvciBleGFtcGxlIHdlIGNhbiBzYXkKYGZrcGVyaW9kIDxA IHJhbmdlX2FnZyhwa3BlcmlvZClgLgotLS0KIGRvYy9zcmMvc2dtbC9naXN0LnNnbWwgICAg ICAgICAgICAgICAgIHwgMTEyICsrKysrKysrKysrKysrKysrKysrKysrKysKIGRvYy9zcmMv c2dtbC94aW5kZXguc2dtbCAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYyB8ICAgNyArLQogc3JjL2JhY2tlbmQvYWNjZXNz L2luZGV4L2FtdmFsaWRhdGUuYyAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0 LmggICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJv Yy5kYXQgICAgICB8ICAgNiArKwogNiBmaWxlcyBjaGFuZ2VkLCAxMzggaW5zZXJ0aW9ucygr KSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21s IGIvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbAppbmRleCA4NmJlN2M5NjI1Ni4uODc5NDhhNzdj ZmQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9naXN0LnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2dpc3Quc2dtbApAQCAtMzAwLDYgKzMwMCwxMCBAQCBDUkVBVEUgSU5ERVggT04gbXlf dGFibGUgVVNJTkcgR0lTVCAobXlfaW5ldF9jb2x1bW4gaW5ldF9vcHMpOwogICAgPGZpbGVu YW1lPnNyYy9pbmNsdWRlL2FjY2Vzcy9zdHJhdG51bS5oPC9maWxlbmFtZT4pIGludG8gc3Ry YXRlZ3kgbnVtYmVycwogICAgdXNlZCBieSB0aGUgb3BjbGFzcy4gVGhpcyBsZXRzIHRoZSBj b3JlIGNvZGUgbG9vayB1cCBvcGVyYXRvcnMgZm9yIHRlbXBvcmFsCiAgICBjb25zdHJhaW50 IGluZGV4ZXMuCisgICBUaGUgb3B0aW9uYWwgdGhpcnRlZW50aCBtZXRob2QgPGZ1bmN0aW9u PnJlZmVyZW5jZWRhZ2c8L2Z1bmN0aW9uPiBpcyB1c2VkIGJ5CisgICB0ZW1wb3JhbCBmb3Jl aWduIGtleXMgdG8gY29tYmluZWQgcmVmZXJlbmNlZCByb3dzIHdpdGggdGhlIHNhbWUKKyAg IG5vbi08bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiBpbnRvIG9uZSA8bGl0 ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPgorICAgc3BhbiB0byBjb21wYXJlIGFn YWluc3QgcmVmZXJlbmNpbmcgcm93cy4KICA8L3BhcmE+CiAKICA8dmFyaWFibGVsaXN0PgpA QCAtMTI0OCw2ICsxMjUyLDExNCBAQCBteV9zdHJhdG51bShQR19GVU5DVElPTl9BUkdTKQog ICAgICAgPC9wYXJhPgogICAgICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5Pgor ICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJtPjxmdW5jdGlvbj5yZWZlcmVuY2VkYWdn PC9mdW5jdGlvbj48L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAg ICAgIEFuIGFnZ3JlZ2F0ZSBmdW5jdGlvbi4gR2l2ZW4gdmFsdWVzIG9mIHRoaXMgb3BjbGFz cywKKyAgICAgICBpdCByZXR1cm5zIGEgdmFsdWUgY29tYmluaW5nIHRoZW0gYWxsLiBUaGUg cmV0dXJuIHZhbHVlCisgICAgICAgbmVlZCBub3QgYmUgdGhlIHNhbWUgdHlwZSBhcyB0aGUg aW5wdXQsIGJ1dCBpdCBtdXN0IGJlIGEKKyAgICAgICB0eXBlIHRoYXQgY2FuIGFwcGVhciBv biB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mIHRoZSAiY29udGFpbmVkIGJ5IgorICAgICAgIG9w ZXJhdG9yLiBGb3IgZXhhbXBsZSB0aGUgYnVpbHQtaW4gPGxpdGVyYWw+cmFuZ2Vfb3BzPC9s aXRlcmFsPgorICAgICAgIG9wY2xhc3MgdXNlcyA8bGl0ZXJhbD5yYW5nZV9hZ2c8L2xpdGVy YWw+IGhlcmUsIHNvIHRoYXQgZm9yZWlnbgorICAgICAgIGtleXMgY2FuIGNoZWNrIDxsaXRl cmFsPmZrcGVyaW9kIEA+IHJhbmdlX2FnZyhwa3BlcmlvZCk8L2xpdGVyYWw+LgorICAgICAg PC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhpcyBpcyB1c2VkIGZvciB0ZW1wb3Jh bCBmb3JlaWduIGtleSBjb25zdHJhaW50cy4KKyAgICAgICBJZiB5b3Ugb21pdCB0aGlzIHN1 cHBvcnQgZnVuY3Rpb24sIHlvdXIgdHlwZSBjYW5ub3QgYmUgdXNlZAorICAgICAgIGFzIHRo ZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+IHBhcnQgb2YgYSBmb3JlaWduIGtleS4KKyAg ICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgVGhlIDxhY3JvbnltPlNRTDwv YWNyb255bT4gZGVjbGFyYXRpb24gb2YgdGhlIGZ1bmN0aW9uIG11c3QgbG9vayBsaWtlCisg ICAgICAgdGhpcyAodXNpbmcgPGxpdGVyYWw+bXlfcmFuZ2VfYWdnPC9saXRlcmFsPiBhcyBh biBleGFtcGxlKToKKworPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIE9SIFJFUExBQ0UgRlVO Q1RJT04gbXlfcmFuZ2VfYWdnX3RyYW5zZm4oaW50ZXJuYWwsIGFueXJhbmdlKQorUkVUVVJO UyBpbnRlcm5hbAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgU1RSSUNUOwor CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBteV9yYW5nZV9hZ2dfZmluYWxmbihpbnRl cm5hbCwgYW55cmFuZ2UpCitSRVRVUk5TIGFueW11bHRpcmFuZ2UKK0FTICdNT0RVTEVfUEFU SE5BTUUnCitMQU5HVUFHRSBDIFNUUklDVDsKKworQ1JFQVRFIEFHR1JFR0FURSBteV9yYW5n ZV9hZ2coYW55cmFuZ2UpIHsKKyAgU0ZVTkMgPSBteV9yYW5nZV9hZ2dfdHJhbnNmbiwKKyAg U1RZUEUgPSBpbnRlcm5hbCwKKyAgRklOQUxGVU5DID0gbXlfcmFuZ2VfYWdnX2ZpbmFsZm4K K307Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+ CisgICAgICAgIFRoZSBtYXRjaGluZyBjb2RlIGluIHRoZSBDIG1vZHVsZSBjb3VsZCB0aGVu IGZvbGxvdyB0aGlzIGV4YW1wbGU6CisKKzxwcm9ncmFtbGlzdGluZz4KK0RhdHVtCitteV9y YW5nZV9hZ2dfdHJhbnNmbihQR19GVU5DVElPTl9BUkdTKQoreworICAgIE1lbW9yeUNvbnRl eHQgICAgYWdnQ29udGV4dDsKKyAgICBPaWQgICAgICAgICAgICAgIHJuZ3R5cG9pZDsKKyAg ICBBcnJheUJ1aWxkU3RhdGUgKnN0YXRlOworCisgICAgaWYgKCFBZ2dDaGVja0NhbGxDb250 ZXh0KGZjaW5mbywgJmFtcDthZ2dDb250ZXh0KSkKKyAgICAgICAgZWxvZyhFUlJPUiwgInJh bmdlX2FnZ190cmFuc2ZuIGNhbGxlZCBpbiBub24tYWdncmVnYXRlIGNvbnRleHQiKTsKKwor ICAgIHJuZ3R5cG9pZCA9IGdldF9mbl9leHByX2FyZ3R5cGUoZmNpbmZvLSZndDtmbGluZm8s IDEpOworICAgIGlmICghdHlwZV9pc19yYW5nZShybmd0eXBvaWQpKQorICAgICAgICBlbG9n KEVSUk9SLCAicmFuZ2VfYWdnIG11c3QgYmUgY2FsbGVkIHdpdGggYSByYW5nZSIpOworCisg ICAgaWYgKFBHX0FSR0lTTlVMTCgwKSkKKyAgICAgICAgc3RhdGUgPSBpbml0QXJyYXlSZXN1 bHQocm5ndHlwb2lkLCBhZ2dDb250ZXh0LCBmYWxzZSk7CisgICAgZWxzZQorICAgICAgICBz dGF0ZSA9IChBcnJheUJ1aWxkU3RhdGUgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKyAg ICAvKiBza2lwIE5VTExzICovCisgICAgaWYgKCFQR19BUkdJU05VTEwoMSkpCisgICAgICAg IGFjY3VtQXJyYXlSZXN1bHQoc3RhdGUsIFBHX0dFVEFSR19EQVRVTSgxKSwgZmFsc2UsIHJu Z3R5cG9pZCwgYWdnQ29udGV4dCk7CisKKyAgICBQR19SRVRVUk5fUE9JTlRFUihzdGF0ZSk7 Cit9CisKK0RhdHVtCitteV9yYW5nZV9hZ2dfZmluYWxmbihQR19GVU5DVElPTl9BUkdTKQor eworICAgIE1lbW9yeUNvbnRleHQgICAgYWdnQ29udGV4dDsKKyAgICBPaWQgICAgICAgICAg ICAgIG1sdHJuZ3R5cG9pZDsKKyAgICBUeXBlQ2FjaGVFbnRyeSAgKnR5cGNhY2hlOworICAg IEFycmF5QnVpbGRTdGF0ZSAqc3RhdGU7CisgICAgaW50MzIgICAgICAgICAgICByYW5nZV9j b3VudDsKKyAgICBSYW5nZVR5cGUgICAgICAqKnJhbmdlczsKKyAgICBpbnQgICAgICAgICAg ICAgIGk7CisKKyAgICBpZiAoIUFnZ0NoZWNrQ2FsbENvbnRleHQoZmNpbmZvLCAmYW1wO2Fn Z0NvbnRleHQpKQorICAgICAgICBlbG9nKEVSUk9SLCAicmFuZ2VfYWdnX2ZpbmFsZm4gY2Fs bGVkIGluIG5vbi1hZ2dyZWdhdGUgY29udGV4dCIpOworCisgICAgc3RhdGUgPSBQR19BUkdJ U05VTEwoMCkgPyBOVUxMIDogKEFycmF5QnVpbGRTdGF0ZSAqKSBQR19HRVRBUkdfUE9JTlRF UigwKTsKKyAgICBpZiAoc3RhdGUgPT0gTlVMTCkKKyAgICAgICAgLyogVGhpcyBzaG91bGRu J3QgYmUgcG9zc2libGUsIGJ1dCBqdXN0IGluIGNhc2UuLi4uICovCisgICAgICAgIFBHX1JF VFVSTl9OVUxMKCk7CisKKyAgICAvKiBBbHNvIHJldHVybiBOVUxMIGlmIHdlIGhhZCB6ZXJv IGlucHV0cywgbGlrZSBvdGhlciBhZ2dyZWdhdGVzICovCisgICAgcmFuZ2VfY291bnQgPSBz dGF0ZS0mZ3Q7bmVsZW1zOworICAgIGlmIChyYW5nZV9jb3VudCA9PSAwKQorICAgICAgICBQ R19SRVRVUk5fTlVMTCgpOworCisgICAgbWx0cm5ndHlwb2lkID0gZ2V0X2ZuX2V4cHJfcmV0 dHlwZShmY2luZm8tJmd0O2ZsaW5mbyk7CisgICAgdHlwY2FjaGUgPSBtdWx0aXJhbmdlX2dl dF90eXBjYWNoZShmY2luZm8sIG1sdHJuZ3R5cG9pZCk7CisKKyAgICByYW5nZXMgPSBwYWxs b2MwKHJhbmdlX2NvdW50ICogc2l6ZW9mKFJhbmdlVHlwZSAqKSk7CisgICAgZm9yIChpID0g MDsgaSAmbHQ7IHJhbmdlX2NvdW50OyBpKyspCisgICAgICAgIHJhbmdlc1tpXSA9IERhdHVt R2V0UmFuZ2VUeXBlUChzdGF0ZS0mZ3Q7ZHZhbHVlc1tpXSk7CisKKyAgICBQR19SRVRVUk5f TVVMVElSQU5HRV9QKG1ha2VfbXVsdGlyYW5nZShtbHRybmd0eXBvaWQsIHR5cGNhY2hlLSZn dDtybmd0eXBlLCByYW5nZV9jb3VudCwgcmFuZ2VzKSk7Cit9Cis8L3Byb2dyYW1saXN0aW5n PgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5 PgogICA8L3ZhcmlhYmxlbGlzdD4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC94aW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC94aW5kZXguc2dtbAppbmRleCA4YzRl ZGUzMTA1Ny4uM2VlMTM2MTcxNzEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC94aW5kZXgu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwveGluZGV4LnNnbWwKQEAgLTUwOCw3ICs1MDgsNyBA QAogICAgPC90YWJsZT4KIAogICA8cGFyYT4KLSAgIEdpU1QgaW5kZXhlcyBoYXZlIHR3ZWx2 ZSBzdXBwb3J0IGZ1bmN0aW9ucywgc2V2ZW4gb2Ygd2hpY2ggYXJlIG9wdGlvbmFsLAorICAg R2lTVCBpbmRleGVzIGhhdmUgdGhpcnRlZW4gc3VwcG9ydCBmdW5jdGlvbnMsIGVpZ2h0IG9m IHdoaWNoIGFyZSBvcHRpb25hbCwKICAgIGFzIHNob3duIGluIDx4cmVmIGxpbmtlbmQ9Inhp bmRleC1naXN0LXN1cHBvcnQtdGFibGUiLz4uCiAgICAoRm9yIG1vcmUgaW5mb3JtYXRpb24g c2VlIDx4cmVmIGxpbmtlbmQ9Imdpc3QiLz4uKQogICA8L3BhcmE+CkBAIC01OTYsNiArNTk2 LDEyIEBACiAgICAgICAgIHVzZWQgYnkgdGhlIG9wY2xhc3MgKG9wdGlvbmFsKTwvZW50cnk+ CiAgICAgICAgPGVudHJ5PjEyPC9lbnRyeT4KICAgICAgIDwvcm93PgorICAgICAgPHJvdz4K KyAgICAgICA8ZW50cnk+PGZ1bmN0aW9uPnJlZmVyZW5jZWRhZ2c8L2Z1bmN0aW9uPjwvZW50 cnk+CisgICAgICAgPGVudHJ5PmFnZ3JlZ2F0ZXMgcmVmZXJlbmNlZCByb3dzJyA8bGl0ZXJh bD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPgorICAgICAgICBwYXJ0PC9lbnRyeT4KKyAg ICAgICA8ZW50cnk+MTM8L2VudHJ5PgorICAgICAgPC9yb3c+CiAgICAgIDwvdGJvZHk+CiAg ICAgPC90Z3JvdXA+CiAgICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHZhbGlkYXRlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0 dmFsaWRhdGUuYwppbmRleCA2OThlMDFlZDJmNy4uNGJkMmU1MzFkNzEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2YWxpZGF0ZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naXN0L2dpc3R2YWxpZGF0ZS5jCkBAIC0xNTEsNiArMTUxLDExIEBAIGdp c3R2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKIAkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWdu YXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSU5UMk9JRCwgdHJ1ZSwKIAkJCQkJCQkJCQkJMSwg MSwgSU5UMk9JRCk7CiAJCQkJYnJlYWs7CisJCQljYXNlIEdJU1RfUkVGRVJFTkNFRF9BR0df UFJPQzoKKwkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJv YywgSW52YWxpZE9pZCwgZmFsc2UsCisJCQkJCQkJCQkJCSAgIDEsIDEsIG9wY2ludHlwZSk7 CisJCQkJLy8gVE9ETzogbXVzdCBiZSBhZ2dyZWdhdGUKKwkJCQlicmVhazsKIAkJCWRlZmF1 bHQ6CiAJCQkJZXJlcG9ydChJTkZPLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKQEAgLTI3Miw3ICsyNzcsNyBAQCBnaXN0dmFsaWRhdGUo T2lkIG9wY2xhc3NvaWQpCiAJCWlmIChpID09IEdJU1RfRElTVEFOQ0VfUFJPQyB8fCBpID09 IEdJU1RfRkVUQ0hfUFJPQyB8fAogCQkJaSA9PSBHSVNUX0NPTVBSRVNTX1BST0MgfHwgaSA9 PSBHSVNUX0RFQ09NUFJFU1NfUFJPQyB8fAogCQkJaSA9PSBHSVNUX09QVElPTlNfUFJPQyB8 fCBpID09IEdJU1RfU09SVFNVUFBPUlRfUFJPQyB8fAotCQkJaSA9PSBHSVNUX1NUUkFUTlVN X1BST0MpCisJCQlpID09IEdJU1RfU1RSQVROVU1fUFJPQyB8fCBpID09IEdJU1RfUkVGRVJF TkNFRF9BR0dfUFJPQykKIAkJCWNvbnRpbnVlOwkJCS8qIG9wdGlvbmFsIG1ldGhvZHMgKi8K IAkJZXJlcG9ydChJTkZPLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1Rf REVGSU5JVElPTiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvYW12 YWxpZGF0ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2FtdmFsaWRhdGUuYwppbmRl eCAzMmJiNDc3ZjMyOC4uNzE2MzhjYjQwMWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9pbmRleC9hbXZhbGlkYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4 L2FtdmFsaWRhdGUuYwpAQCAtMTQ2LDcgKzE0Niw4IEBAIGlkZW50aWZ5X29wZmFtaWx5X2dy b3VwcyhDYXRDTGlzdCAqb3BybGlzdCwgQ2F0Q0xpc3QgKnByb2NsaXN0KQogICoKICAqIFRo ZSAiLi4uIiByZXByZXNlbnRzIG1heGFyZ3MgYXJndW1lbnQtdHlwZSBPSURzLiAgSWYgImV4 YWN0IiBpcyB0cnVlLCB0aGV5CiAgKiBtdXN0IG1hdGNoIHRoZSBmdW5jdGlvbiBhcmcgdHlw ZXMgZXhhY3RseSwgZWxzZSBvbmx5IGJpbmFyeS1jb2VyY2libHkuCi0gKiBJbiBhbnkgY2Fz ZSB0aGUgZnVuY3Rpb24gcmVzdWx0IHR5cGUgbXVzdCBtYXRjaCByZXN0eXBlIGV4YWN0bHku CisgKiBJbiBhbnkgY2FzZSB0aGUgZnVuY3Rpb24gcmVzdWx0IHR5cGUgbXVzdCBtYXRjaCBy ZXN0eXBlIGV4YWN0bHksCisgKiB1bmxlc3MgaXQgaXMgSW52YWxpZE9pZC4KICAqLwogYm9v bAogY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShPaWQgZnVuY2lkLCBPaWQgcmVzdHlwZSwgYm9v bCBleGFjdCwKQEAgLTE2Myw4ICsxNjQsOSBAQCBjaGVja19hbXByb2Nfc2lnbmF0dXJlKE9p ZCBmdW5jaWQsIE9pZCByZXN0eXBlLCBib29sIGV4YWN0LAogCQllbG9nKEVSUk9SLCAiY2Fj aGUgbG9va3VwIGZhaWxlZCBmb3IgZnVuY3Rpb24gJXUiLCBmdW5jaWQpOwogCXByb2Nmb3Jt ID0gKEZvcm1fcGdfcHJvYykgR0VUU1RSVUNUKHRwKTsKIAotCWlmIChwcm9jZm9ybS0+cHJv cmV0dHlwZSAhPSByZXN0eXBlIHx8IHByb2Nmb3JtLT5wcm9yZXRzZXQgfHwKLQkJcHJvY2Zv cm0tPnByb25hcmdzIDwgbWluYXJncyB8fCBwcm9jZm9ybS0+cHJvbmFyZ3MgPiBtYXhhcmdz KQorCWlmICgocHJvY2Zvcm0tPnByb3JldHR5cGUgIT0gcmVzdHlwZSAmJiBPaWRJc1ZhbGlk KHJlc3R5cGUpKQorCQl8fCBwcm9jZm9ybS0+cHJvcmV0c2V0IHx8IHByb2Nmb3JtLT5wcm9u YXJncyA8IG1pbmFyZ3MKKwkJfHwgcHJvY2Zvcm0tPnByb25hcmdzID4gbWF4YXJncykKIAkJ cmVzdWx0ID0gZmFsc2U7CiAKIAl2YV9zdGFydChhcCwgbWF4YXJncyk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3Qu aAppbmRleCAyMmRkMDRjMTQxOC4uNjQxNjc3ZTE5MWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9naXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3QuaApAQCAt NDAsNyArNDAsOCBAQAogI2RlZmluZSBHSVNUX09QVElPTlNfUFJPQwkJCQkxMAogI2RlZmlu ZSBHSVNUX1NPUlRTVVBQT1JUX1BST0MJCQkxMQogI2RlZmluZSBHSVNUX1NUUkFUTlVNX1BS T0MJCQkJMTIKLSNkZWZpbmUgR0lTVE5Qcm9jcwkJCQkJMTIKKyNkZWZpbmUgR0lTVF9SRUZF UkVOQ0VEX0FHR19QUk9DCQkxMworI2RlZmluZSBHSVNUTlByb2NzCQkJCQkxMwogCiAvKgog ICogUGFnZSBvcGFxdWUgZGF0YSBpbiBhIEdpU1QgaW5kZXggcGFnZS4KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfYW1wcm9jLmRhdAppbmRleCAzNTI1NThjMWYwNi4uMWQzZDVmY2Y0ZDggMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKQEAgLTYxMCw2ICs2MTAsOSBAQAogeyBhbXBy b2NmYW1pbHkgPT4gJ2dpc3QvcmFuZ2Vfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2FueXJh bmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnlyYW5nZScsIGFtcHJvY251bSA9PiAn MTInLAogICBhbXByb2MgPT4gJ2dpc3Rfc3RyYXRudW1faWRlbnRpdHknIH0sCit7IGFtcHJv Y2ZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYW55cmFu Z2UnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueXJhbmdlJywgYW1wcm9jbnVtID0+ICcx MycsCisgIGFtcHJvYyA9PiAncmFuZ2VfYWdnKGFueXJhbmdlKScgfSwKIHsgYW1wcm9jZmFt aWx5ID0+ICdnaXN0L25ldHdvcmtfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLAog ICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzEnLAogICBhbXBy b2MgPT4gJ2luZXRfZ2lzdF9jb25zaXN0ZW50JyB9LApAQCAtNjUwLDYgKzY1Myw5IEBACiB7 IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdhbnltdWx0aXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnltdWx0aXJh bmdlJywgYW1wcm9jbnVtID0+ICcxMicsCiAgIGFtcHJvYyA9PiAnZ2lzdF9zdHJhdG51bV9p ZGVudGl0eScgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L211bHRpcmFuZ2Vfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLAorICBhbXByb2NyaWdodHR5cGUg PT4gJ2FueW11bHRpcmFuZ2UnLCBhbXByb2NudW0gPT4gJzEzJywKKyAgYW1wcm9jID0+ICdy YW5nZV9hZ2coYW55bXVsdGlyYW5nZSknIH0sCiAKICMgZ2luCiB7IGFtcHJvY2ZhbWlseSA9 PiAnZ2luL2FycmF5X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnlhcnJheScsCi0tIAoy LjQyLjAKCg== --------------5mQnkvShJhECliiRK4zn4H0Z Content-Type: text/x-patch; charset=UTF-8; name="v23-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Disposition: attachment; filename="v23-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Transfer-Encoding: base64 RnJvbSA5NmY0Y2FlMjliMTY5ZmRmOGYzNDJkY2Y2YmVmZDgzYWE1OWYwY2E4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTI6NTg6NTEgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyMyA0LzhdIEFkZCB0ZW1wb3JhbCBGT1JFSUdOIEtFWXMK Ci0gQWRkZWQgYmlzb24gc3VwcG9ydCBmb3IgdGVtcG9yYWwgRk9SRUlHTiBLRVlzLiBUaGV5 IHNob3VsZCBoYXZlIGEKICByYW5nZSBjb2x1bW4gZm9yIHRoZSB0ZW1wb3JhbCBjb21wb25l bnQuCi0gQWRkZWQgdGVtcG9yYWwgdHJpZ2dlciBmdW5jdGlvbnMgYWtpbiB0byBleGlzdGlu ZyBSSSB0cmlnZ2VyCiAgZnVuY3Rpb25zLgotIERvbid0IHlldCBzdXBwb3J0IE9OIHtVUERB VEUsREVMRVRFfSB7Q0FTQ0FERSxTRVQgTlVMTCxTRVQgREVGQVVMVH0uCi0gQWRkZWQgcGdf ZHVtcCBzdXBwb3J0LgotIFNob3cgdGhlIGNvcnJlY3Qgc3ludGF4IGluIHBzcWwgXGQgb3V0 cHV0IGZvciBmb3JlaWduIGtleXMuCi0gQWRkZWQgdGVzdHMgYW5kIGRvY3VtZW50YXRpb24u Ci0tLQogLi4uL2J0cmVlX2dpc3QvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgIHwg IDQ4ICsKIGNvbnRyaWIvYnRyZWVfZ2lzdC9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgICB8 ICAyOCArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAg fCAgNDggKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICAg ICB8ICAyNCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAg ICAgIHwgOTE2ICsrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVu Y3MuYyAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRm dW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55ICAgICAgICAgICAgICAgICAgICAgfCAgMzcgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9yaV90cmlnZ2Vycy5jICAgICAgICAgICB8IDQwNCArKysrKysrLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgIDE5ICstCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyAgICAgICAgICAgfCAgMzEgKwogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmggICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgMjQgKwogc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggICAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMv aW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaCAgICAgICAgICAgICAgfCAgIDMgKwogc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICA2ICsKIHNy Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwog Li4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwgNTYxICsr KysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCAg ICAgfCA1MzUgKysrKysrKysrKwogMjAgZmlsZXMgY2hhbmdlZCwgMjMyOSBpbnNlcnRpb25z KCspLCAzNzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0 L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0IGIvY29udHJpYi9idHJlZV9naXN0L2V4 cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4IGJlNTJjNTIyZTg5Li42ZDRhY2Ex ZDZkNSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRf b3ZlcmxhcHMub3V0CisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9leHBlY3RlZC93aXRob3V0 X292ZXJsYXBzLm91dApAQCAtNDIsMyArNDIsNTEgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUwogICAoMSwgJ1syMDAwLTA2LTAxLDIwMDEtMDEtMDEpJyk7CiBFUlJPUjog IGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAi dGVtcG9yYWxfcm5nX3BrIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPSgxLCBbMDYt MDEtMjAwMCwwMS0wMS0yMDAxKSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5IChpZCwg dmFsaWRfYXQpPSgxLCBbMDEtMDEtMjAwMCwwMS0wMS0yMDAxKSkuCistLSBGb3JlaWduIGtl eQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorICBpZCBpbnRlZ2VyLAor ICB2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIHBhcmVudF9pZCBpbnRlZ2VyLAorICBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKSwKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2Zr IEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKyAgICBSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitcZCB0ZW1wb3Jh bF9ma19ybmcycm5nCisgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfZmtfcm5n MnJuZyIKKyAgQ29sdW1uICAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8 IERlZmF1bHQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLQorIGlkICAgICAgICB8IGludGVnZXIgICB8ICAgICAgICAgICB8IG5v dCBudWxsIHwgCisgdmFsaWRfYXQgIHwgZGF0ZXJhbmdlIHwgICAgICAgICAgIHwgbm90IG51 bGwgfCAKKyBwYXJlbnRfaWQgfCBpbnRlZ2VyICAgfCAgICAgICAgICAgfCAgICAgICAgICB8 IAorSW5kZXhlczoKKyAgICAidGVtcG9yYWxfZmtfcm5nMnJuZ19wayIgUFJJTUFSWSBLRVkg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorRm9yZWlnbi1rZXkgY29uc3RyYWlu dHM6CisgICAgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIEZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcoaWQsIFBFUklP RCB2YWxpZF9hdCkKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBw Z19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfZmtfcm5nMnJuZ19mayc7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRl ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkgUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcoaWQsIFBFUklPRCB2YWxpZF9hdCkKKygx IHJvdykKKworLS0gb2theQorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMKKyAgKDEsICdbMjAwMC0wMS0wMSwyMDAxLTAxLTAxKScsIDEpOworLS0gb2theSBzcGFu bmluZyB0d28gcGFyZW50IHJlY29yZHM6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cm5nIFZBTFVFUworICAoMiwgJ1syMDAwLTAxLTAxLDIwMDItMDEtMDEpJywgMSk7CistLSBr ZXkgaXMgbWlzc2luZworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMK KyAgKDMsICdbMjAwMC0wMS0wMSwyMDAxLTAxLTAxKScsIDMpOworRVJST1I6ICBpbnNlcnQg b3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIiB2aW9sYXRlcyBmb3Jl aWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIgorREVUQUlMOiAg S2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oMywgWzAxLTAxLTIwMDAsMDEtMDEtMjAwMSkp IGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9ybmciLgorLS0ga2V5IGV4dXN0 cyBidXQgaXMgb3V0c2lkZSByYW5nZQorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJu ZyBWQUxVRVMKKyAgKDQsICdbMjAwMS0wMS0wMSwyMDAyLTAxLTAxKScsIDIpOworRVJST1I6 ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIiB2aW9s YXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIgor REVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oMiwgWzAxLTAxLTIwMDEsMDEt MDEtMjAwMikpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9ybmciLgorLS0g a2V5IGV4dXN0cyBidXQgaXMgcGFydGx5IG91dHNpZGUgcmFuZ2UKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTCisgICg1LCAnWzIwMDAtMDEtMDEsMjAwMi0wMS0w MSknLCAyKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9yYWxf Zmtfcm5nMnJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxf Zmtfcm5nMnJuZ19mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KDIs IFswMS0wMS0yMDAwLDAxLTAxLTIwMDIpKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidGVt cG9yYWxfcm5nIi4KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9zcWwvd2l0aG91 dF9vdmVybGFwcy5zcWwgYi9jb250cmliL2J0cmVlX2dpc3Qvc3FsL3dpdGhvdXRfb3Zlcmxh cHMuc3FsCmluZGV4IDQzM2M2MDlhYjIyLi4wNDg0MTM1ZTc2NiAxMDA2NDQKLS0tIGEvY29u dHJpYi9idHJlZV9naXN0L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAorKysgYi9jb250cmli L2J0cmVlX2dpc3Qvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC0yMywzICsyMywzMSBA QCBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTCiAtLSBzaG91bGQgZmFpbDoKIElO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMKICAgKDEsICdbMjAwMC0wNi0wMSwyMDAx LTAxLTAxKScpOworCistLSBGb3JlaWduIGtleQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcgKAorICBpZCBpbnRlZ2VyLAorICB2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIHBh cmVudF9pZCBpbnRlZ2VyLAorICBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKyAgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKyAgICBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklP RCB2YWxpZF9hdCkKKyk7CitcZCB0ZW1wb3JhbF9ma19ybmcycm5nCitTRUxFQ1QgcGdfZ2V0 X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9 ICd0ZW1wb3JhbF9ma19ybmcycm5nX2ZrJzsKKworLS0gb2theQorSU5TRVJUIElOVE8gdGVt cG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKDEsICdbMjAwMC0wMS0wMSwyMDAxLTAxLTAx KScsIDEpOworLS0gb2theSBzcGFubmluZyB0d28gcGFyZW50IHJlY29yZHM6CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUworICAoMiwgJ1syMDAwLTAxLTAxLDIw MDItMDEtMDEpJywgMSk7CistLSBrZXkgaXMgbWlzc2luZworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKDMsICdbMjAwMC0wMS0wMSwyMDAxLTAxLTAxKScs IDMpOworLS0ga2V5IGV4dXN0cyBidXQgaXMgb3V0c2lkZSByYW5nZQorSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKDQsICdbMjAwMS0wMS0wMSwyMDAyLTAx LTAxKScsIDIpOworLS0ga2V5IGV4dXN0cyBidXQgaXMgcGFydGx5IG91dHNpZGUgcmFuZ2UK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTCisgICg1LCAnWzIwMDAt MDEtMDEsMjAwMi0wMS0wMSknLCAyKTsKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21s CmluZGV4IDI3OGFmMmUzODY5Li42OTA4MTc1OWQ0MyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV90YWJsZS5zZ21sCkBAIC04MSw3ICs4MSw3IEBAIENSRUFURSBbIFsgR0xPQkFMIHwgTE9D QUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1Qg RVhJCiAgIFVOSVFVRSBbIE5VTExTIFsgTk9UIF0gRElTVElOQ1QgXSAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBd IFssIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFj ZWFibGU+IFdJVEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAogICBQUklNQVJZIEtFWSAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+IFssIC4uLiBdIFssIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFdJVEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAogICBF WENMVURFIFsgVVNJTkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21l dGhvZDwvcmVwbGFjZWFibGU+IF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ ZXhjbHVkZV9lbGVtZW50PC9yZXBsYWNlYWJsZT4gV0lUSCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4g WyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wcmVkaWNhdGU8L3Jl cGxhY2VhYmxlPiApIF0gfAotICBGT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgUkVGRVJF TkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2Vh YmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVw bGFjZWFibGU+IFssIC4uLiBdICkgXQorICBGT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFss IFBFUklPRCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2 YWw8L3JlcGxhY2VhYmxlPiBdICkgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklP RCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3Jl cGxhY2VhYmxlPiBdICkgXQogICAgIFsgTUFUQ0ggRlVMTCB8IE1BVENIIFBBUlRJQUwgfCBN QVRDSCBTSU1QTEUgXSBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUKIGNsYXNzPSJwYXJhbWV0 ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0gWyBPTiBVUERBVEUgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFj ZWFibGU+IF0gfQogWyBERUZFUlJBQkxFIHwgTk9UIERFRkVSUkFCTEUgXSBbIElOSVRJQUxM WSBERUZFUlJFRCB8IElOSVRJQUxMWSBJTU1FRElBVEUgXQpAQCAtMTE1MCw4ICsxMTUwLDgg QEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVy aWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNx bC1jcmVhdGV0YWJsZS1wYXJtcy1yZWZlcmVuY2VzIj4KICAgICA8dGVybT48bGl0ZXJhbD5S RUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVw bGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1u PC9yZXBsYWNlYWJsZT4gKSBdIFsgTUFUQ0ggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm1hdGNodHlwZTwvcmVwbGFjZWFibGU+IF0gWyBPTiBERUxFVEUgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0g WyBPTiBVUERBVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFs X2FjdGlvbjwvcmVwbGFjZWFibGU+IF08L2xpdGVyYWw+IChjb2x1bW4gY29uc3RyYWludCk8 L3Rlcm0+CiAKLSAgIDx0ZXJtPjxsaXRlcmFsPkZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KQotICAgIFJFRkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRh YmxlPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5y ZWZjb2x1bW48L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKyAgIDx0ZXJtPjxsaXRlcmFs PkZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9u YW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IF0gKQorICAg IFJFRkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9y ZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1 bW48L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCBQRVJJT0QgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gXSApIF0KICAg ICBbIE1BVENIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5tYXRjaHR5cGU8L3Jl cGxhY2VhYmxlPiBdCiAgICAgWyBPTiBERUxFVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0KICAgICBbIE9OIFVQ REFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9u PC9yZXBsYWNlYWJsZT4gXTwvbGl0ZXJhbD4KQEAgLTExNjIsMTEgKzExNjIsMjkgQEAgV0lU SCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0 ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgIFRoZXNlIGNsYXVzZXMgc3BlY2lmeSBh IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQsIHdoaWNoIHJlcXVpcmVzCiAgICAgICB0aGF0IGEg Z3JvdXAgb2Ygb25lIG9yIG1vcmUgY29sdW1ucyBvZiB0aGUgbmV3IHRhYmxlIG11c3Qgb25s eQogICAgICAgY29udGFpbiB2YWx1ZXMgdGhhdCBtYXRjaCB2YWx1ZXMgaW4gdGhlIHJlZmVy ZW5jZWQKLSAgICAgIGNvbHVtbihzKSBvZiBzb21lIHJvdyBvZiB0aGUgcmVmZXJlbmNlZCB0 YWJsZS4gIElmIHRoZSA8cmVwbGFjZWFibGUKKyAgICAgIGNvbHVtbihzKSBvZiBzb21lIHJv dyBvZiB0aGUgcmVmZXJlbmNlZCB0YWJsZS4KKyAgICAgIElmIHRoZSA8cmVwbGFjZWFibGUK ICAgICAgIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IGxpc3Qg aXMgb21pdHRlZCwgdGhlCiAgICAgICBwcmltYXJ5IGtleSBvZiB0aGUgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4KICAgICAgIGlzIHVz ZWQuICBUaGUgcmVmZXJlbmNlZCBjb2x1bW5zIG11c3QgYmUgdGhlIGNvbHVtbnMgb2YgYSBu b24tZGVmZXJyYWJsZQotICAgICAgdW5pcXVlIG9yIHByaW1hcnkga2V5IGNvbnN0cmFpbnQg aW4gdGhlIHJlZmVyZW5jZWQgdGFibGUuICBUaGUgdXNlcgorICAgICAgdW5pcXVlIG9yIHBy aW1hcnkga2V5IGNvbnN0cmFpbnQgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUuCisgICAgIDwv cGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIElmIHRoZSBsYXN0IGNvbHVtbiBpcyBtYXJr ZWQgd2l0aCA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+LAorICAgICAgaXQgbXVzdCBiZSBh IHBlcmlvZCBvciByYW5nZSBjb2x1bW4sIGFuZCB0aGUgcmVmZXJlbmNlZCB0YWJsZQorICAg ICAgbXVzdCBoYXZlIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkuCisgICAgICBUaGUgbm9uLTxs aXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4gY29sdW1ucyBhcmUgdHJlYXRlZCBub3JtYWxseQor ICAgICAgKGFuZCB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBvZiB0aGVtKSwKKyAgICAg IGJ1dCB0aGUgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiBjb2x1bW4gaXMgbm90IGNvbXBh cmVkIGZvciBlcXVhbGl0eS4KKyAgICAgIEluc3RlYWQgdGhlIGNvbnN0cmFpbnQgaXMgY29u c2lkZXJlZCBzYXRpc2ZpZWQKKyAgICAgIGlmIHRoZSByZWZlcmVuY2VkIHRhYmxlIGhhcyBt YXRjaGluZyByZWNvcmRzIHdob3NlIGNvbWJpbmVkIHJhbmdlcyBjb21wbGV0ZWx5IGNvdmVy CisgICAgICB0aGUgcmVmZXJlbmNpbmcgcmVjb3JkLgorICAgICAgSW4gb3RoZXIgd29yZHMs IHRoZSByZWZlcmVuY2UgbXVzdCBoYXZlIGEgcmVmZXJlbnQgZm9yIGl0cyBlbnRpcmUgZHVy YXRpb24uCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIFRoZSB1c2VyCiAg ICAgICBtdXN0IGhhdmUgPGxpdGVyYWw+UkVGRVJFTkNFUzwvbGl0ZXJhbD4gcGVybWlzc2lv biBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZQogICAgICAgKGVpdGhlciB0aGUgd2hvbGUgdGFi bGUsIG9yIHRoZSBzcGVjaWZpYyByZWZlcmVuY2VkIGNvbHVtbnMpLiAgVGhlCiAgICAgICBh ZGRpdGlvbiBvZiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgcmVxdWlyZXMgYQpAQCAtMTI0 MCw2ICsxMjU4LDEyIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICAgICAg dmFsdWVzIG9mIHRoZSByZWZlcmVuY2luZyBjb2x1bW4ocykgdG8gdGhlIG5ldyB2YWx1ZXMg b2YgdGhlCiAgICAgICAgICAgcmVmZXJlbmNlZCBjb2x1bW5zLCByZXNwZWN0aXZlbHkuCiAg ICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIEluIGEgdGVt cG9yYWwgZm9yZWlnbiBrZXksIHRoZSBkZWxldGUvdXBkYXRlIHdpbGwgdXNlCisgICAgICAg ICAgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IHNlbWFudGljcyB0byBjb25z dHJhaW4gdGhlCisgICAgICAgICAgZWZmZWN0IHRvIHRoZSBib3VuZHMgYmVpbmcgZGVsZXRl ZC91cGRhdGVkIGluIHRoZSByZWZlcmVuY2VkIHJvdy4KKyAgICAgICAgIDwvcGFyYT4KICAg ICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtMTI1MSw2 ICsxMjc1LDEzIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICAgICAgcmVm ZXJlbmNpbmcgY29sdW1ucywgdG8gbnVsbC4gQSBzdWJzZXQgb2YgY29sdW1ucyBjYW4gb25s eSBiZQogICAgICAgICAgIHNwZWNpZmllZCBmb3IgPGxpdGVyYWw+T04gREVMRVRFPC9saXRl cmFsPiBhY3Rpb25zLgogICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAg ICAgICAgICBJbiBhIHRlbXBvcmFsIGZvcmVpZ24ga2V5LCB0aGUgY2hhbmdlIHdpbGwgdXNl IDxsaXRlcmFsPkZPUiBQT1JUSU9OCisgICAgICAgICAgT0Y8L2xpdGVyYWw+IHNlbWFudGlj cyB0byBjb25zdHJhaW4gdGhlIGVmZmVjdCB0byB0aGUgYm91bmRzIGJlaW5nCisgICAgICAg ICAgZGVsZXRlZC91cGRhdGVkIGluIHRoZSByZWZlcmVuY2VkIHJvdy4gVGhlIGNvbHVtbiBt YWtlZCB3aXRoCisgICAgICAgICAgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiB3aWxsIG5v dCBiZSBzZXQgdG8gbnVsbC4KKyAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRl bT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtMTI2NCw2ICsxMjk1LDEzIEBAIFdJ VEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xp dGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICAgICAgKFRoZXJlIG11c3QgYmUgYSBy b3cgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUgbWF0Y2hpbmcgdGhlIGRlZmF1bHQKICAgICAg ICAgICB2YWx1ZXMsIGlmIHRoZXkgYXJlIG5vdCBudWxsLCBvciB0aGUgb3BlcmF0aW9uIHdp bGwgZmFpbC4pCiAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgorICAgICAg ICAgIEluIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXksIHRoZSBjaGFuZ2Ugd2lsbCB1c2UgPGxp dGVyYWw+Rk9SIFBPUlRJT04KKyAgICAgICAgICBPRjwvbGl0ZXJhbD4gc2VtYW50aWNzIHRv IGNvbnN0cmFpbiB0aGUgZWZmZWN0IHRvIHRoZSBib3VuZHMgYmVpbmcKKyAgICAgICAgICBk ZWxldGVkL3VwZGF0ZWQgaW4gdGhlIHJlZmVyZW5jZWQgcm93LiBUaGUgY29sdW1uIG1hcmtl ZCB3aXRoCisgICAgICAgICAgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiB3aXRoIG5vdCBi ZSBzZXQgdG8gYSBkZWZhdWx0IHZhbHVlLgorICAgICAgICAgPC9wYXJhPgogICAgICAgICA8 L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgPC92YXJpYWJsZWxp c3Q+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDUyZjMxOTQ3OTFkLi41N2Jm N2UwMzc0NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTIxODksOCArMjE4 OSw5IEBAIENvbXB1dGVJbmRleEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZvLAogCQkJCW9w bmFtZSA9ICJlcXVhbHMiOwogCQkJfQogCQkJR2V0T3BlcmF0b3JGcm9tV2VsbEtub3duU3Ry YXRlZ3kob3BjbGFzc09pZHNbYXR0bl0sCi0JCQkJCQkJCQkJCSBhdHR0eXBlLAorCQkJCQkJ CQkJCQkgSW52YWxpZE9pZCwKIAkJCQkJCQkJCQkJIG9wbmFtZSwKKwkJCQkJCQkJCQkJICJX SVRIT1VUIE9WRVJMQVBTIGNvbnN0cmFpbnQiLAogCQkJCQkJCQkJCQkgJm9waWQsCiAJCQkJ CQkJCQkJCSAmc3RyYXQpOwogCQkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25PcHNbYXR0bl0g PSBvcGlkOwpAQCAtMjQzMSw4ICsyNDMyLDkgQEAgR2V0RGVmYXVsdE9wQ2xhc3MoT2lkIHR5 cGVfaWQsIE9pZCBhbV9pZCkKICAqIEdldE9wZXJhdG9yRnJvbVdlbGxLbm93blN0cmF0ZWd5 CiAgKgogICogb3BjbGFzcyAtIHRoZSBvcGNsYXNzIHRvIHVzZQotICogYXR0dHlwZSAtIHRo ZSB0eXBlIHRvIGFzayBhYm91dAorICogcmhzdHlwZSAtIHRoZSB0eXBlIGZvciB0aGUgcmln aHQtaGFuZCBzaWRlCiAgKiBvcG5hbWUgLSB1c2VkIHRvIGJ1aWxkIGVycm9yIG1lc3NhZ2Vz CisgKiBjb250ZXh0IC0gdXNlZCB0byBidWlsZCBlcnJvciBtZXNzYWdlcwogICogb3BpZCAt IGhvbGRzIHRoZSBvcGVyYXRvciB3ZSBmb3VuZAogICogc3RyYXQgLSBob2xkcyB0aGUgaW5w dXQgYW5kIG91dHB1dCBzdHJhdGVneSBudW1iZXIKICAqCkBAIC0yNDQ4LDggKzI0NTAsOSBA QCBHZXREZWZhdWx0T3BDbGFzcyhPaWQgdHlwZV9pZCwgT2lkIGFtX2lkKQogICovCiB2b2lk CiBHZXRPcGVyYXRvckZyb21XZWxsS25vd25TdHJhdGVneShPaWQgb3BjbGFzcywKLQkJCQkJ CQkJIE9pZCBhdHR0eXBlLAorCQkJCQkJCQkgT2lkIHJoc3R5cGUsCiAJCQkJCQkJCSBjb25z dCBjaGFyICpvcG5hbWUsCisJCQkJCQkJCSBjb25zdCBjaGFyICpjb250ZXh0LAogCQkJCQkJ CQkgT2lkICpvcGlkLAogCQkJCQkJCQkgU3RyYXRlZ3lOdW1iZXIgKnN0cmF0KQogewpAQCAt MjQ3MywxMiArMjQ3NiwxOSBAQCBHZXRPcGVyYXRvckZyb21XZWxsS25vd25TdHJhdGVneShP aWQgb3BjbGFzcywKIAkJaWYgKCpzdHJhdCA9PSBJbnZhbGlkU3RyYXRlZ3kpCiAJCQllcmVw b3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAot CQkJCQkgZXJybXNnKCJubyAlcyBvcGVyYXRvciBmb3VuZCBmb3IgV0lUSE9VVCBPVkVSTEFQ UyBjb25zdHJhaW50Iiwgb3BuYW1lKSwKKwkJCQkJIGVycm1zZygibm8gJXMgb3BlcmF0b3Ig Zm91bmQgZm9yICVzIiwgb3BuYW1lLCBjb250ZXh0KSwKIAkJCQkJIGVycmRldGFpbCgiQ291 bGQgbm90IHRyYW5zbGF0ZSBzdHJhdGVneSBudW1iZXIgJXUgZm9yIG9wY2xhc3MgJWQuIiwK IAkJCQkJCSBvcHN0cmF0LCBvcGNsYXNzKSwKIAkJCQkJIGVycmhpbnQoIkRlZmluZSBhIHN0 cmF0bnVtIHN1cHBvcnQgZnVuY3Rpb24gZm9yIHlvdXIgR2lTVCBvcGNsYXNzLiIpKSk7CiAK LQkJKm9waWQgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBvcGNpbnR5cGUsIG9w Y2ludHlwZSwgKnN0cmF0KTsKKwkJLyoKKwkJICogV2UgcGFyYW1ldGVyaXplIHJoc3R5cGUg c28gZm9yZWlnbiBrZXlzIGNhbiBhc2sgZm9yIGEgPEAgb3BlcmF0b3IKKwkJICogd2hvc2Ug cmhzIG1hdGNoZXMgdGhlIGFnZ3JlZ2F0ZSBmdW5jdGlvbi4gRm9yIGV4YW1wbGUgcmFuZ2Vf YWdnCisJCSAqIHJldHVybnMgYW55bXVsdGlyYW5nZS4KKwkJICovCisJCWlmICghT2lkSXNW YWxpZChyaHN0eXBlKSkKKwkJCXJoc3R5cGUgPSBvcGNpbnR5cGU7CisJCSpvcGlkID0gZ2V0 X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50eXBlLCByaHN0eXBlLCAqc3RyYXQp OwogCX0KIAogCWlmICghT2lkSXNWYWxpZCgqb3BpZCkpCkBAIC0yNTAwLDExICsyNTEwLDEx IEBAIEdldE9wZXJhdG9yRnJvbVdlbGxLbm93blN0cmF0ZWd5KE9pZCBvcGNsYXNzLAogCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNU KSwKLQkJCQkgZXJybXNnKCJubyAlcyBvcGVyYXRvciBmb3VuZCBmb3IgV0lUSE9VVCBPVkVS TEFQUyBjb25zdHJhaW50Iiwgb3BuYW1lKSwKKwkJCQkgZXJybXNnKCJubyAlcyBvcGVyYXRv ciBmb3VuZCBmb3IgJXMiLCBvcG5hbWUsIGNvbnRleHQpLAogCQkJCSBlcnJkZXRhaWwoIlRo ZXJlIG11c3QgYmUgYW4gJXMgb3BlcmF0b3Igd2l0aGluIG9wZmFtaWx5IFwiJXNcIiBmb3Ig dHlwZSBcIiVzXCIuIiwKIAkJCQkJCSAgIG9wbmFtZSwKIAkJCQkJCSAgIE5hbWVTdHIob3Bm Zm9ybS0+b3BmbmFtZSksCi0JCQkJCQkgICBmb3JtYXRfdHlwZV9iZShhdHR0eXBlKSkpKTsK KwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKG9wY2ludHlwZSkpKSk7CiAJfQogfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGU4NjIyYjdhOGU1Li5jZGVmMTc0ZWUyNCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2lu Y2x1ZGUgImFjY2Vzcy9hdHRtYXAuaCIKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKKyNp bmNsdWRlICJhY2Nlc3MvZ2lzdC5oIgogI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKICNp bmNsdWRlICJhY2Nlc3MvaGVhcGFtX3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4 YWN0LmgiCkBAIC0yMTIsOCArMjEzLDExIEBAIHR5cGVkZWYgc3RydWN0IE5ld0NvbnN0cmFp bnQKIAlDb25zdHJUeXBlCWNvbnR5cGU7CQkvKiBDSEVDSyBvciBGT1JFSUdOICovCiAJT2lk CQkJcmVmcmVsaWQ7CQkvKiBQSyByZWwsIGlmIEZPUkVJR04gKi8KIAlPaWQJCQlyZWZpbmRp ZDsJCS8qIE9JRCBvZiBQSydzIGluZGV4LCBpZiBGT1JFSUdOICovCisJYm9vbAkJY29ud2l0 aHBlcmlvZDsJLyogV2hldGhlciB0aGUgbmV3IEZPUkVJR04gS0VZIHVzZXMgUEVSSU9EICov CiAJT2lkCQkJY29uaWQ7CQkJLyogT0lEIG9mIHBnX2NvbnN0cmFpbnQgZW50cnksIGlmIEZP UkVJR04gKi8KIAlOb2RlCSAgICpxdWFsOwkJCS8qIENoZWNrIGV4cHIgb3IgQ09OU1RSX0ZP UkVJR04gQ29uc3RyYWludCAqLworCU9pZAkJICAgKm9wZXJvaWRzOwkJLyogb3BlciBvaWRz IGZvciBGT1JFSUdOIEtFWSB3aXRoIFBFUklPRCAqLworCU9pZAkJICAgKnByb2NvaWRzOwkJ LyogcHJvYyBvaWRzIGZvciBGT1JFSUdOIEtFWSB3aXRoIFBFUklPRCAqLwogCUV4cHJTdGF0 ZSAgKnF1YWxzdGF0ZTsJCS8qIEV4ZWN1dGlvbiBzdGF0ZSBmb3IgQ0hFQ0sgZXhwciAqLwog fSBOZXdDb25zdHJhaW50OwogCkBAIC0zODQsMTcgKzM4OCwyMCBAQCBzdGF0aWMgaW50CXRy YW5zZm9ybUNvbHVtbk5hbWVMaXN0KE9pZCByZWxJZCwgTGlzdCAqY29sTGlzdCwKIAkJCQkJ CQkJCWludDE2ICphdHRudW1zLCBPaWQgKmF0dHR5cGlkcyk7CiBzdGF0aWMgaW50CXRyYW5z Zm9ybUZrZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAog CQkJCQkJCQkJICAgTGlzdCAqKmF0dG5hbWVsaXN0LAorCQkJCQkJCQkJICAgTm9kZSAqKnBr X3BlcmlvZCwKIAkJCQkJCQkJCSAgIGludDE2ICphdHRudW1zLCBPaWQgKmF0dHR5cGlkcywK KwkJCQkJCQkJCSAgIGludDE2ICpwZXJpb2RhdHRudW1zLCBPaWQgKnBlcmlvZGF0dHR5cGlk cywKIAkJCQkJCQkJCSAgIE9pZCAqb3BjbGFzc2VzKTsKIHN0YXRpYyBPaWQJdHJhbnNmb3Jt RmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJCQkJCQlpbnQgbnVtYXR0cnMs IGludDE2ICphdHRudW1zLAorCQkJCQkJCQkJYm9vbCBpc190ZW1wb3JhbCwgaW50MTYgcGVy aW9kYXR0bnVtLAogCQkJCQkJCQkJT2lkICpvcGNsYXNzZXMpOwogc3RhdGljIHZvaWQgY2hl Y2tGa2V5UGVybWlzc2lvbnMoUmVsYXRpb24gcmVsLCBpbnQxNiAqYXR0bnVtcywgaW50IG5h dHRzKTsKIHN0YXRpYyBDb2VyY2lvblBhdGhUeXBlIGZpbmRGa2V5Q2FzdChPaWQgdGFyZ2V0 VHlwZUlkLCBPaWQgc291cmNlVHlwZUlkLAogCQkJCQkJCQkJIE9pZCAqZnVuY2lkKTsKIHN0 YXRpYyB2b2lkIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwK IAkJCQkJCQkJCQkgUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBwa3JlbCwKLQkJCQkJCQkJCQkg T2lkIHBraW5kT2lkLCBPaWQgY29uc3RyYWludE9pZCk7CisJCQkJCQkJCQkJIE9pZCBwa2lu ZE9pZCwgT2lkIGNvbnN0cmFpbnRPaWQsIGJvb2wgdGVtcG9yYWwpOwogc3RhdGljIHZvaWQg QVRDb250cm9sbGVyKEFsdGVyVGFibGVTdG10ICpwYXJzZXRyZWUsCiAJCQkJCQkgUmVsYXRp b24gcmVsLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UsIExPQ0tNT0RFIGxvY2ttb2RlLAog CQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CkBAIC01MDcsNyAr NTE0LDggQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgYWRkRmtSZWN1cnNlUmVmZXJlbmNlZChM aXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmEKIAkJCQkJCQkJCQkJT2lkICpw ZmVxb3BlcmF0b3JzLCBPaWQgKnBwZXFvcGVyYXRvcnMsIE9pZCAqZmZlcW9wZXJhdG9ycywK IAkJCQkJCQkJCQkJaW50IG51bWZrZGVsc2V0Y29scywgaW50MTYgKmZrZGVsc2V0Y29scywK IAkJCQkJCQkJCQkJYm9vbCBvbGRfY2hlY2tfb2ssCi0JCQkJCQkJCQkJCU9pZCBwYXJlbnRE ZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcik7CisJCQkJCQkJCQkJCU9pZCBwYXJl bnREZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlciwKKwkJCQkJCQkJCQkJYm9vbCBp c190ZW1wb3JhbCk7CiBzdGF0aWMgdm9pZCB2YWxpZGF0ZUZrT25EZWxldGVTZXRDb2x1bW5z KGludCBudW1ma3MsIGNvbnN0IGludDE2ICpma2F0dG51bXMsCiAJCQkJCQkJCQkJIGludCBu dW1ma3NldGNvbHMsIGNvbnN0IGludDE2ICpma3NldGNvbHNhdHRudW1zLAogCQkJCQkJCQkJ CSBMaXN0ICpma3NldGNvbHMpOwpAQCAtNTE3LDcgKzUyNSw5IEBAIHN0YXRpYyB2b2lkIGFk ZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29u c3RyYWludCwKIAkJCQkJCQkJCU9pZCAqcGZlcW9wZXJhdG9ycywgT2lkICpwcGVxb3BlcmF0 b3JzLCBPaWQgKmZmZXFvcGVyYXRvcnMsCiAJCQkJCQkJCQlpbnQgbnVtZmtkZWxzZXRjb2xz LCBpbnQxNiAqZmtkZWxzZXRjb2xzLAogCQkJCQkJCQkJYm9vbCBvbGRfY2hlY2tfb2ssIExP Q0tNT0RFIGxvY2ttb2RlLAotCQkJCQkJCQkJT2lkIHBhcmVudEluc1RyaWdnZXIsIE9pZCBw YXJlbnRVcGRUcmlnZ2VyKTsKKwkJCQkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2VyLCBPaWQg cGFyZW50VXBkVHJpZ2dlciwKKwkJCQkJCQkJCWJvb2wgaXNfdGVtcG9yYWwpOworCiBzdGF0 aWMgdm9pZCBDbG9uZUZvcmVpZ25LZXlDb25zdHJhaW50cyhMaXN0ICoqd3F1ZXVlLCBSZWxh dGlvbiBwYXJlbnRSZWwsCiAJCQkJCQkJCQkgICBSZWxhdGlvbiBwYXJ0aXRpb25SZWwpOwog c3RhdGljIHZvaWQgQ2xvbmVGa1JlZmVyZW5jZWQoUmVsYXRpb24gcGFyZW50UmVsLCBSZWxh dGlvbiBwYXJ0aXRpb25SZWwpOwpAQCAtNTQ5LDYgKzU1OSwxMiBAQCBzdGF0aWMgdm9pZCBH ZXRGb3JlaWduS2V5Q2hlY2tUcmlnZ2VycyhSZWxhdGlvbiB0cmlncmVsLAogCQkJCQkJCQkJ ICAgT2lkIGNvbm9pZCwgT2lkIGNvbmZyZWxpZCwgT2lkIGNvbnJlbGlkLAogCQkJCQkJCQkJ ICAgT2lkICppbnNlcnRUcmlnZ2VyT2lkLAogCQkJCQkJCQkJICAgT2lkICp1cGRhdGVUcmln Z2VyT2lkKTsKK3N0YXRpYyB2b2lkIEZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMoQ29uc3Ry YWludCAqZmtjb25zdHJhaW50LAorCQkJCQlBbHRlcmVkVGFibGVJbmZvICp0YWIsIGludCBp LCBpbnQxNiAqZmthdHRudW0sCisJCQkJCWJvb2wgKm9sZF9jaGVja19vaywgTGlzdENlbGwg KipvbGRfcGZlcW9wX2l0ZW0sCisJCQkJCU9pZCBwa3R5cGUsIE9pZCBma3R5cGUsIE9pZCBv cGNsYXNzLAorCQkJCQlib29sIGlzX3RlbXBvcmFsLCBib29sIGZvcl9vdmVybGFwcywKKwkJ CQkJT2lkICpwZmVxb3BPdXQsIE9pZCAqcHBlcW9wT3V0LCBPaWQgKmZmZXFvcE91dCk7CiBz dGF0aWMgdm9pZCBBVEV4ZWNEcm9wQ29uc3RyYWludChSZWxhdGlvbiByZWwsIGNvbnN0IGNo YXIgKmNvbnN0ck5hbWUsCiAJCQkJCQkJCSBEcm9wQmVoYXZpb3IgYmVoYXZpb3IsIGJvb2wg cmVjdXJzZSwKIAkJCQkJCQkJIGJvb2wgbWlzc2luZ19vaywgTE9DS01PREUgbG9ja21vZGUp OwpAQCAtNTkzMSw3ICs1OTQ3LDggQEAgQVRSZXdyaXRlVGFibGVzKEFsdGVyVGFibGVTdG10 ICpwYXJzZXRyZWUsIExpc3QgKip3cXVldWUsIExPQ0tNT0RFIGxvY2ttb2RlLAogCiAJCQkJ dmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChma2NvbnN0cmFpbnQtPmNvbm5hbWUsIHJl bCwgcmVmcmVsLAogCQkJCQkJCQkJCQkgY29uLT5yZWZpbmRpZCwKLQkJCQkJCQkJCQkJIGNv bi0+Y29uaWQpOworCQkJCQkJCQkJCQkgY29uLT5jb25pZCwKKwkJCQkJCQkJCQkJIGNvbi0+ Y29ud2l0aHBlcmlvZCk7CiAKIAkJCQkvKgogCQkJCSAqIE5vIG5lZWQgdG8gbWFyayB0aGUg Y29uc3RyYWludCByb3cgYXMgdmFsaWRhdGVkLCB3ZSBkaWQKQEAgLTk3NzAsNiArOTc4Nywx MyBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRU YWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCU9pZAkJCXBwZXFvcGVyYXRvcnNbSU5E RVhfTUFYX0tFWVNdID0gezB9OwogCU9pZAkJCWZmZXFvcGVyYXRvcnNbSU5ERVhfTUFYX0tF WVNdID0gezB9OwogCWludDE2CQlma2RlbHNldGNvbHNbSU5ERVhfTUFYX0tFWVNdID0gezB9 OworCWJvb2wJCWlzX3RlbXBvcmFsOworCWludDE2CQlwa3BlcmlvZGF0dG51bSA9IDA7CisJ aW50MTYJCWZrcGVyaW9kYXR0bnVtID0gMDsKKwlPaWQJCQlwa3BlcmlvZHR5cG9pZCA9IDA7 CisJT2lkCQkJZmtwZXJpb2R0eXBvaWQgPSAwOworCU9pZAkJCXBlcmlvZG9wZXJvaWQ7CisJ T2lkCQkJcGVyaW9kcHJvY29pZDsKIAlpbnQJCQlpOwogCWludAkJCW51bWZrcywKIAkJCQlu dW1wa3MsCkBAIC05ODY0LDYgKzk4ODgsMTcgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWlu dChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwK IAludW1ma3MgPSB0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHJl bCksCiAJCQkJCQkJCQkgZmtjb25zdHJhaW50LT5ma19hdHRycywKIAkJCQkJCQkJCSBma2F0 dG51bSwgZmt0eXBvaWQpOworCWlzX3RlbXBvcmFsID0gKGZrY29uc3RyYWludC0+cGtfcGVy aW9kIHx8IGZrY29uc3RyYWludC0+ZmtfcGVyaW9kKTsKKwlpZiAoaXNfdGVtcG9yYWwpCisJ eworCQlpZiAoIWZrY29uc3RyYWludC0+ZmtfcGVyaW9kKQorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0ZPUkVJR05fS0VZKSwKKwkJCQkJZXJy bXNnKCJmb3JlaWduIGtleSB1c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBi dXQgbm90IHRoZSByZWZlcmVuY2luZyB0YWJsZSIpKSk7CisJCXRyYW5zZm9ybUNvbHVtbk5h bWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKKwkJCQkJCQkgIGxpc3RfbWFrZTEoZmtj b25zdHJhaW50LT5ma19wZXJpb2QpLAorCQkJCQkJCSAgJmZrcGVyaW9kYXR0bnVtLCAmZmtw ZXJpb2R0eXBvaWQpOworCX0KIAogCW51bWZrZGVsc2V0Y29scyA9IHRyYW5zZm9ybUNvbHVt bk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKIAkJCQkJCQkJCQkJICBma2NvbnN0 cmFpbnQtPmZrX2RlbF9zZXRfY29scywKQEAgLTk4ODIsMTYgKzk5MTcsMzggQEAgQVRBZGRG b3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0 YWIsIFJlbGF0aW9uIHJlbCwKIAl7CiAJCW51bXBrcyA9IHRyYW5zZm9ybUZrZXlHZXRQcmlt YXJ5S2V5KHBrcmVsLCAmaW5kZXhPaWQsCiAJCQkJCQkJCQkJCSZma2NvbnN0cmFpbnQtPnBr X2F0dHJzLAorCQkJCQkJCQkJCQkmZmtjb25zdHJhaW50LT5wa19wZXJpb2QsCiAJCQkJCQkJ CQkJCXBrYXR0bnVtLCBwa3R5cG9pZCwKKwkJCQkJCQkJCQkJJnBrcGVyaW9kYXR0bnVtLCAm cGtwZXJpb2R0eXBvaWQsCiAJCQkJCQkJCQkJCW9wY2xhc3Nlcyk7CisKKwkJLyogSWYgdGhl IHByaW1hcnkga2V5IHVzZXMgV0lUSE9VVCBPVkVSTEFQUywgdGhlIGZrIG11c3QgdXNlIFBF UklPRCAqLworCQlpZiAocGtwZXJpb2RhdHRudW0gJiYgIWZrcGVyaW9kYXR0bnVtKQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0ZPUkVJR05f S0VZKSwKKwkJCQkJZXJybXNnKCJmb3JlaWduIGtleSB1c2VzIFBFUklPRCBvbiB0aGUgcmVm ZXJlbmNlZCB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVuY2luZyB0YWJsZSIpKSk7CiAJfQog CWVsc2UKIAl7CiAJCW51bXBrcyA9IHRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9u R2V0UmVsaWQocGtyZWwpLAogCQkJCQkJCQkJCSBma2NvbnN0cmFpbnQtPnBrX2F0dHJzLAog CQkJCQkJCQkJCSBwa2F0dG51bSwgcGt0eXBvaWQpOworCQlpZiAoaXNfdGVtcG9yYWwpCisJ CXsKKwkJCS8qIFNpbmNlIHdlIGdvdCBwa19hdHRycywgd2Ugc2hvdWxkIGhhdmUgcGtfcGVy aW9kIHRvby4gKi8KKwkJCWlmICghZmtjb25zdHJhaW50LT5wa19wZXJpb2QpCisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GT1JFSUdOX0tF WSksCisJCQkJCQllcnJtc2coImZvcmVpZ24ga2V5IHVzZXMgUEVSSU9EIG9uIHRoZSByZWZl cmVuY2luZyB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVuY2VkIHRhYmxlIikpKTsKKworCQkJ dHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoUmVsYXRpb25HZXRSZWxpZChwa3JlbCksCisJCQkJ CQkJCQlsaXN0X21ha2UxKGZrY29uc3RyYWludC0+cGtfcGVyaW9kKSwKKwkJCQkJCQkJCSZw a3BlcmlvZGF0dG51bSwgJnBrcGVyaW9kdHlwb2lkKTsKKwkJfQorCiAJCS8qIExvb2sgZm9y IGFuIGluZGV4IG1hdGNoaW5nIHRoZSBjb2x1bW4gbGlzdCAqLwogCQlpbmRleE9pZCA9IHRy YW5zZm9ybUZrZXlDaGVja0F0dHJzKHBrcmVsLCBudW1wa3MsIHBrYXR0bnVtLAorCQkJCQkJ CQkJCSAgIGlzX3RlbXBvcmFsLCBwa3BlcmlvZGF0dG51bSwKIAkJCQkJCQkJCQkgICBvcGNs YXNzZXMpOwogCX0KIApAQCAtOTkwMCwzNCArOTk1Nyw2IEBAIEFUQWRkRm9yZWlnbktleUNv bnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlv biByZWwsCiAJICovCiAJY2hlY2tGa2V5UGVybWlzc2lvbnMocGtyZWwsIHBrYXR0bnVtLCBu dW1wa3MpOwogCi0JLyoKLQkgKiBDaGVjayBzb21lIHRoaW5ncyBmb3IgZ2VuZXJhdGVkIGNv bHVtbnMuCi0JICovCi0JZm9yIChpID0gMDsgaSA8IG51bWZrczsgaSsrKQotCXsKLQkJY2hh cgkJYXR0Z2VuZXJhdGVkID0gVHVwbGVEZXNjQXR0cihSZWxhdGlvbkdldERlc2NyKHJlbCks IGZrYXR0bnVtW2ldIC0gMSktPmF0dGdlbmVyYXRlZDsKLQotCQlpZiAoYXR0Z2VuZXJhdGVk KQotCQl7Ci0JCQkvKgotCQkJICogQ2hlY2sgcmVzdHJpY3Rpb25zIG9uIFVQREFURS9ERUxF VEUgYWN0aW9ucywgcGVyIFNRTCBzdGFuZGFyZAotCQkJICovCi0JCQlpZiAoZmtjb25zdHJh aW50LT5ma191cGRfYWN0aW9uID09IEZLQ09OU1RSX0FDVElPTl9TRVROVUxMIHx8Ci0JCQkJ Zmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uID09IEZLQ09OU1RSX0FDVElPTl9TRVRERUZB VUxUIHx8Ci0JCQkJZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uID09IEZLQ09OU1RSX0FD VElPTl9DQVNDQURFKQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJD T0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJCQkgZXJybXNnKCJpbnZhbGlkICVzIGFjdGlvbiBm b3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCBjb250YWluaW5nIGdlbmVyYXRlZCBjb2x1bW4i LAotCQkJCQkJCQkiT04gVVBEQVRFIikpKTsKLQkJCWlmIChma2NvbnN0cmFpbnQtPmZrX2Rl bF9hY3Rpb24gPT0gRktDT05TVFJfQUNUSU9OX1NFVE5VTEwgfHwKLQkJCQlma2NvbnN0cmFp bnQtPmZrX2RlbF9hY3Rpb24gPT0gRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQpCi0JCQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK LQkJCQkJCSBlcnJtc2coImludmFsaWQgJXMgYWN0aW9uIGZvciBmb3JlaWduIGtleSBjb25z dHJhaW50IGNvbnRhaW5pbmcgZ2VuZXJhdGVkIGNvbHVtbiIsCi0JCQkJCQkJCSJPTiBERUxF VEUiKSkpOwotCQl9Ci0JfQotCiAJLyoKIAkgKiBMb29rIHVwIHRoZSBlcXVhbGl0eSBvcGVy YXRvcnMgdG8gdXNlIGluIHRoZSBjb25zdHJhaW50LgogCSAqCkBAIC05OTUwLDE4OSArOTk3 OSw2OCBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVy ZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCiAJZm9yIChpID0gMDsgaSA8IG51 bXBrczsgaSsrKQogCXsKLQkJT2lkCQkJcGt0eXBlID0gcGt0eXBvaWRbaV07Ci0JCU9pZAkJ CWZrdHlwZSA9IGZrdHlwb2lkW2ldOwotCQlPaWQJCQlma3R5cGVkOwotCQlIZWFwVHVwbGUJ Y2xhX2h0OwotCQlGb3JtX3BnX29wY2xhc3MgY2xhX3R1cDsKLQkJT2lkCQkJYW1pZDsKLQkJ T2lkCQkJb3BmYW1pbHk7Ci0JCU9pZAkJCW9wY2ludHlwZTsKLQkJT2lkCQkJcGZlcW9wOwot CQlPaWQJCQlwcGVxb3A7Ci0JCU9pZAkJCWZmZXFvcDsKLQkJaW50MTYJCWVxc3RyYXRlZ3k7 Ci0JCU9pZAkJCXBmZXFvcF9yaWdodDsKLQotCQkvKiBXZSBuZWVkIHNldmVyYWwgZmllbGRz IG91dCBvZiB0aGUgcGdfb3BjbGFzcyBlbnRyeSAqLwotCQljbGFfaHQgPSBTZWFyY2hTeXND YWNoZTEoQ0xBT0lELCBPYmplY3RJZEdldERhdHVtKG9wY2xhc3Nlc1tpXSkpOwotCQlpZiAo IUhlYXBUdXBsZUlzVmFsaWQoY2xhX2h0KSkKLQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29r dXAgZmFpbGVkIGZvciBvcGNsYXNzICV1Iiwgb3BjbGFzc2VzW2ldKTsKLQkJY2xhX3R1cCA9 IChGb3JtX3BnX29wY2xhc3MpIEdFVFNUUlVDVChjbGFfaHQpOwotCQlhbWlkID0gY2xhX3R1 cC0+b3BjbWV0aG9kOwotCQlvcGZhbWlseSA9IGNsYV90dXAtPm9wY2ZhbWlseTsKLQkJb3Bj aW50eXBlID0gY2xhX3R1cC0+b3BjaW50eXBlOwotCQlSZWxlYXNlU3lzQ2FjaGUoY2xhX2h0 KTsKLQotCQkvKgotCQkgKiBDaGVjayBpdCdzIGEgYnRyZWU7IGN1cnJlbnRseSB0aGlzIGNh biBuZXZlciBmYWlsIHNpbmNlIG5vIG90aGVyCi0JCSAqIGluZGV4IEFNcyBzdXBwb3J0IHVu aXF1ZSBpbmRleGVzLiAgSWYgd2UgZXZlciBkaWQgaGF2ZSBvdGhlciB0eXBlcwotCQkgKiBv ZiB1bmlxdWUgaW5kZXhlcywgd2UnZCBuZWVkIGEgd2F5IHRvIGRldGVybWluZSB3aGljaCBv cGVyYXRvcgotCQkgKiBzdHJhdGVneSBudW1iZXIgaXMgZXF1YWxpdHkuICAoSXMgaXQgcmVh c29uYWJsZSB0byBpbnNpc3QgdGhhdAotCQkgKiBldmVyeSBzdWNoIGluZGV4IEFNIHVzZSBi dHJlZSdzIG51bWJlciBmb3IgZXF1YWxpdHk/KQotCQkgKi8KLQkJaWYgKGFtaWQgIT0gQlRS RUVfQU1fT0lEKQotCQkJZWxvZyhFUlJPUiwgIm9ubHkgYi10cmVlIGluZGV4ZXMgYXJlIHN1 cHBvcnRlZCBmb3IgZm9yZWlnbiBrZXlzIik7Ci0JCWVxc3RyYXRlZ3kgPSBCVEVxdWFsU3Ry YXRlZ3lOdW1iZXI7Ci0KLQkJLyoKLQkJICogVGhlcmUgaGFkIGJldHRlciBiZSBhIHByaW1h cnkgZXF1YWxpdHkgb3BlcmF0b3IgZm9yIHRoZSBpbmRleC4KLQkJICogV2UnbGwgdXNlIGl0 IGZvciBQSyA9IFBLIGNvbXBhcmlzb25zLgotCQkgKi8KLQkJcHBlcW9wID0gZ2V0X29wZmFt aWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsCi0JCQkJCQkJCQkg ZXFzdHJhdGVneSk7Ci0KLQkJaWYgKCFPaWRJc1ZhbGlkKHBwZXFvcCkpCi0JCQllbG9nKEVS Uk9SLCAibWlzc2luZyBvcGVyYXRvciAlZCgldSwldSkgaW4gb3BmYW1pbHkgJXUiLAotCQkJ CSBlcXN0cmF0ZWd5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwgb3BmYW1pbHkpOwotCi0JCS8q Ci0JCSAqIEFyZSB0aGVyZSBlcXVhbGl0eSBvcGVyYXRvcnMgdGhhdCB0YWtlIGV4YWN0bHkg dGhlIEZLIHR5cGU/IEFzc3VtZQotCQkgKiB3ZSBzaG91bGQgbG9vayB0aHJvdWdoIGFueSBk b21haW4gaGVyZS4KLQkJICovCi0JCWZrdHlwZWQgPSBnZXRCYXNlVHlwZShma3R5cGUpOwor CQlGaW5kRktDb21wYXJpc29uT3BlcmF0b3JzKAorCQkJCWZrY29uc3RyYWludCwgdGFiLCBp LCBma2F0dG51bSwKKwkJCQkmb2xkX2NoZWNrX29rLCAmb2xkX3BmZXFvcF9pdGVtLAorCQkJ CXBrdHlwb2lkW2ldLCBma3R5cG9pZFtpXSwgb3BjbGFzc2VzW2ldLAorCQkJCWlzX3RlbXBv cmFsLCBmYWxzZSwKKwkJCQkmcGZlcW9wZXJhdG9yc1tpXSwgJnBwZXFvcGVyYXRvcnNbaV0s ICZmZmVxb3BlcmF0b3JzW2ldKTsKKwl9CisJaWYgKGlzX3RlbXBvcmFsKSB7CisJCXBrYXR0 bnVtW251bXBrc10gPSBwa3BlcmlvZGF0dG51bTsKKwkJcGt0eXBvaWRbbnVtcGtzXSA9IHBr cGVyaW9kdHlwb2lkOworCQlma2F0dG51bVtudW1wa3NdID0gZmtwZXJpb2RhdHRudW07CisJ CWZrdHlwb2lkW251bXBrc10gPSBma3BlcmlvZHR5cG9pZDsKIAotCQlwZmVxb3AgPSBnZXRf b3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBvcGNpbnR5cGUsIGZrdHlwZWQsCi0JCQkJCQkJ CQkgZXFzdHJhdGVneSk7Ci0JCWlmIChPaWRJc1ZhbGlkKHBmZXFvcCkpCi0JCXsKLQkJCXBm ZXFvcF9yaWdodCA9IGZrdHlwZWQ7Ci0JCQlmZmVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVy KG9wZmFtaWx5LCBma3R5cGVkLCBma3R5cGVkLAotCQkJCQkJCQkJCSBlcXN0cmF0ZWd5KTsK LQkJfQotCQllbHNlCi0JCXsKLQkJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KLQkJCXBm ZXFvcF9yaWdodCA9IEludmFsaWRPaWQ7Ci0JCQlmZmVxb3AgPSBJbnZhbGlkT2lkOwotCQl9 CisJCUZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMoCisJCQkJZmtjb25zdHJhaW50LCB0YWIs IG51bXBrcywgZmthdHRudW0sCisJCQkJJm9sZF9jaGVja19vaywgJm9sZF9wZmVxb3BfaXRl bSwKKwkJCQlwa3BlcmlvZHR5cG9pZCwgZmtwZXJpb2R0eXBvaWQsIG9wY2xhc3Nlc1tudW1w a3NdLAorCQkJCWlzX3RlbXBvcmFsLCB0cnVlLAorCQkJCSZwZmVxb3BlcmF0b3JzW251bXBr c10sICZwcGVxb3BlcmF0b3JzW251bXBrc10sICZmZmVxb3BlcmF0b3JzW251bXBrc10pOwor CQludW1ma3MgKz0gMTsKKwkJbnVtcGtzICs9IDE7CisJfQogCi0JCWlmICghKE9pZElzVmFs aWQocGZlcW9wKSAmJiBPaWRJc1ZhbGlkKGZmZXFvcCkpKQotCQl7Ci0JCQkvKgotCQkJICog T3RoZXJ3aXNlLCBsb29rIGZvciBhbiBpbXBsaWNpdCBjYXN0IGZyb20gdGhlIEZLIHR5cGUg dG8gdGhlCi0JCQkgKiBvcGNpbnR5cGUsIGFuZCBpZiBmb3VuZCwgdXNlIHRoZSBwcmltYXJ5 IGVxdWFsaXR5IG9wZXJhdG9yLgotCQkJICogVGhpcyBpcyBhIGJpdCB0cmlja3kgYmVjYXVz ZSBvcGNpbnR5cGUgbWlnaHQgYmUgYSBwb2x5bW9ycGhpYwotCQkJICogdHlwZSBzdWNoIGFz IEFOWUFSUkFZIG9yIEFOWUVOVU07IHNvIHdoYXQgd2UgaGF2ZSB0byB0ZXN0IGlzCi0JCQkg KiB3aGV0aGVyIHRoZSB0d28gYWN0dWFsIGNvbHVtbiB0eXBlcyBjYW4gYmUgY29uY3VycmVu dGx5IGNhc3QgdG8KLQkJCSAqIHRoYXQgdHlwZS4gIChPdGhlcndpc2UsIHdlJ2QgZmFpbCB0 byByZWplY3QgY29tYmluYXRpb25zIHN1Y2gKLQkJCSAqIGFzIGludFtdIGFuZCBwb2ludFtd LikKLQkJCSAqLwotCQkJT2lkCQkJaW5wdXRfdHlwZWlkc1syXTsKLQkJCU9pZAkJCXRhcmdl dF90eXBlaWRzWzJdOwotCi0JCQlpbnB1dF90eXBlaWRzWzBdID0gcGt0eXBlOwotCQkJaW5w dXRfdHlwZWlkc1sxXSA9IGZrdHlwZTsKLQkJCXRhcmdldF90eXBlaWRzWzBdID0gb3BjaW50 eXBlOwotCQkJdGFyZ2V0X3R5cGVpZHNbMV0gPSBvcGNpbnR5cGU7Ci0JCQlpZiAoY2FuX2Nv ZXJjZV90eXBlKDIsIGlucHV0X3R5cGVpZHMsIHRhcmdldF90eXBlaWRzLAotCQkJCQkJCQlD T0VSQ0lPTl9JTVBMSUNJVCkpCi0JCQl7Ci0JCQkJcGZlcW9wID0gZmZlcW9wID0gcHBlcW9w OwotCQkJCXBmZXFvcF9yaWdodCA9IG9wY2ludHlwZTsKLQkJCX0KLQkJfQorCS8qCisJICog Q2hlY2sgc29tZSB0aGluZ3MgZm9yIGdlbmVyYXRlZCBjb2x1bW5zLgorCSAqLworCWZvciAo aSA9IDA7IGkgPCBudW1ma3M7IGkrKykKKwl7CisJCWNoYXIJCWF0dGdlbmVyYXRlZCA9IFR1 cGxlRGVzY0F0dHIoUmVsYXRpb25HZXREZXNjcihyZWwpLCBma2F0dG51bVtpXSAtIDEpLT5h dHRnZW5lcmF0ZWQ7CiAKLQkJaWYgKCEoT2lkSXNWYWxpZChwZmVxb3ApICYmIE9pZElzVmFs aWQoZmZlcW9wKSkpCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RF X0RBVEFUWVBFX01JU01BVENIKSwKLQkJCQkJIGVycm1zZygiZm9yZWlnbiBrZXkgY29uc3Ry YWludCBcIiVzXCIgY2Fubm90IGJlIGltcGxlbWVudGVkIiwKLQkJCQkJCQlma2NvbnN0cmFp bnQtPmNvbm5hbWUpLAotCQkJCQkgZXJyZGV0YWlsKCJLZXkgY29sdW1ucyBcIiVzXCIgYW5k IFwiJXNcIiAiCi0JCQkJCQkJICAgImFyZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6ICVzIGFu ZCAlcy4iLAotCQkJCQkJCSAgIHN0clZhbChsaXN0X250aChma2NvbnN0cmFpbnQtPmZrX2F0 dHJzLCBpKSksCi0JCQkJCQkJICAgc3RyVmFsKGxpc3RfbnRoKGZrY29uc3RyYWludC0+cGtf YXR0cnMsIGkpKSwKLQkJCQkJCQkgICBmb3JtYXRfdHlwZV9iZShma3R5cGUpLAotCQkJCQkJ CSAgIGZvcm1hdF90eXBlX2JlKHBrdHlwZSkpKSk7Ci0KLQkJaWYgKG9sZF9jaGVja19vaykK LQkJewotCQkJLyoKLQkJCSAqIFdoZW4gYSBwZmVxb3AgY2hhbmdlcywgcmV2YWxpZGF0ZSB0 aGUgY29uc3RyYWludC4gIFdlIGNvdWxkCi0JCQkgKiBwZXJtaXQgaW50cmEtb3BmYW1pbHkg Y2hhbmdlcywgYnV0IHRoYXQgYWRkcyBzdWJ0bGUgY29tcGxleGl0eQotCQkJICogd2l0aG91 dCBhbnkgY29uY3JldGUgYmVuZWZpdCBmb3IgY29yZSB0eXBlcy4gIFdlIG5lZWQgbm90Ci0J CQkgKiBhc3Nlc3MgcHBlcW9wIG9yIGZmZXFvcCwgd2hpY2ggUklfSW5pdGlhbF9DaGVjaygp IGRvZXMgbm90IHVzZS4KLQkJCSAqLwotCQkJb2xkX2NoZWNrX29rID0gKHBmZXFvcCA9PSBs Zmlyc3Rfb2lkKG9sZF9wZmVxb3BfaXRlbSkpOwotCQkJb2xkX3BmZXFvcF9pdGVtID0gbG5l eHQoZmtjb25zdHJhaW50LT5vbGRfY29ucGZlcW9wLAotCQkJCQkJCQkJb2xkX3BmZXFvcF9p dGVtKTsKLQkJfQotCQlpZiAob2xkX2NoZWNrX29rKQorCQlpZiAoYXR0Z2VuZXJhdGVkKQog CQl7Ci0JCQlPaWQJCQlvbGRfZmt0eXBlOwotCQkJT2lkCQkJbmV3X2ZrdHlwZTsKLQkJCUNv ZXJjaW9uUGF0aFR5cGUgb2xkX3BhdGh0eXBlOwotCQkJQ29lcmNpb25QYXRoVHlwZSBuZXdf cGF0aHR5cGU7Ci0JCQlPaWQJCQlvbGRfY2FzdGZ1bmM7Ci0JCQlPaWQJCQluZXdfY2FzdGZ1 bmM7Ci0JCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cih0YWItPm9s ZERlc2MsCi0JCQkJCQkJCQkJCQkgICBma2F0dG51bVtpXSAtIDEpOwotCiAJCQkvKgotCQkJ ICogSWRlbnRpZnkgY29lcmNpb24gcGF0aHdheXMgZnJvbSBlYWNoIG9mIHRoZSBvbGQgYW5k IG5ldyBGSy1zaWRlCi0JCQkgKiBjb2x1bW4gdHlwZXMgdG8gdGhlIHJpZ2h0IChmb3JlaWdu KSBvcGVyYW5kIHR5cGUgb2YgdGhlIHBmZXFvcC4KLQkJCSAqIFdlIG1heSBhc3N1bWUgdGhh dCBwZ19jb25zdHJhaW50LmNvbmtleSBpcyBub3QgY2hhbmdpbmcuCi0JCQkgKi8KLQkJCW9s ZF9ma3R5cGUgPSBhdHRyLT5hdHR0eXBpZDsKLQkJCW5ld19ma3R5cGUgPSBma3R5cGU7Ci0J CQlvbGRfcGF0aHR5cGUgPSBmaW5kRmtleUNhc3QocGZlcW9wX3JpZ2h0LCBvbGRfZmt0eXBl LAotCQkJCQkJCQkJCSZvbGRfY2FzdGZ1bmMpOwotCQkJbmV3X3BhdGh0eXBlID0gZmluZEZr ZXlDYXN0KHBmZXFvcF9yaWdodCwgbmV3X2ZrdHlwZSwKLQkJCQkJCQkJCQkmbmV3X2Nhc3Rm dW5jKTsKLQotCQkJLyoKLQkJCSAqIFVwb24gYSBjaGFuZ2UgdG8gdGhlIGNhc3QgZnJvbSB0 aGUgRksgY29sdW1uIHRvIGl0cyBwZmVxb3AKLQkJCSAqIG9wZXJhbmQsIHJldmFsaWRhdGUg dGhlIGNvbnN0cmFpbnQuICBGb3IgdGhpcyBldmFsdWF0aW9uLCBhCi0JCQkgKiBiaW5hcnkg Y29lcmNpb24gY2FzdCBpcyBlcXVpdmFsZW50IHRvIG5vIGNhc3QgYXQgYWxsLiAgV2hpbGUK LQkJCSAqIHR5cGUgaW1wbGVtZW50b3JzIHNob3VsZCBkZXNpZ24gaW1wbGljaXQgY2FzdHMg d2l0aCBhbiBleWUKLQkJCSAqIHRvd2FyZCBjb25zaXN0ZW5jeSBvZiBvcGVyYXRpb25zIGxp a2UgZXF1YWxpdHksIHdlIGNhbm5vdAotCQkJICogYXNzdW1lIGhlcmUgdGhhdCB0aGV5IGhh dmUgZG9uZSBzby4KLQkJCSAqCi0JCQkgKiBBIGZ1bmN0aW9uIHdpdGggYSBwb2x5bW9ycGhp YyBhcmd1bWVudCBjb3VsZCBjaGFuZ2UgYmVoYXZpb3IKLQkJCSAqIGFyYml0cmFyaWx5IGlu IHJlc3BvbnNlIHRvIGdldF9mbl9leHByX2FyZ3R5cGUoKS4gIFRoZXJlZm9yZSwKLQkJCSAq IHdoZW4gdGhlIGNhc3QgZGVzdGluYXRpb24gaXMgcG9seW1vcnBoaWMsIHdlIG9ubHkgYXZv aWQKLQkJCSAqIHJldmFsaWRhdGlvbiBpZiB0aGUgaW5wdXQgdHlwZSBoYXMgbm90IGNoYW5n ZWQgYXQgYWxsLiAgR2l2ZW4KLQkJCSAqIGp1c3QgdGhlIGNvcmUgZGF0YSB0eXBlcyBhbmQg b3BlcmF0b3IgY2xhc3NlcywgdGhpcyByZXF1aXJlbWVudAotCQkJICogcHJldmVudHMgbm8g d291bGQtYmUgb3B0aW1pemF0aW9ucy4KLQkJCSAqCi0JCQkgKiBJZiB0aGUgY2FzdCBjb252 ZXJ0cyBmcm9tIGEgYmFzZSB0eXBlIHRvIGEgZG9tYWluIHRoZXJlb24sIHRoZW4KLQkJCSAq IHRoYXQgZG9tYWluIHR5cGUgbXVzdCBiZSB0aGUgb3BjaW50eXBlIG9mIHRoZSB1bmlxdWUg aW5kZXguCi0JCQkgKiBOZWNlc3NhcmlseSwgdGhlIHByaW1hcnkga2V5IGNvbHVtbiBtdXN0 IHRoZW4gYmUgb2YgdGhlIGRvbWFpbgotCQkJICogdHlwZS4gIFNpbmNlIHRoZSBjb25zdHJh aW50IHdhcyBwcmV2aW91c2x5IHZhbGlkLCBhbGwgdmFsdWVzIG9uCi0JCQkgKiB0aGUgZm9y ZWlnbiBzaWRlIG5lY2Vzc2FyaWx5IGV4aXN0IG9uIHRoZSBwcmltYXJ5IHNpZGUgYW5kIGlu Ci0JCQkgKiB0dXJuIGNvbmZvcm0gdG8gdGhlIGRvbWFpbi4gIENvbnNlcXVlbnRseSwgd2Ug bmVlZCBub3QgdHJlYXQKLQkJCSAqIGRvbWFpbnMgc3BlY2lhbGx5IGhlcmUuCi0JCQkgKgot CQkJICogU2luY2Ugd2UgcmVxdWlyZSB0aGF0IGFsbCBjb2xsYXRpb25zIHNoYXJlIHRoZSBz YW1lIG5vdGlvbiBvZgotCQkJICogZXF1YWxpdHkgKHdoaWNoIHRoZXkgZG8sIGJlY2F1c2Ug dGV4dGVxIHJlZHVjZXMgdG8gYml0d2lzZQotCQkJICogZXF1YWxpdHkpLCB3ZSBkb24ndCBj b21wYXJlIGNvbGxhdGlvbiBoZXJlLgotCQkJICoKLQkJCSAqIFdlIG5lZWQgbm90IGRpcmVj dGx5IGNvbnNpZGVyIHRoZSBQSyB0eXBlLiAgSXQncyBuZWNlc3NhcmlseQotCQkJICogYmlu YXJ5IGNvZXJjaWJsZSB0byB0aGUgb3BjaW50eXBlIG9mIHRoZSB1bmlxdWUgaW5kZXggY29s dW1uLAotCQkJICogYW5kIHJpX3RyaWdnZXJzLmMgd2lsbCBvbmx5IGRlYWwgd2l0aCBQSyBk YXR1bXMgaW4gdGVybXMgb2YKLQkJCSAqIHRoYXQgb3BjaW50eXBlLiAgQ2hhbmdpbmcgdGhl IG9wY2ludHlwZSBhbHNvIGNoYW5nZXMgcGZlcW9wLgorCQkJICogQ2hlY2sgcmVzdHJpY3Rp b25zIG9uIFVQREFURS9ERUxFVEUgYWN0aW9ucywgcGVyIFNRTCBzdGFuZGFyZAogCQkJICov Ci0JCQlvbGRfY2hlY2tfb2sgPSAobmV3X3BhdGh0eXBlID09IG9sZF9wYXRodHlwZSAmJgot CQkJCQkJCW5ld19jYXN0ZnVuYyA9PSBvbGRfY2FzdGZ1bmMgJiYKLQkJCQkJCQkoIUlzUG9s eW1vcnBoaWNUeXBlKHBmZXFvcF9yaWdodCkgfHwKLQkJCQkJCQkgbmV3X2ZrdHlwZSA9PSBv bGRfZmt0eXBlKSk7CisJCQlpZiAoZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uID09IEZL Q09OU1RSX0FDVElPTl9TRVROVUxMIHx8CisJCQkJZmtjb25zdHJhaW50LT5ma191cGRfYWN0 aW9uID09IEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUIHx8CisJCQkJZmtjb25zdHJhaW50 LT5ma191cGRfYWN0aW9uID09IEZLQ09OU1RSX0FDVElPTl9DQVNDQURFKQorCQkJCWVyZXBv cnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJ CQkgZXJybXNnKCJpbnZhbGlkICVzIGFjdGlvbiBmb3IgZm9yZWlnbiBrZXkgY29uc3RyYWlu dCBjb250YWluaW5nIGdlbmVyYXRlZCBjb2x1bW4iLAorCQkJCQkJCQkiT04gVVBEQVRFIikp KTsKKwkJCWlmIChma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24gPT0gRktDT05TVFJfQUNU SU9OX1NFVE5VTEwgfHwKKwkJCQlma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24gPT0gRktD T05TVFJfQUNUSU9OX1NFVERFRkFVTFQpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShl cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImludmFsaWQg JXMgYWN0aW9uIGZvciBmb3JlaWduIGtleSBjb25zdHJhaW50IGNvbnRhaW5pbmcgZ2VuZXJh dGVkIGNvbHVtbiIsCisJCQkJCQkJCSJPTiBERUxFVEUiKSkpOwogCQl9Ci0KLQkJcGZlcW9w ZXJhdG9yc1tpXSA9IHBmZXFvcDsKLQkJcHBlcW9wZXJhdG9yc1tpXSA9IHBwZXFvcDsKLQkJ ZmZlcW9wZXJhdG9yc1tpXSA9IGZmZXFvcDsKIAl9CiAKKwkvKgorCSAqIEZvciBGS3Mgd2l0 aCBQRVJJT0Qgd2UgbmVlZCBhbiBvcGVyYXRvciBhbmQgYWdncmVnYXRlIGZ1bmN0aW9uCisJ ICogdG8gY2hlY2sgd2hldGhlciB0aGUgcmVmZXJlbmNpbmcgcm93J3MgcmFuZ2UgaXMgY29u dGFpbmVkCisJICogYnkgdGhlIGFnZ3JlZ2F0ZWQgcmFuZ2VzIG9mIHRoZSByZWZlcmVuY2Vk IHJvdyhzKS4KKwkgKiBGb3IgcmFuZ2V0eXBlcyB0aGlzIGlzIGZrLnBlcmlvZGF0dCA8QCBy YW5nZV9hZ2cocGsucGVyaW9kYXR0KS4KKwkgKiBGS3Mgd2lsbCBsb29rIHRoZXNlIHVwIGF0 ICJydW50aW1lIiwgYnV0IHdlIHNob3VsZCBtYWtlIHN1cmUKKwkgKiB0aGUgbG9va3VwIHdv cmtzIGhlcmUuCisJICovCisJaWYgKGlzX3RlbXBvcmFsKQorCQlGaW5kRktQZXJpb2RPcGVy c0FuZFByb2NzKG9wY2xhc3Nlc1tudW1wa3MgLSAxXSwgJnBlcmlvZG9wZXJvaWQsICZwZXJp b2Rwcm9jb2lkKTsKKwogCS8qCiAJICogQ3JlYXRlIGFsbCB0aGUgY29uc3RyYWludCBhbmQg dHJpZ2dlciBvYmplY3RzLCByZWN1cnNpbmcgdG8gcGFydGl0aW9ucwogCSAqIGFzIG5lY2Vz c2FyeS4gIEZpcnN0IGhhbmRsZSB0aGUgcmVmZXJlbmNlZCBzaWRlLgpAQCAtMTAxNDksNyAr MTAwNTcsOCBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFs dGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJIG51bWZrZGVs c2V0Y29scywKIAkJCQkJCQkJCSBma2RlbHNldGNvbHMsCiAJCQkJCQkJCQkgb2xkX2NoZWNr X29rLAotCQkJCQkJCQkJIEludmFsaWRPaWQsIEludmFsaWRPaWQpOworCQkJCQkJCQkJIElu dmFsaWRPaWQsIEludmFsaWRPaWQsCisJCQkJCQkJCQkgaXNfdGVtcG9yYWwpOwogCiAJLyog Tm93IGhhbmRsZSB0aGUgcmVmZXJlbmNpbmcgc2lkZS4gKi8KIAlhZGRGa1JlY3Vyc2VSZWZl cmVuY2luZyh3cXVldWUsIGZrY29uc3RyYWludCwgcmVsLCBwa3JlbCwKQEAgLTEwMTY1LDcg KzEwMDc0LDggQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBB bHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQlma2RlbHNldGNv bHMsCiAJCQkJCQkJb2xkX2NoZWNrX29rLAogCQkJCQkJCWxvY2ttb2RlLAotCQkJCQkJCUlu dmFsaWRPaWQsIEludmFsaWRPaWQpOworCQkJCQkJCUludmFsaWRPaWQsIEludmFsaWRPaWQs CisJCQkJCQkJaXNfdGVtcG9yYWwpOwogCiAJLyoKIAkgKiBEb25lLiAgQ2xvc2UgcGsgdGFi bGUsIGJ1dCBrZWVwIGxvY2sgdW50aWwgd2UndmUgY29tbWl0dGVkLgpAQCAtMTAyNTAsNyAr MTAxNjAsOCBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0 cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkgICBPaWQgKnBwZXFv cGVyYXRvcnMsIE9pZCAqZmZlcW9wZXJhdG9ycywKIAkJCQkJICAgaW50IG51bWZrZGVsc2V0 Y29scywgaW50MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJICAgYm9vbCBvbGRfY2hlY2tfb2ss Ci0JCQkJCSAgIE9pZCBwYXJlbnREZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcikK KwkJCQkJICAgT2lkIHBhcmVudERlbFRyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyLAor CQkJCQkgICBib29sIGlzX3RlbXBvcmFsKQogewogCU9iamVjdEFkZHJlc3MgYWRkcmVzczsK IAlPaWQJCQljb25zdHJPaWQ7CkBAIC0xMDMzNiw3ICsxMDI0Nyw3IEBAIGFkZEZrUmVjdXJz ZVJlZmVyZW5jZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBS ZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgIGNvbmlzbG9jYWwsCS8qIGlzbG9jYWwgKi8KIAkJ CQkJCQkJCSAgY29uaW5oY291bnQsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJCQkgIGNvbm5v aW5oZXJpdCwgLyogY29uTm9Jbmhlcml0ICovCi0JCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25X aXRob3V0T3ZlcmxhcHMgKi8KKwkJCQkJCQkJCSAgaXNfdGVtcG9yYWwsCS8qIGNvbldpdGhv dXRPdmVybGFwcyAqLwogCQkJCQkJCQkJICBmYWxzZSk7CS8qIGlzX2ludGVybmFsICovCiAK IAlPYmplY3RBZGRyZXNzU2V0KGFkZHJlc3MsIENvbnN0cmFpbnRSZWxhdGlvbklkLCBjb25z dHJPaWQpOwpAQCAtMTA0MTIsNyArMTAzMjMsOCBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2Vk KExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVs LAogCQkJCQkJCQkgICBwZmVxb3BlcmF0b3JzLCBwcGVxb3BlcmF0b3JzLCBmZmVxb3BlcmF0 b3JzLAogCQkJCQkJCQkgICBudW1ma2RlbHNldGNvbHMsIGZrZGVsc2V0Y29scywKIAkJCQkJ CQkJICAgb2xkX2NoZWNrX29rLAotCQkJCQkJCQkgICBkZWxldGVUcmlnZ2VyT2lkLCB1cGRh dGVUcmlnZ2VyT2lkKTsKKwkJCQkJCQkJICAgZGVsZXRlVHJpZ2dlck9pZCwgdXBkYXRlVHJp Z2dlck9pZCwKKwkJCQkJCQkJICAgaXNfdGVtcG9yYWwpOwogCiAJCQkvKiBEb25lIC0tIGNs ZWFuIHVwIChidXQga2VlcCB0aGUgbG9jaykgKi8KIAkJCXRhYmxlX2Nsb3NlKHBhcnRSZWws IE5vTG9jayk7CkBAIC0xMDQ3MCw3ICsxMDM4Miw4IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5j aW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24g cmVsLAogCQkJCQkJT2lkICpwZmVxb3BlcmF0b3JzLCBPaWQgKnBwZXFvcGVyYXRvcnMsIE9p ZCAqZmZlcW9wZXJhdG9ycywKIAkJCQkJCWludCBudW1ma2RlbHNldGNvbHMsIGludDE2ICpm a2RlbHNldGNvbHMsCiAJCQkJCQlib29sIG9sZF9jaGVja19vaywgTE9DS01PREUgbG9ja21v ZGUsCi0JCQkJCQlPaWQgcGFyZW50SW5zVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIp CisJCQkJCQlPaWQgcGFyZW50SW5zVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIsCisJ CQkJCQlib29sIGlzX3RlbXBvcmFsKQogewogCU9pZAkJCWluc2VydFRyaWdnZXJPaWQsCiAJ CQkJdXBkYXRlVHJpZ2dlck9pZDsKQEAgLTEwNTE4LDYgKzEwNDMxLDcgQEAgYWRkRmtSZWN1 cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50 LCBSZWxhdGlvbiByZWwsCiAJCQluZXdjb24tPnJlZnJlbGlkID0gUmVsYXRpb25HZXRSZWxp ZChwa3JlbCk7CiAJCQluZXdjb24tPnJlZmluZGlkID0gaW5kZXhPaWQ7CiAJCQluZXdjb24t PmNvbmlkID0gcGFyZW50Q29uc3RyOworCQkJbmV3Y29uLT5jb253aXRocGVyaW9kID0gZmtj b25zdHJhaW50LT5ma19wZXJpb2QgIT0gTlVMTDsKIAkJCW5ld2Nvbi0+cXVhbCA9IChOb2Rl ICopIGZrY29uc3RyYWludDsKIAogCQkJdGFiLT5jb25zdHJhaW50cyA9IGxhcHBlbmQodGFi LT5jb25zdHJhaW50cywgbmV3Y29uKTsKQEAgLTEwNjM1LDcgKzEwNTQ5LDcgQEAgYWRkRmtS ZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJh aW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgIGZhbHNlLAogCQkJCQkJCQkJICAxLAog CQkJCQkJCQkJICBmYWxzZSwKLQkJCQkJCQkJCSAgZmFsc2UsCS8qIGNvbldpdGhvdXRPdmVy bGFwcyAqLworCQkJCQkJCQkJICBpc190ZW1wb3JhbCwJLyogY29uV2l0aG91dE92ZXJsYXBz ICovCiAJCQkJCQkJCQkgIGZhbHNlKTsKIAogCQkJLyoKQEAgLTEwNjY2LDcgKzEwNTgwLDgg QEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAq Zmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQlvbGRfY2hlY2tfb2ssCiAJ CQkJCQkJCQlsb2NrbW9kZSwKIAkJCQkJCQkJCWluc2VydFRyaWdnZXJPaWQsCi0JCQkJCQkJ CQl1cGRhdGVUcmlnZ2VyT2lkKTsKKwkJCQkJCQkJCXVwZGF0ZVRyaWdnZXJPaWQsCisJCQkJ CQkJCQlpc190ZW1wb3JhbCk7CiAKIAkJCXRhYmxlX2Nsb3NlKHBhcnRpdGlvbiwgTm9Mb2Nr KTsKIAkJfQpAQCAtMTA5MDIsNyArMTA4MTcsOCBAQCBDbG9uZUZrUmVmZXJlbmNlZChSZWxh dGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBhcnRpdGlvblJlbCkKIAkJCQkJCQkgICBjb25m ZGVsc2V0Y29scywKIAkJCQkJCQkgICB0cnVlLAogCQkJCQkJCSAgIGRlbGV0ZVRyaWdnZXJP aWQsCi0JCQkJCQkJICAgdXBkYXRlVHJpZ2dlck9pZCk7CisJCQkJCQkJICAgdXBkYXRlVHJp Z2dlck9pZCwKKwkJCQkJCQkgICBjb25zdHJGb3JtLT5jb253aXRob3V0b3ZlcmxhcHMpOwog CiAJCXRhYmxlX2Nsb3NlKGZrUmVsLCBOb0xvY2spOwogCQlSZWxlYXNlU3lzQ2FjaGUodHVw bGUpOwpAQCAtMTA5OTUsNiArMTA5MTEsNyBAQCBDbG9uZUZrUmVmZXJlbmNpbmcoTGlzdCAq KndxdWV1ZSwgUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0UmVsKQogCQlMaXN0 Q2VsbCAgICpsYzsKIAkJT2lkCQkJaW5zZXJ0VHJpZ2dlck9pZCwKIAkJCQkJdXBkYXRlVHJp Z2dlck9pZDsKKwkJYm9vbAkJaXNfdGVtcG9yYWw7CiAKIAkJdHVwbGUgPSBTZWFyY2hTeXND YWNoZTEoQ09OU1RST0lELCBPYmplY3RJZEdldERhdHVtKHBhcmVudENvbnN0ck9pZCkpOwog CQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQpAQCAtMTExMTAsNiArMTEwMjcsNyBA QCBDbG9uZUZrUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcGFyZW50UmVs LCBSZWxhdGlvbiBwYXJ0UmVsKQogCQkJZmtjb25zdHJhaW50LT5jb25uYW1lID0gcHN0cmR1 cChOYW1lU3RyKGNvbnN0ckZvcm0tPmNvbm5hbWUpKTsKIAogCQlpbmRleE9pZCA9IGNvbnN0 ckZvcm0tPmNvbmluZGlkOworCQlpc190ZW1wb3JhbCA9IGNvbnN0ckZvcm0tPmNvbndpdGhv dXRvdmVybGFwczsKIAkJY29uc3RyT2lkID0KIAkJCUNyZWF0ZUNvbnN0cmFpbnRFbnRyeShm a2NvbnN0cmFpbnQtPmNvbm5hbWUsCiAJCQkJCQkJCSAgY29uc3RyRm9ybS0+Y29ubmFtZXNw YWNlLApAQCAtMTExNDEsNyArMTEwNTksNyBAQCBDbG9uZUZrUmVmZXJlbmNpbmcoTGlzdCAq KndxdWV1ZSwgUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0UmVsKQogCQkJCQkJ CQkgIGZhbHNlLAkvKiBpc2xvY2FsICovCiAJCQkJCQkJCSAgMSwJLyogaW5oY291bnQgKi8K IAkJCQkJCQkJICBmYWxzZSwJLyogY29uTm9Jbmhlcml0ICovCi0JCQkJCQkJCSAgZmFsc2Us CS8qIGNvbldpdGhvdXRPdmVybGFwcyAqLworCQkJCQkJCQkgIGlzX3RlbXBvcmFsLAkvKiBj b25XaXRob3V0T3ZlcmxhcHMgKi8KIAkJCQkJCQkJICB0cnVlKTsKIAogCQkvKiBTZXQgdXAg cGFydGl0aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhlIG5ldyBjb25zdHJhaW50ICovCkBAIC0x MTE3NSwxMyArMTEwOTMsMzAwIEBAIENsb25lRmtSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVl LCBSZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBhcnRSZWwpCiAJCQkJCQkJCWZhbHNl LAkvKiBubyBvbGQgY2hlY2sgZXhpc3RzICovCiAJCQkJCQkJCUFjY2Vzc0V4Y2x1c2l2ZUxv Y2ssCiAJCQkJCQkJCWluc2VydFRyaWdnZXJPaWQsCi0JCQkJCQkJCXVwZGF0ZVRyaWdnZXJP aWQpOworCQkJCQkJCQl1cGRhdGVUcmlnZ2VyT2lkLAorCQkJCQkJCQlpc190ZW1wb3JhbCk7 CiAJCXRhYmxlX2Nsb3NlKHBrcmVsLCBOb0xvY2spOwogCX0KIAogCXRhYmxlX2Nsb3NlKHRy aWdyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogfQogCitzdGF0aWMgdm9pZAorRmluZEZLQ29t cGFyaXNvbk9wZXJhdG9ycyhDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsCisJCUFsdGVyZWRU YWJsZUluZm8gKnRhYiwKKwkJaW50IGksCisJCWludDE2ICpma2F0dG51bSwKKwkJYm9vbCAq b2xkX2NoZWNrX29rLAorCQlMaXN0Q2VsbCAqKm9sZF9wZmVxb3BfaXRlbSwKKwkJT2lkIHBr dHlwZSwgT2lkIGZrdHlwZSwgT2lkIG9wY2xhc3MsCisJCWJvb2wgaXNfdGVtcG9yYWwsIGJv b2wgZm9yX292ZXJsYXBzLAorCQlPaWQgKnBmZXFvcE91dCwgT2lkICpwcGVxb3BPdXQsIE9p ZCAqZmZlcW9wT3V0KQoreworCU9pZAkJCWZrdHlwZWQ7CisJSGVhcFR1cGxlCWNsYV9odDsK KwlGb3JtX3BnX29wY2xhc3MgY2xhX3R1cDsKKwlPaWQJCQlhbWlkOworCU9pZAkJCW9wZmFt aWx5OworCU9pZAkJCW9wY2ludHlwZTsKKwlPaWQJCQlwZmVxb3A7CisJT2lkCQkJcHBlcW9w OworCU9pZAkJCWZmZXFvcDsKKwlTdHJhdGVneU51bWJlcglydHN0cmF0ZWd5OworCWludDE2 CQllcXN0cmF0ZWd5OworCU9pZAkJCXBmZXFvcF9yaWdodDsKKwljaGFyCSAgICpzdHJhdG5h bWU7CisKKwkvKiBXZSBuZWVkIHNldmVyYWwgZmllbGRzIG91dCBvZiB0aGUgcGdfb3BjbGFz cyBlbnRyeSAqLworCWNsYV9odCA9IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQsIE9iamVjdElk R2V0RGF0dW0ob3BjbGFzcykpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFfaHQpKQor CQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BjbGFzcyAldSIsIG9w Y2xhc3MpOworCWNsYV90dXAgPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJVQ1QoY2xhX2h0 KTsKKwlhbWlkID0gY2xhX3R1cC0+b3BjbWV0aG9kOworCW9wZmFtaWx5ID0gY2xhX3R1cC0+ b3BjZmFtaWx5OworCW9wY2ludHlwZSA9IGNsYV90dXAtPm9wY2ludHlwZTsKKwlSZWxlYXNl U3lzQ2FjaGUoY2xhX2h0KTsKKworCWlmIChpc190ZW1wb3JhbCkKKwl7CisJCWlmIChhbWlk ICE9IEdJU1RfQU1fT0lEKQorCQkJZWxvZyhFUlJPUiwgIm9ubHkgR2lTVCBpbmRleGVzIGFy ZSBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cyIpOworCQkvKgorCQkgKiBG b3IgdGhlIG5vbi1vdmVybGFwcyBwYXJ0cywgd2Ugd2FudCBlaXRoZXIgUlRFcXVhbFN0cmF0 ZWd5TnVtYmVyICh3aXRob3V0IGJ0cmVlX2dpc3QpCisJCSAqIG9yIEJURXF1YWxTdHJhdGVn eU51bWJlciAod2l0aCBidHJlZV9naXN0KS4gV2UnbGwgdHJ5IHRoZSBsYXR0ZXIgZmlyc3Qu CisJCSAqLworCQlpZiAoZm9yX292ZXJsYXBzKQorCQl7CisJCQlzdHJhdG5hbWUgPSAib3Zl cmxhcHMiOworCQkJcnRzdHJhdGVneSA9IFJUT3ZlcmxhcFN0cmF0ZWd5TnVtYmVyOworCQl9 CisJCWVsc2UKKwkJeworCQkJc3RyYXRuYW1lID0gImVxdWFsaXR5IjsKKwkJCXJ0c3RyYXRl Z3kgPSBSVEVxdWFsU3RyYXRlZ3lOdW1iZXI7CisJCX0KKwkJZXFzdHJhdGVneSA9IEdpc3RU cmFuc2xhdGVTdHJhdG51bShvcGNsYXNzLCBydHN0cmF0ZWd5KTsKKwkJaWYgKGVxc3RyYXRl Z3kgPT0gSW52YWxpZFN0cmF0ZWd5KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygibm8gJXMgb3Bl cmF0b3IgZm91bmQgZm9yIGZvcmVpZ24ga2V5Iiwgc3RyYXRuYW1lKSwKKwkJCQkJIGVycmRl dGFpbCgiQ291bGQgbm90IHRyYW5zbGF0ZSBzdHJhdGVneSBudW1iZXIgJWQgZm9yIG9wY2xh c3MgJWQuIiwKKwkJCQkJCSBydHN0cmF0ZWd5LCBvcGNsYXNzKSwKKwkJCQkJIGVycmhpbnQo IkRlZmluZSBhIHN0cmF0bnVtIHN1cHBvcnQgZnVuY3Rpb24gZm9yIHlvdXIgR2lTVCBvcGNs YXNzLiIpKSk7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIENoZWNrIGl0J3MgYSBidHJl ZTsgY3VycmVudGx5IHRoaXMgY2FuIG5ldmVyIGZhaWwgc2luY2Ugbm8gb3RoZXIKKwkJICog aW5kZXggQU1zIHN1cHBvcnQgdW5pcXVlIGluZGV4ZXMuICBJZiB3ZSBldmVyIGRpZCBoYXZl IG90aGVyIHR5cGVzCisJCSAqIG9mIHVuaXF1ZSBpbmRleGVzLCB3ZSdkIG5lZWQgYSB3YXkg dG8gZGV0ZXJtaW5lIHdoaWNoIG9wZXJhdG9yCisJCSAqIHN0cmF0ZWd5IG51bWJlciBpcyBl cXVhbGl0eS4gIChJcyBpdCByZWFzb25hYmxlIHRvIGluc2lzdCB0aGF0CisJCSAqIGV2ZXJ5 IHN1Y2ggaW5kZXggQU0gdXNlIGJ0cmVlJ3MgbnVtYmVyIGZvciBlcXVhbGl0eT8pCisJCSAq LworCQlpZiAoYW1pZCAhPSBCVFJFRV9BTV9PSUQpCisJCQllbG9nKEVSUk9SLCAib25seSBi LXRyZWUgaW5kZXhlcyBhcmUgc3VwcG9ydGVkIGZvciBmb3JlaWduIGtleXMiKTsKKwkJZXFz dHJhdGVneSA9IEJURXF1YWxTdHJhdGVneU51bWJlcjsKKwl9CisKKwkvKgorCSAqIFRoZXJl IGhhZCBiZXR0ZXIgYmUgYSBwcmltYXJ5IGVxdWFsaXR5IG9wZXJhdG9yIGZvciB0aGUgaW5k ZXguCisJICogV2UnbGwgdXNlIGl0IGZvciBQSyA9IFBLIGNvbXBhcmlzb25zLgorCSAqLwor CXBwZXFvcCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgb3Bj aW50eXBlLAorCQkJCQkJCQkgZXFzdHJhdGVneSk7CisKKwlpZiAoIU9pZElzVmFsaWQocHBl cW9wKSkKKwkJZWxvZyhFUlJPUiwgIm1pc3Npbmcgb3BlcmF0b3IgJWQoJXUsJXUpIGluIG9w ZmFtaWx5ICV1IiwKKwkJCSBlcXN0cmF0ZWd5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwgb3Bm YW1pbHkpOworCisJLyoKKwkgKiBBcmUgdGhlcmUgZXF1YWxpdHkgb3BlcmF0b3JzIHRoYXQg dGFrZSBleGFjdGx5IHRoZSBGSyB0eXBlPyBBc3N1bWUKKwkgKiB3ZSBzaG91bGQgbG9vayB0 aHJvdWdoIGFueSBkb21haW4gaGVyZS4KKwkgKi8KKwlma3R5cGVkID0gZ2V0QmFzZVR5cGUo Zmt0eXBlKTsKKworCXBmZXFvcCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9w Y2ludHlwZSwgZmt0eXBlZCwKKwkJCQkJCQkJIGVxc3RyYXRlZ3kpOworCWlmIChPaWRJc1Zh bGlkKHBmZXFvcCkpCisJeworCQlwZmVxb3BfcmlnaHQgPSBma3R5cGVkOworCQlmZmVxb3Ag PSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBma3R5cGVkLCBma3R5cGVkLAorCQkJ CQkJCQkJIGVxc3RyYXRlZ3kpOworCX0KKwllbHNlCisJeworCQkvKiBrZWVwIGNvbXBpbGVy IHF1aWV0ICovCisJCXBmZXFvcF9yaWdodCA9IEludmFsaWRPaWQ7CisJCWZmZXFvcCA9IElu dmFsaWRPaWQ7CisJfQorCisJaWYgKCEoT2lkSXNWYWxpZChwZmVxb3ApICYmIE9pZElzVmFs aWQoZmZlcW9wKSkpCisJeworCQkvKgorCQkgKiBPdGhlcndpc2UsIGxvb2sgZm9yIGFuIGlt cGxpY2l0IGNhc3QgZnJvbSB0aGUgRksgdHlwZSB0byB0aGUKKwkJICogb3BjaW50eXBlLCBh bmQgaWYgZm91bmQsIHVzZSB0aGUgcHJpbWFyeSBlcXVhbGl0eSBvcGVyYXRvci4KKwkJICog VGhpcyBpcyBhIGJpdCB0cmlja3kgYmVjYXVzZSBvcGNpbnR5cGUgbWlnaHQgYmUgYSBwb2x5 bW9ycGhpYworCQkgKiB0eXBlIHN1Y2ggYXMgQU5ZQVJSQVkgb3IgQU5ZRU5VTTsgc28gd2hh dCB3ZSBoYXZlIHRvIHRlc3QgaXMKKwkJICogd2hldGhlciB0aGUgdHdvIGFjdHVhbCBjb2x1 bW4gdHlwZXMgY2FuIGJlIGNvbmN1cnJlbnRseSBjYXN0IHRvCisJCSAqIHRoYXQgdHlwZS4g IChPdGhlcndpc2UsIHdlJ2QgZmFpbCB0byByZWplY3QgY29tYmluYXRpb25zIHN1Y2gKKwkJ ICogYXMgaW50W10gYW5kIHBvaW50W10uKQorCQkgKi8KKwkJT2lkCQkJaW5wdXRfdHlwZWlk c1syXTsKKwkJT2lkCQkJdGFyZ2V0X3R5cGVpZHNbMl07CisKKwkJaW5wdXRfdHlwZWlkc1sw XSA9IHBrdHlwZTsKKwkJaW5wdXRfdHlwZWlkc1sxXSA9IGZrdHlwZTsKKwkJdGFyZ2V0X3R5 cGVpZHNbMF0gPSBvcGNpbnR5cGU7CisJCXRhcmdldF90eXBlaWRzWzFdID0gb3BjaW50eXBl OworCQlpZiAoY2FuX2NvZXJjZV90eXBlKDIsIGlucHV0X3R5cGVpZHMsIHRhcmdldF90eXBl aWRzLAorCQkJCQkJCUNPRVJDSU9OX0lNUExJQ0lUKSkKKwkJeworCQkJcGZlcW9wID0gZmZl cW9wID0gcHBlcW9wOworCQkJcGZlcW9wX3JpZ2h0ID0gb3BjaW50eXBlOworCQl9CisJfQor CisJaWYgKCEoT2lkSXNWYWxpZChwZmVxb3ApICYmIE9pZElzVmFsaWQoZmZlcW9wKSkpCisJ eworCQljaGFyICpma2F0dHJfbmFtZTsKKwkJY2hhciAqcGthdHRyX25hbWU7CisKKwkJaWYg KGZvcl9vdmVybGFwcykKKwkJeworCQkJZmthdHRyX25hbWUgPSBzdHJWYWwoZmtjb25zdHJh aW50LT5ma19wZXJpb2QpOworCQkJcGthdHRyX25hbWUgPSBzdHJWYWwoZmtjb25zdHJhaW50 LT5wa19wZXJpb2QpOworCQl9CisJCWVsc2UKKwkJeworCQkJZmthdHRyX25hbWUgPSBzdHJW YWwobGlzdF9udGgoZmtjb25zdHJhaW50LT5ma19hdHRycywgaSkpOworCQkJcGthdHRyX25h bWUgPSBzdHJWYWwobGlzdF9udGgoZmtjb25zdHJhaW50LT5wa19hdHRycywgaSkpOworCQl9 CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01J U01BVENIKSwKKwkJCQkgZXJybXNnKCJmb3JlaWduIGtleSBjb25zdHJhaW50IFwiJXNcIiBj YW5ub3QgYmUgaW1wbGVtZW50ZWQiLAorCQkJCQkJZmtjb25zdHJhaW50LT5jb25uYW1lKSwK KwkJCQkgZXJyZGV0YWlsKCJLZXkgY29sdW1ucyBcIiVzXCIgYW5kIFwiJXNcIiAiCisJCQkJ CQkgICAiYXJlIG9mIGluY29tcGF0aWJsZSB0eXBlczogJXMgYW5kICVzLiIsCisJCQkJCQkg ICBma2F0dHJfbmFtZSwKKwkJCQkJCSAgIHBrYXR0cl9uYW1lLAorCQkJCQkJICAgZm9ybWF0 X3R5cGVfYmUoZmt0eXBlKSwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHBrdHlwZSkpKSk7 CisJfQorCisJaWYgKCpvbGRfY2hlY2tfb2spCisJeworCQkvKgorCQkgKiBXaGVuIGEgcGZl cW9wIGNoYW5nZXMsIHJldmFsaWRhdGUgdGhlIGNvbnN0cmFpbnQuICBXZSBjb3VsZAorCQkg KiBwZXJtaXQgaW50cmEtb3BmYW1pbHkgY2hhbmdlcywgYnV0IHRoYXQgYWRkcyBzdWJ0bGUg Y29tcGxleGl0eQorCQkgKiB3aXRob3V0IGFueSBjb25jcmV0ZSBiZW5lZml0IGZvciBjb3Jl IHR5cGVzLiAgV2UgbmVlZCBub3QKKwkJICogYXNzZXNzIHBwZXFvcCBvciBmZmVxb3AsIHdo aWNoIFJJX0luaXRpYWxfQ2hlY2soKSBkb2VzIG5vdCB1c2UuCisJCSAqLworCQkqb2xkX2No ZWNrX29rID0gKHBmZXFvcCA9PSBsZmlyc3Rfb2lkKCpvbGRfcGZlcW9wX2l0ZW0pKTsKKwkJ Km9sZF9wZmVxb3BfaXRlbSA9IGxuZXh0KGZrY29uc3RyYWludC0+b2xkX2NvbnBmZXFvcCwK KwkJCQkJCQkJKm9sZF9wZmVxb3BfaXRlbSk7CisJfQorCWlmICgqb2xkX2NoZWNrX29rKQor CXsKKwkJT2lkCQkJb2xkX2ZrdHlwZTsKKwkJT2lkCQkJbmV3X2ZrdHlwZTsKKwkJQ29lcmNp b25QYXRoVHlwZSBvbGRfcGF0aHR5cGU7CisJCUNvZXJjaW9uUGF0aFR5cGUgbmV3X3BhdGh0 eXBlOworCQlPaWQJCQlvbGRfY2FzdGZ1bmM7CisJCU9pZAkJCW5ld19jYXN0ZnVuYzsKKwkJ Rm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodGFiLT5vbGREZXNjLAor CQkJCQkJCQkJCQkgICBma2F0dG51bVtpXSAtIDEpOworCisJCS8qCisJCSAqIElkZW50aWZ5 IGNvZXJjaW9uIHBhdGh3YXlzIGZyb20gZWFjaCBvZiB0aGUgb2xkIGFuZCBuZXcgRkstc2lk ZQorCQkgKiBjb2x1bW4gdHlwZXMgdG8gdGhlIHJpZ2h0IChmb3JlaWduKSBvcGVyYW5kIHR5 cGUgb2YgdGhlIHBmZXFvcC4KKwkJICogV2UgbWF5IGFzc3VtZSB0aGF0IHBnX2NvbnN0cmFp bnQuY29ua2V5IGlzIG5vdCBjaGFuZ2luZy4KKwkJICovCisJCW9sZF9ma3R5cGUgPSBhdHRy LT5hdHR0eXBpZDsKKwkJbmV3X2ZrdHlwZSA9IGZrdHlwZTsKKwkJb2xkX3BhdGh0eXBlID0g ZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdodCwgb2xkX2ZrdHlwZSwKKwkJCQkJCQkJCSZvbGRf Y2FzdGZ1bmMpOworCQluZXdfcGF0aHR5cGUgPSBmaW5kRmtleUNhc3QocGZlcW9wX3JpZ2h0 LCBuZXdfZmt0eXBlLAorCQkJCQkJCQkJJm5ld19jYXN0ZnVuYyk7CisKKwkJLyoKKwkJICog VXBvbiBhIGNoYW5nZSB0byB0aGUgY2FzdCBmcm9tIHRoZSBGSyBjb2x1bW4gdG8gaXRzIHBm ZXFvcAorCQkgKiBvcGVyYW5kLCByZXZhbGlkYXRlIHRoZSBjb25zdHJhaW50LiAgRm9yIHRo aXMgZXZhbHVhdGlvbiwgYQorCQkgKiBiaW5hcnkgY29lcmNpb24gY2FzdCBpcyBlcXVpdmFs ZW50IHRvIG5vIGNhc3QgYXQgYWxsLiAgV2hpbGUKKwkJICogdHlwZSBpbXBsZW1lbnRvcnMg c2hvdWxkIGRlc2lnbiBpbXBsaWNpdCBjYXN0cyB3aXRoIGFuIGV5ZQorCQkgKiB0b3dhcmQg Y29uc2lzdGVuY3kgb2Ygb3BlcmF0aW9ucyBsaWtlIGVxdWFsaXR5LCB3ZSBjYW5ub3QKKwkJ ICogYXNzdW1lIGhlcmUgdGhhdCB0aGV5IGhhdmUgZG9uZSBzby4KKwkJICoKKwkJICogQSBm dW5jdGlvbiB3aXRoIGEgcG9seW1vcnBoaWMgYXJndW1lbnQgY291bGQgY2hhbmdlIGJlaGF2 aW9yCisJCSAqIGFyYml0cmFyaWx5IGluIHJlc3BvbnNlIHRvIGdldF9mbl9leHByX2FyZ3R5 cGUoKS4gIFRoZXJlZm9yZSwKKwkJICogd2hlbiB0aGUgY2FzdCBkZXN0aW5hdGlvbiBpcyBw b2x5bW9ycGhpYywgd2Ugb25seSBhdm9pZAorCQkgKiByZXZhbGlkYXRpb24gaWYgdGhlIGlu cHV0IHR5cGUgaGFzIG5vdCBjaGFuZ2VkIGF0IGFsbC4gIEdpdmVuCisJCSAqIGp1c3QgdGhl IGNvcmUgZGF0YSB0eXBlcyBhbmQgb3BlcmF0b3IgY2xhc3NlcywgdGhpcyByZXF1aXJlbWVu dAorCQkgKiBwcmV2ZW50cyBubyB3b3VsZC1iZSBvcHRpbWl6YXRpb25zLgorCQkgKgorCQkg KiBJZiB0aGUgY2FzdCBjb252ZXJ0cyBmcm9tIGEgYmFzZSB0eXBlIHRvIGEgZG9tYWluIHRo ZXJlb24sIHRoZW4KKwkJICogdGhhdCBkb21haW4gdHlwZSBtdXN0IGJlIHRoZSBvcGNpbnR5 cGUgb2YgdGhlIHVuaXF1ZSBpbmRleC4KKwkJICogTmVjZXNzYXJpbHksIHRoZSBwcmltYXJ5 IGtleSBjb2x1bW4gbXVzdCB0aGVuIGJlIG9mIHRoZSBkb21haW4KKwkJICogdHlwZS4gIFNp bmNlIHRoZSBjb25zdHJhaW50IHdhcyBwcmV2aW91c2x5IHZhbGlkLCBhbGwgdmFsdWVzIG9u CisJCSAqIHRoZSBmb3JlaWduIHNpZGUgbmVjZXNzYXJpbHkgZXhpc3Qgb24gdGhlIHByaW1h cnkgc2lkZSBhbmQgaW4KKwkJICogdHVybiBjb25mb3JtIHRvIHRoZSBkb21haW4uICBDb25z ZXF1ZW50bHksIHdlIG5lZWQgbm90IHRyZWF0CisJCSAqIGRvbWFpbnMgc3BlY2lhbGx5IGhl cmUuCisJCSAqCisJCSAqIFNpbmNlIHdlIHJlcXVpcmUgdGhhdCBhbGwgY29sbGF0aW9ucyBz aGFyZSB0aGUgc2FtZSBub3Rpb24gb2YKKwkJICogZXF1YWxpdHkgKHdoaWNoIHRoZXkgZG8s IGJlY2F1c2UgdGV4dGVxIHJlZHVjZXMgdG8gYml0d2lzZQorCQkgKiBlcXVhbGl0eSksIHdl IGRvbid0IGNvbXBhcmUgY29sbGF0aW9uIGhlcmUuCisJCSAqCisJCSAqIFdlIG5lZWQgbm90 IGRpcmVjdGx5IGNvbnNpZGVyIHRoZSBQSyB0eXBlLiAgSXQncyBuZWNlc3NhcmlseQorCQkg KiBiaW5hcnkgY29lcmNpYmxlIHRvIHRoZSBvcGNpbnR5cGUgb2YgdGhlIHVuaXF1ZSBpbmRl eCBjb2x1bW4sCisJCSAqIGFuZCByaV90cmlnZ2Vycy5jIHdpbGwgb25seSBkZWFsIHdpdGgg UEsgZGF0dW1zIGluIHRlcm1zIG9mCisJCSAqIHRoYXQgb3BjaW50eXBlLiAgQ2hhbmdpbmcg dGhlIG9wY2ludHlwZSBhbHNvIGNoYW5nZXMgcGZlcW9wLgorCQkgKi8KKwkJKm9sZF9jaGVj a19vayA9IChuZXdfcGF0aHR5cGUgPT0gb2xkX3BhdGh0eXBlICYmCisJCQkJCQluZXdfY2Fz dGZ1bmMgPT0gb2xkX2Nhc3RmdW5jICYmCisJCQkJCQkoIUlzUG9seW1vcnBoaWNUeXBlKHBm ZXFvcF9yaWdodCkgfHwKKwkJCQkJCSBuZXdfZmt0eXBlID09IG9sZF9ma3R5cGUpKTsKKwor CX0KKworCSpwZmVxb3BPdXQgPSBwZmVxb3A7CisJKnBwZXFvcE91dCA9IHBwZXFvcDsKKwkq ZmZlcW9wT3V0ID0gZmZlcW9wOworfQorCisvKgorICogRmluZEZrUGVyaW9kT3BlcnNBbmRQ cm9jcyAtCisgKgorICogTG9va3MgdXAgdGhlIG9wZXIgYW5kIHByb2Mgb2lkcyBmb3IgY29u ZmtwZXJpb2RvcGVyb2lkcyBhbmQgY29uZmtwZXJpb2Rwcm9jb2lkcy4KKyAqIFRoZXNlIGFy ZSB1c2VkIGJ5IGZvcmVpZ24ga2V5cyB3aXRoIGEgUEVSSU9EIGVsZW1lbnQuCisgKi8KK3Zv aWQKK0ZpbmRGS1BlcmlvZE9wZXJzQW5kUHJvY3MoT2lkIG9wY2xhc3MsCisJCQkJCQkgIE9p ZCAqcGVyaW9kb3Blcm9pZCwKKwkJCQkJCSAgT2lkICpwZXJpb2Rwcm9jb2lkKQoreworCU9p ZAlvcGZhbWlseTsKKwlPaWQJb3BjaW50eXBlOworCU9pZAlhZ2dyZXR0eXBlOworCU9pZAlm dW5jaWQgPSBJbnZhbGlkT2lkOworCVN0cmF0ZWd5TnVtYmVyIHN0cmF0ID0gUlRDb250YWlu ZWRCeVN0cmF0ZWd5TnVtYmVyOworCisJLyogRmlyc3QgbG9vayB1cCB0aGUgc3VwcG9ydCBw cm9jIGZvciBhZ2dyZWdhdGlvbi4gKi8KKwlpZiAoZ2V0X29wY2xhc3Nfb3BmYW1pbHlfYW5k X2lucHV0X3R5cGUob3BjbGFzcywgJm9wZmFtaWx5LCAmb3BjaW50eXBlKSkKKwkJZnVuY2lk ID0gZ2V0X29wZmFtaWx5X3Byb2Mob3BmYW1pbHksIG9wY2ludHlwZSwgb3BjaW50eXBlLCBH SVNUX1JFRkVSRU5DRURfQUdHX1BST0MpOworCisJaWYgKCFPaWRJc1ZhbGlkKGZ1bmNpZCkp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JK RUNUKSwKKwkJCQkgZXJybXNnKCJubyBzdXBwb3J0IGZ1bmMgJXUgZm91bmQgZm9yIEZPUkVJ R04gS0VZIGNvbnN0cmFpbnQiLCBHSVNUX1JFRkVSRU5DRURfQUdHX1BST0MpLAorCQkJCSBl cnJoaW50KCJEZWZpbmUgYSByZWZlcmVuY2VkYWdnIHN1cHBvcnQgZnVuY3Rpb24gZm9yIHlv dXIgR2lTVCBvcGNsYXNzLiIpKSk7CisKKwkqcGVyaW9kcHJvY29pZCA9IGZ1bmNpZDsKKwor CS8qIExvb2sgdXAgdGhlIGZ1bmN0aW9uJ3MgcmV0dHlwZS4gKi8KKwlhZ2dyZXR0eXBlID0g Z2V0X2Z1bmNfcmV0dHlwZShmdW5jaWQpOworCisJLyoKKwkgKiBOb3cgbG9vayB1cCB0aGUg Q29udGFpbmVkQnkgb3BlcmF0b3IuCisJICogSXRzIGxlZnQgYXJnIG11c3QgYmUgdGhlIHR5 cGUgb2YgdGhlIGNvbHVtbiAob3IgcmF0aGVyIG9mIHRoZSBvcGNsYXNzKS4KKwkgKiBJdHMg cmlnaHQgYXJnIG11c3QgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIHRoZSBzdXBwb3J0IHBy b2MuCisJICovCisJR2V0T3BlcmF0b3JGcm9tV2VsbEtub3duU3RyYXRlZ3kob3BjbGFzcywK KwkJCQkJCQkJCSBhZ2dyZXR0eXBlLAorCQkJCQkJCQkJICJjb250YWluZWQgYnkiLAorCQkJ CQkJCQkJICJGT1JFSUdOIEtFWSBjb25zdHJhaW50IiwKKwkJCQkJCQkJCSBwZXJpb2RvcGVy b2lkLAorCQkJCQkJCQkJICZzdHJhdCk7Cit9CisKIC8qCiAgKiBXaGVuIHRoZSBwYXJlbnQg b2YgYSBwYXJ0aXRpb24gcmVjZWl2ZXMgW3RoZSByZWZlcmVuY2luZyBzaWRlIG9mXSBhIGZv cmVpZ24KICAqIGtleSwgd2UgbXVzdCBwcm9wYWdhdGUgdGhhdCBmb3JlaWduIGtleSB0byB0 aGUgcGFydGl0aW9uLiAgSG93ZXZlciwgdGhlCkBAIC0xMTY3OSw3ICsxMTg4NCwxMSBAQCBB VEV4ZWNBbHRlckNvbnN0clJlY3Vyc2UoQ29uc3RyYWludCAqY21kY29uLCBSZWxhdGlvbiBj b25yZWwsIFJlbGF0aW9uIHRncmVsLAogCQkJaWYgKHRnZm9ybS0+dGdmb2lkICE9IEZfUklf RktFWV9OT0FDVElPTl9ERUwgJiYKIAkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1JJX0ZLRVlf Tk9BQ1RJT05fVVBEICYmCiAJCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZX0NIRUNL X0lOUyAmJgotCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZfUklfRktFWV9DSEVDS19VUEQpCisJ CQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZX0NIRUNLX1VQRCAmJgorCQkJCXRnZm9y bS0+dGdmb2lkICE9IEZfVFJJX0ZLRVlfTk9BQ1RJT05fREVMICYmCisJCQkJdGdmb3JtLT50 Z2ZvaWQgIT0gRl9UUklfRktFWV9OT0FDVElPTl9VUEQgJiYKKwkJCQl0Z2Zvcm0tPnRnZm9p ZCAhPSBGX1RSSV9GS0VZX0NIRUNLX0lOUyAmJgorCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZf VFJJX0ZLRVlfQ0hFQ0tfVVBEKQogCQkJCWNvbnRpbnVlOwogCiAJCQl0Z0NvcHlUdXBsZSA9 IGhlYXBfY29weXR1cGxlKHRndHVwbGUpOwpAQCAtMTE5MjYsNyArMTIxMzUsNiBAQCBBVEV4 ZWNWYWxpZGF0ZUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBjaGFy ICpjb25zdHJOYW1lLAogCXJldHVybiBhZGRyZXNzOwogfQogCi0KIC8qCiAgKiB0cmFuc2Zv cm1Db2x1bW5OYW1lTGlzdCAtIHRyYW5zZm9ybSBsaXN0IG9mIGNvbHVtbiBuYW1lcwogICoK QEAgLTExOTkyLDcgKzEyMjAwLDkgQEAgdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoT2lkIHJl bElkLCBMaXN0ICpjb2xMaXN0LAogc3RhdGljIGludAogdHJhbnNmb3JtRmtleUdldFByaW1h cnlLZXkoUmVsYXRpb24gcGtyZWwsIE9pZCAqaW5kZXhPaWQsCiAJCQkJCQkgICBMaXN0ICoq YXR0bmFtZWxpc3QsCisJCQkJCQkgICBOb2RlICoqcGtfcGVyaW9kLAogCQkJCQkJICAgaW50 MTYgKmF0dG51bXMsIE9pZCAqYXR0dHlwaWRzLAorCQkJCQkJICAgaW50MTYgKnBlcmlvZGF0 dG51bXMsIE9pZCAqcGVyaW9kYXR0dHlwaWRzLAogCQkJCQkJICAgT2lkICpvcGNsYXNzZXMp CiB7CiAJTGlzdAkgICAqaW5kZXhvaWRsaXN0OwpAQCAtMTIwNTcsMzYgKzEyMjY3LDU1IEBA IHRyYW5zZm9ybUZrZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4 T2lkLAogCiAJLyoKIAkgKiBOb3cgYnVpbGQgdGhlIGxpc3Qgb2YgUEsgYXR0cmlidXRlcyBm cm9tIHRoZSBpbmRrZXkgZGVmaW5pdGlvbiAod2UKLQkgKiBhc3N1bWUgYSBwcmltYXJ5IGtl eSBjYW5ub3QgaGF2ZSBleHByZXNzaW9uYWwgZWxlbWVudHMpCisJICogYXNzdW1lIGEgcHJp bWFyeSBrZXkgY2Fubm90IGhhdmUgZXhwcmVzc2lvbmFsIGVsZW1lbnRzLCB1bmxlc3MgaXQK KwkgKiBoYXMgYSBQRVJJT0QpCiAJICovCiAJKmF0dG5hbWVsaXN0ID0gTklMOwogCWZvciAo aSA9IDA7IGkgPCBpbmRleFN0cnVjdC0+aW5kbmtleWF0dHM7IGkrKykKIAl7CiAJCWludAkJ CXBrYXR0bm8gPSBpbmRleFN0cnVjdC0+aW5ka2V5LnZhbHVlc1tpXTsKIAotCQlhdHRudW1z W2ldID0gcGthdHRubzsKLQkJYXR0dHlwaWRzW2ldID0gYXR0bnVtVHlwZUlkKHBrcmVsLCBw a2F0dG5vKTsKLQkJb3BjbGFzc2VzW2ldID0gaW5kY2xhc3MtPnZhbHVlc1tpXTsKLQkJKmF0 dG5hbWVsaXN0ID0gbGFwcGVuZCgqYXR0bmFtZWxpc3QsCi0JCQkJCQkJICAgbWFrZVN0cmlu Zyhwc3RyZHVwKE5hbWVTdHIoKmF0dG51bUF0dE5hbWUocGtyZWwsIHBrYXR0bm8pKSkpKTsK KwkJaWYgKGkgPT0gaW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRzIC0gMSAmJiBpbmRleFN0cnVj dC0+aW5kaXNleGNsdXNpb24pCisJCXsKKwkJCS8qIHdlIGhhdmUgYSByYW5nZSAqLworCQkJ LyogVGhlIGNhbGxlciB3aWxsIHNldCBhdHRudW1zW2ldICovCisJCQlwZXJpb2RhdHRudW1z WzBdID0gcGthdHRubzsKKwkJCXBlcmlvZGF0dHR5cGlkc1swXSA9IGF0dG51bVR5cGVJZChw a3JlbCwgcGthdHRubyk7CisJCQlvcGNsYXNzZXNbaV0gPSBpbmRjbGFzcy0+dmFsdWVzW2ld OworCisJCQlBc3NlcnQoKnBrX3BlcmlvZCA9PSBOVUxMKTsKKwkJCSpwa19wZXJpb2QgPSAo Tm9kZSAqKSBtYWtlU3RyaW5nKHBzdHJkdXAoTmFtZVN0cigqYXR0bnVtQXR0TmFtZShwa3Jl bCwgcGthdHRubykpKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlhdHRudW1zW2ldID0gcGth dHRubzsKKwkJCWF0dHR5cGlkc1tpXSA9IGF0dG51bVR5cGVJZChwa3JlbCwgcGthdHRubyk7 CisJCQlvcGNsYXNzZXNbaV0gPSBpbmRjbGFzcy0+dmFsdWVzW2ldOworCQkJKmF0dG5hbWVs aXN0ID0gbGFwcGVuZCgqYXR0bmFtZWxpc3QsCisJCQkJCQkJCSAgbWFrZVN0cmluZyhwc3Ry ZHVwKE5hbWVTdHIoKmF0dG51bUF0dE5hbWUocGtyZWwsIHBrYXR0bm8pKSkpKTsKKwkJfQog CX0KIAogCVJlbGVhc2VTeXNDYWNoZShpbmRleFR1cGxlKTsKIAotCXJldHVybiBpOworCWlm IChpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24pIHJldHVybiBpIC0gMTsKKwllbHNlIHJl dHVybiBpOwogfQogCiAvKgogICogdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMgLQogICoKICAq CU1ha2Ugc3VyZSB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIGEgcmVmZXJlbmNlZCB0YWJsZSBi ZWxvbmcgdG8gYSB1bmlxdWUKLSAqCShvciBwcmltYXJ5IGtleSkgY29uc3RyYWludC4gIFJl dHVybiB0aGUgT0lEIG9mIHRoZSBpbmRleCBzdXBwb3J0aW5nCi0gKgl0aGUgY29uc3RyYWlu dCwgYXMgd2VsbCBhcyB0aGUgb3BjbGFzc2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5kZXgK KyAqCShvciBwcmltYXJ5IGtleSkgY29uc3RyYWludC4gIE9yIGlmIHRoaXMgaXMgYSB0ZW1w b3JhbCBmb3JlaWduIGtleQorICoJdGhlIHByaW1hcnkga2V5IHNob3VsZCBiZSBhbiBleGNs dXNpb24gY29uc3RyYWludCBpbnN0ZWFkLgorICoJUmV0dXJuIHRoZSBPSUQgb2YgdGhlIGlu ZGV4IHN1cHBvcnRpbmcgdGhlIGNvbnN0cmFpbnQsCisgKglhcyB3ZWxsIGFzIHRoZSBvcGNs YXNzZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbmRleAogICoJY29sdW1ucy4KICAqLwogc3Rh dGljIE9pZAogdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJ CQlpbnQgbnVtYXR0cnMsIGludDE2ICphdHRudW1zLAorCQkJCQkJYm9vbCBpc190ZW1wb3Jh bCwgaW50MTYgcGVyaW9kYXR0bnVtLAogCQkJCQkJT2lkICpvcGNsYXNzZXMpIC8qIG91dHB1 dCBwYXJhbWV0ZXIgKi8KIHsKIAlPaWQJCQlpbmRleG9pZCA9IEludmFsaWRPaWQ7CkBAIC0x MjExMyw2ICsxMjM0MiwxMCBAQCB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhSZWxhdGlvbiBw a3JlbCwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GT1JFSUdOX0tFWSksCiAJ CQkJCQkgZXJybXNnKCJmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0 IG5vdCBjb250YWluIGR1cGxpY2F0ZXMiKSkpOwogCQl9CisJCWlmIChpc190ZW1wb3JhbCAm JiBhdHRudW1zW2ldID09IHBlcmlvZGF0dG51bSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GT1JFSUdOX0tFWSksCisJCQkJCSBlcnJtc2co ImZvcmVpZ24ga2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4g ZHVwbGljYXRlcyIpKSk7CiAJfQogCiAJLyoKQEAgLTEyMTM0LDEyICsxMjM2NywxNiBAQCB0 cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJaW5kZXhTdHJ1Y3Qg PSAoRm9ybV9wZ19pbmRleCkgR0VUU1RSVUNUKGluZGV4VHVwbGUpOwogCiAJCS8qCi0JCSAq IE11c3QgaGF2ZSB0aGUgcmlnaHQgbnVtYmVyIG9mIGNvbHVtbnM7IG11c3QgYmUgdW5pcXVl IGFuZCBub3QgYQotCQkgKiBwYXJ0aWFsIGluZGV4OyBmb3JnZXQgaXQgaWYgdGhlcmUgYXJl IGFueSBleHByZXNzaW9ucywgdG9vLiBJbnZhbGlkCi0JCSAqIGluZGV4ZXMgYXJlIG91dCBh cyB3ZWxsLgorCQkgKiBNdXN0IGhhdmUgdGhlIHJpZ2h0IG51bWJlciBvZiBjb2x1bW5zOyBt dXN0IGJlIHVuaXF1ZQorCQkgKiAob3IgaWYgdGVtcG9yYWwgdGhlbiBleGNsdXNpb24gaW5z dGVhZCkgYW5kIG5vdCBhCisJCSAqIHBhcnRpYWwgaW5kZXg7IGZvcmdldCBpdCBpZiB0aGVy ZSBhcmUgYW55IGV4cHJlc3Npb25zLCB0b28uCisJCSAqIEludmFsaWQgaW5kZXhlcyBhcmUg b3V0IGFzIHdlbGwuCiAJCSAqLwotCQlpZiAoaW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRzID09 IG51bWF0dHJzICYmCi0JCQlpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUgJiYKKwkJaWYgKChp c190ZW1wb3JhbAorCQkJICA/IChpbmRleFN0cnVjdC0+aW5kbmtleWF0dHMgPT0gbnVtYXR0 cnMgKyAxICYmCisJCQkJIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbikKKwkJCSAgOiAo aW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRzID09IG51bWF0dHJzICYmCisJCQkJIGluZGV4U3Ry dWN0LT5pbmRpc3VuaXF1ZSkpICYmCiAJCQlpbmRleFN0cnVjdC0+aW5kaXN2YWxpZCAmJgog CQkJaGVhcF9hdHRpc251bGwoaW5kZXhUdXBsZSwgQW51bV9wZ19pbmRleF9pbmRwcmVkLCBO VUxMKSAmJgogCQkJaGVhcF9hdHRpc251bGwoaW5kZXhUdXBsZSwgQW51bV9wZ19pbmRleF9p bmRleHBycywgTlVMTCkpCkBAIC0xMjE3Nyw2ICsxMjQxNCwxOSBAQCB0cmFuc2Zvcm1Ga2V5 Q2hlY2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJCQlpZiAoIWZvdW5kKQogCQkJCQlicmVh azsKIAkJCX0KKwkJCWlmIChmb3VuZCAmJiBpc190ZW1wb3JhbCkKKwkJCXsKKwkJCQlmb3Vu ZCA9IGZhbHNlOworCQkJCWZvciAoaiA9IDA7IGogPCBudW1hdHRycyArIDE7IGorKykKKwkJ CQl7CisJCQkJCWlmIChwZXJpb2RhdHRudW0gPT0gaW5kZXhTdHJ1Y3QtPmluZGtleS52YWx1 ZXNbal0pCisJCQkJCXsKKwkJCQkJCW9wY2xhc3Nlc1tudW1hdHRyc10gPSBpbmRjbGFzcy0+ dmFsdWVzW2pdOworCQkJCQkJZm91bmQgPSB0cnVlOworCQkJCQkJYnJlYWs7CisJCQkJCX0K KwkJCQl9CisJCQl9CiAKIAkJCS8qCiAJCQkgKiBSZWZ1c2UgdG8gdXNlIGEgZGVmZXJyYWJs ZSB1bmlxdWUvcHJpbWFyeSBrZXkuICBUaGlzIGlzIHBlciBTUUwKQEAgLTEyMjg2LDcgKzEy NTM2LDggQEAgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpjb25uYW1lLAog CQkJCQkJCSBSZWxhdGlvbiByZWwsCiAJCQkJCQkJIFJlbGF0aW9uIHBrcmVsLAogCQkJCQkJ CSBPaWQgcGtpbmRPaWQsCi0JCQkJCQkJIE9pZCBjb25zdHJhaW50T2lkKQorCQkJCQkJCSBP aWQgY29uc3RyYWludE9pZCwKKwkJCQkJCQkgYm9vbCB0ZW1wb3JhbCkKIHsKIAlUdXBsZVRh YmxlU2xvdCAqc2xvdDsKIAlUYWJsZVNjYW5EZXNjIHNjYW47CkBAIC0xMjMxNSw4ICsxMjU2 NiwxMCBAQCB2YWxpZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50KGNoYXIgKmNvbm5hbWUsCiAJ LyoKIAkgKiBTZWUgaWYgd2UgY2FuIGRvIGl0IHdpdGggYSBzaW5nbGUgTEVGVCBKT0lOIHF1 ZXJ5LiAgQSBmYWxzZSByZXN1bHQKIAkgKiBpbmRpY2F0ZXMgd2UgbXVzdCBwcm9jZWVkIHdp dGggdGhlIGZpcmUtdGhlLXRyaWdnZXIgbWV0aG9kLgorCSAqIFdlIGNhbid0IGRvIGEgTEVG VCBKT0lOIGZvciB0ZW1wb3JhbCBGS3MgeWV0LAorCSAqIGJ1dCB3ZSBjYW4gb25jZSB3ZSBz dXBwb3J0IHRlbXBvcmFsIGxlZnQgam9pbnMuCiAJICovCi0JaWYgKFJJX0luaXRpYWxfQ2hl Y2soJnRyaWcsIHJlbCwgcGtyZWwpKQorCWlmICghdGVtcG9yYWwgJiYgUklfSW5pdGlhbF9D aGVjaygmdHJpZywgcmVsLCBwa3JlbCkpCiAJCXJldHVybjsKIAogCS8qCkBAIC0xMjM4NSw2 ICsxMjYzOCw3IEBAIENyZWF0ZUZLQ2hlY2tUcmlnZ2VyKE9pZCBteVJlbE9pZCwgT2lkIHJl ZlJlbE9pZCwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LAogewogCU9iamVjdEFkZHJlc3Mg dHJpZ0FkZHJlc3M7CiAJQ3JlYXRlVHJpZ1N0bXQgKmZrX3RyaWdnZXI7CisJYm9vbCBpc190 ZW1wb3JhbCA9IGZrY29uc3RyYWludC0+ZmtfcGVyaW9kOwogCiAJLyoKIAkgKiBOb3RlOiBm b3IgYSBzZWxmLXJlZmVyZW50aWFsIEZLIChyZWZlcmVuY2luZyBhbmQgcmVmZXJlbmNlZCB0 YWJsZXMgYXJlCkBAIC0xMjQwNCwxMiArMTI2NTgsMTggQEAgQ3JlYXRlRktDaGVja1RyaWdn ZXIoT2lkIG15UmVsT2lkLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cmFp bnQsCiAJLyogRWl0aGVyIE9OIElOU0VSVCBvciBPTiBVUERBVEUgKi8KIAlpZiAob25faW5z ZXJ0KQogCXsKLQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklf RktleV9jaGVja19pbnMiKTsKKwkJaWYgKGlzX3RlbXBvcmFsKQorCQkJZmtfdHJpZ2dlci0+ ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfY2hlY2tfaW5zIik7CisJCWVs c2UKKwkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlf Y2hlY2tfaW5zIik7CiAJCWZrX3RyaWdnZXItPmV2ZW50cyA9IFRSSUdHRVJfVFlQRV9JTlNF UlQ7CiAJfQogCWVsc2UKIAl7Ci0JCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlJJX0ZLZXlfY2hlY2tfdXBkIik7CisJCWlmIChpc190ZW1wb3JhbCkKKwkJCWZr X3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2NoZWNrX3Vw ZCIpOworCQllbHNlCisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1l KCJSSV9GS2V5X2NoZWNrX3VwZCIpOwogCQlma190cmlnZ2VyLT5ldmVudHMgPSBUUklHR0VS X1RZUEVfVVBEQVRFOwogCX0KIApAQCAtMTI0NjcsMzcgKzEyNzI3LDY4IEBAIGNyZWF0ZUZv cmVpZ25LZXlBY3Rpb25UcmlnZ2VycyhSZWxhdGlvbiByZWwsIE9pZCByZWZSZWxPaWQsIENv bnN0cmFpbnQgKmZrY29uc3RyCiAJZmtfdHJpZ2dlci0+d2hlbkNsYXVzZSA9IE5VTEw7CiAJ ZmtfdHJpZ2dlci0+dHJhbnNpdGlvblJlbHMgPSBOSUw7CiAJZmtfdHJpZ2dlci0+Y29uc3Ry cmVsID0gTlVMTDsKLQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKKwlp ZiAoZmtjb25zdHJhaW50LT5ma19wZXJpb2QgIT0gTlVMTCkKIAl7Ci0JCWNhc2UgRktDT05T VFJfQUNUSU9OX05PQUNUSU9OOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29u c3RyYWludC0+ZGVmZXJyYWJsZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZr Y29uc3RyYWludC0+aW5pdGRlZmVycmVkOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBT eXN0ZW1GdW5jTmFtZSgiUklfRktleV9ub2FjdGlvbl9kZWwiKTsKLQkJCWJyZWFrOwotCQlj YXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFi bGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJ ZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9yZXN0cmlj dF9kZWwiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgot CQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5p dGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1 bmNOYW1lKCJSSV9GS2V5X2Nhc2NhZGVfZGVsIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NP TlNUUl9BQ1RJT05fU0VUTlVMTDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxz ZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dl ci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRudWxsX2RlbCIpOwot CQkJYnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6Ci0JCQlma190 cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJy ZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUo IlJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwiKTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJ ZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAotCQkJCSAo aW50KSBma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24pOwotCQkJYnJlYWs7CisJCS8qIFRl bXBvcmFsIGZvcmVpZ24ga2V5cyAqLworCQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfZGVs X2FjdGlvbikKKwkJeworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046CisJCQkJ ZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKKwkJ CQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJl ZDsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktl eV9ub2FjdGlvbl9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9O X1JFU1RSSUNUOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlm a190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5j bmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9yZXN0cmljdF9kZWwiKTsKKwkJCQli cmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQljYXNlIEZLQ09O U1RSX0FDVElPTl9TRVROVUxMOgorCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVM VDoKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygiYWN0aW9uIG5vdCBzdXBwb3J0ZWQg Zm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cyIpKSk7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0 OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwK KwkJCQkJIChpbnQpIGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbik7CisJCQkJYnJlYWs7 CisJCX0KKwl9CisJZWxzZQorCXsKKwkJc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX2RlbF9h Y3Rpb24pCisJCXsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX05PQUNUSU9OOgorCQkJCWZr X3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7CisJCQkJ ZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7 CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9u b2FjdGlvbl9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1JF U1RSSUNUOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190 cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFt ZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3Jlc3RyaWN0X2RlbCIpOworCQkJCWJyZWFr OworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FERToKKwkJCQlma190cmlnZ2VyLT5k ZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFs c2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktl eV9jYXNjYWRlX2RlbCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f U0VUTlVMTDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtf dHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25h bWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRudWxsX2RlbCIpOworCQkJCWJyZWFr OworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVDoKKwkJCQlma190cmlnZ2Vy LT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0g ZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklf RktleV9zZXRkZWZhdWx0X2RlbCIpOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQll bG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCisJCQkJCSAo aW50KSBma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24pOworCQkJCWJyZWFrOworCQl9CiAJ fQogCiAJdHJpZ0FkZHJlc3MgPSBDcmVhdGVUcmlnZ2VyKGZrX3RyaWdnZXIsIE5VTEwsIHJl ZlJlbE9pZCwKQEAgLTEyNTI3LDM3ICsxMjgxOCw2OCBAQCBjcmVhdGVGb3JlaWduS2V5QWN0 aW9uVHJpZ2dlcnMoUmVsYXRpb24gcmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpm a2NvbnN0cgogCWZrX3RyaWdnZXItPndoZW5DbGF1c2UgPSBOVUxMOwogCWZrX3RyaWdnZXIt PnRyYW5zaXRpb25SZWxzID0gTklMOwogCWZrX3RyaWdnZXItPmNvbnN0cnJlbCA9IE5VTEw7 Ci0Jc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pCisJaWYgKGZrY29uc3Ry YWludC0+ZmtfcGVyaW9kICE9IE5VTEwpCiAJewotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9O T0FDVElPTjoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRl ZmVycmFibGU7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQt PmluaXRkZWZlcnJlZDsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05h bWUoIlJJX0ZLZXlfbm9hY3Rpb25fdXBkIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNU Ul9BQ1RJT05fUkVTVFJJQ1Q6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7 Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXIt PmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfcmVzdHJpY3RfdXBkIik7Ci0J CQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FERToKLQkJCWZrX3RyaWdn ZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9 IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklf RktleV9jYXNjYWRlX3VwZCIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9O X1NFVE5VTEw6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190 cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1l ID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0bnVsbF91cGQiKTsKLQkJCWJyZWFrOwot CQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUOgotCQkJZmtfdHJpZ2dlci0+ZGVm ZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7 Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3Nl dGRlZmF1bHRfdXBkIik7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKLQkJCQkgKGludCkgZmtjb25z dHJhaW50LT5ma191cGRfYWN0aW9uKTsKLQkJCWJyZWFrOworCQkvKiBUZW1wb3JhbCBmb3Jl aWduIGtleXMgKi8KKwkJc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pCisJ CXsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX05PQUNUSU9OOgorCQkJCWZrX3RyaWdnZXIt PmRlZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7CisJCQkJZmtfdHJpZ2dl ci0+aW5pdGRlZmVycmVkID0gZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7CisJCQkJZmtf dHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfbm9hY3Rpb25f dXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoK KwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0 ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfcmVzdHJpY3RfdXBkIik7CisJCQkJYnJlYWs7CisJCQlj YXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgorCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f U0VUTlVMTDoKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKKwkJCQkJCSBlcnJtc2coImFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3Jh bCBmb3JlaWduIGtleXMiKSkpOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCisJCQkJCSAoaW50 KSBma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pOworCQkJCWJyZWFrOworCQl9CisJfQor CWVsc2UKKwl7CisJCXN3aXRjaCAoZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKQorCQl7 CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoKKwkJCQlma190cmlnZ2VyLT5k ZWZlcnJhYmxlID0gZmtjb25zdHJhaW50LT5kZWZlcnJhYmxlOworCQkJCWZrX3RyaWdnZXIt PmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+aW5pdGRlZmVycmVkOworCQkJCWZrX3Ry aWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfbm9hY3Rpb25fdXBk Iik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKKwkJ CQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5p dGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1G dW5jTmFtZSgiUklfRktleV9yZXN0cmljdF91cGQiKTsKKwkJCQlicmVhazsKKwkJCWNhc2Ug RktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9 IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZr X3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2FzY2FkZV91 cGQiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJ CQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmlu aXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVt RnVuY05hbWUoIlJJX0ZLZXlfc2V0bnVsbF91cGQiKTsKKwkJCQlicmVhazsKKwkJCWNhc2Ug RktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJs ZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJ CWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0ZGVm YXVsdF91cGQiKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAorCQkJCQkgKGludCkgZmtjb25z dHJhaW50LT5ma191cGRfYWN0aW9uKTsKKwkJCQlicmVhazsKKwkJfQogCX0KIAogCXRyaWdB ZGRyZXNzID0gQ3JlYXRlVHJpZ2dlcihma190cmlnZ2VyLCBOVUxMLCByZWZSZWxPaWQsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQv bm9kZXMvb3V0ZnVuY3MuYwppbmRleCAwM2Y2N2I2ODUwNi4uMmFkZWU2ZDVkYjIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv bm9kZXMvb3V0ZnVuY3MuYwpAQCAtNzk0LDcgKzc5NCw5IEBAIF9vdXRDb25zdHJhaW50KFN0 cmluZ0luZm8gc3RyLCBjb25zdCBDb25zdHJhaW50ICpub2RlKQogCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhzdHIsICJGT1JFSUdOX0tFWSIpOwogCQkJV1JJVEVfTk9ERV9GSUVMRChw a3RhYmxlKTsKIAkJCVdSSVRFX05PREVfRklFTEQoZmtfYXR0cnMpOworCQkJV1JJVEVfTk9E RV9GSUVMRChma19wZXJpb2QpOwogCQkJV1JJVEVfTk9ERV9GSUVMRChwa19hdHRycyk7CisJ CQlXUklURV9OT0RFX0ZJRUxEKHBrX3BlcmlvZCk7CiAJCQlXUklURV9DSEFSX0ZJRUxEKGZr X21hdGNodHlwZSk7CiAJCQlXUklURV9DSEFSX0ZJRUxEKGZrX3VwZF9hY3Rpb24pOwogCQkJ V1JJVEVfQ0hBUl9GSUVMRChma19kZWxfYWN0aW9uKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL25vZGVzL3JlYWRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMK aW5kZXggY2ZiNTUyZmRlNzQuLmJmZjgzNWI0YzE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3Mu YwpAQCAtNDYyLDcgKzQ2Miw5IEBAIF9yZWFkQ29uc3RyYWludCh2b2lkKQogCQljYXNlIENP TlNUUl9GT1JFSUdOOgogCQkJUkVBRF9OT0RFX0ZJRUxEKHBrdGFibGUpOwogCQkJUkVBRF9O T0RFX0ZJRUxEKGZrX2F0dHJzKTsKKwkJCVJFQURfTk9ERV9GSUVMRChma19wZXJpb2QpOwog CQkJUkVBRF9OT0RFX0ZJRUxEKHBrX2F0dHJzKTsKKwkJCVJFQURfTk9ERV9GSUVMRChwa19w ZXJpb2QpOwogCQkJUkVBRF9DSEFSX0ZJRUxEKGZrX21hdGNodHlwZSk7CiAJCQlSRUFEX0NI QVJfRklFTEQoZmtfdXBkX2FjdGlvbik7CiAJCQlSRUFEX0NIQVJfRklFTEQoZmtfZGVsX2Fj dGlvbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCAxMzBmN2ZjN2MzZi4uYTExODIwNDJiODYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQpAQCAtNTIyLDEyICs1MjIsMTMgQEAgc3RhdGljIE5vZGUgKm1ha2VS ZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUg KnF1ZXJ5KTsKIAkJCQkgU2V0UmVzZXRDbGF1c2UgRnVuY3Rpb25TZXRSZXNldENsYXVzZQog CiAldHlwZSA8bm9kZT4JVGFibGVFbGVtZW50IFR5cGVkVGFibGVFbGVtZW50IENvbnN0cmFp bnRFbGVtIFRhYmxlRnVuY0VsZW1lbnQKLSV0eXBlIDxub2RlPgljb2x1bW5EZWYgY29sdW1u T3B0aW9ucworJXR5cGUgPG5vZGU+CWNvbHVtbkRlZiBjb2x1bW5PcHRpb25zIG9wdGlvbmFs UGVyaW9kTmFtZQogJXR5cGUgPGRlZmVsdD4JZGVmX2VsZW0gcmVsb3B0aW9uX2VsZW0gb2xk X2FnZ3JfZWxlbSBvcGVyYXRvcl9kZWZfZWxlbQogJXR5cGUgPG5vZGU+CWRlZl9hcmcgY29s dW1uRWxlbSB3aGVyZV9jbGF1c2Ugd2hlcmVfb3JfY3VycmVudF9jbGF1c2UKIAkJCQlhX2V4 cHIgYl9leHByIGNfZXhwciBBZXhwckNvbnN0IGluZGlyZWN0aW9uX2VsIG9wdF9zbGljZV9i b3VuZAogCQkJCWNvbHVtbnJlZiBpbl9leHByIGhhdmluZ19jbGF1c2UgZnVuY190YWJsZSB4 bWx0YWJsZSBhcnJheV9leHByCiAJCQkJT3B0V2hlcmVDbGF1c2Ugb3BlcmF0b3JfZGVmX2Fy ZworJXR5cGUgPGxpc3Q+CW9wdF9jb2x1bW5fYW5kX3BlcmlvZF9saXN0CiAldHlwZSA8bGlz dD4Jcm93c2Zyb21faXRlbSByb3dzZnJvbV9saXN0IG9wdF9jb2xfZGVmX2xpc3QKICV0eXBl IDxib29sZWFuPiBvcHRfb3JkaW5hbGl0eSBvcHRfd2l0aG91dF9vdmVybGFwcwogJXR5cGUg PGxpc3Q+CUV4Y2x1c2lvbkNvbnN0cmFpbnRMaXN0IEV4Y2x1c2lvbkNvbnN0cmFpbnRFbGVt CkBAIC03NDUsNyArNzQ2LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2Vs ZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlPVkVS IE9WRVJMQVBTIE9WRVJMQVkgT1ZFUlJJRElORyBPV05FRCBPV05FUgogCiAJUEFSQUxMRUwg UEFSQU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5HIFBBU1NXT1JECi0J UExBQ0lORyBQTEFOUyBQT0xJQ1kKKwlQRVJJT0QgUExBQ0lORyBQTEFOUyBQT0xJQ1kKIAlQ T1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJFUEFSRUQg UFJJTUFSWQogCVBSSU9SIFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9DRURVUkUgUFJPQ0VE VVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9OCiAKQEAgLTQyMjIsMjEgKzQyMjMsMjMgQEAgQ29u c3RyYWludEVsZW06CiAJCQkJCQkJCSAgIE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQkID0g KE5vZGUgKikgbjsKIAkJCQl9Ci0JCQl8IEZPUkVJR04gS0VZICcoJyBjb2x1bW5MaXN0ICcp JyBSRUZFUkVOQ0VTIHF1YWxpZmllZF9uYW1lCi0JCQkJb3B0X2NvbHVtbl9saXN0IGtleV9t YXRjaCBrZXlfYWN0aW9ucyBDb25zdHJhaW50QXR0cmlidXRlU3BlYworCQkJfCBGT1JFSUdO IEtFWSAnKCcgY29sdW1uTGlzdCBvcHRpb25hbFBlcmlvZE5hbWUgJyknIFJFRkVSRU5DRVMg cXVhbGlmaWVkX25hbWUKKwkJCQlvcHRfY29sdW1uX2FuZF9wZXJpb2RfbGlzdCBrZXlfbWF0 Y2gga2V5X2FjdGlvbnMgQ29uc3RyYWludEF0dHJpYnV0ZVNwZWMKIAkJCQl7CiAJCQkJCUNv bnN0cmFpbnQgKm4gPSBtYWtlTm9kZShDb25zdHJhaW50KTsKIAogCQkJCQluLT5jb250eXBl ID0gQ09OU1RSX0ZPUkVJR047CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7Ci0JCQkJCW4tPnBr dGFibGUgPSAkNzsKKwkJCQkJbi0+cGt0YWJsZSA9ICQ4OwogCQkJCQluLT5ma19hdHRycyA9 ICQ0OwotCQkJCQluLT5wa19hdHRycyA9ICQ4OwotCQkJCQluLT5ma19tYXRjaHR5cGUgPSAk OTsKLQkJCQkJbi0+ZmtfdXBkX2FjdGlvbiA9ICgkMTApLT51cGRhdGVBY3Rpb24tPmFjdGlv bjsKLQkJCQkJbi0+ZmtfZGVsX2FjdGlvbiA9ICgkMTApLT5kZWxldGVBY3Rpb24tPmFjdGlv bjsKLQkJCQkJbi0+ZmtfZGVsX3NldF9jb2xzID0gKCQxMCktPmRlbGV0ZUFjdGlvbi0+Y29s czsKLQkJCQkJcHJvY2Vzc0NBU2JpdHMoJDExLCBAMTEsICJGT1JFSUdOIEtFWSIsCisJCQkJ CW4tPmZrX3BlcmlvZCA9ICQ1OworCQkJCQluLT5wa19hdHRycyA9IGxpbml0aWFsKCQ5KTsK KwkJCQkJbi0+cGtfcGVyaW9kID0gbHNlY29uZCgkOSk7CisJCQkJCW4tPmZrX21hdGNodHlw ZSA9ICQxMDsKKwkJCQkJbi0+ZmtfdXBkX2FjdGlvbiA9ICgkMTEpLT51cGRhdGVBY3Rpb24t PmFjdGlvbjsKKwkJCQkJbi0+ZmtfZGVsX2FjdGlvbiA9ICgkMTEpLT5kZWxldGVBY3Rpb24t PmFjdGlvbjsKKwkJCQkJbi0+ZmtfZGVsX3NldF9jb2xzID0gKCQxMSktPmRlbGV0ZUFjdGlv bi0+Y29sczsKKwkJCQkJcHJvY2Vzc0NBU2JpdHMoJDEyLCBAMTIsICJGT1JFSUdOIEtFWSIs CiAJCQkJCQkJCSAgICZuLT5kZWZlcnJhYmxlLCAmbi0+aW5pdGRlZmVycmVkLAogCQkJCQkJ CQkgICAmbi0+c2tpcF92YWxpZGF0aW9uLCBOVUxMLAogCQkJCQkJCQkgICB5eXNjYW5uZXIp OwpAQCAtNDI2NCw2ICs0MjY3LDE2IEBAIGNvbHVtbkxpc3Q6CiAJCQl8IGNvbHVtbkxpc3Qg JywnIGNvbHVtbkVsZW0JCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCQk7CiAKK29w dGlvbmFsUGVyaW9kTmFtZToKKwkJCScsJyBQRVJJT0QgY29sdW1uRWxlbSB7ICQkID0gJDM7 IH0KKwkJCXwgLypFTVBUWSovICAgICAgICAgICAgICAgeyAkJCA9IE5VTEw7IH0KKwk7CisK K29wdF9jb2x1bW5fYW5kX3BlcmlvZF9saXN0OgorCQkJJygnIGNvbHVtbkxpc3Qgb3B0aW9u YWxQZXJpb2ROYW1lICcpJwkJCXsgJCQgPSBsaXN0X21ha2UyKCQyLCAkMyk7IH0KKwkJCXwg LypFTVBUWSovCQkJCQkJCQl7ICQkID0gbGlzdF9tYWtlMihOSUwsIE5VTEwpOyB9CisJCTsK KwogY29sdW1uRWxlbTogQ29sSWQKIAkJCQl7CiAJCQkJCSQkID0gKE5vZGUgKikgbWFrZVN0 cmluZygkMSk7CkBAIC0xNzYxOCw2ICsxNzYzMSw3IEBAIHJlc2VydmVkX2tleXdvcmQ6CiAJ CQl8IE9OTFkKIAkJCXwgT1IKIAkJCXwgT1JERVIKKwkJCXwgUEVSSU9ECiAJCQl8IFBMQUNJ TkcKIAkJCXwgUFJJTUFSWQogCQkJfCBSRUZFUkVOQ0VTCkBAIC0xNzkyNyw2ICsxNzk0MSw3 IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgUEFSVElUSU9OCiAJCQl8IFBBU1NJTkcK IAkJCXwgUEFTU1dPUkQKKwkJCXwgUEVSSU9ECiAJCQl8IFBMQUNJTkcKIAkJCXwgUExBTlMK IAkJCXwgUE9MSUNZCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJp Z2dlcnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IDcw OGQ5YzhlZmM5Li4wZGFkZjJhY2IyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3JpX3RyaWdnZXJzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdn ZXJzLmMKQEAgLTMxLDcgKzMxLDkgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlv bi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29uc3RyYWludC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfb3BlcmF0b3IuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3JhbmdlLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVj bWRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1 dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivc3BpLmgiCkBAIC00OCw2ICs1 MCw3IEBACiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lz Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxz L3JhbmdldHlwZXMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGls cy9ybHMuaCIKICNpbmNsdWRlICJ1dGlscy9ydWxldXRpbHMuaCIKQEAgLTExOCwxMiArMTIx LDE1IEBAIHR5cGVkZWYgc3RydWN0IFJJX0NvbnN0cmFpbnRJbmZvCiAJaW50MTYJCWNvbmZk ZWxzZXRjb2xzW1JJX01BWF9OVU1LRVlTXTsgLyogYXR0bnVtcyBvZiBjb2xzIHRvIHNldCBv bgogCQkJCQkJCQkJCQkJICogZGVsZXRlICovCiAJY2hhcgkJY29uZm1hdGNodHlwZTsJLyog Zm9yZWlnbiBrZXkncyBtYXRjaCB0eXBlICovCisJYm9vbAkJdGVtcG9yYWw7CQkvKiBpZiB0 aGUgZm9yZWlnbiBrZXkgaXMgdGVtcG9yYWwgKi8KIAlpbnQJCQlua2V5czsJCQkvKiBudW1i ZXIgb2Yga2V5IGNvbHVtbnMgKi8KIAlpbnQxNgkJcGtfYXR0bnVtc1tSSV9NQVhfTlVNS0VZ U107IC8qIGF0dG51bXMgb2YgcmVmZXJlbmNlZCBjb2xzICovCiAJaW50MTYJCWZrX2F0dG51 bXNbUklfTUFYX05VTUtFWVNdOyAvKiBhdHRudW1zIG9mIHJlZmVyZW5jaW5nIGNvbHMgKi8K IAlPaWQJCQlwZl9lcV9vcHJzW1JJX01BWF9OVU1LRVlTXTsgLyogZXF1YWxpdHkgb3BlcmF0 b3JzIChQSyA9IEZLKSAqLwogCU9pZAkJCXBwX2VxX29wcnNbUklfTUFYX05VTUtFWVNdOyAv KiBlcXVhbGl0eSBvcGVyYXRvcnMgKFBLID0gUEspICovCiAJT2lkCQkJZmZfZXFfb3Byc1tS SV9NQVhfTlVNS0VZU107IC8qIGVxdWFsaXR5IG9wZXJhdG9ycyAoRksgPSBGSykgKi8KKwlP aWQJCQlwZXJpb2RfY29udGFpbmVkX2J5X29wZXI7CS8qIG9wZXJhdG9yIGZvciBQRVJPSUQg U1FMICovCisJT2lkCQkJcGVyaW9kX3JlZmVyZW5jZWRfYWdnX3Byb2M7CS8qIHByb2MgZm9y IFBFUklPRCBTUUwgKi8KIAlkbGlzdF9ub2RlCXZhbGlkX2xpbms7CQkvKiBMaW5rIGluIGxp c3Qgb2YgdmFsaWQgZW50cmllcyAqLwogfSBSSV9Db25zdHJhaW50SW5mbzsKIApAQCAtMjAw LDggKzIwNiw5IEBAIHN0YXRpYyBpbnQJcmlfTnVsbENoZWNrKFR1cGxlRGVzYyB0dXBEZXNj LCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIHN0YXRpYyB2b2lkIHJpX0J1aWxkUXVlcnlLZXko UklfUXVlcnlLZXkgKmtleSwKIAkJCQkJCQkgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJp aW5mbywKIAkJCQkJCQkgaW50MzIgY29uc3RyX3F1ZXJ5bm8pOwotc3RhdGljIGJvb2wgcmlf S2V5c0VxdWFsKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxl VGFibGVTbG90ICpuZXdzbG90LAorc3RhdGljIGJvb2wgcmlfS2V5c1N0YWJsZShSZWxhdGlv biByZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xv dCwKIAkJCQkJCSBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBib29sIHJlbF9p c19wayk7CitzdGF0aWMgYm9vbCByaV9SYW5nZUF0dHJpYnV0ZU5lZWRzQ2hlY2soYm9vbCBy ZWxfaXNfcGssIERhdHVtIG9sZHZhbHVlLCBEYXR1bSBuZXd2YWx1ZSk7CiBzdGF0aWMgYm9v bCByaV9BdHRyaWJ1dGVzRXF1YWwoT2lkIGVxX29wciwgT2lkIHR5cGVpZCwKIAkJCQkJCQkg ICBEYXR1bSBvbGR2YWx1ZSwgRGF0dW0gbmV3dmFsdWUpOwogCkBAIC0yMzEsNiArMjM4LDgg QEAgc3RhdGljIHZvaWQgcmlfUmVwb3J0VmlvbGF0aW9uKGNvbnN0IFJJX0NvbnN0cmFpbnRJ bmZvICpyaWluZm8sCiAJCQkJCQkJICAgUmVsYXRpb24gcGtfcmVsLCBSZWxhdGlvbiBma19y ZWwsCiAJCQkJCQkJICAgVHVwbGVUYWJsZVNsb3QgKnZpb2xhdG9yc2xvdCwgVHVwbGVEZXNj IHR1cGRlc2MsCiAJCQkJCQkJICAgaW50IHF1ZXJ5bm8sIGJvb2wgcGFydGdvbmUpIHBnX2F0 dHJpYnV0ZV9ub3JldHVybigpOworc3RhdGljIHZvaWQgbG9va3VwVFJJT3BlckFuZFByb2Mo Y29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKKwkJCQkJCQkJIGNoYXIgKipvcG5h bWUsIGNoYXIgKiphZ2duYW1lKTsKIAogCiAvKgpAQCAtMzYxLDI2ICszNzAsNTggQEAgUklf RktleV9jaGVjayhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEpCiAKIAkJLyogLS0tLS0tLS0tLQog CQkgKiBUaGUgcXVlcnkgc3RyaW5nIGJ1aWx0IGlzCi0JCSAqCVNFTEVDVCAxIEZST00gW09O TFldIDxwa3RhYmxlPiB4IFdIRVJFIHBrYXR0MSA9ICQxIFtBTkQgLi4uXQotCQkgKgkJICAg Rk9SIEtFWSBTSEFSRSBPRiB4CisJCSAqCVNFTEVDVCAxCisJCSAqCUZST00gW09OTFldIDxw a3RhYmxlPiB4IFdIRVJFIHBrYXR0MSA9ICQxIFtBTkQgLi4uXQorCQkgKglGT1IgS0VZIFNI QVJFIE9GIHgKIAkJICogVGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUg dGhvc2Ugb2YgdGhlCiAJCSAqIGNvcnJlc3BvbmRpbmcgRksgYXR0cmlidXRlcy4KKwkJICoK KwkJICogQnV0IGZvciB0ZW1wb3JhbCBGS3Mgd2UgbmVlZCB0byBtYWtlIHN1cmUKKwkJICog dGhlIEZLJ3MgcmFuZ2UgaXMgY29tcGxldGVseSBjb3ZlcmVkLgorCQkgKiBTbyB3ZSB1c2Ug dGhpcyBxdWVyeSBpbnN0ZWFkOgorCQkgKiAgU0VMRUNUIDEKKwkJICoJRlJPTQkoCisJCSAq CQlTRUxFQ1QgcGtwZXJpb2RhdHQgQVMgcgorCQkgKgkJRlJPTSAgIFtPTkxZXSBwa3RhYmxl IHgKKwkJICoJCVdIRVJFICBwa2F0dDEgPSAkMSBbQU5EIC4uLl0KKwkJICoJCUFORCAgICBw a3BlcmlvZGF0dCAmJiAkbgorCQkgKgkJRk9SIEtFWSBTSEFSRSBPRiB4CisJCSAqCSkgeDEK KwkJICogIEhBVklORyAkbiA8QCByYW5nZV9hZ2coeDEucikKKwkJICogTm90ZSBpZiBGT1Ig S0VZIFNIQVJFIGV2ZXIgYWxsb3dzIEdST1VQIEJZIGFuZCBIQVZJTkcKKwkJICogd2UgY2Fu IG1ha2UgdGhpcyBhIGJpdCBzaW1wbGVyLgogCQkgKiAtLS0tLS0tLS0tCiAJCSAqLwogCQlp bml0U3RyaW5nSW5mbygmcXVlcnlidWYpOwogCQlwa19vbmx5ID0gcGtfcmVsLT5yZF9yZWwt PnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CiAJCQkiIiA6ICJPTkxZ ICI7CiAJCXF1b3RlUmVsYXRpb25OYW1lKHBrcmVsbmFtZSwgcGtfcmVsKTsKLQkJYXBwZW5k U3RyaW5nSW5mbygmcXVlcnlidWYsICJTRUxFQ1QgMSBGUk9NICVzJXMgeCIsCi0JCQkJCQkg cGtfb25seSwgcGtyZWxuYW1lKTsKKwkJaWYgKHJpaW5mby0+dGVtcG9yYWwpCisJCXsKKwkJ CXF1b3RlT25lTmFtZShhdHRuYW1lLAorCQkJCQlSSUF0dE5hbWUocGtfcmVsLCByaWluZm8t PnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJCWFwcGVuZFN0cmluZ0lu Zm8oJnF1ZXJ5YnVmLAorCQkJCQkiU0VMRUNUIDEgRlJPTSAoU0VMRUNUICVzIEFTIHIgRlJP TSAlcyVzIHgiLAorCQkJCQlhdHRuYW1lLCBwa19vbmx5LCBwa3JlbG5hbWUpOworCQl9CisJ CWVsc2UKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJTRUxFQ1QgMSBG Uk9NICVzJXMgeCIsCisJCQkJCQkJIHBrX29ubHksIHBrcmVsbmFtZSk7CisJCX0KIAkJcXVl cnlzZXAgPSAiV0hFUkUiOwogCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7 IGkrKykKIAkJewotCQkJT2lkCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5m by0+cGtfYXR0bnVtc1tpXSk7Ci0JCQlPaWQJCQlma190eXBlID0gUklBdHRUeXBlKGZrX3Jl bCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCU9pZAlwa190eXBlOworCQkJT2lkCWZr X3R5cGU7CiAKKwkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0 dG51bXNbaV0pOwogCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCiAJCQkJCQkgUklBdHROYW1l KHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKSk7CisKKwkJCWZrX3R5cGUgPSBSSUF0 dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCiAJCQlzcHJpbnRmKHBh cmFtbmFtZSwgIiQlZCIsIGkgKyAxKTsKIAkJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYs IHF1ZXJ5c2VwLAogCQkJCQkJCWF0dG5hbWUsIHBrX3R5cGUsCkBAIC0zOTAsNiArNDMxLDE1 IEBAIFJJX0ZLZXlfY2hlY2soVHJpZ2dlckRhdGEgKnRyaWdkYXRhKQogCQkJcXVlcnlvaWRz W2ldID0gZmtfdHlwZTsKIAkJfQogCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZxdWVyeWJ1 ZiwgIiBGT1IgS0VZIFNIQVJFIE9GIHgiKTsKKwkJaWYgKHJpaW5mby0+dGVtcG9yYWwpCisJ CXsKKwkJCWNoYXIgKm9wbmFtZTsKKwkJCWNoYXIgKmFnZ25hbWU7CisJCQlsb29rdXBUUklP cGVyQW5kUHJvYyhyaWluZm8sICZvcG5hbWUsICZhZ2duYW1lKTsKKwkJCWFwcGVuZFN0cmlu Z0luZm8oJnF1ZXJ5YnVmLCAiKSB4MSBIQVZJTkcgJCVkICVzICVzKHgxLnIpIiwgcmlpbmZv LT5ua2V5cywgb3BuYW1lLCBhZ2duYW1lKTsKKwkJCXBmcmVlKG9wbmFtZSk7CisJCQlwZnJl ZShhZ2duYW1lKTsKKwkJfQogCiAJCS8qIFByZXBhcmUgYW5kIHNhdmUgdGhlIHBsYW4gKi8K IAkJcXBsYW4gPSByaV9QbGFuQ2hlY2socXVlcnlidWYuZGF0YSwgcmlpbmZvLT5ua2V5cywg cXVlcnlvaWRzLApAQCAtNDk3LDIxICs1NDcsNDkgQEAgcmlfQ2hlY2tfUGtfTWF0Y2goUmVs YXRpb24gcGtfcmVsLCBSZWxhdGlvbiBma19yZWwsCiAJCSAqCQkgICBGT1IgS0VZIFNIQVJF IE9GIHgKIAkJICogVGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhv c2Ugb2YgdGhlCiAJCSAqIFBLIGF0dHJpYnV0ZXMgdGhlbXNlbHZlcy4KKwkJICogQnV0IGZv ciB0ZW1wb3JhbCBGS3Mgd2UgbmVlZCB0byBtYWtlIHN1cmUKKwkJICogdGhlIEZLJ3MgcmFu Z2UgaXMgY29tcGxldGVseSBjb3ZlcmVkLgorCQkgKiBTbyB3ZSB1c2UgdGhpcyBxdWVyeSBp bnN0ZWFkOgorCQkgKiAgU0VMRUNUIDEKKwkJICogIEZST00gICAgKAorCQkgKgkgIFNFTEVD VCBwa3BlcmlvZGF0dCBBUyByCisJCSAqCSAgRlJPTSAgIFtPTkxZXSBwa3RhYmxlIHgKKwkJ ICoJICBXSEVSRSAgcGthdHQxID0gJDEgW0FORCAuLi5dCisJCSAqCSAgQU5EICAgIHBrcGVy aW9kYXR0ICYmICRuCisJCSAqCSAgRk9SIEtFWSBTSEFSRSBPRiB4CisJCSAqICApIHgxCisJ CSAqICBIQVZJTkcgJG4gPEAgcmFuZ2VfYWdnKHgxLnIpCisJCSAqIE5vdGUgaWYgRk9SIEtF WSBTSEFSRSBldmVyIGFsbG93cyBHUk9VUCBCWSBhbmQgSEFWSU5HCisJCSAqIHdlIGNhbiBt YWtlIHRoaXMgYSBiaXQgc2ltcGxlci4KIAkJICogLS0tLS0tLS0tLQogCQkgKi8KIAkJaW5p dFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKIAkJcGtfb25seSA9IHBrX3JlbC0+cmRfcmVsLT5y ZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPwogCQkJIiIgOiAiT05MWSAi OwogCQlxdW90ZVJlbGF0aW9uTmFtZShwa3JlbG5hbWUsIHBrX3JlbCk7Ci0JCWFwcGVuZFN0 cmluZ0luZm8oJnF1ZXJ5YnVmLCAiU0VMRUNUIDEgRlJPTSAlcyVzIHgiLAotCQkJCQkJIHBr X29ubHksIHBrcmVsbmFtZSk7CisJCWlmIChyaWluZm8tPnRlbXBvcmFsKQorCQl7CisJCQlx dW90ZU9uZU5hbWUoYXR0bmFtZSwgUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRu dW1zW3JpaW5mby0+bmtleXMgLSAxXSkpOworCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVy eWJ1ZiwKKwkJCQkJIlNFTEVDVCAxIEZST00gKFNFTEVDVCAlcyBBUyByIEZST00gJXMlcyB4 IiwKKwkJCQkJYXR0bmFtZSwgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJfQorCQllbHNlCisJ CXsKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiU0VMRUNUIDEgRlJPTSAlcyVz IHgiLAorCQkJCQlwa19vbmx5LCBwa3JlbG5hbWUpOworCQl9CisKIAkJcXVlcnlzZXAgPSAi V0hFUkUiOwogCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKIAkJ ewotCQkJT2lkCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0 bnVtc1tpXSk7CisJCQlPaWQJCXBrX3R5cGU7CiAKKwkJCXBrX3R5cGUgPSBSSUF0dFR5cGUo cGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOwogCQkJcXVvdGVPbmVOYW1lKGF0dG5h bWUsCiAJCQkJCQkgUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKSk7 CisKIAkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaSArIDEpOwogCQkJcmlfR2VuZXJh dGVRdWFsKCZxdWVyeWJ1ZiwgcXVlcnlzZXAsCiAJCQkJCQkJYXR0bmFtZSwgcGtfdHlwZSwK QEAgLTUyMSw2ICs1OTksMTUgQEAgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRpb24gcGtfcmVs LCBSZWxhdGlvbiBma19yZWwsCiAJCQlxdWVyeW9pZHNbaV0gPSBwa190eXBlOwogCQl9CiAJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnF1ZXJ5YnVmLCAiIEZPUiBLRVkgU0hBUkUgT0Yg eCIpOworCQlpZiAocmlpbmZvLT50ZW1wb3JhbCkKKwkJeworCQkJY2hhciAqb3BuYW1lOwor CQkJY2hhciAqYWdnbmFtZTsKKwkJCWxvb2t1cFRSSU9wZXJBbmRQcm9jKHJpaW5mbywgJm9w bmFtZSwgJmFnZ25hbWUpOworCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICIpIHgx IEhBVklORyAkJWQgJXMgJXMoeDEucikiLCByaWluZm8tPm5rZXlzLCBvcG5hbWUsIGFnZ25h bWUpOworCQkJcGZyZWUob3BuYW1lKTsKKwkJCXBmcmVlKGFnZ25hbWUpOworCQl9CiAKIAkJ LyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAqLwogCQlxcGxhbiA9IHJpX1BsYW5DaGVj ayhxdWVyeWJ1Zi5kYXRhLCByaWluZm8tPm5rZXlzLCBxdWVyeW9pZHMsCkBAIC02OTUsMTAg Kzc4MiwxNiBAQCByaV9yZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNf bm9fYWN0aW9uKQogCQlxdWVyeXNlcCA9ICJXSEVSRSI7CiAJCWZvciAoaW50IGkgPSAwOyBp IDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCQl7Ci0JCQlPaWQJCQlwa190eXBlID0gUklBdHRU eXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJCU9pZAkJCWZrX3R5cGUg PSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwotCQkJT2lkCQkJ cGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ld KTsKLQkJCU9pZAkJCWZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ ZmtfYXR0bnVtc1tpXSk7CisJCQlPaWQJCXBrX3R5cGU7CisJCQlPaWQJCWZrX3R5cGU7CisJ CQlPaWQJCXBrX2NvbGw7CisJCQlPaWQJCWZrX2NvbGw7CisKKwkJCXBrX3R5cGUgPSBSSUF0 dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJcGtfY29sbCA9IFJJ QXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKworCQkJZmtf dHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCQlm a19jb2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0p OwogCiAJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKIAkJCQkJCSBSSUF0dE5hbWUoZmtfcmVs LCByaWluZm8tPmZrX2F0dG51bXNbaV0pKTsKQEAgLTEyMTMsNiArMTMwNiwxMjYgQEAgcmlf c2V0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRna2lu ZCkKIAl9CiB9CiAKKy8qIC0tLS0tLS0tLS0KKyAqIFRSSV9GS2V5X2NoZWNrX2lucyAtCisg KgorICoJQ2hlY2sgdGVtcG9yYWwgZm9yZWlnbiBrZXkgZXhpc3RlbmNlIGF0IGluc2VydCBl dmVudCBvbiBGSyB0YWJsZS4KKyAqIC0tLS0tLS0tLS0KKyAqLworRGF0dW0KK1RSSV9GS2V5 X2NoZWNrX2lucyhQR19GVU5DVElPTl9BUkdTKQoreworCS8qCisJICogQ2hlY2sgdGhhdCB0 aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVu dC4KKwkgKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9jaGVja19pbnMi LCBSSV9UUklHVFlQRV9JTlNFUlQpOworCisJLyoKKwkgKiBTaGFyZSBjb2RlIHdpdGggVVBE QVRFIGNhc2UuCisJICovCisJcmV0dXJuIFJJX0ZLZXlfY2hlY2soKFRyaWdnZXJEYXRhICop IGZjaW5mby0+Y29udGV4dCk7Cit9CisKKworLyogLS0tLS0tLS0tLQorICogVFJJX0ZLZXlf Y2hlY2tfdXBkIC0KKyAqCisgKglDaGVjayB0ZW1wb3JhbCBmb3JlaWduIGtleSBleGlzdGVu Y2UgYXQgdXBkYXRlIGV2ZW50IG9uIEZLIHRhYmxlLgorICogLS0tLS0tLS0tLQorICovCitE YXR1bQorVFJJX0ZLZXlfY2hlY2tfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyoKKwkg KiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0 IHRpbWUgYW5kIGV2ZW50LgorCSAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJSSV9G S2V5X2NoZWNrX3VwZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwkvKgorCSAqIFNoYXJl IGNvZGUgd2l0aCBJTlNFUlQgY2FzZS4KKwkgKi8KKwlyZXR1cm4gUklfRktleV9jaGVjaygo VHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0KTsKK30KKworCisvKiAtLS0tLS0tLS0t CisgKiBUUklfRktleV9ub2FjdGlvbl9kZWwgLQorICoKKyAqCUdpdmUgYW4gZXJyb3IgYW5k IHJvbGwgYmFjayB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBpZiB0aGUKKyAqCWRlbGV0ZSBo YXMgcmVzdWx0ZWQgaW4gYSB2aW9sYXRpb24gb2YgdGhlIGdpdmVuIHRlbXBvcmFsCisgKgly ZWZlcmVudGlhbCBpbnRlZ3JpdHkgY29uc3RyYWludC4KKyAqIC0tLS0tLS0tLS0KKyAqLwor RGF0dW0KK1RSSV9GS2V5X25vYWN0aW9uX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8q CisJICogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSBy aWdodCB0aW1lIGFuZCBldmVudC4KKwkgKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAi VFJJX0ZLZXlfbm9hY3Rpb25fZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qCisJ ICogU2hhcmUgY29kZSB3aXRoIFJFU1RSSUNUL1VQREFURSBjYXNlcy4KKwkgKi8KKwlyZXR1 cm4gcmlfcmVzdHJpY3QoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgdHJ1ZSk7 Cit9CisKKy8qCisgKiBUUklfRktleV9yZXN0cmljdF9kZWwgLQorICoKKyAqIFJlc3RyaWN0 IGRlbGV0ZSBmcm9tIFBLIHRhYmxlIHRvIHJvd3MgdW5yZWZlcmVuY2VkIGJ5IGZvcmVpZ24g a2V5LgorICoKKyAqIFRoZSBTUUwgc3RhbmRhcmQgaW50ZW5kcyB0aGF0IHRoaXMgcmVmZXJl bnRpYWwgYWN0aW9uIG9jY3VyIGV4YWN0bHkgd2hlbgorICogdGhlIGRlbGV0ZSBpcyBwZXJm b3JtZWQsIHJhdGhlciB0aGFuIGFmdGVyLiAgVGhpcyBhcHBlYXJzIHRvIGJlCisgKiB0aGUg b25seSBkaWZmZXJlbmNlIGJldHdlZW4gIk5PIEFDVElPTiIgYW5kICJSRVNUUklDVCIuICBJ biBQb3N0Z3JlcworICogd2Ugc3RpbGwgaW1wbGVtZW50IHRoaXMgYXMgYW4gQUZURVIgdHJp Z2dlciwgYnV0IGl0J3Mgbm9uLWRlZmVycmFibGUuCisgKi8KK0RhdHVtCitUUklfRktleV9y ZXN0cmljdF9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKiBDaGVjayB0aGF0IHRoaXMg aXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LiAq LworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9yZXN0cmljdF9kZWwiLCBS SV9UUklHVFlQRV9ERUxFVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIE5PIEFDVElPTi9V UERBVEUgY2FzZXMuICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBm Y2luZm8tPmNvbnRleHQsIGZhbHNlKTsKK30KKworLyoKKyAqIFRSSV9GS2V5X25vYWN0aW9u X3VwZCAtCisgKgorICogR2l2ZSBhbiBlcnJvciBhbmQgcm9sbCBiYWNrIHRoZSBjdXJyZW50 IHRyYW5zYWN0aW9uIGlmIHRoZQorICogdXBkYXRlIGhhcyByZXN1bHRlZCBpbiBhIHZpb2xh dGlvbiBvZiB0aGUgZ2l2ZW4gcmVmZXJlbnRpYWwKKyAqIGludGVncml0eSBjb25zdHJhaW50 LgorICovCitEYXR1bQorVFJJX0ZLZXlfbm9hY3Rpb25fdXBkKFBHX0ZVTkNUSU9OX0FSR1Mp Cit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRo ZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAi VFJJX0ZLZXlfbm9hY3Rpb25fdXBkIiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qIFNo YXJlIGNvZGUgd2l0aCBSRVNUUklDVC9ERUxFVEUgY2FzZXMuICovCisJcmV0dXJuIHJpX3Jl c3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIHRydWUpOworfQorCisv KgorICogVFJJX0ZLZXlfcmVzdHJpY3RfdXBkIC0KKyAqCisgKiBSZXN0cmljdCB1cGRhdGUg b2YgUEsgdG8gcm93cyB1bnJlZmVyZW5jZWQgYnkgZm9yZWlnbiBrZXkuCisgKgorICogVGhl IFNRTCBzdGFuZGFyZCBpbnRlbmRzIHRoYXQgdGhpcyByZWZlcmVudGlhbCBhY3Rpb24gb2Nj dXIgZXhhY3RseSB3aGVuCisgKiB0aGUgdXBkYXRlIGlzIHBlcmZvcm1lZCwgcmF0aGVyIHRo YW4gYWZ0ZXIuICBUaGlzIGFwcGVhcnMgdG8gYmUKKyAqIHRoZSBvbmx5IGRpZmZlcmVuY2Ug YmV0d2VlbiAiTk8gQUNUSU9OIiBhbmQgIlJFU1RSSUNUIi4gIEluIFBvc3RncmVzCisgKiB3 ZSBzdGlsbCBpbXBsZW1lbnQgdGhpcyBhcyBhbiBBRlRFUiB0cmlnZ2VyLCBidXQgaXQncyBu b24tZGVmZXJyYWJsZS4KKyAqLworRGF0dW0KK1RSSV9GS2V5X3Jlc3RyaWN0X3VwZChQR19G VU5DVElPTl9BUkdTKQoreworCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdn ZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmln Z2VyKGZjaW5mbywgIlRSSV9GS2V5X3Jlc3RyaWN0X3VwZCIsIFJJX1RSSUdUWVBFX1VQREFU RSk7CisKKwkvKiBTaGFyZSBjb2RlIHdpdGggTk8gQUNUSU9OL0RFTEVURSBjYXNlcy4gKi8K KwlyZXR1cm4gcmlfcmVzdHJpY3QoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwg ZmFsc2UpOworfQogCiAvKgogICogUklfRktleV9wa191cGRfY2hlY2tfcmVxdWlyZWQgLQpA QCAtMTI0MSw3ICsxNDU0LDcgQEAgUklfRktleV9wa191cGRfY2hlY2tfcmVxdWlyZWQoVHJp Z2dlciAqdHJpZ2dlciwgUmVsYXRpb24gcGtfcmVsLAogCQlyZXR1cm4gZmFsc2U7CiAKIAkv KiBJZiBhbGwgb2xkIGFuZCBuZXcga2V5IHZhbHVlcyBhcmUgZXF1YWwsIG5vIGNoZWNrIGlz IG5lZWRlZCAqLwotCWlmIChuZXdzbG90ICYmIHJpX0tleXNFcXVhbChwa19yZWwsIG9sZHNs b3QsIG5ld3Nsb3QsIHJpaW5mbywgdHJ1ZSkpCisJaWYgKG5ld3Nsb3QgJiYgcmlfS2V5c1N0 YWJsZShwa19yZWwsIG9sZHNsb3QsIG5ld3Nsb3QsIHJpaW5mbywgdHJ1ZSkpCiAJCXJldHVy biBmYWxzZTsKIAogCS8qIEVsc2Ugd2UgbmVlZCB0byBmaXJlIHRoZSB0cmlnZ2VyLiAqLwpA QCAtMTM0MCw3ICsxNTUzLDcgQEAgUklfRktleV9ma191cGRfY2hlY2tfcmVxdWlyZWQoVHJp Z2dlciAqdHJpZ2dlciwgUmVsYXRpb24gZmtfcmVsLAogCQlyZXR1cm4gdHJ1ZTsKIAogCS8q IElmIGFsbCBvbGQgYW5kIG5ldyBrZXkgdmFsdWVzIGFyZSBlcXVhbCwgbm8gY2hlY2sgaXMg bmVlZGVkICovCi0JaWYgKHJpX0tleXNFcXVhbChma19yZWwsIG9sZHNsb3QsIG5ld3Nsb3Qs IHJpaW5mbywgZmFsc2UpKQorCWlmIChyaV9LZXlzU3RhYmxlKGZrX3JlbCwgb2xkc2xvdCwg bmV3c2xvdCwgcmlpbmZvLCBmYWxzZSkpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qIEVsc2Ug d2UgbmVlZCB0byBmaXJlIHRoZSB0cmlnZ2VyLiAqLwpAQCAtMTQ4OCwxNSArMTcwMSwxNyBA QCBSSV9Jbml0aWFsX0NoZWNrKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIGZrX3JlbCwg UmVsYXRpb24gcGtfcmVsKQogCXNlcCA9ICIoIjsKIAlmb3IgKGludCBpID0gMDsgaSA8IHJp aW5mby0+bmtleXM7IGkrKykKIAl7Ci0JCU9pZAkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtf cmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOwotCQlPaWQJCQlma190eXBlID0gUklBdHRU eXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKLQkJT2lkCQkJcGtfY29sbCA9 IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJT2lk CQkJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1z W2ldKTsKKwkJT2lkCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0 dG51bXNbaV0pOworCQlPaWQJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ ZmtfYXR0bnVtc1tpXSk7CisJCU9pZAlwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVs LCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQlPaWQJZmtfY29sbCA9IFJJQXR0Q29sbGF0 aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKIAogCQlxdW90ZU9uZU5hbWUo cGthdHRuYW1lICsgMywKIAkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0 bnVtc1tpXSkpOworCiAJCXF1b3RlT25lTmFtZShma2F0dG5hbWUgKyAzLAogCQkJCQkgUklB dHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CisKIAkJcmlfR2VuZXJh dGVRdWFsKCZxdWVyeWJ1Ziwgc2VwLAogCQkJCQkJcGthdHRuYW1lLCBwa190eXBlLAogCQkJ CQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLApAQCAtMjEzNyw2ICsyMzUyLDcgQEAgcmlfTG9h ZENvbnN0cmFpbnRJbmZvKE9pZCBjb25zdHJhaW50T2lkKQogCXJpaW5mbyA9IChSSV9Db25z dHJhaW50SW5mbyAqKSBoYXNoX3NlYXJjaChyaV9jb25zdHJhaW50X2NhY2hlLAogCQkJCQkJ CQkJCQkgICAmY29uc3RyYWludE9pZCwKIAkJCQkJCQkJCQkJICAgSEFTSF9FTlRFUiwgJmZv dW5kKTsKKwogCWlmICghZm91bmQpCiAJCXJpaW5mby0+dmFsaWQgPSBmYWxzZTsKIAllbHNl IGlmIChyaWluZm8tPnZhbGlkKQpAQCAtMjE3MSw2ICsyMzg3LDcgQEAgcmlfTG9hZENvbnN0 cmFpbnRJbmZvKE9pZCBjb25zdHJhaW50T2lkKQogCXJpaW5mby0+Y29uZnVwZHR5cGUgPSBj b25Gb3JtLT5jb25mdXBkdHlwZTsKIAlyaWluZm8tPmNvbmZkZWx0eXBlID0gY29uRm9ybS0+ Y29uZmRlbHR5cGU7CiAJcmlpbmZvLT5jb25mbWF0Y2h0eXBlID0gY29uRm9ybS0+Y29uZm1h dGNodHlwZTsKKwlyaWluZm8tPnRlbXBvcmFsID0gY29uRm9ybS0+Y29ud2l0aG91dG92ZXJs YXBzOwogCiAJRGVjb25zdHJ1Y3RGa0NvbnN0cmFpbnRSb3codHVwLAogCQkJCQkJCSAgICZy aWluZm8tPm5rZXlzLApAQCAtMjE4Miw2ICsyMzk5LDE4IEBAIHJpX0xvYWRDb25zdHJhaW50 SW5mbyhPaWQgY29uc3RyYWludE9pZCkKIAkJCQkJCQkgICAmcmlpbmZvLT5uZGVsc2V0Y29s cywKIAkJCQkJCQkgICByaWluZm8tPmNvbmZkZWxzZXRjb2xzKTsKIAorCS8qCisJICogRm9y IHRlbXBvcmFsIEZLcywgZ2V0IHRoZSBvcGVyYXRvciBhbmQgYWdncmVnYXRlIGZ1bmN0aW9u IHdlIG5lZWQuCisJICogV2UgYXNrIHRoZSBvcGNsYXNzIG9mIHRoZSBQSyBlbGVtZW50IGZv ciB0aGlzLgorCSAqIFRoaXMgYWxsIGdldHMgY2FjaGVkIChhcyBkb2VzIHRoZSBnZW5lcmF0 ZWQgcGxhbiksCisJICogc28gdGhlcmUncyBubyBwZXJmb3JtYW5jZSBpc3N1ZS4KKwkgKi8K KwlpZiAocmlpbmZvLT50ZW1wb3JhbCkKKwl7CisJCU9pZAlvcGNsYXNzID0gZ2V0X2luZGV4 X2NvbHVtbl9vcGNsYXNzKGNvbkZvcm0tPmNvbmluZGlkLCByaWluZm8tPm5rZXlzKTsKKwkJ RmluZEZLUGVyaW9kT3BlcnNBbmRQcm9jcyhvcGNsYXNzLCAmcmlpbmZvLT5wZXJpb2RfY29u dGFpbmVkX2J5X29wZXIsICZyaWluZm8tPnBlcmlvZF9yZWZlcmVuY2VkX2FnZ19wcm9jKTsK Kwl9CisKIAlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKIAogCS8qCkBAIC0yNzkxLDkgKzMwMjAs MTIgQEAgcmlfSGFzaFByZXBhcmVkUGxhbihSSV9RdWVyeUtleSAqa2V5LCBTUElQbGFuUHRy IHBsYW4pCiAKIAogLyoKLSAqIHJpX0tleXNFcXVhbCAtCisgKiByaV9LZXlzU3RhYmxlIC0K ICAqCi0gKiBDaGVjayBpZiBhbGwga2V5IHZhbHVlcyBpbiBPTEQgYW5kIE5FVyBhcmUgZXF1 YWwuCisgKiBDaGVjayBpZiBhbGwga2V5IHZhbHVlcyBpbiBPTEQgYW5kIE5FVyBhcmUgImVx dWl2YWxlbnQiOgorICogRm9yIG5vcm1hbCBGS3Mgd2UgY2hlY2sgZm9yIGVxdWFsaXR5Lgor ICogRm9yIHRlbXBvcmFsIEZLcyB3ZSBjaGVjayB0aGF0IHRoZSBQSyBzaWRlIGlzIGEgc3Vw ZXJzZXQgb2YgaXRzIG9sZCB2YWx1ZSwKKyAqIG9yIHRoZSBGSyBzaWRlIGlzIGEgc3Vic2V0 LgogICoKICAqIE5vdGU6IGF0IHNvbWUgcG9pbnQgd2UgbWlnaHQgd2lzaCB0byByZWRlZmlu ZSB0aGlzIGFzIGNoZWNraW5nIGZvcgogICogIklTIE5PVCBESVNUSU5DVCIgcmF0aGVyIHRo YW4gIj0iLCB0aGF0IGlzLCBhbGxvdyB0d28gbnVsbHMgdG8gYmUKQEAgLTI4MDEsNyArMzAz Myw3IEBAIHJpX0hhc2hQcmVwYXJlZFBsYW4oUklfUXVlcnlLZXkgKmtleSwgU1BJUGxhblB0 ciBwbGFuKQogICogcHJldmlvdXNseSBmb3VuZCBhdCBsZWFzdCBvbmUgb2YgdGhlIHJvd3Mg dG8gY29udGFpbiBubyBudWxscy4KICAqLwogc3RhdGljIGJvb2wKLXJpX0tleXNFcXVhbChS ZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAq bmV3c2xvdCwKK3JpX0tleXNTdGFibGUoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAq b2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCiAJCQkgY29uc3QgUklfQ29uc3Ry YWludEluZm8gKnJpaW5mbywgYm9vbCByZWxfaXNfcGspCiB7CiAJY29uc3QgaW50MTYgKmF0 dG51bXM7CkBAIC0yODM0LDM1ICszMDY2LDg2IEBAIHJpX0tleXNFcXVhbChSZWxhdGlvbiBy ZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwK IAogCQlpZiAocmVsX2lzX3BrKQogCQl7Ci0JCQkvKgotCQkJICogSWYgd2UgYXJlIGxvb2tp bmcgYXQgdGhlIFBLIHRhYmxlLCB0aGVuIGRvIGEgYnl0ZXdpc2UKLQkJCSAqIGNvbXBhcmlz b24uICBXZSBtdXN0IHByb3BhZ2F0ZSBQSyBjaGFuZ2VzIGlmIHRoZSB2YWx1ZSBpcwotCQkJ ICogY2hhbmdlZCB0byBvbmUgdGhhdCAibG9va3MiIGRpZmZlcmVudCBidXQgd291bGQgY29t cGFyZSBhcwotCQkJICogZXF1YWwgdXNpbmcgdGhlIGVxdWFsaXR5IG9wZXJhdG9yLiAgVGhp cyBvbmx5IG1ha2VzIGEKLQkJCSAqIGRpZmZlcmVuY2UgZm9yIE9OIFVQREFURSBDQVNDQURF LCBidXQgZm9yIGNvbnNpc3RlbmN5IHdlIHRyZWF0Ci0JCQkgKiBhbGwgY2hhbmdlcyB0byB0 aGUgUEsgdGhlIHNhbWUuCi0JCQkgKi8KLQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1 cGxlRGVzY0F0dHIob2xkc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvciwgYXR0bnVtc1tpXSAt IDEpOworCQkJaWYgKHJpaW5mby0+dGVtcG9yYWwgJiYgaSA9PSByaWluZm8tPm5rZXlzIC0g MSkKKwkJCXsKKwkJCQlpZiAocmlfUmFuZ2VBdHRyaWJ1dGVOZWVkc0NoZWNrKHRydWUsIG9s ZHZhbHVlLCBuZXd2YWx1ZSkpCisJCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJCWVsc2UK KwkJCXsKKwkJCQkvKgorCQkJCSAqIElmIHdlIGFyZSBsb29raW5nIGF0IHRoZSBQSyB0YWJs ZSwgdGhlbiBkbyBhIGJ5dGV3aXNlCisJCQkJICogY29tcGFyaXNvbi4gIFdlIG11c3QgcHJv cGFnYXRlIFBLIGNoYW5nZXMgaWYgdGhlIHZhbHVlIGlzCisJCQkJICogY2hhbmdlZCB0byBv bmUgdGhhdCAibG9va3MiIGRpZmZlcmVudCBidXQgd291bGQgY29tcGFyZSBhcworCQkJCSAq IGVxdWFsIHVzaW5nIHRoZSBlcXVhbGl0eSBvcGVyYXRvci4gIFRoaXMgb25seSBtYWtlcyBh CisJCQkJICogZGlmZmVyZW5jZSBmb3IgT04gVVBEQVRFIENBU0NBREUsIGJ1dCBmb3IgY29u c2lzdGVuY3kgd2UgdHJlYXQKKwkJCQkgKiBhbGwgY2hhbmdlcyB0byB0aGUgUEsgdGhlIHNh bWUuCisJCQkJICovCisJCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0 cihvbGRzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yLCBhdHRudW1zW2ldIC0gMSk7CiAKLQkJ CWlmICghZGF0dW1faW1hZ2VfZXEob2xkdmFsdWUsIG5ld3ZhbHVlLCBhdHQtPmF0dGJ5dmFs LCBhdHQtPmF0dGxlbikpCi0JCQkJcmV0dXJuIGZhbHNlOworCQkJCWlmICghZGF0dW1faW1h Z2VfZXEob2xkdmFsdWUsIG5ld3ZhbHVlLCBhdHQtPmF0dGJ5dmFsLCBhdHQtPmF0dGxlbikp CisJCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KIAkJfQogCQllbHNlCiAJCXsKLQkJCS8qCi0J CQkgKiBGb3IgdGhlIEZLIHRhYmxlLCBjb21wYXJlIHdpdGggdGhlIGFwcHJvcHJpYXRlIGVx dWFsaXR5Ci0JCQkgKiBvcGVyYXRvci4gIENoYW5nZXMgdGhhdCBjb21wYXJlIGVxdWFsIHdp bGwgc3RpbGwgc2F0aXNmeSB0aGUKLQkJCSAqIGNvbnN0cmFpbnQgYWZ0ZXIgdGhlIHVwZGF0 ZS4KLQkJCSAqLwotCQkJaWYgKCFyaV9BdHRyaWJ1dGVzRXF1YWwocmlpbmZvLT5mZl9lcV9v cHJzW2ldLCBSSUF0dFR5cGUocmVsLCBhdHRudW1zW2ldKSwKLQkJCQkJCQkJCW9sZHZhbHVl LCBuZXd2YWx1ZSkpCi0JCQkJcmV0dXJuIGZhbHNlOworCQkJaWYgKHJpaW5mby0+dGVtcG9y YWwgJiYgaSA9PSByaWluZm8tPm5rZXlzIC0gMSkKKwkJCXsKKwkJCQlpZiAocmlfUmFuZ2VB dHRyaWJ1dGVOZWVkc0NoZWNrKGZhbHNlLCBvbGR2YWx1ZSwgbmV3dmFsdWUpKQorCQkJCQly ZXR1cm4gZmFsc2U7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkgKiBGb3Ig dGhlIEZLIHRhYmxlLCBjb21wYXJlIHdpdGggdGhlIGFwcHJvcHJpYXRlIGVxdWFsaXR5CisJ CQkJICogb3BlcmF0b3IuICBDaGFuZ2VzIHRoYXQgY29tcGFyZSBlcXVhbCB3aWxsIHN0aWxs IHNhdGlzZnkgdGhlCisJCQkJICogY29uc3RyYWludCBhZnRlciB0aGUgdXBkYXRlLgorCQkJ CSAqLworCQkJCWlmICghcmlfQXR0cmlidXRlc0VxdWFsKHJpaW5mby0+ZmZfZXFfb3Byc1tp XSwgUklBdHRUeXBlKHJlbCwgYXR0bnVtc1tpXSksCisJCQkJCQkJCQkJb2xkdmFsdWUsIG5l d3ZhbHVlKSkKKwkJCQkJcmV0dXJuIGZhbHNlOworCQkJfQogCQl9CiAJfQogCiAJcmV0dXJu IHRydWU7CiB9CiAKKy8qCisgKiByaV9SYW5nZUF0dHJpYnV0ZU5lZWRzQ2hlY2sgLQorICoK KyAqIENvbXBhcmUgb2xkIGFuZCBuZXcgdmFsdWVzLCBhbmQgcmV0dXJuIHRydWUgaWYgd2Ug bmVlZCB0byBjaGVjayB0aGUgRksuCisgKgorICogTkI6IHdlIGhhdmUgYWxyZWFkeSBjaGVj a2VkIHRoYXQgbmVpdGhlciB2YWx1ZSBpcyBudWxsLgorICovCitzdGF0aWMgYm9vbAorcmlf UmFuZ2VBdHRyaWJ1dGVOZWVkc0NoZWNrKGJvb2wgcmVsX2lzX3BrLCBEYXR1bSBvbGR2YWx1 ZSwgRGF0dW0gbmV3dmFsdWUpCit7CisJUmFuZ2VUeXBlICpvbGRyYW5nZSwgKm5ld3Jhbmdl OworCU9pZCBvbGRybmd0eXBlLCBuZXdybmd0eXBlOworCVR5cGVDYWNoZUVudHJ5ICp0eXBj YWNoZTsKKworCW9sZHJhbmdlID0gRGF0dW1HZXRSYW5nZVR5cGVQKG9sZHZhbHVlKTsKKwlu ZXdyYW5nZSA9IERhdHVtR2V0UmFuZ2VUeXBlUChuZXd2YWx1ZSk7CisJb2xkcm5ndHlwZSA9 IFJhbmdlVHlwZUdldE9pZChvbGRyYW5nZSk7CisJbmV3cm5ndHlwZSA9IFJhbmdlVHlwZUdl dE9pZChuZXdyYW5nZSk7CisKKwlpZiAob2xkcm5ndHlwZSAhPSBuZXdybmd0eXBlKQorCQll bG9nKEVSUk9SLCAicmFuZ2UgdHlwZXMgYXJlIGluY29uc2lzdGVudCIpOworCisJdHlwY2Fj aGUgPSBsb29rdXBfdHlwZV9jYWNoZShvbGRybmd0eXBlLCBUWVBFQ0FDSEVfUkFOR0VfSU5G Tyk7CisJaWYgKHR5cGNhY2hlLT5ybmdlbGVtdHlwZSA9PSBOVUxMKQorCQllbG9nKEVSUk9S LCAidHlwZSAldSBpcyBub3QgYSByYW5nZSB0eXBlIiwgb2xkcm5ndHlwZSk7CisKKwlpZiAo cmVsX2lzX3BrKQorCQkvKiBJZiB0aGUgUEsncyByYW5nZSBzaHJ1bmssIGEgY29uZmxpY3Qg aXMgcG9zc2libGUuICovCisJCXJldHVybiAhcmFuZ2VfZXFfaW50ZXJuYWwodHlwY2FjaGUs IG9sZHJhbmdlLCBuZXdyYW5nZSkgJiYKKwkJCSFyYW5nZV9jb250YWluc19pbnRlcm5hbCh0 eXBjYWNoZSwgbmV3cmFuZ2UsIG9sZHJhbmdlKTsKKwllbHNlCisJCS8qIElmIHRoZSBGSydz IHJhbmdlIGdyZXcsIGEgY29uZmxpY3QgaXMgcG9zc2libGUuICovCisJCXJldHVybiAhcmFu Z2VfZXFfaW50ZXJuYWwodHlwY2FjaGUsIG9sZHJhbmdlLCBuZXdyYW5nZSkgJiYKKwkJCXJh bmdlX2NvbnRhaW5zX2ludGVybmFsKHR5cGNhY2hlLCBuZXdyYW5nZSwgb2xkcmFuZ2UpOwor fQogCiAvKgogICogcmlfQXR0cmlidXRlc0VxdWFsIC0KQEAgLTMwMjEsMTIgKzMzMDQsNDkg QEAgUklfRktleV90cmlnZ2VyX3R5cGUoT2lkIHRnZm9pZCkKIAkJY2FzZSBGX1JJX0ZLRVlf U0VUREVGQVVMVF9VUEQ6CiAJCWNhc2UgRl9SSV9GS0VZX05PQUNUSU9OX0RFTDoKIAkJY2Fz ZSBGX1JJX0ZLRVlfTk9BQ1RJT05fVVBEOgorCQljYXNlIEZfVFJJX0ZLRVlfUkVTVFJJQ1Rf REVMOgorCQljYXNlIEZfVFJJX0ZLRVlfUkVTVFJJQ1RfVVBEOgorCQljYXNlIEZfVFJJX0ZL RVlfTk9BQ1RJT05fREVMOgorCQljYXNlIEZfVFJJX0ZLRVlfTk9BQ1RJT05fVVBEOgogCQkJ cmV0dXJuIFJJX1RSSUdHRVJfUEs7CiAKIAkJY2FzZSBGX1JJX0ZLRVlfQ0hFQ0tfSU5TOgog CQljYXNlIEZfUklfRktFWV9DSEVDS19VUEQ6CisJCWNhc2UgRl9UUklfRktFWV9DSEVDS19J TlM6CisJCWNhc2UgRl9UUklfRktFWV9DSEVDS19VUEQ6CiAJCQlyZXR1cm4gUklfVFJJR0dF Ul9GSzsKIAl9CiAKIAlyZXR1cm4gUklfVFJJR0dFUl9OT05FOwogfQorCisvKgorICogbG9v a3VwVFJJT3BlckFuZFByb2MgLQorICoKKyAqIEdldHMgdGhlIG5hbWVzIG9mIHRoZSBvcGVy YXRvciBhbmQgYWdncmVnYXRlIGZ1bmN0aW9uCisgKiB1c2VkIHRvIGJ1aWxkIHRoZSBTUUwg Zm9yIFRSSSBjb25zdHJhaW50cy4KKyAqIFJhaXNlcyBhbiBlcnJvciBpZiBlaXRoZXIgaXMg bm90IGZvdW5kLgorICovCitzdGF0aWMgdm9pZAorbG9va3VwVFJJT3BlckFuZFByb2MoY29u c3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywgY2hhciAqKm9wbmFtZSwgY2hhciAqKmFn Z25hbWUpCit7CisJT2lkCW9pZDsKKworCW9pZCA9IHJpaW5mby0+cGVyaW9kX2NvbnRhaW5l ZF9ieV9vcGVyOworCWlmICghT2lkSXNWYWxpZChvaWQpKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1zZygi bm8gQ29udGFpbmVkQnkgb3BlcmF0b3IgZm9yIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgXCIl c1wiIiwKKwkJCQkJCU5hbWVTdHIocmlpbmZvLT5jb25uYW1lKSksCisJCQkJIGVycmhpbnQo IllvdSBtdXN0IHVzZSBhbiBvcGVyYXRvciBjbGFzcyB3aXRoIGEgbWF0Y2hpbmcgQ29udGFp bmVkQnkgb3BlcmF0b3IuIikpKTsKKwkqb3BuYW1lID0gZ2V0X29wbmFtZShvaWQpOworCisJ b2lkID0gcmlpbmZvLT5wZXJpb2RfcmVmZXJlbmNlZF9hZ2dfcHJvYzsKKwlpZiAoIU9pZElz VmFsaWQob2lkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VO REVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coIm5vIHJlZmVyZW5jZWRhZ2cgc3VwcG9y dCBmdW5jdGlvbiBmb3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCBcIiVzXCIiLAorCQkJCQkJ TmFtZVN0cihyaWluZm8tPmNvbm5hbWUpKSwKKwkJCQkgZXJyaGludCgiWW91IG11c3QgdXNl IGFuIG9wZXJhdG9yIGNsYXNzIHdpdGggYSByZWZlcmVuY2VkYWdnIHN1cHBvcnQgZnVuY3Rp b24uIikpKTsKKwkqYWdnbmFtZSA9IGdldF9mdW5jX25hbWVfYW5kX25hbWVzcGFjZShvaWQp OworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IGI2MjVmNDcxYTg0Li5l ODk2YmQyYmVjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMzM5LDcg KzMzOSw3IEBAIHN0YXRpYyBjaGFyICpwZ19nZXRfdmlld2RlZl93b3JrZXIoT2lkIHZpZXdv aWQsCiAJCQkJCQkJCSAgIGludCBwcmV0dHlGbGFncywgaW50IHdyYXBDb2x1bW4pOwogc3Rh dGljIGNoYXIgKnBnX2dldF90cmlnZ2VyZGVmX3dvcmtlcihPaWQgdHJpZ2lkLCBib29sIHBy ZXR0eSk7CiBzdGF0aWMgaW50CWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0g Y29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsCi0JCQkJCQkJCQkJIFN0cmluZ0luZm8g YnVmKTsKKwkJCQkJCQkJCQkgYm9vbCB3aXRoUGVyaW9kLCBTdHJpbmdJbmZvIGJ1Zik7CiBz dGF0aWMgY2hhciAqcGdfZ2V0X3J1bGVkZWZfd29ya2VyKE9pZCBydWxlb2lkLCBpbnQgcHJl dHR5RmxhZ3MpOwogc3RhdGljIGNoYXIgKnBnX2dldF9pbmRleGRlZl93b3JrZXIoT2lkIGlu ZGV4cmVsaWQsIGludCBjb2xubywKIAkJCQkJCQkJCWNvbnN0IE9pZCAqZXhjbHVkZU9wcywK QEAgLTIyNDcsNyArMjI0Nyw5IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQg Y29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCXZhbCA9IFN5c0NhY2hlR2V0 QXR0ck5vdE51bGwoQ09OU1RST0lELCB0dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3BnX2NvbnN0 cmFpbnRfY29ua2V5KTsKIAotCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFs LCBjb25Gb3JtLT5jb25yZWxpZCwgJmJ1Zik7CisJCQkJLyogSWYgaXQgaXMgYSB0ZW1wb3Jh bCBmb3JlaWduIGtleSB0aGVuIGl0IHVzZXMgUEVSSU9ELiAqLworCQkJCWRlY29tcGlsZV9j b2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwKKwkJCQkJCQkJCQkJ IGNvbkZvcm0tPmNvbndpdGhvdXRvdmVybGFwcywgJmJ1Zik7CiAKIAkJCQkvKiBhZGQgZm9y ZWlnbiByZWxhdGlvbiBuYW1lICovCiAJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiKSBS RUZFUkVOQ0VTICVzKCIsCkBAIC0yMjU4LDcgKzIyNjAsOCBAQCBwZ19nZXRfY29uc3RyYWlu dGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQl2 YWwgPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVwLAogCQkJCQkJCQkJ CQkgQW51bV9wZ19jb25zdHJhaW50X2NvbmZrZXkpOwogCi0JCQkJZGVjb21waWxlX2NvbHVt bl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbmZyZWxpZCwgJmJ1Zik7CisJCQkJZGVj b21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbmZyZWxpZCwKKwkJ CQkJCQkJCQkJIGNvbkZvcm0tPmNvbndpdGhvdXRvdmVybGFwcywgJmJ1Zik7CiAKIAkJCQlh cHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnKScpOwogCkBAIC0yMzQ0LDcgKzIzNDcsNyBA QCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBm dWxsQ29tbWFuZCwKIAkJCQlpZiAoIWlzbnVsbCkKIAkJCQl7CiAJCQkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJmJ1ZiwgIiAoIik7Ci0JCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhf YXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgJmJ1Zik7CisJCQkJCWRlY29tcGlsZV9j b2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgZmFsc2UsICZidWYp OwogCQkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnKScpOwogCQkJCX0KIApAQCAt MjM3OSw3ICsyMzgyLDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25z dHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJdmFsID0gU3lzQ2FjaGVHZXRBdHRy Tm90TnVsbChDT05TVFJPSUQsIHR1cCwKIAkJCQkJCQkJCQkJIEFudW1fcGdfY29uc3RyYWlu dF9jb25rZXkpOwogCi0JCQkJa2V5YXR0cyA9IGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJy YXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgJmJ1Zik7CisJCQkJa2V5YXR0cyA9IGRlY29t cGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgZmFsc2Us ICZidWYpOwogCQkJCWlmIChjb25Gb3JtLT5jb253aXRob3V0b3ZlcmxhcHMpCiAJCQkJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgIiBXSVRIT1VUIE9WRVJMQVBTIik7CiAKQEAg LTI1NzcsNyArMjU4MCw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29u c3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogICovCiBzdGF0aWMgaW50CiBkZWNvbXBp bGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJl bElkLAotCQkJCQkJCSBTdHJpbmdJbmZvIGJ1ZikKKwkJCQkJCQkgYm9vbCB3aXRoUGVyaW9k LCBTdHJpbmdJbmZvIGJ1ZikKIHsKIAlEYXR1bQkgICAqa2V5czsKIAlpbnQJCQluS2V5czsK QEAgLTI1OTYsNyArMjU5OSw5IEBAIGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0 dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsCiAJCWlmIChqID09IDApCiAJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1lKSk7 CiAJCWVsc2UKLQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCAlcyIsIHF1b3RlX2lkZW50 aWZpZXIoY29sTmFtZSkpOworCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsICVzJXMiLAor CQkJCQkJCSAod2l0aFBlcmlvZCAmJiBqID09IG5LZXlzIC0gMSkgPyAiUEVSSU9EICIgOiAi IiwKKwkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1lKSk7CiAJfQogCiAJcmV0dXJu IG5LZXlzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hl LmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCBmNzMwYWEy NmM0Ny4uNmNkMTRkNGJkMTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5j CkBAIC0xNjAwLDYgKzE2MDAsMzcgQEAgZ2V0X2Z1bmNfbmFtZShPaWQgZnVuY2lkKQogCQly ZXR1cm4gTlVMTDsKIH0KIAorLyoKKyAqIGdldF9mdW5jX25hbWVfYW5kX25hbWVzcGFjZQor ICoJICByZXR1cm5zIHRoZSBzY2hlbWEtcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGZ1bmN0aW9u IHdpdGggdGhlIGdpdmVuIGZ1bmNpZAorICoKKyAqIE5vdGU6IHJldHVybnMgYSBwYWxsb2Mn ZCBjb3B5IG9mIHRoZSBzdHJpbmcsIG9yIE5VTEwgaWYgbm8gc3VjaCBmdW5jdGlvbi4KKyAq LworY2hhciAqCitnZXRfZnVuY19uYW1lX2FuZF9uYW1lc3BhY2UoT2lkIGZ1bmNpZCkKK3sK KwlIZWFwVHVwbGUJdHA7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShQUk9DT0lELCBPYmpl Y3RJZEdldERhdHVtKGZ1bmNpZCkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwl7 CisJCUZvcm1fcGdfcHJvYyBmdW5jdHVwID0gKEZvcm1fcGdfcHJvYykgR0VUU1RSVUNUKHRw KTsKKwkJY2hhcgkgICAqbmFtZXNwID0gZ2V0X25hbWVzcGFjZV9uYW1lKGZ1bmN0dXAtPnBy b25hbWVzcGFjZSk7CisJCWNoYXIJICAgKmZ1bmMgPSBOYW1lU3RyKGZ1bmN0dXAtPnByb25h bWUpOworCQljaGFyCSAgICpyZXN1bHQ7CisJCWludAkJCWxlbiA9IHN0cmxlbihuYW1lc3Ap ICsgc3RybGVuKGZ1bmMpICsgMjsKKworCQlyZXN1bHQgPSBwYWxsb2MobGVuICogc2l6ZW9m KGNoYXIpKTsKKwkJc25wcmludGYocmVzdWx0LCBsZW4sICIlcy4lcyIsIG5hbWVzcCwgZnVu Yyk7CisKKwkJcGZyZWUobmFtZXNwKTsKKwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJcmV0 dXJuIHJlc3VsdDsKKwl9CisJZWxzZQorCQlyZXR1cm4gTlVMTDsKK30KKwogLyoKICAqIGdl dF9mdW5jX25hbWVzcGFjZQogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfY29uc3RyYWludC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgK aW5kZXggOGZkNzZhOTRkNzguLjc1ODA0ZDY2ZWU3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2NvbnN0cmFpbnQuaApAQCAtMTI3LDE5ICsxMjcsMTkgQEAgQ0FUQUxPRyhwZ19jb25zdHJh aW50LDI2MDYsQ29uc3RyYWludFJlbGF0aW9uSWQpCiAJaW50MTYJCWNvbmZrZXlbMV07CiAK IAkvKgotCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9IEZLIGVx dWFsaXR5IG9wZXJhdG9ycyBmb3IgZWFjaAorCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBP SURzIG9mIHRoZSBQSyA9IEZLIGNvbXBhcmlzb24gb3BlcmF0b3JzIGZvciBlYWNoCiAJICog Y29sdW1uIG9mIHRoZSBjb25zdHJhaW50CiAJICovCiAJT2lkCQkJY29ucGZlcW9wWzFdIEJL SV9MT09LVVAocGdfb3BlcmF0b3IpOwogCiAJLyoKLQkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0 aGUgT0lEcyBvZiB0aGUgUEsgPSBQSyBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIGVhY2gKKwkg KiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgUEsgPSBQSyBjb21wYXJpc29u IG9wZXJhdG9ycyBmb3IgZWFjaAogCSAqIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludCAoaS5l LiwgZXF1YWxpdHkgZm9yIHRoZSByZWZlcmVuY2VkIGNvbHVtbnMpCiAJICovCiAJT2lkCQkJ Y29ucHBlcW9wWzFdIEJLSV9MT09LVVAocGdfb3BlcmF0b3IpOwogCiAJLyoKLQkgKiBJZiBh IGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgRksgPSBGSyBlcXVhbGl0eSBvcGVyYXRv cnMgZm9yIGVhY2gKKwkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgRksg PSBGSyBjb21wYXJpc29uIG9wZXJhdG9ycyBmb3IgZWFjaAogCSAqIGNvbHVtbiBvZiB0aGUg Y29uc3RyYWludCAoaS5lLiwgZXF1YWxpdHkgZm9yIHRoZSByZWZlcmVuY2luZyBjb2x1bW5z KQogCSAqLwogCU9pZAkJCWNvbmZmZXFvcFsxXSBCS0lfTE9PS1VQKHBnX29wZXJhdG9yKTsK QEAgLTE4MSw3ICsxODEsNyBAQCBERUNMQVJFX0lOREVYKHBnX2NvbnN0cmFpbnRfY29ucGFy ZW50aWRfaW5kZXgsIDI1NzksIENvbnN0cmFpbnRQYXJlbnRJbmRleElkLCBwZwogCiAvKiBj b25rZXkgY2FuIGNvbnRhaW4gemVybyAoSW52YWxpZEF0dHJOdW1iZXIpIGlmIGEgd2hvbGUt cm93IFZhciBpcyB1c2VkICovCiBERUNMQVJFX0FSUkFZX0ZPUkVJR05fS0VZX09QVCgoY29u cmVsaWQsIGNvbmtleSksIHBnX2F0dHJpYnV0ZSwgKGF0dHJlbGlkLCBhdHRudW0pKTsKLURF Q0xBUkVfQVJSQVlfRk9SRUlHTl9LRVkoKGNvbmZyZWxpZCwgY29uZmtleSksIHBnX2F0dHJp YnV0ZSwgKGF0dHJlbGlkLCBhdHRudW0pKTsKK0RFQ0xBUkVfQVJSQVlfRk9SRUlHTl9LRVlf T1BUKChjb25mcmVsaWQsIGNvbmZrZXkpLCBwZ19hdHRyaWJ1dGUsIChhdHRyZWxpZCwgYXR0 bnVtKSk7CiAKICNpZmRlZiBFWFBPU0VfVE9fQ0xJRU5UX0NPREUKIApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKaW5kZXggYTAyNzdlNTdjN2QuLjE0MjAwNDYwYWJiIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQKQEAgLTM5NDUsNiArMzk0NSwzMCBAQAogICBwcm9yZXR0eXBl ID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCiAgIHByb3NyYyA9PiAnUklfRktl eV9ub2FjdGlvbl91cGQnIH0sCiAKKyMgVGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5 IGNvbnN0cmFpbnQgdHJpZ2dlcnMKK3sgb2lkID0+ICc2MTIyJywgZGVzY3IgPT4gJ3RlbXBv cmFsIHJlZmVyZW50aWFsIGludGVncml0eSBGT1JFSUdOIEtFWSAuLi4gUkVGRVJFTkNFUycs CisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2NoZWNrX2lucycsIHByb3ZvbGF0aWxlID0+ICd2 JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9z cmMgPT4gJ1RSSV9GS2V5X2NoZWNrX2lucycgfSwKK3sgb2lkID0+ICc2MTIzJywgZGVzY3Ig PT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBGT1JFSUdOIEtFWSAuLi4gUkVG RVJFTkNFUycsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcsIHByb3ZvbGF0 aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcgfSwKK3sgb2lkID0+ICc2MTI2 JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUg UkVTVFJJQ1QnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9yZXN0cmljdF9kZWwnLCBwcm92 b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBl cyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9yZXN0cmljdF9kZWwnIH0sCit7IG9p ZCA9PiAnNjEyNycsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkg T04gVVBEQVRFIFJFU1RSSUNUJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfcmVzdHJpY3Rf dXBkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywg cHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfdXBk JyB9LAoreyBvaWQgPT4gJzYxMzInLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwg aW50ZWdyaXR5IE9OIERFTEVURSBOTyBBQ1RJT04nLAorICBwcm9uYW1lID0+ICdUUklfRktl eV9ub2FjdGlvbl9kZWwnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4g J3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9u b2FjdGlvbl9kZWwnIH0sCit7IG9pZCA9PiAnNjEzMycsIGRlc2NyID0+ICd0ZW1wb3JhbCBy ZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gVVBEQVRFIE5PIEFDVElPTicsCisgIHByb25hbWUg PT4gJ1RSSV9GS2V5X25vYWN0aW9uX3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJv cmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4g J1RSSV9GS2V5X25vYWN0aW9uX3VwZCcgfSwKKwogeyBvaWQgPT4gJzE2NjYnLAogICBwcm9u YW1lID0+ICd2YXJiaXRlcScsIHByb2xlYWtwcm9vZiA9PiAndCcsIHByb3JldHR5cGUgPT4g J2Jvb2wnLAogICBwcm9hcmd0eXBlcyA9PiAndmFyYml0IHZhcmJpdCcsIHByb3NyYyA9PiAn Yml0ZXEnIH0sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaCBi L3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCmluZGV4IDQzNTJhNDM4ODk5Li5iYWVl YTQzOWVlNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKKysr IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKQEAgLTUwLDggKzUwLDEwIEBAIGV4 dGVybiBib29sIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIGV4dGVybiBPaWQJ R2V0RGVmYXVsdE9wQ2xhc3MoT2lkIHR5cGVfaWQsIE9pZCBhbV9pZCk7CiBleHRlcm4gT2lk CVJlc29sdmVPcENsYXNzKGNvbnN0IExpc3QgKm9wY2xhc3MsIE9pZCBhdHRyVHlwZSwKIAkJ CQkJCSAgIGNvbnN0IGNoYXIgKmFjY2Vzc01ldGhvZE5hbWUsIE9pZCBhY2Nlc3NNZXRob2RJ ZCk7Ci1leHRlcm4gdm9pZCBHZXRPcGVyYXRvckZyb21XZWxsS25vd25TdHJhdGVneShPaWQg b3BjbGFzcywgT2lkIGF0dHR5cGUsCi0JCQkJCQkJCQkJCSBjb25zdCBjaGFyICpvcG5hbWUs IE9pZCAqb3BpZCwKK2V4dGVybiB2b2lkIEdldE9wZXJhdG9yRnJvbVdlbGxLbm93blN0cmF0 ZWd5KE9pZCBvcGNsYXNzLCBPaWQgcmhzdHlwZSwKKwkJCQkJCQkJCQkJIGNvbnN0IGNoYXIg Km9wbmFtZSwKKwkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKmNvbnRleHQsCisJCQkJCQkJCQkJ CSBPaWQgKm9waWQsCiAJCQkJCQkJCQkJCSBTdHJhdGVneU51bWJlciAqc3RyYXQpOwogCiAv KiBjb21tYW5kcy9mdW5jdGlvbmNtZHMuYyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvdGFibGVjbWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMu aAppbmRleCA2MGQ5YjhmNWI1Zi4uOTY3Njk0NzJiYmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Rh YmxlY21kcy5oCkBAIC0xMDUsNSArMTA1LDggQEAgZXh0ZXJuIHZvaWQgUmFuZ2VWYXJDYWxs YmFja093bnNSZWxhdGlvbihjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAJCQkJCQkJCQkJ IE9pZCByZWxJZCwgT2lkIG9sZFJlbElkLCB2b2lkICphcmcpOwogZXh0ZXJuIGJvb2wgUGFy dENvbnN0cmFpbnRJbXBsaWVkQnlSZWxDb25zdHJhaW50KFJlbGF0aW9uIHNjYW5yZWwsCiAJ CQkJCQkJCQkJCQkgTGlzdCAqcGFydENvbnN0cmFpbnQpOworZXh0ZXJuIHZvaWQgRmluZEZL UGVyaW9kT3BlcnNBbmRQcm9jcyhPaWQgb3BjbGFzcywKKwkJCQkJCQkJCSAgT2lkICpwZXJp b2RvcGVyb2lkLAorCQkJCQkJCQkJICBPaWQgKnBlcmlvZHByb2NvaWQpOwogCiAjZW5kaWYJ CQkJCQkJLyogVEFCTEVDTURTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA0 NzZkNTVkZDI0MC4uOGY0ZjhjZTZhNzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAg LTI1NjQsNiArMjU2NCwxMCBAQCB0eXBlZGVmIGVudW0gQ29uc3RyVHlwZQkJCS8qIHR5cGVz IG9mIGNvbnN0cmFpbnRzICovCiAjZGVmaW5lIEZLQ09OU1RSX01BVENIX1BBUlRJQUwJCSdw JwogI2RlZmluZSBGS0NPTlNUUl9NQVRDSF9TSU1QTEUJCSdzJwogCisvKiBGb3JlaWduIGtl eSB3aXRoIFBFUklPRCBwb3NpdGlvbnMgKi8KKyNkZWZpbmUgRktDT05TVFJfUEVSSU9EX09Q X0NPTlRBSU5FRF9CWQkwCisjZGVmaW5lIEZLQ09OU1RSX1BFUklPRF9QUk9DX1JFRkVSRU5D RURfQUdHIDAKKwogdHlwZWRlZiBzdHJ1Y3QgQ29uc3RyYWludAogewogCXBnX25vZGVfYXR0 cihjdXN0b21fcmVhZF93cml0ZSkKQEAgLTI2MTAsNyArMjYxNCw5IEBAIHR5cGVkZWYgc3Ry dWN0IENvbnN0cmFpbnQKIAkvKiBGaWVsZHMgdXNlZCBmb3IgRk9SRUlHTiBLRVkgY29uc3Ry YWludHM6ICovCiAJUmFuZ2VWYXIgICAqcGt0YWJsZTsJCS8qIFByaW1hcnkga2V5IHRhYmxl ICovCiAJTGlzdAkgICAqZmtfYXR0cnM7CQkvKiBBdHRyaWJ1dGVzIG9mIGZvcmVpZ24ga2V5 ICovCisJTm9kZQkgICAqZmtfcGVyaW9kOwkJLyogU3RyaW5nIG5vZGUgbmFtaW5nIFBlcmlv ZCBvciByYW5nZSBjb2x1bW4gKi8KIAlMaXN0CSAgICpwa19hdHRyczsJCS8qIENvcnJlc3Bv bmRpbmcgYXR0cnMgaW4gUEsgdGFibGUgKi8KKwlOb2RlCSAgICpwa19wZXJpb2Q7CQkvKiBT dHJpbmcgbm9kZSBuYW1pbmcgUGVyaW9kIG9yIHJhbmdlIGNvbHVtbiAqLwogCWNoYXIJCWZr X21hdGNodHlwZTsJLyogRlVMTCwgUEFSVElBTCwgU0lNUExFICovCiAJY2hhcgkJZmtfdXBk X2FjdGlvbjsJLyogT04gVVBEQVRFIGFjdGlvbiAqLwogCWNoYXIJCWZrX2RlbF9hY3Rpb247 CS8qIE9OIERFTEVURSBhY3Rpb24gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNl ci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCAyMzMxYWNh YzA5MS4uMWQzZjdiZDM3ZjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xp c3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTMyNiw2ICszMjYs NyBAQCBQR19LRVlXT1JEKCJwYXJ0aWFsIiwgUEFSVElBTCwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFydGl0aW9uIiwgUEFSVElUSU9OLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFT U0lORywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFz c3dvcmQiLCBQQVNTV09SRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdf S0VZV09SRCgicGVyaW9kIiwgUEVSSU9ELCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgicGxhY2luZyIsIFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwbGFucyIsIFBMQU5TLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwb2xpY3kiLCBQT0xJQ1ksIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L2xzeXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggZTRh MjAwYjAwZWMuLjEzMzkzODJmOTFkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9s c3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTE5 LDYgKzExOSw3IEBAIGV4dGVybiBPaWQJZ2V0X25lZ2F0b3IoT2lkIG9wbm8pOwogZXh0ZXJu IFJlZ1Byb2NlZHVyZSBnZXRfb3BycmVzdChPaWQgb3Bubyk7CiBleHRlcm4gUmVnUHJvY2Vk dXJlIGdldF9vcHJqb2luKE9pZCBvcG5vKTsKIGV4dGVybiBjaGFyICpnZXRfZnVuY19uYW1l KE9pZCBmdW5jaWQpOworZXh0ZXJuIGNoYXIgKmdldF9mdW5jX25hbWVfYW5kX25hbWVzcGFj ZShPaWQgZnVuY2lkKTsKIGV4dGVybiBPaWQJZ2V0X2Z1bmNfbmFtZXNwYWNlKE9pZCBmdW5j aWQpOwogZXh0ZXJuIE9pZAlnZXRfZnVuY19yZXR0eXBlKE9pZCBmdW5jaWQpOwogZXh0ZXJu IGludAlnZXRfZnVuY19uYXJncyhPaWQgZnVuY2lkKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4IDcyNmU5NDEwMmJmLi5j NjMzNzM4YzJlYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRo b3V0X292ZXJsYXBzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhv dXRfb3ZlcmxhcHMub3V0CkBAIC0zOTMsMyArMzkzLDU2NCBAQCBTRUxFQ1QgKiBGUk9NIHRw MiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAoMSByb3cpCiAKIERST1AgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWQ7CistLQorLS0gdGVzdCBGSyBkZXBlbmRlbmNpZXMKKy0tCistLSBj YW4ndCBkcm9wIGEgcmFuZ2UgcmVmZXJlbmNlZCBieSBhbiBGSywgdW5sZXNzIHdpdGggQ0FT Q0FERQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsgUFJJTUFSWSBLRVkgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlw YXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWwzIChpZCwgUEVSSU9EIHZh bGlkX2F0KQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTFVNTiB2YWxpZF9h dDsKK0VSUk9SOiAgY2Fubm90IGRyb3AgY29sdW1uIHZhbGlkX2F0IG9mIHRhYmxlIHRlbXBv cmFsMyBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBjb25z dHJhaW50IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgb24gdGFibGUgdGVtcG9yYWxfZmtfcm5n MnJuZyBkZXBlbmRzIG9uIGNvbHVtbiB2YWxpZF9hdCBvZiB0YWJsZSB0ZW1wb3JhbDMKK0hJ TlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0 cyB0b28uCitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xVTU4gdmFsaWRfYXQgQ0FT Q0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gY29uc3RyYWludCB0ZW1wb3JhbF9m a19ybmcycm5nX2ZrIG9uIHRhYmxlIHRlbXBvcmFsX2ZrX3JuZzJybmcKK0RST1AgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworLS0KKy0tIHRl c3QgRk9SRUlHTiBLRVksIHJhbmdlIHJlZmVyZW5jZXMgcmFuZ2UKKy0tCistLSBDYW4ndCBj cmVhdGUgYSBGSyB3aXRoIGEgbWlzbWF0Y2hlZCByYW5nZSB0eXBlCitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGludDRy YW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19wazIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyIEZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcg KGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworRVJST1I6ICBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrMiIgY2Fubm90IGJlIGltcGxlbWVudGVkCitE RVRBSUw6ICBLZXkgY29sdW1ucyAidmFsaWRfYXQiIGFuZCAidmFsaWRfYXQiIGFyZSBvZiBp bmNvbXBhdGlibGUgdHlwZXM6IGludDRyYW5nZSBhbmQgdHNyYW5nZS4KK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNy YW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChp ZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZzsKKy0tIHdpdGggbWlzbWF0Y2hlZCBQRVJJT0QgY29sdW1uczoKKy0tIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyAoaWQsIHZhbGlkX2F0KQorQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0 c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcg KGlkLCB2YWxpZF9hdCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHVzZXMgUEVSSU9EIG9u IHRoZSByZWZlcmVuY2luZyB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVuY2VkIHRhYmxlCist LSAocGFyZW50X2lkLCB2YWxpZF9hdCkgUkVGRVJFTkNFUyAoaWQsIFBFUklPRCB2YWxpZF9h dCkKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBG T1JFSUdOIEtFWSAocGFyZW50X2lkLCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworRVJST1I6ICBmb3JlaWduIGtleSB1 c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVu Y2luZyB0YWJsZQorLS0gKHBhcmVudF9pZCwgdmFsaWRfYXQpIFJFRkVSRU5DRVMgW2ltcGxp Y2l0XQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2Zr IEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZworKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qgb24gdGhlIHJl ZmVyZW5jZWQgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNpbmcgdGFibGUKKy0tIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyAoaWQpCitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFu Z2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwK KwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQp CispOworRVJST1I6ICBmb3JlaWduIGtleSB1c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJlbmNp bmcgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNlZCB0YWJsZQorLS0gKHBhcmVudF9pZCkg UkVGRVJFTkNFUyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlw YXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkKQor CQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitF UlJPUjogIGZvcmVpZ24ga2V5IHVzZXMgUEVSSU9EIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxl IGJ1dCBub3QgdGhlIHJlZmVyZW5jaW5nIHRhYmxlCistLSB3aXRoIGluZmVycmVkIFBLIG9u IHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJy bmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBp bnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkg S0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKyk7CitEUk9QIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmc7CistLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSBy ZWZlcmVuY2VkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAo CisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9p ZCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgaWQpCispOworRVJS T1I6ICBmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5vdCBjb250 YWluIGR1cGxpY2F0ZXMKKy0tIFR3byBzY2FsYXIgY29sdW1ucworQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX2ZrMl9ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5n ZSwKKwlwYXJlbnRfaWQxIGludDRyYW5nZSwKKwlwYXJlbnRfaWQyIGludDRyYW5nZSwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5n MnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZh bGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIgKGlkMSwgaWQyLCBQRVJJT0Qg dmFsaWRfYXQpCispOworXGQgdGVtcG9yYWxfZmsyX3JuZzJybmcKKyAgICAgICAgICAgVGFi bGUgInB1YmxpYy50ZW1wb3JhbF9mazJfcm5nMnJuZyIKKyAgIENvbHVtbiAgIHwgICBUeXBl ICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAg ICB8IGludDRyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgICB8 IHRzcmFuZ2UgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgcGFyZW50X2lkMSB8IGlu dDRyYW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgcGFyZW50X2lkMiB8IGludDRy YW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZW1wb3Jh bF9mazJfcm5nMnJuZ19wayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKQorRm9yZWlnbi1rZXkgY29uc3RyYWludHM6CisgICAgInRlbXBvcmFsX2ZrMl9y bmcycm5nX2ZrIiBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9E IHZhbGlkX2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIoaWQxLCBpZDIsIFBFUklPRCB2 YWxpZF9hdCkKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZzsKKy0tCistLSB0 ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05TVFJBSU5UCistLQorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCk7 CistLSBUd28gc2NhbGFyIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmsyX3Ju ZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9p ZDEgaW50NHJhbmdlLAorCXBhcmVudF9pZDIgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfZmsyX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJQURE IENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFy ZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVt cG9yYWxfcm5nMiAoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9hdCk7CitcZCB0ZW1wb3JhbF9m azJfcm5nMnJuZworICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFsX2ZrMl9ybmcy cm5nIgorICAgQ29sdW1uICAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8 IERlZmF1bHQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0KKyBpZCAgICAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwg bm90IG51bGwgfCAKKyB2YWxpZF9hdCAgIHwgdHNyYW5nZSAgIHwgICAgICAgICAgIHwgbm90 IG51bGwgfCAKKyBwYXJlbnRfaWQxIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAKKyBwYXJlbnRfaWQyIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAg fCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIiBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCitGb3JlaWduLWtleSBjb25zdHJh aW50czoKKyAgICAidGVtcG9yYWxfZmsyX3JuZzJybmdfZmsiIEZPUkVJR04gS0VZIChwYXJl bnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgdGVtcG9y YWxfcm5nMihpZDEsIGlkMiwgUEVSSU9EIHZhbGlkX2F0KQorCistLSB3aXRoIGluZmVycmVk IFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlLCBhbmQgd3JvbmcgY29sdW1uIHR5cGU6CitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfZmssCisJQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgZGF0ZXJh bmdlIFVTSU5HIGRhdGVyYW5nZShsb3dlcih2YWxpZF9hdCk6OmRhdGUsIHVwcGVyKHZhbGlk X2F0KTo6ZGF0ZSk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKK0VSUk9S OiAgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgY2Fu bm90IGJlIGltcGxlbWVudGVkCitERVRBSUw6ICBLZXkgY29sdW1ucyAidmFsaWRfYXQiIGFu ZCAidmFsaWRfYXQiIGFyZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6IGRhdGVyYW5nZSBhbmQg dHNyYW5nZS4KK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBTFRFUiBDT0xV TU4gdmFsaWRfYXQgVFlQRSB0c3JhbmdlIFVTSU5HIHRzcmFuZ2UobG93ZXIodmFsaWRfYXQp LCB1cHBlcih2YWxpZF9hdCkpOworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJl bmNlZCB0YWJsZToKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0gc2hv dWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVu dF9pZCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBpZCk7CitFUlJP UjogIGZvcmVpZ24ga2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRh aW4gZHVwbGljYXRlcworLS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFscmVhZHkKKy0tCitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwor CURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorQUxURVIg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUg b24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNv bnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVu dF9pZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJT dW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRl bXBvcmFsX3JuZyIuCistLSBva2F5IGFnYWluOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0KKy0tIHRl c3QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYKKy0tCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRk ZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9m a19ybmcycm5nX2ZrJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dl dF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyhpZCwgUEVSSU9E IHZhbGlkX2F0KQorKDEgcm93KQorCistLQorLS0gdGVzdCBGSyBjaGlsZCBpbnNlcnRzCist LQorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3Vs ZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwy XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKK0VS Uk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIg dmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19m ayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIlR1ZSBK YW4gMDIgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBu b3QgcHJlc2VudCBpbiB0YWJsZSAidGVtcG9yYWxfcm5nIi4KKy0tIG5vdyBpdCBzaG91bGQg d29yazoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFu Z2UoJzIwMTgtMDItMDMnLCAnMjAxOC0wMy0wMycpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIw MTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLQorLS0gdGVzdCBGSyBjaGlsZCB1cGRhdGVzCist LQorVVBEQVRFIHRlbXBvcmFsX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMS0wMicsICcyMDE4LTAzLTAxJykgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gc2hv dWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDUtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7 CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJy bmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJU dWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJUdWUgTWF5IDAxIDAwOjAwOjAwIDIwMTgiKSkg aXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCitVUERBVEUgdGVtcG9y YWxfZmtfcm5nMnJuZyBTRVQgcGFyZW50X2lkID0gJ1s4LDhdJyBXSEVSRSBpZCA9ICdbMSwx XSc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3Ju ZzJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3Ju ZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbOCw5KSwg WyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgi KSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCistLSBBTFRFUiBG SyBERUZFUlJBQkxFCitCRUdJTjsKKyAgSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UworICAgICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSks CisgICAgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsK KyAgSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAgICAoJ1szLDNd JywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworICBB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisgICAgQUxURVIgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisgICAgREVGRVJSQUJMRSBJTklUSUFMTFkgREVGRVJS RUQ7CisgIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7IC0t c2hvdWxkIG5vdCBmYWlsIHlldC4KK0NPTU1JVDsgLS0gc2hvdWxkIGZhaWwgaGVyZS4KK0VS Uk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRl cyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0 YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0 KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDow MDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxf Zmtfcm5nMnJuZyIuCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04K Ky0tCistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMg aWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQREFU RSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcy MDE2LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBz dWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1 c2UgdGhlIHJhbmdlIGlzbid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk ID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAx OC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgn WzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7 CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDIt MDEnLCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0 aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1wb3Jh bF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAx JykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJs ZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1w b3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RF VEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5j ZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBjaGFuZ2luZyB0aGUg c2NhbGFyIHBhcnQgZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3 XScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJs ZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1w b3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RF VEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5j ZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0 aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRz OgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7 CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEt MDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RF TEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVd JzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLQor LS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAorLS0KK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJu Z19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJT04gREVMRVRFIFJF U1RSSUNUOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1l cmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitV UERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEn LCAnMjAxNi0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRo YXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBi ZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUs NV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywg JzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVF UyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1 XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2 LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyB1cGRh dGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgdGVt cG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0w Mi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24g dGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAi dGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmci CitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZl cmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gY2hhbmdpbmcg dGhlIHNjYWxhciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAn WzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24g dGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAi dGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmci CitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZl cmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gdGhlbiBkZWxl dGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNj ZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMs M10nOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2 LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdb NSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOwor LS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCistLQorQUxURVIgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19y bmcycm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CistLSBhIFBL IGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVm ZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2Nl ZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0 aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUs NV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywg JzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVF UyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1 XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEg UEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVM RVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQg PSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRl IG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtl eSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9y YWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsi TW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4Iikp IGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIu CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUg UEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpOworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJ QUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwor CU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0 ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5j ZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcy MDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAx LTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZl cmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VS Uk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRl cyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0 YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0 KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDow MDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxf Zmtfcm5nMnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBh bmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpOworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RFTEVURSBvcHRp b25zCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVF UyAoJ1s0LDRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2 XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0 KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBV UERBVEUgQ0FTQ0FERTsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBv cmFsIGZvcmVpZ24ga2V5cworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5n MnJuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzksOV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9Q IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIFNF VCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0 ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRl cyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1stMSwt MV0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbMTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzEyLDEyXScpOworQUxURVIg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNF VCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJCUZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0 ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVG QVVMVDsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVp Z24ga2V5cworLS0gRksgYmV0d2VlbiBwYXJ0aXRpb25lZCB0YWJsZXMKK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9h dCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0 aW9uZWRfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0cDEgcGFydGl0 aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzEsMV0n LCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDExXScpOworQ1JF QVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZP UiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4XScsICdbMTAs MTBdJywgJ1sxMiwxMl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAy LTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcy MDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdbMiwyXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0w MScsICcyMDEwLTAxLTAxJyksICd0d28nKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJh bmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVG RVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQp CispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdGZrcDEgcGFydGl0 aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAo J1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0n KTsKK0NSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0n LCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CistLSBwYXJ0aXRpb25lZCBGSyBj aGlsZCBpbnNlcnRzCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAt MDItMTUnKSwgJ1sxLDFdJyksCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDEtMDEtMDEn LCAnMjAwMi0wMS0wMScpLCAnWzIsMl0nKSwKKyAgKCdbMiwyXScsIGRhdGVyYW5nZSgnMjAw MC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUworICAo J1szLDNdJywgZGF0ZXJhbmdlKCcyMDEwLTAxLTAxJywgJzIwMTAtMDItMTUnKSwgJ1sxLDFd Jyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRma3AxIiB2aW9sYXRl cyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzEsMiksIFsw MS0wMS0yMDEwLDAyLTE1LTIwMTApKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIi4KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgVkFMVUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEn LCAnMjAwMC0wMi0xNScpLCAnWzMsM10nKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBv biB0YWJsZSAidGZrcDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9p ZCwgdmFsaWRfYXQpPShbMyw0KSwgWzAxLTAxLTIwMDAsMDItMTUtMjAwMCkpIGlzIG5vdCBw cmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmciLgorLS0gcGFydGl0 aW9uZWQgRksgY2hpbGQgdXBkYXRlcworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAt MDItMTMnKSBXSEVSRSBpZCA9ICdbMiwyXSc7CistLSBtb3ZlIGEgcm93IGZyb20gdGhlIGZp cnN0IHBhcnRpdGlvbiB0byB0aGUgc2Vjb25kCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBTRVQgaWQgPSAnWzQsNF0nIFdIRVJFIGlkID0gJ1sxLDFdJzsKKy0t IG1vdmUgYSByb3cgZnJvbSB0aGUgc2Vjb25kIHBhcnRpdGlvbiB0byB0aGUgZmlyc3QKK1VQ REFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCBpZCA9ICdbMSwxXScg V0hFUkUgaWQgPSAnWzQsNF0nOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMDAt MDEtMDEnLCAnMjAwMC0wNC0wMScpIFdIRVJFIGlkID0gJ1sxLDFdJzsKK0VSUk9SOiAgY29u ZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ0Zmtw MV9wa2V5IgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgWzAxLTAxLTIw MDAsMDQtMDEtMjAwMCkpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQsIHZhbGlk X2F0KT0oWzEsMiksIFswMS0wMS0yMDAwLDA0LTAxLTIwMDApKS4KKy0tIHBhcnRpdGlvbmVk IEZLIHBhcmVudCB1cGRhdGVzIE5PIEFDVElPTgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywg JzIwMTYtMDItMDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2 YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykgV0hFUkUg aWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZB TFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAo J1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVd Jyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRh dGVyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAx Jyk7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg U0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQor ICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJs ZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0YWJsZSAidGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0o WzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZy b20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgorLS0gY2xlYW4g dXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJF IHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRl bGV0ZXMgTk8gQUNUSU9OCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg VkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1 XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRF IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0g c2hvdWxkIGZhaWw6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hF UkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRw MSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYp LCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRh YmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KKy0tIGNsZWFuIHVwOgor REVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJl bnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVz IFJFU1RSSUNUCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n CisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZms7 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJQUREIENP TlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maworCUZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAx Ni0wMS0wMScsICcyMDE2LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4 LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEw JyksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFs aWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCisgIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAn MjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2 LTAyLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxl dGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUg InRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2 YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVm ZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4K Ky0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIHBhcnRpdGlvbmVkIEZL IHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpOworLS0gc2hvdWxkIGZhaWw6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24g dGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9h dCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNl ZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KKy0tIHBh cnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0FMVEVSIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcK KwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CitFUlJPUjogIGFjdGlv biBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0tIHBhcnRpdGlv bmVkIEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVu dCB1cGRhdGVzIFNFVCBOVUxMCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJ CVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERFTEVURSBTRVQg TlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CitFUlJPUjogIGFjdGlvbiBub3Qgc3VwcG9ydGVk IGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBk ZWxldGVzIFNFVCBOVUxMCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQg REVGQVVMVAorQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwor ICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9Q IENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFU RSBTRVQgREVGQVVMVDsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBv cmFsIGZvcmVpZ24ga2V5cworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VU IERFRkFVTFQKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZzsK K0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAppbmRleCBjOGU4YWI5OTRhMC4uNjQxY2Rk NWIxOWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3Zlcmxh cHMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3Fs CkBAIC0yODgsMyArMjg4LDUzOCBAQCBTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKIFNFTEVDVCAqIEZST00gdHAxIE9SREVSIEJZ IGlkLCB2YWxpZF9hdDsKIFNFTEVDVCAqIEZST00gdHAyIE9SREVSIEJZIGlkLCB2YWxpZF9h dDsKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7CisKKy0tCistLSB0ZXN0IEZL IGRlcGVuZGVuY2llcworLS0KKworLS0gY2FuJ3QgZHJvcCBhIHJhbmdlIHJlZmVyZW5jZWQg YnkgYW4gRkssIHVubGVzcyB3aXRoIENBU0NBREUKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVt cG9yYWwzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykK Kyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdl LAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsg Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsMyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbDMgRFJPUCBDT0xVTU4gdmFsaWRfYXQ7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJP UCBDT0xVTU4gdmFsaWRfYXQgQ0FTQ0FERTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworCistLQorLS0gdGVzdCBGT1JFSUdOIEtF WSwgcmFuZ2UgcmVmZXJlbmNlcyByYW5nZQorLS0KKworLS0gQ2FuJ3QgY3JlYXRlIGEgRksg d2l0aCBhIG1pc21hdGNoZWQgcmFuZ2UgdHlwZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBpbnQ0cmFuZ2UsCisJcGFy ZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsy IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrMiBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9E IHZhbGlkX2F0KQorKTsKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAor CWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFu Z2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK KwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOwor RFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nOworCistLSB3aXRoIG1pc21hdGNoZWQg UEVSSU9EIGNvbHVtbnM6CistLSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVS RU5DRVMgKGlkLCB2YWxpZF9hdCkKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50 NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgdmFsaWRfYXQpCispOworLS0g KHBhcmVudF9pZCwgdmFsaWRfYXQpIFJFRkVSRU5DRVMgKGlkLCBQRVJJT0QgdmFsaWRfYXQp CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAor CXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxf cm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKKy0tIChwYXJlbnRfaWQsIHZhbGlkX2F0 KSBSRUZFUkVOQ0VTIFtpbXBsaWNpdF0KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcy cm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQg aW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCB2YWxpZF9hdCkK KwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKyk7CistLSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpIFJFRkVSRU5DRVMgKGlkKQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9p ZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1B UlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkKQorKTsKKy0tIChwYXJl bnRfaWQpIFJFRkVSRU5DRVMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFu Z2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwK KwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQp CispOworCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgor Q1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2 YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1w b3JhbF9ybmcKKyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7CisKKy0tIHNo b3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgcGFyZW50X2lkKQorCQlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZyAoaWQsIFBFUklPRCBpZCkKKyk7CisKKy0tIFR3byBzY2FsYXIgY29sdW1ucwor Q1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJ dmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQxIGludDRyYW5nZSwKKwlwYXJlbnRfaWQy IGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIFBSSU1B UlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9mazJfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50 X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIgKGlk MSwgaWQyLCBQRVJJT0QgdmFsaWRfYXQpCispOworXGQgdGVtcG9yYWxfZmsyX3JuZzJybmcK K0RST1AgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmc7CisKKy0tCistLSB0ZXN0IEFMVEVS IFRBQkxFIEFERCBDT05TVFJBSU5UCistLQorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50 X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19y bmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQor CVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KTsKKy0tIFR3 byBzY2FsYXIgY29sdW1uczoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZyAo CisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkMSBpbnQ0 cmFuZ2UsCisJcGFyZW50X2lkMiBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m azJfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpCispOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQx LCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmcyIChpZDEsIGlkMiwgUEVSSU9EIHZhbGlkX2F0KTsKK1xkIHRlbXBvcmFsX2ZrMl9ybmcy cm5nCisKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGUsIGFu ZCB3cm9uZyBjb2x1bW4gdHlwZToKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK KwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBTFRFUiBDT0xV TU4gdmFsaWRfYXQgVFlQRSBkYXRlcmFuZ2UgVVNJTkcgZGF0ZXJhbmdlKGxvd2VyKHZhbGlk X2F0KTo6ZGF0ZSwgdXBwZXIodmFsaWRfYXQpOjpkYXRlKTsKK0FMVEVSIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2Zr CisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5D RVMgdGVtcG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFM VEVSIENPTFVNTiB2YWxpZF9hdCBUWVBFIHRzcmFuZ2UgVVNJTkcgdHNyYW5nZShsb3dlcih2 YWxpZF9hdCksIHVwcGVyKHZhbGlkX2F0KSk7CisKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24g dGhlIHJlZmVyZW5jZWQgdGFibGU6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZzsKKworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBj b2x1bW5zOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHBhcmVudF9pZCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklP RCBpZCk7CisKKy0tCistLSB0ZXN0IHdpdGggcm93cyBhbHJlYWR5CistLQorCitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2Zr CisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5D RVMgdGVtcG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURS T1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElOVE8gdGVt cG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDIn LCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorQUxURVIgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CistLSBva2F5IGFnYWluOgorREVMRVRFIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n OworCistLQorLS0gdGVzdCBwZ19nZXRfY29uc3RyYWludGRlZgorLS0KKworU0VMRUNUIHBn X2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5h bWUgPSAndGVtcG9yYWxfZmtfcm5nMnJuZ19mayc7CisKKy0tCistLSB0ZXN0IEZLIGNoaWxk IGluc2VydHMKKy0tCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVT ICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFd Jyk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcg VkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwg J1sxLDFdJyk7CistLSBub3cgaXQgc2hvdWxkIHdvcms6CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAzJywgJzIwMTgtMDMt MDMnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syLDJd JywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJyksICdbMSwxXScpOworCist LQorLS0gdGVzdCBGSyBjaGlsZCB1cGRhdGVzCistLQorCitVUERBVEUgdGVtcG9yYWxfZmtf cm5nMnJuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDMt MDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1w b3JhbF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAn MjAxOC0wNS0wMScpIFdIRVJFIGlkID0gJ1sxLDFdJzsKK1VQREFURSB0ZW1wb3JhbF9ma19y bmcycm5nIFNFVCBwYXJlbnRfaWQgPSAnWzgsOF0nIFdIRVJFIGlkID0gJ1sxLDFdJzsKKwor LS0gQUxURVIgRksgREVGRVJSQUJMRQorCitCRUdJTjsKKyAgSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUworICAgICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MTgtMDItMDEnKSksCisgICAgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAx OC0wMy0wMScpKTsKKyAgSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMK KyAgICAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdb NSw1XScpOworICBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisgICAgQUxURVIg Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisgICAgREVGRVJSQUJMRSBJTklU SUFMTFkgREVGRVJSRUQ7CisKKyAgREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk ID0gJ1s1LDVdJzsgLS1zaG91bGQgbm90IGZhaWwgeWV0LgorQ09NTUlUOyAtLSBzaG91bGQg ZmFpbCBoZXJlLgorCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04K Ky0tCisKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJp YyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBE QVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywg JzIwMTYtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0 IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVj YXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUg aWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcy MDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMg KCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0n KTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0w Mi0wMScsICcyMDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQg PSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgdXBkYXRl IHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorVVBEQVRFIHRlbXBv cmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDIt MDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZh aWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhl IHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFJF U1RSSUNUCistLQorCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawor CUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsKKy0tIGEgUEsgdXBkYXRlIHRo YXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBXSEVSRSBpZCA9 ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRo ZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1 LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgt MDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcg U0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKK1dI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywg JzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3Ro IGFyZSByZWZlcmVuY2VkOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwor LS0gY2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3Ju ZyBTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0 aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRz OgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7 CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEt MDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RF TEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVd JzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLQor LS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04KKy0tCitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJy bmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKy0tIGEgUEsgZGVs ZXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVu Y2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMg ZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSBy YW5nZSBpc24ndDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAx OC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgn WzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyBk ZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxldGUgdGhl IG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoK K0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKworLS0KKy0tIHRl c3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCisKK0FMVEVSIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m azsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJT04gREVMRVRFIFJFU1RS SUNUOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMg ZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSBy YW5nZSBpc24ndDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAx OC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgn WzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyBk ZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxldGUgdGhl IG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoK K0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKworLS0KKy0tIHRl c3QgT04gVVBEQVRFL0RFTEVURSBvcHRpb25zCistLQorCistLSB0ZXN0IEZLIHBhcmVudCB1 cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzQsNF0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m a19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJ QUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n CisJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworCistLSB0ZXN0IEZL IHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOworQUxURVIgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRl bXBvcmFsX3JuZworCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOwor CistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWy0xLC0xXScsIHRzcmFuZ2UobnVsbCwgbnVsbCkpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbMTIsMTJdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisg IEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgU0VU IERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOworCistLSBGSyBiZXR3ZWVuIHBhcnRp dGlvbmVkIHRhYmxlcworCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBuYW1lIHRleHQs CisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3JuZ19wayBQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispIFBBUlRJVElPTiBCWSBMSVNUIChp ZCk7CitDUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDdd JywgJ1s5LDldJywgJ1sxMSwxMV0nKTsKK0NSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9G IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQs NF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRl cmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCisgICgnWzEsMV0n LCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyksCisgICgn WzIsMl0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAndHdvJyk7 CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nICgKKwlp ZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFu Z2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BrIFBS SU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispIFBBUlRJVElPTiBCWSBMSVNUIChp ZCk7CitDUkVBVEUgVEFCTEUgdGZrcDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVd JywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nKTsKK0NSRUFURSBUQUJMRSB0ZmtwMiBw YXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVT IElOICgnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdb MTIsMTJdJyk7CisKKy0tIHBhcnRpdGlvbmVkIEZLIGNoaWxkIGluc2VydHMKKworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKCdbMSwx XScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwxXScpLAor ICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAxLTAxLTAxJywgJzIwMDItMDEtMDEnKSwgJ1sy LDJdJyksCisgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0x NScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgn MjAxMC0wMS0wMScsICcyMDEwLTAyLTE1JyksICdbMSwxXScpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKCdbMywzXScsIGRhdGVy YW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMywzXScpOworCistLSBwYXJ0 aXRpb25lZCBGSyBjaGlsZCB1cGRhdGVzCisKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcy MDAwLTAyLTEzJykgV0hFUkUgaWQgPSAnWzIsMl0nOworLS0gbW92ZSBhIHJvdyBmcm9tIHRo ZSBmaXJzdCBwYXJ0aXRpb24gdG8gdGhlIHNlY29uZAorVVBEQVRFIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgU0VUIGlkID0gJ1s0LDRdJyBXSEVSRSBpZCA9ICdbMSwxXSc7 CistLSBtb3ZlIGEgcm93IGZyb20gdGhlIHNlY29uZCBwYXJ0aXRpb24gdG8gdGhlIGZpcnN0 CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgaWQgPSAnWzEs MV0nIFdIRVJFIGlkID0gJ1s0LDRdJzsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcy MDAwLTAxLTAxJywgJzIwMDAtMDQtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CisKKy0tIHBh cnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIE5PIEFDVElPTgorCitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIw MTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAx OC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0x MCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZh bGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorICBXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywg JzIwMTgtMDMtMDEnKTsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAx Ni0wMi0wMScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9 ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUg aWQgPSAnWzUsNV0nOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBB Q1RJT04KKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRl cmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0 ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIHNob3VsZCBm YWlsOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBwYXJ0 aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAorCitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZworCU9OIERFTEVU RSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykpOwor VVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRh dGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDIt MDEnLCAnMjAxNi0wMy0wMScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQg PSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZh aWw6CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRh dGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx Jyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tIHBhcnRpdGlv bmVkIEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZB TFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwg J1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcy MDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKworLS0gcGFydGl0aW9uZWQgRksg cGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERFTEVU RSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJl bnQgZGVsZXRlcyBDQVNDQURFCisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVz IFNFVCBOVUxMCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19m aywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2Zr CisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJF TkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9O IFVQREFURSBTRVQgTlVMTDsKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMg U0VUIE5VTEwKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFV TFQKKworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworICBB TFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENP TlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBT RVQgREVGQVVMVDsKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERF RkFVTFQKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nOwor RFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmc7Ci0tIAoyLjQyLjAKCg== --------------5mQnkvShJhECliiRK4zn4H0Z Content-Type: text/x-patch; charset=UTF-8; name="v23-0005-Add-multi-range_without_portion-proc-operator.patch" Content-Disposition: attachment; filename*0="v23-0005-Add-multi-range_without_portion-proc-operator.patch" Content-Transfer-Encoding: base64 RnJvbSAzYThiMWRjMjRkMTgzZmEwMjBiYzFiN2RkYTdkN2UzMTJkMGU1NmVlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMzAgRGVjIDIwMjMgMjM6MTA6NTkgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyMyA1LzhdIEFkZCB7bXVsdGksfXJhbmdlX3dpdGhvdXRf cG9ydGlvbiBwcm9jICYgb3BlcmF0b3IKClRoZXNlIHJldHVybiBhbiBhcnJheSBvZiB0aGVp ciBpbnB1dCB0eXBlIGFyZSB3b3JrIGxpa2UgbWludXMgYnV0IGRvbid0CmZhaWwgb24gc3Bs aXRzLiBUaGV5IG5ldmVyIGNvbnRhaW4gZW1wdHkgZWxlbWVudHMuIFdlIHdpbGwgdXNlIHRo aXMgdG8Kc3VwcG9ydCBGT1IgUE9SVElPTiBPRi4KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9tdWx0aXJhbmdldHlwZXMuYyAgICAgICB8ICA0OSArKysrKysrCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jICAgICAgICAgICAgfCAxMjQgKysrKysrKysrKysr KysrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZXJhdG9yLmRhdCAgICAgICAgICAg fCAgIDYgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAg IHwgICA2ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3JhbmdldHlwZXMuaCAgICAgICAgICAgICAg ICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL211bHRpcmFuZ2V0eXBlcy5v dXQgfCAxMjEgKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cmFuZ2V0eXBlcy5vdXQgICAgICB8ICA1NCArKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9z cWwvbXVsdGlyYW5nZXR5cGVzLnNxbCAgICAgIHwgIDIyICsrKysKIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3JhbmdldHlwZXMuc3FsICAgICAgICAgICB8ICAxMCArKwogMTAgZmlsZXMgY2hh bmdlZCwgMzk1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21s CmluZGV4IDE2Yjk0NDYxYjJjLi4wY2E0ZWQ2YzJmOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAg LTg2NSw3ICs4NjUsNyBAQAogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAg VGhlIEItdHJlZSBvcGVyYXRvciBmYW1pbHkgdGhpcyBlbnRyeSBzb3J0cyBhY2NvcmRpbmcg dG8sIGlmIGFuCi0gICAgICAgb3JkZXJpbmcgb3BlcmF0b3I7IHplcm8gaWYgYSBzZWFyY2gg b3BlcmF0b3IKKyAgICAgICBvcmRlcmluZyBvcGVyYXRvcjsgemVybyBpZiBhIHNlYXJjaCBv cGVyYXRvciBvciBwb3J0aW9uIG9wZXJhdG9yCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CiAgICAgPC90Ym9keT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9tdWx0aXJhbmdldHlwZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXJh bmdldHlwZXMuYwppbmRleCBmODJlNmY0MmQ5OC4uYjcwNWFlZTZiZTUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXJhbmdldHlwZXMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvbXVsdGlyYW5nZXR5cGVzLmMKQEAgLTEyMjYsNiArMTIyNiw1NSBA QCBtdWx0aXJhbmdlX21pbnVzX2ludGVybmFsKE9pZCBtbHRybmd0eXBvaWQsIFR5cGVDYWNo ZUVudHJ5ICpyYW5nZXR5cCwKIAlyZXR1cm4gbWFrZV9tdWx0aXJhbmdlKG1sdHJuZ3R5cG9p ZCwgcmFuZ2V0eXAsIHJhbmdlX2NvdW50MywgcmFuZ2VzMyk7CiB9CiAKKy8qCisgKiBtdWx0 aXJhbmdlIG1pbnVzIGJ1dCByZXR1cm5pbmcgYW4gYXJyYXkgb2Ygb25lLAorICogb3IgemVy byBpZiB0aGUgcmVzdWx0IHdvdWxkIGJlIGVtcHR5LgorICovCisKK0RhdHVtCittdWx0aXJh bmdlX3dpdGhvdXRfcG9ydGlvbihQR19GVU5DVElPTl9BUkdTKQoreworCU11bHRpcmFuZ2VU eXBlICptcjEgPSBQR19HRVRBUkdfTVVMVElSQU5HRV9QKDApOworCU11bHRpcmFuZ2VUeXBl ICptcjIgPSBQR19HRVRBUkdfTVVMVElSQU5HRV9QKDEpOworCU9pZAkJCW1sdHJuZ3R5cG9p ZCA9IE11bHRpcmFuZ2VUeXBlR2V0T2lkKG1yMSk7CisJVHlwZUNhY2hlRW50cnkgKnR5cGNh Y2hlOworCVR5cGVDYWNoZUVudHJ5ICpyYW5nZXR5cDsKKwlpbnQzMgkJcmFuZ2VfY291bnQx OworCWludDMyCQlyYW5nZV9jb3VudDI7CisJUmFuZ2VUeXBlICoqcmFuZ2VzMTsKKwlSYW5n ZVR5cGUgKipyYW5nZXMyOworCU11bHRpcmFuZ2VUeXBlICptcjsKKwlEYXR1bQlkYXR1bXNb MV07CisJQXJyYXlUeXBlICpyZXQ7CisKKwl0eXBjYWNoZSA9IG11bHRpcmFuZ2VfZ2V0X3R5 cGNhY2hlKGZjaW5mbywgbWx0cm5ndHlwb2lkKTsKKwlyYW5nZXR5cCA9IHR5cGNhY2hlLT5y bmd0eXBlOworCisJaWYgKE11bHRpcmFuZ2VJc0VtcHR5KG1yMSkgfHwgTXVsdGlyYW5nZUlz RW1wdHkobXIyKSkKKwkJbXIgPSBtcjE7CisJZWxzZQorCXsKKwkJbXVsdGlyYW5nZV9kZXNl cmlhbGl6ZSh0eXBjYWNoZS0+cm5ndHlwZSwgbXIxLCAmcmFuZ2VfY291bnQxLCAmcmFuZ2Vz MSk7CisJCW11bHRpcmFuZ2VfZGVzZXJpYWxpemUodHlwY2FjaGUtPnJuZ3R5cGUsIG1yMiwg JnJhbmdlX2NvdW50MiwgJnJhbmdlczIpOworCisJCW1yID0gbXVsdGlyYW5nZV9taW51c19p bnRlcm5hbChtbHRybmd0eXBvaWQsCisJCQkJCQkJCQkgICByYW5nZXR5cCwKKwkJCQkJCQkJ CSAgIHJhbmdlX2NvdW50MSwKKwkJCQkJCQkJCSAgIHJhbmdlczEsCisJCQkJCQkJCQkgICBy YW5nZV9jb3VudDIsCisJCQkJCQkJCQkgICByYW5nZXMyKTsKKwl9CisKKwlpZiAoTXVsdGly YW5nZUlzRW1wdHkobXIpKQorCQlQR19SRVRVUk5fQVJSQVlUWVBFX1AoY29uc3RydWN0X2Vt cHR5X2FycmF5KHR5cGNhY2hlLT50eXBlX2lkKSk7CisJZWxzZQorCXsKKwkJZGF0dW1zWzBd ID0gTXVsdGlyYW5nZVR5cGVQR2V0RGF0dW0obXIpOworCQlyZXQgPSBjb25zdHJ1Y3RfYXJy YXkoZGF0dW1zLCAxLCB0eXBjYWNoZS0+dHlwZV9pZCwgdHlwY2FjaGUtPnR5cGxlbiwgdHlw Y2FjaGUtPnR5cGJ5dmFsLCB0eXBjYWNoZS0+dHlwYWxpZ24pOworCQlQR19SRVRVUk5fQVJS QVlUWVBFX1AocmV0KTsKKwl9Cit9CisKIC8qIG11bHRpcmFuZ2UgaW50ZXJzZWN0aW9uICov CiBEYXR1bQogbXVsdGlyYW5nZV9pbnRlcnNlY3QoUEdfRlVOQ1RJT05fQVJHUykKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jCmluZGV4IGQ5OWIwMGI1OTA4Li5hMGVjNDY4MmE1 ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jCkBAIC0zNyw2ICszNyw3IEBA CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWlzY25vZGVzLmgi CiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL2FycmF5 LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXRl LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCkBAIC0xMjA2LDYgKzEyMDcsMTI5 IEBAIHJhbmdlX3NwbGl0X2ludGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgY29u c3QgUmFuZ2VUeXBlICpyMSwgY29uc3QgUmFuZ2VUCiAJcmV0dXJuIGZhbHNlOwogfQogCisv KiBzdWJ0cmFjdGlvbiBidXQgcmV0dXJuaW5nIGFuIGFycmF5IHRvIGFjY29tbW9kYXRlIHNw bGl0cyAqLworRGF0dW0KK3JhbmdlX3dpdGhvdXRfcG9ydGlvbihQR19GVU5DVElPTl9BUkdT KQoreworCVJhbmdlVHlwZSAgKnIxID0gUEdfR0VUQVJHX1JBTkdFX1AoMCk7CisJUmFuZ2VU eXBlICAqcjIgPSBQR19HRVRBUkdfUkFOR0VfUCgxKTsKKwlSYW5nZVR5cGUgICpyc1syXTsK KwlpbnQJCQluOworCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZTsKKworCS8qIERpZmZlcmVu dCB0eXBlcyBzaG91bGQgYmUgcHJldmVudGVkIGJ5IEFOWVJBTkdFIG1hdGNoaW5nIHJ1bGVz ICovCisJaWYgKFJhbmdlVHlwZUdldE9pZChyMSkgIT0gUmFuZ2VUeXBlR2V0T2lkKHIyKSkK KwkJZWxvZyhFUlJPUiwgInJhbmdlIHR5cGVzIGRvIG5vdCBtYXRjaCIpOworCisJdHlwY2Fj aGUgPSByYW5nZV9nZXRfdHlwY2FjaGUoZmNpbmZvLCBSYW5nZVR5cGVHZXRPaWQocjEpKTsK KworCXJhbmdlX3dpdGhvdXRfcG9ydGlvbl9pbnRlcm5hbCh0eXBjYWNoZSwgcjEsIHIyLCBy cywgJm4pOworCisJaWYgKG4gPT0gMCkKKwkJUEdfUkVUVVJOX0FSUkFZVFlQRV9QKGNvbnN0 cnVjdF9lbXB0eV9hcnJheSh0eXBjYWNoZS0+dHlwZV9pZCkpOworCWVsc2UKKwl7CisJCURh dHVtCQl4c1syXTsKKwkJaW50CQkJaTsKKwkJQXJyYXlUeXBlCSpyZXQ7CisKKwkJZm9yIChp ID0gMDsgaSA8IG47IGkrKykKKwkJCXhzW2ldID0gUmFuZ2VUeXBlUEdldERhdHVtKHJzW2ld KTsKKworCQlyZXQgPSBjb25zdHJ1Y3RfYXJyYXkoeHMsIG4sIHR5cGNhY2hlLT50eXBlX2lk LCB0eXBjYWNoZS0+dHlwbGVuLCB0eXBjYWNoZS0+dHlwYnl2YWwsIHR5cGNhY2hlLT50eXBh bGlnbik7CisJCVBHX1JFVFVSTl9BUlJBWVRZUEVfUChyZXQpOworCX0KK30KKworLyoKKyAq IHJhbmdlX3dpdGhvdXRfcG9ydGlvbl9pbnRlcm5hbCAtIFNldHMgb3V0cHV0cyBhbmQgb3V0 cHV0biB0byB0aGUgcmFuZ2VzCisgKiByZW1haW5pbmcgYW5kIHRoZWlyIGNvdW50IChyZXNw ZWN0aXZlbHkpIGFmdGVyIHN1YnRyYWN0aW5nIHIyIGZyb20gcjEuCisgKiBUaGUgYXJyYXkg c2hvdWxkIG5ldmVyIGNvbnRhaW4gZW1wdHkgcmFuZ2VzLgorICogVGhlIG91dHB1dHMgd2ls bCBiZSBvcmRlcmVkLiBXZSBleHBlY3QgdGhhdCBvdXRwdXRzIGlzIGFuIGFycmF5IG9mCisg KiBSYW5nZVR5cGUgcG9pbnRlcnMsIGFscmVhZHkgYWxsb2NhdGVkIHdpdGggdHdvIHNsb3Rz LgorICovCit2b2lkCityYW5nZV93aXRob3V0X3BvcnRpb25faW50ZXJuYWwoVHlwZUNhY2hl RW50cnkgKnR5cGNhY2hlLCBSYW5nZVR5cGUgKnIxLAorCQkJCQkJCSAgIFJhbmdlVHlwZSAq cjIsIFJhbmdlVHlwZSAqKm91dHB1dHMsIGludCAqb3V0cHV0bikKK3sKKwlpbnQJCQljbXBf bDFsMiwKKwkJCQljbXBfbDF1MiwKKwkJCQljbXBfdTFsMiwKKwkJCQljbXBfdTF1MjsKKwlS YW5nZUJvdW5kCWxvd2VyMSwKKwkJCQlsb3dlcjI7CisJUmFuZ2VCb3VuZAl1cHBlcjEsCisJ CQkJdXBwZXIyOworCWJvb2wJCWVtcHR5MSwKKwkJCQllbXB0eTI7CisKKwlyYW5nZV9kZXNl cmlhbGl6ZSh0eXBjYWNoZSwgcjEsICZsb3dlcjEsICZ1cHBlcjEsICZlbXB0eTEpOworCXJh bmdlX2Rlc2VyaWFsaXplKHR5cGNhY2hlLCByMiwgJmxvd2VyMiwgJnVwcGVyMiwgJmVtcHR5 Mik7CisKKwlpZiAoZW1wdHkxKQorCXsKKwkJLyogaWYgcjEgaXMgZW1wdHkgdGhlbiByMSAt IHIyIGlzIGVtcHR5LCBzbyByZXR1cm4gemVybyByZXN1bHRzICovCisJCSpvdXRwdXRuID0g MDsKKwkJcmV0dXJuOworCX0KKwllbHNlIGlmIChlbXB0eTIpCisJeworCQkvKiByMiBpcyBl bXB0eSBzbyB0aGUgcmVzdWx0IGlzIGp1c3QgcjEgKHdoaWNoIHdlIGtub3cgaXMgbm90IGVt cHR5KSAqLworCQlvdXRwdXRzWzBdID0gcjE7CisJCSpvdXRwdXRuID0gMTsKKwkJcmV0dXJu OworCX0KKworCS8qCisJICogVXNlIHRoZSBzYW1lIGxvZ2ljIGFzIHJhbmdlX21pbnVzX2lu dGVybmFsLAorCSAqIGJ1dCBzdXBwb3J0IHRoZSBzcGxpdCBjYXNlCisJICovCisJY21wX2wx bDIgPSByYW5nZV9jbXBfYm91bmRzKHR5cGNhY2hlLCAmbG93ZXIxLCAmbG93ZXIyKTsKKwlj bXBfbDF1MiA9IHJhbmdlX2NtcF9ib3VuZHModHlwY2FjaGUsICZsb3dlcjEsICZ1cHBlcjIp OworCWNtcF91MWwyID0gcmFuZ2VfY21wX2JvdW5kcyh0eXBjYWNoZSwgJnVwcGVyMSwgJmxv d2VyMik7CisJY21wX3UxdTIgPSByYW5nZV9jbXBfYm91bmRzKHR5cGNhY2hlLCAmdXBwZXIx LCAmdXBwZXIyKTsKKworCWlmIChjbXBfbDFsMiA8IDAgJiYgY21wX3UxdTIgPiAwKQorCXsK KwkJbG93ZXIyLmluY2x1c2l2ZSA9ICFsb3dlcjIuaW5jbHVzaXZlOworCQlsb3dlcjIubG93 ZXIgPSBmYWxzZTsJLyogaXQgd2lsbCBiZWNvbWUgdGhlIHVwcGVyIGJvdW5kICovCisJCW91 dHB1dHNbMF0gPSBtYWtlX3JhbmdlKHR5cGNhY2hlLCAmbG93ZXIxLCAmbG93ZXIyLCBmYWxz ZSwgTlVMTCk7CisKKwkJdXBwZXIyLmluY2x1c2l2ZSA9ICF1cHBlcjIuaW5jbHVzaXZlOwor CQl1cHBlcjIubG93ZXIgPSB0cnVlOwkvKiBpdCB3aWxsIGJlY29tZSB0aGUgbG93ZXIgYm91 bmQgKi8KKwkJb3V0cHV0c1sxXSA9IG1ha2VfcmFuZ2UodHlwY2FjaGUsICZ1cHBlcjIsICZ1 cHBlcjEsIGZhbHNlLCBOVUxMKTsKKworCQkqb3V0cHV0biA9IDI7CisJfQorCWVsc2UgaWYg KGNtcF9sMXUyID4gMCB8fCBjbXBfdTFsMiA8IDApCisJeworCQlvdXRwdXRzWzBdID0gcjE7 CisJCSpvdXRwdXRuID0gMTsKKwl9CisJZWxzZSBpZiAoY21wX2wxbDIgPj0gMCAmJiBjbXBf dTF1MiA8PSAwKQorCXsKKwkJKm91dHB1dG4gPSAwOworCX0KKwllbHNlIGlmIChjbXBfbDFs MiA8PSAwICYmIGNtcF91MWwyID49IDAgJiYgY21wX3UxdTIgPD0gMCkKKwl7CisJCWxvd2Vy Mi5pbmNsdXNpdmUgPSAhbG93ZXIyLmluY2x1c2l2ZTsKKwkJbG93ZXIyLmxvd2VyID0gZmFs c2U7CS8qIGl0IHdpbGwgYmVjb21lIHRoZSB1cHBlciBib3VuZCAqLworCQlvdXRwdXRzWzBd ID0gbWFrZV9yYW5nZSh0eXBjYWNoZSwgJmxvd2VyMSwgJmxvd2VyMiwgZmFsc2UsIE5VTEwp OworCQkqb3V0cHV0biA9IDE7CisJfQorCWVsc2UgaWYgKGNtcF9sMWwyID49IDAgJiYgY21w X3UxdTIgPj0gMCAmJiBjbXBfbDF1MiA8PSAwKQorCXsKKwkJdXBwZXIyLmluY2x1c2l2ZSA9 ICF1cHBlcjIuaW5jbHVzaXZlOworCQl1cHBlcjIubG93ZXIgPSB0cnVlOwkvKiBpdCB3aWxs IGJlY29tZSB0aGUgbG93ZXIgYm91bmQgKi8KKwkJb3V0cHV0c1swXSA9IG1ha2VfcmFuZ2Uo dHlwY2FjaGUsICZ1cHBlcjIsICZ1cHBlcjEsIGZhbHNlLCBOVUxMKTsKKwkJKm91dHB1dG4g PSAxOworCX0KKwllbHNlCisJeworCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBjYXNlIGlu IHJhbmdlX3dpdGhvdXRfcG9ydGlvbiIpOworCX0KK30KKwogLyogcmFuZ2UgLT4gcmFuZ2Ug YWdncmVnYXRlIGZ1bmN0aW9ucyAqLwogCiBEYXR1bQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19vcGVyYXRvci5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29w ZXJhdG9yLmRhdAppbmRleCAwZTc1MTFkZGUxYy4uZDIyNmM4NGFhYjMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BlcmF0b3IuZGF0CisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfb3BlcmF0b3IuZGF0CkBAIC0zNDU3LDUgKzM0NTcsMTEgQEAKICAgb3By cmVzdWx0ID0+ICdib29sJywgb3ByY29tID0+ICc8PChhbnltdWx0aXJhbmdlLGFueW11bHRp cmFuZ2UpJywKICAgb3ByY29kZSA9PiAnbXVsdGlyYW5nZV9hZnRlcl9tdWx0aXJhbmdlJywg b3BycmVzdCA9PiAnbXVsdGlyYW5nZXNlbCcsCiAgIG9wcmpvaW4gPT4gJ3NjYWxhcmd0am9p bnNlbCcgfSwKK3sgb2lkID0+ICc4NDA5JywgZGVzY3IgPT4gJ3JhbmdlIHdpdGhvdXQgcG9y dGlvbicsCisgIG9wcm5hbWUgPT4gJ0AtJywgb3BybGVmdCA9PiAnYW55cmFuZ2UnLCBvcHJy aWdodCA9PiAnYW55cmFuZ2UnLAorICBvcHJyZXN1bHQgPT4gJ2FueWFycmF5Jywgb3ByY29k ZSA9PiAncmFuZ2Vfd2l0aG91dF9wb3J0aW9uJyB9LAoreyBvaWQgPT4gJzg0MDcnLCBkZXNj ciA9PiAnbXVsdGlyYW5nZSB3aXRob3V0IHBvcnRpb24nLAorICBvcHJuYW1lID0+ICdALScs IG9wcmxlZnQgPT4gJ2FueW11bHRpcmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55bXVsdGlyYW5n ZScsCisgIG9wcnJlc3VsdCA9PiAnYW55YXJyYXknLCBvcHJjb2RlID0+ICdtdWx0aXJhbmdl X3dpdGhvdXRfcG9ydGlvbicgfSwKIAogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5k ZXggMTQyMDA0NjBhYmIuLjhmOTVlMDgyMTcwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKQEAgLTEwNTcwLDYgKzEwNTcwLDkgQEAKIHsgb2lkID0+ICczODY5JywKICAgcHJvbmFt ZSA9PiAncmFuZ2VfbWludXMnLCBwcm9yZXR0eXBlID0+ICdhbnlyYW5nZScsCiAgIHByb2Fy Z3R5cGVzID0+ICdhbnlyYW5nZSBhbnlyYW5nZScsIHByb3NyYyA9PiAncmFuZ2VfbWludXMn IH0sCit7IG9pZCA9PiAnODQwOCcsCisgIHByb25hbWUgPT4gJ3JhbmdlX3dpdGhvdXRfcG9y dGlvbicsIHByb3JldHR5cGUgPT4gJ2FueWFycmF5JywKKyAgcHJvYXJndHlwZXMgPT4gJ2Fu eXJhbmdlIGFueXJhbmdlJywgcHJvc3JjID0+ICdyYW5nZV93aXRob3V0X3BvcnRpb24nIH0s CiB7IG9pZCA9PiAnMzg3MCcsIGRlc2NyID0+ICdsZXNzLWVxdWFsLWdyZWF0ZXInLAogICBw cm9uYW1lID0+ICdyYW5nZV9jbXAnLCBwcm9yZXR0eXBlID0+ICdpbnQ0JywKICAgcHJvYXJn dHlwZXMgPT4gJ2FueXJhbmdlIGFueXJhbmdlJywgcHJvc3JjID0+ICdyYW5nZV9jbXAnIH0s CkBAIC0xMDg1Nyw2ICsxMDg2MCw5IEBACiB7IG9pZCA9PiAnNDI3MScsCiAgIHByb25hbWUg PT4gJ211bHRpcmFuZ2VfbWludXMnLCBwcm9yZXR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywK ICAgcHJvYXJndHlwZXMgPT4gJ2FueW11bHRpcmFuZ2UgYW55bXVsdGlyYW5nZScsIHByb3Ny YyA9PiAnbXVsdGlyYW5nZV9taW51cycgfSwKK3sgb2lkID0+ICc4NDA2JywKKyAgcHJvbmFt ZSA9PiAnbXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24nLCBwcm9yZXR0eXBlID0+ICdhbnlh cnJheScsCisgIHByb2FyZ3R5cGVzID0+ICdhbnltdWx0aXJhbmdlIGFueW11bHRpcmFuZ2Un LCBwcm9zcmMgPT4gJ211bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uJyB9LAogeyBvaWQgPT4g JzQyNzInLAogICBwcm9uYW1lID0+ICdtdWx0aXJhbmdlX2ludGVyc2VjdCcsIHByb3JldHR5 cGUgPT4gJ2FueW11bHRpcmFuZ2UnLAogICBwcm9hcmd0eXBlcyA9PiAnYW55bXVsdGlyYW5n ZSBhbnltdWx0aXJhbmdlJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3Jhbmdl dHlwZXMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JhbmdldHlwZXMuaAppbmRleCAyYjU3NDg3 M2NlZi4uZTFiMjU2YjY1ZjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3Jhbmdl dHlwZXMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgKQEAgLTE2NCw1 ICsxNjQsNyBAQCBleHRlcm4gUmFuZ2VUeXBlICptYWtlX2VtcHR5X3JhbmdlKFR5cGVDYWNo ZUVudHJ5ICp0eXBjYWNoZSk7CiBleHRlcm4gYm9vbCByYW5nZV9zcGxpdF9pbnRlcm5hbChU eXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsIGNvbnN0IFJhbmdlVHlwZSAqcjEsCiAJCQkJCQkJ CSBjb25zdCBSYW5nZVR5cGUgKnIyLCBSYW5nZVR5cGUgKipvdXRwdXQxLAogCQkJCQkJCQkg UmFuZ2VUeXBlICoqb3V0cHV0Mik7CitleHRlcm4gdm9pZCByYW5nZV93aXRob3V0X3BvcnRp b25faW50ZXJuYWwoVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlLCBSYW5nZVR5cGUgKnIxLAor CQkJCQkJCQkJUmFuZ2VUeXBlICpyMiwgUmFuZ2VUeXBlICoqb3V0cHV0cywgaW50ICpvdXRw dXRuKTsKIAogI2VuZGlmCQkJCQkJCS8qIFJBTkdFVFlQRVNfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tdWx0aXJhbmdldHlwZXMub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9tdWx0aXJhbmdldHlwZXMub3V0CmluZGV4IDk4MDg1ODc1 MzJjLi5hNDFhODY1Y2MxZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9tdWx0aXJhbmdldHlwZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv bXVsdGlyYW5nZXR5cGVzLm91dApAQCAtMjIwMCw2ICsyMjAwLDEyNyBAQCBTRUxFQ1QgbnVt bXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSAtIG51bW11bHRpcmFu Z2UobnVtcmFuZ2UoLTIsMAogIHtbMSwyKSxbNCw1KX0KICgxIHJvdykKIAorLS0gd2l0aG91 dF9wb3J0aW9uCitTRUxFQ1QgbnVtbXVsdGlyYW5nZSgpIEAtIG51bW11bHRpcmFuZ2UoKTsK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVs dGlyYW5nZSgpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSk7CisgP2NvbHVtbj8g CistLS0tLS0tLS0tCisge30KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVt cmFuZ2UoMSwyKSkgQC0gbnVtbXVsdGlyYW5nZSgpOworICA/Y29sdW1uPyAgIAorLS0tLS0t LS0tLS0tLQorIHsie1sxLDIpfSJ9CisoMSByb3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdl KG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDMsNCkpIEAtIG51bW11bHRpcmFuZ2UoKTsKKyAg ICAgP2NvbHVtbj8gICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7IntbMSwyKSxbMyw0 KX0ifQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpKSBA LSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpOworID9jb2x1bW4/IAorLS0tLS0tLS0t LQorIHt9CisoMSByb3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikp IEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMiw0KSk7CisgID9jb2x1bW4/ICAgCistLS0t LS0tLS0tLS0tCisgeyJ7WzEsMil9In0KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRpcmFu Z2UobnVtcmFuZ2UoMSwyKSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgzLDQpKTsKKyAg P2NvbHVtbj8gICAKKy0tLS0tLS0tLS0tLS0KKyB7IntbMSwyKX0ifQorKDEgcm93KQorCitT RUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDQpKSBALSBudW1tdWx0aXJhbmdlKG51 bXJhbmdlKDEsMikpOworICA/Y29sdW1uPyAgIAorLS0tLS0tLS0tLS0tLQorIHsie1syLDQp fSJ9CisoMSByb3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsNCkpIEAt IG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMiwzKSk7CisgICAgID9jb2x1bW4/ICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ7WzEsMiksWzMsNCl9In0KKygxIHJvdykKKworU0VM RUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw0KSkgQC0gbnVtbXVsdGlyYW5nZShudW1y YW5nZSgwLDgpKTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitT RUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDQpKSBALSBudW1tdWx0aXJhbmdlKG51 bXJhbmdlKDAsMikpOworICA/Y29sdW1uPyAgIAorLS0tLS0tLS0tLS0tLQorIHsie1syLDQp fSJ9CisoMSByb3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsOCkpIEAt IG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMCwyKSwgbnVtcmFuZ2UoMyw0KSk7CisgICAgID9j b2x1bW4/ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ7WzIsMyksWzQsOCl9In0K KygxIHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw4KSkgQC0gbnVt bXVsdGlyYW5nZShudW1yYW5nZSgyLDMpLCBudW1yYW5nZSg1LG51bGwpKTsKKyAgICAgP2Nv bHVtbj8gICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7IntbMSwyKSxbMyw1KX0ifQor KDEgcm93KQorCitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5n ZSg0LDUpKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKC0yLDApKTsKKyAgICAgP2NvbHVt bj8gICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7IntbMSwyKSxbNCw1KX0ifQorKDEg cm93KQorCitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0 LDUpKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDIsNCkpOworICAgICA/Y29sdW1uPyAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsie1sxLDIpLFs0LDUpfSJ9CisoMSByb3cp CisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkp IEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMyw1KSk7CisgID9jb2x1bW4/ICAgCistLS0t LS0tLS0tLS0tCisgeyJ7WzEsMil9In0KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRpcmFu Z2UobnVtcmFuZ2UoMSwyKSwgbnVtcmFuZ2UoNCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1y YW5nZSgwLDkpKTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitT RUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDMpLCBudW1yYW5nZSg0LDUpKSBALSBu dW1tdWx0aXJhbmdlKG51bXJhbmdlKDIsOSkpOworICA/Y29sdW1uPyAgIAorLS0tLS0tLS0t LS0tLQorIHsie1sxLDIpfSJ9CisoMSByb3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51 bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2Uo OCw5KSk7CisgICAgID9jb2x1bW4/ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ7 WzEsMiksWzQsNSl9In0KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFu Z2UoMSwyKSwgbnVtcmFuZ2UoNCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgtMiww KSwgbnVtcmFuZ2UoOCw5KSk7CisgICAgID9jb2x1bW4/ICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tCisgeyJ7WzEsMiksWzQsNSl9In0KKygxIHJvdykKKwogLS0gaW50ZXJzZWN0aW9u CiBTRUxFQ1QgbnVtbXVsdGlyYW5nZSgpICogbnVtbXVsdGlyYW5nZSgpOwogID9jb2x1bW4/ IApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yYW5nZXR5cGVzLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcmFuZ2V0eXBlcy5vdXQKaW5kZXggMDdk NTYyMWVmODcuLmY1MzZlOGY3YWFhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3JhbmdldHlwZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cmFuZ2V0eXBlcy5vdXQKQEAgLTQ4MSw2ICs0ODEsNjAgQEAgc2VsZWN0IHJhbmdlX21pbnVz KG51bXJhbmdlKDEwLjEsMTIuMiwnW10nKSwgbnVtcmFuZ2UoMC4wLDEyMC4yLCcoXScpKTsK ICBlbXB0eQogKDEgcm93KQogCitzZWxlY3QgJ2VtcHR5Jzo6bnVtcmFuZ2UgQC0gbnVtcmFu Z2UoMi4wLCAzLjApOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisK K3NlbGVjdCBudW1yYW5nZSgxLjEsIDIuMikgQC0gJ2VtcHR5Jzo6bnVtcmFuZ2U7CisgICA/ Y29sdW1uPyAgICAKKy0tLS0tLS0tLS0tLS0tLQorIHsiWzEuMSwyLjIpIn0KKygxIHJvdykK Kworc2VsZWN0IG51bXJhbmdlKDEuMSwgMi4yKSBALSBudW1yYW5nZSgyLjAsIDMuMCk7Cisg ICA/Y29sdW1uPyAgICAKKy0tLS0tLS0tLS0tLS0tLQorIHsiWzEuMSwyLjApIn0KKygxIHJv dykKKworc2VsZWN0IG51bXJhbmdlKDEuMSwgMi4yKSBALSBudW1yYW5nZSgyLjIsIDMuMCk7 CisgICA/Y29sdW1uPyAgICAKKy0tLS0tLS0tLS0tLS0tLQorIHsiWzEuMSwyLjIpIn0KKygx IHJvdykKKworc2VsZWN0IG51bXJhbmdlKDEuMSwgMi4yLCdbXScpIEAtIG51bXJhbmdlKDIu MCwgMy4wKTsKKyAgID9jb2x1bW4/ICAgIAorLS0tLS0tLS0tLS0tLS0tCisgeyJbMS4xLDIu MCkifQorKDEgcm93KQorCitzZWxlY3QgbnVtcmFuZ2UoMS4wLCAzLjApIEAtIG51bXJhbmdl KDEuNSwgMi4wKTsKKyAgICAgICAgID9jb2x1bW4/ICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgeyJbMS4wLDEuNSkiLCJbMi4wLDMuMCkifQorKDEgcm93KQor CitzZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bXJhbmdlKDEwLjEsMTIuMiwnW10n KSwgbnVtcmFuZ2UoMTEwLjAsMTIwLjIsJyhdJykpOworIHJhbmdlX3dpdGhvdXRfcG9ydGlv biAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJbMTAuMSwxMi4yXSJ9CisoMSByb3cp CisKK3NlbGVjdCByYW5nZV93aXRob3V0X3BvcnRpb24obnVtcmFuZ2UoMTAuMSwxMi4yLCdb XScpLCBudW1yYW5nZSgwLjAsMTIwLjIsJyhdJykpOworIHJhbmdlX3dpdGhvdXRfcG9ydGlv biAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge30KKygxIHJvdykKKworc2VsZWN0IHJh bmdlX3dpdGhvdXRfcG9ydGlvbihudW1yYW5nZSgxLjAsMy4wLCdbXScpLCBudW1yYW5nZSgx LjUsMi4wLCcoXScpKTsKKyAgIHJhbmdlX3dpdGhvdXRfcG9ydGlvbiAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgeyJbMS4wLDEuNV0iLCIoMi4wLDMuMF0ifQorKDEgcm93 KQorCiBzZWxlY3QgbnVtcmFuZ2UoNC41LCA1LjUsICdbXScpICYmIG51bXJhbmdlKDUuNSwg Ni41KTsKICA/Y29sdW1uPyAKIC0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL211bHRpcmFuZ2V0eXBlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9t dWx0aXJhbmdldHlwZXMuc3FsCmluZGV4IGNhZGYzMTIwMzFmLi5hYTZmMjBkOGFkYiAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbXVsdGlyYW5nZXR5cGVzLnNxbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9tdWx0aXJhbmdldHlwZXMuc3FsCkBAIC00MTQsNiAr NDE0LDI4IEBAIFNFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMyksIG51bXJhbmdl KDQsNSkpIC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgyLDkpCiBTRUxFQ1QgbnVtbXVsdGly YW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSAtIG51bW11bHRpcmFuZ2UobnVt cmFuZ2UoOCw5KSk7CiBTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1y YW5nZSg0LDUpKSAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoLTIsMCksIG51bXJhbmdlKDgs OSkpOwogCistLSB3aXRob3V0X3BvcnRpb24KK1NFTEVDVCBudW1tdWx0aXJhbmdlKCkgQC0g bnVtbXVsdGlyYW5nZSgpOworU0VMRUNUIG51bW11bHRpcmFuZ2UoKSBALSBudW1tdWx0aXJh bmdlKG51bXJhbmdlKDEsMikpOworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwy KSkgQC0gbnVtbXVsdGlyYW5nZSgpOworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2Uo MSwyKSwgbnVtcmFuZ2UoMyw0KSkgQC0gbnVtbXVsdGlyYW5nZSgpOworU0VMRUNUIG51bW11 bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIp KTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpIEAtIG51bW11bHRpcmFu Z2UobnVtcmFuZ2UoMiw0KSk7CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIp KSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDMsNCkpOworU0VMRUNUIG51bW11bHRpcmFu Z2UobnVtcmFuZ2UoMSw0KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpKTsKK1NF TEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsNCkpIEAtIG51bW11bHRpcmFuZ2UobnVt cmFuZ2UoMiwzKSk7CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDQpKSBALSBu dW1tdWx0aXJhbmdlKG51bXJhbmdlKDAsOCkpOworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVt cmFuZ2UoMSw0KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgwLDIpKTsKK1NFTEVDVCBu dW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsOCkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2Uo MCwyKSwgbnVtcmFuZ2UoMyw0KSk7CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgx LDgpKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDIsMyksIG51bXJhbmdlKDUsbnVsbCkp OworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSwgbnVtcmFuZ2UoNCw1KSkg QC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgtMiwwKSk7CitTRUxFQ1QgbnVtbXVsdGlyYW5n ZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBALSBudW1tdWx0aXJhbmdlKG51bXJh bmdlKDIsNCkpOworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSwgbnVtcmFu Z2UoNCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgzLDUpKTsKK1NFTEVDVCBudW1t dWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpIEAtIG51bW11bHRpcmFu Z2UobnVtcmFuZ2UoMCw5KSk7CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDMp LCBudW1yYW5nZSg0LDUpKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDIsOSkpOworU0VM RUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSwgbnVtcmFuZ2UoNCw1KSkgQC0gbnVt bXVsdGlyYW5nZShudW1yYW5nZSg4LDkpKTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJh bmdlKDEsMiksIG51bXJhbmdlKDQsNSkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoLTIs MCksIG51bXJhbmdlKDgsOSkpOworCiAtLSBpbnRlcnNlY3Rpb24KIFNFTEVDVCBudW1tdWx0 aXJhbmdlKCkgKiBudW1tdWx0aXJhbmdlKCk7CiBTRUxFQ1QgbnVtbXVsdGlyYW5nZSgpICog bnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3JhbmdldHlwZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcmFuZ2V0 eXBlcy5zcWwKaW5kZXggYzVkYmUwYzA0ZjEuLjY0OTM4YWQwODJhIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9yYW5nZXR5cGVzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9yYW5nZXR5cGVzLnNxbApAQCAtMTA3LDYgKzEwNywxNiBAQCBzZWxlY3QgbnVt cmFuZ2UoMS4xLCAyLjIsJ1tdJykgLSBudW1yYW5nZSgyLjAsIDMuMCk7CiBzZWxlY3QgcmFu Z2VfbWludXMobnVtcmFuZ2UoMTAuMSwxMi4yLCdbXScpLCBudW1yYW5nZSgxMTAuMCwxMjAu MiwnKF0nKSk7CiBzZWxlY3QgcmFuZ2VfbWludXMobnVtcmFuZ2UoMTAuMSwxMi4yLCdbXScp LCBudW1yYW5nZSgwLjAsMTIwLjIsJyhdJykpOwogCitzZWxlY3QgJ2VtcHR5Jzo6bnVtcmFu Z2UgQC0gbnVtcmFuZ2UoMi4wLCAzLjApOworc2VsZWN0IG51bXJhbmdlKDEuMSwgMi4yKSBA LSAnZW1wdHknOjpudW1yYW5nZTsKK3NlbGVjdCBudW1yYW5nZSgxLjEsIDIuMikgQC0gbnVt cmFuZ2UoMi4wLCAzLjApOworc2VsZWN0IG51bXJhbmdlKDEuMSwgMi4yKSBALSBudW1yYW5n ZSgyLjIsIDMuMCk7CitzZWxlY3QgbnVtcmFuZ2UoMS4xLCAyLjIsJ1tdJykgQC0gbnVtcmFu Z2UoMi4wLCAzLjApOworc2VsZWN0IG51bXJhbmdlKDEuMCwgMy4wKSBALSBudW1yYW5nZSgx LjUsIDIuMCk7CitzZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bXJhbmdlKDEwLjEs MTIuMiwnW10nKSwgbnVtcmFuZ2UoMTEwLjAsMTIwLjIsJyhdJykpOworc2VsZWN0IHJhbmdl X3dpdGhvdXRfcG9ydGlvbihudW1yYW5nZSgxMC4xLDEyLjIsJ1tdJyksIG51bXJhbmdlKDAu MCwxMjAuMiwnKF0nKSk7CitzZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bXJhbmdl KDEuMCwzLjAsJ1tdJyksIG51bXJhbmdlKDEuNSwyLjAsJyhdJykpOworCiBzZWxlY3QgbnVt cmFuZ2UoNC41LCA1LjUsICdbXScpICYmIG51bXJhbmdlKDUuNSwgNi41KTsKIHNlbGVjdCBu dW1yYW5nZSgxLjAsIDIuMCkgPDwgbnVtcmFuZ2UoMy4wLCA0LjApOwogc2VsZWN0IG51bXJh bmdlKDEuMCwgMy4wLCdbXScpIDw8IG51bXJhbmdlKDMuMCwgNC4wLCdbXScpOwotLSAKMi40 Mi4wCgo= --------------5mQnkvShJhECliiRK4zn4H0Z Content-Type: text/x-patch; charset=UTF-8; name="v23-0006-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v23-0006-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 RnJvbSAxMzYyMTIyMmY3NjdhNGE0YmQwNDJkNDYwMzQxNjg1ODdjYTM4N2YxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjUgSnVuIDIwMjEgMTg6NTQ6MzUgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyMyA2LzhdIEFkZCBVUERBVEUvREVMRVRFIEZPUiBQT1JU SU9OIE9GCgotIEFkZGVkIGJpc29uIHN1cHBvcnQgZm9yIEZPUiBQT1JUSU9OIE9GIHN5bnRh eC4gVGhlIGJvdW5kcyBtdXN0IGJlCiAgY29uc3RhbnQsIHNvIHdlIGZvcmJpZCBjb2x1bW4g cmVmZXJlbmNlcywgc3VicXVlcmllcywgZXRjLiBCdXQgd2UKICBwZXJtaXQgdGhlIG1hZ2lj IFVOQk9VTkRFRCBrZXl3b3JkIGFzIHRoZSBGUk9NIG9yIHRoZSBUTyAob3IgYm90aCkKICB0 byBwZXJmb3JtIGFuIHVuYm91bmRlZCB1cGRhdGUvZGVsZXRlLiBXZSBhbHNvIGFjY2VwdCBm dW5jdGlvbnMgbGlrZQogIE5PVygpLgotIEFkZGVkIGxvZ2ljIHRvIGV4ZWN1dG9yIHRvIGlu c2VydCBuZXcgcm93cyBmb3IgdGhlICJsZWZ0b3ZlciIgcGFydCBvZgogIGEgcmVjb3JkIHRv dWNoZWQgYnkgYSBGT1IgUE9SVElPTiBPRiBxdWVyeS4KLSBBZGRlZCB0Z190ZW1wb3JhbCBk ZXNjcmlwdG9yIHRvIHRoZSBUcmlnZ2VyRGF0YSBzdHJ1Y3QgdGhhdCB3ZSBwYXNzIHRvCiAg dHJpZ2dlciBmdW5jdGlvbnMuIE91ciB0cmlnZ2VycyB1c2UgdGhpcyB0byBsZWFybiB3aGF0 IGJvdW5kcyB3ZXJlCiAgZ2l2ZW4gaW4gdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZS4KLSBE b2N1bWVudGVkIEZPUiBQT1JUSU9OIE9GLgotIERvY3VtZW50ZWQgdGdfdGVtcG9yYWwgc3Ry dWN0LgotIEFkZGVkIHRlc3RzLgotLS0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9z dGdyZXNfZmR3Lm91dCAgICB8ICAgNSArCiBjb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9z dGdyZXNfZmR3LnNxbCAgICAgfCAgIDQgKwogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwg ICAgICAgICAgICAgICAgICAgIHwgIDE5ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5z Z21sICAgICAgICAgICAgICAgICAgfCAgNjkgKysrCiBkb2Mvc3JjL3NnbWwvcmVmL3VwZGF0 ZS5zZ21sICAgICAgICAgICAgICAgICAgfCAgODcgKysrCiBkb2Mvc3JjL3NnbWwvdHJpZ2dl ci5zZ21sICAgICAgICAgICAgICAgICAgICAgfCAgNjAgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R2YWxpZGF0ZS5jICAgICAgICB8ICAzOSArLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL3RyaWdnZXIuYyAgICAgICAgICAgICAgICB8ICA0OSArKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8IDI2MCArKysrKysrLQogc3Jj L2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgIDI0ICsKIHNy Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyAgICAgICB8ICAgOCArLQog c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgICAxICsK IHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgICAgICAgICB8ICAgNCAr LQogc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyAgICAgICAgICAgICAgICAgIHwgMjA5 ICsrKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAg ICB8ICA1NiArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jICAgICAgICAgICAg ICAgIHwgIDEwICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAg ICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAgICAg ICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jICAgICAg ICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5j ICAgICAgICAgIHwgIDQwICsrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMu YyAgICAgICAgICAgfCAgNzQgKysrCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2Fj aGUuYyAgICAgICAgICAgfCAgNTMgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9zdHJhdG51bS5o ICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbW9w LmRhdCAgICAgICAgICAgICAgIHwgIDE1ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1v cC5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy90cmln Z2VyLmggICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmggICAgICAgICAgICAgICAgIHwgIDI2ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaCAgICAgICAgICAgICAgICB8ICA0NiArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3Bs YW5ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9w cmltbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgMjYgKwogc3JjL2luY2x1ZGUvb3B0aW1p emVyL3BhdGhub2RlLmggICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9wYXJz ZXIvYW5hbHl6ZS5oICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL3Bh cnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9w YXJzZXIvcGFyc2Vfbm9kZS5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUv dXRpbHMvbHN5c2NhY2hlLmggICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0ICB8IDU2MiArKysrKysrKysrKysr KysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQgICAgICB8 ICAgNiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dCAgICAg IHwgIDE4ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91 dCB8ICAzMiArCiAuLi4vcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCAg ICAgfCAxNDQgKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAg ICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yu c3FsICAgICAgIHwgNDIzICsrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29w cl9zYW5pdHkuc3FsICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9w cml2aWxlZ2VzLnNxbCAgICAgICAgICAgfCAgMTggKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv dXBkYXRhYmxlX3ZpZXdzLnNxbCAgICAgIHwgIDE0ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3dpdGhvdXRfb3ZlcmxhcHMuc3FsICAgICB8ICA5MyArKy0KIDUwIGZpbGVzIGNoYW5nZWQs IDI0NjAgaW5zZXJ0aW9ucygrKSwgNzEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwK CmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19m ZHcub3V0IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91 dAppbmRleCBkODNmNmFlOGNiYy4uMDA1OGY2YzdhNmMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9w b3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtNjI5Myw2ICs2Mjkz LDExIEBAIERFTEVURSBGUk9NIGZ0MgogCiBERUxFVEUgRlJPTSBmdDIgV0hFUkUgZnQyLmMx ID4gMjAwMDsKIEFMVEVSIFNFUlZFUiBsb29wYmFjayBPUFRJT05TIChBREQgZXh0ZW5zaW9u cyAncG9zdGdyZXNfZmR3Jyk7CistLSBUZXN0IFVQREFURS9ERUxFVEUgd2l0aCBGT1IgUE9S VElPTiBPRgorVVBEQVRFIGZ0MiBGT1IgUE9SVElPTiBPRiBjMyBGUk9NICdhJyBUTyAnYicg U0VUIGMxID0gMTsKK0VSUk9SOiAgZm9yZWlnbiB0YWJsZXMgZG9uJ3Qgc3VwcG9ydCBGT1Ig UE9SVElPTiBPRgorREVMRVRFIEZST00gZnQyIEZPUiBQT1JUSU9OIE9GIGMzIEZST00gJ2En IFRPICdiJzsKK0VSUk9SOiAgZm9yZWlnbiB0YWJsZXMgZG9uJ3Qgc3VwcG9ydCBGT1IgUE9S VElPTiBPRgogLS0gVGVzdCB0aGF0IHRyaWdnZXIgb24gcmVtb3RlIHRhYmxlIHdvcmtzIGFz IGV4cGVjdGVkCiBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiAiUyAxIi5GX0JSVFJJRygp IFJFVFVSTlMgdHJpZ2dlciBBUyAkJAogQkVHSU4KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9z dGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcv c3FsL3Bvc3RncmVzX2Zkdy5zcWwKaW5kZXggOTBjOGZhNGI3MDUuLjZjYjZmNjc0ZmYzIDEw MDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAor KysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbApAQCAtMTU0 Niw2ICsxNTQ2LDEwIEBAIERFTEVURSBGUk9NIGZ0MgogREVMRVRFIEZST00gZnQyIFdIRVJF IGZ0Mi5jMSA+IDIwMDA7CiBBTFRFUiBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAoQUREIGV4 dGVuc2lvbnMgJ3Bvc3RncmVzX2ZkdycpOwogCistLSBUZXN0IFVQREFURS9ERUxFVEUgd2l0 aCBGT1IgUE9SVElPTiBPRgorVVBEQVRFIGZ0MiBGT1IgUE9SVElPTiBPRiBjMyBGUk9NICdh JyBUTyAnYicgU0VUIGMxID0gMTsKK0RFTEVURSBGUk9NIGZ0MiBGT1IgUE9SVElPTiBPRiBj MyBGUk9NICdhJyBUTyAnYic7CisKIC0tIFRlc3QgdGhhdCB0cmlnZ2VyIG9uIHJlbW90ZSB0 YWJsZSB3b3JrcyBhcyBleHBlY3RlZAogQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gIlMg MSIuRl9CUlRSSUcoKSBSRVRVUk5TIHRyaWdnZXIgQVMgJCQKIEJFR0lOCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sCmluZGV4IDBjYTRlZDZjMmY4Li4xYWM4Yjc0ZmUzZCAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTc1NywxMiArNzU3LDE0IEBACiAgICBUaGUgY2F0YWxvZyA8c3RydWN0bmFtZT5wZ19h bW9wPC9zdHJ1Y3RuYW1lPiBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQKICAgIG9wZXJhdG9y cyBhc3NvY2lhdGVkIHdpdGggYWNjZXNzIG1ldGhvZCBvcGVyYXRvciBmYW1pbGllcy4gIFRo ZXJlIGlzIG9uZQogICAgcm93IGZvciBlYWNoIG9wZXJhdG9yIHRoYXQgaXMgYSBtZW1iZXIg b2YgYW4gb3BlcmF0b3IgZmFtaWx5LiAgQSBmYW1pbHkKLSAgIG1lbWJlciBjYW4gYmUgZWl0 aGVyIGEgPGZpcnN0dGVybT5zZWFyY2g8L2ZpcnN0dGVybT4gb3BlcmF0b3Igb3IgYW4KLSAg IDxmaXJzdHRlcm0+b3JkZXJpbmc8L2ZpcnN0dGVybT4gb3BlcmF0b3IuICBBbiBvcGVyYXRv cgotICAgY2FuIGFwcGVhciBpbiBtb3JlIHRoYW4gb25lIGZhbWlseSwgYnV0IGNhbm5vdCBh cHBlYXIgaW4gbW9yZSB0aGFuIG9uZQotICAgc2VhcmNoIHBvc2l0aW9uIG5vciBtb3JlIHRo YW4gb25lIG9yZGVyaW5nIHBvc2l0aW9uIHdpdGhpbiBhIGZhbWlseS4KLSAgIChJdCBpcyBh bGxvd2VkLCB0aG91Z2ggdW5saWtlbHksIGZvciBhbiBvcGVyYXRvciB0byBiZSB1c2VkIGZv ciBib3RoCi0gICBzZWFyY2ggYW5kIG9yZGVyaW5nIHB1cnBvc2VzLikKKyAgIG1lbWJlciBj YW4gYmUgZWl0aGVyIGEgPGZpcnN0dGVybT5zZWFyY2g8L2ZpcnN0dGVybT4gb3BlcmF0b3Is IGFuCisgICA8Zmlyc3R0ZXJtPm9yZGVyaW5nPC9maXJzdHRlcm0+IG9wZXJhdG9yLCBvciBh CisgICA8Zmlyc3R0ZXJtPnBvcnRpb248L2ZpcnN0dGVybT4gb3BlcmF0b3IuIEEKKyAgIDxm aXJzdHRlcm0+cG9ydGlvbjwvZmlyc3R0ZXJtPiBvcGVyYXRvciBpcyB1c2VkIGZvciBjb21w dXRpbmcKKyAgIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiByZXN1bHRzLiBB biBvcGVyYXRvciBjYW4gYXBwZWFyIGluIG1vcmUKKyAgIHRoYW4gb25lIGZhbWlseSwgYnV0 IGNhbm5vdCBhcHBlYXIgaW4gbW9yZSB0aGFuIG9uZSBzZWFyY2gsIG9yZGVyaW5nLCBvcgor ICAgcG9ydGlvbiBwb3NpdGlvbiB3aXRoaW4gYSBmYW1pbHkuIChJdCBpcyBhbGxvd2VkLCB0 aG91Z2ggdW5saWtlbHksIGZvciBhbgorICAgb3BlcmF0b3IgdG8gYmUgdXNlZCBmb3IgbW9y ZSB0aGFuIG9uZSBwdXJwb3NlLikKICAgPC9wYXJhPgogCiAgIDx0YWJsZT4KQEAgLTgzMyw4 ICs4MzUsOSBAQAogICAgICAgIDxzdHJ1Y3RmaWVsZD5hbW9wcHVycG9zZTwvc3RydWN0Zmll bGQ+IDx0eXBlPmNoYXI8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAg ICAgICBPcGVyYXRvciBwdXJwb3NlLCBlaXRoZXIgPGxpdGVyYWw+czwvbGl0ZXJhbD4gZm9y IHNlYXJjaCBvcgotICAgICAgIDxsaXRlcmFsPm88L2xpdGVyYWw+IGZvciBvcmRlcmluZwor ICAgICAgIE9wZXJhdG9yIHB1cnBvc2UsIGVpdGhlciA8bGl0ZXJhbD5zPC9saXRlcmFsPiBm b3Igc2VhcmNoLAorICAgICAgIDxsaXRlcmFsPm88L2xpdGVyYWw+IGZvciBvcmRlcmluZywK KyAgICAgICBvciA8bGl0ZXJhbD5wPC9saXRlcmFsPiBmb3IgcG9ydGlvbgogICAgICAgPC9w YXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL2RlbGV0ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbAppbmRleCAx YjgxYjRlN2Q3NC4uMWM3Mjc1MzQxZWEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv ZGVsZXRlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbApAQCAtMjMs NiArMjMsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIDxzeW5vcHNpcz4KIFsgV0lU SCBbIFJFQ1VSU0lWRSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53aXRoX3F1 ZXJ5PC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCiBERUxFVEUgRlJPTSBbIE9OTFkgXSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsg KiBdIFsgWyBBUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hbGlhczwvcmVw bGFjZWFibGU+IF0KKyAgICBbIEZPUiBQT1JUSU9OIE9GIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+IEZST00gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPiBU TyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxl PiBdCiAgICAgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZnJvbV9p dGVtPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCiAgICAgWyBXSEVSRSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+Y29uZGl0aW9uPC9yZXBsYWNlYWJsZT4gfCBXSEVSRSBDVVJS RU5UIE9GIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jdXJzb3JfbmFtZTwvcmVw bGFjZWFibGU+IF0KICAgICBbIFJFVFVSTklORyAqIHwgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm91dHB1dF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gWyBbIEFTIF0gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm91dHB1dF9uYW1lPC9yZXBsYWNlYWJsZT4g XSBbLCAuLi5dIF0KQEAgLTU0LDYgKzU1LDM5IEBAIERFTEVURSBGUk9NIFsgT05MWSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4g WyAqCiAgICBjaXJjdW1zdGFuY2VzLgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBJZiB0 aGUgdGFibGUgaGFzIGEgcmFuZ2Ugb3IgbXVsdGlyYW5nZSBjb2x1bW4sCisgICB5b3UgbWF5 IHN1cHBseSBhIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBjbGF1c2UsIGFu ZCB5b3VyIGRlbGV0ZSB3aWxsCisgICBvbmx5IGFmZmVjdCByb3dzIHRoYXQgb3ZlcmxhcCB0 aGUgZ2l2ZW4gaW50ZXJ2YWwuIEZ1cnRoZXJtb3JlLCBpZiBhIHJvdydzIHNwYW4KKyAgIGV4 dGVuZHMgb3V0c2lkZSB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGJv dW5kcywgdGhlbiB5b3VyIGRlbGV0ZQorICAgd2lsbCBvbmx5IGNoYW5nZSB0aGUgc3BhbiB3 aXRoaW4gdGhvc2UgYm91bmRzLiBJbiBlZmZlY3QgeW91IGFyZSBkZWxldGluZyBhbnkKKyAg IG1vbWVudCB0YXJnZXRlZCBieSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4g YW5kIG5vIG1vbWVudHMgb3V0c2lkZS4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgU3Bl Y2lmaWNhbGx5LCBhZnRlciA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+ IGRlbGV0ZXMgdGhlIGV4aXN0aW5nIHJvdywKKyAgIGl0IHdpbGwgPGxpdGVyYWw+SU5TRVJU PC9saXRlcmFsPgorICAgbmV3IHJvd3Mgd2hvc2UgcmFuZ2Ugb3Igc3RhcnQvZW5kIGNvbHVt bihzKSByZWNlaXZlIHRoZSByZW1haW5pbmcgc3BhbiBvdXRzaWRlCisgICB0aGUgdGFyZ2V0 ZWQgYm91bmRzLCBjb250YWluaW5nIHRoZSBvcmlnaW5hbCB2YWx1ZXMgaW4gb3RoZXIgY29s dW1ucy4KKyAgIFRoZXJlIHdpbGwgYmUgemVybyB0byB0d28gaW5zZXJ0ZWQgcmVjb3JkcywK KyAgIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBvcmlnaW5hbCBzcGFuIGV4dGVuZGVkIGJl Zm9yZSB0aGUgdGFyZ2V0ZWQKKyAgIDxsaXRlcmFsPkZST008L2xpdGVyYWw+LCBhZnRlciB0 aGUgdGFyZ2V0ZWQgPGxpdGVyYWw+VE88L2xpdGVyYWw+LCBib3RoLCBvciBuZWl0aGVyLgor ICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGVzZSBzZWNvbmRhcnkgaW5zZXJ0cyBmaXJl IDxsaXRlcmFsPklOU0VSVDwvbGl0ZXJhbD4gdHJpZ2dlcnMuIEZpcnN0CisgICA8bGl0ZXJh bD5CRUZPUkUgREVMRVRFPC9saXRlcmFsPiB0cmlnZ2VycyBmaXJzdCwgdGhlbgorICAgPGxp dGVyYWw+QkVGT1JFIElOU0VSVDwvbGl0ZXJhbD4sIHRoZW4gPGxpdGVyYWw+QUZURVIgSU5T RVJUPC9saXRlcmFsPiwKKyAgIHRoZW4gPGxpdGVyYWw+QUZURVIgREVMRVRFPC9saXRlcmFs Pi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlc2Ugc2Vjb25kYXJ5IGluc2VydHMg ZG8gbm90IHJlcXVpcmUgPGxpdGVyYWw+SU5TRVJUPC9saXRlcmFsPiBwcml2aWxlZ2Ugb24g dGhlIHRhYmxlLgorICAgVGhpcyBpcyBiZWNhdXNlIGNvbmNlcHR1YWxseSBubyBuZXcgaW5m b3JtYXRpb24gaGFzIGJlZW4gYWRkZWQuIFRoZSBpbnNlcnRlZCByb3dzIG9ubHkgcHJlc2Vy dmUKKyAgIGV4aXN0aW5nIGRhdGEgYWJvdXQgdGhlIHVudGFyZ2V0ZWQgdGltZSBwZXJpb2Qu IE5vdGUgdGhpcyBtYXkgcmVzdWx0IGluIHVzZXJzIGZpcmluZyA8bGl0ZXJhbD5JTlNFUlQ8 L2xpdGVyYWw+CisgICB0cmlnZ2VycyB3aG8gZG9uJ3QgaGF2ZSBpbnNlcnQgcHJpdmlsZWdl cywgc28gYmUgY2FyZWZ1bCBhYm91dCA8bGl0ZXJhbD5TRUNVUklUWSBERUZJTkVSPC9saXRl cmFsPiB0cmlnZ2VyIGZ1bmN0aW9ucyEKKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgVGhl IG9wdGlvbmFsIDxsaXRlcmFsPlJFVFVSTklORzwvbGl0ZXJhbD4gY2xhdXNlIGNhdXNlcyA8 Y29tbWFuZD5ERUxFVEU8L2NvbW1hbmQ+CiAgICB0byBjb21wdXRlIGFuZCByZXR1cm4gdmFs dWUocykgYmFzZWQgb24gZWFjaCByb3cgYWN0dWFsbHkgZGVsZXRlZC4KQEAgLTExNiw2ICsx NTAsNDEgQEAgREVMRVRFIEZST00gWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICoKICAgICA8L2xpc3RpdGVtPgog ICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBs YWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRo ZSByYW5nZSBjb2x1bW4gb3IgcGVyaW9kIHRvIHVzZSB3aGVuIHBlcmZvcm1pbmcgYSB0ZW1w b3JhbCBkZWxldGUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJs aXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnN0YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAg ICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIGVhcmxpZXN0IHRpbWUgKGlu Y2x1c2l2ZSkgdG8gY2hhbmdlIGluIGEgdGVtcG9yYWwgZGVsZXRlLgorICAgICAgVGhpcyBt dXN0IGJlIGEgdmFsdWUgbWF0Y2hpbmcgdGhlIGJhc2UgdHlwZSBvZiB0aGUgcmFuZ2Ugb3Ig cGVyaW9kIGZyb20KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5n ZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+LiBBCisgICAgICA8bGl0ZXJhbD5OVUxM PC9saXRlcmFsPiBoZXJlIGluZGljYXRlcyBhIGRlbGV0ZSB3aG9zZSBiZWdpbm5pbmcgaXMK KyAgICAgIHVuYm91bmRlZCAoYXMgd2l0aCByYW5nZSB0eXBlcykuCisgICAgIDwvcGFyYT4K KyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50 cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF90aW1l PC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAg ICAgIFRoZSBsYXRlc3QgdGltZSAoZXhjbHVzaXZlKSB0byBjaGFuZ2UgaW4gYSB0ZW1wb3Jh bCBkZWxldGUuCisgICAgICBUaGlzIG11c3QgYmUgYSB2YWx1ZSBtYXRjaGluZyB0aGUgYmFz ZSB0eXBlIG9mIHRoZSByYW5nZSBvciBwZXJpb2QgZnJvbQorICAgICAgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4u IEEKKyAgICAgIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IGhlcmUgaW5kaWNhdGVzIGEgZGVs ZXRlIHdob3NlIGVuZCBpcyB1bmJvdW5kZWQKKyAgICAgIChhcyB3aXRoIHJhbmdlIHR5cGVz KS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4K KwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+ZnJvbV9pdGVtPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgPGxpc3RpdGVt PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvdXBkYXRlLnNnbWwKaW5kZXggMmFiMjRiMDUyM2UuLjcxYTAyNjk3ZjJkIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvdXBkYXRlLnNnbWwKQEAgLTIzLDYgKzIzLDcgQEAgUG9zdGdyZVNRTCBkb2N1 bWVudGF0aW9uCiA8c3lub3BzaXM+CiBbIFdJVEggWyBSRUNVUlNJVkUgXSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+d2l0aF9xdWVyeTwvcmVwbGFjZWFibGU+IFssIC4uLl0g XQogVVBEQVRFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJs ZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmFsaWFzPC9yZXBsYWNlYWJsZT4gXQorICAgIFsgRk9SIFBPUlRJT04g T0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1l PC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmZvcl9wb3J0 aW9uX29mX3RhcmdldDwvcmVwbGFjZWFibGU+IF0KICAgICBTRVQgeyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiA9IHsgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB8IERF RkFVTFQgfSB8CiAgICAgICAgICAgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgPSBbIFJPVyBdICggeyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IHwg REVGQVVMVCB9IFssIC4uLl0gKSB8CiAgICAgICAgICAgKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgPSAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWItU0VMRUNUPC9yZXBsYWNlYWJsZT4g KQpAQCAtNTEsNiArNTIsNDEgQEAgVVBEQVRFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWwogICAgY2ly Y3Vtc3RhbmNlcy4KICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgSWYgdGhlIHRhYmxlIGhh cyBhIHJhbmdlIG9yIG11bHRpcmFuZ2UgY29sdW1uLAorICAgeW91IG1heSBzdXBwbHkgYSA8 bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gY2xhdXNlLCBhbmQgeW91ciB1cGRh dGUgd2lsbAorICAgb25seSBhZmZlY3Qgcm93cyB0aGF0IG92ZXJsYXAgdGhlIGdpdmVuIGlu dGVydmFsLiBGdXJ0aGVybW9yZSwgaWYgYSByb3cncyBzcGFuCisgICBleHRlbmRzIG91dHNp ZGUgdGhlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBib3VuZHMsIHRoZW4g eW91ciB1cGRhdGUKKyAgIHdpbGwgb25seSBjaGFuZ2UgdGhlIHNwYW4gd2l0aGluIHRob3Nl IGJvdW5kcy4gSW4gZWZmZWN0IHlvdSBhcmUgdXBkYXRpbmcgYW55CisgICBtb21lbnQgdGFy Z2V0ZWQgYnkgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGFuZCBubyBtb21l bnRzIG91dHNpZGUuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFNwZWNpZmljYWxseSwg d2hlbiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IHVwZGF0ZXMgdGhl IGV4aXN0aW5nIHJvdywKKyAgIGl0IHdpbGwgYWxzbyBjaGFuZ2UgdGhlIHJhbmdlIG9yIHN0 YXJ0L2VuZCBjb2x1bW4ocykgc28gdGhhdCB0aGVpciBpbnRlcnZhbAorICAgbm8gbG9uZ2Vy IGV4dGVuZHMgYmV5b25kIHRoZSB0YXJnZXRlZCA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwv bGl0ZXJhbD4gYm91bmRzLgorICAgVGhlbiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJv ZHVjdG5hbWU+IHdpbGwgPGxpdGVyYWw+SU5TRVJUPC9saXRlcmFsPgorICAgbmV3IHJvd3Mg d2hvc2UgcmFuZ2Ugb3Igc3RhcnQvZW5kIGNvbHVtbihzKSByZWNlaXZlIHRoZSByZW1haW5p bmcgc3BhbiBvdXRzaWRlCisgICB0aGUgdGFyZ2V0ZWQgYm91bmRzLCBjb250YWluaW5nIHRo ZSB1bi11cGRhdGVkIHZhbHVlcyBpbiBvdGhlciBjb2x1bW5zLgorICAgVGhlcmUgd2lsbCBi ZSB6ZXJvIHRvIHR3byBpbnNlcnRlZCByZWNvcmRzLAorICAgZGVwZW5kaW5nIG9uIHdoZXRo ZXIgdGhlIG9yaWdpbmFsIHNwYW4gZXh0ZW5kZWQgYmVmb3JlIHRoZSB0YXJnZXRlZAorICAg PGxpdGVyYWw+RlJPTTwvbGl0ZXJhbD4sIGFmdGVyIHRoZSB0YXJnZXRlZCA8bGl0ZXJhbD5U TzwvbGl0ZXJhbD4sIGJvdGgsIG9yIG5laXRoZXIuCisgIDwvcGFyYT4KKworICA8cGFyYT4K KyAgIFRoZXNlIHNlY29uZGFyeSBpbnNlcnRzIGZpcmUgPGxpdGVyYWw+SU5TRVJUPC9saXRl cmFsPiB0cmlnZ2Vycy4gRmlyc3QKKyAgIDxsaXRlcmFsPkJFRk9SRSBVUERBVEU8L2xpdGVy YWw+IHRyaWdnZXJzIGZpcnN0LCB0aGVuCisgICA8bGl0ZXJhbD5CRUZPUkUgSU5TRVJUPC9s aXRlcmFsPiwgdGhlbiA8bGl0ZXJhbD5BRlRFUiBJTlNFUlQ8L2xpdGVyYWw+LAorICAgdGhl biA8bGl0ZXJhbD5BRlRFUiBVUERBVEU8L2xpdGVyYWw+LgorICA8L3BhcmE+CisKKyAgPHBh cmE+CisgICBUaGVzZSBzZWNvbmRhcnkgaW5zZXJ0cyBkbyBub3QgcmVxdWlyZSA8bGl0ZXJh bD5JTlNFUlQ8L2xpdGVyYWw+IHByaXZpbGVnZSBvbiB0aGUgdGFibGUuCisgICBUaGlzIGlz IGJlY2F1c2UgY29uY2VwdHVhbGx5IG5vIG5ldyBpbmZvcm1hdGlvbiBoYXMgYmVlbiBhZGRl ZC4gVGhlIGluc2VydGVkIHJvd3Mgb25seSBwcmVzZXJ2ZQorICAgZXhpc3RpbmcgZGF0YSBh Ym91dCB0aGUgdW50YXJnZXRlZCB0aW1lIHBlcmlvZC4gTm90ZSB0aGlzIG1heSByZXN1bHQg aW4gdXNlcnMgZmlyaW5nIDxsaXRlcmFsPklOU0VSVDwvbGl0ZXJhbD4KKyAgIHRyaWdnZXJz IHdobyBkb24ndCBoYXZlIGluc2VydCBwcml2aWxlZ2VzLCBzbyBiZSBjYXJlZnVsIGFib3V0 IDxsaXRlcmFsPlNFQ1VSSVRZIERFRklORVI8L2xpdGVyYWw+IHRyaWdnZXIgZnVuY3Rpb25z IQorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBUaGUgb3B0aW9uYWwgPGxpdGVyYWw+UkVU VVJOSU5HPC9saXRlcmFsPiBjbGF1c2UgY2F1c2VzIDxjb21tYW5kPlVQREFURTwvY29tbWFu ZD4KICAgIHRvIGNvbXB1dGUgYW5kIHJldHVybiB2YWx1ZShzKSBiYXNlZCBvbiBlYWNoIHJv dyBhY3R1YWxseSB1cGRhdGVkLgpAQCAtMTE0LDYgKzE1MCw1NyBAQCBVUERBVEUgWyBPTkxZ IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2Vh YmxlPiBbICogXSBbCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisg ICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxs aXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgcmFuZ2UgY29sdW1uIG9yIHBlcmlv ZCB0byB1c2Ugd2hlbiBwZXJmb3JtaW5nIGEgdGVtcG9yYWwgdXBkYXRlLgorICAgICA8L3Bh cmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlz dGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5mb3Jf cG9ydGlvbl9vZl90YXJnZXQ8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+ CisgICAgIDxwYXJhPgorICAgICAgVGhlIGludGVydmFsIHRvIHVwZGF0ZS4gSWYgeW91IGFy ZSB0YXJnZXRpbmcgYSByYW5nZSBjb2x1bW4gb3IgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFs PiwKKyAgICAgIHlvdSBtYXkgZ2l2ZSB0aGlzIGluIHRoZSBmb3JtIDxsaXRlcmFsPkZST008 L2xpdGVyYWw+CisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRf dGltZTwvcmVwbGFjZWFibGU+IDxsaXRlcmFsPlRPPC9saXRlcmFsPgorICAgICAgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF90aW1lPC9yZXBsYWNlYWJsZT4uCisgICAg ICBPdGhlcndpc2UgeW91IG11c3QgdXNlCisgICAgICA8bGl0ZXJhbD4oPC9saXRlcmFsPjxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT48 bGl0ZXJhbD4pPC9saXRlcmFsPgorICAgICAgd2hlcmUgdGhlIGV4cHJlc3Npb24geWllbGRz IGEgdmFsdWUgZm9yIHRoZSBzYW1lIHR5cGUgYXMKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+LgorICAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8 dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5zdGFydF90aW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAg ICA8cGFyYT4KKyAgICAgIFRoZSBlYXJsaWVzdCB0aW1lIChpbmNsdXNpdmUpIHRvIGNoYW5n ZSBpbiBhIHRlbXBvcmFsIHVwZGF0ZS4KKyAgICAgIFRoaXMgbXVzdCBiZSBhIHZhbHVlIG1h dGNoaW5nIHRoZSBiYXNlIHR5cGUgb2YgdGhlIHJhbmdlIG9yIHBlcmlvZCBmcm9tCisgICAg ICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8 L3JlcGxhY2VhYmxlPi4gQQorICAgICAgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gaGVyZSBp bmRpY2F0ZXMgYW4gdXBkYXRlIHdob3NlIGJlZ2lubmluZyBpcworICAgICAgdW5ib3VuZGVk IChhcyB3aXRoIHJhbmdlIHR5cGVzKS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPjwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIGxhdGVzdCB0 aW1lIChleGNsdXNpdmUpIHRvIGNoYW5nZSBpbiBhIHRlbXBvcmFsIHVwZGF0ZS4KKyAgICAg IFRoaXMgbXVzdCBiZSBhIHZhbHVlIG1hdGNoaW5nIHRoZSBiYXNlIHR5cGUgb2YgdGhlIHJh bmdlIG9yIHBlcmlvZCBmcm9tCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPi4gQQorICAgICAgPGxpdGVy YWw+TlVMTDwvbGl0ZXJhbD4gaGVyZSBpbmRpY2F0ZXMgYW4gdXBkYXRlIHdob3NlIGVuZCBp cyB1bmJvdW5kZWQKKyAgICAgIChhcyB3aXRoIHJhbmdlIHR5cGVzKS4KKyAgICAgPC9wYXJh PgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3Rl bnRyeT4KICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u X25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sIGIvZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dt bAppbmRleCBhNTM5MGZmNjQ0My4uNTM4YTFlMDc4ZGMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC90cmlnZ2VyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dtbApAQCAt NTM1LDE3ICs1MzUsMTggQEAgQ0FMTEVEX0FTX1RSSUdHRVIoZmNpbmZvKQogPHByb2dyYW1s aXN0aW5nPgogdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckRhdGEKIHsKLSAgICBOb2RlVGFnICAg ICAgICAgIHR5cGU7Ci0gICAgVHJpZ2dlckV2ZW50ICAgICB0Z19ldmVudDsKLSAgICBSZWxh dGlvbiAgICAgICAgIHRnX3JlbGF0aW9uOwotICAgIEhlYXBUdXBsZSAgICAgICAgdGdfdHJp Z3R1cGxlOwotICAgIEhlYXBUdXBsZSAgICAgICAgdGdfbmV3dHVwbGU7Ci0gICAgVHJpZ2dl ciAgICAgICAgICp0Z190cmlnZ2VyOwotICAgIFR1cGxlVGFibGVTbG90ICAqdGdfdHJpZ3Ns b3Q7Ci0gICAgVHVwbGVUYWJsZVNsb3QgICp0Z19uZXdzbG90OwotICAgIFR1cGxlc3RvcmVz dGF0ZSAqdGdfb2xkdGFibGU7Ci0gICAgVHVwbGVzdG9yZXN0YXRlICp0Z19uZXd0YWJsZTsK LSAgICBjb25zdCBCaXRtYXBzZXQgKnRnX3VwZGF0ZWRjb2xzOworICAgIE5vZGVUYWcgICAg ICAgICAgICB0eXBlOworICAgIFRyaWdnZXJFdmVudCAgICAgICB0Z19ldmVudDsKKyAgICBS ZWxhdGlvbiAgICAgICAgICAgdGdfcmVsYXRpb247CisgICAgSGVhcFR1cGxlICAgICAgICAg IHRnX3RyaWd0dXBsZTsKKyAgICBIZWFwVHVwbGUgICAgICAgICAgdGdfbmV3dHVwbGU7Cisg ICAgVHJpZ2dlciAgICAgICAgICAgKnRnX3RyaWdnZXI7CisgICAgVHVwbGVUYWJsZVNsb3Qg ICAgKnRnX3RyaWdzbG90OworICAgIFR1cGxlVGFibGVTbG90ICAgICp0Z19uZXdzbG90Owor ICAgIFR1cGxlc3RvcmVzdGF0ZSAgICp0Z19vbGR0YWJsZTsKKyAgICBUdXBsZXN0b3Jlc3Rh dGUgICAqdGdfbmV3dGFibGU7CisgICAgY29uc3QgQml0bWFwc2V0ICAgKnRnX3VwZGF0ZWRj b2xzOworICAgIEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbDsKIH0gVHJpZ2dlckRh dGE7CiA8L3Byb2dyYW1saXN0aW5nPgogCkBAIC04MTMsNiArODE0LDQzIEBAIHR5cGVkZWYg c3RydWN0IFRyaWdnZXIKICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAg ICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+ PHN0cnVjdGZpZWxkPnRnX3RlbXBvcmFsPC9zdHJ1Y3RmaWVsZD48L3Rlcm0+CisgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFNldCBmb3IgPGxpdGVyYWw+VVBE QVRFPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+REVMRVRFPC9saXRlcmFsPiBxdWVyaWVzCisg ICAgICAgIHRoYXQgdXNlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiwgb3Ro ZXJ3aXNlIDxzeW1ib2w+TlVMTDwvc3ltYm9sPi4KKyAgICAgICAgQ29udGFpbnMgYSBwb2lu dGVyIHRvIGEgc3RydWN0dXJlIG9mIHR5cGUKKyAgICAgICAgPHN0cnVjdG5hbWU+Rm9yUG9y dGlvbk9mU3RhdGU8L3N0cnVjdG5hbWU+LCBkZWZpbmVkIGluCisgICAgICAgIDxmaWxlbmFt ZT5ub2Rlcy9leGVjbm9kZXMuaDwvZmlsZW5hbWU+OgorCis8cHJvZ3JhbWxpc3Rpbmc+Cit0 eXBlZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZTdGF0ZQoreworICAgIE5vZGVUYWcgdHlwZTsK KworICAgIGNoYXIgICAqZnBfcmFuZ2VOYW1lOyAgICAgICAvKiB0aGUgY29sdW1uL1BFUklP RCBuYW1lZCBpbiBGT1IgUE9SVElPTiBPRiAqLworICAgIE9pZCAgICAgZnBfcmFuZ2VUeXBl OyAgICAgICAvKiB0aGUgdHlwZSBvZiB0aGUgRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbiAq LworICAgIGJvb2wgICAgZnBfaGFzUGVyaW9kOyAgICAgICAvKiB0cnVlIGlmZiB0aGlzIGlz IGEgUEVSSU9EIG5vdCBhIHJhbmdlICovCisgICAgY2hhciAgICpmcF9wZXJpb2RTdGFydE5h bWU7IC8qIHRoZSBQRVJJT0QncyBzdGFydCBjb2x1bW4gKi8KKyAgICBjaGFyICAgKmZwX3Bl cmlvZEVuZE5hbWU7ICAgLyogdGhlIFBFUklPRCdzIGVuZCBjb2x1bW4gKi8KKyAgICBEYXR1 bSAgIGZwX3RhcmdldFJhbmdlOyAgICAgLyogdGhlIHJhbmdlIGZyb20gRk9SIFBPUlRJT04g T0YgKi8KK30gRm9yUG9ydGlvbk9mU3RhdGU7Cis8L3Byb2dyYW1saXN0aW5nPgorCisgICAg ICAgd2hlcmUgPHN0cnVjdGZpZWxkPmZwX3JhbmdlTmFtZTwvc3RydWN0ZmllbGQ+IGlzIHRo ZSBwZXJpb2Qgb3IgcmFuZ2UKKyAgICAgICBjb2x1bW4gbmFtZWQgaW4gdGhlIDxsaXRlcmFs PkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBjbGF1c2UsCisgICAgICAgPHN0cnVjdGZpZWxk PmZwX3JhbmdlVHlwZTwvc3RydWN0ZmllbGQ+IGlzIGl0cyByYW5nZSB0eXBlLAorICAgICAg IDxzdHJ1Y3RmaWVsZD5mcF9oYXNQZXJpb2Q8L3N0cnVjdGZpZWxkPiBpbmRpY2F0ZXMgd2hl dGhlciBhIHBlcmlvZCB3YXMgdXNlZAorICAgICAgIG9yIGEgcmFuZ2UgY29sdW1uLCA8c3Ry dWN0ZmllbGQ+ZnBfcGVyaW9kU3RhcnROYW1lPC9zdHJ1Y3RmaWVsZD4gYW5kCisgICAgICAg PHN0cnVjdGZpZWxkPmZwX3BlcmlvZEVuZE5hbWU8L3N0cnVjdGZpZWxkPiBhcmUgdGhlIG5h bWVzIG9mIHRoZSBwZXJpb2QncworICAgICAgIHN0YXJ0IGFuZCBlbmQgY29sdW1ucyAob3Ig PHN5bWJvbD5OVUxMPC9zeW1ib2w+IGlmIGEgcmFuZ2UgY29sdW1uIHdhcyB1c2VkKSwKKyAg ICAgICBhbmQgPHN0cnVjdGZpZWxkPmZwX3RhcmdldFJhbmdlPC9zdHJ1Y3RmaWVsZD4gaXMg YSByYW5nZXR5cGUgdmFsdWUgY3JlYXRlZAorICAgICAgIGJ5IGV2YWx1YXRpbmcgdGhlIDxs aXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBib3VuZHMuCisgICAgICAgPC9wYXJh PgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgPC92YXJp YWJsZWxpc3Q+CiAgICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R2YWxpZGF0ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZh bGlkYXRlLmMKaW5kZXggNGJkMmU1MzFkNzEuLjk3YzEzOWExMGQzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYwpAQCAtMTk5LDcgKzE5OSw3IEBAIGdpc3R2 YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKIAkJfQogCiAJCS8qIEdpU1Qgc3VwcG9ydHMgT1JE RVIgQlkgb3BlcmF0b3JzICovCi0JCWlmIChvcHJmb3JtLT5hbW9wcHVycG9zZSAhPSBBTU9Q X1NFQVJDSCkKKwkJaWYgKG9wcmZvcm0tPmFtb3BwdXJwb3NlID09IEFNT1BfT1JERVIpCiAJ CXsKIAkJCS8qIC4uLiBidXQgbXVzdCBoYXZlIG1hdGNoaW5nIGRpc3RhbmNlIHByb2MgKi8K IAkJCWlmICghT2lkSXNWYWxpZChnZXRfb3BmYW1pbHlfcHJvYyhvcGZhbWlseW9pZCwKQEAg LTIyNiwyNCArMjI2LDQzIEBAIGdpc3R2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKIAkJCQly ZXN1bHQgPSBmYWxzZTsKIAkJCX0KIAkJfQotCQllbHNlCisJCWVsc2UgaWYgKG9wcmZvcm0t PmFtb3BwdXJwb3NlID09IEFNT1BfU0VBUkNIKQogCQl7CiAJCQkvKiBTZWFyY2ggb3BlcmF0 b3JzIG11c3QgYWx3YXlzIHJldHVybiBib29sICovCiAJCQlvcF9yZXR0eXBlID0gQk9PTE9J RDsKIAkJfQotCi0JCS8qIENoZWNrIG9wZXJhdG9yIHNpZ25hdHVyZSAqLwotCQlpZiAoIWNo ZWNrX2Ftb3Bfc2lnbmF0dXJlKG9wcmZvcm0tPmFtb3BvcHIsIG9wX3JldHR5cGUsCi0JCQkJ CQkJCSAgb3ByZm9ybS0+YW1vcGxlZnR0eXBlLAotCQkJCQkJCQkgIG9wcmZvcm0tPmFtb3By aWdodHR5cGUpKQorCQllbHNlIGlmIChvcHJmb3JtLT5hbW9wcHVycG9zZSA9PSBBTU9QX1BP UlRJT04pCiAJCXsKKwkJCS8qIE5vIHJlc3RyaWN0aW9ucyBvbiBQT1JUSU9OICovCisJCQlv cF9yZXR0eXBlID0gSW52YWxpZE9pZDsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIE5vdGhp bmcgZWxzZSBpdCBjb3VsZCBiZSAqLwogCQkJZXJlcG9ydChJTkZPLAogCQkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAotCQkJCQkgZXJybXNnKCJv cGVyYXRvciBmYW1pbHkgXCIlc1wiIG9mIGFjY2VzcyBtZXRob2QgJXMgY29udGFpbnMgb3Bl cmF0b3IgJXMgd2l0aCB3cm9uZyBzaWduYXR1cmUiLAotCQkJCQkJCW9wZmFtaWx5bmFtZSwg Imdpc3QiLAotCQkJCQkJCWZvcm1hdF9vcGVyYXRvcihvcHJmb3JtLT5hbW9wb3ByKSkpKTsK KwkJCQkJIGVycm1zZygib3BlcmF0b3IgZmFtaWx5IFwiJXNcIiBvZiBhY2Nlc3MgbWV0aG9k ICVzIGNvbnRhaW5zIHVua25vd24gcHVycG9zZSAlYyBmb3Igb3BlcmF0b3IgJXMiLAorCQkJ CQkJIG9wZmFtaWx5bmFtZSwgImdpc3QiLCBvcHJmb3JtLT5hbW9wcHVycG9zZSwKKwkJCQkJ CSBmb3JtYXRfb3BlcmF0b3Iob3ByZm9ybS0+YW1vcG9wcikpKSk7CisJCQlvcF9yZXR0eXBl ID0gSW52YWxpZE9pZDsKIAkJCXJlc3VsdCA9IGZhbHNlOwogCQl9CisKKwkJLyogQ2hlY2sg b3BlcmF0b3Igc2lnbmF0dXJlICovCisJCWlmIChPaWRJc1ZhbGlkKG9wX3JldHR5cGUpKQor CQl7CisJCQlpZiAoIWNoZWNrX2Ftb3Bfc2lnbmF0dXJlKG9wcmZvcm0tPmFtb3BvcHIsIG9w X3JldHR5cGUsCisJCQkJCQkJCQkgIG9wcmZvcm0tPmFtb3BsZWZ0dHlwZSwKKwkJCQkJCQkJ CSAgb3ByZm9ybS0+YW1vcHJpZ2h0dHlwZSkpCisJCQl7CisJCQkJZXJlcG9ydChJTkZPLAor CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJ CQkJCSBlcnJtc2coIm9wZXJhdG9yIGZhbWlseSBcIiVzXCIgb2YgYWNjZXNzIG1ldGhvZCAl cyBjb250YWlucyBvcGVyYXRvciAlcyB3aXRoIHdyb25nIHNpZ25hdHVyZSIsCisJCQkJCQkJ CW9wZmFtaWx5bmFtZSwgImdpc3QiLAorCQkJCQkJCQlmb3JtYXRfb3BlcmF0b3Iob3ByZm9y bS0+YW1vcG9wcikpKSk7CisJCQkJcmVzdWx0ID0gZmFsc2U7CisJCQl9CisJCX0KIAl9CiAK IAkvKiBOb3cgY2hlY2sgZm9yIGluY29uc2lzdGVudCBncm91cHMgb2Ygb3BlcmF0b3JzL2Z1 bmN0aW9ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBjZGVmMTc0ZWUy NC4uZWY3ZjU4Zjk5YWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0xMjYw OSw2ICsxMjYwOSw3IEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29u bmFtZSwKIAkJdHJpZ2RhdGEudGdfdHJpZ3R1cGxlID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBs ZShzbG90LCBmYWxzZSwgTlVMTCk7CiAJCXRyaWdkYXRhLnRnX3RyaWdzbG90ID0gc2xvdDsK IAkJdHJpZ2RhdGEudGdfdHJpZ2dlciA9ICZ0cmlnOworCQl0cmlnZGF0YS50Z190ZW1wb3Jh bCA9IE5VTEw7CiAKIAkJZmNpbmZvLT5jb250ZXh0ID0gKE5vZGUgKikgJnRyaWdkYXRhOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKaW5kZXggYTdjOTI0MTZmNTYuLmEwZGIyZjAxMzIz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVk ZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJ1dGlscy9ieXRlYS5oIgorI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAi dXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKICNpbmNs dWRlICJ1dGlscy9pbnZhbC5oIgpAQCAtMjYzOCw2ICsyNjM5LDcgQEAgRXhlY0JTRGVsZXRl VHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8pCiAJTG9j VHJpZ2dlckRhdGEudGdfZXZlbnQgPSBUUklHR0VSX0VWRU5UX0RFTEVURSB8CiAJCVRSSUdH RVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5m by0+cmlfUmVsYXRpb25EZXNjOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVs aW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCWZvciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVt dHJpZ2dlcnM7IGkrKykKIAl7CiAJCVRyaWdnZXIgICAgKnRyaWdnZXIgPSAmdHJpZ2Rlc2Mt PnRyaWdnZXJzW2ldOwpAQCAtMjczNyw2ICsyNzM5LDcgQEAgRXhlY0JSRGVsZXRlVHJpZ2dl cnMoRVN0YXRlICplc3RhdGUsIEVQUVN0YXRlICplcHFzdGF0ZSwKIAkJVFJJR0dFUl9FVkVO VF9ST1cgfAogCQlUUklHR0VSX0VWRU5UX0JFRk9SRTsKIAlMb2NUcmlnZ2VyRGF0YS50Z19y ZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlMb2NUcmlnZ2VyRGF0YS50 Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAlmb3IgKGkgPSAwOyBp IDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCiAJewogCQlIZWFwVHVwbGUJbmV3dHVw bGU7CkBAIC0yODI4LDYgKzI4MzEsNyBAQCBFeGVjSVJEZWxldGVUcmlnZ2VycyhFU3RhdGUg KmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJVFJJR0dFUl9FVkVOVF9ST1cg fAogCQlUUklHR0VSX0VWRU5UX0lOU1RFQUQ7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRp b24gPSByZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVt cG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAKIAlFeGVjRm9yY2VTdG9yZUhl YXBUdXBsZSh0cmlndHVwbGUsIHNsb3QsIGZhbHNlKTsKIApAQCAtMjg5MSw2ICsyODk1LDcg QEAgRXhlY0JTVXBkYXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8g KnJlbGluZm8pCiAJCVRSSUdHRVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdnZXJEYXRhLnRn X3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOwogCUxvY1RyaWdnZXJEYXRh LnRnX3VwZGF0ZWRjb2xzID0gdXBkYXRlZENvbHM7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVt cG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAJZm9yIChpID0gMDsgaSA8IHRy aWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQogCXsKIAkJVHJpZ2dlciAgICAqdHJpZ2dlciA9 ICZ0cmlnZGVzYy0+dHJpZ2dlcnNbaV07CkBAIC0zMDI2LDYgKzMwMzEsNyBAQCBFeGVjQlJV cGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0YXRlLAogCQlU UklHR0VSX0VWRU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdn ZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOworCUxvY1Ry aWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCXVw ZGF0ZWRDb2xzID0gRXhlY0dldEFsbFVwZGF0ZWRDb2xzKHJlbGluZm8sIGVzdGF0ZSk7CiAJ TG9jVHJpZ2dlckRhdGEudGdfdXBkYXRlZGNvbHMgPSB1cGRhdGVkQ29sczsKIAlmb3IgKGkg PSAwOyBpIDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCkBAIC0zMTc1LDYgKzMxODEs NyBAQCBFeGVjSVJVcGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5m byAqcmVsaW5mbywKIAkJVFJJR0dFUl9FVkVOVF9ST1cgfAogCQlUUklHR0VSX0VWRU5UX0lO U1RFQUQ7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9SZWxh dGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5yaV9m b3JQb3J0aW9uT2Y7CiAKIAlFeGVjRm9yY2VTdG9yZUhlYXBUdXBsZSh0cmlndHVwbGUsIG9s ZHNsb3QsIGZhbHNlKTsKIApAQCAtMzY0MSw2ICszNjQ4LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg QWZ0ZXJUcmlnZ2VyU2hhcmVkRGF0YQogCU9pZAkJCWF0c190Z29pZDsJCS8qIHRoZSB0cmln Z2VyJ3MgSUQgKi8KIAlPaWQJCQlhdHNfcmVsaWQ7CQkvKiB0aGUgcmVsYXRpb24gaXQncyBv biAqLwogCUNvbW1hbmRJZAlhdHNfZmlyaW5nX2lkOwkvKiBJRCBmb3IgZmlyaW5nIGN5Y2xl ICovCisJRm9yUG9ydGlvbk9mU3RhdGUgKmZvcl9wb3J0aW9uX29mOwkvKiB0aGUgRk9SIFBP UlRJT04gT0YgY2xhdXNlICovCiAJc3RydWN0IEFmdGVyVHJpZ2dlcnNUYWJsZURhdGEgKmF0 c190YWJsZTsJLyogdHJhbnNpdGlvbiB0YWJsZSBhY2Nlc3MgKi8KIAlCaXRtYXBzZXQgICph dHNfbW9kaWZpZWRjb2xzOwkvKiBtb2RpZmllZCBjb2x1bW5zICovCiB9IEFmdGVyVHJpZ2dl clNoYXJlZERhdGE7CkBAIC0zOTE0LDYgKzM5MjIsNyBAQCBzdGF0aWMgU2V0Q29uc3RyYWlu dFN0YXRlIFNldENvbnN0cmFpbnRTdGF0ZUNyZWF0ZShpbnQgbnVtYWxsb2MpOwogc3RhdGlj IFNldENvbnN0cmFpbnRTdGF0ZSBTZXRDb25zdHJhaW50U3RhdGVDb3B5KFNldENvbnN0cmFp bnRTdGF0ZSBvcmlnc3RhdGUpOwogc3RhdGljIFNldENvbnN0cmFpbnRTdGF0ZSBTZXRDb25z dHJhaW50U3RhdGVBZGRJdGVtKFNldENvbnN0cmFpbnRTdGF0ZSBzdGF0ZSwKIAkJCQkJCQkJ CQkJCQlPaWQgdGdvaWQsIGJvb2wgdGdpc2RlZmVycmVkKTsKK3N0YXRpYyBGb3JQb3J0aW9u T2ZTdGF0ZSAqQ29weUZvclBvcnRpb25PZlN0YXRlKEZvclBvcnRpb25PZlN0YXRlICpzcmMp Owogc3RhdGljIHZvaWQgY2FuY2VsX3ByaW9yX3N0bXRfdHJpZ2dlcnMoT2lkIHJlbGlkLCBD bWRUeXBlIGNtZFR5cGUsIGludCB0Z2V2ZW50KTsKIAogCkBAIC00MTIzLDYgKzQxMzIsNyBA QCBhZnRlclRyaWdnZXJBZGRFdmVudChBZnRlclRyaWdnZXJFdmVudExpc3QgKmV2ZW50cywK IAkJCW5ld3NoYXJlZC0+YXRzX3JlbGlkID09IGV2dHNoYXJlZC0+YXRzX3JlbGlkICYmCiAJ CQluZXdzaGFyZWQtPmF0c19ldmVudCA9PSBldnRzaGFyZWQtPmF0c19ldmVudCAmJgogCQkJ bmV3c2hhcmVkLT5hdHNfdGFibGUgPT0gZXZ0c2hhcmVkLT5hdHNfdGFibGUgJiYKKwkJCW5l d3NoYXJlZC0+Zm9yX3BvcnRpb25fb2YgPT0gZXZ0c2hhcmVkLT5mb3JfcG9ydGlvbl9vZiAm JgogCQkJbmV3c2hhcmVkLT5hdHNfZmlyaW5nX2lkID09IDApCiAJCQlicmVhazsKIAl9CkBA IC00NDg3LDYgKzQ0OTcsNyBAQCBBZnRlclRyaWdnZXJFeGVjdXRlKEVTdGF0ZSAqZXN0YXRl LAogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsOwogCWlmIChUUklHR0VSX0ZP Ul9VUERBVEUoTG9jVHJpZ2dlckRhdGEudGdfdHJpZ2dlci0+dGd0eXBlKSkKIAkJTG9jVHJp Z2dlckRhdGEudGdfdXBkYXRlZGNvbHMgPSBldnRzaGFyZWQtPmF0c19tb2RpZmllZGNvbHM7 CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSBldnRzaGFyZWQtPmZvcl9wb3J0aW9u X29mOwogCiAJTWVtb3J5Q29udGV4dFJlc2V0KHBlcl90dXBsZV9jb250ZXh0KTsKIApAQCAt NjAyMyw2ICs2MDM0LDQzIEBAIEFmdGVyVHJpZ2dlclBlbmRpbmdPblJlbChPaWQgcmVsaWQp CiAJcmV0dXJuIGZhbHNlOwogfQogCisvKiAtLS0tLS0tLS0tCisgKiBGb3JQb3J0aW9uT2ZT dGF0ZSgpCisgKgorICogQ29weXMgYSBGb3JQb3J0aW9uT2ZTdGF0ZSBpbnRvIHRoZSBjdXJy ZW50IG1lbW9yeSBjb250ZXh0LgorICovCitzdGF0aWMgRm9yUG9ydGlvbk9mU3RhdGUgKgor Q29weUZvclBvcnRpb25PZlN0YXRlKEZvclBvcnRpb25PZlN0YXRlICpzcmMpCit7CisJRm9y UG9ydGlvbk9mU3RhdGUgKmRzdCA9IE5VTEw7CisJaWYgKHNyYykgeworCQlNZW1vcnlDb250 ZXh0IG9sZGN0eDsKKwkJUmFuZ2VUeXBlICpyOworCQlUeXBlQ2FjaGVFbnRyeSAqdHlwY2Fj aGU7CisKKwkJLyoKKwkJICogTmVlZCB0byBsaWZ0IHRoZSBGT1IgUE9SVElPTiBPRiBkZXRh aWxzIGludG8gYSBoaWdoZXIgbWVtb3J5IGNvbnRleHQKKwkJICogYmVjYXVzZSBjYXNjYWRp bmcgZm9yZWlnbiBrZXkgdXBkYXRlL2RlbGV0ZXMgY2FuIGNhdXNlIHRyaWdnZXJzIHRvIGZp cmUKKwkJICogdHJpZ2dlcnMsIGFuZCB0aGUgQWZ0ZXJUcmlnZ2VyRXZlbnRzIHdpbGwgb3V0 bGl2ZSB0aGUgRlBPCisJCSAqIGRldGFpbHMgb2YgdGhlIG9yaWdpbmFsIHF1ZXJ5LgorCQkg Ki8KKwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcFRyYW5zYWN0aW9uQ29u dGV4dCk7CisJCWRzdCA9IG1ha2VOb2RlKEZvclBvcnRpb25PZlN0YXRlKTsKKwkJZHN0LT5m cF9yYW5nZU5hbWUgPSBwc3RyZHVwKHNyYy0+ZnBfcmFuZ2VOYW1lKTsKKwkJZHN0LT5mcF9y YW5nZVR5cGUgPSBzcmMtPmZwX3JhbmdlVHlwZTsKKwkJZHN0LT5mcF9oYXNQZXJpb2QgPSBz cmMtPmZwX2hhc1BlcmlvZDsKKwkJZHN0LT5mcF9yYW5nZUF0dG5vID0gc3JjLT5mcF9yYW5n ZUF0dG5vOworCQlkc3QtPmZwX3BlcmlvZFN0YXJ0QXR0bm8gPSBzcmMtPmZwX3BlcmlvZFN0 YXJ0QXR0bm87CisJCWRzdC0+ZnBfcGVyaW9kRW5kQXR0bm8gPSBzcmMtPmZwX3BlcmlvZEVu ZEF0dG5vOworCisJCXIgPSBEYXR1bUdldFJhbmdlVHlwZVAoc3JjLT5mcF90YXJnZXRSYW5n ZSk7CisJCXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUoUmFuZ2VUeXBlR2V0T2lkKHIp LCBUWVBFQ0FDSEVfUkFOR0VfSU5GTyk7CisJCWRzdC0+ZnBfdGFyZ2V0UmFuZ2UgPSBkYXR1 bUNvcHkoc3JjLT5mcF90YXJnZXRSYW5nZSwgdHlwY2FjaGUtPnR5cGJ5dmFsLCB0eXBjYWNo ZS0+dHlwbGVuKTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorCXJl dHVybiBkc3Q7Cit9CisKIC8qIC0tLS0tLS0tLS0KICAqIEFmdGVyVHJpZ2dlclNhdmVFdmVu dCgpCiAgKgpAQCAtNjQzOCw2ICs2NDg2LDcgQEAgQWZ0ZXJUcmlnZ2VyU2F2ZUV2ZW50KEVT dGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQllbHNlCiAJCQluZXdf c2hhcmVkLmF0c190YWJsZSA9IE5VTEw7CiAJCW5ld19zaGFyZWQuYXRzX21vZGlmaWVkY29s cyA9IGFmdGVyVHJpZ2dlckNvcHlCaXRtYXAobW9kaWZpZWRDb2xzKTsKKwkJbmV3X3NoYXJl ZC5mb3JfcG9ydGlvbl9vZiA9IENvcHlGb3JQb3J0aW9uT2ZTdGF0ZShyZWxpbmZvLT5yaV9m b3JQb3J0aW9uT2YpOwogCiAJCWFmdGVyVHJpZ2dlckFkZEV2ZW50KCZhZnRlclRyaWdnZXJz LnF1ZXJ5X3N0YWNrW2FmdGVyVHJpZ2dlcnMucXVlcnlfZGVwdGhdLmV2ZW50cywKIAkJCQkJ CQkgJm5ld19ldmVudCwgJm5ld19zaGFyZWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMK aW5kZXggMTNhOWI3ZGE4M2IuLmIyZWI1YmRlNzM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKQEAgLTEyNzQsNiArMTI3NCw3IEBAIEluaXRSZXN1bHRSZWxJbmZvKFJlc3VsdFJl bEluZm8gKnJlc3VsdFJlbEluZm8sCiAJcmVzdWx0UmVsSW5mby0+cmlfcHJvamVjdFJldHVy bmluZyA9IE5VTEw7CiAJcmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRl eGVzID0gTklMOwogCXJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxpY3QgPSBOVUxMOworCXJl c3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZiA9IE5VTEw7CiAJcmVzdWx0UmVsSW5mby0+ cmlfUmV0dXJuaW5nU2xvdCA9IE5VTEw7CiAJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ09sZFNs b3QgPSBOVUxMOwogCXJlc3VsdFJlbEluZm8tPnJpX1RyaWdOZXdTbG90ID0gTlVMTDsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggOWZjNWFiZmY4ZjAu LmRmZGNkYmNkZTZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9k aWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu YwpAQCAtNTgsOSArNTgsMTEgQEAKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVy LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xt Z3IuaCIKKyNpbmNsdWRlICJ1dGlscy9hcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9tZW11 dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L3JlbC5oIgogCiAKQEAgLTE0MSw2ICsxNDMsMTAgQEAgc3RhdGljIGJvb2wgRXhlY09uQ29u ZmxpY3RVcGRhdGUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkgVHVw bGVUYWJsZVNsb3QgKmV4Y2x1ZGVkU2xvdCwKIAkJCQkJCQkJIGJvb2wgY2FuU2V0VGFnLAog CQkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKipyZXR1cm5pbmcpOworc3RhdGljIHZvaWQgRXhl Y0ZvclBvcnRpb25PZkxlZnRvdmVycyhNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCisJ CQkJCQkJCQkgIEVTdGF0ZSAqZXN0YXRlLAorCQkJCQkJCQkJICBSZXN1bHRSZWxJbmZvICpy ZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJICBJdGVtUG9pbnRlciB0dXBsZWlkKTsKIHN0YXRp YyBUdXBsZVRhYmxlU2xvdCAqRXhlY1ByZXBhcmVUdXBsZVJvdXRpbmcoTW9kaWZ5VGFibGVT dGF0ZSAqbXRzdGF0ZSwKIAkJCQkJCQkJCQkJICAgRVN0YXRlICplc3RhdGUsCiAJCQkJCQkJ CQkJCSAgIFBhcnRpdGlvblR1cGxlUm91dGluZyAqcHJvdXRlLApAQCAtMTIwNSw2ICsxMjEx LDEzMCBAQCBFeGVjSW5zZXJ0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAlyZXR1 cm4gcmVzdWx0OwogfQogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY0ZvclBvcnRpb25PZkxl ZnRvdmVycworICoKKyAqCQlJbnNlcnQgdHVwbGVzIGZvciB0aGUgdW50b3VjaGVkIHBvcnRp b24gb2YgYSByb3cgaW4gYSBGT1IKKyAqCQlQT1JUSU9OIE9GIFVQREFURS9ERUxFVEUKKyAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLworc3RhdGljIHZvaWQKK0V4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3Zl cnMoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAorCQkJCQkJICBFU3RhdGUgKmVzdGF0 ZSwKKwkJCQkJCSAgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJCSAgSXRl bVBvaW50ZXIgdHVwbGVpZCkKK3sKKwlNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlID0gY29u dGV4dC0+bXRzdGF0ZTsKKwlNb2RpZnlUYWJsZSAqbm9kZSA9IChNb2RpZnlUYWJsZSAqKSBt dHN0YXRlLT5wcy5wbGFuOworCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiA9IChG b3JQb3J0aW9uT2ZFeHByICopIG5vZGUtPmZvclBvcnRpb25PZjsKKwlBdHRyTnVtYmVyCXJh bmdlQXR0bm87CisJRGF0dW0Jb2xkUmFuZ2U7CisJRGF0dW0JYWxsTGVmdG92ZXJzOworCURh dHVtCSpsZWZ0b3ZlcnM7CisJaW50CQlubGVmdG92ZXJzOworCWJvb2wgaXNOdWxsID0gZmFs c2U7CisJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlOworCUZvclBvcnRpb25PZlN0YXRlICpm cG9TdGF0ZSA9IHJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZjsKKwlUdXBsZVRhYmxl U2xvdCAqb2xkdHVwbGVTbG90ID0gZnBvU3RhdGUtPmZwX0V4aXN0aW5nOworCVR1cGxlVGFi bGVTbG90ICpsZWZ0b3ZlclNsb3QgPSBmcG9TdGF0ZS0+ZnBfTGVmdG92ZXI7CisJVHVwbGVD b252ZXJzaW9uTWFwICptYXAgPSBOVUxMOworCUhlYXBUdXBsZSBvbGR0dXBsZSA9IE5VTEw7 CisKKwkvKgorCSAqIEdldCB0aGUgcmFuZ2Ugb2YgdGhlIG9sZCBwcmUtVVBEQVRFL0RFTEVU RSB0dXBsZSwKKwkgKiBzbyB3ZSBjYW4gaW50ZXJzZWN0IGl0IHdpdGggdGhlIEZPUiBQT1JU SU9OIE9GIHRhcmdldAorCSAqIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSAibGVmdG92ZXJz IiB0byBpbnNlcnQuCisJICoKKwkgKiBXZSBoYXZlIGFscmVhZHkgbG9ja2VkIHRoZSB0dXBs ZSBpbiBFeGVjVXBkYXRlL0V4ZWNEZWxldGUKKwkgKiBhbmQgaXQgaGFzIHBhc3NlZCBFdmFs UGxhblF1YWwuCisJICogTWFrZSBzdXJlIHdlJ3JlIGxvb2tpbmcgYXQgdGhlIG1vc3QgcmVj ZW50IHZlcnNpb24uCisJICogT3RoZXJ3aXNlIGNvbmN1cnJlbnQgdXBkYXRlcyBvZiB0aGUg c2FtZSB0dXBsZSBpbiBSRUFEIENPTU1JVFRFRAorCSAqIGNvdWxkIGluc2VydCBjb25mbGlj dGluZyAibGVmdG92ZXJzIi4KKwkgKi8KKwlpZiAoIXRhYmxlX3R1cGxlX2ZldGNoX3Jvd192 ZXJzaW9uKHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYywgdHVwbGVpZCwgU25hcHNo b3RBbnksIG9sZHR1cGxlU2xvdCkpCisJCWVsb2coRVJST1IsICJmYWlsZWQgdG8gZmV0Y2gg dHVwbGUgZm9yIEZPUiBQT1JUSU9OIE9GIik7CisKKwkvKgorCSAqIEdldCB0aGUgb2xkIHJh bmdlIG9mIHRoZSByZWNvcmQgYmVpbmcgdXBkYXRlZC4KKwkgKiBNdXN0IHJlYWQgd2l0aCB0 aGUgYXR0bm8gb2YgdGhlIGxlYWYgcGFydGl0aW9uIGJlaW5nIHVwZGF0ZWQKKwkgKi8KKwor CXJhbmdlQXR0bm8gPSBmb3JQb3J0aW9uT2YtPnJhbmdlVmFyLT52YXJhdHRubzsKKwlpZiAo cmVzdWx0UmVsSW5mby0+cmlfUm9vdFJlc3VsdFJlbEluZm8pCisJCW1hcCA9IEV4ZWNHZXRD aGlsZFRvUm9vdE1hcChyZXN1bHRSZWxJbmZvKTsKKwlpZiAobWFwICE9IE5VTEwpCisJCXJh bmdlQXR0bm8gPSBtYXAtPmF0dHJNYXAtPmF0dG51bXNbcmFuZ2VBdHRubyAtIDFdOworCW9s ZFJhbmdlID0gc2xvdF9nZXRhdHRyKG9sZHR1cGxlU2xvdCwgcmFuZ2VBdHRubywgJmlzTnVs bCk7CisKKwlpZiAoaXNOdWxsKQorCQllbG9nKEVSUk9SLCAiZm91bmQgYSBOVUxMIHJhbmdl IGluIGEgdGVtcG9yYWwgdGFibGUiKTsKKworCS8qCisJICogR2V0IHRoZSByYW5nZSdzIHR5 cGUgY2FjaGUgZW50cnkuIFRoaXMgaXMgd29ydGggY2FjaGluZyBmb3IgdGhlIHdob2xlIFVQ REFURQorCSAqIGFzIHJhbmdlIGZ1bmN0aW9ucyBkby4KKwkgKi8KKworCXR5cGNhY2hlID0g ZnBvU3RhdGUtPmZwX2xlZnRvdmVyc3R5cGNhY2hlOworCWlmICh0eXBjYWNoZSA9PSBOVUxM KQorCXsKKwkJdHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZShmb3JQb3J0aW9uT2YtPnJh bmdlVHlwZSwgMCk7CisJCWZwb1N0YXRlLT5mcF9sZWZ0b3ZlcnN0eXBjYWNoZSA9IHR5cGNh Y2hlOworCX0KKworCS8qIEdldCB0aGUgcmFuZ2VzIHRvIHRoZSBsZWZ0L3JpZ2h0IG9mIHRo ZSB0YXJnZXRlZCByYW5nZS4gKi8KKworCWFsbExlZnRvdmVycyA9IE9pZEZ1bmN0aW9uQ2Fs bDJDb2xsKGZvclBvcnRpb25PZi0+d2l0aG91dFBvcnRpb25Qcm9jLAorCQkJCQkJCQkJCUlu dmFsaWRPaWQsIG9sZFJhbmdlLCBmcG9TdGF0ZS0+ZnBfdGFyZ2V0UmFuZ2UpOworCisJZGVj b25zdHJ1Y3RfYXJyYXkoRGF0dW1HZXRBcnJheVR5cGVQKGFsbExlZnRvdmVycyksIHR5cGNh Y2hlLT50eXBlX2lkLCB0eXBjYWNoZS0+dHlwbGVuLAorCQkJCQkgIHR5cGNhY2hlLT50eXBi eXZhbCwgdHlwY2FjaGUtPnR5cGFsaWduLCAmbGVmdG92ZXJzLCBOVUxMLCAmbmxlZnRvdmVy cyk7CisKKwlBc3NlcnQobmxlZnRvdmVycyA+PSAwKTsKKwlpZiAobmxlZnRvdmVycyA+IDAp CisJeworCQlib29sIHNob3VsZEZyZWUgPSBmYWxzZTsKKwkJaW50IGk7CisKKwkJLyoKKwkJ ICogTWFrZSBhIGNvcHkgb2YgdGhlIHByZS1VUERBVEUgcm93LgorCQkgKiBUaGVuIHdlJ2xs IG92ZXJ3cml0ZSB0aGUgcmFuZ2UgY29sdW1uIGJlbG93LgorCQkgKiBDb252ZXJ0IG9sZHR1 cGxlIHRvIHRoZSBiYXNlIHRhYmxlJ3MgZm9ybWF0IGlmIG5lY2Vzc2FyeS4KKwkJICogV2Ug bmVlZCB0byBpbnNlcnQgbGVmdG92ZXJzIHRocm91Z2ggdGhlIHJvb3QgcGFydGl0aW9uCisJ CSAqIHNvIHRoZXkgZ2V0IHJvdXRlZCBjb3JyZWN0bHkuCisJCSAqLworCQlpZiAobWFwICE9 IE5VTEwpCisJCQlsZWZ0b3ZlclNsb3QgPSBleGVjdXRlX2F0dHJfbWFwX3Nsb3QobWFwLT5h dHRyTWFwLAorCQkJCQkJCQkJCQkJIG9sZHR1cGxlU2xvdCwKKwkJCQkJCQkJCQkJCSBsZWZ0 b3ZlclNsb3QpOworCQllbHNlCisJCXsKKwkJCW9sZHR1cGxlID0gRXhlY0ZldGNoU2xvdEhl YXBUdXBsZShvbGR0dXBsZVNsb3QsIGZhbHNlLCAmc2hvdWxkRnJlZSk7CisJCQlFeGVjRm9y Y2VTdG9yZUhlYXBUdXBsZShvbGR0dXBsZSwgbGVmdG92ZXJTbG90LCBmYWxzZSk7CisJCX0K KworCQlmb3IgKGkgPSAwOyBpIDwgbmxlZnRvdmVyczsgaSsrKQorCQl7CisJCQkvKiBzdG9y ZSB0aGUgbmV3IHJhbmdlICovCisJCQlsZWZ0b3ZlclNsb3QtPnR0c192YWx1ZXNbZm9yUG9y dGlvbk9mLT5yYW5nZVZhci0+dmFyYXR0bm8gLSAxXSA9IGxlZnRvdmVyc1tpXTsKKwkJCWxl ZnRvdmVyU2xvdC0+dHRzX2lzbnVsbFtmb3JQb3J0aW9uT2YtPnJhbmdlVmFyLT52YXJhdHRu byAtIDFdID0gZmFsc2U7CisJCQlFeGVjTWF0ZXJpYWxpemVTbG90KGxlZnRvdmVyU2xvdCk7 CisKKwkJCS8qCisJCQkgKiBJZiB0aGVyZSBhcmUgcGFydGl0aW9ucywgd2UgbXVzdCBpbnNl cnQgaW50byB0aGUgcm9vdCB0YWJsZSwKKwkJCSAqIHNvIHdlIGdldCB0dXBsZSByb3V0aW5n LiBXZSBhbHJlYWR5IHNldCB1cCBsZWZ0b3ZlclNsb3QKKwkJCSAqIHdpdGggdGhlIHJvb3Qg dHVwbGUgZGVzY3JpcHRvci4KKwkJCSAqLworCQkJaWYgKHJlc3VsdFJlbEluZm8tPnJpX1Jv b3RSZXN1bHRSZWxJbmZvKQorCQkJCXJlc3VsdFJlbEluZm8gPSByZXN1bHRSZWxJbmZvLT5y aV9Sb290UmVzdWx0UmVsSW5mbzsKKwkJCS8vIFRPRE86IE5lZWQgdG8gc2F2ZSBjb250ZXh0 LT5tdHN0YXRlLT5tdF90cmFuc2l0aW9uX2NhcHR1cmU/IChTZWUgY29tbWVudCBvbiBFeGVj SW5zZXJ0KQorCQkJRXhlY0luc2VydChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCBsZWZ0b3Zl clNsb3QsIG5vZGUtPmNhblNldFRhZywgTlVMTCwgTlVMTCk7CisJCX0KKworCQlpZiAoc2hv dWxkRnJlZSkKKwkJCWhlYXBfZnJlZXR1cGxlKG9sZHR1cGxlKTsKKwl9Cit9CisKIC8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICAqCQlFeGVjQmF0Y2hJbnNlcnQKICAqCkBAIC0xMzU3LDcgKzE0ODcsOCBA QCBFeGVjRGVsZXRlQWN0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywKICAqCiAgKiBDbG9zaW5nIHN0ZXBzIG9mIHR1cGxlIGRl bGV0aW9uOyB0aGlzIGludm9rZXMgQUZURVIgRk9SIEVBQ0ggUk9XIHRyaWdnZXJzLAogICog aW5jbHVkaW5nIHRoZSBVUERBVEUgdHJpZ2dlcnMgaWYgdGhlIGRlbGV0aW9uIGlzIGJlaW5n IGRvbmUgYXMgcGFydCBvZiBhCi0gKiBjcm9zcy1wYXJ0aXRpb24gdHVwbGUgbW92ZS4KKyAq IGNyb3NzLXBhcnRpdGlvbiB0dXBsZSBtb3ZlLiBJdCBhbHNvIGluc2VydHMgbGVmdG92ZXJz IGZyb20gYSBGT1IgUE9SVElPTiBPRgorICogZGVsZXRlLgogICovCiBzdGF0aWMgdm9pZAog RXhlY0RlbGV0ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKQEAgLTEzOTAsNiArMTUyMSwxMSBAQCBFeGVjRGVs ZXRlRXBpbG9ndWUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLAogCQlhcl9kZWxldGVfdHJpZ190Y3MgPSBOVUxMOwogCX0KIAor CS8qIENvbXB1dGUgbGVmdG92ZXJzIGluIEZPUiBQT1JUSU9OIE9GICovCisJLy8gVE9ETzog U2tpcCB0aGlzIGZvciBGRFcgZGVsZXRlcz8KKwlpZiAoKChNb2RpZnlUYWJsZSAqKSBjb250 ZXh0LT5tdHN0YXRlLT5wcy5wbGFuKS0+Zm9yUG9ydGlvbk9mKQorCQlFeGVjRm9yUG9ydGlv bk9mTGVmdG92ZXJzKGNvbnRleHQsIGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCk7 CisKIAkvKiBBRlRFUiBST1cgREVMRVRFIFRyaWdnZXJzICovCiAJRXhlY0FSRGVsZXRlVHJp Z2dlcnMoZXN0YXRlLCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwKIAkJCQkJ CSBhcl9kZWxldGVfdHJpZ190Y3MsIGNoYW5naW5nUGFydCk7CkBAIC0xNzcwLDcgKzE5MDYs MTEgQEAgRXhlY0Nyb3NzUGFydGl0aW9uVXBkYXRlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29u dGV4dCwKIAlpZiAocmVzdWx0UmVsSW5mbyA9PSBtdHN0YXRlLT5yb290UmVzdWx0UmVsSW5m bykKIAkJRXhlY1BhcnRpdGlvbkNoZWNrRW1pdEVycm9yKHJlc3VsdFJlbEluZm8sIHNsb3Qs IGVzdGF0ZSk7CiAKLQkvKiBJbml0aWFsaXplIHR1cGxlIHJvdXRpbmcgaW5mbyBpZiBub3Qg YWxyZWFkeSBkb25lLiAqLworCS8qCisJICogSW5pdGlhbGl6ZSB0dXBsZSByb3V0aW5nIGlu Zm8gaWYgbm90IGFscmVhZHkgZG9uZS4KKwkgKiBOb3RlIHdoYXRldmVyIHdlIGRvIGhlcmUg bXVzdCBiZSBkb25lIGluIEV4ZWNJbml0TW9kaWZ5VGFibGUKKwkgKiBmb3IgRk9SIFBPUlRJ T04gT0YgYXMgd2VsbC4KKwkgKi8KIAlpZiAobXRzdGF0ZS0+bXRfcGFydGl0aW9uX3R1cGxl X3JvdXRpbmcgPT0gTlVMTCkKIAl7CiAJCVJlbGF0aW9uCXJvb3RSZWwgPSBtdHN0YXRlLT5y b290UmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOwpAQCAtMjEzOSw2ICsyMjc5LDEx IEBAIEV4ZWNVcGRhdGVFcGlsb2d1ZShNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsIFVw ZGF0ZUNvbnRleHQgKnVwZGF0ZUN4dCwKIAkJCQkJCQkJCQkJICAgTlVMTCwgTklMLAogCQkJ CQkJCQkJCQkgICAodXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzID09IFRVX1N1bW1hcml6aW5n KSk7CiAKKwkvKiBDb21wdXRlIGxlZnRvdmVycyBpbiBGT1IgUE9SVElPTiBPRiAqLworCS8v IFRPRE86IFNraXAgdGhpcyBmb3IgRkRXIHVwZGF0ZXM/CisJaWYgKCgoTW9kaWZ5VGFibGUg KikgY29udGV4dC0+bXRzdGF0ZS0+cHMucGxhbiktPmZvclBvcnRpb25PZikKKwkJRXhlY0Zv clBvcnRpb25PZkxlZnRvdmVycyhjb250ZXh0LCBjb250ZXh0LT5lc3RhdGUsIHJlc3VsdFJl bEluZm8sIHR1cGxlaWQpOworCiAJLyogQUZURVIgUk9XIFVQREFURSBUcmlnZ2VycyAqLwog CUV4ZWNBUlVwZGF0ZVRyaWdnZXJzKGNvbnRleHQtPmVzdGF0ZSwgcmVzdWx0UmVsSW5mbywK IAkJCQkJCSBOVUxMLCBOVUxMLApAQCAtNDMwMyw2ICs0NDQ4LDExNyBAQCBFeGVjSW5pdE1v ZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkJfQogCX0KIAorCS8qCisJICogSWYgbmVlZGVkLCBpbml0aWFsaXplIHRoZSB0YXJn ZXQgcmFuZ2UgZm9yIEZPUiBQT1JUSU9OIE9GLgorCSAqLworCWlmIChub2RlLT5mb3JQb3J0 aW9uT2YpCisJeworCQlUdXBsZURlc2MgdHVwRGVzYzsKKwkJRm9yUG9ydGlvbk9mRXhwciAq Zm9yUG9ydGlvbk9mOworCQlEYXR1bQl0YXJnZXRSYW5nZTsKKwkJYm9vbAlpc051bGw7CisJ CUV4cHJDb250ZXh0ICplY29udGV4dDsKKwkJRXhwclN0YXRlICpleHByU3RhdGU7CisJCUZv clBvcnRpb25PZlN0YXRlICpmcG9TdGF0ZTsKKworCQlyZXN1bHRSZWxJbmZvID0gbXRzdGF0 ZS0+cmVzdWx0UmVsSW5mbzsKKwkJaWYgKHJlc3VsdFJlbEluZm8tPnJpX1Jvb3RSZXN1bHRS ZWxJbmZvKQorCQkJcmVzdWx0UmVsSW5mbyA9IHJlc3VsdFJlbEluZm8tPnJpX1Jvb3RSZXN1 bHRSZWxJbmZvOworCisJCXR1cERlc2MgPSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRl c2MtPnJkX2F0dDsKKwkJZm9yUG9ydGlvbk9mID0gKEZvclBvcnRpb25PZkV4cHIgKikgbm9k ZS0+Zm9yUG9ydGlvbk9mOworCisJCS8qIEV2YWwgdGhlIEZPUiBQT1JUSU9OIE9GIHRhcmdl dCAqLworCQlpZiAobXRzdGF0ZS0+cHMucHNfRXhwckNvbnRleHQgPT0gTlVMTCkKKwkJCUV4 ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUsICZtdHN0YXRlLT5wcyk7CisJCWVjb250ZXh0 ID0gbXRzdGF0ZS0+cHMucHNfRXhwckNvbnRleHQ7CisKKwkJZXhwclN0YXRlID0gRXhlY1By ZXBhcmVFeHByKChFeHByICopIGZvclBvcnRpb25PZi0+dGFyZ2V0UmFuZ2UsIGVzdGF0ZSk7 CisJCXRhcmdldFJhbmdlID0gRXhlY0V2YWxFeHByKGV4cHJTdGF0ZSwgZWNvbnRleHQsICZp c051bGwpOworCQlpZiAoaXNOdWxsKQorCQkJZWxvZyhFUlJPUiwgIkdvdCBhIE5VTEwgRk9S IFBPUlRJT04gT0YgdGFyZ2V0IHJhbmdlIik7CisKKwkJLyogQ3JlYXRlIHN0YXRlIGZvciBG T1IgUE9SVElPTiBPRiBvcGVyYXRpb24gKi8KKworCQlmcG9TdGF0ZSA9IG1ha2VOb2RlKEZv clBvcnRpb25PZlN0YXRlKTsKKwkJZnBvU3RhdGUtPmZwX3JhbmdlTmFtZSA9IGZvclBvcnRp b25PZi0+cmFuZ2VfbmFtZTsKKwkJZnBvU3RhdGUtPmZwX3JhbmdlVHlwZSA9IGZvclBvcnRp b25PZi0+cmFuZ2VUeXBlOworCQlmcG9TdGF0ZS0+ZnBfcmFuZ2VBdHRubyA9IGZvclBvcnRp b25PZi0+cmFuZ2VWYXItPnZhcmF0dG5vOworCQlmcG9TdGF0ZS0+ZnBfdGFyZ2V0UmFuZ2Ug PSB0YXJnZXRSYW5nZTsKKworCQkvKiBJbml0aWFsaXplIHNsb3QgZm9yIHRoZSBleGlzdGlu ZyB0dXBsZSAqLworCisJCWZwb1N0YXRlLT5mcF9FeGlzdGluZyA9CisJCQl0YWJsZV9zbG90 X2NyZWF0ZShyZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2MsCisJCQkJCQkJICAmbXRz dGF0ZS0+cHMuc3RhdGUtPmVzX3R1cGxlVGFibGUpOworCisJCS8qIENyZWF0ZSB0aGUgdHVw bGUgc2xvdCBmb3IgSU5TRVJUaW5nIHRoZSBsZWZ0b3ZlcnMgKi8KKworCQlmcG9TdGF0ZS0+ ZnBfTGVmdG92ZXIgPQorCQkJRXhlY0luaXRFeHRyYVR1cGxlU2xvdChtdHN0YXRlLT5wcy5z dGF0ZSwgdHVwRGVzYywgJlRUU09wc1ZpcnR1YWwpOworCisJCS8qCisJCSAqIFdlIG11c3Qg YXR0YWNoIHRoZSBGb3JQb3J0aW9uT2ZTdGF0ZSB0byBhbGwgcmVzdWx0IHJlbHMsCisJCSAq IGluIGNhc2Ugb2YgYSBjcm9zcy1wYXJ0aXRpb24gdXBkYXRlIG9yIHRyaWdnZXJzIGZpcmlu ZworCQkgKiBvbiBwYXJ0aXRpb25zLgorCQkgKi8KKwkJZm9yIChpID0gMDsgaSA8IG5yZWxz OyBpKyspCisJCXsKKwkJCUZvclBvcnRpb25PZlN0YXRlCSpsZWFmU3RhdGU7CisJCQlyZXN1 bHRSZWxJbmZvID0gJm10c3RhdGUtPnJlc3VsdFJlbEluZm9baV07CisKKwkJCWxlYWZTdGF0 ZSA9IG1ha2VOb2RlKEZvclBvcnRpb25PZlN0YXRlKTsKKwkJCWxlYWZTdGF0ZS0+ZnBfcmFu Z2VOYW1lID0gZnBvU3RhdGUtPmZwX3JhbmdlTmFtZTsKKwkJCWxlYWZTdGF0ZS0+ZnBfcmFu Z2VUeXBlID0gZnBvU3RhdGUtPmZwX3JhbmdlVHlwZTsKKwkJCWxlYWZTdGF0ZS0+ZnBfcmFu Z2VBdHRubyA9IGZwb1N0YXRlLT5mcF9yYW5nZUF0dG5vOworCQkJbGVhZlN0YXRlLT5mcF90 YXJnZXRSYW5nZSA9IGZwb1N0YXRlLT5mcF90YXJnZXRSYW5nZTsKKwkJCWxlYWZTdGF0ZS0+ ZnBfTGVmdG92ZXIgPSBmcG9TdGF0ZS0+ZnBfTGVmdG92ZXI7CisJCQkvKiBFYWNoIHBhcnRp dGlvbiBuZWVkcyBhIHNsb3QgbWF0Y2hpbmcgaXRzIHR1cGxlIGRlc2NyaXB0b3IgKi8KKwkJ CWxlYWZTdGF0ZS0+ZnBfRXhpc3RpbmcgPQorCQkJCXRhYmxlX3Nsb3RfY3JlYXRlKHJlc3Vs dFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYywKKwkJCQkJCQkJICAmbXRzdGF0ZS0+cHMuc3Rh dGUtPmVzX3R1cGxlVGFibGUpOworCisJCQlyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9u T2YgPSBsZWFmU3RhdGU7CisJCX0KKworCQkvKiBNYWtlIHN1cmUgdGhlIHJvb3QgcmVsYXRp b24gaGFzIHRoZSBGT1IgUE9SVElPTiBPRiBjbGF1c2UgdG9vLiAqLworCQlpZiAobm9kZS0+ cm9vdFJlbGF0aW9uID4gMCkKKwkJCW10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvLT5yaV9m b3JQb3J0aW9uT2YgPSBmcG9TdGF0ZTsKKworCQlpZiAocmVsLT5yZF9yZWwtPnJlbGtpbmQg PT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSAmJgorCQkJCW10c3RhdGUtPm10X3BhcnRp dGlvbl90dXBsZV9yb3V0aW5nID09IE5VTEwpCisJCXsKKwkJCS8qCisJCQkgKiBXZSB3aWxs IG5lZWQgdHVwbGUgcm91dGluZyB0byBpbnNlcnQgbGVmdG92ZXJzLgorCQkJICogU2luY2Ug d2UgYXJlIGluaXRpYWxpemluZyB0aGluZ3MgYmVmb3JlIEV4ZWNDcm9zc1BhcnRpdGlvblVw ZGF0ZSBydW5zLAorCQkJICogd2UgbXVzdCBkbyBldmVyeXRoaW5nIGl0IG5lZWRzIGFzIHdl bGwuCisJCQkgKi8KKwkJCWlmIChtdHN0YXRlLT5tdF9wYXJ0aXRpb25fdHVwbGVfcm91dGlu ZyA9PSBOVUxMKQorCQkJeworCQkJCVJlbGF0aW9uCXJvb3RSZWwgPSBtdHN0YXRlLT5yb290 UmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOworCQkJCU1lbW9yeUNvbnRleHQgb2xk Y3h0OworCisJCQkJLyogVGhpbmdzIGJ1aWx0IGhlcmUgaGF2ZSB0byBsYXN0IGZvciB0aGUg cXVlcnkgZHVyYXRpb24uICovCisJCQkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKworCQkJCW10c3RhdGUtPm10X3BhcnRpdGlvbl90 dXBsZV9yb3V0aW5nID0KKwkJCQkJRXhlY1NldHVwUGFydGl0aW9uVHVwbGVSb3V0aW5nKGVz dGF0ZSwgcm9vdFJlbCk7CisKKwkJCQkvKgorCQkJCSAqIEJlZm9yZSBhIHBhcnRpdGlvbidz IHR1cGxlIGNhbiBiZSByZS1yb3V0ZWQsIGl0IG11c3QgZmlyc3QgYmUKKwkJCQkgKiBjb252 ZXJ0ZWQgdG8gdGhlIHJvb3QncyBmb3JtYXQsIHNvIHdlJ2xsIG5lZWQgYSBzbG90IGZvciBz dG9yaW5nCisJCQkJICogc3VjaCB0dXBsZXMuCisJCQkJICovCisJCQkJQXNzZXJ0KG10c3Rh dGUtPm10X3Jvb3RfdHVwbGVfc2xvdCA9PSBOVUxMKTsKKwkJCQltdHN0YXRlLT5tdF9yb290 X3R1cGxlX3Nsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShyb290UmVsLCBOVUxMKTsKKworCQkJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCQkJfQorCQl9CisKKwkJLyogRG9u J3QgZnJlZSB0aGUgRXhwckNvbnRleHQgaGVyZSBiZWNhdXNlIHRoZSByZXN1bHQgbXVzdCBs YXN0IGZvciB0aGUgd2hvbGUgcXVlcnkgKi8KKwl9CisKIAkvKgogCSAqIElmIHdlIGhhdmUg YW55IHNlY29uZGFyeSByZWxhdGlvbnMgaW4gYW4gVVBEQVRFIG9yIERFTEVURSwgdGhleSBu ZWVkIHRvCiAJICogYmUgdHJlYXRlZCBsaWtlIG5vbi1sb2NrZWQgcmVsYXRpb25zIGluIFNF TEVDVCBGT1IgVVBEQVRFLCBpLmUuLCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25v ZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXgg ZTFhNWJjN2U5NWQuLjZjMTk4NDRlMTdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rl cy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAt MjQ0NCw2ICsyNDQ0LDE0IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpu b2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfRm9y UG9ydGlvbk9mRXhwcjoKKwkJCXsKKwkJCQlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9u T2YgPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoZm9yUG9y dGlvbk9mLT50YXJnZXRSYW5nZSkpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJl YWs7CiAJCWNhc2UgVF9QYXJ0aXRpb25QcnVuZVN0ZXBPcDoKIAkJCXsKIAkJCQlQYXJ0aXRp b25QcnVuZVN0ZXBPcCAqb3BzdGVwID0gKFBhcnRpdGlvblBydW5lU3RlcE9wICopIG5vZGU7 CkBAIC0yNTg0LDYgKzI1OTIsOCBAQCBxdWVyeV90cmVlX3dhbGtlcl9pbXBsKFF1ZXJ5ICpx dWVyeSwKIAkJcmV0dXJuIHRydWU7CiAJaWYgKFdBTEsocXVlcnktPm1lcmdlQWN0aW9uTGlz dCkpCiAJCXJldHVybiB0cnVlOworCWlmIChXQUxLKHF1ZXJ5LT5mb3JQb3J0aW9uT2YpKQor CQlyZXR1cm4gdHJ1ZTsKIAlpZiAoV0FMSyhxdWVyeS0+cmV0dXJuaW5nTGlzdCkpCiAJCXJl dHVybiB0cnVlOwogCWlmIChXQUxLKHF1ZXJ5LT5qb2ludHJlZSkpCkBAIC0zNDMwLDYgKzM0 NDAsMTkgQEAgZXhwcmVzc2lvbl90cmVlX211dGF0b3JfaW1wbChOb2RlICpub2RlLAogCQkJ CXJldHVybiAoTm9kZSAqKSBuZXdub2RlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9G b3JQb3J0aW9uT2ZFeHByOgorCQkJeworCQkJCUZvclBvcnRpb25PZkV4cHIgKmZwbyA9IChG b3JQb3J0aW9uT2ZFeHByICopIG5vZGU7CisJCQkJRm9yUG9ydGlvbk9mRXhwciAqbmV3bm9k ZTsKKworCQkJCUZMQVRDT1BZKG5ld25vZGUsIGZwbywgRm9yUG9ydGlvbk9mRXhwcik7CisJ CQkJTVVUQVRFKG5ld25vZGUtPnJhbmdlVmFyLCBmcG8tPnJhbmdlVmFyLCBWYXIgKik7CisJ CQkJTVVUQVRFKG5ld25vZGUtPnRhcmdldFJhbmdlLCBmcG8tPnRhcmdldFJhbmdlLCBOb2Rl ICopOworCQkJCU1VVEFURShuZXdub2RlLT5yYW5nZVRhcmdldExpc3QsIGZwby0+cmFuZ2VU YXJnZXRMaXN0LCBMaXN0ICopOworCisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJ CQl9CisJCQlicmVhazsKIAkJY2FzZSBUX1BhcnRpdGlvblBydW5lU3RlcE9wOgogCQkJewog CQkJCVBhcnRpdGlvblBydW5lU3RlcE9wICpvcHN0ZXAgPSAoUGFydGl0aW9uUHJ1bmVTdGVw T3AgKikgbm9kZTsKQEAgLTM2MDgsNiArMzYzMSw3IEBAIHF1ZXJ5X3RyZWVfbXV0YXRvcl9p bXBsKFF1ZXJ5ICpxdWVyeSwKIAlNVVRBVEUocXVlcnktPndpdGhDaGVja09wdGlvbnMsIHF1 ZXJ5LT53aXRoQ2hlY2tPcHRpb25zLCBMaXN0ICopOwogCU1VVEFURShxdWVyeS0+b25Db25m bGljdCwgcXVlcnktPm9uQ29uZmxpY3QsIE9uQ29uZmxpY3RFeHByICopOwogCU1VVEFURShx dWVyeS0+bWVyZ2VBY3Rpb25MaXN0LCBxdWVyeS0+bWVyZ2VBY3Rpb25MaXN0LCBMaXN0ICop OworCU1VVEFURShxdWVyeS0+Zm9yUG9ydGlvbk9mLCBxdWVyeS0+Zm9yUG9ydGlvbk9mLCBG b3JQb3J0aW9uT2ZFeHByICopOwogCU1VVEFURShxdWVyeS0+cmV0dXJuaW5nTGlzdCwgcXVl cnktPnJldHVybmluZ0xpc3QsIExpc3QgKik7CiAJTVVUQVRFKHF1ZXJ5LT5qb2ludHJlZSwg cXVlcnktPmpvaW50cmVlLCBGcm9tRXhwciAqKTsKIAlNVVRBVEUocXVlcnktPnNldE9wZXJh dGlvbnMsIHF1ZXJ5LT5zZXRPcGVyYXRpb25zLCBOb2RlICopOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IGNhNjE5ZWFiOTQ0Li40MWY1ZjhkMmY3 YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5j CisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMzEx LDcgKzMxMSw4IEBAIHN0YXRpYyBNb2RpZnlUYWJsZSAqbWFrZV9tb2RpZnl0YWJsZShQbGFu bmVySW5mbyAqcm9vdCwgUGxhbiAqc3VicGxhbiwKIAkJCQkJCQkJCSBMaXN0ICp1cGRhdGVD b2xub3NMaXN0cywKIAkJCQkJCQkJCSBMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlz dCAqcmV0dXJuaW5nTGlzdHMsCiAJCQkJCQkJCQkgTGlzdCAqcm93TWFya3MsIE9uQ29uZmxp Y3RFeHByICpvbmNvbmZsaWN0LAotCQkJCQkJCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdHMs IGludCBlcHFQYXJhbSk7CisJCQkJCQkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgRm9y UG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mLAorCQkJCQkJCQkJIGludCBlcHFQYXJhbSk7 CiBzdGF0aWMgR2F0aGVyTWVyZ2UgKmNyZWF0ZV9nYXRoZXJfbWVyZ2VfcGxhbihQbGFubmVy SW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJIEdhdGhlck1lcmdlUGF0aCAqYmVzdF9wYXRoKTsK IApAQCAtMjgzNSw2ICsyODM2LDcgQEAgY3JlYXRlX21vZGlmeXRhYmxlX3BsYW4oUGxhbm5l ckluZm8gKnJvb3QsIE1vZGlmeVRhYmxlUGF0aCAqYmVzdF9wYXRoKQogCQkJCQkJCWJlc3Rf cGF0aC0+cm93TWFya3MsCiAJCQkJCQkJYmVzdF9wYXRoLT5vbmNvbmZsaWN0LAogCQkJCQkJ CWJlc3RfcGF0aC0+bWVyZ2VBY3Rpb25MaXN0cywKKwkJCQkJCQliZXN0X3BhdGgtPmZvclBv cnRpb25PZiwKIAkJCQkJCQliZXN0X3BhdGgtPmVwcVBhcmFtKTsKIAogCWNvcHlfZ2VuZXJp Y19wYXRoX2luZm8oJnBsYW4tPnBsYW4sICZiZXN0X3BhdGgtPnBhdGgpOwpAQCAtNzAwNSw3 ICs3MDA3LDggQEAgbWFrZV9tb2RpZnl0YWJsZShQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAq c3VicGxhbiwKIAkJCQkgTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJCQkJIExpc3QgKndp dGhDaGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0cywKIAkJCQkgTGlzdCAq cm93TWFya3MsIE9uQ29uZmxpY3RFeHByICpvbmNvbmZsaWN0LAotCQkJCSBMaXN0ICptZXJn ZUFjdGlvbkxpc3RzLCBpbnQgZXBxUGFyYW0pCisJCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlz dHMsIEZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiwKKwkJCQkgaW50IGVwcVBhcmFt KQogewogCU1vZGlmeVRhYmxlICpub2RlID0gbWFrZU5vZGUoTW9kaWZ5VGFibGUpOwogCUxp c3QJICAgKmZkd19wcml2YXRlX2xpc3Q7CkBAIC03MDcxLDYgKzcwNzQsNyBAQCBtYWtlX21v ZGlmeXRhYmxlKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpzdWJwbGFuLAogCQlub2RlLT5l eGNsUmVsVGxpc3QgPSBvbmNvbmZsaWN0LT5leGNsUmVsVGxpc3Q7CiAJfQogCW5vZGUtPnVw ZGF0ZUNvbG5vc0xpc3RzID0gdXBkYXRlQ29sbm9zTGlzdHM7CisJbm9kZS0+Zm9yUG9ydGlv bk9mID0gKE5vZGUgKikgZm9yUG9ydGlvbk9mOwogCW5vZGUtPndpdGhDaGVja09wdGlvbkxp c3RzID0gd2l0aENoZWNrT3B0aW9uTGlzdHM7CiAJbm9kZS0+cmV0dXJuaW5nTGlzdHMgPSBy ZXR1cm5pbmdMaXN0czsKIAlub2RlLT5yb3dNYXJrcyA9IHJvd01hcmtzOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDY2NzcyM2I2NzUzLi4wNDQzNzkzZDNh YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtMTk2Myw2ICsx OTYzLDcgQEAgZ3JvdXBpbmdfcGxhbm5lcihQbGFubmVySW5mbyAqcm9vdCwgZG91YmxlIHR1 cGxlX2ZyYWN0aW9uKQogCQkJCQkJCQkJCXJvd01hcmtzLAogCQkJCQkJCQkJCXBhcnNlLT5v bkNvbmZsaWN0LAogCQkJCQkJCQkJCW1lcmdlQWN0aW9uTGlzdHMsCisJCQkJCQkJCQkJcGFy c2UtPmZvclBvcnRpb25PZiwKIAkJCQkJCQkJCQlhc3NpZ25fc3BlY2lhbF9leGVjX3BhcmFt KHJvb3QpKTsKIAkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9wYXRobm9kZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwpp bmRleCA4ZGJmNzkwZTg5My4uMjJiZGUyMWEzNjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3BhdGhub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcGF0aG5vZGUuYwpAQCAtMzcwOCw3ICszNzA4LDggQEAgY3JlYXRlX21vZGlmeXRh YmxlX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCUxp c3QgKnVwZGF0ZUNvbG5vc0xpc3RzLAogCQkJCQkJTGlzdCAqd2l0aENoZWNrT3B0aW9uTGlz dHMsIExpc3QgKnJldHVybmluZ0xpc3RzLAogCQkJCQkJTGlzdCAqcm93TWFya3MsIE9uQ29u ZmxpY3RFeHByICpvbmNvbmZsaWN0LAotCQkJCQkJTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywg aW50IGVwcVBhcmFtKQorCQkJCQkJTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgRm9yUG9ydGlv bk9mRXhwciAqZm9yUG9ydGlvbk9mLAorCQkJCQkJaW50IGVwcVBhcmFtKQogewogCU1vZGlm eVRhYmxlUGF0aCAqcGF0aG5vZGUgPSBtYWtlTm9kZShNb2RpZnlUYWJsZVBhdGgpOwogCkBA IC0zNzc0LDYgKzM3NzUsNyBAQCBjcmVhdGVfbW9kaWZ5dGFibGVfcGF0aChQbGFubmVySW5m byAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCXBhdGhub2RlLT5yZXR1cm5pbmdMaXN0cyA9 IHJldHVybmluZ0xpc3RzOwogCXBhdGhub2RlLT5yb3dNYXJrcyA9IHJvd01hcmtzOwogCXBh dGhub2RlLT5vbmNvbmZsaWN0ID0gb25jb25mbGljdDsKKwlwYXRobm9kZS0+Zm9yUG9ydGlv bk9mID0gZm9yUG9ydGlvbk9mOwogCXBhdGhub2RlLT5lcHFQYXJhbSA9IGVwcVBhcmFtOwog CXBhdGhub2RlLT5tZXJnZUFjdGlvbkxpc3RzID0gbWVyZ2VBY3Rpb25MaXN0czsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9hbmFseXplLmMKaW5kZXggMDZmYzhjZTk4YjUuLmU3ODY2MjExMDBlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9hbmFseXplLmMKQEAgLTI0LDcgKzI0LDkgQEAKIAogI2luY2x1ZGUgInBvc3RncmVz LmgiCiAKKyNpbmNsdWRlICJhY2Nlc3Mvc3RyYXRudW0uaCIKICNpbmNsdWRlICJhY2Nlc3Mv c3lzYXR0ci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfYW0uaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRl ICJjb21tYW5kcy9kZWZyZW0uaCIKQEAgLTQ3LDExICs0OSwxMyBAQAogI2luY2x1ZGUgInBh cnNlci9wYXJzZV9yZWxhdGlvbi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90YXJnZXQu aCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgorI2luY2x1ZGUgInBhcnNlci9w YXJzZXIuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicmV3 cml0ZS9yZXdyaXRlTWFuaXAuaCIKICNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5o IgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgi CisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgi CiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIApAQCAtNjAsMTAgKzY0LDE2IEBACiBw b3N0X3BhcnNlX2FuYWx5emVfaG9va190eXBlIHBvc3RfcGFyc2VfYW5hbHl6ZV9ob29rID0g TlVMTDsKIAogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1PcHRpb25hbFNlbGVjdEludG8oUGFy c2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUpOworc3RhdGljIE5vZGUgKmFkZEZv clBvcnRpb25PZldoZXJlQ29uZGl0aW9ucyhRdWVyeSAqcXJ5LCBGb3JQb3J0aW9uT2ZDbGF1 c2UgKmZvclBvcnRpb25PZiwKKwkJCQkJCQkJCQkJTm9kZSAqd2hlcmVDbGF1c2UpOwogc3Rh dGljIFF1ZXJ5ICp0cmFuc2Zvcm1EZWxldGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVs ZXRlU3RtdCAqc3RtdCk7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybUluc2VydFN0bXQoUGFy c2VTdGF0ZSAqcHN0YXRlLCBJbnNlcnRTdG10ICpzdG10KTsKIHN0YXRpYyBPbkNvbmZsaWN0 RXhwciAqdHJhbnNmb3JtT25Db25mbGljdENsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJCQkJCQkJCQkgT25Db25mbGljdENsYXVzZSAqb25Db25mbGljdENsYXVzZSk7CitzdGF0 aWMgRm9yUG9ydGlvbk9mRXhwciAqdHJhbnNmb3JtRm9yUG9ydGlvbk9mQ2xhdXNlKFBhcnNl U3RhdGUgKnBzdGF0ZSwKKwkJCQkJCQkJCQkJCQkgaW50IHJ0aW5kZXgsCisJCQkJCQkJCQkJ CQkJIEZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mQ2xhdXNlLAorCQkJCQkJCQkJ CQkJCSBib29sIGlzVXBkYXRlKTsKIHN0YXRpYyBpbnQJY291bnRfcm93ZXhwcl9jb2x1bW5z KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcik7CiBzdGF0aWMgUXVlcnkgKnRyYW5z Zm9ybVNlbGVjdFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10KTsK IHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtVmFsdWVzQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgU2VsZWN0U3RtdCAqc3RtdCk7CkBAIC00NzksNiArNDg5LDIwIEBAIHN0bXRfcmVxdWly ZXNfcGFyc2VfYW5hbHlzaXMoUmF3U3RtdCAqcGFyc2VUcmVlKQogCXJldHVybiByZXN1bHQ7 CiB9CiAKK3N0YXRpYyBOb2RlICoKK2FkZEZvclBvcnRpb25PZldoZXJlQ29uZGl0aW9ucyhR dWVyeSAqcXJ5LCBGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25PZiwgTm9kZSAqd2hl cmVDbGF1c2UpCit7CisJaWYgKGZvclBvcnRpb25PZikKKwl7CisJCWlmICh3aGVyZUNsYXVz ZSkKKwkJCXJldHVybiAoTm9kZSAqKSBtYWtlQm9vbEV4cHIoQU5EX0VYUFIsIGxpc3RfbWFr ZTIocXJ5LT5mb3JQb3J0aW9uT2YtPm92ZXJsYXBzRXhwciwgd2hlcmVDbGF1c2UpLCAtMSk7 CisJCWVsc2UKKwkJCXJldHVybiBxcnktPmZvclBvcnRpb25PZi0+b3ZlcmxhcHNFeHByOwor CX0KKwllbHNlCisJCXJldHVybiB3aGVyZUNsYXVzZTsKK30KKwogLyoKICAqIGFuYWx5emVf cmVxdWlyZXNfc25hcHNob3QKICAqCQlSZXR1cm5zIHRydWUgaWYgYSBzbmFwc2hvdCBtdXN0 IGJlIHNldCBiZWZvcmUgZG9pbmcgcGFyc2UgYW5hbHlzaXMKQEAgLTUxMiw2ICs1MzYsNyBA QCB0cmFuc2Zvcm1EZWxldGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVsZXRlU3RtdCAq c3RtdCkKIHsKIAlRdWVyeQkgICAqcXJ5ID0gbWFrZU5vZGUoUXVlcnkpOwogCVBhcnNlTmFt ZXNwYWNlSXRlbSAqbnNpdGVtOworCU5vZGUJICAgKndoZXJlQ2xhdXNlOwogCU5vZGUJICAg KnF1YWw7CiAKIAlxcnktPmNvbW1hbmRUeXBlID0gQ01EX0RFTEVURTsKQEAgLTU1MCw3ICs1 NzUsMTEgQEAgdHJhbnNmb3JtRGVsZXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIERlbGV0 ZVN0bXQgKnN0bXQpCiAJbnNpdGVtLT5wX2xhdGVyYWxfb25seSA9IGZhbHNlOwogCW5zaXRl bS0+cF9sYXRlcmFsX29rID0gdHJ1ZTsKIAotCXF1YWwgPSB0cmFuc2Zvcm1XaGVyZUNsYXVz ZShwc3RhdGUsIHN0bXQtPndoZXJlQ2xhdXNlLAorCWlmIChzdG10LT5mb3JQb3J0aW9uT2Yp CisJCXFyeS0+Zm9yUG9ydGlvbk9mID0gdHJhbnNmb3JtRm9yUG9ydGlvbk9mQ2xhdXNlKHBz dGF0ZSwgcXJ5LT5yZXN1bHRSZWxhdGlvbiwgc3RtdC0+Zm9yUG9ydGlvbk9mLCBmYWxzZSk7 CisKKwl3aGVyZUNsYXVzZSA9IGFkZEZvclBvcnRpb25PZldoZXJlQ29uZGl0aW9ucyhxcnks IHN0bXQtPmZvclBvcnRpb25PZiwgc3RtdC0+d2hlcmVDbGF1c2UpOworCXF1YWwgPSB0cmFu c2Zvcm1XaGVyZUNsYXVzZShwc3RhdGUsIHdoZXJlQ2xhdXNlLAogCQkJCQkJCQlFWFBSX0tJ TkRfV0hFUkUsICJXSEVSRSIpOwogCiAJcXJ5LT5yZXR1cm5pbmdMaXN0ID0gdHJhbnNmb3Jt UmV0dXJuaW5nTGlzdChwc3RhdGUsIHN0bXQtPnJldHVybmluZ0xpc3QpOwpAQCAtMTE3Myw3 ICsxMjAyLDcgQEAgdHJhbnNmb3JtT25Db25mbGljdENsYXVzZShQYXJzZVN0YXRlICpwc3Rh dGUsCiAJCSAqIE5vdyB0cmFuc2Zvcm0gdGhlIFVQREFURSBzdWJleHByZXNzaW9ucy4KIAkJ ICovCiAJCW9uQ29uZmxpY3RTZXQgPQotCQkJdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChw c3RhdGUsIG9uQ29uZmxpY3RDbGF1c2UtPnRhcmdldExpc3QpOworCQkJdHJhbnNmb3JtVXBk YXRlVGFyZ2V0TGlzdChwc3RhdGUsIG9uQ29uZmxpY3RDbGF1c2UtPnRhcmdldExpc3QsIE5V TEwpOwogCiAJCW9uQ29uZmxpY3RXaGVyZSA9IHRyYW5zZm9ybVdoZXJlQ2xhdXNlKHBzdGF0 ZSwKIAkJCQkJCQkJCQkJICAgb25Db25mbGljdENsYXVzZS0+d2hlcmVDbGF1c2UsCkBAIC0x MjAzLDYgKzEyMzIsMTU1IEBAIHRyYW5zZm9ybU9uQ29uZmxpY3RDbGF1c2UoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiB0cmFuc2Zvcm1Gb3JQ b3J0aW9uT2ZDbGF1c2UKKyAqCisgKgkgIFRyYW5zZm9ybXMgYSBGb3JQb3J0aW9uT2ZDbGF1 c2UgaW4gYW4gVVBEQVRFL0RFTEVURSBzdGF0ZW1lbnQuCisgKgorICoJICAtIExvb2sgdXAg dGhlIHJhbmdlL3BlcmlvZCByZXF1ZXN0ZWQuCisgKgkgIC0gQnVpbGQgYSBjb21wYXRpYmxl IHJhbmdlIHZhbHVlIGZyb20gdGhlIEZST00gYW5kIFRPIGV4cHJlc3Npb25zLgorICoJICAt IEJ1aWxkIGFuICJvdmVybGFwcyIgZXhwcmVzc2lvbiBmb3IgZmlsdGVyaW5nLgorICoJICAt IEZvciBVUERBVEVzLCBidWlsZCBhbiAiaW50ZXJzZWN0cyIgZXhwcmVzc2lvbiB0aGUgcmV3 cml0ZXIgY2FuIGFkZAorICoJCXRvIHRoZSB0YXJnZXRMaXN0IHRvIGNoYW5nZSB0aGUgdGVt cG9yYWwgYm91bmRzLgorICovCitzdGF0aWMgRm9yUG9ydGlvbk9mRXhwciAqCit0cmFuc2Zv cm1Gb3JQb3J0aW9uT2ZDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCQkJCWludCBy dGluZGV4LAorCQkJCQkJCUZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mLAorCQkJ CQkJCWJvb2wgaXNVcGRhdGUpCit7CisJUmVsYXRpb24gdGFyZ2V0cmVsID0gcHN0YXRlLT5w X3RhcmdldF9yZWxhdGlvbjsKKwlSVEVQZXJtaXNzaW9uSW5mbyAqdGFyZ2V0X3Blcm1pbmZv ID0gcHN0YXRlLT5wX3RhcmdldF9uc2l0ZW0tPnBfcGVybWluZm87CisJY2hhciAqcmFuZ2Vf bmFtZSA9IGZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZTsKKwljaGFyICpyYW5nZV90eXBlX25h bWVzcGFjZSA9IE5VTEw7CisJY2hhciAqcmFuZ2VfdHlwZV9uYW1lID0gTlVMTDsKKwlpbnQg cmFuZ2VfYXR0bm8gPSBJbnZhbGlkQXR0ck51bWJlcjsKKwlGb3JtX3BnX2F0dHJpYnV0ZSBh dHRyOworCU9pZAlvcGNsYXNzOworCVN0cmF0ZWd5TnVtYmVyIHN0cmF0OworCU9pZAlvcGlk OworCUZvclBvcnRpb25PZkV4cHIgKnJlc3VsdDsKKwlWYXIgKnJhbmdlVmFyOworCU5vZGUg KnRhcmdldEV4cHI7CisKKwkvKiBXZSBkb24ndCBzdXBwb3J0IEZPUiBQT1JUSU9OIE9GIEZE VyBxdWVyaWVzLiAqLworCWlmICh0YXJnZXRyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxL SU5EX0ZPUkVJR05fVEFCTEUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coImZvcmVpZ24gdGFi bGVzIGRvbid0IHN1cHBvcnQgRk9SIFBPUlRJT04gT0YiKSkpOworCisJcmVzdWx0ID0gbWFr ZU5vZGUoRm9yUG9ydGlvbk9mRXhwcik7CisKKwkvKiBMb29rIHVwIHRoZSBGT1IgUE9SVElP TiBPRiBuYW1lIHJlcXVlc3RlZC4gKi8KKwlyYW5nZV9hdHRubyA9IGF0dG5hbWVBdHROdW0o dGFyZ2V0cmVsLCByYW5nZV9uYW1lLCBmYWxzZSk7CisJaWYgKHJhbmdlX2F0dG5vID09IElu dmFsaWRBdHRyTnVtYmVyKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVycm1zZygiY29sdW1uIG9yIHBlcmlvZCBc IiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCXJhbmdl X25hbWUsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZm9yUG9ydGlvbk9mLT5sb2NhdGlvbikp KTsKKwlhdHRyID0gVHVwbGVEZXNjQXR0cih0YXJnZXRyZWwtPnJkX2F0dCwgcmFuZ2VfYXR0 bm8gLSAxKTsKKworCS8qIE1ha2Ugc3VyZSBpdCdzIGEgcmFuZ2UgY29sdW1uICovCisJaWYg KCF0eXBlX2lzX3JhbmdlKGF0dHItPmF0dHR5cGlkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfQ09MVU1OX1JFRkVSRU5DRSksCisJCQkJIGVy cm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgaXMgbm90IGEgcmFuZ2Ug dHlwZSIsCisJCQkJCQlyYW5nZV9uYW1lLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUodGFyZ2V0cmVsKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGZvclBv cnRpb25PZi0+bG9jYXRpb24pKSk7CisKKwlyYW5nZVZhciA9IG1ha2VWYXIoCisJCQlydGlu ZGV4LAorCQkJcmFuZ2VfYXR0bm8sCisJCQlhdHRyLT5hdHR0eXBpZCwKKwkJCWF0dHItPmF0 dHR5cG1vZCwKKwkJCWF0dHItPmF0dGNvbGxhdGlvbiwKKwkJCTApOworCXJhbmdlVmFyLT5s b2NhdGlvbiA9IGZvclBvcnRpb25PZi0+bG9jYXRpb247CisJcmVzdWx0LT5yYW5nZVZhciA9 IHJhbmdlVmFyOworCXJlc3VsdC0+cmFuZ2VUeXBlID0gYXR0ci0+YXR0dHlwaWQ7CisJaWYg KCFnZXRfdHlwbmFtZV9hbmRfbmFtZXNwYWNlKGF0dHItPmF0dHR5cGlkLCAmcmFuZ2VfdHlw ZV9uYW1lLCAmcmFuZ2VfdHlwZV9uYW1lc3BhY2UpKQorCQllbG9nKEVSUk9SLCAibWlzc2lu ZyByYW5nZSB0eXBlICVkIiwgYXR0ci0+YXR0dHlwaWQpOworCisKKwlpZiAoZm9yUG9ydGlv bk9mLT50YXJnZXQpCisJCS8qCisJCSAqIFdlIHdlcmUgYWxyZWFkeSBnaXZlbiBhbiBleHBy ZXNzaW9uIGZvciB0aGUgdGFyZ2V0LAorCQkgKiBzbyB3ZSBkb24ndCBoYXZlIHRvIGJ1aWxk IGFueXRoaW5nLgorCQkgKi8KKwkJdGFyZ2V0RXhwciA9IGZvclBvcnRpb25PZi0+dGFyZ2V0 OworCWVsc2UKKwl7CisJCS8qCisJCSAqIEJ1aWxkIGEgcmFuZ2UgZnJvbSB0aGUgRlJPTSAu Li4gVE8gLi4uLiBib3VuZHMuCisJCSAqIFRoaXMgc2hvdWxkIGdpdmUgYSBjb25zdGFudCBy ZXN1bHQsIHNvIHdlIGFjY2VwdCBmdW5jdGlvbnMgbGlrZSBOT1coKQorCQkgKiBidXQgbm90 IGNvbHVtbiByZWZlcmVuY2VzLCBzdWJxdWVyaWVzLCBldGMuCisJCSAqCisJCSAqIEl0IGFs c28gcGVybWl0cyBVTkJPVU5ERUQgaW4gZWl0aGVyIHBsYWNlLgorCQkgKi8KKwkJdGFyZ2V0 RXhwciA9IChOb2RlICopIG1ha2VGdW5jQ2FsbCgKKwkJCQlsaXN0X21ha2UyKG1ha2VTdHJp bmcocmFuZ2VfdHlwZV9uYW1lc3BhY2UpLCBtYWtlU3RyaW5nKHJhbmdlX3R5cGVfbmFtZSkp LAorCQkJCWxpc3RfbWFrZTIoZm9yUG9ydGlvbk9mLT50YXJnZXRfc3RhcnQsIGZvclBvcnRp b25PZi0+dGFyZ2V0X2VuZCksCisJCQkJQ09FUkNFX0VYUExJQ0lUX0NBTEwsCisJCQkJZm9y UG9ydGlvbk9mLT5sb2NhdGlvbik7CisJfQorCXJlc3VsdC0+dGFyZ2V0UmFuZ2UgPSB0cmFu c2Zvcm1FeHByKHBzdGF0ZSwgdGFyZ2V0RXhwciwgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9O KTsKKworCS8qCisJICogQnVpbGQgb3ZlcmxhcHNFeHByIHRvIHVzZSBpbiB0aGUgd2hlcmVD bGF1c2UuCisJICogVGhpcyBtZWFucyB3ZSBvbmx5IGhpdCByb3dzIG1hdGNoaW5nIHRoZSBG Uk9NICYgVE8gYm91bmRzLgorCSAqIFdlIG11c3QgbG9vayB1cCB0aGUgb3ZlcmxhcHMgb3Bl cmF0b3IgKHVzdWFsbHkgIiYmIikuCisJICovCisJb3BjbGFzcyA9IEdldERlZmF1bHRPcENs YXNzKGF0dHItPmF0dHR5cGlkLCBHSVNUX0FNX09JRCk7CisJc3RyYXQgPSBSVE92ZXJsYXBT dHJhdGVneU51bWJlcjsKKwlHZXRPcGVyYXRvckZyb21XZWxsS25vd25TdHJhdGVneShvcGNs YXNzLCBJbnZhbGlkT2lkLCAib3ZlcmxhcHMiLCAiRk9SIFBPUlRJT04gT0YiLCAmb3BpZCwg JnN0cmF0KTsKKwlyZXN1bHQtPm92ZXJsYXBzRXhwciA9IChOb2RlICopIG1ha2VTaW1wbGVB X0V4cHIoQUVYUFJfT1AsIGdldF9vcG5hbWUob3BpZCksCisJCQkoTm9kZSAqKSBjb3B5T2Jq ZWN0KHJhbmdlVmFyKSwgdGFyZ2V0RXhwciwKKwkJCWZvclBvcnRpb25PZi0+bG9jYXRpb24p OworCisJLyoKKwkgKiBMb29rIHVwIHRoZSB3aXRob3V0UG9ydGlvbk9wZXIgc28gd2UgY2Fu IGNvbXB1dGUgdGhlIGxlZnRvdmVycy4KKwkgKiBMZWZ0b3ZlcnMgd2lsbCBiZSBvbGRfcmFu Z2UgQC0gdGFyZ2V0X3JhbmdlCisJICogKG9uZSBwZXIgZWxlbWVudCBvZiB0aGUgcmVzdWx0 KS4KKwkgKi8KKwlzdHJhdCA9IFJUV2l0aG91dFBvcnRpb25TdHJhdGVneU51bWJlcjsKKwlH ZXRPcGVyYXRvckZyb21XZWxsS25vd25TdHJhdGVneShvcGNsYXNzLCBJbnZhbGlkT2lkLCAi d2l0aG91dCBwb3J0aW9uIiwgIkZPUiBQT1JUSU9OIE9GIiwgJm9waWQsICZzdHJhdCk7CisJ cmVzdWx0LT53aXRob3V0UG9ydGlvblByb2MgPSBnZXRfb3Bjb2RlKG9waWQpOworCisJaWYg KGlzVXBkYXRlKQorCXsKKwkJLyoKKwkJICogTm93IG1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhl IHN0YXJ0L2VuZCB0aW1lIG9mIHRoZSByZWNvcmQuCisJCSAqIEZvciBhIHJhbmdlIGNvbCAo cikgdGhpcyBpcyBgciA9IHIgKiB0YXJnZXRSYW5nZWAuCisJCSAqLworCQlFeHByICpyYW5n ZVRMRUV4cHI7CisJCVRhcmdldEVudHJ5ICp0bGU7CisKKwkJc3RyYXQgPSBSVEludGVyc2Vj dFN0cmF0ZWd5TnVtYmVyOworCQlHZXRPcGVyYXRvckZyb21XZWxsS25vd25TdHJhdGVneShv cGNsYXNzLCBJbnZhbGlkT2lkLCAiaW50ZXJzZWN0cyIsICJGT1IgUE9SVElPTiBPRiIsICZv cGlkLCAmc3RyYXQpOworCQlyYW5nZVRMRUV4cHIgPSAoRXhwciAqKSBtYWtlU2ltcGxlQV9F eHByKEFFWFBSX09QLCBnZXRfb3BuYW1lKG9waWQpLAorCQkJCShOb2RlICopIGNvcHlPYmpl Y3QocmFuZ2VWYXIpLCB0YXJnZXRFeHByLAorCQkJCWZvclBvcnRpb25PZi0+bG9jYXRpb24p OworCQlyYW5nZVRMRUV4cHIgPSAoRXhwciAqKSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgKE5v ZGUgKikgcmFuZ2VUTEVFeHByLCBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT04pOworCisJCS8q IE1ha2UgYSBUTEUgdG8gc2V0IHRoZSByYW5nZSBjb2x1bW4gKi8KKwkJcmVzdWx0LT5yYW5n ZVRhcmdldExpc3QgPSBOSUw7CisJCXRsZSA9IG1ha2VUYXJnZXRFbnRyeShyYW5nZVRMRUV4 cHIsIHJhbmdlX2F0dG5vLCByYW5nZV9uYW1lLCBmYWxzZSk7CisJCXJlc3VsdC0+cmFuZ2VU YXJnZXRMaXN0ID0gbGFwcGVuZChyZXN1bHQtPnJhbmdlVGFyZ2V0TGlzdCwgdGxlKTsKKwor CQkvKiBNYXJrIHRoZSByYW5nZSBjb2x1bW4gYXMgcmVxdWlyaW5nIHVwZGF0ZSBwZXJtaXNz aW9ucyAqLworCQl0YXJnZXRfcGVybWluZm8tPnVwZGF0ZWRDb2xzID0gYm1zX2FkZF9tZW1i ZXIodGFyZ2V0X3Blcm1pbmZvLT51cGRhdGVkQ29scywKKwkJCQkJCQkJCQkJCQkgIHJhbmdl X2F0dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJfQorCWVs c2UKKwkJcmVzdWx0LT5yYW5nZVRhcmdldExpc3QgPSBOSUw7CisKKwlyZXN1bHQtPnJhbmdl X25hbWUgPSByYW5nZV9uYW1lOworCisJcmV0dXJuIHJlc3VsdDsKK30KIAogLyoKICAqIEJ1 aWxkT25Db25mbGljdEV4Y2x1ZGVkVGFyZ2V0bGlzdApAQCAtMjQwOSw2ICsyNTg3LDcgQEAg dHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0 bXQpCiB7CiAJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKIAlQYXJzZU5hbWVz cGFjZUl0ZW0gKm5zaXRlbTsKKwlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlOb2RlCSAgICpx dWFsOwogCiAJcXJ5LT5jb21tYW5kVHlwZSA9IENNRF9VUERBVEU7CkBAIC0yNDI2LDYgKzI2 MDUsMTAgQEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0 ZVN0bXQgKnN0bXQpCiAJCQkJCQkJCQkJIHN0bXQtPnJlbGF0aW9uLT5pbmgsCiAJCQkJCQkJ CQkJIHRydWUsCiAJCQkJCQkJCQkJIEFDTF9VUERBVEUpOworCisJaWYgKHN0bXQtPmZvclBv cnRpb25PZikKKwkJcXJ5LT5mb3JQb3J0aW9uT2YgPSB0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZD bGF1c2UocHN0YXRlLCBxcnktPnJlc3VsdFJlbGF0aW9uLCBzdG10LT5mb3JQb3J0aW9uT2Ys IHRydWUpOworCiAJbnNpdGVtID0gcHN0YXRlLT5wX3RhcmdldF9uc2l0ZW07CiAKIAkvKiBz dWJxdWVyaWVzIGluIEZST00gY2Fubm90IGFjY2VzcyB0aGUgcmVzdWx0IHJlbGF0aW9uICov CkBAIC0yNDQyLDcgKzI2MjUsOCBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3RhdGUg KnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIAluc2l0ZW0tPnBfbGF0ZXJhbF9vbmx5ID0g ZmFsc2U7CiAJbnNpdGVtLT5wX2xhdGVyYWxfb2sgPSB0cnVlOwogCi0JcXVhbCA9IHRyYW5z Zm9ybVdoZXJlQ2xhdXNlKHBzdGF0ZSwgc3RtdC0+d2hlcmVDbGF1c2UsCisJd2hlcmVDbGF1 c2UgPSBhZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMocXJ5LCBzdG10LT5mb3JQb3J0 aW9uT2YsIHN0bXQtPndoZXJlQ2xhdXNlKTsKKwlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1 c2UocHN0YXRlLCB3aGVyZUNsYXVzZSwKIAkJCQkJCQkJRVhQUl9LSU5EX1dIRVJFLCAiV0hF UkUiKTsKIAogCXFyeS0+cmV0dXJuaW5nTGlzdCA9IHRyYW5zZm9ybVJldHVybmluZ0xpc3Qo cHN0YXRlLCBzdG10LT5yZXR1cm5pbmdMaXN0KTsKQEAgLTI0NTEsNyArMjYzNSw3IEBAIHRy YW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10 KQogCSAqIE5vdyB3ZSBhcmUgZG9uZSB3aXRoIFNFTEVDVC1saWtlIHByb2Nlc3NpbmcsIGFu ZCBjYW4gZ2V0IG9uIHdpdGgKIAkgKiB0cmFuc2Zvcm1pbmcgdGhlIHRhcmdldCBsaXN0IHRv IG1hdGNoIHRoZSBVUERBVEUgdGFyZ2V0IGNvbHVtbnMuCiAJICovCi0JcXJ5LT50YXJnZXRM aXN0ID0gdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChwc3RhdGUsIHN0bXQtPnRhcmdldExp c3QpOworCXFyeS0+dGFyZ2V0TGlzdCA9IHRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0 YXRlLCBzdG10LT50YXJnZXRMaXN0LCBxcnktPmZvclBvcnRpb25PZik7CiAKIAlxcnktPnJ0 YWJsZSA9IHBzdGF0ZS0+cF9ydGFibGU7CiAJcXJ5LT5ydGVwZXJtaW5mb3MgPSBwc3RhdGUt PnBfcnRlcGVybWluZm9zOwpAQCAtMjQ3MCw3ICsyNjU0LDcgQEAgdHJhbnNmb3JtVXBkYXRl U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAgKgloYW5kbGUg U0VUIGNsYXVzZSBpbiBVUERBVEUvTUVSR0UvSU5TRVJUIC4uLiBPTiBDT05GTElDVCBVUERB VEUKICAqLwogTGlzdCAqCi10cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KFBhcnNlU3RhdGUg KnBzdGF0ZSwgTGlzdCAqb3JpZ1RsaXN0KQordHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQ YXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9yaWdUbGlzdCwgRm9yUG9ydGlvbk9mRXhwciAq Zm9yUG9ydGlvbk9mKQogewogCUxpc3QJICAgKnRsaXN0ID0gTklMOwogCVJURVBlcm1pc3Np b25JbmZvICp0YXJnZXRfcGVybWluZm87CkBAIC0yNTIwLDYgKzI3MDQsMjEgQEAgdHJhbnNm b3JtVXBkYXRlVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9yaWdUbGlz dCkKIAkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwc3RhdGUtPnBfdGFyZ2V0X3Jl bGF0aW9uKSksCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvcmlnVGFyZ2V0 LT5sb2NhdGlvbikpKTsKIAorCQkvKgorCQkgKiBJZiB0aGlzIGlzIGEgRk9SIFBPUlRJT04g T0YgdXBkYXRlLAorCQkgKiBmb3JiaWQgZGlyZWN0bHkgc2V0dGluZyB0aGUgcmFuZ2UgY29s dW1uLAorCQkgKiBzaW5jZSB0aGF0IHdvdWxkIGNvbmZsaWN0IHdpdGggdGhlIGltcGxpY2l0 IHVwZGF0ZXMuCisJCSAqLworCQlpZiAoZm9yUG9ydGlvbk9mICE9IE5VTEwpCisJCXsKKwkJ CWlmIChhdHRybm8gPT0gZm9yUG9ydGlvbk9mLT5yYW5nZVZhci0+dmFyYXR0bm8pCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkJCSBlcnJtc2coImNhbid0IGRpcmVjdGx5IGFzc2lnbiB0byBcIiVzXCIgaW4gYSBG T1IgUE9SVElPTiBPRiB1cGRhdGUiLAorCQkJCQkJCQlvcmlnVGFyZ2V0LT5uYW1lKSwKKwkJ CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvcmlnVGFyZ2V0LT5sb2NhdGlvbikp KTsKKwkJfQorCiAJCXVwZGF0ZVRhcmdldExpc3RFbnRyeShwc3RhdGUsIHRsZSwgb3JpZ1Rh cmdldC0+bmFtZSwKIAkJCQkJCQkgIGF0dHJubywKIAkJCQkJCQkgIG9yaWdUYXJnZXQtPmlu ZGlyZWN0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggYTExODIwNDJiODYuLmM4NWI4YjA5NGVj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKQEAgLTI1OCw2ICsyNTgsNyBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9k ZSAqcXVlcnkpOwogCVJhbmdlVmFyICAgKnJhbmdlOwogCUludG9DbGF1c2UgKmludG87CiAJ V2l0aENsYXVzZSAqd2l0aDsKKwlGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvcnBvcnRpb25vZjsK IAlJbmZlckNsYXVzZQkqaW5mZXI7CiAJT25Db25mbGljdENsYXVzZSAqb25jb25mbGljdDsK IAlBX0luZGljZXMgICphaW5kOwpAQCAtNTUxLDYgKzU1Miw3IEBAIHN0YXRpYyBOb2RlICpt YWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBO b2RlICpxdWVyeSk7CiAldHlwZSA8cmFuZ2U+CXJlbGF0aW9uX2V4cHIKICV0eXBlIDxyYW5n ZT4JZXh0ZW5kZWRfcmVsYXRpb25fZXhwcgogJXR5cGUgPHJhbmdlPglyZWxhdGlvbl9leHBy X29wdF9hbGlhcworJXR5cGUgPGZvcnBvcnRpb25vZj4gZm9yX3BvcnRpb25fb2ZfY2xhdXNl CiAldHlwZSA8bm9kZT4JdGFibGVzYW1wbGVfY2xhdXNlIG9wdF9yZXBlYXRhYmxlX2NsYXVz ZQogJXR5cGUgPHRhcmdldD4JdGFyZ2V0X2VsIHNldF90YXJnZXQgaW5zZXJ0X2NvbHVtbl9p dGVtCiAKQEAgLTc0Nyw3ICs3NDksNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZp ZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwog CiAJUEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5H IFBBU1NXT1JECiAJUEVSSU9EIFBMQUNJTkcgUExBTlMgUE9MSUNZCi0JUE9TSVRJT04gUFJF Q0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKKwlQ T1JUSU9OIFBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQ UkVQQVJFRCBQUklNQVJZCiAJUFJJT1IgUFJJVklMRUdFUyBQUk9DRURVUkFMIFBST0NFRFVS RSBQUk9DRURVUkVTIFBST0dSQU0gUFVCTElDQVRJT04KIAogCVFVT1RFCkBAIC04NjUsNiAr ODY3LDE3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAgKiBqc29uX3ByZWRpY2F0 ZV90eXBlX2NvbnN0cmFpbnQgYW5kIGpzb25fa2V5X3VuaXF1ZW5lc3NfY29uc3RyYWludF9v cHQKICAqIHByb2R1Y3Rpb25zIChzZWUgY29tbWVudHMgdGhlcmUpLgogICovCisvKgorICog V2UgbmVlZCB0byBoYW5kbGUgdGhpcyBzaGlmdC9yZWR1Y2UgY29uZmxpY3Q6CisgKiBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIElOVEVSVkFMIFlFQVIgVE8gTU9OVEggVE8gZm9v LgorICogVGhpcyBpcyBiYXNpY2FsbHkgdGhlIGNsYXNzaWMgImRhbmdsaW5nIGVsc2UiIHBy b2JsZW0sIGFuZCB3ZSB3YW50IGEKKyAqIHNpbWlsYXIgcmVzb2x1dGlvbjogdHJlYXQgdGhl IFRPIGFzIHBhcnQgb2YgdGhlIElOVEVSVkFMLCBub3QgYXMgcGFydCBvZgorICogdGhlIEZS T00gLi4uIFRPIC4uLi4gVXNlcnMgY2FuIGFkZCBwYXJlbnRoZXNlcyBpZiB0aGF0J3MgYSBw cm9ibGVtLgorICogVE8ganVzdCBuZWVkcyB0byBiZSBoaWdoZXIgcHJlY2VkZW5jZSB0aGFu IFlFQVJfUCBldGMuCisgKiBUT0RPOiBJIG5lZWQgdG8gZmlndXJlIG91dCBhICVwcmVjIHNv bHV0aW9uIGJlZm9yZSB0aGlzIGdldHMgY29tbWl0dGVkIQorICovCislbm9uYXNzb2MgWUVB Ul9QIE1PTlRIX1AgREFZX1AgSE9VUl9QIE1JTlVURV9QCislbm9uYXNzb2MgVE8KICVub25h c3NvYwlVTkJPVU5ERUQJCS8qIGlkZWFsbHkgd291bGQgaGF2ZSBzYW1lIHByZWNlZGVuY2Ug YXMgSURFTlQgKi8KICVub25hc3NvYwlJREVOVCBQQVJUSVRJT04gUkFOR0UgUk9XUyBHUk9V UFMgUFJFQ0VESU5HIEZPTExPV0lORyBDVUJFIFJPTExVUAogCQkJU0VUIEtFWVMgT0JKRUNU X1AgU0NBTEFSIFZBTFVFX1AgV0lUSCBXSVRIT1VUCkBAIC0xMjIzMSwxNCArMTIyNDQsMTYg QEAgcmV0dXJuaW5nX2NsYXVzZToKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogRGVs ZXRlU3RtdDogb3B0X3dpdGhfY2xhdXNlIERFTEVURV9QIEZST00gcmVsYXRpb25fZXhwcl9v cHRfYWxpYXMKKwkJCWZvcl9wb3J0aW9uX29mX2NsYXVzZQogCQkJdXNpbmdfY2xhdXNlIHdo ZXJlX29yX2N1cnJlbnRfY2xhdXNlIHJldHVybmluZ19jbGF1c2UKIAkJCQl7CiAJCQkJCURl bGV0ZVN0bXQgKm4gPSBtYWtlTm9kZShEZWxldGVTdG10KTsKIAogCQkJCQluLT5yZWxhdGlv biA9ICQ0OwotCQkJCQluLT51c2luZ0NsYXVzZSA9ICQ1OwotCQkJCQluLT53aGVyZUNsYXVz ZSA9ICQ2OwotCQkJCQluLT5yZXR1cm5pbmdMaXN0ID0gJDc7CisJCQkJCW4tPmZvclBvcnRp b25PZiA9ICQ1OworCQkJCQluLT51c2luZ0NsYXVzZSA9ICQ2OworCQkJCQluLT53aGVyZUNs YXVzZSA9ICQ3OworCQkJCQluLT5yZXR1cm5pbmdMaXN0ID0gJDg7CiAJCQkJCW4tPndpdGhD bGF1c2UgPSAkMTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KQEAgLTEyMzAxLDYg KzEyMzE2LDcgQEAgb3B0X25vd2FpdF9vcl9za2lwOgogICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwogCiBVcGRhdGVTdG10OiBvcHRfd2l0aF9jbGF1c2UgVVBEQVRFIHJlbGF0aW9uX2V4 cHJfb3B0X2FsaWFzCisJCQlmb3JfcG9ydGlvbl9vZl9jbGF1c2UKIAkJCVNFVCBzZXRfY2xh dXNlX2xpc3QKIAkJCWZyb21fY2xhdXNlCiAJCQl3aGVyZV9vcl9jdXJyZW50X2NsYXVzZQpA QCAtMTIzMDksMTAgKzEyMzI1LDExIEBAIFVwZGF0ZVN0bXQ6IG9wdF93aXRoX2NsYXVzZSBV UERBVEUgcmVsYXRpb25fZXhwcl9vcHRfYWxpYXMKIAkJCQkJVXBkYXRlU3RtdCAqbiA9IG1h a2VOb2RlKFVwZGF0ZVN0bXQpOwogCiAJCQkJCW4tPnJlbGF0aW9uID0gJDM7Ci0JCQkJCW4t PnRhcmdldExpc3QgPSAkNTsKLQkJCQkJbi0+ZnJvbUNsYXVzZSA9ICQ2OwotCQkJCQluLT53 aGVyZUNsYXVzZSA9ICQ3OwotCQkJCQluLT5yZXR1cm5pbmdMaXN0ID0gJDg7CisJCQkJCW4t PmZvclBvcnRpb25PZiA9ICQ0OworCQkJCQluLT50YXJnZXRMaXN0ID0gJDY7CisJCQkJCW4t PmZyb21DbGF1c2UgPSAkNzsKKwkJCQkJbi0+d2hlcmVDbGF1c2UgPSAkODsKKwkJCQkJbi0+ cmV0dXJuaW5nTGlzdCA9ICQ5OwogCQkJCQluLT53aXRoQ2xhdXNlID0gJDE7CiAJCQkJCSQk ID0gKE5vZGUgKikgbjsKIAkJCQl9CkBAIC0xMzc0OCw2ICsxMzc2NSwyNyBAQCByZWxhdGlv bl9leHByX29wdF9hbGlhczogcmVsYXRpb25fZXhwcgkJCQkJJXByZWMgVU1JTlVTCiAJCQkJ fQogCQk7CiAKK2Zvcl9wb3J0aW9uX29mX2NsYXVzZToKKwkJCUZPUiBQT1JUSU9OIE9GIENv bElkICcoJyBhX2V4cHIgJyknCisJCQkJeworCQkJCQlGb3JQb3J0aW9uT2ZDbGF1c2UgKm4g PSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZDbGF1c2UpOworCQkJCQluLT5yYW5nZV9uYW1lID0g JDQ7CisJCQkJCW4tPmxvY2F0aW9uID0gQDQ7CisJCQkJCW4tPnRhcmdldCA9ICQ2OworCQkJ CQkkJCA9IG47CisJCQkJfQorCQkJfCBGT1IgUE9SVElPTiBPRiBDb2xJZCBGUk9NIGFfZXhw ciBUTyBhX2V4cHIKKwkJCQl7CisJCQkJCUZvclBvcnRpb25PZkNsYXVzZSAqbiA9IG1ha2VO b2RlKEZvclBvcnRpb25PZkNsYXVzZSk7CisJCQkJCW4tPnJhbmdlX25hbWUgPSAkNDsKKwkJ CQkJbi0+bG9jYXRpb24gPSBANDsKKwkJCQkJbi0+dGFyZ2V0X3N0YXJ0ID0gJDY7CisJCQkJ CW4tPnRhcmdldF9lbmQgPSAkODsKKwkJCQkJJCQgPSBuOworCQkJCX0KKwkJCXwgLypFTVBU WSovCQkJCQl7ICQkID0gTlVMTDsgfQorCQk7CisKIC8qCiAgKiBUQUJMRVNBTVBMRSBkZWNv cmF0aW9uIGluIGEgRlJPTSBpdGVtCiAgKi8KQEAgLTE3MzQxLDYgKzE3Mzc5LDcgQEAgdW5y ZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQQVNTV09SRAogCQkJfCBQTEFOUwogCQkJfCBQT0xJ Q1kKKwkJCXwgUE9SVElPTgogCQkJfCBQUkVDRURJTkcKIAkJCXwgUFJFUEFSRQogCQkJfCBQ UkVQQVJFRApAQCAtMTc5NDUsNiArMTc5ODQsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJ CQl8IFBMQUNJTkcKIAkJCXwgUExBTlMKIAkJCXwgUE9MSUNZCisJCQl8IFBPUlRJT04KIAkJ CXwgUE9TSVRJT04KIAkJCXwgUFJFQ0VESU5HCiAJCQl8IFBSRVBBUkUKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9hZ2cuYwppbmRleCA3YjIxMWE3NzQzZi4uMTViNWMwZGVkYzEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYworKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfYWdnLmMKQEAgLTU3NCw2ICs1NzQsMTMgQEAgY2hlY2tfYWdnbGV2ZWxzX2Fu ZF9jb25zdHJhaW50cyhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAJCWNhc2Ug RVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJCQllcnJraW5kID0gdHJ1ZTsKIAkJCWJyZWFrOwor CQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTjoKKwkJCWlmIChpc0FnZykKKwkJCQll cnIgPSBfKCJhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBGT1IgUE9S VElPTiBPRiBleHByZXNzaW9ucyIpOworCQkJZWxzZQorCQkJCWVyciA9IF8oImdyb3VwaW5n IG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Np b25zIik7CisKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9u YWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCkBAIC05NjQsNiArOTcx LDkgQEAgdHJhbnNmb3JtV2luZG93RnVuY0NhbGwoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5k b3dGdW5jICp3ZnVuYywKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJCWVycmtp bmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9O OgorCQkJZXJyID0gXygid2luZG93IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gRk9S IFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICog VGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQg dGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29sbGF0ZS5jIGIv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYwppbmRleCA0NDUyOWJiNDllNi4u MTRmZmI3YmE2NDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xs YXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYwpAQCAtNDg0 LDYgKzQ4NCw3IEBAIGFzc2lnbl9jb2xsYXRpb25zX3dhbGtlcihOb2RlICpub2RlLCBhc3Np Z25fY29sbGF0aW9uc19jb250ZXh0ICpjb250ZXh0KQogCQljYXNlIFRfSm9pbkV4cHI6CiAJ CWNhc2UgVF9Gcm9tRXhwcjoKIAkJY2FzZSBUX09uQ29uZmxpY3RFeHByOgorCQljYXNlIFRf Rm9yUG9ydGlvbk9mRXhwcjoKIAkJY2FzZSBUX1NvcnRHcm91cENsYXVzZToKIAkJY2FzZSBU X01lcmdlQWN0aW9uOgogCQkJKHZvaWQpIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDkzMDBjN2I5YWJjLi5mM2M0OWRlODA5 OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC01NjYsNiArNTY2LDkgQEAgdHJh bnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQog CQljYXNlIEVYUFJfS0lORF9QQVJUSVRJT05fQk9VTkQ6CiAJCQllcnIgPSBfKCJjYW5ub3Qg dXNlIGNvbHVtbiByZWZlcmVuY2UgaW4gcGFydGl0aW9uIGJvdW5kIGV4cHJlc3Npb24iKTsK IAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTjoKKwkJCWVyciA9 IF8oImNhbm5vdCB1c2UgY29sdW1uIHJlZmVyZW5jZSBpbiBGT1IgUE9SVElPTiBPRiBleHBy ZXNzaW9uIik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlv bmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpAQCAtMTgxMyw2ICsx ODE2LDkgQEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1Ykxpbmsg KnN1YmxpbmspCiAJCWNhc2UgRVhQUl9LSU5EX0dFTkVSQVRFRF9DT0xVTU46CiAJCQllcnIg PSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIGNvbHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Np b24iKTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTjoKKwkJ CWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVz c2lvbiIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25h bGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKQEAgLTMxMDQsNiArMzEx MCw4IEBAIFBhcnNlRXhwcktpbmROYW1lKFBhcnNlRXhwcktpbmQgZXhwcktpbmQpCiAJCQly ZXR1cm4gIlVQREFURSI7CiAJCWNhc2UgRVhQUl9LSU5EX01FUkdFX1dIRU46CiAJCQlyZXR1 cm4gIk1FUkdFIFdIRU4iOworCQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTjoKKwkJ CXJldHVybiAiRk9SIFBPUlRJT04gT0YiOwogCQljYXNlIEVYUFJfS0lORF9HUk9VUF9CWToK IAkJCXJldHVybiAiR1JPVVAgQlkiOwogCQljYXNlIEVYUFJfS0lORF9PUkRFUl9CWToKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfZnVuYy5jCmluZGV4IGZkYjNlNmRmMzM4Li5mYzE3ZGQ3ZWRmOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCkBAIC0yNjU2LDYgKzI2NTYsOSBAQCBjaGVj a19zcmZfY2FsbF9wbGFjZW1lbnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpsYXN0X3Ny ZiwgaW50IGxvY2F0aW9uKQogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgogCQkJZXJy a2luZCA9IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJ T046CisJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93 ZWQgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKwkJCWJyZWFrOwogCiAJCQkv KgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUs IHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfbWVy Z2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jCmluZGV4IDVmNmE2ODNh Yjk0Li4wNzMzNjE2ZjAzNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X21lcmdlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21lcmdlLmMKQEAgLTM3 Miw3ICszNzIsNyBAQCB0cmFuc2Zvcm1NZXJnZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBN ZXJnZVN0bXQgKnN0bXQpCiAJCQkJCXBzdGF0ZS0+cF9pc19pbnNlcnQgPSBmYWxzZTsKIAkJ CQkJYWN0aW9uLT50YXJnZXRMaXN0ID0KIAkJCQkJCXRyYW5zZm9ybVVwZGF0ZVRhcmdldExp c3QocHN0YXRlLAotCQkJCQkJCQkJCQkJICBtZXJnZVdoZW5DbGF1c2UtPnRhcmdldExpc3Qp OworCQkJCQkJCQkJCQkJICBtZXJnZVdoZW5DbGF1c2UtPnRhcmdldExpc3QsIE5VTEwpOwog CQkJCX0KIAkJCQlicmVhazsKIAkJCWNhc2UgQ01EX0RFTEVURToKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL3Jld3Jp dGUvcmV3cml0ZUhhbmRsZXIuYwppbmRleCBmNjBiMzRkZWI2NC4uNGM0YTVkZDA3MjcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYworKysgYi9z cmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKQEAgLTM0NzYsNiArMzQ3Niwz MCBAQCByZXdyaXRlVGFyZ2V0VmlldyhRdWVyeSAqcGFyc2V0cmVlLCBSZWxhdGlvbiB2aWV3 KQogCQkJCQkJCQkJICAmcGFyc2V0cmVlLT5oYXNTdWJMaW5rcyk7CiAJfQogCisJaWYgKHBh cnNldHJlZS0+Zm9yUG9ydGlvbk9mICYmIHBhcnNldHJlZS0+Y29tbWFuZFR5cGUgPT0gQ01E X1VQREFURSkKKwl7CisJCS8qCisJCSAqIExpa2UgdGhlIElOU0VSVC9VUERBVEUgY29kZSBh Ym92ZSwgdXBkYXRlIHRoZSByZXNub3MgaW4gdGhlCisJCSAqIGF1eGlsaWFyeSBVUERBVEUg dGFyZ2V0bGlzdCB0byByZWZlciB0byBjb2x1bW5zIG9mIHRoZSBiYXNlCisJCSAqIHJlbGF0 aW9uLgorCQkgKi8KKwkJZm9yZWFjaChsYywgcGFyc2V0cmVlLT5mb3JQb3J0aW9uT2YtPnJh bmdlVGFyZ2V0TGlzdCkKKwkJeworCQkJVGFyZ2V0RW50cnkgKnRsZSA9IChUYXJnZXRFbnRy eSAqKSBsZmlyc3QobGMpOworCQkJVGFyZ2V0RW50cnkgKnZpZXdfdGxlOworCisJCQlpZiAo dGxlLT5yZXNqdW5rKQorCQkJCWNvbnRpbnVlOworCisJCQl2aWV3X3RsZSA9IGdldF90bGVf YnlfcmVzbm8odmlld190YXJnZXRsaXN0LCB0bGUtPnJlc25vKTsKKwkJCWlmICh2aWV3X3Rs ZSAhPSBOVUxMICYmICF2aWV3X3RsZS0+cmVzanVuayAmJiBJc0Eodmlld190bGUtPmV4cHIs IFZhcikpCisJCQkJdGxlLT5yZXNubyA9ICgoVmFyICopIHZpZXdfdGxlLT5leHByKS0+dmFy YXR0bm87CisJCQllbHNlCisJCQkJZWxvZyhFUlJPUiwgImF0dHJpYnV0ZSBudW1iZXIgJWQg bm90IGZvdW5kIGluIHZpZXcgdGFyZ2V0bGlzdCIsCisJCQkJCSB0bGUtPnJlc25vKTsKKwkJ fQorCX0KKwogCS8qCiAJICogRm9yIFVQREFURS9ERUxFVEUsIHB1bGwgdXAgYW55IFdIRVJF IHF1YWxzIGZyb20gdGhlIHZpZXcuICBXZSBrbm93IHRoYXQKIAkgKiBhbnkgVmFycyBpbiB0 aGUgcXVhbHMgbXVzdCByZWZlcmVuY2UgdGhlIG9uZSBiYXNlIHJlbGF0aW9uLCBzbyB3ZSBu ZWVkCkBAIC0zODE0LDYgKzM4MzgsMjIgQEAgUmV3cml0ZVF1ZXJ5KFF1ZXJ5ICpwYXJzZXRy ZWUsIExpc3QgKnJld3JpdGVfZXZlbnRzLCBpbnQgb3JpZ19ydF9sZW5ndGgpCiAJCWVsc2Ug aWYgKGV2ZW50ID09IENNRF9VUERBVEUpCiAJCXsKIAkJCUFzc2VydChwYXJzZXRyZWUtPm92 ZXJyaWRlID09IE9WRVJSSURJTkdfTk9UX1NFVCk7CisJCQkvKgorCQkJICogVXBkYXRlIEZP UiBQT1JUSU9OIE9GIGNvbHVtbihzKSBhdXRvbWF0aWNhbGx5LiBEb24ndAorCQkJICogZG8g dGhpcyB1bnRpbCB3ZSdyZSBkb25lIHJld3JpdGluZyBhIHZpZXcgdXBkYXRlLCBzbworCQkJ ICogdGhhdCB3ZSBkb24ndCBhZGQgdGhlIHNhbWUgdXBkYXRlIG9uIHRoZSByZWN1cnNpb24u CisJCQkgKi8KKwkJCWlmIChwYXJzZXRyZWUtPmZvclBvcnRpb25PZiAmJgorCQkJCXJ0X2Vu dHJ5X3JlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9WSUVXKQorCQkJewor CQkJCUxpc3RDZWxsICp0bDsKKwkJCQlmb3JlYWNoKHRsLCBwYXJzZXRyZWUtPmZvclBvcnRp b25PZi0+cmFuZ2VUYXJnZXRMaXN0KQorCQkJCXsKKwkJCQkJVGFyZ2V0RW50cnkgKnRsZSA9 IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QodGwpOworCQkJCQlwYXJzZXRyZWUtPnRhcmdldExp c3QgPSBsYXBwZW5kKHBhcnNldHJlZS0+dGFyZ2V0TGlzdCwgdGxlKTsKKwkJCQl9CisJCQl9 CisKIAkJCXBhcnNldHJlZS0+dGFyZ2V0TGlzdCA9CiAJCQkJcmV3cml0ZVRhcmdldExpc3RJ VShwYXJzZXRyZWUtPnRhcmdldExpc3QsCiAJCQkJCQkJCQlwYXJzZXRyZWUtPmNvbW1hbmRU eXBlLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwppbmRleCAwZGFkZjJhY2Iy ZC4uNGQxN2IzODc3YmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90 cmlnZ2Vycy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBA IC0yMzAsNiArMjMwLDcgQEAgc3RhdGljIGJvb2wgcmlfUGVyZm9ybUNoZWNrKGNvbnN0IFJJ X0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCQkJCQkJUklfUXVlcnlLZXkgKnFrZXksIFNQ SVBsYW5QdHIgcXBsYW4sCiAJCQkJCQkJUmVsYXRpb24gZmtfcmVsLCBSZWxhdGlvbiBwa19y ZWwsCiAJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpu ZXdzbG90LAorCQkJCQkJCWludCBmb3JQb3J0aW9uT2ZQYXJhbSwgRGF0dW0gZm9yUG9ydGlv bk9mLAogCQkJCQkJCWJvb2wgZGV0ZWN0TmV3Um93cywgaW50IGV4cGVjdF9PSyk7CiBzdGF0 aWMgdm9pZCByaV9FeHRyYWN0VmFsdWVzKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3Qg KnNsb3QsCiAJCQkJCQkJIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIGJvb2wg cmVsX2lzX3BrLApAQCAtMjQwLDYgKzI0MSwxMSBAQCBzdGF0aWMgdm9pZCByaV9SZXBvcnRW aW9sYXRpb24oY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJCQkJCQkgICBp bnQgcXVlcnlubywgYm9vbCBwYXJ0Z29uZSkgcGdfYXR0cmlidXRlX25vcmV0dXJuKCk7CiBz dGF0aWMgdm9pZCBsb29rdXBUUklPcGVyQW5kUHJvYyhjb25zdCBSSV9Db25zdHJhaW50SW5m byAqcmlpbmZvLAogCQkJCQkJCQkgY2hhciAqKm9wbmFtZSwgY2hhciAqKmFnZ25hbWUpOwor c3RhdGljIGJvb2wgZnBvX3RhcmdldHNfcGtfcmFuZ2UoY29uc3QgRm9yUG9ydGlvbk9mU3Rh dGUgKnRnX3RlbXBvcmFsLAorCQkJCQkJCQkgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJp aW5mbyk7CitzdGF0aWMgRGF0dW0gcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKGNvbnN0IEZv clBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbCwKKwkJCQkJCQkJCSAgY29uc3QgUklfQ29u c3RyYWludEluZm8gKnJpaW5mbywKKwkJCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKm9sZHNs b3QpOwogCiAKIC8qCkBAIC00NTYsNiArNDYyLDcgQEAgUklfRktleV9jaGVjayhUcmlnZ2Vy RGF0YSAqdHJpZ2RhdGEpCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFu LAogCQkJCQlma19yZWwsIHBrX3JlbCwKIAkJCQkJTlVMTCwgbmV3c2xvdCwKKwkJCQkJLTEs IChEYXR1bSkgMCwKIAkJCQkJcGtfcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9Q QVJUSVRJT05FRF9UQUJMRSwKIAkJCQkJU1BJX09LX1NFTEVDVCk7CiAKQEAgLTYyMCw2ICs2 MjcsNyBAQCByaV9DaGVja19Qa19NYXRjaChSZWxhdGlvbiBwa19yZWwsIFJlbGF0aW9uIGZr X3JlbCwKIAlyZXN1bHQgPSByaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4s CiAJCQkJCQkJIGZrX3JlbCwgcGtfcmVsLAogCQkJCQkJCSBvbGRzbG90LCBOVUxMLAorCQkJ CQkJCSAtMSwgKERhdHVtKSAwLAogCQkJCQkJCSB0cnVlLAkvKiB0cmVhdCBsaWtlIHVwZGF0 ZSAqLwogCQkJCQkJCSBTUElfT0tfU0VMRUNUKTsKIApAQCAtNzE5LDYgKzcyNyw4IEBAIHJp X3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJ VHVwbGVUYWJsZVNsb3QgKm9sZHNsb3Q7CiAJUklfUXVlcnlLZXkgcWtleTsKIAlTUElQbGFu UHRyCXFwbGFuOworCWludAkJCXRhcmdldFJhbmdlUGFyYW0gPSAtMTsKKwlEYXR1bQkJdGFy Z2V0UmFuZ2UgPSAoRGF0dW0pIDA7CiAKIAlyaWluZm8gPSByaV9GZXRjaENvbnN0cmFpbnRJ bmZvKHRyaWdkYXRhLT50Z190cmlnZ2VyLAogCQkJCQkJCQkJdHJpZ2RhdGEtPnRnX3JlbGF0 aW9uLCB0cnVlKTsKQEAgLTgxNSw5ICs4MjUsMTYgQEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRh dGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbikKIAkvKgogCSAqIFdlIGhhdmUgYSBw bGFuIG5vdy4gUnVuIGl0IHRvIGNoZWNrIGZvciBleGlzdGluZyByZWZlcmVuY2VzLgogCSAq LworCWlmICh0cmlnZGF0YS0+dGdfdGVtcG9yYWwpCisJeworCQl0YXJnZXRSYW5nZVBhcmFt ID0gcmlpbmZvLT5ua2V5cyAtIDE7CisJCXRhcmdldFJhbmdlID0gcmVzdHJpY3RfY2FzY2Fk aW5nX3JhbmdlKHRyaWdkYXRhLT50Z190ZW1wb3JhbCwgcmlpbmZvLCBvbGRzbG90KTsKKwl9 CisKIAlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCWZrX3Jl bCwgcGtfcmVsLAogCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQl0YXJnZXRSYW5nZVBhcmFt LCB0YXJnZXRSYW5nZSwKIAkJCQkJdHJ1ZSwJCS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICov CiAJCQkJCVNQSV9PS19TRUxFQ1QpOwogCkBAIC05MjQsNiArOTQxLDcgQEAgUklfRktleV9j YXNjYWRlX2RlbChQR19GVU5DVElPTl9BUkdTKQogCXJpX1BlcmZvcm1DaGVjayhyaWluZm8s ICZxa2V5LCBxcGxhbiwKIAkJCQkJZmtfcmVsLCBwa19yZWwsCiAJCQkJCW9sZHNsb3QsIE5V TEwsCisJCQkJCS0xLCAoRGF0dW0pIDAsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBu ZXcgcm93cyAqLwogCQkJCQlTUElfT0tfREVMRVRFKTsKIApAQCAtMTA0NSw2ICsxMDYzLDcg QEAgUklfRktleV9jYXNjYWRlX3VwZChQR19GVU5DVElPTl9BUkdTKQogCXJpX1BlcmZvcm1D aGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwKIAkJCQkJZmtfcmVsLCBwa19yZWwsCiAJCQkJ CW9sZHNsb3QsIG5ld3Nsb3QsCisJCQkJCS0xLCAoRGF0dW0pIDAsCiAJCQkJCXRydWUsCQkv KiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElfT0tfVVBEQVRFKTsKIApAQCAt MTI3Nyw2ICsxMjk2LDcgQEAgcmlfc2V0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBp c19zZXRfbnVsbCwgaW50IHRna2luZCkKIAlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtl eSwgcXBsYW4sCiAJCQkJCWZrX3JlbCwgcGtfcmVsLAogCQkJCQlvbGRzbG90LCBOVUxMLAor CQkJCQktMSwgKERhdHVtKSAwLAogCQkJCQl0cnVlLAkJLyogbXVzdCBkZXRlY3QgbmV3IHJv d3MgKi8KIAkJCQkJU1BJX09LX1VQREFURSk7CiAKQEAgLTI1NTEsNiArMjU3MSw3IEBAIHJp X1BlcmZvcm1DaGVjayhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCVJJ X1F1ZXJ5S2V5ICpxa2V5LCBTUElQbGFuUHRyIHFwbGFuLAogCQkJCVJlbGF0aW9uIGZrX3Jl bCwgUmVsYXRpb24gcGtfcmVsLAogCQkJCVR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBs ZVRhYmxlU2xvdCAqbmV3c2xvdCwKKwkJCQlpbnQgZm9yUG9ydGlvbk9mUGFyYW0sIERhdHVt IGZvclBvcnRpb25PZiwKIAkJCQlib29sIGRldGVjdE5ld1Jvd3MsIGludCBleHBlY3RfT0sp CiB7CiAJUmVsYXRpb24JcXVlcnlfcmVsLApAQCAtMjYwNiw2ICsyNjI3LDEyIEBAIHJpX1Bl cmZvcm1DaGVjayhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQlyaV9FeHRy YWN0VmFsdWVzKHNvdXJjZV9yZWwsIG9sZHNsb3QsIHJpaW5mbywgc291cmNlX2lzX3BrLAog CQkJCQkJIHZhbHMsIG51bGxzKTsKIAl9CisJLyogQWRkIG9uZSBtb3JlIHF1ZXJ5IHBhcmFt IGlmIHdlIGFyZSB1c2luZyBGT1IgUE9SVElPTiBPRiAqLworCWlmIChmb3JQb3J0aW9uT2Yp CisJeworCQl2YWxzW2ZvclBvcnRpb25PZlBhcmFtXSA9IGZvclBvcnRpb25PZjsKKwkJbnVs bHNbZm9yUG9ydGlvbk9mUGFyYW1dID0gJyAnOworCX0KIAogCS8qCiAJICogSW4gUkVBRCBD T01NSVRURUQgbW9kZSwgd2UganVzdCBuZWVkIHRvIHVzZSBhbiB1cC10by1kYXRlIHJlZ3Vs YXIKQEAgLTMzNTAsMyArMzM3Nyw1MCBAQCBsb29rdXBUUklPcGVyQW5kUHJvYyhjb25zdCBS SV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBjaGFyICoqb3BuYW1lLCBjaGFyICoqYWdnbgog CQkJCSBlcnJoaW50KCJZb3UgbXVzdCB1c2UgYW4gb3BlcmF0b3IgY2xhc3Mgd2l0aCBhIHJl ZmVyZW5jZWRhZ2cgc3VwcG9ydCBmdW5jdGlvbi4iKSkpOwogCSphZ2duYW1lID0gZ2V0X2Z1 bmNfbmFtZV9hbmRfbmFtZXNwYWNlKG9pZCk7CiB9CisKKy8qCisgKiBmcG9fdGFyZ2V0c19w a19yYW5nZQorICoKKyAqIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHByaW1hcnkga2V5IHJlZmVy ZW5jZWQgYnkgcmlpbmZvIGluY2x1ZGVzIHRoZSByYW5nZQorICogY29sdW1uIHRhcmdldGVk IGJ5IHRoZSBGT1IgUE9SVElPTiBPRiBjbGF1c2UgKGFjY29yZGluZyB0byB0Z190ZW1wb3Jh bCkuCisgKi8KK3N0YXRpYyBib29sCitmcG9fdGFyZ2V0c19wa19yYW5nZShjb25zdCBGb3JQ b3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWwsIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpy aWluZm8pCit7CisJaWYgKHRnX3RlbXBvcmFsID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsK KworCXJldHVybiByaWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdID09IHRn X3RlbXBvcmFsLT5mcF9yYW5nZUF0dG5vOworfQorCisvKgorICogcmVzdHJpY3RfY2FzY2Fk aW5nX3JhbmdlIC0KKyAqCisgKiBSZXR1cm5zIGEgRGF0dW0gb2YgUmFuZ2VUeXBlUCBob2xk aW5nIHRoZSBhcHByb3ByaWF0ZSB0aW1lc3BhbgorICogdG8gdGFyZ2V0IGNoaWxkIHJlY29y ZHMgd2hlbiB3ZSBDQVNDQURFL1NFVCBOVUxML1NFVCBERUZBVUxULgorICoKKyAqIEluIGEg bm9ybWFsIFVQREFURS9ERUxFVEUgdGhpcyBzaG91bGQgYmUgdGhlIHBhcmVudCdzIG93biB2 YWxpZCB0aW1lLAorICogYnV0IGlmIHRoZXJlIHdhcyBhIEZPUiBQT1JUSU9OIE9GIGNsYXVz ZSwgdGhlbiB3ZSBzaG91bGQgdXNlIHRoYXQgdG8KKyAqIHRyaW0gZG93biB0aGUgcGFyZW50 J3Mgc3BhbiBmdXJ0aGVyLgorICovCitzdGF0aWMgRGF0dW0KK3Jlc3RyaWN0X2Nhc2NhZGlu Z19yYW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWwsIGNvbnN0IFJJ X0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIFR1cGxlVGFibGVTbG90ICpvbGRzbG90KQorewor CURhdHVtCXBrUmVjb3JkUmFuZ2U7CisJYm9vbAlpc251bGw7CisKKwlwa1JlY29yZFJhbmdl ID0gc2xvdF9nZXRhdHRyKG9sZHNsb3QsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5r ZXlzIC0gMV0sICZpc251bGwpOworCWlmIChpc251bGwpCisJCWVsb2coRVJST1IsICJhcHBs aWNhdGlvbiB0aW1lIHNob3VsZCBub3QgYmUgbnVsbCIpOworCisJaWYgKGZwb190YXJnZXRz X3BrX3JhbmdlKHRnX3RlbXBvcmFsLCByaWluZm8pKQorCXsKKwkJUmFuZ2VUeXBlICpyMSA9 IERhdHVtR2V0UmFuZ2VUeXBlUChwa1JlY29yZFJhbmdlKTsKKwkJUmFuZ2VUeXBlICpyMiA9 IERhdHVtR2V0UmFuZ2VUeXBlUCh0Z190ZW1wb3JhbC0+ZnBfdGFyZ2V0UmFuZ2UpOworCQlP aWQgcm5ndHlwaWQgPSBSYW5nZVR5cGVHZXRPaWQocjEpOworCQlUeXBlQ2FjaGVFbnRyeSAq dHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZShybmd0eXBpZCwgVFlQRUNBQ0hFX1JBTkdF X0lORk8pOworCQlyZXR1cm4gUmFuZ2VUeXBlUEdldERhdHVtKHJhbmdlX2ludGVyc2VjdF9p bnRlcm5hbCh0eXBjYWNoZSwgcjEsIHIyKSk7CisJfQorCWVsc2UKKwkJcmV0dXJuIHBrUmVj b3JkUmFuZ2U7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lz Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmluZGV4IDZj ZDE0ZDRiZDEyLi45YTI0ODgyZjg5NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMKQEAgLTIxNzQsNiArMjE3NCw1OSBAQCBnZXRfdHlwaXNkZWZpbmVkKE9pZCB0eXBp ZCkKIAkJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogZ2V0X3R5cG5hbWUKKyAqCisgKgkg IFJldHVybnMgdGhlIG5hbWUgb2YgYSBnaXZlbiB0eXBlCisgKgorICogUmV0dXJucyBhIHBh bGxvYydkIGNvcHkgb2YgdGhlIHN0cmluZywgb3IgTlVMTCBpZiBubyBzdWNoIHR5cGUuCisg Ki8KK2NoYXIgKgorZ2V0X3R5cG5hbWUoT2lkIHR5cGlkKQoreworCUhlYXBUdXBsZSAgIHRw OworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoVFlQRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh0 eXBpZCkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJCUZvcm1fcGdfdHlw ZSB0eXB0dXAgPSAoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1QodHApOworCQljaGFyCSAgICpy ZXN1bHQ7CisKKwkJcmVzdWx0ID0gcHN0cmR1cChOYW1lU3RyKHR5cHR1cC0+dHlwbmFtZSkp OworCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQlyZXR1cm4gcmVzdWx0OworCX0KKwllbHNl CisJCXJldHVybiBOVUxMOworfQorCisvKgorICogZ2V0X3R5cG5hbWVfYW5kX25hbWVzcGFj ZQorICoKKyAqCSAgUmV0dXJucyB0aGUgbmFtZSBhbmQgbmFtZXNwYWNlIG9mIGEgZ2l2ZW4g dHlwZQorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBvbmUgZm91bmQsIG9yIGZhbHNlIGlmIG5v dC4KKyAqLworYm9vbAorZ2V0X3R5cG5hbWVfYW5kX25hbWVzcGFjZShPaWQgdHlwaWQsIGNo YXIgKip0eXBuYW1lLCBjaGFyICoqdHlwbmFtZXNwYWNlKQoreworCUhlYXBUdXBsZQl0cDsK KworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsIE9iamVjdElkR2V0RGF0dW0odHlw aWQpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJeworCQlGb3JtX3BnX3R5cGUg dHlwdHVwID0gKEZvcm1fcGdfdHlwZSkgR0VUU1RSVUNUKHRwKTsKKworCQkqdHlwbmFtZSA9 IHBzdHJkdXAoTmFtZVN0cih0eXB0dXAtPnR5cG5hbWUpKTsKKwkJKnR5cG5hbWVzcGFjZSA9 IGdldF9uYW1lc3BhY2VfbmFtZSh0eXB0dXAtPnR5cG5hbWVzcGFjZSk7CisJCVJlbGVhc2VT eXNDYWNoZSh0cCk7CisJCS8qICp0eXBuYW1lc3BhY2UgaXMgTlVMTCBpZiBpdCB3YXNuJ3Qg Zm91bmQ6ICovCisJCXJldHVybiAqdHlwbmFtZXNwYWNlOworCX0KKwllbHNlCisJCXJldHVy biBmYWxzZTsKK30KKwogLyoKICAqIGdldF90eXBsZW4KICAqCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3Mvc3RyYXRudW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zdHJhdG51 bS5oCmluZGV4IDhhNDdkM2M5ZWM4Li5lOTNjNGQxZjg2YyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3N0cmF0bnVtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N0cmF0 bnVtLmgKQEAgLTc4LDggKzc4LDEwIEBAIHR5cGVkZWYgdWludDE2IFN0cmF0ZWd5TnVtYmVy OwogI2RlZmluZSBSVFByZWZpeFN0cmF0ZWd5TnVtYmVyCQkJMjgJLyogZm9yIHRleHQgXkAg Ki8KICNkZWZpbmUgUlRPbGRCZWxvd1N0cmF0ZWd5TnVtYmVyCQkyOQkvKiBmb3Igb2xkIHNw ZWxsaW5nIG9mIDw8fCAqLwogI2RlZmluZSBSVE9sZEFib3ZlU3RyYXRlZ3lOdW1iZXIJCTMw CS8qIGZvciBvbGQgc3BlbGxpbmcgb2YgfD4+ICovCisjZGVmaW5lIFJUSW50ZXJzZWN0U3Ry YXRlZ3lOdW1iZXIJCTMxCS8qIGZvciAqICovCisjZGVmaW5lIFJUV2l0aG91dFBvcnRpb25T dHJhdGVneU51bWJlcgkzMgkvKiBmb3IgQC0gKi8KIAotI2RlZmluZSBSVE1heFN0cmF0ZWd5 TnVtYmVyCQkJCTMwCisjZGVmaW5lIFJUTWF4U3RyYXRlZ3lOdW1iZXIJCQkJMzIKIAogCiAj ZW5kaWYJCQkJCQkJLyogU1RSQVROVU1fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19hbW9wLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1vcC5kYXQK aW5kZXggZDhhMDUyMTRiMTEuLmE1NjVkMzM3ZGVjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX2Ftb3AuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1v cC5kYXQKQEAgLTExMDgsNiArMTEwOCw5IEBACiB7IGFtb3BmYW1pbHkgPT4gJ2dpc3QvYm94 X29wcycsIGFtb3BsZWZ0dHlwZSA9PiAnYm94JywgYW1vcHJpZ2h0dHlwZSA9PiAncG9pbnQn LAogICBhbW9wc3RyYXRlZ3kgPT4gJzE1JywgYW1vcHB1cnBvc2UgPT4gJ28nLCBhbW9wb3By ID0+ICc8LT4oYm94LHBvaW50KScsCiAgIGFtb3BtZXRob2QgPT4gJ2dpc3QnLCBhbW9wc29y dGZhbWlseSA9PiAnYnRyZWUvZmxvYXRfb3BzJyB9LAoreyBhbW9wZmFtaWx5ID0+ICdnaXN0 L2JveF9vcHMnLCBhbW9wbGVmdHR5cGUgPT4gJ2JveCcsIGFtb3ByaWdodHR5cGUgPT4gJ2Jv eCcsCisgIGFtb3BzdHJhdGVneSA9PiAnMzEnLCBhbW9wcHVycG9zZSA9PiAncCcsIGFtb3Bv cHIgPT4gJyMoYm94LGJveCknLAorICBhbW9wbWV0aG9kID0+ICdnaXN0JyB9LAogCiAjIGdp c3QgcG9pbnRfb3BzCiB7IGFtb3BmYW1pbHkgPT4gJ2dpc3QvcG9pbnRfb3BzJywgYW1vcGxl ZnR0eXBlID0+ICdwb2ludCcsCkBAIC0xMzk3LDYgKzE0MDAsMTIgQEAKIHsgYW1vcGZhbWls eSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbW9wbGVmdHR5cGUgPT4gJ2FueXJhbmdlJywKICAg YW1vcHJpZ2h0dHlwZSA9PiAnYW55cmFuZ2UnLCBhbW9wc3RyYXRlZ3kgPT4gJzE4JywKICAg YW1vcG9wciA9PiAnPShhbnlyYW5nZSxhbnlyYW5nZSknLCBhbW9wbWV0aG9kID0+ICdnaXN0 JyB9LAoreyBhbW9wZmFtaWx5ID0+ICdnaXN0L3JhbmdlX29wcycsIGFtb3BsZWZ0dHlwZSA9 PiAnYW55cmFuZ2UnLAorICBhbW9wcmlnaHR0eXBlID0+ICdhbnlyYW5nZScsIGFtb3BzdHJh dGVneSA9PiAnMzEnLCBhbW9wcHVycG9zZSA9PiAncCcsCisgIGFtb3BvcHIgPT4gJyooYW55 cmFuZ2UsYW55cmFuZ2UpJywgYW1vcG1ldGhvZCA9PiAnZ2lzdCcgfSwKK3sgYW1vcGZhbWls eSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbW9wbGVmdHR5cGUgPT4gJ2FueXJhbmdlJywKKyAg YW1vcHJpZ2h0dHlwZSA9PiAnYW55cmFuZ2UnLCBhbW9wc3RyYXRlZ3kgPT4gJzMyJywgYW1v cHB1cnBvc2UgPT4gJ3AnLAorICBhbW9wb3ByID0+ICdALShhbnlyYW5nZSxhbnlyYW5nZSkn LCBhbW9wbWV0aG9kID0+ICdnaXN0JyB9LAogCiAjIEdpU1QgbXVsdGlyYW5nZV9vcHMKIHsg YW1vcGZhbWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtb3BsZWZ0dHlwZSA9PiAn YW55bXVsdGlyYW5nZScsCkBAIC0xNDUzLDYgKzE0NjIsMTIgQEAKIHsgYW1vcGZhbWlseSA9 PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtb3BsZWZ0dHlwZSA9PiAnYW55bXVsdGlyYW5n ZScsCiAgIGFtb3ByaWdodHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLCBhbW9wc3RyYXRlZ3kg PT4gJzE4JywKICAgYW1vcG9wciA9PiAnPShhbnltdWx0aXJhbmdlLGFueW11bHRpcmFuZ2Up JywgYW1vcG1ldGhvZCA9PiAnZ2lzdCcgfSwKK3sgYW1vcGZhbWlseSA9PiAnZ2lzdC9tdWx0 aXJhbmdlX29wcycsIGFtb3BsZWZ0dHlwZSA9PiAnYW55bXVsdGlyYW5nZScsCisgIGFtb3By aWdodHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLCBhbW9wc3RyYXRlZ3kgPT4gJzMxJywgYW1v cHB1cnBvc2UgPT4gJ3AnLAorICBhbW9wb3ByID0+ICcqKGFueW11bHRpcmFuZ2UsYW55bXVs dGlyYW5nZSknLCBhbW9wbWV0aG9kID0+ICdnaXN0JyB9LAoreyBhbW9wZmFtaWx5ID0+ICdn aXN0L211bHRpcmFuZ2Vfb3BzJywgYW1vcGxlZnR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywK KyAgYW1vcHJpZ2h0dHlwZSA9PiAnYW55bXVsdGlyYW5nZScsIGFtb3BzdHJhdGVneSA9PiAn MzInLCBhbW9wcHVycG9zZSA9PiAncCcsCisgIGFtb3BvcHIgPT4gJ0AtKGFueW11bHRpcmFu Z2UsYW55bXVsdGlyYW5nZSknLCBhbW9wbWV0aG9kID0+ICdnaXN0JyB9LAogCiAjIGJ0cmVl IG11bHRpcmFuZ2Vfb3BzCiB7IGFtb3BmYW1pbHkgPT4gJ2J0cmVlL211bHRpcmFuZ2Vfb3Bz JywgYW1vcGxlZnR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfYW1vcC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbW9w LmgKaW5kZXggOGVhMThhMmZlMWIuLmY1NjFhMTFmN2ZiIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2Ftb3AuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ft b3AuaApAQCAtOTYsNiArOTYsNyBAQCBERUNMQVJFX1VOSVFVRV9JTkRFWF9QS0VZKHBnX2Ft b3Bfb2lkX2luZGV4LCAyNzU2LCBBY2Nlc3NNZXRob2RPcGVyYXRvck9pZEluZGV4SQogLyog YWxsb3dlZCB2YWx1ZXMgb2YgYW1vcHB1cnBvc2U6ICovCiAjZGVmaW5lIEFNT1BfU0VBUkNI CQkncycJCS8qIG9wZXJhdG9yIGlzIGZvciBzZWFyY2ggKi8KICNkZWZpbmUgQU1PUF9PUkRF UgkJJ28nCQkvKiBvcGVyYXRvciBpcyBmb3Igb3JkZXJpbmcgKi8KKyNkZWZpbmUgQU1PUF9Q T1JUSU9OCSdwJwkJLyogb3BlcmF0b3IgaXMgZm9yIEZPUiBQT1JUSU9OIE9GICovCiAKICNl bmRpZgkJCQkJCQkvKiBFWFBPU0VfVE9fQ0xJRU5UX0NPREUgKi8KIApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv dHJpZ2dlci5oCmluZGV4IDhhNWE5ZmU2NDIyLi4zZDE1NjQ4MzMyNSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1h bmRzL3RyaWdnZXIuaApAQCAtNDEsNiArNDEsNyBAQCB0eXBlZGVmIHN0cnVjdCBUcmlnZ2Vy RGF0YQogCVR1cGxlc3RvcmVzdGF0ZSAqdGdfb2xkdGFibGU7CiAJVHVwbGVzdG9yZXN0YXRl ICp0Z19uZXd0YWJsZTsKIAljb25zdCBCaXRtYXBzZXQgKnRnX3VwZGF0ZWRjb2xzOworCUZv clBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbDsKIH0gVHJpZ2dlckRhdGE7CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDU2MWZkZDk4ZjFiLi4yZGNiNzM3OWEyMSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTQxLDEyICs0MSwxNCBAQAogI2luY2x1ZGUgInN0 b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5o IgogI2luY2x1ZGUgInV0aWxzL3F1ZXJ5ZW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJ1dGls cy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsdHJpZ2dlci5oIgogI2luY2x1 ZGUgInV0aWxzL3NoYXJlZHR1cGxlc3RvcmUuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwc2hv dC5oIgogI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAjaW5jbHVkZSAidXRpbHMv dHVwbGVzb3J0LmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzdG9yZS5oIgorI2luY2x1ZGUg InV0aWxzL3R5cGNhY2hlLmgiCiAKIHN0cnVjdCBQbGFuU3RhdGU7CQkJCS8qIGZvcndhcmQg cmVmZXJlbmNlcyBpbiB0aGlzIGZpbGUgKi8KIHN0cnVjdCBQYXJhbGxlbEhhc2hKb2luU3Rh dGU7CkBAIC00MjEsNiArNDIzLDI3IEBAIHR5cGVkZWYgc3RydWN0IE1lcmdlQWN0aW9uU3Rh dGUKIAlFeHByU3RhdGUgICptYXNfd2hlbnF1YWw7CS8qIFdIRU4gW05PVF0gTUFUQ0hFRCBB TkQgY29uZGl0aW9ucyAqLwogfSBNZXJnZUFjdGlvblN0YXRlOwogCisvKgorICogRm9yUG9y dGlvbk9mU3RhdGUKKyAqCisgKiBFeGVjdXRvciBzdGF0ZSBvZiBhIEZPUiBQT1JUSU9OIE9G IG9wZXJhdGlvbi4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgRm9yUG9ydGlvbk9mU3RhdGUKK3sK KwlOb2RlVGFnCQl0eXBlOworCisJY2hhciAgICpmcF9yYW5nZU5hbWU7CQkvKiB0aGUgY29s dW1uL1BFUklPRCBuYW1lZCBpbiBGT1IgUE9SVElPTiBPRiAqLworCU9pZAkJZnBfcmFuZ2VU eXBlOwkJLyogdGhlIHR5cGUgb2YgdGhlIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb24gKi8K Kwlib29sCWZwX2hhc1BlcmlvZDsJCS8qIHRydWUgaWZmIHRoaXMgaXMgYSBQRVJJT0Qgbm90 IGEgcmFuZ2UgKi8KKwlpbnQJCWZwX3JhbmdlQXR0bm87CQkvKiB0aGUgYXR0bm8gb2YgdGhl IHJhbmdlIGNvbHVtbiAob3IgMCBmb3IgYSBQRVJJT0QpICovCisJaW50CQlmcF9wZXJpb2RT dGFydEF0dG5vOwkvKiB0aGUgYXR0bm8gb2YgdGhlIFBFUklPRCBzdGFydCBjb2x1bW4gKG9y IDAgZm9yIGEgcmFuZ2UpICovCisJaW50CQlmcF9wZXJpb2RFbmRBdHRubzsJCS8qIHRoZSBh dHRubyBvZiB0aGUgUEVSSU9EIGVuZCBjb2x1bW4gKG9yIDAgZm9yIGEgcmFuZ2UpICovCisJ RGF0dW0JZnBfdGFyZ2V0UmFuZ2U7CQkvKiB0aGUgcmFuZ2UgZnJvbSBGT1IgUE9SVElPTiBP RiAqLworCVR5cGVDYWNoZUVudHJ5ICpmcF9sZWZ0b3ZlcnN0eXBjYWNoZTsJLyogdHlwZSBj YWNoZSBlbnRyeSBvZiB0aGUgcmFuZ2UgKi8KKwlUdXBsZVRhYmxlU2xvdCAqZnBfRXhpc3Rp bmc7CQkvKiBzbG90IHRvIHN0b3JlIGV4aXN0aW5nIHRhcmdldCB0dXBsZSBpbiAqLworCVR1 cGxlVGFibGVTbG90ICpmcF9MZWZ0b3ZlcjsJCS8qIHNsb3QgdG8gc3RvcmUgbGVmdG92ZXIg Ki8KK30gRm9yUG9ydGlvbk9mU3RhdGU7CisKIC8qCiAgKiBSZXN1bHRSZWxJbmZvCiAgKgpA QCAtNTQxLDYgKzU2NCw5IEBAIHR5cGVkZWYgc3RydWN0IFJlc3VsdFJlbEluZm8KIAlMaXN0 CSAgICpyaV9tYXRjaGVkTWVyZ2VBY3Rpb247CiAJTGlzdAkgICAqcmlfbm90TWF0Y2hlZE1l cmdlQWN0aW9uOwogCisJLyogRk9SIFBPUlRJT04gT0YgZXZhbHVhdGlvbiBzdGF0ZSAqLwor CUZvclBvcnRpb25PZlN0YXRlICpyaV9mb3JQb3J0aW9uT2Y7CisKIAkvKiBwYXJ0aXRpb24g Y2hlY2sgZXhwcmVzc2lvbiBzdGF0ZSAoTlVMTCBpZiBub3Qgc2V0IHVwIHlldCkgKi8KIAlF eHByU3RhdGUgICpyaV9QYXJ0aXRpb25DaGVja0V4cHI7CiAKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaAppbmRleCA4ZjRmOGNlNmE3Ny4uYmRhZGE2YjQyNTIgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmgKQEAgLTE0MSw2ICsxNDEsOSBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeQogCSAq LwogCWludAkJCXJlc3VsdFJlbGF0aW9uIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdu b3JlKTsKIAorCS8qIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSBmb3IgVVBEQVRFL0RFTEVURSAq LworCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZjsKKwogCS8qIGhhcyBhZ2dyZWdh dGVzIGluIHRsaXN0IG9yIGhhdmluZ1F1YWwgKi8KIAlib29sCQloYXNBZ2dzIHBnX25vZGVf YXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkvKiBoYXMgd2luZG93IGZ1bmN0aW9ucyBp biB0bGlzdCAqLwpAQCAtMTUzMCw2ICsxNTMzLDIxIEBAIHR5cGVkZWYgc3RydWN0IFJvd01h cmtDbGF1c2UKIAlib29sCQlwdXNoZWREb3duOwkJLyogcHVzaGVkIGRvd24gZnJvbSBoaWdo ZXIgcXVlcnkgbGV2ZWw/ICovCiB9IFJvd01hcmtDbGF1c2U7CiAKKy8qCisgKiBGb3JQb3J0 aW9uT2ZDbGF1c2UKKyAqCQlyZXByZXNlbnRhdGlvbiBvZiBGT1IgUE9SVElPTiBPRiA8cGVy aW9kLW5hbWU+IEZST00gPHRzPiBUTyA8dGU+CisgKgkJb3IgRk9SIFBPUlRJT04gT0YgPHBl cmlvZC1uYW1lPiAoPHRhcmdldD4pCisgKi8KK3R5cGVkZWYgc3RydWN0IEZvclBvcnRpb25P ZkNsYXVzZQoreworCU5vZGVUYWcJCXR5cGU7CisJY2hhcgkgICAqcmFuZ2VfbmFtZTsKKwlp bnQJCQlsb2NhdGlvbjsKKwlOb2RlCSAgICp0YXJnZXQ7CisJTm9kZQkgICAqdGFyZ2V0X3N0 YXJ0OworCU5vZGUJICAgKnRhcmdldF9lbmQ7Cit9IEZvclBvcnRpb25PZkNsYXVzZTsKKwog LyoKICAqIFdpdGhDbGF1c2UgLQogICoJICAgcmVwcmVzZW50YXRpb24gb2YgV0lUSCBjbGF1 c2UKQEAgLTE4OTMsMTIgKzE5MTEsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5zZXJ0U3RtdAog ICovCiB0eXBlZGVmIHN0cnVjdCBEZWxldGVTdG10CiB7Ci0JTm9kZVRhZwkJdHlwZTsKLQlS YW5nZVZhciAgICpyZWxhdGlvbjsJCS8qIHJlbGF0aW9uIHRvIGRlbGV0ZSBmcm9tICovCi0J TGlzdAkgICAqdXNpbmdDbGF1c2U7CS8qIG9wdGlvbmFsIHVzaW5nIGNsYXVzZSBmb3IgbW9y ZSB0YWJsZXMgKi8KLQlOb2RlCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMg Ki8KLQlMaXN0CSAgICpyZXR1cm5pbmdMaXN0OwkvKiBsaXN0IG9mIGV4cHJlc3Npb25zIHRv IHJldHVybiAqLwotCVdpdGhDbGF1c2UgKndpdGhDbGF1c2U7CQkvKiBXSVRIIGNsYXVzZSAq LworCU5vZGVUYWcJCQkJdHlwZTsKKwlSYW5nZVZhcgkJICAgKnJlbGF0aW9uOwkJLyogcmVs YXRpb24gdG8gZGVsZXRlIGZyb20gKi8KKwlGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRp b25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xhdXNlICovCisJTGlzdAkJCSAgICp1c2luZ0Ns YXVzZTsJLyogb3B0aW9uYWwgdXNpbmcgY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAqLworCU5v ZGUJCQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25zICovCisJTGlzdAkJCSAg ICpyZXR1cm5pbmdMaXN0OwkvKiBsaXN0IG9mIGV4cHJlc3Npb25zIHRvIHJldHVybiAqLwor CVdpdGhDbGF1c2UJCSAgICp3aXRoQ2xhdXNlOwkJLyogV0lUSCBjbGF1c2UgKi8KIH0gRGVs ZXRlU3RtdDsKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTkwNywxMyArMTky NiwxNCBAQCB0eXBlZGVmIHN0cnVjdCBEZWxldGVTdG10CiAgKi8KIHR5cGVkZWYgc3RydWN0 IFVwZGF0ZVN0bXQKIHsKLQlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKnJlbGF0aW9u OwkJLyogcmVsYXRpb24gdG8gdXBkYXRlICovCi0JTGlzdAkgICAqdGFyZ2V0TGlzdDsJCS8q IHRoZSB0YXJnZXQgbGlzdCAob2YgUmVzVGFyZ2V0KSAqLwotCU5vZGUJICAgKndoZXJlQ2xh dXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLwotCUxpc3QJICAgKmZyb21DbGF1c2U7CQkvKiBv cHRpb25hbCBmcm9tIGNsYXVzZSBmb3IgbW9yZSB0YWJsZXMgKi8KLQlMaXN0CSAgICpyZXR1 cm5pbmdMaXN0OwkvKiBsaXN0IG9mIGV4cHJlc3Npb25zIHRvIHJldHVybiAqLwotCVdpdGhD bGF1c2UgKndpdGhDbGF1c2U7CQkvKiBXSVRIIGNsYXVzZSAqLworCU5vZGVUYWcJCQkJdHlw ZTsKKwlSYW5nZVZhcgkJICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8gdXBkYXRlICov CisJRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3JQb3J0aW9uT2Y7CS8qIEZPUiBQT1JUSU9OIE9G IGNsYXVzZSAqLworCUxpc3QJCQkgICAqdGFyZ2V0TGlzdDsJCS8qIHRoZSB0YXJnZXQgbGlz dCAob2YgUmVzVGFyZ2V0KSAqLworCU5vZGUJCQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxp ZmljYXRpb25zICovCisJTGlzdAkJCSAgICpmcm9tQ2xhdXNlOwkJLyogb3B0aW9uYWwgZnJv bSBjbGF1c2UgZm9yIG1vcmUgdGFibGVzICovCisJTGlzdAkJCSAgICpyZXR1cm5pbmdMaXN0 OwkvKiBsaXN0IG9mIGV4cHJlc3Npb25zIHRvIHJldHVybiAqLworCVdpdGhDbGF1c2UJCSAg ICp3aXRoQ2xhdXNlOwkJLyogV0lUSCBjbGF1c2UgKi8KIH0gVXBkYXRlU3RtdDsKIAogLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCBiOTcx M2VjOWFhNi4uMjU5MWY4NjExZDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh dGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0yMzUy LDYgKzIzNTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBNb2RpZnlUYWJsZVBhdGgKIAlMaXN0CSAg ICpyZXR1cm5pbmdMaXN0czsgLyogcGVyLXRhcmdldC10YWJsZSBSRVRVUk5JTkcgdGxpc3Rz ICovCiAJTGlzdAkgICAqcm93TWFya3M7CQkvKiBQbGFuUm93TWFya3MgKG5vbi1sb2NraW5n IG9ubHkpICovCiAJT25Db25mbGljdEV4cHIgKm9uY29uZmxpY3Q7IC8qIE9OIENPTkZMSUNU IGNsYXVzZSwgb3IgTlVMTCAqLworCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZjsJ LyogRk9SIFBPUlRJT04gT0YgY2xhdXNlIGZvciBVUERBVEUvREVMRVRFICovCiAJaW50CQkJ ZXBxUGFyYW07CQkvKiBJRCBvZiBQYXJhbSBmb3IgRXZhbFBsYW5RdWFsIHJlLWV2YWwgKi8K IAlMaXN0CSAgICptZXJnZUFjdGlvbkxpc3RzOwkvKiBwZXItdGFyZ2V0LXRhYmxlIGxpc3Rz IG9mIGFjdGlvbnMgZm9yCiAJCQkJCQkJCQkgKiBNRVJHRSAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9k ZXMuaAppbmRleCBiNGVmNmJjNDRjOS4uOWNiOWIxOGE0YzEgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5u b2Rlcy5oCkBAIC0yNDMsNiArMjQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTW9kaWZ5VGFibGUK IAlMaXN0CSAgICpyb3dNYXJrczsJCS8qIFBsYW5Sb3dNYXJrcyAobm9uLWxvY2tpbmcgb25s eSkgKi8KIAlpbnQJCQllcHFQYXJhbTsJCS8qIElEIG9mIFBhcmFtIGZvciBFdmFsUGxhblF1 YWwgcmUtZXZhbCAqLwogCU9uQ29uZmxpY3RBY3Rpb24gb25Db25mbGljdEFjdGlvbjsJLyog T04gQ09ORkxJQ1QgYWN0aW9uICovCisJTm9kZQkgICAqZm9yUG9ydGlvbk9mOwkvKiBGT1Ig UE9SVElPTiBPRiBjbGF1c2UgZm9yIFVQREFURS9ERUxFVEUgKi8KIAlMaXN0CSAgICphcmJp dGVySW5kZXhlczsgLyogTGlzdCBvZiBPTiBDT05GTElDVCBhcmJpdGVyIGluZGV4IE9JRHMg ICovCiAJTGlzdAkgICAqb25Db25mbGljdFNldDsJLyogSU5TRVJUIE9OIENPTkZMSUNUIERP IFVQREFURSB0YXJnZXRsaXN0ICovCiAJTGlzdAkgICAqb25Db25mbGljdENvbHM7IC8qIHRh cmdldCBjb2x1bW4gbnVtYmVycyBmb3Igb25Db25mbGljdFNldCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaAppbmRleCA0YTE1NDYwNmQyYi4uZWE2NzAxZDgzY2EgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3By aW1ub2Rlcy5oCkBAIC0yMDY4LDQgKzIwNjgsMzAgQEAgdHlwZWRlZiBzdHJ1Y3QgT25Db25m bGljdEV4cHIKIAlMaXN0CSAgICpleGNsUmVsVGxpc3Q7CS8qIHRsaXN0IG9mIHRoZSBFWENM VURFRCBwc2V1ZG8gcmVsYXRpb24gKi8KIH0gT25Db25mbGljdEV4cHI7CiAKKy8qLS0tLS0t LS0tLQorICogRm9yUG9ydGlvbk9mRXhwciAtIHJlcHJlc2VudHMgYSBGT1IgUE9SVElPTiBP RiAuLi4gZXhwcmVzc2lvbgorICoKKyAqIFdlIHNldCB1cCBhbiBleHByZXNzaW9uIHRvIG1h a2UgYSByYW5nZSBmcm9tIHRoZSBGUk9NL1RPIGJvdW5kcywKKyAqIHNvIHRoYXQgd2UgY2Fu IHVzZSByYW5nZSBvcGVyYXRvcnMgd2l0aCBpdC4KKyAqCisgKiBUaGVuIHdlIHNldCB1cCBh biBvdmVybGFwcyBleHByZXNzaW9uIGJldHdlZW4gdGhhdCBhbmQgdGhlIHJhbmdlIGNvbHVt biwKKyAqIHNvIHRoYXQgd2UgY2FuIGZpbmQgdGhlIHJvd3Mgd2UgbmVlZCB0byB1cGRhdGUv ZGVsZXRlLgorICoKKyAqIEluIHRoZSBleGVjdXRvciB3ZSdsbCBhbHNvIGJ1aWxkIGFuIGlu dGVyc2VjdCBleHByZXNzaW9uIGJldHdlZW4gdGhlCisgKiB0YXJnZXRlZCByYW5nZSBhbmQg dGhlIHJhbmdlIGNvbHVtbiwgc28gdGhhdCB3ZSBjYW4gdXBkYXRlIHRoZSBzdGFydC9lbmQK KyAqIGJvdW5kcyBvZiB0aGUgVVBEQVRFJ2QgcmVjb3JkLgorICotLS0tLS0tLS0tCisgKi8K K3R5cGVkZWYgc3RydWN0IEZvclBvcnRpb25PZkV4cHIKK3sKKwlOb2RlVGFnCQl0eXBlOwor CVZhcgkJICAgKnJhbmdlVmFyOwkJCS8qIFJhbmdlIGNvbHVtbiAqLworCWNoYXIJICAgKnJh bmdlX25hbWU7CQkJLyogUmFuZ2UgbmFtZSAqLworCU5vZGUJICAgKnRhcmdldFJhbmdlOwkJ LyogRk9SIFBPUlRJT04gT0YgYm91bmRzIGFzIGEgcmFuZ2UgKi8KKwlPaWQJCQlyYW5nZVR5 cGU7CQkJLyogdHlwZSBvZiB0YXJnZXRSYW5nZSAqLworCU5vZGUJICAgKm92ZXJsYXBzRXhw cjsJCS8qIHJhbmdlICYmIHRhcmdldFJhbmdlICovCisJTGlzdAkgICAqcmFuZ2VUYXJnZXRM aXN0OwkvKiBMaXN0IG9mIFRhcmdldEVudHJ5cyB0byBzZXQgdGhlIHRpbWUgY29sdW1uKHMp ICovCisJT2lkCQkJd2l0aG91dFBvcnRpb25Qcm9jOwkvKiBwcm9jIGZvciBvbGRfcmFuZ2Ug QC0gdGFyZ2V0X3JhbmdlICovCit9IEZvclBvcnRpb25PZkV4cHI7CisKICNlbmRpZgkJCQkJ CQkvKiBQUklNTk9ERVNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVy L3BhdGhub2RlLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaAppbmRleCBj NDNkOTdiNDhhNi4uMjAxNGNmMjMyMzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGlt aXplci9wYXRobm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5o CkBAIC0yODMsNyArMjgzLDggQEAgZXh0ZXJuIE1vZGlmeVRhYmxlUGF0aCAqY3JlYXRlX21v ZGlmeXRhYmxlX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQlMaXN0ICp1 cGRhdGVDb2xub3NMaXN0cywKIAkJCQkJCQkJCQkJCUxpc3QgKndpdGhDaGVja09wdGlvbkxp c3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0cywKIAkJCQkJCQkJCQkJCUxpc3QgKnJvd01hcmtz LCBPbkNvbmZsaWN0RXhwciAqb25jb25mbGljdCwKLQkJCQkJCQkJCQkJCUxpc3QgKm1lcmdl QWN0aW9uTGlzdHMsIGludCBlcHFQYXJhbSk7CisJCQkJCQkJCQkJCQlMaXN0ICptZXJnZUFj dGlvbkxpc3RzLAorCQkJCQkJCQkJCQkJRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9m LCBpbnQgZXBxUGFyYW0pOwogZXh0ZXJuIExpbWl0UGF0aCAqY3JlYXRlX2xpbWl0X3BhdGgo UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJCVBhdGggKnN1 YnBhdGgsCiAJCQkJCQkJCQlOb2RlICpsaW1pdE9mZnNldCwgTm9kZSAqbGltaXRDb3VudCwK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9hbmFseXplLmggYi9zcmMvaW5jbHVk ZS9wYXJzZXIvYW5hbHl6ZS5oCmluZGV4IDVlY2RkMTA5NDY2Li5lNTEyZjRiMjRlYSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaAorKysgYi9zcmMvaW5jbHVk ZS9wYXJzZXIvYW5hbHl6ZS5oCkBAIC00Myw3ICs0Myw4IEBAIGV4dGVybiBMaXN0ICp0cmFu c2Zvcm1JbnNlcnRSb3coUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpleHBybGlzdCwKIAkJ CQkJCQkJTGlzdCAqc3RtdGNvbHMsIExpc3QgKmljb2x1bW5zLCBMaXN0ICphdHRybm9zLAog CQkJCQkJCQlib29sIHN0cmlwX2luZGlyZWN0aW9uKTsKIGV4dGVybiBMaXN0ICp0cmFuc2Zv cm1VcGRhdGVUYXJnZXRMaXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwKLQkJCQkJCQkJCSAgIExp c3QgKm9yaWdUbGlzdCk7CisJCQkJCQkJCQkgICBMaXN0ICpvcmlnVGxpc3QsCisJCQkJCQkJ CQkgICBGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YpOwogZXh0ZXJuIFF1ZXJ5ICp0 cmFuc2Zvcm1Ub3BMZXZlbFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSYXdTdG10ICpwYXJz ZVRyZWUpOwogZXh0ZXJuIFF1ZXJ5ICp0cmFuc2Zvcm1TdG10KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTm9kZSAqcGFyc2VUcmVlKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2Vy L2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDFkM2Y3YmQz N2YyLi43MDdhNTE3MzM5YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlz dC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMzMwLDYgKzMzMCw3 IEBAIFBHX0tFWVdPUkQoInBlcmlvZCIsIFBFUklPRCwgUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInBsYWNpbmciLCBQTEFDSU5HLCBSRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGxhbnMiLCBQTEFOUywgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicG9saWN5IiwgUE9MSUNZLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJwb3J0aW9uIiwg UE9SVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi cG9zaXRpb24iLCBQT1NJVElPTiwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInByZWNlZGluZyIsIFBSRUNFRElORywgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgicHJlY2lzaW9uIiwgUFJFQ0lTSU9OLCBDT0xfTkFN RV9LRVlXT1JELCBBU19MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9w YXJzZV9ub2RlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4IDk5 ZDY1MTU3MzY1Li41ZTc0MGZlZjg4MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX25vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCkBA IC01Niw2ICs1Niw3IEBAIHR5cGVkZWYgZW51bSBQYXJzZUV4cHJLaW5kCiAJRVhQUl9LSU5E X1VQREFURV9TT1VSQ0UsCS8qIFVQREFURSBhc3NpZ25tZW50IHNvdXJjZSBpdGVtICovCiAJ RVhQUl9LSU5EX1VQREFURV9UQVJHRVQsCS8qIFVQREFURSBhc3NpZ25tZW50IHRhcmdldCBp dGVtICovCiAJRVhQUl9LSU5EX01FUkdFX1dIRU4sCQkvKiBNRVJHRSBXSEVOIFtOT1RdIE1B VENIRUQgY29uZGl0aW9uICovCisJRVhQUl9LSU5EX1VQREFURV9QT1JUSU9OLAkvKiBVUERB VEUgRk9SIFBPUlRJT04gT0YgaXRlbSAqLwogCUVYUFJfS0lORF9HUk9VUF9CWSwJCQkvKiBH Uk9VUCBCWSAqLwogCUVYUFJfS0lORF9PUkRFUl9CWSwJCQkvKiBPUkRFUiBCWSAqLwogCUVY UFJfS0lORF9ESVNUSU5DVF9PTiwJCS8qIERJU1RJTkNUIE9OICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNj YWNoZS5oCmluZGV4IDEzMzkzODJmOTFkLi45NDg3ODczYWQ0OCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5 c2NhY2hlLmgKQEAgLTE0Myw2ICsxNDMsOCBAQCBleHRlcm4gY2hhciBnZXRfcmVsX3BlcnNp c3RlbmNlKE9pZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1fZnJvbXNxbChP aWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVybiBPaWQJZ2V0 X3RyYW5zZm9ybV90b3NxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVz KTsKIGV4dGVybiBib29sIGdldF90eXBpc2RlZmluZWQoT2lkIHR5cGlkKTsKK2V4dGVybiBj aGFyICpnZXRfdHlwbmFtZShPaWQgdHlwaWQpOworZXh0ZXJuIGJvb2wgZ2V0X3R5cG5hbWVf YW5kX25hbWVzcGFjZShPaWQgdHlwaWQsIGNoYXIgKip0eXBuYW1lLCBjaGFyICoqdHlwbmFt ZXNwYWNlKTsKIGV4dGVybiBpbnQxNiBnZXRfdHlwbGVuKE9pZCB0eXBpZCk7CiBleHRlcm4g Ym9vbCBnZXRfdHlwYnl2YWwoT2lkIHR5cGlkKTsKIGV4dGVybiB2b2lkIGdldF90eXBsZW5i eXZhbChPaWQgdHlwaWQsIGludDE2ICp0eXBsZW4sIGJvb2wgKnR5cGJ5dmFsKTsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQzNzZiY2VkNGRiCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQK QEAgLTAsMCArMSw1NjIgQEAKKy0tIFRlc3RzIGZvciBVUERBVEUvREVMRVRFIEZPUiBQT1JU SU9OIE9GCistLSBXb3JrcyBvbiBub24tUEsgY29sdW1ucworQ1JFQVRFIFRBQkxFIGZvcl9w b3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRzcmFuZ2Us CisgIG5hbWUgdGV4dCBOT1QgTlVMTAorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29m X3Rlc3QgVkFMVUVTCisoJ1sxLDFdJywgJ1syMDE4LTAxLTAyLDIwMjAtMDEtMDEpJywgJ29u ZScpOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTgtMDEtMTUnIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnZm9v JzsKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTktMDEtMTUnIFRPIE5VTEw7CitTRUxFQ1QgKiBGUk9NIGZvcl9w b3J0aW9uX29mX3Rlc3Q7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk X2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LQorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAw OjAwOjAwIDIwMTkiKSB8IGZvbworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIw MTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZQorIFsxLDIpIHwgWyJUdWUg SmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJUdWUgSmFuIDE1IDAwOjAwOjAwIDIwMTkiKSB8IG9u ZQorKDMgcm93cykKKworLS0gV29ya3Mgb24gbW9yZSB0aGFuIG9uZSByYW5nZQorRFJPUCBU QUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29m X3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkMV9hdCB0c3JhbmdlLAorICB2YWxp ZDJfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMCispOworSU5TRVJUIElOVE8g Zm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAx OC0wMi0wMyknLCAnWzIwMTUtMDEtMDEsMjAyNS0wMS0wMSknLCAnb25lJyk7CitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQxX2F0IEZST00gJzIw MTgtMDEtMTUnIFRPIE5VTEwKK1NFVCBuYW1lID0gJ2Zvbyc7CitTRUxFQ1QgKiBGUk9NIGZv cl9wb3J0aW9uX29mX3Rlc3Q7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZh bGlkMV9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZDJfYXQgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWUgCistLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNh dCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUi LCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSB8IGZvbworIFsxLDIpIHwgWyJUdWUgSmFu IDAyIDAwOjAwOjAwIDIwMTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1 IEphbiAwMSAwMDowMDowMCAyMDE1IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBv bmUKKygyIHJvd3MpCisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZDJfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gTlVMTAorU0VUIG5hbWUgPSAn YmFyJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWQxX2F0ICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMl9hdCAgICAgICAgICAgICAgICAgICAg ICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFsiTW9uIEph biAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEZlYiAwMyAwMDowMDowMCAyMDE4IikgfCBbIk1v biBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwg YmFyCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMg MDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFu IDE1IDAwOjAwOjAwIDIwMTgiKSB8IGZvbworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAw OjAwIDIwMTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAw MDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBbMSwy KSB8IFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAy MDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6 MDAgMjAxOCIpIHwgb25lCisoNCByb3dzKQorCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8g TlVMTDsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWQxX2F0ICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMl9hdCAgICAgICAgICAgICAgICAgICAg ICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFsiVHVlIEph biAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIk1v biBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwg YmFyCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUg MDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFu IDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZQorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAw OjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAw MDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBbMSwy KSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAy MDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6 MDAgMjAxOCIpIHwgZm9vCisoNCByb3dzKQorCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDJfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8g TlVMTDsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWQxX2F0ICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMl9hdCAgICAgICAgICAgICAgICAgICAg ICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFsiVHVlIEph biAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIlRo dSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwg b25lCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4gMjAg MDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFu IDE1IDAwOjAwOjAwIDIwMTgiKSB8IGZvbworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAw OjAwIDIwMTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAw MDowMDowMCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4IikgfCBiYXIKKyBbMSwy KSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAy MDE4IikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4gMjAgMDA6MDA6 MDAgMjAxOCIpIHwgYmFyCisoNCByb3dzKQorCistLSBUZXN0IHdpdGggTlVMTHMgaW4gdGhl IHNjYWxhci9yYW5nZSBrZXkgY29sdW1ucy4KKy0tIFRoaXMgd29uJ3QgaGFwcGVuIGlmIHRo ZXJlIGlzIGEgUFJJTUFSWSBLRVkgb3IgVU5JUVVFIGNvbnN0cmFpbnQKKy0tIGJ1dCBGT1Ig UE9SVElPTiBPRiBzaG91bGRuJ3QgcmVxdWlyZSB0aGF0LgorRFJPUCBUQUJMRSBmb3JfcG9y dGlvbl9vZl90ZXN0OworQ1JFQVRFIFVOTE9HR0VEIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rl c3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4 dAorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTCisgICgnWzEs MV0nLCBOVUxMLCAnMSBudWxsJyksCisgICgnWzEsMV0nLCAnKCwpJywgJzEgdW5ib3VuZGVk JyksCisgICgnWzEsMV0nLCAnZW1wdHknLCAnMSBlbXB0eScpLAorICAoTlVMTCwgTlVMTCwg TlVMTCksCisgIChOVUxMLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTktMDEtMDEnKSwg J251bGwga2V5Jyk7CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorICBTRVQgbmFtZSA9ICdOVUxMIHRv IE5VTEwnOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICBuYW1lICAgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgWzEsMikg fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgMSBudWxsCisgWzEsMikgfCBlbXB0eSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMSBlbXB0eQorICAgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorIFsx LDIpIHwgKCwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IE5VTEwgdG8gTlVMTAorICAgICAgIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IE5VTEwgdG8gTlVMTAorKDUg cm93cykKKworRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFRBQkxF IGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsCisgIHZh bGlkX2F0IHRzcmFuZ2UgTk9UIE5VTEwsCisgIG5hbWUgdGV4dCBOT1QgTlVMTCwKKwlDT05T VFJBSU5UIGZvcl9wb3J0aW9uX29mX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0CitW QUxVRVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnb25lJyksCiso J1sxLDFdJywgJ1syMDE4LTAyLTAzLDIwMTgtMDMtMDMpJywgJ29uZScpLAorKCdbMSwxXScs ICdbMjAxOC0wMy0wMywyMDE4LTA0LTA0KScsICdvbmUnKSwKKygnWzIsMl0nLCAnWzIwMTgt MDEtMDEsMjAxOC0wMS0wNSknLCAndHdvJyksCisoJ1szLDNdJywgJ1syMDE4LTAxLTAxLCkn LCAndGhyZWUnKSwKKygnWzQsNF0nLCAnKCwyMDE4LTA0LTAxKScsICdmb3VyJyksCisoJ1s1 LDVdJywgJygsKScsICdmaXZlJykKKzsKKy0tCistLSBVUERBVEUgdGVzdHMKKy0tCistLSBT ZXR0aW5nIHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScg VE8gTlVMTAorU0VUIG5hbWUgPSAnZm9vJworV0hFUkUgaWQgPSAnWzUsNV0nOworRVJST1I6 ICBjb2x1bW4gb3IgcGVyaW9kICJpbnZhbGlkX2F0IiBvZiByZWxhdGlvbiAiZm9yX3BvcnRp b25fb2ZfdGVzdCIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMjogRk9SIFBPUlRJT04gT0YgaW52 YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCisgICAgICAgICAgICAgICAgICAg ICAgIF4KKy0tIFNldHRpbmcgdGhlIHJhbmdlIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8g TlVMTAorU0VUIHZhbGlkX2F0ID0gJ1sxOTkwLTAxLTAxLDE5OTktMDEtMDEpJworV0hFUkUg aWQgPSAnWzUsNV0nOworRVJST1I6ICBjYW4ndCBkaXJlY3RseSBhc3NpZ24gdG8gInZhbGlk X2F0IiBpbiBhIEZPUiBQT1JUSU9OIE9GIHVwZGF0ZQorTElORSAzOiBTRVQgdmFsaWRfYXQg PSAnWzE5OTAtMDEtMDEsMTk5OS0wMS0wMSknCisgICAgICAgICAgICBeCistLSBUaGUgd3Jv bmcgdHlwZSBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gMSBUTyA0CitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQg PSAnWzMsM10nOworRVJST1I6ICBmdW5jdGlvbiBwZ19jYXRhbG9nLnRzcmFuZ2UoaW50ZWdl ciwgaW50ZWdlcikgZG9lcyBub3QgZXhpc3QKK0xJTkUgMjogRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAxIFRPIDQKKyAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIE5v IGZ1bmN0aW9uIG1hdGNoZXMgdGhlIGdpdmVuIG5hbWUgYW5kIGFyZ3VtZW50IHR5cGVzLiBZ b3UgbWlnaHQgbmVlZCB0byBhZGQgZXhwbGljaXQgdHlwZSBjYXN0cy4KKy0tIFNldHRpbmcg d2l0aCB0aW1lc3RhbXBzIHJldmVyc2VkIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIw MTgtMDEtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4xJworV0hFUkUgaWQgPSAnWzMsM10nOwor RVJST1I6ICByYW5nZSBsb3dlciBib3VuZCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0 byByYW5nZSB1cHBlciBib3VuZAorLS0gU2V0dGluZyB3aXRoIGEgc3VicXVlcnkgZmFpbHMK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NIChTRUxFQ1QgJzIwMTgtMDEtMDEnKSBUTyAnMjAxOC0wNi0wMScKK1NFVCBuYW1lID0g J25vcGUnCitXSEVSRSBpZCA9ICdbMywzXSc7CitFUlJPUjogIGNhbm5vdCB1c2Ugc3VicXVl cnkgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbgorTElORSAyOiBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NIChTRUxFQ1QgJzIwMTgtMDEtMDEnKSBUTyAnMjAxOC0uLi4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBTZXR0aW5nIHdpdGgg YSBjb2x1bW4gZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NIGxvd2VyKHZhbGlkX2F0KSBUTyBOVUxMCitTRVQgbmFtZSA9 ICdub3BlJworV0hFUkUgaWQgPSAnWzMsM10nOworRVJST1I6ICBjYW5ub3QgdXNlIGNvbHVt biByZWZlcmVuY2UgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbgorTElORSAyOiBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIGxvd2VyKHZhbGlkX2F0KSBUTyBOVUxMCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gU2V0dGluZyB3 aXRoIHRpbWVzdGFtcHMgZXF1YWwgZG9lcyBub3RoaW5nCitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8g JzIwMTgtMDQtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4wJworV0hFUkUgaWQgPSAnWzMsM10n OworLS0gVXBkYXRpbmcgYSBmaW5pdGUvb3BlbiBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3Bl biB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9ICd0aHJlZV4x JworV0hFUkUgaWQgPSAnWzMsM10nOworLS0gVXBkYXRpbmcgYSBmaW5pdGUvb3BlbiBwb3J0 aW9uIHdpdGggYW4gb3Blbi9maW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAzLTAx JworU0VUIG5hbWUgPSAndGhyZWVeMicKK1dIRVJFIGlkID0gJ1szLDNdJzsKKy0tIFVwZGF0 aW5nIGFuIG9wZW4vZmluaXRlIHBvcnRpb24gd2l0aCBhbiBvcGVuL2Zpbml0ZSB0YXJnZXQK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NIE5VTEwgVE8gJzIwMTgtMDItMDEnCitTRVQgbmFtZSA9ICdmb3VyXjEnCitXSEVSRSBp ZCA9ICdbNCw0XSc7CistLSBVcGRhdGluZyBhbiBvcGVuL2Zpbml0ZSBwb3J0aW9uIHdpdGgg YSBmaW5pdGUvb3BlbiB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBUTyBOVUxMCitTRVQgbmFt ZSA9ICdmb3VyXjInCitXSEVSRSBpZCA9ICdbNCw0XSc7CistLSBVcGRhdGluZyBhIGZpbml0 ZS9maW5pdGUgcG9ydGlvbiB3aXRoIGFuIGV4YWN0IGZpdAorVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRP ICcyMDE4LTAyLTAxJworU0VUIG5hbWUgPSAnZm91cl4zJworV0hFUkUgaWQgPSAnWzQsNF0n OworLS0gVXBkYXRpbmcgYW4gZW5jbG9zZWQgc3BhbgorVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitTRVQg bmFtZSA9ICd0d29eMicKK1dIRVJFIGlkID0gJ1syLDJdJzsKKy0tIFVwZGF0aW5nIGFuIG9w ZW4vb3BlbiBwb3J0aW9uIHdpdGggYSBmaW5pdGUvZmluaXRlIHRhcmdldAorVVBEQVRFIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgt MDEtMDEnIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV4yJworV0hFUkUgaWQg PSAnWzUsNV0nOworLS0gVXBkYXRpbmcgYW4gZW5jbG9zZWQgc3BhbiB3aXRoIHNlcGFyYXRl IHByb3RydWRpbmcgc3BhbnMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScKK1NF VCBuYW1lID0gJ2ZpdmVeMycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIFVwZGF0aW5nIG11 bHRpcGxlIGVuY2xvc2VkIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1NFVCBuYW1lID0gJ29u ZV4yJworV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gVXBkYXRpbmcgd2l0aCBhIHNoaWZ0L3Jl ZHVjZSBjb25mbGljdAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZB TCAnMScgSE9VUiBUTyBNSU5VVEUKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdv bmVeMycKK1dIRVJFIGlkID0gJ1sxLDFdJzsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBUSU1F IFpPTkUgSU5URVJWQUwgJzInIEhPVVIKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9 ICdvbmVeNCcKK1dIRVJFIGlkID0gJ1sxLDFdJzsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0 IG9yIG5lYXIgIicyMDE5LTAxLTAxJyIKK0xJTkUgNDogICBUTyAnMjAxOS0wMS0wMScKKyAg ICAgICAgICAgICBeCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQKKyAgRlJPTSAoJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZB TCAnMicgSE9VUikKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeNCcKK1dI RVJFIGlkID0gJ1sxLDFdJzsKKy0tIFdpdGggYSBkaXJlY3QgdGFyZ2V0CitVUERBVEUgZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgKHRzcmFuZ2UoJzIw MTgtMDMtMTAnLCAnMjAxOC0wMy0xNycpKQorU0VUIG5hbWUgPSAnb25lXjUnCitXSEVSRSBp ZCA9ICdbMSwxXSc7CistLSBVcGRhdGluZyB0aGUgbm9uLXJhbmdlIHBhcnQgb2YgdGhlIFBL OgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTgtMDItMTUnIFRPIE5VTEwKK1NFVCBpZCA9ICdbNiw2XScKK1dIRVJFIGlk ID0gJ1sxLDFdJzsKKy0tIFVQREFURSB3aXRoIG5vIFdIRVJFIGNsYXVzZQorVVBEQVRFIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMzAt MDEtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gbmFtZSB8fCAnKic7CitTRUxFQ1QgKiBGUk9N IGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgbmFtZSAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIFsxLDIpIHwgWyJUdWUg SmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiKSB8IG9u ZV4yCisgWzEsMikgfCBbIlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMTUg MDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMiwzKSB8IFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4IikgfCB0d29eMgorIFszLDQpIHwg WyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgi KSB8IHRocmVlXjIKKyBbMyw0KSB8IFsiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IiwiRnJp IEp1biAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZQorIFszLDQpIHwgWyJGcmkgSnVuIDAx IDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IHRocmVlXjEK KyBbMyw0KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIiwpICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCB0aHJlZV4xKgorIFs0LDUpIHwgKCwiU3VuIEphbiAwMSAwMDowMDow MCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZvdXJeMQorIFs0LDUpIHwg WyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgi KSB8IGZvdXJeMworIFs0LDUpIHwgWyJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiLCJTdW4g QXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMgorIFs1LDYpIHwgKCwiU3VuIEphbiAw MSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpdmUKKyBb NSw2KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBm aXZlXjMKKyBbNSw2KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiVHVlIEphbiAw MSAwMDowMDowMCAyMDMwIikgfCBmaXZlCisgWzUsNikgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6 MDAgMjAzMCIsKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZml2ZSoKKyBbNiw3KSB8 IFsiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwODowMTowMCAyMDE4 IikgfCBvbmVeMgorIFs2LDcpIHwgWyJUaHUgTWFyIDAxIDA4OjAxOjAwIDIwMTgiLCJUaHUg TWFyIDAxIDEwOjAwOjAwIDIwMTgiKSB8IG9uZV4zCisgWzYsNykgfCBbIlRodSBNYXIgMDEg MTA6MDA6MDAgMjAxOCIsIlNhdCBNYXIgMDMgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjQKKyBb Niw3KSB8IFsiU2F0IE1hciAwMyAwMDowMDowMCAyMDE4IiwiU2F0IE1hciAxMCAwMDowMDow MCAyMDE4IikgfCBvbmVeNAorIFs2LDcpIHwgWyJTYXQgTWFyIDEwIDAwOjAwOjAwIDIwMTgi LCJTYXQgTWFyIDE3IDAwOjAwOjAwIDIwMTgiKSB8IG9uZV41CisgWzYsNykgfCBbIlNhdCBN YXIgMTcgMDA6MDA6MDAgMjAxOCIsIldlZCBBcHIgMDQgMDA6MDA6MDAgMjAxOCIpIHwgb25l XjQKKygyMiByb3dzKQorCistLQorLS0gREVMRVRFIHRlc3RzCistLQorLS0gRGVsZXRpbmcg d2l0aCBhIG1pc3NpbmcgY29sdW1uIGZhaWxzCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0CitGT1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRP IE5VTEwKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgY29sdW1uIG9yIHBlcmlvZCAi aW52YWxpZF9hdCIgb2YgcmVsYXRpb24gImZvcl9wb3J0aW9uX29mX3Rlc3QiIGRvZXMgbm90 IGV4aXN0CitMSU5FIDI6IEZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0w Ni0wMScgVE8gTlVMTAorICAgICAgICAgICAgICAgICAgICAgICBeCistLSBEZWxldGluZyB3 aXRoIHRpbWVzdGFtcHMgcmV2ZXJzZWQgZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRP ICcyMDE4LTAxLTAxJworV0hFUkUgaWQgPSAnWzMsM10nOworRVJST1I6ICByYW5nZSBsb3dl ciBib3VuZCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byByYW5nZSB1cHBlciBib3Vu ZAorLS0gRGVsZXRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRvZXMgbm90aGluZworREVM RVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOC0wNC0wMScgVE8gJzIwMTgtMDQtMDEnCitXSEVSRSBpZCA9ICdbMywzXSc7 CistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL2Nsb3NlZCB0YXJnZXQKK0RFTEVURSBGUk9N IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTgtMDYtMDEnIFRPICcyMDIwLTA2LTAxJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gRGVs ZXRpbmcgd2l0aCBhIGNsb3NlZC9vcGVuIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScg VE8gTlVMTAorV0hFUkUgaWQgPSAnWzMsM10nOworLS0gRGVsZXRpbmcgd2l0aCBhbiBvcGVu L2Nsb3NlZCB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyAnMjAxOC0wMi0wOCcKK1dIRVJFIGlk ID0gJ1sxLDFdJzsKKy0tIERlbGV0aW5nIHdpdGggYW4gb3Blbi9vcGVuIHRhcmdldAorREVM RVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSBOVUxMIFRPIE5VTEwKK1dIRVJFIGlkID0gJ1s2LDZdJzsKKy0tIERFTEVURSB3aXRo IG5vIFdIRVJFIGNsYXVzZQorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyNS0wMS0wMScgVE8gTlVMTDsKK1NFTEVD VCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7Cisg IGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIG5hbWUgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQorIFsxLDIpIHwg WyJUaHUgRmViIDA4IDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgi KSB8IG9uZV4yCisgWzIsMykgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBK YW4gMDUgMDA6MDA6MDAgMjAxOCIpIHwgdHdvXjIKKyBbMyw0KSB8IFsiTW9uIEphbiAwMSAw MDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZV4yCisg WzMsNCkgfCBbIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6 MDAgMjAxOCIpIHwgdGhyZWUKKyBbNCw1KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAx NyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmb3VyXjEKKyBbNCw1KSB8IFsiU3Vu IEphbiAwMSAwMDowMDowMCAyMDE3IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikgfCBm b3VyXjMKKyBbNCw1KSB8IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiU3VuIEFwciAw MSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjIKKyBbNSw2KSB8ICgsIlN1biBKYW4gMDEgMDA6 MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaXZlCisgWzUsNikg fCBbIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIsIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAx OCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZy aSBKdW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIk1vbiBKdW4g MDEgMDA6MDA6MDAgMjAyMCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgZml2ZQor KDExIHJvd3MpCisKKy0tIFVQREFURSAuLi4gUkVUVVJOSU5HIHJldHVybnMgb25seSB0aGUg dXBkYXRlZCB2YWx1ZXMgKG5vdCB0aGUgaW5zZXJ0ZWQgc2lkZSB2YWx1ZXMpCitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAx OC0wMi0wMScgVE8gJzIwMTgtMDItMTUnCitTRVQgbmFtZSA9ICd0aHJlZV4zJworV0hFUkUg aWQgPSAnWzMsM10nCitSRVRVUk5JTkcgKjsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbmFtZSAgIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tCisgWzMsNCkgfCBbIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAx OCIsIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMworKDEgcm93KQorCist LSB0ZXN0IHRoYXQgd2UgcnVuIHRyaWdnZXJzIG9uIHRoZSBVUERBVEUvREVMRVRFZCByb3cg YW5kIHRoZSBJTlNFUlRlZCByb3dzCitDUkVBVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2Zf dHJpZ2dlcigpCitSRVRVUk5TIHRyaWdnZXIKK0FTCiskJAorQkVHSU4KKyAgUkFJU0UgTk9U SUNFICclICUgJSBvZiAlJywgVEdfV0hFTiwgVEdfT1AsIE5FVy52YWxpZF9hdCwgT0xELnZh bGlkX2F0OworICBJRiBUR19PUCA9ICdERUxFVEUnIFRIRU4KKyAgICBSRVRVUk4gT0xEOwor ICBFTFNFCisgICAgUkVUVVJOIE5FVzsKKyAgRU5EIElGOworRU5EOworJCQKK0xBTkdVQUdF IHBscGdzcWw7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3JlCisg IEJFRk9SRSBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90 ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29m X3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcgor ICBBRlRFUiBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90 ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29m X3RyaWdnZXIoKTsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDIxLTAxLTAxJyBUTyAnMjAyMi0wMS0wMScKK1NFVCBuYW1l ID0gJ2ZpdmVeNCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK05PVElDRTogIEJFRk9SRSBVUERB VEUgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiLCJTYXQgSmFuIDAxIDAwOjAwOjAwIDIw MjIiKSBvZiBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyNSIpCitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiTW9uIEp1biAwMSAwMDowMDow MCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgb2YgPE5VTEw+CitOT1RJQ0U6 ICBCRUZPUkUgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQgWyJN b24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSBv ZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIlNhdCBKYW4gMDEgMDA6MDA6MDAg MjAyMiIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxMPgorTk9USUNFOiAg QUZURVIgVVBEQVRFIFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIiwiU2F0IEphbiAwMSAw MDowMDowMCAyMDIyIikgb2YgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjUiKQorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyMy0wMS0wMScgVE8gJzIwMjQtMDEt MDEnCitXSEVSRSBpZCA9ICdbNSw1XSc7CitOT1RJQ0U6ICBCRUZPUkUgREVMRVRFIDxOVUxM PiBvZiBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyNSIpCitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDowMDowMCAy MDIyIiwiU3VuIEphbiAwMSAwMDowMDowMCAyMDIzIikgb2YgPE5VTEw+CitOT1RJQ0U6ICBC RUZPUkUgSU5TRVJUIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0IiwiV2VkIEphbiAwMSAw MDowMDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQgWyJTYXQg SmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMiKSBvZiA8 TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAy NCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxMPgorTk9USUNFOiAgQUZU RVIgREVMRVRFIDxOVUxMPiBvZiBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyNSIpCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAg ICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBuYW1lICAgCistLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0KKyBbMSwyKSB8IFsiVGh1IEZlYiAwOCAwMDowMDowMCAyMDE4 IiwiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmVeMgorIFsyLDMpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAwOjAwOjAwIDIwMTgiKSB8IHR3 b14yCisgWzMsNCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEg MDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMgorIFszLDQpIHwgWyJUaHUgRmViIDAxIDAwOjAw OjAwIDIwMTgiLCJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlXjMKKyBbMyw0 KSB8IFsiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwMDowMDowMCAy MDE4IikgfCB0aHJlZV4yCisgWzMsNCkgfCBbIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIs IlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWUKKyBbNCw1KSB8ICgsIlN1biBK YW4gMDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmb3Vy XjEKKyBbNCw1KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiVGh1IEZlYiAwMSAw MDowMDowMCAyMDE4IikgfCBmb3VyXjMKKyBbNCw1KSB8IFsiVGh1IEZlYiAwMSAwMDowMDow MCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjIKKyBbNSw2KSB8 ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBmaXZlCisgWzUsNikgfCBbIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIsIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIk1vbiBKYW4gMDEg MDA6MDA6MDAgMjAxOCIsIkZyaSBKdW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2ZV4zCisg WzUsNikgfCBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgZml2ZQorIFs1LDYpIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEi LCJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiKSB8IGZpdmVeNAorIFs1LDYpIHwgWyJTYXQg SmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMiKSB8IGZp dmUKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0IiwiV2VkIEphbiAwMSAw MDowMDowMCAyMDI1IikgfCBmaXZlCisoMTYgcm93cykKKworLS0gVGVzdCB3aXRoIGEgY3Vz dG9tIHJhbmdlIHR5cGUKK0NSRUFURSBUWVBFIG15ZGF0ZXJhbmdlIEFTIHJhbmdlKHN1YnR5 cGU9ZGF0ZSk7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDIgKAorICBpZCBp bnQ0cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlkX2F0IG15ZGF0ZXJhbmdlIE5PVCBOVUxMLAor ICBuYW1lIHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlvbl9vZl90ZXN0 Ml9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOwor SU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdDIKK1ZBTFVFUworKCdbMSwxXScsICdb MjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDIt MDMsMjAxOC0wMy0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1syMDE4LTAzLTAzLDIwMTgt MDQtMDQpJywgJ29uZScpLAorKCdbMiwyXScsICdbMjAxOC0wMS0wMSwyMDE4LTA1LTAxKScs ICd0d28nKSwKKygnWzMsM10nLCAnWzIwMTgtMDEtMDEsKScsICd0aHJlZScpOworOworVVBE QVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE4LTAxLTEwJyBUTyAnMjAxOC0wMi0xMCcKK1NFVCBuYW1lID0gJ29uZV4xJworV0hF UkUgaWQgPSAnWzEsMV0nOworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDIKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPICcyMDE4LTAyLTE1 JworV0hFUkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90 ZXN0MiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQg ICAgICAgICB8IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0KKyBbMSwyKSB8IFswMS0wMi0yMDE4LDAxLTEwLTIwMTgpIHwgb25lCisgWzEsMikg fCBbMDEtMTAtMjAxOCwwMi0wMy0yMDE4KSB8IG9uZV4xCisgWzEsMikgfCBbMDItMDMtMjAx OCwwMi0xMC0yMDE4KSB8IG9uZV4xCisgWzEsMikgfCBbMDItMTAtMjAxOCwwMy0wMy0yMDE4 KSB8IG9uZQorIFsxLDIpIHwgWzAzLTAzLTIwMTgsMDQtMDQtMjAxOCkgfCBvbmUKKyBbMiwz KSB8IFswMS0wMS0yMDE4LDAxLTE1LTIwMTgpIHwgdHdvCisgWzIsMykgfCBbMDItMTUtMjAx OCwwNS0wMS0yMDE4KSB8IHR3bworIFszLDQpIHwgWzAxLTAxLTIwMTgsKSAgICAgICAgICAg fCB0aHJlZQorKDggcm93cykKKworRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0MjsK K0RST1AgVFlQRSBteWRhdGVyYW5nZTsKKy0tIFRlc3QgRk9SIFBPUlRJT04gT0YgYWdhaW5z dCBhIHBhcnRpdGlvbmVkIHRhYmxlLgorLS0gdGVtcG9yYWxfcGFydGl0aW9uZWRfMSBoYXMg dGhlIHNhbWUgYXR0bnVtcyBhcyB0aGUgcm9vdAorLS0gdGVtcG9yYWxfcGFydGl0aW9uZWRf MyBoYXMgdGhlIGRpZmZlcmVudCBhdHRudW1zIGZyb20gdGhlIHJvb3QKKy0tIHRlbXBvcmFs X3BhcnRpdGlvbmVkXzUgaGFzIHRoZSBkaWZmZXJlbnQgYXR0bnVtcyB0b28sIGJ1dCByZXZl cnNlZAorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkICgKKwlpZCBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBuYW1lIHRleHQsCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9wYXJpdGlvbmVkX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfMSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9S IFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1syLDJdJyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfMyBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZB TFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRdJyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfNSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVF UyBJTiAoJ1s1LDVdJywgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRp b25lZCBERVRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzM7CitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIERST1AgQ09MVU1OIGlkLCBEUk9QIENPTFVN TiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgQUREIENP TFVNTiBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsIEFERCBDT0xVTU4gdmFsaWRfYXQgZGF0ZXJh bmdlIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgQVRUQUNI IFBBUlRJVElPTiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIEZPUiBWQUxVRVMgSU4gKCdbMywz XScsICdbNCw0XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgREVUQUNI IFBBUlRJVElPTiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81OworQUxURVIgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfNSBEUk9QIENPTFVNTiBpZCwgRFJPUCBDT0xVTU4gdmFsaWRfYXQ7 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IEFERCBDT0xVTU4gdmFsaWRf YXQgZGF0ZXJhbmdlIE5PVCBOVUxMLCBBREQgQ09MVU1OIGlkIGludDRyYW5nZSBOT1QgTlVM TDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEFUVEFDSCBQQVJUSVRJT04g dGVtcG9yYWxfcGFydGl0aW9uZWRfNSBGT1IgVkFMVUVTIElOICgnWzUsNV0nLCAnWzYsNl0n KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVFUworICAoJ1sxLDFd JywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ29uZScpLAorICAo J1szLDNdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ3RocmVl JyksCisgICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScp LCAnZml2ZScpOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKKyAgaWQg ICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAgCistLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIFsxLDIpIHwgWzAxLTAxLTIwMDAsMDEtMDEt MjAxMCkgfCBvbmUKKyBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgdGhyZWUK KyBbNSw2KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgZml2ZQorKDMgcm93cykKKwor LS0gVXBkYXRlIHdpdGhvdXQgbW92aW5nIHdpdGhpbiBwYXJ0aXRpb24gMQorVVBEQVRFIHRl bXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAt MDMtMDEnIFRPICcyMDAwLTA0LTAxJworICBTRVQgbmFtZSA9ICdvbmVeMScKKyAgV0hFUkUg aWQgPSAnWzEsMV0nOworLS0gVXBkYXRlIHdpdGhvdXQgbW92aW5nIHdpdGhpbiBwYXJ0aXRp b24gMworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMDAtMDMtMDEnIFRPICcyMDAwLTA0LTAxJworICBTRVQgbmFtZSA9ICd0 aHJlZV4xJworICBXSEVSRSBpZCA9ICdbMywzXSc7CistLSBVcGRhdGUgd2l0aG91dCBtb3Zp bmcgd2l0aGluIHBhcnRpdGlvbiA1CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMy0wMScgVE8gJzIwMDAtMDQtMDEn CisgIFNFVCBuYW1lID0gJ2ZpdmVeMScKKyAgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gTW92 ZSBmcm9tIHBhcnRpdGlvbiAxIHRvIHBhcnRpdGlvbiAzCitVUERBVEUgdGVtcG9yYWxfcGFy dGl0aW9uZWQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNi0wMScgVE8g JzIwMDAtMDctMDEnCisgIFNFVCBuYW1lID0gJ29uZV4yJywKKyAgICAgIGlkID0gJ1s0LDRd JworICBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBNb3ZlIGZyb20gcGFydGl0aW9uIDMgdG8g cGFydGl0aW9uIDEKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDAwLTA2LTAxJyBUTyAnMjAwMC0wNy0wMScKKyAgU0VUIG5h bWUgPSAndGhyZWVeMicsCisgICAgICBpZCA9ICdbMiwyXScKKyAgV0hFUkUgaWQgPSAnWzMs M10nOworLS0gTW92ZSBmcm9tIHBhcnRpdGlvbiA1IHRvIHBhcnRpdGlvbiAzCitVUERBVEUg dGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAw MC0wNi0wMScgVE8gJzIwMDAtMDctMDEnCisgIFNFVCBuYW1lID0gJ2ZpdmVeMicsCisgICAg ICBpZCA9ICdbMywzXScKKyAgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gVXBkYXRlIGFsbCBw YXJ0aXRpb25zIGF0IG9uY2UgKGVhY2ggd2l0aCBsZWZ0b3ZlcnMpCitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8 ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgIG5hbWUgICAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBbMSwyKSB8IFswMS0wMS0yMDAwLDAzLTAx LTIwMDApIHwgb25lCisgWzEsMikgfCBbMDMtMDEtMjAwMCwwNC0wMS0yMDAwKSB8IG9uZV4x CisgWzEsMikgfCBbMDQtMDEtMjAwMCwwNi0wMS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzA3 LTAxLTIwMDAsMDEtMDEtMjAxMCkgfCBvbmUKKyBbMiwzKSB8IFswNi0wMS0yMDAwLDA3LTAx LTIwMDApIHwgdGhyZWVeMgorIFszLDQpIHwgWzAxLTAxLTIwMDAsMDMtMDEtMjAwMCkgfCB0 aHJlZQorIFszLDQpIHwgWzAzLTAxLTIwMDAsMDQtMDEtMjAwMCkgfCB0aHJlZV4xCisgWzMs NCkgfCBbMDQtMDEtMjAwMCwwNi0wMS0yMDAwKSB8IHRocmVlCisgWzMsNCkgfCBbMDYtMDEt MjAwMCwwNy0wMS0yMDAwKSB8IGZpdmVeMgorIFszLDQpIHwgWzA3LTAxLTIwMDAsMDEtMDEt MjAxMCkgfCB0aHJlZQorIFs0LDUpIHwgWzA2LTAxLTIwMDAsMDctMDEtMjAwMCkgfCBvbmVe MgorIFs1LDYpIHwgWzAxLTAxLTIwMDAsMDMtMDEtMjAwMCkgfCBmaXZlCisgWzUsNikgfCBb MDMtMDEtMjAwMCwwNC0wMS0yMDAwKSB8IGZpdmVeMQorIFs1LDYpIHwgWzA0LTAxLTIwMDAs MDYtMDEtMjAwMCkgfCBmaXZlCisgWzUsNikgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEwKSB8 IGZpdmUKKygxNSByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVk XzEgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgfCAgbmFtZSAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLQorIFsxLDIpIHwgWzAxLTAxLTIwMDAsMDMtMDEtMjAwMCkgfCBvbmUKKyBbMSwy KSB8IFswMy0wMS0yMDAwLDA0LTAxLTIwMDApIHwgb25lXjEKKyBbMSwyKSB8IFswNC0wMS0y MDAwLDA2LTAxLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEw KSB8IG9uZQorIFsyLDMpIHwgWzA2LTAxLTIwMDAsMDctMDEtMjAwMCkgfCB0aHJlZV4yCiso NSByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgT1JERVIg QlkgaWQsIHZhbGlkX2F0OworICBuYW1lICAgfCAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAg ICAgICAgIAorLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IHRocmVlICAgfCBbMyw0KSB8IFswMS0wMS0yMDAwLDAzLTAxLTIwMDApCisgdGhyZWVeMSB8 IFszLDQpIHwgWzAzLTAxLTIwMDAsMDQtMDEtMjAwMCkKKyB0aHJlZSAgIHwgWzMsNCkgfCBb MDQtMDEtMjAwMCwwNi0wMS0yMDAwKQorIGZpdmVeMiAgfCBbMyw0KSB8IFswNi0wMS0yMDAw LDA3LTAxLTIwMDApCisgdGhyZWUgICB8IFszLDQpIHwgWzA3LTAxLTIwMDAsMDEtMDEtMjAx MCkKKyBvbmVeMiAgIHwgWzQsNSkgfCBbMDYtMDEtMjAwMCwwNy0wMS0yMDAwKQorKDYgcm93 cykKKworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IE9SREVSIEJZIGlk LCB2YWxpZF9hdDsKKyAgbmFtZSAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8ICBpZCAg IAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgZml2ZSAg IHwgWzAxLTAxLTIwMDAsMDMtMDEtMjAwMCkgfCBbNSw2KQorIGZpdmVeMSB8IFswMy0wMS0y MDAwLDA0LTAxLTIwMDApIHwgWzUsNikKKyBmaXZlICAgfCBbMDQtMDEtMjAwMCwwNi0wMS0y MDAwKSB8IFs1LDYpCisgZml2ZSAgIHwgWzA3LTAxLTIwMDAsMDEtMDEtMjAxMCkgfCBbNSw2 KQorKDQgcm93cykKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CmluZGV4IDc2MTBiMDExZDY4 Li5kYTA3OWNmYzU4YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9v cHJfc2FuaXR5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5p dHkub3V0CkBAIC0xOTQyLDYgKzE5NDIsNyBAQCBXSEVSRSBhMS5hbW9wZmFtaWx5ID0gMCBP UiBhMS5hbW9wbGVmdHR5cGUgPSAwIE9SIGExLmFtb3ByaWdodHR5cGUgPSAwCiBTRUxFQ1Qg YTEuYW1vcGZhbWlseSwgYTEuYW1vcHN0cmF0ZWd5CiBGUk9NIHBnX2Ftb3AgYXMgYTEKIFdI RVJFIE5PVCAoKGExLmFtb3BwdXJwb3NlID0gJ3MnIEFORCBhMS5hbW9wc29ydGZhbWlseSA9 IDApIE9SCisgICAgICAgICAgIChhMS5hbW9wcHVycG9zZSA9ICdwJyBBTkQgYTEuYW1vcHNv cnRmYW1pbHkgPSAwKSBPUgogICAgICAgICAgICAoYTEuYW1vcHB1cnBvc2UgPSAnbycgQU5E IGExLmFtb3Bzb3J0ZmFtaWx5IDw+IDApKTsKICBhbW9wZmFtaWx5IHwgYW1vcHN0cmF0ZWd5 IAogLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCkBAIC0yMDA4LDYgKzIwMDksOSBAQCBP UkRFUiBCWSAxLCAyLCAzOwogICAgICAgICA3ODMgfCAgICAgICAgICAgMjggfCA8QAogICAg ICAgICA3ODMgfCAgICAgICAgICAgMjkgfCA8XgogICAgICAgICA3ODMgfCAgICAgICAgICAg MzAgfCA+XgorICAgICAgICA3ODMgfCAgICAgICAgICAgMzEgfCAjCisgICAgICAgIDc4MyB8 ICAgICAgICAgICAzMSB8ICoKKyAgICAgICAgNzgzIHwgICAgICAgICAgIDMyIHwgQC0KICAg ICAgICAgNzgzIHwgICAgICAgICAgIDQ4IHwgPEAKICAgICAgICAgNzgzIHwgICAgICAgICAg IDY4IHwgPEAKICAgICAgICAyNzQyIHwgICAgICAgICAgICAxIHwgJiYKQEAgLTIwODgsNyAr MjA5Miw3IEBAIE9SREVSIEJZIDEsIDIsIDM7CiAgICAgICAgNDAwMCB8ICAgICAgICAgICAy OCB8IF5ACiAgICAgICAgNDAwMCB8ICAgICAgICAgICAyOSB8IDxeCiAgICAgICAgNDAwMCB8 ICAgICAgICAgICAzMCB8ID5eCi0oMTI0IHJvd3MpCisoMTI3IHJvd3MpCiAKIC0tIENoZWNr IHRoYXQgYWxsIG9wY2xhc3Mgc2VhcmNoIG9wZXJhdG9ycyBoYXZlIHNlbGVjdGl2aXR5IGVz dGltYXRvcnMuCiAtLSBUaGlzIGlzIG5vdCBhYnNvbHV0ZWx5IHJlcXVpcmVkLCBidXQgaXQg c2VlbXMgYSByZWFzb25hYmxlIHRoaW5nCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w cml2aWxlZ2VzLm91dAppbmRleCBmYmIwNDg5YTRmZi4uMzM5NWQyMTUwZmYgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dApAQCAtOTg1LDYgKzk4NSwy NCBAQCBFUlJPUjogIG51bGwgdmFsdWUgaW4gY29sdW1uICJiIiBvZiByZWxhdGlvbiAiZXJy dHN0X3BhcnRfMiIgdmlvbGF0ZXMgbm90LW51bGwgYwogREVUQUlMOiAgRmFpbGluZyByb3cg Y29udGFpbnMgKGEsIGIsIGMpID0gKGFhYWEsIG51bGwsIGNjYykuCiBTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKIERST1AgVEFCTEUgZXJydHN0Owor LS0gdGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyBvbiB0aGUgcmFuZ2UvUEVSSU9EIHVz ZWQgaW4gRk9SIFBPUlRJT04gT0YKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVz c19wcml2X3VzZXIxOworQ1JFQVRFIFRBQkxFIHQxICgKKyAgYzEgaW50NHJhbmdlLAorICB2 YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdDFwayBQUklNQVJZIEtFWSAoYzEsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworR1JBTlQgU0VMRUNUIE9OIHQxIFRPIHJl Z3Jlc3NfcHJpdl91c2VyMjsKK0dSQU5UIFNFTEVDVCBPTiB0MSBUTyByZWdyZXNzX3ByaXZf dXNlcjM7CitHUkFOVCBVUERBVEUgKGMxKSBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjI7 CitHUkFOVCBVUERBVEUgKGMxLCB2YWxpZF9hdCkgT04gdDEgVE8gcmVncmVzc19wcml2X3Vz ZXIzOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjI7CitV UERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0wMScgVE8g JzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitFUlJPUjogIHBlcm1pc3Npb24gZGVu aWVkIGZvciB0YWJsZSB0MQorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3By aXZfdXNlcjM7CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAw MC0wMS0wMScgVE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKK0RST1AgVEFCTEUgdDE7CiAt LSB0ZXN0IGNvbHVtbi1sZXZlbCBwcml2aWxlZ2VzIHdoZW4gaW52b2x2ZWQgd2l0aCBERUxF VEUKIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOwogQUxU RVIgVEFCTEUgYXRlc3Q2IEFERCBDT0xVTU4gdGhyZWUgaW50ZWdlcjsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dAppbmRleCAxOTUwZTZm MjgxZi4uZjRiODhiY2MzOGQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3VwZGF0YWJsZV92aWV3cy5vdXQKQEAgLTMwMjMsNiArMzAyMywzOCBAQCBzZWxlY3QgKiBm cm9tIHV2X2lvY3VfdGFiOwogCiBkcm9wIHZpZXcgdXZfaW9jdV92aWV3OwogZHJvcCB0YWJs ZSB1dl9pb2N1X3RhYjsKKy0tIENoZWNrIFVQREFURSBGT1IgUE9SVElPTiBPRiB3b3JrcyBj b3JyZWN0bHkKK2NyZWF0ZSB0YWJsZSB1dl9mcG9fdGFiIChpZCBpbnQ0cmFuZ2UsIHZhbGlk X2F0IHRzcmFuZ2UsIGIgZmxvYXQsCisgICAgY29uc3RyYWludCBwa191dl9mcG9fdGFiIHBy aW1hcnkga2V5IChpZCwgdmFsaWRfYXQgd2l0aG91dCBvdmVybGFwcykpOworaW5zZXJ0IGlu dG8gdXZfZnBvX3RhYiB2YWx1ZXMgKCdbMSwxXScsICdbMjAyMC0wMS0wMSwgMjAzMC0wMS0w MSknLCAwKTsKK2NyZWF0ZSB2aWV3IHV2X2Zwb192aWV3IGFzCisgICAgc2VsZWN0IGIsIGIr MSBhcyBjLCB2YWxpZF9hdCwgaWQsICcyLjAnOjp0ZXh0IGFzIHR3byBmcm9tIHV2X2Zwb190 YWI7CitpbnNlcnQgaW50byB1dl9mcG9fdmlldyAoaWQsIHZhbGlkX2F0LCBiKSB2YWx1ZXMg KCdbMSwxXScsICdbMjAxMC0wMS0wMSwgMjAyMC0wMS0wMSknLCAxKTsKK3NlbGVjdCAqIGZy b20gdXZfZnBvX3ZpZXc7CisgYiB8IGMgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk X2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGlkICAgfCB0d28gCistLS0rLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tKy0tLS0tCisgMCB8IDEgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIs IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAzMCIpIHwgWzEsMikgfCAyLjAKKyAxIHwgMiB8IFsi RnJpIEphbiAwMSAwMDowMDowMCAyMDEwIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikg fCBbMSwyKSB8IDIuMAorKDIgcm93cykKKwordXBkYXRlIHV2X2Zwb192aWV3IGZvciBwb3J0 aW9uIG9mIHZhbGlkX2F0IGZyb20gJzIwMTUtMDEtMDEnIHRvICcyMDIwLTAxLTAxJyBzZXQg YiA9IDIgd2hlcmUgaWQgPSAnWzEsMV0nOworc2VsZWN0ICogZnJvbSB1dl9mcG9fdmlldzsK KyBiIHwgYyB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgaWQgICB8IHR3byAKKy0tLSstLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0K KyAwIHwgMSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiVHVlIEphbiAwMSAwMDow MDowMCAyMDMwIikgfCBbMSwyKSB8IDIuMAorIDIgfCAzIHwgWyJUaHUgSmFuIDAxIDAwOjAw OjAwIDIwMTUiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFsxLDIpIHwgMi4wCisg MSB8IDIgfCBbIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAxMCIsIlRodSBKYW4gMDEgMDA6MDA6 MDAgMjAxNSIpIHwgWzEsMikgfCAyLjAKKygzIHJvd3MpCisKK2RlbGV0ZSBmcm9tIHV2X2Zw b192aWV3IGZvciBwb3J0aW9uIG9mIHZhbGlkX2F0IGZyb20gJzIwMTctMDEtMDEnIHRvICcy MDIyLTAxLTAxJyB3aGVyZSBpZCA9ICdbMSwxXSc7CitzZWxlY3QgKiBmcm9tIHV2X2Zwb192 aWV3OworIGIgfCBjIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAg ICAgICAgICAgICAgICAgICB8ICBpZCAgIHwgdHdvIAorLS0tKy0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSst LS0tLQorIDEgfCAyIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMTAiLCJUaHUgSmFuIDAx IDAwOjAwOjAwIDIwMTUiKSB8IFsxLDIpIHwgMi4wCisgMCB8IDEgfCBbIlNhdCBKYW4gMDEg MDA6MDA6MDAgMjAyMiIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAzMCIpIHwgWzEsMikgfCAy LjAKKyAyIHwgMyB8IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1IiwiU3VuIEphbiAwMSAw MDowMDowMCAyMDE3IikgfCBbMSwyKSB8IDIuMAorKDMgcm93cykKKwogLS0gVGVzdCB3aG9s ZS1yb3cgcmVmZXJlbmNlcyB0byB0aGUgdmlldwogY3JlYXRlIHRhYmxlIHV2X2lvY3VfdGFi IChhIGludCB1bmlxdWUsIGIgdGV4dCk7CiBjcmVhdGUgdmlldyB1dl9pb2N1X3ZpZXcgYXMK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFw cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0 CmluZGV4IGM2MzM3MzhjMmViLi42MGM5ZWVkYWVlOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CkBAIC0zMDUsNiArMzA1LDM2 IEBAIElOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCiAg ICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzcs N10nLCAnZm9vJyksCiAgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAx MC0wMS0wMScpLCAnWzksOV0nLCAnYmFyJykKIDsKK1VQREFURSB0ZW1wb3JhbDMgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNS0wMScgVE8gJzIwMDAtMDctMDEnCisg IFNFVCBuYW1lID0gbmFtZSB8fCAnMSc7CitVUERBVEUgdGVtcG9yYWwzIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDQtMDEnIFRPICcyMDAwLTA2LTAxJworICBTRVQg bmFtZSA9IG5hbWUgfHwgJzInCisgIFdIRVJFIGlkID0gJ1syLDJdJzsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWwzIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2 YWxpZF9hdCAgICAgICAgIHwgIGlkMiAgIHwgbmFtZSAgCistLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLQorIFsxLDIpIHwgWzAxLTAxLTIwMDAs MDUtMDEtMjAwMCkgfCBbNyw4KSAgfCBmb28KKyBbMSwyKSB8IFswNS0wMS0yMDAwLDA3LTAx LTIwMDApIHwgWzcsOCkgIHwgZm9vMQorIFsxLDIpIHwgWzA3LTAxLTIwMDAsMDEtMDEtMjAx MCkgfCBbNyw4KSAgfCBmb28KKyBbMiwzKSB8IFswMS0wMS0yMDAwLDA0LTAxLTIwMDApIHwg WzksMTApIHwgYmFyCisgWzIsMykgfCBbMDQtMDEtMjAwMCwwNS0wMS0yMDAwKSB8IFs5LDEw KSB8IGJhcjIKKyBbMiwzKSB8IFswNS0wMS0yMDAwLDA2LTAxLTIwMDApIHwgWzksMTApIHwg YmFyMTIKKyBbMiwzKSB8IFswNi0wMS0yMDAwLDA3LTAxLTIwMDApIHwgWzksMTApIHwgYmFy MQorIFsyLDMpIHwgWzA3LTAxLTIwMDAsMDEtMDEtMjAxMCkgfCBbOSwxMCkgfCBiYXIKKyg4 IHJvd3MpCisKKy0tIGNvbmZsaWN0aW5nIGlkIG9ubHk6CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bDMgKGlkLCB2YWxpZF9hdCwgaWQyLCBuYW1lKQorICBWQUxVRVMKKyAgKCdbMSwxXScsIGRh dGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDA2LTAxLTAxJyksICdbOCw4XScsICdmb28zJyk7 CitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29u c3RyYWludCAidGVtcG9yYWwzX3BrIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShb MSwyKSwgWzAxLTAxLTIwMDUsMDEtMDEtMjAwNikpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5n IGtleSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIFswNy0wMS0yMDAwLDAxLTAxLTIwMTApKS4K Ky0tIGNvbmZsaWN0aW5nIGlkMiBvbmx5OgorSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwg dmFsaWRfYXQsIGlkMiwgbmFtZSkKKyAgVkFMVUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2Uo JzIwMDUtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzksOV0nLCAnYmFyMycpOworRVJST1I6 ICBjb25mbGljdGluZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQg InRlbXBvcmFsM191bmlxIgorREVUQUlMOiAgS2V5IChpZDIsIHZhbGlkX2F0KT0oWzksMTAp LCBbMDEtMDEtMjAwNSwwMS0wMS0yMDEwKSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5 IChpZDIsIHZhbGlkX2F0KT0oWzksMTApLCBbMDctMDEtMjAwMCwwMS0wMS0yMDEwKSkuCiBE Uk9QIFRBQkxFIHRlbXBvcmFsMzsKIC0tCiAtLSB0ZXN0IGNoYW5naW5nIHRoZSBQSydzIGRl cGVuZGVuY2llcwpAQCAtMzU3LDYgKzM4NywzNiBAQCBTRUxFQ1QgKiBGUk9NIHRwMiBPUkRF UiBCWSBpZCwgdmFsaWRfYXQ7CiAgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0wMS0yMDEwKSB8 IHRocmVlCiAoMSByb3cpCiAKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0xNScgVE8gJzIwMDAtMDItMTUn CisgIFNFVCBuYW1lID0gJ29uZTInCisgIFdIRVJFIGlkID0gJ1sxLDFdJzsKK1VQREFURSAg dGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAwMC0wMi0yMCcgVE8gJzIwMDAtMDItMjUnCisgIFNFVCBpZCA9ICdbNCw0XScKKyAgV0hF UkUgbmFtZSA9ICdvbmUnOworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAyLTAxLTAxJyBUTyAnMjAwMy0wMS0wMScK KyAgU0VUIGlkID0gJ1syLDJdJworICBXSEVSRSBuYW1lID0gJ3RocmVlJzsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1JworICBXSEVSRSBpZCA9ICdbMywzXSc7 CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlkLCB2YWxp ZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAgCistLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIFsxLDIpIHwgWzAxLTAx LTIwMDAsMDEtMTUtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFswMS0xNS0yMDAwLDAyLTAxLTIw MDApIHwgb25lMgorIFsxLDIpIHwgWzAyLTAxLTIwMDAsMDItMTUtMjAwMCkgfCBvbmUyCisg WzEsMikgfCBbMDItMTUtMjAwMCwwMi0yMC0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAyLTI1 LTIwMDAsMDMtMDEtMjAwMCkgfCBvbmUKKyBbMiwzKSB8IFswMS0wMS0yMDAyLDAxLTAxLTIw MDMpIHwgdGhyZWUKKyBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTE1LTIwMDApIHwgdGhyZWUK KyBbMyw0KSB8IFswMi0xNS0yMDAwLDAxLTAxLTIwMDIpIHwgdGhyZWUKKyBbMyw0KSB8IFsw MS0wMS0yMDAzLDAxLTAxLTIwMTApIHwgdGhyZWUKKyBbNCw1KSB8IFswMi0yMC0yMDAwLDAy LTI1LTIwMDApIHwgb25lCisoMTAgcm93cykKKwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZDsKIC0tIHRlbXBvcmFsIFVOSVFVRToKIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZCAoCkBAIC0zOTIsNiArNDUyLDM2IEBAIFNFTEVDVCAqIEZST00gdHAyIE9S REVSIEJZIGlkLCB2YWxpZF9hdDsKICBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTAp IHwgdGhyZWUKICgxIHJvdykKIAorVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0x NScKKyAgU0VUIG5hbWUgPSAnb25lMicKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOworVVBEQVRF ICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDAwLTAyLTIwJyBUTyAnMjAwMC0wMi0yNScKKyAgU0VUIGlkID0gJ1s0LDRdJworICBX SEVSRSBuYW1lID0gJ29uZSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDItMDEtMDEnIFRPICcyMDAzLTAxLTAx JworICBTRVQgaWQgPSAnWzIsMl0nCisgIFdIRVJFIG5hbWUgPSAndGhyZWUnOworREVMRVRF IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAwMC0wMS0xNScgVE8gJzIwMDAtMDItMTUnCisgIFdIRVJFIGlkID0gJ1szLDNd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZh bGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEt MDEtMjAwMCwwMS0xNS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAxLTE1LTIwMDAsMDItMDEt MjAwMCkgfCBvbmUyCisgWzEsMikgfCBbMDItMDEtMjAwMCwwMi0xNS0yMDAwKSB8IG9uZTIK KyBbMSwyKSB8IFswMi0xNS0yMDAwLDAyLTIwLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDIt MjUtMjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorIFsyLDMpIHwgWzAxLTAxLTIwMDIsMDEtMDEt MjAwMykgfCB0aHJlZQorIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMTUtMjAwMCkgfCB0aHJl ZQorIFszLDQpIHwgWzAyLTE1LTIwMDAsMDEtMDEtMjAwMikgfCB0aHJlZQorIFszLDQpIHwg WzAxLTAxLTIwMDMsMDEtMDEtMjAxMCkgfCB0aHJlZQorIFs0LDUpIHwgWzAyLTIwLTIwMDAs MDItMjUtMjAwMCkgfCBvbmUKKygxMCByb3dzKQorCiBEUk9QIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkOwogLS0KIC0tIHRlc3QgRksgZGVwZW5kZW5jaWVzCkBAIC02OTIsMTMgKzc4 MiwyNSBAQCBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScKIFdIRVJFIGlk ID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDItMDEnKTsKIEVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxf cm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAo aWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1 IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJs ZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBjaGFuZ2luZyBhbiB1bnJlZmVyZW5jZWQg cGFydCBpcyBva2F5OgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8gJzIwMTgtMDEtMDMnCitTRVQgaWQgPSAnWzcs N10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBjaGFuZ2luZyBqdXN0IGEgcGFydCBmYWls czoKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJworU0VUIGlkID0gJ1s3LDddJworV0hFUkUg aWQgPSAnWzUsNV0nOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1w b3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2Zr X3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgorREVUQUlMOiAg S2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJXZWQgSmFuIDAzIDAwOjAwOjAwIDIwMTgi LCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9t IHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmpl Y3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CiBERUxF VEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIFVQREFU RSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcy MDE2LTAyLTAxJykKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIC0tIGNsZWFuIHVwOgogREVMRVRFIEZS T00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwotREVM RVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJywgJ1s3LDddJyk7CiAtLQogLS0g dGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAogLS0KQEAgLTcyOSwxMyArODMxLDI1 IEBAIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJwogV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmci IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdf ZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgogREVUQUlMOiAgS2V5IChpZCwg dmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmVi IDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0 ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIGNoYW5naW5nIGFuIHVucmVmZXJlbmNlZCBwYXJ0 IGlzIG9rYXk6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1NFVCBpZCA9ICdbNyw3XScK K1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGNoYW5naW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgor VVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAx OC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9 ICdbNSw1XSc7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFs X3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5n MnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkg KGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIldlZCBKYW4gMDMgMDA6MDA6MDAgMjAxOCIsIlRo dSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFi bGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGlu ZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKIERFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogVVBEQVRFIHRl bXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYt MDItMDEnKQogV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogLS0gY2xlYW4gdXA6CiBERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7Ci1ERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nLCAnWzcsN10nKTsKIC0tCiAtLSB0ZXN0 IEZLIHBhcmVudCBkZWxldGVzIE5PIEFDVElPTgogLS0KQEAgLTc1Nyw5ICs4NzEsMjIgQEAg REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywKIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CiBFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRl bXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxf Zmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCiBERVRBSUw6 ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAx OCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZy b20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gZGVsZXRpbmcgYW4gdW5yZWZl cmVuY2VkIHBhcnQgaXMgb2theToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZworRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8gJzIwMTgtMDEtMDMnCitX SEVSRSBpZCA9ICdbNSw1XSc7CistLSBkZWxldGluZyBqdXN0IGEgcGFydCBmYWlsczoKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitXSEVSRSBpZCA9ICdbNSw1XSc7CitFUlJP UjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMg Zm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFi bGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9 KFs1LDYpLCBbIldlZCBKYW4gMDMgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6 MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2Zr X3JuZzJybmciLgogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5k IHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogREVMRVRFIEZST00gdGVtcG9yYWxfcm5n IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nKTsKIC0tCiAtLSB0ZXN0IEZLIHBhcmVu dCBkZWxldGVzIFJFU1RSSUNUCiAtLQpAQCAtNzgxLDkgKzkwOCwyMiBAQCBERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDItMDEnLAogREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKTsKIEVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5n IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5n X2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQs IHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAi dGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBkZWxldGluZyBhbiB1bnJlZmVyZW5jZWQgcGFy dCBpcyBva2F5OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1dIRVJFIGlkID0g J1s1LDVdJzsKKy0tIGRlbGV0aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00g dGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1 JyBUTyAnMjAxOC0wMS0xMCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRl IG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtl eSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9y YWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsi V2VkIEphbiAwMyAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4Iikp IGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIu CiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUg UEsgZGVsZXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMywzXSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5n IFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgSU4gKCdbNSw1XScpOwogLS0KIC0tIHRlc3QgT04gVVBEQVRFL0RFTEVURSBv cHRpb25zCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggYjA4YWFh ZTQ0YjguLmNjMmY2YjQ2ZTBjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUK QEAgLTQ4LDcgKzQ4LDcgQEAgdGVzdDogY3JlYXRlX2luZGV4IGNyZWF0ZV9pbmRleF9zcGdp c3QgY3JlYXRlX3ZpZXcgaW5kZXhfaW5jbHVkaW5nIGluZGV4X2luY2x1ZGkKICMgLS0tLS0t LS0tLQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzCiAjIC0tLS0tLS0tLS0K LXRlc3Q6IGNyZWF0ZV9hZ2dyZWdhdGUgY3JlYXRlX2Z1bmN0aW9uX3NxbCBjcmVhdGVfY2Fz dCBjb25zdHJhaW50cyB0cmlnZ2VycyBzZWxlY3QgaW5oZXJpdCB0eXBlZF90YWJsZSB2YWN1 dW0gZHJvcF9pZl9leGlzdHMgdXBkYXRhYmxlX3ZpZXdzIHJvbGVhdHRyaWJ1dGVzIGNyZWF0 ZV9hbSBoYXNoX2Z1bmMgZXJyb3JzIGluZmluaXRlX3JlY3Vyc2UKK3Rlc3Q6IGNyZWF0ZV9h Z2dyZWdhdGUgY3JlYXRlX2Z1bmN0aW9uX3NxbCBjcmVhdGVfY2FzdCBjb25zdHJhaW50cyB0 cmlnZ2VycyBzZWxlY3QgaW5oZXJpdCB0eXBlZF90YWJsZSB2YWN1dW0gZHJvcF9pZl9leGlz dHMgdXBkYXRhYmxlX3ZpZXdzIHJvbGVhdHRyaWJ1dGVzIGNyZWF0ZV9hbSBoYXNoX2Z1bmMg ZXJyb3JzIGluZmluaXRlX3JlY3Vyc2UgZm9yX3BvcnRpb25fb2YKIAogIyAtLS0tLS0tLS0t CiAjIHNhbml0eV9jaGVjayBkb2VzIGEgdmFjdXVtLCBhZmZlY3RpbmcgdGhlIHNvcnQgb3Jk ZXIgb2YgU0VMRUNUICoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9w b3J0aW9uX29mLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjAxMGM1ZDk0ZjUK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9v Zi5zcWwKQEAgLTAsMCArMSw0MjMgQEAKKy0tIFRlc3RzIGZvciBVUERBVEUvREVMRVRFIEZP UiBQT1JUSU9OIE9GCisKKy0tIFdvcmtzIG9uIG5vbi1QSyBjb2x1bW5zCitDUkVBVEUgVEFC TEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQg dHNyYW5nZSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMCispOworSU5TRVJUIElOVE8gZm9yX3Bv cnRpb25fb2ZfdGVzdCBWQUxVRVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAyMC0wMS0w MSknLCAnb25lJyk7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyAnMjAxOS0wMS0wMScKK1NFVCBu YW1lID0gJ2Zvbyc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMTUnIFRPIE5VTEw7CisKK1NFTEVD VCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKworLS0gV29ya3Mgb24gbW9yZSB0aGFu IG9uZSByYW5nZQorRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFRB QkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkMV9h dCB0c3JhbmdlLAorICB2YWxpZDJfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxM CispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMKKygnWzEsMV0n LCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnWzIwMTUtMDEtMDEsMjAyNS0wMS0wMSkn LCAnb25lJyk7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gTlVMTAorU0VUIG5hbWUgPSAnZm9v JzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKworVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkMl9hdCBGUk9NICcyMDE4LTAx LTE1JyBUTyBOVUxMCitTRVQgbmFtZSA9ICdiYXInOworU0VMRUNUICogRlJPTSBmb3JfcG9y dGlvbl9vZl90ZXN0OworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8gTlVMTDsKK1NFTEVD VCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKworREVMRVRFIEZST00gZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQyX2F0IEZST00gJzIwMTgtMDEtMjAn IFRPIE5VTEw7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisKKy0tIFRl c3Qgd2l0aCBOVUxMcyBpbiB0aGUgc2NhbGFyL3JhbmdlIGtleSBjb2x1bW5zLgorLS0gVGhp cyB3b24ndCBoYXBwZW4gaWYgdGhlcmUgaXMgYSBQUklNQVJZIEtFWSBvciBVTklRVUUgY29u c3RyYWludAorLS0gYnV0IEZPUiBQT1JUSU9OIE9GIHNob3VsZG4ndCByZXF1aXJlIHRoYXQu CitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUgVU5MT0dHRUQgVEFC TEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQg dHNyYW5nZSwKKyAgbmFtZSB0ZXh0CispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2Zf dGVzdCBWQUxVRVMKKyAgKCdbMSwxXScsIE5VTEwsICcxIG51bGwnKSwKKyAgKCdbMSwxXScs ICcoLCknLCAnMSB1bmJvdW5kZWQnKSwKKyAgKCdbMSwxXScsICdlbXB0eScsICcxIGVtcHR5 JyksCisgIChOVUxMLCBOVUxMLCBOVUxMKSwKKyAgKE5VTEwsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOS0wMS0wMScpLCAnbnVsbCBrZXknKTsKK1VQREFURSBmb3JfcG9ydGlvbl9v Zl90ZXN0CisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCisg IFNFVCBuYW1lID0gJ05VTEwgdG8gTlVMTCc7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3Q7CisKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDsKK0NSRUFURSBU QUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlIE5PVCBOVUxMLAor ICB2YWxpZF9hdCB0c3JhbmdlIE5PVCBOVUxMLAorICBuYW1lIHRleHQgTk9UIE5VTEwsCisJ Q09OU1RSQUlOVCBmb3JfcG9ydGlvbl9vZl9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVz dAorVkFMVUVTCisoJ1sxLDFdJywgJ1syMDE4LTAxLTAyLDIwMTgtMDItMDMpJywgJ29uZScp LAorKCdbMSwxXScsICdbMjAxOC0wMi0wMywyMDE4LTAzLTAzKScsICdvbmUnKSwKKygnWzEs MV0nLCAnWzIwMTgtMDMtMDMsMjAxOC0wNC0wNCknLCAnb25lJyksCisoJ1syLDJdJywgJ1sy MDE4LTAxLTAxLDIwMTgtMDEtMDUpJywgJ3R3bycpLAorKCdbMywzXScsICdbMjAxOC0wMS0w MSwpJywgJ3RocmVlJyksCisoJ1s0LDRdJywgJygsMjAxOC0wNC0wMSknLCAnZm91cicpLAor KCdbNSw1XScsICcoLCknLCAnZml2ZScpCis7CisKKy0tCistLSBVUERBVEUgdGVzdHMKKy0t CisKKy0tIFNldHRpbmcgd2l0aCBhIG1pc3NpbmcgY29sdW1uIGZhaWxzCitVUERBVEUgZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4 LTA2LTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9ICdmb28nCitXSEVSRSBpZCA9ICdbNSw1XSc7 CisKKy0tIFNldHRpbmcgdGhlIHJhbmdlIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVM TAorU0VUIHZhbGlkX2F0ID0gJ1sxOTkwLTAxLTAxLDE5OTktMDEtMDEpJworV0hFUkUgaWQg PSAnWzUsNV0nOworCistLSBUaGUgd3JvbmcgdHlwZSBmYWlscworVVBEQVRFIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gMSBUTyA0CitTRVQg bmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBTZXR0aW5nIHdpdGgg dGltZXN0YW1wcyByZXZlcnNlZCBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcyMDE4LTAx LTAxJworU0VUIG5hbWUgPSAndGhyZWVeMScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0g U2V0dGluZyB3aXRoIGEgc3VicXVlcnkgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIChTRUxFQ1QgJzIwMTgtMDEtMDEn KSBUTyAnMjAxOC0wNi0wMScKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMywz XSc7CisKKy0tIFNldHRpbmcgd2l0aCBhIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gbG93ZXIodmFsaWRf YXQpIFRPIE5VTEwKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMywzXSc7CisK Ky0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRvZXMgbm90aGluZworVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTgtMDQtMDEnIFRPICcyMDE4LTA0LTAxJworU0VUIG5hbWUgPSAndGhyZWVeMCcKK1dIRVJF IGlkID0gJ1szLDNdJzsKKworLS0gVXBkYXRpbmcgYSBmaW5pdGUvb3BlbiBwb3J0aW9uIHdp dGggYSBmaW5pdGUvb3BlbiB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCitTRVQg bmFtZSA9ICd0aHJlZV4xJworV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBVcGRhdGluZyBh IGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0aCBhbiBvcGVuL2Zpbml0ZSB0YXJnZXQKK1VQREFU RSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5V TEwgVE8gJzIwMTgtMDMtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4yJworV0hFUkUgaWQgPSAn WzMsM10nOworCistLSBVcGRhdGluZyBhbiBvcGVuL2Zpbml0ZSBwb3J0aW9uIHdpdGggYW4g b3Blbi9maW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAyLTAxJworU0VUIG5hbWUg PSAnZm91cl4xJworV0hFUkUgaWQgPSAnWzQsNF0nOworCistLSBVcGRhdGluZyBhbiBvcGVu L2Zpbml0ZSBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJnZXQKK1VQREFURSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAx LTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9ICdmb3VyXjInCitXSEVSRSBpZCA9ICdbNCw0XSc7 CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL2Zpbml0ZSBwb3J0aW9uIHdpdGggYW4gZXhhY3Qg Zml0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMTgtMDItMDEnCitTRVQgbmFtZSA9ICdmb3Vy XjMnCitXSEVSRSBpZCA9ICdbNCw0XSc7CisKKy0tIFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNw YW4KK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NIE5VTEwgVE8gTlVMTAorU0VUIG5hbWUgPSAndHdvXjInCitXSEVSRSBpZCA9ICdb MiwyXSc7CisKKy0tIFVwZGF0aW5nIGFuIG9wZW4vb3BlbiBwb3J0aW9uIHdpdGggYSBmaW5p dGUvZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDEnIFRPICcyMDE5LTAxLTAxJworU0VU IG5hbWUgPSAnZml2ZV4yJworV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBVcGRhdGluZyBh biBlbmNsb3NlZCBzcGFuIHdpdGggc2VwYXJhdGUgcHJvdHJ1ZGluZyBzcGFucworVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTctMDEtMDEnIFRPICcyMDIwLTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV4zJworV0hFUkUg aWQgPSAnWzUsNV0nOworCistLSBVcGRhdGluZyBtdWx0aXBsZSBlbmNsb3NlZCBzcGFucwor VVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gTlVMTCBUTyBOVUxMCitTRVQgbmFtZSA9ICdvbmVeMicKK1dIRVJFIGlkID0gJ1sxLDFd JzsKKworLS0gVXBkYXRpbmcgd2l0aCBhIHNoaWZ0L3JlZHVjZSBjb25mbGljdAorVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0CisgIEZST00g JzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZBTCAnMScgSE9VUiBUTyBNSU5VVEUK KyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeMycKK1dIRVJFIGlkID0gJ1sx LDFdJzsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZBTCAnMicg SE9VUgorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40JworV0hFUkUgaWQg PSAnWzEsMV0nOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQKKyAgRlJPTSAoJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZB TCAnMicgSE9VUikKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeNCcKK1dI RVJFIGlkID0gJ1sxLDFdJzsKKworLS0gV2l0aCBhIGRpcmVjdCB0YXJnZXQKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCAodHNyYW5nZSgn MjAxOC0wMy0xMCcsICcyMDE4LTAzLTE3JykpCitTRVQgbmFtZSA9ICdvbmVeNScKK1dIRVJF IGlkID0gJ1sxLDFdJzsKKworLS0gVXBkYXRpbmcgdGhlIG5vbi1yYW5nZSBwYXJ0IG9mIHRo ZSBQSzoKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE4LTAyLTE1JyBUTyBOVUxMCitTRVQgaWQgPSAnWzYsNl0nCitXSEVS RSBpZCA9ICdbMSwxXSc7CisKKy0tIFVQREFURSB3aXRoIG5vIFdIRVJFIGNsYXVzZQorVVBE QVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMzAtMDEtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gbmFtZSB8fCAnKic7CisKK1NFTEVD VCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisK Ky0tCistLSBERUxFVEUgdGVzdHMKKy0tCisKKy0tIERlbGV0aW5nIHdpdGggYSBtaXNzaW5n IGNvbHVtbiBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCitXSEVSRSBp ZCA9ICdbNSw1XSc7CisKKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1wcyByZXZlcnNlZCBm YWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEnCitXSEVSRSBpZCA9 ICdbMywzXSc7CisKKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1wcyBlcXVhbCBkb2VzIG5v dGhpbmcKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0LTAxJworV0hFUkUgaWQg PSAnWzMsM10nOworCistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL2Nsb3NlZCB0YXJnZXQK K0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcyMDIwLTA2LTAxJworV0hFUkUgaWQgPSAnWzUs NV0nOworCistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL29wZW4gdGFyZ2V0CitERUxFVEUg RlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE4LTA0LTAxJyBUTyBOVUxMCitXSEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIERlbGV0 aW5nIHdpdGggYW4gb3Blbi9jbG9zZWQgdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gJzIwMTgt MDItMDgnCitXSEVSRSBpZCA9ICdbMSwxXSc7CisKKy0tIERlbGV0aW5nIHdpdGggYW4gb3Bl bi9vcGVuIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1dIRVJFIGlkID0gJ1s2LDZd JzsKKworLS0gREVMRVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitERUxFVEUgRlJPTSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDI1LTAx LTAxJyBUTyBOVUxMOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JE RVIgQlkgaWQsIHZhbGlkX2F0OworCistLSBVUERBVEUgLi4uIFJFVFVSTklORyByZXR1cm5z IG9ubHkgdGhlIHVwZGF0ZWQgdmFsdWVzIChub3QgdGhlIGluc2VydGVkIHNpZGUgdmFsdWVz KQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTgtMDItMDEnIFRPICcyMDE4LTAyLTE1JworU0VUIG5hbWUgPSAndGhyZWVe MycKK1dIRVJFIGlkID0gJ1szLDNdJworUkVUVVJOSU5HICo7CisKKy0tIHRlc3QgdGhhdCB3 ZSBydW4gdHJpZ2dlcnMgb24gdGhlIFVQREFURS9ERUxFVEVkIHJvdyBhbmQgdGhlIElOU0VS VGVkIHJvd3MKKworQ1JFQVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKQor UkVUVVJOUyB0cmlnZ2VyCitBUworJCQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAnJSAlICUg b2YgJScsIFRHX1dIRU4sIFRHX09QLCBORVcudmFsaWRfYXQsIE9MRC52YWxpZF9hdDsKKyAg SUYgVEdfT1AgPSAnREVMRVRFJyBUSEVOCisgICAgUkVUVVJOIE9MRDsKKyAgRUxTRQorICAg IFJFVFVSTiBORVc7CisgIEVORCBJRjsKK0VORDsKKyQkCitMQU5HVUFHRSBwbHBnc3FsOwor CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3JlCisgIEJFRk9SRSBJ TlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZP UiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIo KTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcgorICBBRlRFUiBJ TlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZP UiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIo KTsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMjEtMDEtMDEnIFRPICcyMDIyLTAxLTAxJworU0VUIG5hbWUgPSAnZml2 ZV40JworV0hFUkUgaWQgPSAnWzUsNV0nOworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDIzLTAxLTAxJyBUTyAn MjAyNC0wMS0wMScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKworU0VMRUNUICogRlJPTSBmb3Jf cG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworLS0gVGVzdCB3aXRo IGEgY3VzdG9tIHJhbmdlIHR5cGUKKworQ1JFQVRFIFRZUEUgbXlkYXRlcmFuZ2UgQVMgcmFu Z2Uoc3VidHlwZT1kYXRlKTsKKworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Qy ICgKKyAgaWQgaW50NHJhbmdlIE5PVCBOVUxMLAorICB2YWxpZF9hdCBteWRhdGVyYW5nZSBO T1QgTlVMTCwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMLAorCUNPTlNUUkFJTlQgZm9yX3BvcnRp b25fb2ZfdGVzdDJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitWQUxVRVMKKygn WzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnb25lJyksCisoJ1sxLDFdJywg J1syMDE4LTAyLTAzLDIwMTgtMDMtMDMpJywgJ29uZScpLAorKCdbMSwxXScsICdbMjAxOC0w My0wMywyMDE4LTA0LTA0KScsICdvbmUnKSwKKygnWzIsMl0nLCAnWzIwMTgtMDEtMDEsMjAx OC0wNS0wMSknLCAndHdvJyksCisoJ1szLDNdJywgJ1syMDE4LTAxLTAxLCknLCAndGhyZWUn KTsKKzsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTAxLTEwJyBUTyAnMjAxOC0wMi0xMCcKK1NFVCBuYW1lID0g J29uZV4xJworV0hFUkUgaWQgPSAnWzEsMV0nOworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlv bl9vZl90ZXN0MgorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0xNScg VE8gJzIwMTgtMDItMTUnCitXSEVSRSBpZCA9ICdbMiwyXSc7CisKK1NFTEVDVCAqIEZST00g Zm9yX3BvcnRpb25fb2ZfdGVzdDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworCitEUk9QIFRB QkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QyOworRFJPUCBUWVBFIG15ZGF0ZXJhbmdlOworCist LSBUZXN0IEZPUiBQT1JUSU9OIE9GIGFnYWluc3QgYSBwYXJ0aXRpb25lZCB0YWJsZS4KKy0t IHRlbXBvcmFsX3BhcnRpdGlvbmVkXzEgaGFzIHRoZSBzYW1lIGF0dG51bXMgYXMgdGhlIHJv b3QKKy0tIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgaGFzIHRoZSBkaWZmZXJlbnQgYXR0bnVt cyBmcm9tIHRoZSByb290CistLSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IGhhcyB0aGUgZGlm ZmVyZW50IGF0dG51bXMgdG9vLCBidXQgcmV2ZXJzZWQKKworQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdl LAorICBuYW1lIHRleHQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3VxIFVO SVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispIFBBUlRJVElPTiBCWSBM SVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMSBQQVJUSVRJ T04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1sy LDJdJyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBQQVJUSVRJT04g T0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRd Jyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBQQVJUSVRJT04gT0Yg dGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1s1LDVdJywgJ1s2LDZdJyk7 CisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIERFVEFDSCBQQVJUSVRJT04g dGVtcG9yYWxfcGFydGl0aW9uZWRfMzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkXzMgRFJPUCBDT0xVTU4gaWQsIERST1AgQ09MVU1OIHZhbGlkX2F0OworQUxURVIgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBBREQgQ09MVU1OIGlkIGludDRyYW5nZSBOT1Qg TlVMTCwgQUREIENPTFVNTiB2YWxpZF9hdCBkYXRlcmFuZ2UgTk9UIE5VTEw7CitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3Bh cnRpdGlvbmVkXzMgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRdJyk7CisKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIERFVEFDSCBQQVJUSVRJT04gdGVtcG9yYWxf cGFydGl0aW9uZWRfNTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgRFJP UCBDT0xVTU4gaWQsIERST1AgQ09MVU1OIHZhbGlkX2F0OworQUxURVIgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfNSBBREQgQ09MVU1OIHZhbGlkX2F0IGRhdGVyYW5nZSBOT1QgTlVM TCwgQUREIENPTFVNTiBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEw7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlvbmVk XzUgRk9SIFZBTFVFUyBJTiAoJ1s1LDVdJywgJ1s2LDZdJyk7CisKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAw LTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ29uZScpLAorICAoJ1szLDNdJywgZGF0ZXJhbmdl KCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ3RocmVlJyksCisgICgnWzUsNV0nLCBk YXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnZml2ZScpOworCitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworCistLSBVcGRhdGUgd2l0aG91dCBt b3Zpbmcgd2l0aGluIHBhcnRpdGlvbiAxCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWQg Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMy0wMScgVE8gJzIwMDAtMDQt MDEnCisgIFNFVCBuYW1lID0gJ29uZV4xJworICBXSEVSRSBpZCA9ICdbMSwxXSc7CisKKy0t IFVwZGF0ZSB3aXRob3V0IG1vdmluZyB3aXRoaW4gcGFydGl0aW9uIDMKK1VQREFURSB0ZW1w b3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAz LTAxJyBUTyAnMjAwMC0wNC0wMScKKyAgU0VUIG5hbWUgPSAndGhyZWVeMScKKyAgV0hFUkUg aWQgPSAnWzMsM10nOworCistLSBVcGRhdGUgd2l0aG91dCBtb3Zpbmcgd2l0aGluIHBhcnRp dGlvbiA1CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAwMC0wMy0wMScgVE8gJzIwMDAtMDQtMDEnCisgIFNFVCBuYW1lID0g J2ZpdmVeMScKKyAgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBNb3ZlIGZyb20gcGFydGl0 aW9uIDEgdG8gcGFydGl0aW9uIDMKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA2LTAxJyBUTyAnMjAwMC0wNy0wMScK KyAgU0VUIG5hbWUgPSAnb25lXjInLAorICAgICAgaWQgPSAnWzQsNF0nCisgIFdIRVJFIGlk ID0gJ1sxLDFdJzsKKworLS0gTW92ZSBmcm9tIHBhcnRpdGlvbiAzIHRvIHBhcnRpdGlvbiAx CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAwMC0wNi0wMScgVE8gJzIwMDAtMDctMDEnCisgIFNFVCBuYW1lID0gJ3RocmVl XjInLAorICAgICAgaWQgPSAnWzIsMl0nCisgIFdIRVJFIGlkID0gJ1szLDNdJzsKKworLS0g TW92ZSBmcm9tIHBhcnRpdGlvbiA1IHRvIHBhcnRpdGlvbiAzCitVUERBVEUgdGVtcG9yYWxf cGFydGl0aW9uZWQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNi0wMScg VE8gJzIwMDAtMDctMDEnCisgIFNFVCBuYW1lID0gJ2ZpdmVeMicsCisgICAgICBpZCA9ICdb MywzXScKKyAgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBVcGRhdGUgYWxsIHBhcnRpdGlv bnMgYXQgb25jZSAoZWFjaCB3aXRoIGxlZnRvdmVycykKKworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkXzEgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBPUkRFUiBCWSBpZCwgdmFs aWRfYXQ7CisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL29wcl9zYW5pdHkuc3FsCmluZGV4IDJmZTdiNmRjYzQ5Li4yZGZmZTdjNWI2YSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvb3ByX3Nhbml0eS5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvb3ByX3Nhbml0eS5zcWwKQEAgLTEyNDEsNiArMTI0MSw3 IEBAIFdIRVJFIGExLmFtb3BmYW1pbHkgPSAwIE9SIGExLmFtb3BsZWZ0dHlwZSA9IDAgT1Ig YTEuYW1vcHJpZ2h0dHlwZSA9IDAKIFNFTEVDVCBhMS5hbW9wZmFtaWx5LCBhMS5hbW9wc3Ry YXRlZ3kKIEZST00gcGdfYW1vcCBhcyBhMQogV0hFUkUgTk9UICgoYTEuYW1vcHB1cnBvc2Ug PSAncycgQU5EIGExLmFtb3Bzb3J0ZmFtaWx5ID0gMCkgT1IKKyAgICAgICAgICAgKGExLmFt b3BwdXJwb3NlID0gJ3AnIEFORCBhMS5hbW9wc29ydGZhbWlseSA9IDApIE9SCiAgICAgICAg ICAgIChhMS5hbW9wcHVycG9zZSA9ICdvJyBBTkQgYTEuYW1vcHNvcnRmYW1pbHkgPD4gMCkp OwogCiAtLSBhbW9wbWV0aG9kIG11c3QgbWF0Y2ggb3duaW5nIG9wZmFtaWx5J3Mgb3BmbWV0 aG9kCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wcml2aWxlZ2VzLnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVnZXMuc3FsCmluZGV4IDNmNjhjYWZjZDFl Li5lMTBhZGRlZDlkOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHJpdmls ZWdlcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwKQEAg LTcxMyw2ICs3MTMsMjQgQEAgVVBEQVRFIGVycnRzdCBTRVQgYSA9ICdhYWFhJywgYiA9IE5V TEwgV0hFUkUgYSA9ICdhYWEnOwogU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3ByaXZfdXNlcjE7CiBEUk9QIFRBQkxFIGVycnRzdDsKIAorLS0gdGVzdCBjb2x1bW4tbGV2 ZWwgcHJpdmlsZWdlcyBvbiB0aGUgcmFuZ2UvUEVSSU9EIHVzZWQgaW4gRk9SIFBPUlRJT04g T0YKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOworQ1JF QVRFIFRBQkxFIHQxICgKKyAgYzEgaW50NHJhbmdlLAorICB2YWxpZF9hdCB0c3JhbmdlLAor CUNPTlNUUkFJTlQgdDFwayBQUklNQVJZIEtFWSAoYzEsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCispOworR1JBTlQgU0VMRUNUIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMjsK K0dSQU5UIFNFTEVDVCBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjM7CitHUkFOVCBVUERB VEUgKGMxKSBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjI7CitHUkFOVCBVUERBVEUgKGMx LCB2YWxpZF9hdCkgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIzOworU0VUIFNFU1NJT04g QVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjI7CitVUERBVEUgdDEgRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0wMScgVE8gJzIwMDEtMDEtMDEnIFNFVCBj MSA9ICdbMiwzKSc7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91 c2VyMzsKK1VQREFURSB0MSBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAx LTAxJyBUTyAnMjAwMS0wMS0wMScgU0VUIGMxID0gJ1syLDMpJzsKK1NFVCBTRVNTSU9OIEFV VEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOworRFJPUCBUQUJMRSB0MTsKKwogLS0g dGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyB3aGVuIGludm9sdmVkIHdpdGggREVMRVRF CiBTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKIEFMVEVS IFRBQkxFIGF0ZXN0NiBBREQgQ09MVU1OIHRocmVlIGludGVnZXI7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbAppbmRleCBlYWVlMGI3ZTFkNy4uZjgxNDcw MWE0M2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3 cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbApA QCAtMTU0MSw2ICsxNTQxLDIwIEBAIHNlbGVjdCAqIGZyb20gdXZfaW9jdV90YWI7CiBkcm9w IHZpZXcgdXZfaW9jdV92aWV3OwogZHJvcCB0YWJsZSB1dl9pb2N1X3RhYjsKIAorLS0gQ2hl Y2sgVVBEQVRFIEZPUiBQT1JUSU9OIE9GIHdvcmtzIGNvcnJlY3RseQorY3JlYXRlIHRhYmxl IHV2X2Zwb190YWIgKGlkIGludDRyYW5nZSwgdmFsaWRfYXQgdHNyYW5nZSwgYiBmbG9hdCwK KyAgICBjb25zdHJhaW50IHBrX3V2X2Zwb190YWIgcHJpbWFyeSBrZXkgKGlkLCB2YWxpZF9h dCB3aXRob3V0IG92ZXJsYXBzKSk7CitpbnNlcnQgaW50byB1dl9mcG9fdGFiIHZhbHVlcyAo J1sxLDFdJywgJ1syMDIwLTAxLTAxLCAyMDMwLTAxLTAxKScsIDApOworY3JlYXRlIHZpZXcg dXZfZnBvX3ZpZXcgYXMKKyAgICBzZWxlY3QgYiwgYisxIGFzIGMsIHZhbGlkX2F0LCBpZCwg JzIuMCc6OnRleHQgYXMgdHdvIGZyb20gdXZfZnBvX3RhYjsKKworaW5zZXJ0IGludG8gdXZf ZnBvX3ZpZXcgKGlkLCB2YWxpZF9hdCwgYikgdmFsdWVzICgnWzEsMV0nLCAnWzIwMTAtMDEt MDEsIDIwMjAtMDEtMDEpJywgMSk7CitzZWxlY3QgKiBmcm9tIHV2X2Zwb192aWV3OwordXBk YXRlIHV2X2Zwb192aWV3IGZvciBwb3J0aW9uIG9mIHZhbGlkX2F0IGZyb20gJzIwMTUtMDEt MDEnIHRvICcyMDIwLTAxLTAxJyBzZXQgYiA9IDIgd2hlcmUgaWQgPSAnWzEsMV0nOworc2Vs ZWN0ICogZnJvbSB1dl9mcG9fdmlldzsKK2RlbGV0ZSBmcm9tIHV2X2Zwb192aWV3IGZvciBw b3J0aW9uIG9mIHZhbGlkX2F0IGZyb20gJzIwMTctMDEtMDEnIHRvICcyMDIyLTAxLTAxJyB3 aGVyZSBpZCA9ICdbMSwxXSc7CitzZWxlY3QgKiBmcm9tIHV2X2Zwb192aWV3OworCiAtLSBU ZXN0IHdob2xlLXJvdyByZWZlcmVuY2VzIHRvIHRoZSB2aWV3CiBjcmVhdGUgdGFibGUgdXZf aW9jdV90YWIgKGEgaW50IHVuaXF1ZSwgYiB0ZXh0KTsKIGNyZWF0ZSB2aWV3IHV2X2lvY3Vf dmlldyBhcwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVy bGFwcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApp bmRleCA2NDFjZGQ1YjE5Zi4uOTViNmRhNGMwNzYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC0yMzEsNiArMjMxLDIwIEBAIElOU0VSVCBJ TlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCiAgICgnWzEsMV0nLCBk YXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzcsN10nLCAnZm9vJyks CiAgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAn WzksOV0nLCAnYmFyJykKIDsKK1VQREFURSB0ZW1wb3JhbDMgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAwMC0wNS0wMScgVE8gJzIwMDAtMDctMDEnCisgIFNFVCBuYW1lID0g bmFtZSB8fCAnMSc7CitVUERBVEUgdGVtcG9yYWwzIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMDAtMDQtMDEnIFRPICcyMDAwLTA2LTAxJworICBTRVQgbmFtZSA9IG5hbWUg fHwgJzInCisgIFdIRVJFIGlkID0gJ1syLDJdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWwz IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKy0tIGNvbmZsaWN0aW5nIGlkIG9ubHk6CitJTlNF UlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCwgaWQyLCBuYW1lKQorICBWQUxVRVMK KyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDA2LTAxLTAxJyksICdb OCw4XScsICdmb28zJyk7CistLSBjb25mbGljdGluZyBpZDIgb25seToKK0lOU0VSVCBJTlRP IHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sz LDNdJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s5LDldJywg J2JhcjMnKTsKIERST1AgVEFCTEUgdGVtcG9yYWwzOwogCiAtLQpAQCAtMjY5LDYgKzI4Mywy MiBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKIFNFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VM RUNUICogRlJPTSB0cDEgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICogRlJPTSB0 cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25l ZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAw MC0wMi0xNScKKyAgU0VUIG5hbWUgPSAnb25lMicKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOwor VVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDAwLTAyLTIwJyBUTyAnMjAwMC0wMi0yNScKKyAgU0VUIGlkID0gJ1s0LDRd JworICBXSEVSRSBuYW1lID0gJ29uZSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVk CisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDItMDEtMDEnIFRPICcyMDAz LTAxLTAxJworICBTRVQgaWQgPSAnWzIsMl0nCisgIFdIRVJFIG5hbWUgPSAndGhyZWUnOwor REVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAwMC0wMS0xNScgVE8gJzIwMDAtMDItMTUnCisgIFdIRVJFIGlkID0g J1szLDNdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkg aWQsIHZhbGlkX2F0OwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKIAogLS0g dGVtcG9yYWwgVU5JUVVFOgpAQCAtMjg3LDYgKzMxNywyMiBAQCBJTlNFUlQgSU5UTyB0ZW1w b3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKIFNFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICogRlJPTSB0cDEgT1JERVIg QlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlk X2F0OworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgU0VUIG5hbWUg PSAnb25lMicKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0 aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAyLTIwJyBU TyAnMjAwMC0wMi0yNScKKyAgU0VUIGlkID0gJ1s0LDRdJworICBXSEVSRSBuYW1lID0gJ29u ZSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMDItMDEtMDEnIFRPICcyMDAzLTAxLTAxJworICBTRVQgaWQgPSAn WzIsMl0nCisgIFdIRVJFIG5hbWUgPSAndGhyZWUnOworREVMRVRFIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0x NScgVE8gJzIwMDAtMDItMTUnCisgIFdIRVJFIGlkID0gJ1szLDNdJzsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogRFJPUCBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKIAogLS0KQEAgLTU1NiwxMyArNjAyLDIzIEBA IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKIC0tIGNoYW5naW5nIHRoZSBzY2FsYXIgcGFydCBmYWlsczoK IFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJwogV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp OworLS0gY2hhbmdpbmcgYW4gdW5yZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK1VQREFURSB0 ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDIn IFRPICcyMDE4LTAxLTAzJworU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0n OworLS0gY2hhbmdpbmcganVzdCBhIHBhcnQgZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5n CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0w MS0xMCcKK1NFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKIC0tIHRoZW4g ZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUg c3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0g J1szLDNdJzsKIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIC0tIGNsZWFu IHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQg PSAnWzUsNV0nOwotREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVd JzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJywgJ1s3 LDddJyk7CiAKIC0tCiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFJFU1RSSUNUCkBAIC01 OTEsMTMgKzY0NywyMyBAQCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiAtLSBjaGFuZ2luZyB0aGUgc2Nh bGFyIHBhcnQgZmFpbHM6CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScK IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKKy0tIGNoYW5naW5nIGFuIHVucmVmZXJlbmNlZCBwYXJ0IGlz IG9rYXk6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1NFVCBpZCA9ICdbNyw3XScKK1dI RVJFIGlkID0gJ1s1LDVdJzsKKy0tIGNoYW5naW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorVVBE QVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0w MS0wNScgVE8gJzIwMTgtMDEtMTAnCitTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdb NSw1XSc7CiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhl IHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKLURFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg SU4gKCdbNSw1XScsICdbNyw3XScpOwogLS0KIC0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMg Tk8gQUNUSU9OCiAtLQpAQCAtNjE3LDE0ICs2ODMsMjQgQEAgSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAn MjAxOC0wMS0KIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScg QU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CiAt LSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoK IERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBkZWxldGlu ZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorREVMRVRFIEZST00gdGVtcG9yYWxf cm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAx OC0wMS0wMycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGRlbGV0aW5nIGp1c3QgYSBwYXJ0 IGZhaWxzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1dIRVJFIGlkID0gJ1s1 LDVdJzsKIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUg c2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAKIC0tCiAtLSB0ZXN0IEZLIHBhcmVudCBk ZWxldGVzIFJFU1RSSUNUCiAtLQotCiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CiBBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nCkBAIC02NDEsOSArNzE3LDIwIEBAIElOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAx LTA1JywgJzIwMTgtMDEtCiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpOwogLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVy ZW5jZWQ6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0g ZGVsZXRpbmcgYW4gdW5yZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicg VE8gJzIwMTgtMDEtMDMnCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBkZWxldGluZyBqdXN0 IGEgcGFydCBmYWlsczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitXSEVSRSBp ZCA9ICdbNSw1XSc7CiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBh bmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScpOwogCiAtLQogLS0gdGVzdCBPTiBV UERBVEUvREVMRVRFIG9wdGlvbnMKLS0gCjIuNDIuMAoK --------------5mQnkvShJhECliiRK4zn4H0Z Content-Type: text/x-patch; charset=UTF-8; name="v23-0007-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.patch" Content-Disposition: attachment; filename*0="v23-0007-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyNTQ2NDEzMTgxNDFiMDYwNDdjYzhhMzE3NWZkOWJmNmVkNDU5NGE4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMyBKdW4gMjAyMyAyMTo0MToxMSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggdjIzIDcvOF0gQWRkIENBU0NBREUvU0VUIE5VTEwvU0VUIERF RkFVTFQgZm9yIHRlbXBvcmFsIGZvcmVpZ24KIGtleXMKCi0tLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDQyICstCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCA1NDkgKysrKysrKysrKystCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgMjAgKwog Li4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwgODI3ICsr KysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFw cy5zcWwgICAgIHwgNDM4ICsrKysrKysrKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTgzNiBpbnNl cnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CmluZGV4IGVmN2Y1OGY5OWFjLi41NGI0NTI3YWE3NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKQEAgLTUxNiw3ICs1MTYsNyBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBhZGRG a1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3Ry YQogCQkJCQkJCQkJCQlib29sIG9sZF9jaGVja19vaywKIAkJCQkJCQkJCQkJT2lkIHBhcmVu dERlbFRyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyLAogCQkJCQkJCQkJCQlib29sIGlz X3RlbXBvcmFsKTsKLXN0YXRpYyB2b2lkIHZhbGlkYXRlRmtPbkRlbGV0ZVNldENvbHVtbnMo aW50IG51bWZrcywgY29uc3QgaW50MTYgKmZrYXR0bnVtcywKK3N0YXRpYyB2b2lkIHZhbGlk YXRlRmtPbkRlbGV0ZVNldENvbHVtbnMoaW50IG51bWZrcywgY29uc3QgaW50MTYgKmZrYXR0 bnVtcywgY29uc3QgaW50MTYgZmtwZXJpb2RhdHRudW0sCiAJCQkJCQkJCQkJIGludCBudW1m a3NldGNvbHMsIGNvbnN0IGludDE2ICpma3NldGNvbHNhdHRudW1zLAogCQkJCQkJCQkJCSBM aXN0ICpma3NldGNvbHMpOwogc3RhdGljIHZvaWQgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmco TGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LApAQCAtOTkwMyw3ICs5 OTAzLDcgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAludW1ma2RlbHNldGNvbHMgPSB0 cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHJlbCksCiAJCQkJCQkJ CQkJCSAgZmtjb25zdHJhaW50LT5ma19kZWxfc2V0X2NvbHMsCiAJCQkJCQkJCQkJCSAgZmtk ZWxzZXRjb2xzLCBOVUxMKTsKLQl2YWxpZGF0ZUZrT25EZWxldGVTZXRDb2x1bW5zKG51bWZr cywgZmthdHRudW0sCisJdmFsaWRhdGVGa09uRGVsZXRlU2V0Q29sdW1ucyhudW1ma3MsIGZr YXR0bnVtLCBma3BlcmlvZGF0dG51bSwKIAkJCQkJCQkJIG51bWZrZGVsc2V0Y29scywgZmtk ZWxzZXRjb2xzLAogCQkJCQkJCQkgZmtjb25zdHJhaW50LT5ma19kZWxfc2V0X2NvbHMpOwog CkBAIC0xMDA5MiwxMiArMTAwOTIsMTUgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChM aXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKICAq Lwogdm9pZAogdmFsaWRhdGVGa09uRGVsZXRlU2V0Q29sdW1ucyhpbnQgbnVtZmtzLCBjb25z dCBpbnQxNiAqZmthdHRudW1zLAorCQkJCQkJCSBjb25zdCBpbnQxNiBma3BlcmlvZGF0dG51 bSwKIAkJCQkJCQkgaW50IG51bWZrc2V0Y29scywgY29uc3QgaW50MTYgKmZrc2V0Y29sc2F0 dG51bXMsCiAJCQkJCQkJIExpc3QgKmZrc2V0Y29scykKIHsKIAlmb3IgKGludCBpID0gMDsg aSA8IG51bWZrc2V0Y29sczsgaSsrKQogCXsKIAkJaW50MTYJCXNldGNvbF9hdHRudW0gPSBm a3NldGNvbHNhdHRudW1zW2ldOworCQkvKiBhc3N1bWUgb25seSBvbmUgUEVSSU9EIGtleSBj b2x1bW4gaW4gYSBmb3JlaWduIGtleSAqLworCQlpbnQxNgkJZmtwZXJpb2RfYXR0bnVtID0g ZmtwZXJpb2RhdHRudW07CiAJCWJvb2wJCXNlZW4gPSBmYWxzZTsKIAogCQlmb3IgKGludCBq ID0gMDsgaiA8IG51bWZrczsgaisrKQpAQCAtMTAxMDcsNiArMTAxMTAsMTMgQEAgdmFsaWRh dGVGa09uRGVsZXRlU2V0Q29sdW1ucyhpbnQgbnVtZmtzLCBjb25zdCBpbnQxNiAqZmthdHRu dW1zLAogCQkJCXNlZW4gPSB0cnVlOwogCQkJCWJyZWFrOwogCQkJfQorCQkJaWYgKGZrcGVy aW9kX2F0dG51bSA9PSBzZXRjb2xfYXR0bnVtKQorCQkJeworCQkJCWNoYXIJICAgKmNvbCA9 IHN0clZhbChsaXN0X250aChma3NldGNvbHMsIGkpKTsKKwkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAorCQkJ CQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiByZWZlcmVuY2VkIGluIE9OIERFTEVURSBTRVQg YWN0aW9uIGNhbm5vdCBiZSBQRVJJT0QiLCBjb2wpKSk7CisJCQl9CiAJCX0KIAogCQlpZiAo IXNlZW4pCkBAIC0xMjc0NCwxMSArMTI3NTQsMTkgQEAgY3JlYXRlRm9yZWlnbktleUFjdGlv blRyaWdnZXJzKFJlbGF0aW9uIHJlbCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAqZmtj b25zdHIKIAkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklf RktleV9yZXN0cmljdF9kZWwiKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgRktDT05TVFJfQUNU SU9OX0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJ CWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1 bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2Nhc2NhZGVfZGVsIik7CisJCQkJ YnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgorCQkJCWZrX3RyaWdn ZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQg PSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJU UklfRktleV9zZXRudWxsX2RlbCIpOworCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9B Q1RJT05fU0VUREVGQVVMVDoKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkJIGVycm1zZygiYWN0aW9u IG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cyIpKSk7CisJCQkJZmtf dHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZl cnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05h bWUoIlRSSV9GS2V5X3NldGRlZmF1bHRfZGVsIik7CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0 OgogCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwK QEAgLTEyODM1LDExICsxMjg1MywxOSBAQCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dl cnMoUmVsYXRpb24gcmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cgog CQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X3Jl c3RyaWN0X3VwZCIpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FT Q0FERToKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJp Z2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUg PSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKKwkJCQlicmVhazsK IAkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dlci0+ZGVm ZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNl OworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5 X3NldG51bGxfdXBkIik7CisJCQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9T RVRERUZBVUxUOgotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCQkgZXJybXNnKCJhY3Rpb24gbm90IHN1 cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIikpKTsKKwkJCQlma190cmlnZ2Vy LT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0g ZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJ X0ZLZXlfc2V0ZGVmYXVsdF91cGQiKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJ ZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwppbmRleCA0ZDE3YjM4NzdiZC4uMDAxZjZlZDRk N2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC04NCw2ICs4NCwx MiBAQAogI2RlZmluZSBSSV9QTEFOX1NFVE5VTExfT05VUERBVEUJCTcKICNkZWZpbmUgUklf UExBTl9TRVRERUZBVUxUX09OREVMRVRFCQk4CiAjZGVmaW5lIFJJX1BMQU5fU0VUREVGQVVM VF9PTlVQREFURQkJOQorI2RlZmluZSBUUklfUExBTl9DQVNDQURFX09OREVMRVRFCQkxMAor I2RlZmluZSBUUklfUExBTl9DQVNDQURFX09OVVBEQVRFCQkxMQorI2RlZmluZSBUUklfUExB Tl9TRVROVUxMX09OVVBEQVRFCQkxMgorI2RlZmluZSBUUklfUExBTl9TRVROVUxMX09OREVM RVRFCQkxMworI2RlZmluZSBUUklfUExBTl9TRVRERUZBVUxUX09OVVBEQVRFCTE0CisjZGVm aW5lIFRSSV9QTEFOX1NFVERFRkFVTFRfT05ERUxFVEUJMTUKIAogI2RlZmluZSBNQVhfUVVP VEVEX05BTUVfTEVOICAoTkFNRURBVEFMRU4qMiszKQogI2RlZmluZSBNQVhfUVVPVEVEX1JF TF9OQU1FX0xFTiAgKE1BWF9RVU9URURfTkFNRV9MRU4qMikKQEAgLTE5Myw2ICsxOTksNyBA QCBzdGF0aWMgYm9vbCByaV9DaGVja19Qa19NYXRjaChSZWxhdGlvbiBwa19yZWwsIFJlbGF0 aW9uIGZrX3JlbCwKIAkJCQkJCQkgIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8p Owogc3RhdGljIERhdHVtIHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9v bCBpc19ub19hY3Rpb24pOwogc3RhdGljIERhdHVtIHJpX3NldChUcmlnZ2VyRGF0YSAqdHJp Z2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpOworc3RhdGljIERhdHVtIHRy aV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX3NldF9udWxsLCBpbnQgdGdr aW5kKTsKIHN0YXRpYyB2b2lkIHF1b3RlT25lTmFtZShjaGFyICpidWZmZXIsIGNvbnN0IGNo YXIgKm5hbWUpOwogc3RhdGljIHZvaWQgcXVvdGVSZWxhdGlvbk5hbWUoY2hhciAqYnVmZmVy LCBSZWxhdGlvbiByZWwpOwogc3RhdGljIHZvaWQgcmlfR2VuZXJhdGVRdWFsKFN0cmluZ0lu Zm8gYnVmLApAQCAtMTQxMCw2ICsxNDE3LDEyNyBAQCBUUklfRktleV9yZXN0cmljdF9kZWwo UEdfRlVOQ1RJT05fQVJHUykKIAlyZXR1cm4gcmlfcmVzdHJpY3QoKFRyaWdnZXJEYXRhICop IGZjaW5mby0+Y29udGV4dCwgZmFsc2UpOwogfQogCisvKgorICogVFJJX0ZLZXlfY2FzY2Fk ZV9kZWwgLQorICoKKyAqIENhc2NhZGVkIGRlbGV0ZSBmb3JlaWduIGtleSByZWZlcmVuY2Vz IGF0IGRlbGV0ZSBldmVudCBvbiB0ZW1wb3JhbCBQSyB0YWJsZS4KKyAqLworRGF0dW0KK1RS SV9GS2V5X2Nhc2NhZGVfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJVHJpZ2dlckRhdGEg KnRyaWdkYXRhID0gKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dDsKKwljb25zdCBS SV9Db25zdHJhaW50SW5mbyAqcmlpbmZvOworCVJlbGF0aW9uCWZrX3JlbDsKKwlSZWxhdGlv bglwa19yZWw7CisJVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3Q7CisJUklfUXVlcnlLZXkgcWtl eTsKKwlTUElQbGFuUHRyICBxcGxhbjsKKwlEYXR1bSB0YXJnZXRSYW5nZTsKKworCS8qIENo ZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGlt ZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X2Nh c2NhZGVfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCXJpaW5mbyA9IHJpX0ZldGNo Q29uc3RyYWludEluZm8odHJpZ2RhdGEtPnRnX3RyaWdnZXIsCisJCQkJCQkJCQl0cmlnZGF0 YS0+dGdfcmVsYXRpb24sIHRydWUpOworCisJLyoKKwkgKiBHZXQgdGhlIHJlbGF0aW9uIGRl c2NyaXB0b3JzIG9mIHRoZSBGSyBhbmQgUEsgdGFibGVzIGFuZCB0aGUgb2xkIHR1cGxlLgor CSAqCisJICogZmtfcmVsIGlzIG9wZW5lZCBpbiBSb3dFeGNsdXNpdmVMb2NrIG1vZGUgc2lu Y2UgdGhhdCdzIHdoYXQgb3VyCisJICogZXZlbnR1YWwgREVMRVRFIHdpbGwgZ2V0IG9uIGl0 LgorCSAqLworCWZrX3JlbCA9IHRhYmxlX29wZW4ocmlpbmZvLT5ma19yZWxpZCwgUm93RXhj bHVzaXZlTG9jayk7CisJcGtfcmVsID0gdHJpZ2RhdGEtPnRnX3JlbGF0aW9uOworCW9sZHNs b3QgPSB0cmlnZGF0YS0+dGdfdHJpZ3Nsb3Q7CisKKwkvKgorCSAqIERvbid0IGRlbGV0ZSB0 aGFuIG1vcmUgdGhhbiB0aGUgUEsncyBkdXJhdGlvbiwKKwkgKiB0cmltbWVkIGJ5IGFuIG9y aWdpbmFsIEZPUiBQT1JUSU9OIE9GIGlmIG5lY2Vzc2FyeS4KKwkgKi8KKwl0YXJnZXRSYW5n ZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSh0cmlnZGF0YS0+dGdfdGVtcG9yYWwsIHJp aW5mbywgb2xkc2xvdCk7CisKKwlpZiAoU1BJX2Nvbm5lY3QoKSAhPSBTUElfT0tfQ09OTkVD VCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9jb25uZWN0IGZhaWxlZCIpOworCisJLyogRmV0Y2gg b3IgcHJlcGFyZSBhIHNhdmVkIHBsYW4gZm9yIHRoZSBjYXNjYWRlZCBkZWxldGUgKi8KKwly aV9CdWlsZFF1ZXJ5S2V5KCZxa2V5LCByaWluZm8sIFRSSV9QTEFOX0NBU0NBREVfT05ERUxF VEUpOworCisJaWYgKChxcGxhbiA9IHJpX0ZldGNoUHJlcGFyZWRQbGFuKCZxa2V5KSkgPT0g TlVMTCkKKwl7CisJCVN0cmluZ0luZm9EYXRhIHF1ZXJ5YnVmOworCQljaGFyCQlma3JlbG5h bWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOworCQljaGFyCQlhdHRuYW1lW01BWF9RVU9U RURfTkFNRV9MRU5dOworCQljaGFyCQlwYXJhbW5hbWVbMTZdOworCQljb25zdCBjaGFyICpx dWVyeXNlcDsKKwkJT2lkCQkJcXVlcnlvaWRzW1JJX01BWF9OVU1LRVlTICsgMV07CisJCWNv bnN0IGNoYXIgKmZrX29ubHk7CisKKwkJLyogLS0tLS0tLS0tLQorCQkgKiBUaGUgcXVlcnkg c3RyaW5nIGJ1aWx0IGlzCisJCSAqICBERUxFVEUgRlJPTSBbT05MWV0gPGZrdGFibGU+CisJ CSAqICBGT1IgUE9SVElPTiBPRiAkZmthdHQgRlJPTSBsb3dlcigke24rMX0pIFRPIHVwcGVy KCR7bisxfSkKKwkJICogIFdIRVJFICQxID0gZmthdHQxIFtBTkQgLi4uXQorCQkgKiBUaGUg dHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBvZiB0aGUKKwkJICog Y29ycmVzcG9uZGluZyBQSyBhdHRyaWJ1dGVzLgorCQkgKiAtLS0tLS0tLS0tCisJCSAqLwor CQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOworCQlma19vbmx5ID0gZmtfcmVsLT5yZF9y ZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CisJCQkiIiA6ICJP TkxZICI7CisJCXF1b3RlUmVsYXRpb25OYW1lKGZrcmVsbmFtZSwgZmtfcmVsKTsKKwkJcXVv dGVPbmVOYW1lKGF0dG5hbWUsIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tyaWluZm8tPm5rZXlzIC0gMV0pKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1 ZiwgIkRFTEVURSBGUk9NICVzJXMgRk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQp IFRPIHVwcGVyKCQlZCkiLAorCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSwgYXR0bmFtZSwg cmlpbmZvLT5ua2V5cyArIDEsIHJpaW5mby0+bmtleXMgKyAxKTsKKwkJcXVlcnlzZXAgPSAi V0hFUkUiOworCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKKwkJ eworCQkJT2lkIHBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51 bXNbaV0pOworCQkJT2lkIHBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5m by0+cGtfYXR0bnVtc1tpXSk7CisJCQlPaWQgZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWws IHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCQlPaWQgZmtfY29sbCA9IFJJQXR0Q29sbGF0 aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKworCQkJcXVvdGVPbmVOYW1l KGF0dG5hbWUsCisJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1z W2ldKSk7CisJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGkgKyAxKTsKKwkJCXJpX0dl bmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1ZXJ5c2VwLAorCQkJCQkJCXBhcmFtbmFtZSwgcGtf dHlwZSwKKwkJCQkJCQlyaWluZm8tPnBmX2VxX29wcnNbaV0sCisJCQkJCQkJYXR0bmFtZSwg ZmtfdHlwZSk7CisJCQlpZiAocGtfY29sbCAhPSBma19jb2xsICYmICFnZXRfY29sbGF0aW9u X2lzZGV0ZXJtaW5pc3RpYyhwa19jb2xsKSkKKwkJCQlyaV9HZW5lcmF0ZVF1YWxDb2xsYXRp b24oJnF1ZXJ5YnVmLCBwa19jb2xsKTsKKwkJCXF1ZXJ5c2VwID0gIkFORCI7CisJCQlxdWVy eW9pZHNbaV0gPSBwa190eXBlOworCQl9CisKKwkJLyogU2V0IGEgcGFyYW0gZm9yIEZPUiBQ T1JUSU9OIE9GIFRPL0ZST00gKi8KKwkJcXVlcnlvaWRzW3JpaW5mby0+bmtleXNdID0gUklB dHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSk7 CisKKwkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAqLworCQlxcGxhbiA9IHJpX1Bs YW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCByaWluZm8tPm5rZXlzICsgMSwgcXVlcnlvaWRzLAor CQkJCQkJCSAmcWtleSwgZmtfcmVsLCBwa19yZWwpOworCX0KKworCS8qCisJICogV2UgaGF2 ZSBhIHBsYW4gbm93LiBCdWlsZCB1cCB0aGUgYXJndW1lbnRzIGZyb20gdGhlIGtleSB2YWx1 ZXMgaW4gdGhlCisJICogZGVsZXRlZCBQSyB0dXBsZSBhbmQgZGVsZXRlIHRoZSByZWZlcmVu Y2luZyByb3dzCisJICovCisJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFu LAorCQkJCQlma19yZWwsIHBrX3JlbCwKKwkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJcmlp bmZvLT5ua2V5cywgdGFyZ2V0UmFuZ2UsCisJCQkJCXRydWUsCSAgIC8qIG11c3QgZGV0ZWN0 IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19ERUxFVEUpOworCisJaWYgKFNQSV9maW5pc2go KSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVSUk9SLCAiU1BJX2ZpbmlzaCBmYWlsZWQi KTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1 cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworfQorCisKIC8qCiAgKiBUUklfRktleV9ub2Fj dGlvbl91cGQgLQogICoKQEAgLTE0NDcsNiArMTU3NSw0MTUgQEAgVFJJX0ZLZXlfcmVzdHJp Y3RfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2Vy RGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlKTsKIH0KIAorLyoKKyAqIFRSSV9GS2V5 X2Nhc2NhZGVfdXBkIC0KKyAqCisgKiBDYXNjYWRlZCB1cGRhdGUgZm9yZWlnbiBrZXkgcmVm ZXJlbmNlcyBhdCB1cGRhdGUgZXZlbnQgb24gdGVtcG9yYWwgUEsgdGFibGUuCisgKi8KK0Rh dHVtCitUUklfRktleV9jYXNjYWRlX3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCVRyaWdn ZXJEYXRhICp0cmlnZGF0YSA9IChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQ7CisJ Y29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbzsKKwlSZWxhdGlvbglma19yZWw7CisJ UmVsYXRpb24JcGtfcmVsOworCVR1cGxlVGFibGVTbG90ICpvbGRzbG90OworCVR1cGxlVGFi bGVTbG90ICpuZXdzbG90OworCVJJX1F1ZXJ5S2V5IHFrZXk7CisJU1BJUGxhblB0ciAgcXBs YW47CisJRGF0dW0gdGFyZ2V0UmFuZ2U7CisKKwkvKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2 YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LiAqLworCXJp X0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9jYXNjYWRlX3VwZCIsIFJJX1RSSUdU WVBFX1VQREFURSk7CisKKwlyaWluZm8gPSByaV9GZXRjaENvbnN0cmFpbnRJbmZvKHRyaWdk YXRhLT50Z190cmlnZ2VyLAorCQkJCQkJCQkJdHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCB0cnVl KTsKKworCS8qCisJICogR2V0IHRoZSByZWxhdGlvbiBkZXNjcmlwdG9ycyBvZiB0aGUgRksg YW5kIFBLIHRhYmxlcyBhbmQgdGhlIG5ldyBhbmQKKwkgKiBvbGQgdHVwbGUuCisJICoKKwkg KiBma19yZWwgaXMgb3BlbmVkIGluIFJvd0V4Y2x1c2l2ZUxvY2sgbW9kZSBzaW5jZSB0aGF0 J3Mgd2hhdCBvdXIKKwkgKiBldmVudHVhbCBVUERBVEUgd2lsbCBnZXQgb24gaXQuCisJICov CisJZmtfcmVsID0gdGFibGVfb3BlbihyaWluZm8tPmZrX3JlbGlkLCBSb3dFeGNsdXNpdmVM b2NrKTsKKwlwa19yZWwgPSB0cmlnZGF0YS0+dGdfcmVsYXRpb247CisJbmV3c2xvdCA9IHRy aWdkYXRhLT50Z19uZXdzbG90OworCW9sZHNsb3QgPSB0cmlnZGF0YS0+dGdfdHJpZ3Nsb3Q7 CisKKwkvKgorCSAqIERvbid0IGRlbGV0ZSB0aGFuIG1vcmUgdGhhbiB0aGUgUEsncyBkdXJh dGlvbiwKKwkgKiB0cmltbWVkIGJ5IGFuIG9yaWdpbmFsIEZPUiBQT1JUSU9OIE9GIGlmIG5l Y2Vzc2FyeS4KKwkgKi8KKwl0YXJnZXRSYW5nZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5n ZSh0cmlnZGF0YS0+dGdfdGVtcG9yYWwsIHJpaW5mbywgb2xkc2xvdCk7CisKKwlpZiAoU1BJ X2Nvbm5lY3QoKSAhPSBTUElfT0tfQ09OTkVDVCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9jb25u ZWN0IGZhaWxlZCIpOworCisJLyogRmV0Y2ggb3IgcHJlcGFyZSBhIHNhdmVkIHBsYW4gZm9y IHRoZSBjYXNjYWRlZCB1cGRhdGUgKi8KKwlyaV9CdWlsZFF1ZXJ5S2V5KCZxa2V5LCByaWlu Zm8sIFRSSV9QTEFOX0NBU0NBREVfT05VUERBVEUpOworCisJaWYgKChxcGxhbiA9IHJpX0Zl dGNoUHJlcGFyZWRQbGFuKCZxa2V5KSkgPT0gTlVMTCkKKwl7CisJCVN0cmluZ0luZm9EYXRh IHF1ZXJ5YnVmOworCQlTdHJpbmdJbmZvRGF0YSBxdWFsYnVmOworCQljaGFyCQlma3JlbG5h bWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOworCQljaGFyCQlhdHRuYW1lW01BWF9RVU9U RURfTkFNRV9MRU5dOworCQljaGFyCQlwYXJhbW5hbWVbMTZdOworCQljb25zdCBjaGFyICpx dWVyeXNlcDsKKwkJY29uc3QgY2hhciAqcXVhbHNlcDsKKwkJT2lkCQkgcXVlcnlvaWRzWzIg KiBSSV9NQVhfTlVNS0VZUyArIDFdOworCQljb25zdCBjaGFyICpma19vbmx5OworCisJCS8q IC0tLS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5IHN0cmluZyBidWlsdCBpcworCQkgKiAgVVBE QVRFIFtPTkxZXSA8Zmt0YWJsZT4KKwkJICoJCSAgRk9SIFBPUlRJT04gT0YgJGZrYXR0IEZS T00gbG93ZXIoJHsybisxfSkgVE8gdXBwZXIoJHsybisxfSkKKwkJICoJCSAgU0VUIGZrYXR0 MSA9ICQxLCBbLCAuLi5dCisJCSAqCQkgIFdIRVJFICRuID0gZmthdHQxIFtBTkQgLi4uXQor CQkgKiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBvZiB0 aGUKKwkJICogY29ycmVzcG9uZGluZyBQSyBhdHRyaWJ1dGVzLiAgTm90ZSB0aGF0IHdlIGFy ZSBhc3N1bWluZworCQkgKiB0aGVyZSBpcyBhbiBhc3NpZ25tZW50IGNhc3QgZnJvbSB0aGUg UEsgdG8gdGhlIEZLIHR5cGU7CisJCSAqIGVsc2UgdGhlIHBhcnNlciB3aWxsIGZhaWwuCisJ CSAqIC0tLS0tLS0tLS0KKwkJICovCisJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CisJ CWluaXRTdHJpbmdJbmZvKCZxdWFsYnVmKTsKKwkJZmtfb25seSA9IGZrX3JlbC0+cmRfcmVs LT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPworCQkJIiIgOiAiT05M WSAiOworCQlxdW90ZVJlbGF0aW9uTmFtZShma3JlbG5hbWUsIGZrX3JlbCk7CisJCXF1b3Rl T25lTmFtZShhdHRuYW1lLCBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNb cmlpbmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYs ICJVUERBVEUgJXMlcyBGT1IgUE9SVElPTiBPRiAlcyBGUk9NIGxvd2VyKCQlZCkgVE8gdXBw ZXIoJCVkKSBTRVQiLAorCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSwgYXR0bmFtZSwgMiAq IHJpaW5mby0+bmtleXMgKyAxLCAyICogcmlpbmZvLT5ua2V5cyArIDEpOworCisJCXF1ZXJ5 c2VwID0gIiI7CisJCXF1YWxzZXAgPSAiV0hFUkUiOworCQlmb3IgKGludCBpID0gMCwgaiA9 IHJpaW5mby0+bmtleXM7IGkgPCByaWluZm8tPm5rZXlzOyBpKyssIGorKykKKwkJeworCQkJ T2lkIHBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0p OworCQkJT2lkIHBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtf YXR0bnVtc1tpXSk7CisJCQlPaWQgZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5m by0+ZmtfYXR0bnVtc1tpXSk7CisJCQlPaWQgZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZr X3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKworCQkJcXVvdGVPbmVOYW1lKGF0dG5h bWUsCisJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7 CisJCQkvKgorCQkJICogRG9uJ3Qgc2V0IHRoZSB0ZW1wb3JhbCBjb2x1bW4ocykuCisJCQkg KiBGT1IgUE9SVElPTiBPRiB3aWxsIHRha2UgY2FyZSBvZiB0aGF0LgorCQkJICovCisJCQlp ZiAoaSA8IHJpaW5mby0+bmtleXMgLSAxKQorCQkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5 YnVmLAorCQkJCQkJCQkgIiVzICVzID0gJCVkIiwKKwkJCQkJCQkJIHF1ZXJ5c2VwLCBhdHRu YW1lLCBpICsgMSk7CisKKwkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaiArIDEpOwor CQkJcmlfR2VuZXJhdGVRdWFsKCZxdWFsYnVmLCBxdWFsc2VwLAorCQkJCQkJCXBhcmFtbmFt ZSwgcGtfdHlwZSwKKwkJCQkJCQlyaWluZm8tPnBmX2VxX29wcnNbaV0sCisJCQkJCQkJYXR0 bmFtZSwgZmtfdHlwZSk7CisJCQlpZiAocGtfY29sbCAhPSBma19jb2xsICYmICFnZXRfY29s bGF0aW9uX2lzZGV0ZXJtaW5pc3RpYyhwa19jb2xsKSkKKwkJCQlyaV9HZW5lcmF0ZVF1YWxD b2xsYXRpb24oJnF1ZXJ5YnVmLCBwa19jb2xsKTsKKwkJCXF1ZXJ5c2VwID0gIiwiOworCQkJ cXVhbHNlcCA9ICJBTkQiOworCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJCXF1ZXJ5 b2lkc1tqXSA9IHBrX3R5cGU7CisJCX0KKwkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmcXVl cnlidWYsIHF1YWxidWYuZGF0YSwgcXVhbGJ1Zi5sZW4pOworCisJCS8qIFNldCBhIHBhcmFt IGZvciBGT1IgUE9SVElPTiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5b2lkc1syICogcmlpbmZv LT5ua2V5c10gPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbcmlpbmZv LT5ua2V5cyAtIDFdKTsKKworCQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRoZSBwbGFuICovCisJ CXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEsIDIgKiByaWluZm8tPm5rZXlz ICsgMSwgcXVlcnlvaWRzLAorCQkJCQkJCSAmcWtleSwgZmtfcmVsLCBwa19yZWwpOworCX0K KworCS8qCisJICogV2UgaGF2ZSBhIHBsYW4gbm93LiBSdW4gaXQgdG8gdXBkYXRlIHRoZSBl eGlzdGluZyByZWZlcmVuY2VzLgorCSAqLworCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZx a2V5LCBxcGxhbiwKKwkJCQkJZmtfcmVsLCBwa19yZWwsCisJCQkJCW9sZHNsb3QsIG5ld3Ns b3QsCisJCQkJCXJpaW5mby0+bmtleXMgKiAyLCB0YXJnZXRSYW5nZSwKKwkJCQkJdHJ1ZSwJ CS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19VUERBVEUpOworCisJ aWYgKFNQSV9maW5pc2goKSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVSUk9SLCAiU1BJ X2ZpbmlzaCBmYWlsZWQiKTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhjbHVzaXZl TG9jayk7CisKKwlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworfQorCisvKgorICog VFJJX0ZLZXlfc2V0bnVsbF9kZWwgLQorICoKKyAqIFNldCBmb3JlaWduIGtleSByZWZlcmVu Y2VzIHRvIE5VTEwgdmFsdWVzIGF0IGRlbGV0ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAqLwor RGF0dW0KK1RSSV9GS2V5X3NldG51bGxfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyog Q2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0 aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlf c2V0bnVsbF9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOworCisJLyogU2hhcmUgY29kZSB3 aXRoIFVQREFURSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRhICopIGZj aW5mby0+Y29udGV4dCwgdHJ1ZSwgUklfVFJJR1RZUEVfREVMRVRFKTsKK30KKworLyoKKyAq IFRSSV9GS2V5X3NldG51bGxfdXBkIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJl bmNlcyB0byBOVUxMIGF0IHVwZGF0ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAqLworRGF0dW0K K1RSSV9GS2V5X3NldG51bGxfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sg dGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFu ZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfc2V0bnVs bF91cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIERF TEVURSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+ Y29udGV4dCwgdHJ1ZSwgUklfVFJJR1RZUEVfVVBEQVRFKTsKK30KKworLyoKKyAqIFRSSV9G S2V5X3NldGRlZmF1bHRfZGVsIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJlbmNl cyB0byBkZWZhdWx0cyBhdCBkZWxldGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVt CitUUklfRktleV9zZXRkZWZhdWx0X2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENo ZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGlt ZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3Nl dGRlZmF1bHRfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qIFNoYXJlIGNvZGUg d2l0aCBVUERBVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBm Y2luZm8tPmNvbnRleHQsIGZhbHNlLCBSSV9UUklHVFlQRV9ERUxFVEUpOworfQorCisvKgor ICogVFJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQgLQorICoKKyAqIFNldCBmb3JlaWduIGtleSBy ZWZlcmVuY2VzIHRvIGRlZmF1bHRzIGF0IHVwZGF0ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAq LworRGF0dW0KK1RSSV9GS2V5X3NldGRlZmF1bHRfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7 CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSBy aWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJ X0ZLZXlfc2V0ZGVmYXVsdF91cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJLyogU2hh cmUgY29kZSB3aXRoIERFTEVURSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJE YXRhICopIGZjaW5mby0+Y29udGV4dCwgZmFsc2UsIFJJX1RSSUdUWVBFX1VQREFURSk7Cit9 CisKKy8qCisgKiB0cmlfc2V0IC0KKyAqCisgKiBDb21tb24gY29kZSBmb3IgdGVtcG9yYWwg T04gREVMRVRFIFNFVCBOVUxMLCBPTiBERUxFVEUgU0VUIERFRkFVTFQsIE9OCisgKiBVUERB VEUgU0VUIE5VTEwsIGFuZCBPTiBVUERBVEUgU0VUIERFRkFVTFQuCisgKi8KK3N0YXRpYyBE YXR1bQordHJpX3NldChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGws IGludCB0Z2tpbmQpCit7CisJY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbzsKKwlS ZWxhdGlvbglma19yZWw7CisJUmVsYXRpb24JcGtfcmVsOworCVR1cGxlVGFibGVTbG90ICpv bGRzbG90OworCVJJX1F1ZXJ5S2V5IHFrZXk7CisJU1BJUGxhblB0cglxcGxhbjsKKwlEYXR1 bQkJdGFyZ2V0UmFuZ2U7CisJaW50MzIJCXF1ZXJ5bm87CisKKwlyaWluZm8gPSByaV9GZXRj aENvbnN0cmFpbnRJbmZvKHRyaWdkYXRhLT50Z190cmlnZ2VyLAorCQkJCQkJCQkJdHJpZ2Rh dGEtPnRnX3JlbGF0aW9uLCB0cnVlKTsKKworCS8qCisJICogR2V0IHRoZSByZWxhdGlvbiBk ZXNjcmlwdG9ycyBvZiB0aGUgRksgYW5kIFBLIHRhYmxlcyBhbmQgdGhlIG9sZCB0dXBsZS4K KwkgKgorCSAqIGZrX3JlbCBpcyBvcGVuZWQgaW4gUm93RXhjbHVzaXZlTG9jayBtb2RlIHNp bmNlIHRoYXQncyB3aGF0IG91cgorCSAqIGV2ZW50dWFsIFVQREFURSB3aWxsIGdldCBvbiBp dC4KKwkgKi8KKwlma19yZWwgPSB0YWJsZV9vcGVuKHJpaW5mby0+ZmtfcmVsaWQsIFJvd0V4 Y2x1c2l2ZUxvY2spOworCXBrX3JlbCA9IHRyaWdkYXRhLT50Z19yZWxhdGlvbjsKKwlvbGRz bG90ID0gdHJpZ2RhdGEtPnRnX3RyaWdzbG90OworCisJLyoKKwkgKiBEb24ndCBTRVQgTlVM TC9ERUZBVUxUIHRoYW4gbW9yZSB0aGFuIHRoZSBQSydzIGR1cmF0aW9uLAorCSAqIHRyaW1t ZWQgYnkgYW4gb3JpZ2luYWwgRk9SIFBPUlRJT04gT0YgaWYgbmVjZXNzYXJ5LgorCSAqLwor CXRhcmdldFJhbmdlID0gcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKHRyaWdkYXRhLT50Z190 ZW1wb3JhbCwgcmlpbmZvLCBvbGRzbG90KTsKKworCWlmIChTUElfY29ubmVjdCgpICE9IFNQ SV9PS19DT05ORUNUKQorCQllbG9nKEVSUk9SLCAiU1BJX2Nvbm5lY3QgZmFpbGVkIik7CisK KwkvKgorCSAqIEZldGNoIG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgdHJpZ2dl ci4KKwkgKi8KKwlzd2l0Y2ggKHRna2luZCkKKwl7CisJCWNhc2UgUklfVFJJR1RZUEVfVVBE QVRFOgorCQkJcXVlcnlubyA9IGlzX3NldF9udWxsCisJCQkJPyBUUklfUExBTl9TRVROVUxM X09OVVBEQVRFCisJCQkJOiBUUklfUExBTl9TRVRERUZBVUxUX09OVVBEQVRFOworCQkJYnJl YWs7CisJCWNhc2UgUklfVFJJR1RZUEVfREVMRVRFOgorCQkJcXVlcnlubyA9IGlzX3NldF9u dWxsCisJCQkJPyBUUklfUExBTl9TRVROVUxMX09OREVMRVRFCisJCQkJOiBUUklfUExBTl9T RVRERUZBVUxUX09OREVMRVRFOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQllbG9nKEVS Uk9SLCAiaW52YWxpZCB0Z2tpbmQgcGFzc2VkIHRvIHJpX3NldCIpOworCX0KKworCXJpX0J1 aWxkUXVlcnlLZXkoJnFrZXksIHJpaW5mbywgcXVlcnlubyk7CisKKwlpZiAoKHFwbGFuID0g cmlfRmV0Y2hQcmVwYXJlZFBsYW4oJnFrZXkpKSA9PSBOVUxMKQorCXsKKwkJU3RyaW5nSW5m b0RhdGEgcXVlcnlidWY7CisJCVN0cmluZ0luZm9EYXRhIHF1YWxidWY7CisJCWNoYXIJCWZr cmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CisJCWNoYXIJCWF0dG5hbWVbTUFY X1FVT1RFRF9OQU1FX0xFTl07CisJCWNoYXIJCXBhcmFtbmFtZVsxNl07CisJCWNvbnN0IGNo YXIgKnF1ZXJ5c2VwOworCQljb25zdCBjaGFyICpxdWFsc2VwOworCQlPaWQJCQlxdWVyeW9p ZHNbUklfTUFYX05VTUtFWVMgKyAxXTsgLyogKzEgZm9yIEZPUiBQT1JUSU9OIE9GICovCisJ CWNvbnN0IGNoYXIgKmZrX29ubHk7CisJCWludAkJCW51bV9jb2xzX3RvX3NldDsKKwkJY29u c3QgaW50MTYgKnNldF9jb2xzOworCisJCXN3aXRjaCAodGdraW5kKQorCQl7CisJCQljYXNl IFJJX1RSSUdUWVBFX1VQREFURToKKwkJCQkvKiAtMSBzbyB3ZSBsZXQgRk9SIFBPUlRJT04g T0Ygc2V0IHRoZSByYW5nZS4gKi8KKwkJCQludW1fY29sc190b19zZXQgPSByaWluZm8tPm5r ZXlzIC0gMTsKKwkJCQlzZXRfY29scyA9IHJpaW5mby0+ZmtfYXR0bnVtczsKKwkJCQlicmVh azsKKwkJCWNhc2UgUklfVFJJR1RZUEVfREVMRVRFOgorCQkJCS8qCisJCQkJICogSWYgY29u ZmRlbHNldGNvbHMgYXJlIHByZXNlbnQsIHRoZW4gd2Ugb25seSB1cGRhdGUgdGhlCisJCQkJ ICogY29sdW1ucyBzcGVjaWZpZWQgaW4gdGhhdCBhcnJheSwgb3RoZXJ3aXNlIHdlIHVwZGF0 ZSBhbGwKKwkJCQkgKiB0aGUgcmVmZXJlbmNpbmcgY29sdW1ucy4KKwkJCQkgKi8KKwkJCQlp ZiAocmlpbmZvLT5uZGVsc2V0Y29scyAhPSAwKQorCQkJCXsKKwkJCQkJbnVtX2NvbHNfdG9f c2V0ID0gcmlpbmZvLT5uZGVsc2V0Y29sczsKKwkJCQkJc2V0X2NvbHMgPSByaWluZm8tPmNv bmZkZWxzZXRjb2xzOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQkvKiAtMSBzbyB3 ZSBsZXQgRk9SIFBPUlRJT04gT0Ygc2V0IHRoZSByYW5nZS4gKi8KKwkJCQkJbnVtX2NvbHNf dG9fc2V0ID0gcmlpbmZvLT5ua2V5cyAtIDE7CisJCQkJCXNldF9jb2xzID0gcmlpbmZvLT5m a19hdHRudW1zOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhF UlJPUiwgImludmFsaWQgdGdraW5kIHBhc3NlZCB0byByaV9zZXQiKTsKKwkJfQorCisJCS8q IC0tLS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5IHN0cmluZyBidWlsdCBpcworCQkgKglVUERB VEUgW09OTFldIDxma3RhYmxlPgorCQkgKgkJCUZPUiBQT1JUSU9OIE9GICRma2F0dCBGUk9N IGxvd2VyKCR7bisxfSkgVE8gdXBwZXIoJHtuKzF9KQorCQkgKgkJCVNFVCBma2F0dDEgPSB7 TlVMTHxERUZBVUxUfSBbLCAuLi5dCisJCSAqCQkJV0hFUkUgJDEgPSBma2F0dDEgW0FORCAu Li5dCisJCSAqIFRoZSB0eXBlIGlkJ3MgZm9yIHRoZSAkIHBhcmFtZXRlcnMgYXJlIHRob3Nl IG9mIHRoZQorCQkgKiBjb3JyZXNwb25kaW5nIFBLIGF0dHJpYnV0ZXMuCisJCSAqIC0tLS0t LS0tLS0KKwkJICovCisJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CisJCWluaXRTdHJp bmdJbmZvKCZxdWFsYnVmKTsKKwkJZmtfb25seSA9IGZrX3JlbC0+cmRfcmVsLT5yZWxraW5k ID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPworCQkJIiIgOiAiT05MWSAiOworCQlx dW90ZVJlbGF0aW9uTmFtZShma3JlbG5hbWUsIGZrX3JlbCk7CisJCXF1b3RlT25lTmFtZShh dHRuYW1lLCBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbcmlpbmZvLT5u a2V5cyAtIDFdKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJVUERBVEUg JXMlcyBGT1IgUE9SVElPTiBPRiAlcyBGUk9NIGxvd2VyKCQlZCkgVE8gdXBwZXIoJCVkKSBT RVQiLAorCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSwgYXR0bmFtZSwgcmlpbmZvLT5ua2V5 cyArIDEsIHJpaW5mby0+bmtleXMgKyAxKTsKKworCQkvKgorCQkgKiBBZGQgYXNzaWdubWVu dCBjbGF1c2VzCisJCSAqLworCQlxdWVyeXNlcCA9ICIiOworCQlmb3IgKGludCBpID0gMDsg aSA8IG51bV9jb2xzX3RvX3NldDsgaSsrKQorCQl7CisJCQlxdW90ZU9uZU5hbWUoYXR0bmFt ZSwgUklBdHROYW1lKGZrX3JlbCwgc2V0X2NvbHNbaV0pKTsKKwkJCWFwcGVuZFN0cmluZ0lu Zm8oJnF1ZXJ5YnVmLAorCQkJCQkJCSAiJXMgJXMgPSAlcyIsCisJCQkJCQkJIHF1ZXJ5c2Vw LCBhdHRuYW1lLAorCQkJCQkJCSBpc19zZXRfbnVsbCA/ICJOVUxMIiA6ICJERUZBVUxUIik7 CisJCQlxdWVyeXNlcCA9ICIsIjsKKwkJfQorCisJCS8qCisJCSAqIEFkZCBXSEVSRSBjbGF1 c2UKKwkJICovCisJCXF1YWxzZXAgPSAiV0hFUkUiOworCQlmb3IgKGludCBpID0gMDsgaSA8 IHJpaW5mby0+bmtleXM7IGkrKykKKwkJeworCQkJT2lkCXBrX3R5cGUgPSBSSUF0dFR5cGUo cGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJT2lkCWZrX3R5cGUgPSBSSUF0 dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lkCXBrX2NvbGwg PSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQlP aWQJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1z W2ldKTsKKworCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCisJCQkJCQkgUklBdHROYW1lKGZr X3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CisKKwkJCXNwcmludGYocGFyYW1uYW1l LCAiJCVkIiwgaSArIDEpOworCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgcXVhbHNl cCwKKwkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9v cHJzW2ldLAorCQkJCQkJCWF0dG5hbWUsIGZrX3R5cGUpOworCQkJaWYgKHBrX2NvbGwgIT0g ZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCisJ CQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlx dWFsc2VwID0gIkFORCI7CisJCQlxdWVyeW9pZHNbaV0gPSBwa190eXBlOworCQl9CisKKwkJ LyogU2V0IGEgcGFyYW0gZm9yIEZPUiBQT1JUSU9OIE9GIFRPL0ZST00gKi8KKwkJcXVlcnlv aWRzW3JpaW5mby0+bmtleXNdID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRu dW1zW3JpaW5mby0+bmtleXMgLSAxXSk7CisKKwkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUg cGxhbiAqLworCQlxcGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCByaWluZm8t Pm5rZXlzICsgMSwgcXVlcnlvaWRzLAorCQkJCQkJCSAmcWtleSwgZmtfcmVsLCBwa19yZWwp OworCX0KKworCS8qCisJICogV2UgaGF2ZSBhIHBsYW4gbm93LiBSdW4gaXQgdG8gdXBkYXRl IHRoZSBleGlzdGluZyByZWZlcmVuY2VzLgorCSAqLworCXJpX1BlcmZvcm1DaGVjayhyaWlu Zm8sICZxa2V5LCBxcGxhbiwKKwkJCQkJZmtfcmVsLCBwa19yZWwsCisJCQkJCW9sZHNsb3Qs IE5VTEwsCisJCQkJCXJpaW5mby0+bmtleXMsIHRhcmdldFJhbmdlLAorCQkJCQl0cnVlLAkJ LyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8KKwkJCQkJU1BJX09LX1VQREFURSk7CisKKwlp ZiAoU1BJX2ZpbmlzaCgpICE9IFNQSV9PS19GSU5JU0gpCisJCWVsb2coRVJST1IsICJTUElf ZmluaXNoIGZhaWxlZCIpOworCisJdGFibGVfY2xvc2UoZmtfcmVsLCBSb3dFeGNsdXNpdmVM b2NrKTsKKworCWlmIChpc19zZXRfbnVsbCkKKwkJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShO VUxMKTsKKwllbHNlCisJeworCQkvKgorCQkgKiBJZiB3ZSBqdXN0IGRlbGV0ZWQgb3IgdXBk YXRlZCB0aGUgUEsgcm93IHdob3NlIGtleSB3YXMgZXF1YWwgdG8gdGhlCisJCSAqIEZLIGNv bHVtbnMnIGRlZmF1bHQgdmFsdWVzLCBhbmQgYSByZWZlcmVuY2luZyByb3cgZXhpc3RzIGlu IHRoZSBGSworCQkgKiB0YWJsZSwgd2Ugd291bGQgaGF2ZSB1cGRhdGVkIHRoYXQgcm93IHRv IHRoZSBzYW1lIHZhbHVlcyBpdCBhbHJlYWR5CisJCSAqIGhhZCAtLS0gYW5kIFJJX0ZLZXlf ZmtfdXBkX2NoZWNrX3JlcXVpcmVkIHdvdWxkIGhlbmNlIGJlbGlldmUgbm8KKwkJICogY2hl Y2sgaXMgbmVjZXNzYXJ5LiAgU28gd2UgbmVlZCB0byBkbyBhbm90aGVyIGxvb2t1cCBub3cg YW5kIGluCisJCSAqIGNhc2UgYSByZWZlcmVuY2Ugc3RpbGwgZXhpc3RzLCBhYm9ydCB0aGUg b3BlcmF0aW9uLiAgVGhhdCBpcworCQkgKiBhbHJlYWR5IGltcGxlbWVudGVkIGluIHRoZSBO TyBBQ1RJT04gdHJpZ2dlciwgc28ganVzdCBydW4gaXQuIChUaGlzCisJCSAqIHJlY2hlY2sg aXMgb25seSBuZWVkZWQgaW4gdGhlIFNFVCBERUZBVUxUIGNhc2UsIHNpbmNlIENBU0NBREUg d291bGQKKwkJICogcmVtb3ZlIHN1Y2ggcm93cyBpbiBjYXNlIG9mIGEgREVMRVRFIG9wZXJh dGlvbiBvciB3b3VsZCBjaGFuZ2UgdGhlCisJCSAqIEZLIGtleSB2YWx1ZXMgaW4gY2FzZSBv ZiBhbiBVUERBVEUsIHdoaWxlIFNFVCBOVUxMIGlzIGNlcnRhaW4gdG8KKwkJICogcmVzdWx0 IGluIHJvd3MgdGhhdCBzYXRpc2Z5IHRoZSBGSyBjb25zdHJhaW50LikKKwkJICovCisJCXJl dHVybiByaV9yZXN0cmljdCh0cmlnZGF0YSwgdHJ1ZSk7CisJfQorfQorCiAvKgogICogUklf RktleV9wa191cGRfY2hlY2tfcmVxdWlyZWQgLQogICoKQEAgLTI1ODMsOCArMzEyMCw4IEBA IHJpX1BlcmZvcm1DaGVjayhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCWlu dAkJCXNwaV9yZXN1bHQ7CiAJT2lkCQkJc2F2ZV91c2VyaWQ7CiAJaW50CQkJc2F2ZV9zZWNf Y29udGV4dDsKLQlEYXR1bQkJdmFsc1tSSV9NQVhfTlVNS0VZUyAqIDJdOwotCWNoYXIJCW51 bGxzW1JJX01BWF9OVU1LRVlTICogMl07CisJRGF0dW0JCXZhbHNbUklfTUFYX05VTUtFWVMg KiAyICsgMV07CisJY2hhcgkJbnVsbHNbUklfTUFYX05VTUtFWVMgKiAyICsgMV07CiAKIAkv KgogCSAqIFVzZSB0aGUgcXVlcnkgdHlwZSBjb2RlIHRvIGRldGVybWluZSB3aGV0aGVyIHRo ZSBxdWVyeSBpcyBydW4gYWdhaW5zdApAQCAtMjYxOSw4ICszMTU2LDEwIEBAIHJpX1BlcmZv cm1DaGVjayhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQlyaV9FeHRyYWN0 VmFsdWVzKHNvdXJjZV9yZWwsIG5ld3Nsb3QsIHJpaW5mbywgc291cmNlX2lzX3BrLAogCQkJ CQkJIHZhbHMsIG51bGxzKTsKIAkJaWYgKG9sZHNsb3QpCisJCXsKIAkJCXJpX0V4dHJhY3RW YWx1ZXMoc291cmNlX3JlbCwgb2xkc2xvdCwgcmlpbmZvLCBzb3VyY2VfaXNfcGssCiAJCQkJ CQkJIHZhbHMgKyByaWluZm8tPm5rZXlzLCBudWxscyArIHJpaW5mby0+bmtleXMpOworCQl9 CiAJfQogCWVsc2UKIAl7CkBAIC0zMzMxLDggKzM4NzAsMTQgQEAgUklfRktleV90cmlnZ2Vy X3R5cGUoT2lkIHRnZm9pZCkKIAkJY2FzZSBGX1JJX0ZLRVlfU0VUREVGQVVMVF9VUEQ6CiAJ CWNhc2UgRl9SSV9GS0VZX05PQUNUSU9OX0RFTDoKIAkJY2FzZSBGX1JJX0ZLRVlfTk9BQ1RJ T05fVVBEOgorCQljYXNlIEZfVFJJX0ZLRVlfQ0FTQ0FERV9ERUw6CisJCWNhc2UgRl9UUklf RktFWV9DQVNDQURFX1VQRDoKIAkJY2FzZSBGX1RSSV9GS0VZX1JFU1RSSUNUX0RFTDoKIAkJ Y2FzZSBGX1RSSV9GS0VZX1JFU1RSSUNUX1VQRDoKKwkJY2FzZSBGX1RSSV9GS0VZX1NFVE5V TExfREVMOgorCQljYXNlIEZfVFJJX0ZLRVlfU0VUTlVMTF9VUEQ6CisJCWNhc2UgRl9UUklf RktFWV9TRVRERUZBVUxUX0RFTDoKKwkJY2FzZSBGX1RSSV9GS0VZX1NFVERFRkFVTFRfVVBE OgogCQljYXNlIEZfVFJJX0ZLRVlfTk9BQ1RJT05fREVMOgogCQljYXNlIEZfVFJJX0ZLRVlf Tk9BQ1RJT05fVVBEOgogCQkJcmV0dXJuIFJJX1RSSUdHRVJfUEs7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAppbmRleCA4Zjk1ZTA4MjE3MC4uZDIzM2I5ODYxY2QgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdApAQCAtMzk1Miw2ICszOTUyLDEyIEBACiB7IG9pZCA9PiAnNjEy MycsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgRk9SRUlHTiBL RVkgLi4uIFJFRkVSRU5DRVMnLAogICBwcm9uYW1lID0+ICdUUklfRktleV9jaGVja191cGQn LCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAogICBwcm9h cmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdUUklfRktleV9jaGVja191cGQnIH0sCit7IG9p ZCA9PiAnNjEyNCcsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkg T04gREVMRVRFIENBU0NBREUnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9jYXNjYWRlX2Rl bCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHBy b2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfZGVsJyB9LAor eyBvaWQgPT4gJzYxMjUnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdy aXR5IE9OIFVQREFURSBDQVNDQURFJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfY2FzY2Fk ZV91cGQnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAor ICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdUUklfRktleV9jYXNjYWRlX3VwZCcg fSwKIHsgb2lkID0+ICc2MTI2JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGlu dGVncml0eSBPTiBERUxFVEUgUkVTVFJJQ1QnLAogICBwcm9uYW1lID0+ICdUUklfRktleV9y ZXN0cmljdF9kZWwnLCBwcm92b2xhdGlsZSA9PiAndicsCiAgIHByb3JldHR5cGUgPT4gJ3Ry aWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKQEAgLTM5NjAsNiArMzk2NiwyMCBAQAogICBw cm9uYW1lID0+ICdUUklfRktleV9yZXN0cmljdF91cGQnLCBwcm92b2xhdGlsZSA9PiAndics CiAgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKICAgcHJv c3JjID0+ICdUUklfRktleV9yZXN0cmljdF91cGQnIH0sCit7IG9pZCA9PiAnNjEyOCcsIGRl c2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVMRVRFIFNFVCBO VUxMJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfc2V0bnVsbF9kZWwnLCBwcm92b2xhdGls ZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAn JywgcHJvc3JjID0+ICdUUklfRktleV9zZXRudWxsX2RlbCcgfSwKK3sgb2lkID0+ICc2MTI5 JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBVUERBVEUg U0VUIE5VTEwnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9zZXRudWxsX3VwZCcsIHByb3Zv bGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVz ID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X3NldG51bGxfdXBkJyB9LAoreyBvaWQgPT4g JzYxMzAnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERF TEVURSBTRVQgREVGQVVMVCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3NldGRlZmF1bHRf ZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywg cHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAnVFJJX0ZLZXlfc2V0ZGVmYXVsdF9k ZWwnIH0sCit7IG9pZCA9PiAnNjEzMScsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlh bCBpbnRlZ3JpdHkgT04gVVBEQVRFIFNFVCBERUZBVUxUJywKKyAgcHJvbmFtZSA9PiAnVFJJ X0ZLZXlfc2V0ZGVmYXVsdF91cGQnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5 cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklf RktleV9zZXRkZWZhdWx0X3VwZCcgfSwKIHsgb2lkID0+ICc2MTMyJywgZGVzY3IgPT4gJ3Rl bXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUgTk8gQUNUSU9OJywKICAg cHJvbmFtZSA9PiAnVFJJX0ZLZXlfbm9hY3Rpb25fZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3Yn LAogICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAppbmRl eCA2MGM5ZWVkYWVlOC4uNGY4YjA4YzRjZTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApAQCAtOTI3LDMwICs5MjcsMTg0IEBA IERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAtLQog LS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKIC0tCistLSBUT0M6CistLSBwYXJl bnQgdXBkYXRlcyBDQVNDQURFCistLSBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCistLSBwYXJl bnQgdXBkYXRlcyBTRVQgTlVMTAorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKKy0tIHBh cmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVM VAorLS0gcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFy ZW50IGRlbGV0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IHVwZGF0 ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBO VUxMICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAodHdv IHNjYWxhciBjb2xzLCBTRVQgTlVMTCBzdWJzZXQpCistLSBwYXJlbnQgdXBkYXRlcyBTRVQg REVGQVVMVCAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFV TFQgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUICh0 d28gc2NhbGFyIGNvbHMsIFNFVCBERUZBVUxUIHN1YnNldCkKIC0tIHRlc3QgRksgcGFyZW50 IHVwZGF0ZXMgQ0FTQ0FERQogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2 LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElO VE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAogCUFERCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlP TiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKLUVSUk9SOiAgYWN0aW9uIG5v dCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gbGVmdG92ZXJzIG9u IGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10n IFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQg CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4g MDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWzcsOCkK KyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygzIHJv d3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQg PSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBb IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIp IHwgWzcsOCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzcsOCkKKyBbMTAwLDEwMSkgfCBbIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzcs OCkKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitVUERBVEUgdGVt cG9yYWxfcm5nIFNFVCBpZCA9ICdbOSw5XScgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxp ZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkg fCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCIpIHwgWzksMTApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi LCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCisoMiByb3dzKQorCistLSBj bGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAo J1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0 ZXN0IEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworLS0g bGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEn IFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQg CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykK KyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygyIHJvd3MpCisKKy0tIG5vbi1GUE8gZGVsZXRl OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOwor IGlkIHwgdmFsaWRfYXQgfCBwYXJlbnRfaWQgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKygwIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAx OS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQg CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkK KygxIHJvdykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScs ICdbOSw5XScpOwogLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAotSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBW QUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzksOV0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAogCUFE RCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwog CQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOwotRVJST1I6ICBhY3Rp b24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCistLSBsZWZ0b3Zl cnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdb Nyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAK KyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygzIHJv d3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQg PSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBb IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIp IHwgCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMTkiKSB8IAorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCAKKygzIHJvd3MpCisK Ky0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNy YW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBp ZCA9ICdbOSw5XScgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0w MS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEg MDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgCisgWzIwMCwy MDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAw IDIwMjEiKSB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIw MF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywg J1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVz IFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNp ZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbNiw2XSc7 CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwx MDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KQor IFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAw MDowMDowMCAyMDIxIikgfCBbNiw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyBkZWxldGU6 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7Cisg ICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAg ICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIikgfCAKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgCisgWzEwMCwxMDEpIHwg WyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEi KSB8IAorKDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcy MDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBb MjAwLDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6 MDA6MDAgMjAyMSIpIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1sy MDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYs Nl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKIC0tIHRlc3QgRksgcGFyZW50IHVw ZGF0ZXMgU0VUIERFRkFVTFQKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb LTEsLTFdJywgdHNyYW5nZShudWxsLCBudWxsKSk7Ci1JTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzgsOF0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJy bmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwogICBB TFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKIAlEUk9QIENP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKQEAgLTk1OCw3ICsxMTEyLDQ2MSBA QCBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCiAJCUZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJ T04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKLUVSUk9SOiAg YWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gbGVm dG92ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQg PSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBb IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIp IHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJU dWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2 LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9y bmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAg ICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEw MCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiKSB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbLTEsMCkKKyBbMTAwLDEw MSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAg MjAyMSIpIHwgWy0xLDApCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5j ZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIw MCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScp OworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzksOV0nIFdIRVJFIGlkID0gJ1s4 LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAg ICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAg ICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgWzIwMCwyMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKQorIFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbOCw5KQorKDIg cm93cykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdb OSw5XScpOworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBW QUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSwgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAx JyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAs MTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkg fCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAy MSIpIHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEw MSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCIpIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFstMSwwKQorIFsxMDAsMTAxKSB8 IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IikgfCBbLTEsMCkKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCBy b3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIw MF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9h dCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBb Ik1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIp IHwgWy0xLDApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJG cmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVh biB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sx MDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0 IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJf cm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m azJfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtF WSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NB REU7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcy IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAx LTAxJyBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAg IGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFs3LDgpICAg ICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwgWzYsNykKKyBbMTAw LDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBP IHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nIFdIRVJF IGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdI RVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBw YXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIpIHwgWzcsOCkgICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJN b24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8 IFs3LDgpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNyw4KSAgICAgIHwgWzYs NykKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxV RVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1s4LDhdJywgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s5 LDldJyBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6 OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUg aWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg IHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVu dF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsy MDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIikgfCBbOSwxMCkgICAgIHwgWzgsOSkKKyBbMjAwLDIwMSkgfCBbIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgs OSkgICAgICB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00g dGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwy MDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZd JywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCBkZWxl dGVzIENBU0NBREUgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMg KCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2 LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0w MS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAg aWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAg ICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEg MDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykgICAg ICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJG cmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorKDIgcm93 cykKKworLS0gbm9uLUZQTyBkZWxldGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdI RVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgaWQgfCB2YWxpZF9hdCB8IHBhcmVudF9pZDEg fCBwYXJlbnRfaWQyIAorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKygwIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxV RVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlk MSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIw MF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAg ICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzIwMCwyMDEpIHwgWyJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8 IFs4LDkpICAgICAgfCBbOCw5KQorKDEgcm93KQorCistLSBjbGVhbiB1cAorREVMRVRFIEZS T00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIw MCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2 LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCB1 cGRhdGVzIFNFVCBOVUxMICh0d28gc2NhbGFyIGNvbHMpCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFM VUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbNiw2XScsICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcK KwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNU UkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmcyCisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CistLSBs ZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQg aWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8ICAgICAgICAgICAgfCAKKyBb MTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2 LDcpICAgICAgfCBbNiw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyB1cGRhdGU6CitVUERB VEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0n OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAw LDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQg ICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwg WyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi KSB8ICAgICAgICAgICAgfCAKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgICAgICAgICAgICB8IAorIFsx MDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIikgfCAgICAgICAgICAgIHwgCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3Mg dHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVT ICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhd JywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworVVBEQVRFIHRl bXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbOSw5XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQg dmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IAor IFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAw MDowMDowMCAyMDIxIikgfCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNs ZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAo J1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIg V0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0t IHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24g Ym90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9 ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlk ID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRf aWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAw LDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIpIHwgICAgICAgICAgICB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAw MDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAg IHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZy aSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisoMyByb3dz KQorCistLSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hF UkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcg V0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8 IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgCisgWzEwMCwxMDEpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8ICAg ICAgICAgICAgfCAKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIs IkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgICAgICAgICAgICB8IAorKDMgcm93cykK KworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMg KCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAw XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgs OF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBB TkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8 IAorIFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAw MSAwMDowMDowMCAyMDIxIikgfCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0t IGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJ TiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZzIgV0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsK Ky0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scywg U0VUIE5VTEwgc3Vic2V0KQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdb Niw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0n KTsKKy0tIGZhaWxzIGJlY2F1c2UgeW91IGNhbid0IHNldCB0aGUgUEVSSU9EIGNvbHVtbjoK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9y bmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJ T0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUg U0VUIE5VTEwgKHZhbGlkX2F0KSBPTiBVUERBVEUgU0VUIE5VTEw7CitFUlJPUjogIGNvbHVt biAidmFsaWRfYXQiIHJlZmVyZW5jZWQgaW4gT04gREVMRVRFIFNFVCBhY3Rpb24gY2Fubm90 IGJlIFBFUklPRAorLS0gb2s6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZwor CURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lk MSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFs X3JuZzIKKwkJT04gREVMRVRFIFNFVCBOVUxMIChwYXJlbnRfaWQxKSBPTiBVUERBVEUgU0VU IE5VTEw7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8g JzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAg ICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IFs2LDcp CisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikg fCBbNiw3KSAgICAgIHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gZGVsZXRlOgor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOwor ICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAg ICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8ICAgICAg ICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCAgICAgICAgICAgIHwgWzYsNykKKyBb MTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6 MDA6MDAgMjAyMSIpIHwgICAgICAgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBGSyBh Y3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywg J1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9h dCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf ZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwg cGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgWzgsOSkKKyBb MjAwLDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6 MDA6MDAgMjAyMSIpIHwgWzgsOSkgICAgICB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVh biB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdb MTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdI RVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0 ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMpCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAnWy0xLC0xXScs IHRzcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxV RVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAs MTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAn WzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisgIEFMVEVSIENP TFVNTiBwYXJlbnRfaWQxIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKyAgQUxURVIgQ09MVU1O IHBhcmVudF9pZDIgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJf cm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVS SU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRF IFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIGxlZnRvdmVycyBvbiBi b3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEgPSAnWzcsN10n LCBpZDIgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6 MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFst MSwwKQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEph biAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkg fCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAy MSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIHVwZGF0 ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nLCBpZDIgPSAnWzcs N10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9y bmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVu dF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFstMSwwKQorIFsxMDAs MTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDow MCAyMDE5IikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFstMSww KSAgICAgfCBbLTEsMCkKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNl ZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdb OCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcy MDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJf cm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nMiBT RVQgaWQxID0gJ1s5LDldJywgaWQyID0gJ1s5LDldJyBXSEVSRSBpZDEgPSAnWzgsOF0nIEFO RCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAg ICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDow MDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwg Wy0xLDApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkg SmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykK KworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJF IGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9y YWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5 XScpOworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxh ciBjb2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdb Niw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKKy0tIGxl ZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScg V0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lk MSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEph biAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzEwMCwxMDEp IHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIw MTkiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3KSAgICAg IHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorREVMRVRFIEZST00g dGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbLTEs MCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4g MDEgMDA6MDA6MDAgMjAxOSIpIHwgWy0xLDApICAgICB8IFstMSwwKQorIFsxMDAsMTAxKSB8 IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdv IHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgn WzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywg dHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAx OS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lk MSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEph biAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzIwMCwyMDEp IHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MjEiKSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4gdXAKK0RF TEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBd JywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEg SU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gdGVzdCBGSyBw YXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxhciBjb2xzLCBTRVQgREVGQVVM VCBzdWJzZXQpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0n LCAnWzYsNl0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxV RVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1s2LDZdJywgJ1s2LDZdJyk7CistLSBmYWlscyBiZWNhdXNlIHlvdSBjYW4ndCBzZXQgdGhl IFBFUklPRCBjb2x1bW46CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworICBB TFRFUiBDT0xVTU4gcGFyZW50X2lkMSBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJl bnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgor CQlPTiBERUxFVEUgU0VUIERFRkFVTFQgKHZhbGlkX2F0KSBPTiBVUERBVEUgU0VUIERFRkFV TFQ7CitFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIHJlZmVyZW5jZWQgaW4gT04gREVMRVRF IFNFVCBhY3Rpb24gY2Fubm90IGJlIFBFUklPRAorLS0gb2s6CitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9mazJfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkMSBTRVQgREVGQVVM VCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2Zr LAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04g S0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgKHBhcmVudF9p ZDEpIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVz OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQxID0gJ1s2LDZdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwx MDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikg fCBbLTEsMCkgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykgICAgICB8IFs2 LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFu IDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorKDMgcm93cykKKwor LS0gbm9uLUZQTyB1cGRhdGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlk MSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJF IGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJl bnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBb MTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFst MSwwKSAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbLTEsMCkgICAgIHwgWzYsNykK KygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwt MV0nLCAnWzgsOF0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTkt MDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEg fCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFs4LDkpCisgWzIwMCwyMDEpIHwg WyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEi KSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4gdXAKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywg J1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4g KCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gRksgd2l0aCBhIGN1 c3RvbSByYW5nZSB0eXBlCitDUkVBVEUgVFlQRSBteWRhdGVyYW5nZSBBUyByYW5nZShzdWJ0 eXBlPWRhdGUpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCBteWRhdGVyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNf cGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9mazNfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZh bGlkX2F0IG15ZGF0ZXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9mazNfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmszX3JuZzJybmdfZmsg Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZzMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpIE9OIERFTEVURSBDQVNDQURF CispOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMyBWQUxVRVMgKCdbOCw4XScsIG15ZGF0 ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9mazNfcm5nMnJuZyBWQUxVRVMgKCdbNSw1XScsIG15ZGF0ZXJhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmczIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIw LTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr M19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9h dCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tCisgWzUsNikgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IFs4 LDkpCisgWzUsNikgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFs4LDkpCisoMiByb3dz KQorCitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrM19ybmcycm5nOworRFJPUCBUQUJMRSB0ZW1w b3JhbF9ybmczOworRFJPUCBUWVBFIG15ZGF0ZXJhbmdlOwogLS0gRksgYmV0d2VlbiBwYXJ0 aXRpb25lZCB0YWJsZXMKIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg KAogCWlkIGludDRyYW5nZSwKQEAgLTk2Niw4ICsxNTc0LDggQEAgQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoCiAgIG5hbWUgdGV4dCwKIAlDT05TVFJBSU5UIHRl bXBvcmFsX3Bhcml0aW9uZWRfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKLUNSRUFURSBUQUJM RSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVT IElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzEx LDExXScpOwotQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdb OCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFSVElU SU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzEsMV0n LCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDExXScsICdbMTMs MTNdJywgJ1sxNSwxNV0nLCAnWzE3LDE3XScsICdbMTksMTldJywgJ1syMSwyMV0nLCAnWzIz LDIzXScpOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMCwwXScsICdbMiwyXScsICdbNCw0XScsICdb Niw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nLCAnWzE0LDE0XScsICdbMTYs MTZdJywgJ1sxOCwxOF0nLCAnWzIwLDIwXScsICdbMjIsMjJdJywgJ1syNCwyNF0nKTsKIElO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMKICAgKCdbMSwxXScs IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKICAgKCdb MSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwK QEAgLTk4MCw4ICsxNTg4LDggQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgKAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJF RkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0 KQogKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRp dGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4g KCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFd Jyk7Ci1DUkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZd JywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRma3Ax IFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxV RVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdb MTEsMTFdJywgJ1sxMywxM10nLCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAn WzIxLDIxXScsICdbMjMsMjNdJyk7CitDUkVBVEUgVEFCTEUgdGZrcDIgUEFSVElUSU9OIE9G IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1swLDBd JywgJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEy LDEyXScsICdbMTQsMTRdJywgJ1sxNiwxNl0nLCAnWzE4LDE4XScsICdbMjAsMjBdJywgJ1sy MiwyMl0nLCAnWzI0LDI0XScpOwogLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgaW5zZXJ0cwog SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKICAg KCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwx XScpLApAQCAtMTAxNiw3ICsxNjI0LDcgQEAgVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0K IC0tIHNob3VsZCBmYWlsOgogVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQg dmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiAgIFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOwotRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0 cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIgorRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkxIiBvbiB0YWJsZSAidGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0o WzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZy b20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgogLS0gY2xlYW4g dXA6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJF IHBhcmVudF9pZCA9ICdbNSw1XSc7CkBAIC0xMDI4LDcgKzE2MzYsNyBAQCBJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0 ZXJhbmdlKCcyMDE4LTAxLQogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpOwogLS0gc2hvdWxkIGZhaWw6CiBERUxFVEUgRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9 IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7Ci1FUlJPUjogIHVwZGF0 ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIg b24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitFUlJPUjogIHVw ZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtl eTEiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgogREVUQUlM OiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAxOCkp IGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyIuCiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKQEAgLTEwNTAs NyArMTY1OCw3IEBAIFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlk X2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtCiAtLSBzaG91bGQgZmFp bDoKIFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0 ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQogICBXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KTsKLUVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBm b3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n X3BhcmVudF9pZF9ma2V5IiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyIKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRl cyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nX3BhcmVudF9pZF9ma2V5MSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmciCiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEt MjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KIC0tIGNsZWFuIHVwOgogREVMRVRFIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAn WzUsNV0nOwpAQCAtMTA2MiwzNSArMTY3MCwyMTQgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAx OC0wMS0KIERFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgt MDMtMDEnKTsKIC0tIHNob3VsZCBmYWlsOgogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwotRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRl IG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgorRVJST1I6ICB1cGRhdGUgb3IgZGVs ZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkxIiBvbiB0YWJs ZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQs IHZhbGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCBy ZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmci LgogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s2LDZdJywgZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgZGF0ZXJhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJ T0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCiAJ CU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOwotRVJST1I6ICBhY3Rpb24g bm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTkt MDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2 LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbNCw0XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLQorIFs0LDUpIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbNyw4KQorIFs0LDUp IHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBbNiw3KQorIFs0LDUpIHwgWzAxLTAxLTIw MjAsMDEtMDEtMjAyMSkgfCBbNiw3KQorKDMgcm93cykKKworVVBEQVRFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbNCw0XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs0 LDUpIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbNyw4KQorIFs0LDUpIHwgWzAxLTAx LTIwMTgsMDEtMDEtMjAxOSkgfCBbNyw4KQorIFs0LDUpIHwgWzAxLTAxLTIwMjAsMDEtMDEt MjAyMSkgfCBbNyw4KQorKDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBW QUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVF UyAoJ1sxMCwxMF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzE1LDE1XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAn WzE2LDE2XScgV0hFUkUgaWQgPSAnWzE1LDE1XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAx LTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMTAsMTBdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLQorIFsxMCwxMSkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8 IFsxNiwxNykKKyBbMTAsMTEpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTUsMTYp CisoMiByb3dzKQorCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURF CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzgsOF0n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1s1LDVdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50 X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzUsNikgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IFs4LDkpCisgWzUsNikgfCBbMDEt MDEtMjAyMCwwMS0wMS0yMDIxKSB8IFs4LDkpCisoMiByb3dzKQorCitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVd JzsKKyBpZCB8IHZhbGlkX2F0IHwgcGFyZW50X2lkIAorLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisoMCByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgVkFMVUVTICgnWzE3LDE3XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEx LDExXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTdd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAn WzE3LDE3XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTEs MTFdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQg CistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsx MSwxMikgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsxNywxOCkKKygxIHJvdykKKwog LS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbOSw5XScsIGRhdGVyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZwogCQlP TiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOwotRVJST1I6ICBhY3Rpb24g bm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTkt MDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAn WzksOV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAg IHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgWzYsNykgfCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IAorIFs2LDcpIHwg WzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBbOSwxMCkKKyBbNiw3KSB8IFswMS0wMS0yMDIw LDAxLTAxLTIwMjEpIHwgWzksMTApCisoMyByb3dzKQorCitVUERBVEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzYsNl0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRf aWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBb Niw3KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgCisgWzYsNykgfCBbMDEtMDEtMjAx OCwwMS0wMS0yMDE5KSB8IAorIFs2LDcpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCAK KygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMgKCdbMTgsMThdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE4LDE4 XScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTIsMTJdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxOCwxOF0nKTsKK1VQ REFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1sxOSwxOV0nIFdIRVJF IGlkID0gJ1sxOCwxOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzEyLDEyXSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFy ZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyBbMTIsMTMpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkgfCAKKyBbMTIsMTMpIHwg WzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTgsMTkpCisoMiByb3dzKQorCiAtLSBwYXJ0 aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxMSwxMV0nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzcsN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzExLDExXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEn IFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNyw3XSc7Cisg IGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs3LDgpIHwgWzAxLTAx LTIwMTksMDEtMDEtMjAyMCkgfCAKKyBbNyw4KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkp IHwgWzExLDEyKQorIFs3LDgpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTEsMTIp CisoMyByb3dzKQorCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hF UkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOworICBpZCAgIHwgICAgICAgIHZhbGlk X2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBbNyw4KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwg CisgWzcsOCkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IAorIFs3LDgpIHwgWzAxLTAx LTIwMjAsMDEtMDEtMjAyMSkgfCAKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjAsMjBdJywgZGF0ZXJhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgVkFMVUVTICgnWzIwLDIwXScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBWQUxVRVMgKCdbMTMsMTNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1syMCwyMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBXSEVSRSBpZCA9ICdbMjAsMjBdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpk YXRlOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1sxMywxM10nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAg ICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgWzEzLDE0KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgCisgWzEz LDE0KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzIwLDIxKQorKDIgcm93cykKKwog LS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMCwwXScsIGRhdGVyYW5n ZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg VkFMVUVTICgnWzEyLDEyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxV RVMgKCdbOCw4XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb MTIsMTJdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n Ci0gIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorICBB TFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbMCwwXScsCiAJRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNU UkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nCiAJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VU IERFRkFVTFQ7Ci1FUlJPUjogIGFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBm b3JlaWduIGtleXMKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBp ZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CisgIGlk ICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs4LDkpIHwgWzAxLTAxLTIw MTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs4LDkpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAx OSkgfCBbMTIsMTMpCisgWzgsOSkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsxMiwx MykKKygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlk ID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAgaWQg ICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzgsOSkgfCBbMDEtMDEtMjAx OSwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzgsOSkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5 KSB8IFswLDEpCisgWzgsOSkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFswLDEpCiso MyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVT ICgnWzIyLDIyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMiwyMl0n LCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzE0LDE0XScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjIsMjJdJyk7CitVUERB VEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMjMsMjNdJyBXSEVSRSBp ZCA9ICdbMjIsMjJdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0g J1sxNCwxNF0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgWzE0LDE1KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbMTQsMTUp IHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMjIsMjMpCisoMiByb3dzKQorCiAtLSBw YXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzksOV0nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRFIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTkt MDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOSw5 XSc7CisgICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzksMTAp IHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs5LDEwKSB8IFswMS0wMS0y MDE4LDAxLTAxLTIwMTkpIHwgWzE0LDE1KQorIFs5LDEwKSB8IFswMS0wMS0yMDIwLDAxLTAx LTIwMjEpIHwgWzE0LDE1KQorKDMgcm93cykKKworREVMRVRFIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s5LDldJzsKKyAgIGlk ICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOSwxMCkgfCBbMDEtMDEt MjAxOSwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzksMTApIHwgWzAxLTAxLTIwMTgsMDEtMDEt MjAxOSkgfCBbMCwxKQorIFs5LDEwKSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzAs MSkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBW QUxVRVMgKCdbMjQsMjRdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzI0 LDI0XScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTUsMTVd JywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1syNCwyNF0nKTsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbMjQs MjRdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxNSwxNV0n OworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzE1LDE2 KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbMTUsMTYpIHwgWzAxLTAx LTIwMjAsMDEtMDEtMjAyMSkgfCBbMjQsMjUpCisoMiByb3dzKQorCiBEUk9QIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmc7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhv dXRfb3ZlcmxhcHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFw cy5zcWwKaW5kZXggOTViNmRhNGMwNzYuLjhhZWIyNDVjYmU5IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApAQCAtNzM1LDMxICs3MzUsMTE0IEBA IERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAtLQog LS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKIC0tCistLSBUT0M6CistLSBwYXJl bnQgdXBkYXRlcyBDQVNDQURFCistLSBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCistLSBwYXJl bnQgdXBkYXRlcyBTRVQgTlVMTAorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKKy0tIHBh cmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVM VAorLS0gcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFy ZW50IGRlbGV0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IHVwZGF0 ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBO VUxMICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAodHdv IHNjYWxhciBjb2xzLCBTRVQgTlVMTCBzdWJzZXQpCistLSBwYXJlbnQgdXBkYXRlcyBTRVQg REVGQVVMVCAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFV TFQgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUICh0 d28gc2NhbGFyIGNvbHMsIFNFVCBERUZBVUxUIHN1YnNldCkKIAogLS0gdGVzdCBGSyBwYXJl bnQgdXBkYXRlcyBDQVNDQURFCiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgn WzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7Ci1JTlNFUlQg SU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCiAJQURE IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCiAJ CU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworLS0gbGVmdG92ZXJzIG9u IGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10n IFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUg dGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7 CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRz cmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQg aWQgPSAnWzksOV0nIFdIRVJFIGlkID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTkt MDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcs N10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBD QVNDQURFCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVz OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBd JzsKKy0tIG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJF IGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZS T00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAw LDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZd JywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CiAKIC0tIHRlc3QgRksgcGFyZW50IHVw ZGF0ZXMgU0VUIE5VTEwKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOSw5 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKLUlOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s5LDldJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAw XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKIEFM VEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVG RVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBT RVQgTlVMTDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFs X3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAy MC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0t IG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10n IFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2Vk IHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAs MjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsK K1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s5LDldJyBXSEVSRSBpZCA9ICdbOCw4 XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBj bGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAo J1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisKKy0t IHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwx MDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwor LS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEt MDEnIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyBkZWxldGU6CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBh Y3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIw MjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk ID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBd JzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0n KTsKIAogLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAogSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1stMSwtMV0nLCB0c3JhbmdlKG51bGwsIG51bGwp KTsKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTIsMTJdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8gdGVtcG9yYWxf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzEyLDEyXScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nCiAgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERF RkFVTFQgJ1stMSwtMV0nLAogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrLApAQCAtNzY3LDYgKzg1MCwyNzEgQEAgQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZwogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJF RkVSRU5DRVMgdGVtcG9yYWxfcm5nCiAJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERB VEUgU0VUIERFRkFVTFQ7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0 ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAw XSc7CistLSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0g J1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVm ZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMg KCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4 LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbOSw5XScgV0hFUkUgaWQg PSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0n OworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScp OworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVF UyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRP ICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gdXBk YXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0n OworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0 c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGlt ZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0g J1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5n MnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhd JywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERSAodHdv IHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2 XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9y bmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJ T0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUg Q0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVz OgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlk MSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJF IGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3Jh bF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7Cist LSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4 LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScp OworVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbOSw5XScgV0hFUkUgaWQxID0g J1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7 CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUg aWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDld Jyk7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBj b2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKKy0tIGxlZnRv dmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hF UkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcg V0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNy b3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZB TFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdb OCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQg QD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr Ml9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRF IEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAn WzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAo J1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFy ZW50IHVwZGF0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJu ZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5n MnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFy ZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRl bXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsK Ky0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEn IFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24t RlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nIFdI RVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQg cm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgs OF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAy MC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3Ju ZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VU IGlkMSA9ICdbOSw5XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIw MTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcy cm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00g dGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwy MDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZd JywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IGRl bGV0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxV RVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1s2LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAx OS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7Cist LSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQx ID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUg aWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAx JywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBW QUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJF IGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1w OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAw LDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScs ICdbOSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMICh0d28g c2NhbGFyIGNvbHMsIFNFVCBOVUxMIHN1YnNldCkKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMg KCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2 LDZdJywgJ1s2LDZdJyk7CistLSBmYWlscyBiZWNhdXNlIHlvdSBjYW4ndCBzZXQgdGhlIFBF UklPRCBjb2x1bW46CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFy ZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIK KwkJT04gREVMRVRFIFNFVCBOVUxMICh2YWxpZF9hdCkgT04gVVBEQVRFIFNFVCBOVUxMOwor LS0gb2s6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworCURST1AgQ09OU1RS QUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lk MiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04g REVMRVRFIFNFVCBOVUxMIChwYXJlbnRfaWQxKSBPTiBVUERBVEUgU0VUIE5VTEw7CistLSBs ZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEn IFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIGRlbGV0ZToKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZL IGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n MiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0n LCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlk X2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RF TEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBd JywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEg SU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworCistLSB0ZXN0IEZL IHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMpCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAnWy0xLC0xXScsIHRzcmFu Z2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdb Niw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0n KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisgIEFMVEVSIENPTFVNTiBw YXJlbnRfaWQxIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKyAgQUxURVIgQ09MVU1OIHBhcmVu dF9pZDIgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJu Z19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZh bGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNFVCBE RUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNp ZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEgPSAnWzcsN10nLCBpZDIg PSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0 ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nLCBpZDIgPSAnWzcs N10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9y bmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVy ZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0n LCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5n ZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf ZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworVVBEQVRFIHRlbXBvcmFsX3Ju ZzIgU0VUIGlkMSA9ICdbOSw5XScsIGlkMiA9ICdbOSw5XScgV0hFUkUgaWQxID0gJ1s4LDhd JyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBj bGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4g KCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcy IFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisK Ky0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQgKHR3byBzY2FsYXIgY29s cykKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0b3Zl cnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJF IGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdI RVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9z cyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxV RVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgs OF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1sy MDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdb Niw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVu dCBkZWxldGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMsIFNFVCBERUZBVUxUIHN1 YnNldCkKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWy0xLC0xXScsICdb Niw2XScsIHRzcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n MiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAo J1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYs Nl0nLCAnWzYsNl0nKTsKKy0tIGZhaWxzIGJlY2F1c2UgeW91IGNhbid0IHNldCB0aGUgUEVS SU9EIGNvbHVtbjoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisgIEFMVEVS IENPTFVNTiBwYXJlbnRfaWQxIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNU UkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9y YWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9p ZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9O IERFTEVURSBTRVQgREVGQVVMVCAodmFsaWRfYXQpIE9OIFVQREFURSBTRVQgREVGQVVMVDsK Ky0tIG9rOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKyAgQUxURVIgQ09M VU1OIHBhcmVudF9pZDEgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlO VCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m azJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVM RVRFIFNFVCBERUZBVUxUIChwYXJlbnRfaWQxKSBPTiBVUERBVEUgU0VUIERFRkFVTFQ7Cist LSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIg Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEt MDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9y bmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0t IEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgs OF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAnWzgsOF0nLCB0 c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hF UkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3Rh bXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sy MDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJy bmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhd JywgJ1s5LDldJyk7CisKKy0tIEZLIHdpdGggYSBjdXN0b20gcmFuZ2UgdHlwZQorCitDUkVB VEUgVFlQRSBteWRhdGVyYW5nZSBBUyByYW5nZShzdWJ0eXBlPWRhdGUpOworCitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IG15ZGF0 ZXJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM19wayBQUklNQVJZIEtFWSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X2ZrM19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgbXlkYXRlcmFuZ2Us CisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrM19ybmcy cm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9mazNfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMyAoaWQs IFBFUklPRCB2YWxpZF9hdCkgT04gREVMRVRFIENBU0NBREUKKyk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmczIFZBTFVFUyAoJ1s4LDhdJywgbXlkYXRlcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrM19ybmcycm5nIFZB TFVFUyAoJ1s1LDVdJywgbXlkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp LCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzMgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0g J1s4LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmszX3JuZzJybmcgV0hFUkUgaWQg PSAnWzUsNV0nOworCitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrM19ybmcycm5nOworRFJPUCBU QUJMRSB0ZW1wb3JhbF9ybmczOworRFJPUCBUWVBFIG15ZGF0ZXJhbmdlOwogCiAtLSBGSyBi ZXR3ZWVuIHBhcnRpdGlvbmVkIHRhYmxlcwogCkBAIC03NzYsOCArMTEyNCw4IEBAIENSRUFU RSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKAogICBuYW1lIHRleHQsCiAJQ09O U1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCiApIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7Ci1D UkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg Rk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5 LDldJywgJ1sxMSwxMV0nKTsKLUNSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAn WzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitDUkVBVEUgVEFCTEUg dHAxIFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJ TiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwx MV0nLCAnWzEzLDEzXScsICdbMTUsMTVdJywgJ1sxNywxN10nLCAnWzE5LDE5XScsICdbMjEs MjFdJywgJ1syMywyM10nKTsKK0NSRUFURSBUQUJMRSB0cDIgUEFSVElUSU9OIE9GIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzAsMF0nLCAnWzIsMl0nLCAn WzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJywgJ1sxNCwx NF0nLCAnWzE2LDE2XScsICdbMTgsMThdJywgJ1syMCwyMF0nLCAnWzIyLDIyXScsICdbMjQs MjRdJyk7CiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTCiAg ICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAnb25l JyksCiAgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0wMScp LCAnb25lJyksCkBAIC03OTEsOCArMTEzOSw4IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nICgKIAlDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoaWQsIFBFUklP RCB2YWxpZF9hdCkKICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKLUNSRUFURSBUQUJMRSB0 ZmtwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1Ig VkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0n LCAnWzExLDExXScpOwotQ1JFQVRFIFRBQkxFIHRma3AyIHBhcnRpdGlvbiBPRiB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0 XScsICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0NSRUFURSBU QUJMRSB0ZmtwMSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAn WzksOV0nLCAnWzExLDExXScsICdbMTMsMTNdJywgJ1sxNSwxNV0nLCAnWzE3LDE3XScsICdb MTksMTldJywgJ1syMSwyMV0nLCAnWzIzLDIzXScpOworQ1JFQVRFIFRBQkxFIHRma3AyIFBB UlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMg SU4gKCdbMCwwXScsICdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4XScsICdbMTAs MTBdJywgJ1sxMiwxMl0nLCAnWzE0LDE0XScsICdbMTYsMTZdJywgJ1sxOCwxOF0nLCAnWzIw LDIwXScsICdbMjIsMjJdJywgJ1syNCwyNF0nKTsKIAogLS0gcGFydGl0aW9uZWQgRksgY2hp bGQgaW5zZXJ0cwogCkBAIC04NzYsMzcgKzEyMjQsMTA3IEBAIERFTEVURSBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g ZGF0ZXJhbmdlCiAKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUK IAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s2LDZd JywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgZGF0 ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5U IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nCiAJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVS RSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNCw0 XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE1 LDE1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCBkYXRl cmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwLDEwXScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTUsMTVdJyk7CitVUERBVEUgdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdb MTUsMTVdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMCwx MF0nOwogCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCiAKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbOCw4XScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlk ID0gJ1s4LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgVkFMVUVTICgnWzE3LDE3XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZB TFVFUyAoJ1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVT ICgnWzExLDExXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb MTcsMTddJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUg aWQgPSAnWzE3LDE3XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTEsMTFdJzsKKwogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5V TEwKIAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s5 LDldJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s2LDZdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s5LDldJyk7CiBBTFRF UiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nCiAJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7 CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEwLDEw XScgV0hFUkUgaWQgPSAnWzksOV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1VQREFURSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbNiw2XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFM VUVTICgnWzE4LDE4XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxOCwx OF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEyLDEyXScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTgsMThdJyk7CitV UERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTksMTldJyBXSEVS RSBpZCA9ICdbMTgsMThdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1sxMiwxMl0nOwogCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQg TlVMTAogCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgn WzExLDExXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNyw3 XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTEsMTFdJyk7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0g J1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1s3LDddJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNyw3XSc7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzIwLDIwXScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgVkFMVUVTICgnWzEzLDEzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbMjAsMjBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzIwLDIwXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5 LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMTMsMTNdJzsKKwogLS0gcGFydGl0aW9uZWQgRksgcGFy ZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKIAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1swLDBdJywgZGF0ZXJhbmdlKG51bGwsIG51bGwpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTIsMTJdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s4LDhdJywgZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKIEFMVEVSIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKLSAgQUxURVIgQ09MVU1OIHBh cmVudF9pZCBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisgIEFMVEVSIENPTFVNTiBwYXJlbnRf aWQgU0VUIERFRkFVTFQgJ1swLDBdJywKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKIAkJ T04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKK1VQREFURSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbMTMsMTNdJyBXSEVSRSBp ZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFNFVCBpZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb OCw4XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgn WzIyLDIyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMiwyMl0nLCBk YXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzE0LDE0XScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjIsMjJdJyk7CitVUERBVEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMjMsMjNdJyBXSEVSRSBpZCA9 ICdbMjIsMjJdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sx NCwxNF0nOwogCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVM VAogCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE0 LDE0XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOSw5XScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTQsMTRdJyk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sx NCwxNF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1s5LDldJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOSw5XSc7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzI0LDI0XScsIGRhdGVyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syNCwyNF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgVkFMVUVTICgnWzE1LDE1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbMjQsMjRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgV0hFUkUgaWQgPSAnWzI0LDI0XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAx LTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMTUsMTVdJzsKKwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nOwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmc7Ci0tIAoyLjQyLjAKCg== --------------5mQnkvShJhECliiRK4zn4H0Z Content-Type: text/x-patch; charset=UTF-8; name="v23-0008-Add-PERIODs.patch" Content-Disposition: attachment; filename="v23-0008-Add-PERIODs.patch" Content-Transfer-Encoding: base64 RnJvbSA0ZDNmMDQ1NjllZmFjNWUyNTk4ZGM3NTg1OTU3N2VmM2EzZjgyMDM1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgOSBKYW4gMjAyMSAyMTo1OTo0MyAtMDgw MApTdWJqZWN0OiBbUEFUQ0ggdjIzIDgvOF0gQWRkIFBFUklPRHMKCi0gQWRkZWQgcGFyc2lu ZyBmb3IgU1FMOjIwMTEgc3ludGF4IHRvIGRlZmluZSBhbiBhcHBsaWNhdGlvbi10aW1lIFBF UklPRCBvbiBhCiAgdGFibGUgKGluIGJvdGggQ1JFQVRFIFRBQkxFIGFuZCBBTFRFUiBUQUJM RSkuIE1ha2Ugc3VyZSB3ZSBjcmVhdGUgdGhlIFBFUklPRAogIGFmdGVyIGNvbHVtbnMgYXJl IGtub3duIChzaW5jZSBQRVJJT0RzIGNhbiByZWZlciB0byB0aGVtKSBidXQgYmVmb3JlCiAg Y29uc3RyYWludHMgYXJlIGhhbmRsZWQgKHNpbmNlIFBFUklPRHMgY2FuIGFwcGVhciBpbiB0 aGVtKS4KLSBBZGRlZCBBTFRFUiBUQUJMRSBEUk9QIHN1cHBvcnQgZm9yIFBFUklPRHMuCi0g Q3JlYXRlZCBwb3N0Z3Jlcy5wZ19wZXJpb2QgdGFibGUuCi0gQ3JlYXRlZCBpbmZvcm1hdGlv bl9zY2hlbWEucGVyaW9kcyB2aWV3LgotIEFkZGVkIHBnX2R1bXAgc3VwcG9ydC4KLSBBZGRl ZCB0ZXN0cyBhbmQgZG9jdW1lbnRhdGlvbi4KLSBBdXRvbWF0aWNhbGx5IGRlZmluZSBhIGNv bnN0cmFpbnQgZm9yIGVhY2ggUEVSSU9EIHJlcXVpcmluZyB0aGUgc3RhcnQgY29sdW1uCiAg dG8gYmUgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uLgotIFdoZW4gY3JlYXRpbmcgYSBQRVJJ T0QsIGNob29zZSBhbiBhcHByb3ByaWF0ZSByYW5nZSB0eXBlIHdlIGNhbiB1c2UgdG8KICBp bXBsZW1lbnQgUEVSSU9ELXJlbGF0ZWQgb3BlcmF0aW9ucy4gWW91IGNhbiBjaG9vc2Ugb25l IGV4cGxpY2l0bHkgaWYgdGhlcmUKICBpcyBhbWJpZ3VpdHkgKGR1ZSB0byBtdWx0aXBsZSBy YW5nZSB0eXBlcyBjcmVhdGVkIG92ZXIgdGhlIHNhbWUgYmFzZSB0eXBlKS4KLS0tCiBkb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAxMTIgKysrCiBk b2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTggKysK IGRvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbCAgICAgICAgICB8ICA2MyAr KwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDI1 ICsKIGRvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sICAgICAgICAgICAgICAgICB8ICAg MiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAgfCAg NDAgKwogZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbCAgICAgICAgICAgICAgICAgIHwg ICAzICstCiBkb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sICAgICAgICAgICAgICAgICAg fCAgIDMgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUgICAgICAgICAgICAgICAg ICB8ICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jICAgICAgICAgICAgICAg ICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgICAgICAgICAg ICAgIHwgICA5ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jICAgICAgICAgICAgICAg ICAgICB8ICA3NiArKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEu c3FsICAgIHwgIDIzICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL21lc29uLmJ1aWxkICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMg ICAgICAgICAgIHwgIDczICsrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jICAg ICAgICAgICAgICAgfCAxMzIgKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJl cy50eHQgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb21tZW50 LmMgICAgICAgICAgICAgICAgfCAgMTAgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNt ZHMuYyAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50 X3RyaWdnZXIuYyAgICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zZWNs YWJlbC5jICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMgICAgICAgICAgICAgIHwgNzQ5ICsrKysrKysrKysrKysrKysrLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmlldy5jICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMv YmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgIDQzICstCiBz cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyAgICAgICAgICAgfCAgMTAgKwog c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgMTQ1ICsr Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMgICAgICAgICAgICAgICAgfCAg NTYgKysKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jICAgICAgICAgICB8 ICA4NyArKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYyAgICAgICAgICAg IHwgIDIxICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYyAgICAgICAg ICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAg ICAgfCAxNzMgKysrLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAg ICAgICAgIHwgIDE0ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYyAgICAgICAg ICAgICAgICB8ICAgNyArCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAg ICAgICAgICAgfCAgMzYgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oICAgICAgICAg ICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxkICAg ICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19pbmRleC5oICAg ICAgICAgICAgICAgIHwgICAxIC0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgg ICAgICAgICAgICAgICB8ICA1NCArKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19yYW5nZS5o ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21k cy5oICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oICAgICAgICAgICAgICAgIHwgIDM5ICstCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf dXRpbGNtZC5oICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2Nh Y2hlLmggICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL3V0aWxzL3Blcmlv ZC5oICAgICAgICAgICAgICAgICAgICB8ICAxOSArCiBzcmMvaW5jbHVkZS91dGlscy9zeXNj YWNoZS5oICAgICAgICAgICAgICAgICAgfCAgIDMgKwogLi4uL3Rlc3RfZGRsX2RlcGFyc2Uv dGVzdF9kZGxfZGVwYXJzZS5jICAgICAgIHwgICA2ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcGVyaW9kcy5vdXQgICAgICAgICB8IDE3NyArKysrKwogc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9wZXJpb2RzLnNxbCAgICAgICAgICAgICAgfCAxMTkgKysrCiA1MyBmaWxlcyBj aGFuZ2VkLCAyMzg5IGluc2VydGlvbnMoKyksIDM5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3BlcmlvZC5oCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL2luY2x1ZGUvdXRpbHMvcGVyaW9kLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BlcmlvZHMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvcmVncmVzcy9zcWwvcGVyaW9kcy5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4 IDFhYzhiNzRmZTNkLi41YzA0NWJjZTE4NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTIzMCw2 ICsyMzAsMTEgQEAKICAgICAgIDxlbnRyeT5pbmZvcm1hdGlvbiBhYm91dCBwYXJ0aXRpb24g a2V5IG9mIHRhYmxlczwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1wZXJpb2QiPjxzdHJ1Y3RuYW1l PnBnX3BlcmlvZDwvc3RydWN0bmFtZT48L2xpbms+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5w ZXJpb2RzPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRy eT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXBvbGljeSI+PHN0cnVjdG5hbWU+cGdfcG9s aWN5PC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgogICAgICAgPGVudHJ5PnJvdy1zZWN1 cml0eSBwb2xpY2llczwvZW50cnk+CkBAIC01NzI2LDYgKzU3MzEsMTEzIEBAIFNDUkFNLVNI QS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJs ZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICAgYXJlIHNpbXBsZSByZWZlcmVuY2VzLgogICAg ICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgPC90Ym9keT4KKyAgIDwv dGdyb3VwPgorICA8L3RhYmxlPgorIDwvc2VjdDE+CisKKworIDxzZWN0MSBpZD0iY2F0YWxv Zy1wZy1wZXJpb2QiPgorICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcGVyaW9kPC9zdHJ1Y3Ru YW1lPjwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJjYXRhbG9nLXBnLXBlcmlvZCI+ CisgICA8cHJpbWFyeT5wZ19wZXJpb2Q8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisg IDxwYXJhPgorICAgVGhlIGNhdGFsb2cgPHN0cnVjdG5hbWU+cGdfcGVyaW9kPC9zdHJ1Y3Ru YW1lPiBzdG9yZXMKKyAgIGluZm9ybWF0aW9uIGFib3V0IHN5c3RlbSBhbmQgYXBwbGljYXRp b24gdGltZSBwZXJpb2RzLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBQZXJpb2RzIGFy ZSBkZXNjcmliZWQgaW4gPHhyZWYgbGlua2VuZD0iZGRsLXBlcmlvZHMiLz4uCisgIDwvcGFy YT4KKworICA8dGFibGU+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcGVyaW9kPC9zdHJ1 Y3RuYW1lPiBDb2x1bW5zPC90aXRsZT4KKworICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICA8 dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIENvbHVtbiBU eXBlCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBEZXNjcmlwdGlvbgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisKKyAg ICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBSb3cgaWRlbnRpZmllcgorICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJuYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4 dDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFBlcmlvZCBu YW1lCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcnJlbGlkPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxp bmtlbmQ9ImNhdGFsb2ctcGctY2xhc3MiPjxzdHJ1Y3RuYW1lPnBnX2NsYXNzPC9zdHJ1Y3Ru YW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9w YXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIHRhYmxlIHRoaXMgcGVyaW9kIGJlbG9u Z3MgdG8KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVyc3RhcnQ8L3N0 cnVjdGZpZWxkPiA8dHlwZT5pbnQyPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5r IGxpbmtlbmQ9ImNhdGFsb2ctcGctYXR0cmlidXRlIj48c3RydWN0bmFtZT5wZ19hdHRyaWJ1 dGU8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0bnVtPC9zdHJ1Y3RmaWVs ZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgbnVtYmVyIG9m IHRoZSBzdGFydCBjb2x1bW4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K KworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ cGVyZW5kPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MjwvdHlwZT4KKyAgICAgICAocmVmZXJl bmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF0dHJpYnV0ZSI+PHN0cnVjdG5hbWU+ cGdfYXR0cmlidXRlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPmF0dG51bTwv c3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhl IG51bWJlciBvZiB0aGUgZW5kIGNvbHVtbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5wZXJyYW5nZTwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDI8L3R5cGU+CisgICAg ICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1hdHRyaWJ1dGUiPjxz dHJ1Y3RuYW1lPnBnX2F0dHJpYnV0ZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVs ZD5hdHRudW08L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgor ICAgICAgIFRoZSBudW1iZXIgb2YgdGhlIDxsaXRlcmFsPkdFTkVSQVRFRDwvbGl0ZXJhbD4g Y29sdW1uIHRoYXQgaW1wbGVtZW50cyB0aGUgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPi4K KyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVyY29uc3RyYWludDwvc3Ry dWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgICAocmVmZXJlbmNlcyA8bGluayBs aW5rZW5kPSJjYXRhbG9nLXBnLWNvbnN0cmFpbnQiPjxzdHJ1Y3RuYW1lPnBnX2NvbnN0cmFp bnQ8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4p CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgT0lEIG9mIHRoZSBw ZXJpb2QncyA8bGl0ZXJhbD5DSEVDSzwvbGl0ZXJhbD4gY29uc3RyYWludAorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3Vw PgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sIGIvZG9j L3NyYy9zZ21sL2RkbC5zZ21sCmluZGV4IGZjMDNhMzQ5ZjBmLi43ZTU1Mzk1OTllMCAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kZGwu c2dtbApAQCAtMTM3NSw2ICsxMzc1LDY0IEBAIENSRUFURSBUQUJMRSBjaXJjbGVzICgKICAg PC9zZWN0Mj4KICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJkZGwtcGVyaW9kcyI+CisgIDx0 aXRsZT5QZXJpb2RzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFBlcmlvZHMgYXJlIGRlZmlu aXRpb25zIG9uIGEgdGFibGUgdGhhdCBhc3NvY2lhdGUgYSBwZXJpb2QgbmFtZSB3aXRoIGEg c3RhcnQKKyAgIGNvbHVtbiBhbmQgYW4gZW5kIGNvbHVtbi4gIEJvdGggY29sdW1ucyBtdXN0 IGJlIG9mIGV4YWN0bHkgdGhlIHNhbWUgdHlwZQorICAgKGluY2x1ZGluZyBjb2xsYXRpb24p LCBoYXZlIGEgYnRyZWUgb3BlcmF0b3IgY2xhc3MsIGFuZCB0aGUgc3RhcnQgY29sdW1uCisg ICB2YWx1ZSBtdXN0IGJlIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZW5kIGNvbHVtbiB2YWx1 ZS4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBw ZXJpb2RzOiBhcHBsaWNhdGlvbiBhbmQgc3lzdGVtLiAgU3lzdGVtIHBlcmlvZHMgYXJlCisg ICBkaXN0aW5ndWlzaGVkIGJ5IHRoZWlyIG5hbWUgd2hpY2ggbXVzdCBiZSA8bGl0ZXJhbD5T WVNURU1fVElNRTwvbGl0ZXJhbD4uICBBbnkKKyAgIG90aGVyIG5hbWUgaXMgYW4gYXBwbGlj YXRpb24gcGVyaW9kLgorICA8L3BhcmE+CisKKyAgPHNlY3QyIGlkPSJkZGwtcGVyaW9kcy1h cHBsaWNhdGlvbi1wZXJpb2RzIj4KKyAgPHRpdGxlPkFwcGxpY2F0aW9uIFBlcmlvZHM8L3Rp dGxlPgorCisgICA8aW5kZXh0ZXJtPgorICAgIDxwcmltYXJ5PnBlcmlvZDwvcHJpbWFyeT4K KyAgICA8c2Vjb25kYXJ5PmFwcGxpY2F0aW9uPC9zZWNvbmRhcnk+CisgICA8L2luZGV4dGVy bT4KKworICAgPHBhcmE+CisgICAgQXBwbGljYXRpb24gcGVyaW9kcyBhcmUgZGVmaW5lZCBv biBhIHRhYmxlIHVzaW5nIHRoZSBmb2xsb3dpbmcgc3ludGF4OgorICAgPC9wYXJhPgorCis8 cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgVEFCTEUgYmlsbGluZ19hZGRyZXNzZXMgKAorICBj dXN0b21lcl9pZCBpbnRlZ2VyLAorICBhZGRyZXNzX2lkIGludGVnZXIsCisgIHZhbGlkX2Zy b20gZGF0ZSwKKyAgdmFsaWRfdG8gZGF0ZSwKKyAgPGVtcGhhc2lzPlBFUklPRCBGT1IgdmFs aWRpdHkgKHZhbGlkX2Zyb20sIHZhbGlkX3RvKTwvZW1waGFzaXM+CispOworPC9wcm9ncmFt bGlzdGluZz4KKworICAgPHBhcmE+CisgICAgQXBwbGljYXRpb24gcGVyaW9kcyBjYW4gYmUg dXNlZCB0byBkZWZpbmUgdGVtcG9yYWwgcHJpbWFyeSBhbmQgZm9yZWlnbiBrZXlzLgorICAg IEFueSB0YWJsZSB3aXRoIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkgaXMgYSB0ZW1wb3JhbCB0 YWJsZSBhbmQgc3VwcG9ydHMgdGVtcG9yYWwgdXBkYXRlIGFuZCBkZWxldGUgY29tbWFuZHMu CisgICA8L3BhcmE+CisgIDwvc2VjdDI+CisKKyAgPHNlY3QyIGlkPSJkZGwtcGVyaW9kcy1z eXN0ZW0tcGVyaW9kcyI+CisgICA8dGl0bGU+U3lzdGVtIFBlcmlvZHM8L3RpdGxlPgorCisg ICA8aW5kZXh0ZXJtPgorICAgIDxwcmltYXJ5PnBlcmlvZDwvcHJpbWFyeT4KKyAgICA8c2Vj b25kYXJ5PnN5c3RlbTwvc2Vjb25kYXJ5PgorICAgPC9pbmRleHRlcm0+CisKKyAgIDxwYXJh PgorICAgIFBlcmlvZHMgZm9yIDxsaXRlcmFsPlNZU1RFTV9USU1FPC9saXRlcmFsPiBhcmUg Y3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZC4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKyA8 L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJkZGwtc3lzdGVtLWNvbHVtbnMiPgogICA8dGl0bGU+ U3lzdGVtIENvbHVtbnM8L3RpdGxlPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvaW5m b3JtYXRpb25fc2NoZW1hLnNnbWwgYi9kb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1h LnNnbWwKaW5kZXggOWU2NmJlNGU4M2QuLjU1OGNjN2IzZjE1IDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2lu Zm9ybWF0aW9uX3NjaGVtYS5zZ21sCkBAIC00MTcxLDYgKzQxNzEsNjkgQEAgT1JERVIgQlkg Yy5vcmRpbmFsX3Bvc2l0aW9uOwogICA8L3RhYmxlPgogIDwvc2VjdDE+CiAKKyA8c2VjdDEg aWQ9ImluZm9zY2hlbWEtcGVyaW9kcyI+CisgIDx0aXRsZT48bGl0ZXJhbD5wZXJpb2RzPC9s aXRlcmFsPjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGUgdmlldyA8bGl0ZXJhbD5wYXJh bWV0ZXJzPC9saXRlcmFsPiBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgIHBl cmlvZHMgb2YgYWxsIHRhYmxlcyBpbiB0aGUgY3VycmVudCBkYXRhYmFzZS4gIFRoZSBzdGFy dCBhbmQgZW5kIGNvbHVtbgorICAgbmFtZXMgYXJlIG9ubHkgc2hvd24gaWYgdGhlIGN1cnJl bnQgdXNlciBoYXMgYWNjZXNzIHRvIHRoZW0gKGJ5IHdheSBvZiBiZWluZworICAgdGhlIG93 bmVyIG9yIGhhdmluZyBzb21lIHByaXZpbGVnZSkuCisgIDwvcGFyYT4KKworICA8dGFibGU+ CisgICA8dGl0bGU+PGxpdGVyYWw+cGVyaW9kczwvbGl0ZXJhbD4gQ29sdW1uczwvdGl0bGU+ CisKKyAgIDx0Z3JvdXAgY29scz0iMyI+CisgICAgPHRoZWFkPgorICAgICA8cm93PgorICAg ICAgPGVudHJ5Pk5hbWU8L2VudHJ5PgorICAgICAgPGVudHJ5PkRhdGEgVHlwZTwvZW50cnk+ CisgICAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8 L3RoZWFkPgorCisgICAgPHRib2R5PgorICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRl cmFsPnRhYmxlX2NhdGFsb2c8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlw ZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5hbWUgb2Yg dGhlIGRhdGFiYXNlIGNvbnRhaW5pbmcgdGhlIHBlcmlvZCAoYWx3YXlzIHRoZSBjdXJyZW50 IGRhdGFiYXNlKTwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8 ZW50cnk+PGxpdGVyYWw+dGFibGVfc2NoZW1hPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8 ZW50cnk+PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT5OYW1lIG9mIHRoZSBzY2hlbWEgY29udGFpbmluZyB0aGUgcGVyaW9kPC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD50YWJsZV9u YW1lPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+c3FsX2lkZW50aWZp ZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSB0YWJsZSBjb250 YWluaW5nIHRoZSBwZXJpb2Q8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93Pgor ICAgICAgPGVudHJ5PjxsaXRlcmFsPnBlcmlvZF9uYW1lPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICA8ZW50cnk+PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAg IDxlbnRyeT5OYW1lIG9mIHRoZSBwZXJpb2Q8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAg ICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPnN0YXJ0X2NvbHVtbl9uYW1lPC9saXRl cmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+ PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBzdGFydCBjb2x1bW4gZm9yIHRo ZSBwZXJpb2Q8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5PjxsaXRlcmFsPmVuZF9jb2x1bW5fbmFtZTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg PGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50 cnk+TmFtZSBvZiB0aGUgZW5kIGNvbHVtbiBmb3IgdGhlIHBlcmlvZDwvZW50cnk+CisgICAg IDwvcm93PgorICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKyA8L3Nl Y3QxPgorCiAgPHNlY3QxIGlkPSJpbmZvc2NoZW1hLXJlZmVyZW50aWFsLWNvbnN0cmFpbnRz Ij4KICAgPHRpdGxlPjxsaXRlcmFsPnJlZmVyZW50aWFsX2NvbnN0cmFpbnRzPC9saXRlcmFs PjwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRleCA5NjcwNjcx MTA3ZS4uZWNhOWMzYmE1NDUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJf dGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKQEAg LTYxLDYgKzYxLDggQEAgQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgQUxURVIgQ09OU1RS QUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9y ZXBsYWNlYWJsZT4gWyBERUZFUlJBQkxFIHwgTk9UIERFRkVSUkFCTEUgXSBbIElOSVRJQUxM WSBERUZFUlJFRCB8IElOSVRJQUxMWSBJTU1FRElBVEUgXQogICAgIFZBTElEQVRFIENPTlNU UkFJTlQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwv cmVwbGFjZWFibGU+CiAgICAgRFJPUCBDT05TVFJBSU5UIFsgSUYgRVhJU1RTIF0gIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxl PiBbIFJFU1RSSUNUIHwgQ0FTQ0FERSBdCisgICAgQUREIFBFUklPRCBGT1IgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gKCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRfY29sdW1uPC9yZXBsYWNlYWJsZT4s IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lbmRfY29sdW1uPC9yZXBsYWNlYWJs ZT4gKSBbIFdJVEggKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX29w dGlvbjwvcmVwbGFjZWFibGU+ID0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZh bHVlPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCisgICAgRFJPUCBQRVJJT0QgRk9SIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+ IFsgUkVTVFJJQ1QgfCBDQVNDQURFIF0KICAgICBESVNBQkxFIFRSSUdHRVIgWyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJpZ2dlcl9uYW1lPC9yZXBsYWNlYWJsZT4gfCBB TEwgfCBVU0VSIF0KICAgICBFTkFCTEUgVFJJR0dFUiBbIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj50cmlnZ2VyX25hbWU8L3JlcGxhY2VhYmxlPiB8IEFMTCB8IFVTRVIgXQog ICAgIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRyaWdnZXJfbmFtZTwvcmVwbGFjZWFibGU+CkBAIC01ODUsNiArNTg3LDI5IEBAIFdJ VEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xp dGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlz dGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJsZS1kZXNjLWFk ZC1wZXJpb2QiPgorICAgIDx0ZXJtPjxsaXRlcmFsPkFERCBQRVJJT0QgRk9SPC9saXRlcmFs PjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3Jt IGFkZHMgYSBuZXcgcGVyaW9kIHRvIGEgdGFibGUgdXNpbmcgdGhlIHNhbWUgc3ludGF4IGFz CisgICAgICA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRldGFibGUiLz4uCisgICAgIDwvcGFy YT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0 ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2MtZHJvcC1wZXJpb2QiPgorICAgIDx0ZXJt PjxsaXRlcmFsPkRST1AgUEVSSU9EIEZPUjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBkcm9wcyB0aGUgc3BlY2lmaWVk IHBlcmlvZCBvbiBhIHRhYmxlLiAgVGhlIHN0YXJ0IGFuZCBlbmQKKyAgICAgIGNvbHVtbnMg d2lsbCBub3QgYmUgZHJvcHBlZCBieSB0aGlzIGNvbW1hbmQgYnV0IHRoZQorICAgICAgPGxp dGVyYWw+Q0hFQ0s8L2xpdGVyYWw+IGNvbnN0cmFpbnQgd2lsbCBiZS4gIFlvdSB3aWxsIG5l ZWQgdG8gc2F5CisgICAgICA8bGl0ZXJhbD5DQVNDQURFPC9saXRlcmFsPiBpZiBhbnl0aGlu ZyBvdXRzaWRlIHRoZSB0YWJsZSBkZXBlbmRzIG9uIHRoZQorICAgICAgY29sdW1uLgorICAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8 dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJsZS1kZXNjLWRpc2FibGUtZW5hYmxlLXRy aWdnZXIiPgogICAgIDx0ZXJtPjxsaXRlcmFsPkRJU0FCTEU8L2xpdGVyYWw+LzxsaXRlcmFs PkVOQUJMRSBbIFJFUExJQ0EgfCBBTFdBWVMgXSBUUklHR0VSPC9saXRlcmFsPjwvdGVybT4K ICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvbW1lbnQu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sCmluZGV4IDViNDNjNTZiMTMz Li40OWMyZGY5OTQ0OSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKQEAgLTQ0LDYgKzQ0LDcg QEAgQ09NTUVOVCBPTgogICBPUEVSQVRPUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+b3BlcmF0b3JfbmFtZTwvcmVwbGFjZWFibGU+ICg8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bGVmdF90eXBlPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5yaWdodF90eXBlPC9yZXBsYWNlYWJsZT4pIHwKICAgT1BFUkFUT1IgQ0xB U1MgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNl YWJsZT4gVVNJTkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21ldGhv ZDwvcmVwbGFjZWFibGU+IHwKICAgT1BFUkFUT1IgRkFNSUxZIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5vYmplY3RfbmFtZTwvcmVwbGFjZWFibGU+IFVTSU5HIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9tZXRob2Q8L3JlcGxhY2VhYmxlPiB8Cisg IFBFUklPRCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVsYXRpb25fbmFtZTwv cmVwbGFjZWFibGU+LjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfbmFt ZTwvcmVwbGFjZWFibGU+IHwKICAgUE9MSUNZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wb2xpY3lfbmFtZTwvcmVwbGFjZWFibGU+IE9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gfAogICBbIFBST0NFRFVSQUwg XSBMQU5HVUFHRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b2JqZWN0X25hbWU8 L3JlcGxhY2VhYmxlPiB8CiAgIFBST0NFRFVSRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cHJvY2VkdXJlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggWyBbIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5hcmdtb2RlPC9yZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hcmduYW1lPC9yZXBsYWNlYWJsZT4gXSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YXJndHlwZTwvcmVwbGFjZWFibGU+IFssIC4uLl0g XSApIF0gfApAQCAtMzQxLDYgKzM0Miw3IEBAIENPTU1FTlQgT04gT1BFUkFUT1IgXiAodGV4 dCwgdGV4dCkgSVMgJ1BlcmZvcm1zIGludGVyc2VjdGlvbiBvZiB0d28gdGV4dHMnOwogQ09N TUVOVCBPTiBPUEVSQVRPUiAtIChOT05FLCBpbnRlZ2VyKSBJUyAnVW5hcnkgbWludXMnOwog Q09NTUVOVCBPTiBPUEVSQVRPUiBDTEFTUyBpbnQ0b3BzIFVTSU5HIGJ0cmVlIElTICc0IGJ5 dGUgaW50ZWdlciBvcGVyYXRvcnMgZm9yIGJ0cmVlcyc7CiBDT01NRU5UIE9OIE9QRVJBVE9S IEZBTUlMWSBpbnRlZ2VyX29wcyBVU0lORyBidHJlZSBJUyAnYWxsIGludGVnZXIgb3BlcmF0 b3JzIGZvciBidHJlZXMnOworQ09NTUVOVCBPTiBQRVJJT0QgbXlfdGFibGUubXlfY29sdW1u IElTICdTYWxlcyBwcm9tb3Rpb24gdmFsaWRpdHknOwogQ09NTUVOVCBPTiBQT0xJQ1kgbXlf cG9saWN5IE9OIG15dGFibGUgSVMgJ0ZpbHRlciByb3dzIGJ5IHVzZXJzJzsKIENPTU1FTlQg T04gUFJPQ0VEVVJFIG15X3Byb2MgKGludGVnZXIsIGludGVnZXIpIElTICdSdW5zIGEgcmVw b3J0JzsKIENPTU1FTlQgT04gUFVCTElDQVRJT04gYWxsdGFibGVzIElTICdQdWJsaXNoZXMg YWxsIG9wZXJhdGlvbnMgb24gYWxsIHRhYmxlcyc7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFi bGUuc2dtbAppbmRleCA2OTA4MTc1OWQ0My4uNzliYmQyNDAyYTAgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfdGFibGUuc2dtbApAQCAtMjMsNiArMjMsNyBAQCBQb3N0Z3JlU1FMIGRvY3Vt ZW50YXRpb24KIDxzeW5vcHNpcz4KIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRF TVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJU1RTIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxl PiAoIFsKICAgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8 L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV90eXBl PC9yZXBsYWNlYWJsZT4gWyBTVE9SQUdFIHsgUExBSU4gfCBFWFRFUk5BTCB8IEVYVEVOREVE IHwgTUFJTiB8IERFRkFVTFQgfSBdIFsgQ09NUFJFU1NJT04gPHJlcGxhY2VhYmxlPmNvbXBy ZXNzaW9uX21ldGhvZDwvcmVwbGFjZWFibGU+IF0gWyBDT0xMQVRFIDxyZXBsYWNlYWJsZT5j b2xsYXRpb248L3JlcGxhY2VhYmxlPiBdIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9jb25zdHJhaW50PC9yZXBsYWNlYWJsZT4gWyAuLi4gXSBdCisgICAgfCA8 cmVwbGFjZWFibGU+cGVyaW9kX2RlZmluaXRpb248L3JlcGxhY2VhYmxlPgogICAgIHwgPHJl cGxhY2VhYmxlPnRhYmxlX2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPgogICAgIHwgTElLRSA8 cmVwbGFjZWFibGU+c291cmNlX3RhYmxlPC9yZXBsYWNlYWJsZT4gWyA8cmVwbGFjZWFibGU+ bGlrZV9vcHRpb248L3JlcGxhY2VhYmxlPiAuLi4gXSB9CiAgICAgWywgLi4uIF0KQEAgLTM3 LDYgKzM4LDcgQEAgQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwg VEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWEkKIENSRUFURSBbIFsgR0xP QkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUg WyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxl X25hbWU8L3JlcGxhY2VhYmxlPgogICAgIE9GIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj50eXBlX25hbWU8L3JlcGxhY2VhYmxlPiBbICgKICAgeyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbIFdJVEggT1BUSU9O UyBdIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9jb25zdHJhaW50 PC9yZXBsYWNlYWJsZT4gWyAuLi4gXSBdCisgICAgfCA8cmVwbGFjZWFibGU+cGVyaW9kX2Rl ZmluaXRpb248L3JlcGxhY2VhYmxlPgogICAgIHwgPHJlcGxhY2VhYmxlPnRhYmxlX2NvbnN0 cmFpbnQ8L3JlcGxhY2VhYmxlPiB9CiAgICAgWywgLi4uIF0KICkgXQpAQCAtNDksNiArNTEs NyBAQCBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBURU1QIH0g fCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSQogQ1JFQVRFIFsgWyBHTE9CQUwgfCBM T0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5P VCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwv cmVwbGFjZWFibGU+CiAgICAgUEFSVElUSU9OIE9GIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJlbnRfdGFibGU8L3JlcGxhY2VhYmxlPiBbICgKICAgeyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbIFdJVEgg T1BUSU9OUyBdIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9jb25z dHJhaW50PC9yZXBsYWNlYWJsZT4gWyAuLi4gXSBdCisgICAgfCA8cmVwbGFjZWFibGU+cGVy aW9kX2RlZmluaXRpb248L3JlcGxhY2VhYmxlPgogICAgIHwgPHJlcGxhY2VhYmxlPnRhYmxl X2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPiB9CiAgICAgWywgLi4uIF0KICkgXSB7IEZPUiBW QUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9z cGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0KQEAgLTczLDYgKzc2LDExIEBAIENSRUFU RSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VE IF0gVEFCTEUgWyBJRiBOT1QgRVhJCiAgICAgWyBPTiBERUxFVEUgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0gWyBP TiBVUERBVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2Fj dGlvbjwvcmVwbGFjZWFibGU+IF0gfQogWyBERUZFUlJBQkxFIHwgTk9UIERFRkVSUkFCTEUg XSBbIElOSVRJQUxMWSBERUZFUlJFRCB8IElOSVRJQUxMWSBJTU1FRElBVEUgXQogCis8cGhy YXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX2RlZmluaXRp b248L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKworUEVSSU9EIEZPUiB7IDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+IHwgU1lT VEVNX1RJTUUgfSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFt ZTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u X25hbWU8L3JlcGxhY2VhYmxlPiApCitbIFdJVEggKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGVyaW9kX29wdGlvbjwvcmVwbGFjZWFibGU+ID0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCisKIDxw aHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9jb25zdHJh aW50PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CiAKIFsgQ09OU1RSQUlOVCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT4g XQpAQCAtMTQwLDYgKzE0OCwxNCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAg bmFtZSBhcyBhbnkgZXhpc3RpbmcgZGF0YSB0eXBlIGluIHRoZSBzYW1lIHNjaGVtYS4KICAg PC9wYXJhPgogCisgIDxwYXJhPgorICAgUGVyaW9kcyBteSBiZSBkZWZpbmVkIG9uIHRhYmxl cywgc3BlY2lmeWluZyB0aGF0IHR3byBleGlzdGluZyBjb2x1bW5zCisgICByZXByZXNlbnQg c3RhcnQgYW5kIGVuZCB2YWx1ZXMgZm9yIHRoZSBwZXJpb2QuICBQZXJpb2RzIG1heSBoYXZl IGFueSBuYW1lCisgICB0aGF0IGRvZXNuJ3QgY29uZmxpY3Qgd2l0aCBhIGNvbHVtbiBuYW1l LCBidXQgdGhlIG5hbWUKKyAgIDxsaXRlcmFsPlNZU1RFTV9USU1FPC9saXRlcmFsPiBpcyBz cGVjaWFsLCB1c2VkIGZvciB2ZXJzaW9uaW5nIHRhYmxlcy4KKyAgIFN5c3RlbSBwZXJpb2Rz IGFyZSBub3QgeWV0IGltcGxlbWVudGVkLiAgU2VlIDx4cmVmIGxpbmtlbmQ9ImRkbC1wZXJp b2RzIi8+IGZvciBtb3JlIGRldGFpbHMuCisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRo ZSBvcHRpb25hbCBjb25zdHJhaW50IGNsYXVzZXMgc3BlY2lmeSBjb25zdHJhaW50cyAodGVz dHMpIHRoYXQKICAgIG5ldyBvciB1cGRhdGVkIHJvd3MgbXVzdCBzYXRpc2Z5IGZvciBhbiBp bnNlcnQgb3IgdXBkYXRlIG9wZXJhdGlvbgpAQCAtODAwLDYgKzgxNiwzMCBAQCBXSVRIICgg TU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFs PC9yZXBsYWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRy eT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxlLXBhcm1zLXBlcmlv ZCI+CisgICAgPHRlcm0+PGxpdGVyYWw+UEVSSU9EIEZPUiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiApIFsgV0lU SCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9yZXBs YWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxh Y2VhYmxlPiBbLCAuLi4gXSApIF08L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KyAgICAgPHBhcmE+CisgICAgICBBIHBlcmlvZCBkZWZpbml0aW9uIGdpdmVzIHNlbWFudGlj IG1lYW5pbmcgdG8gdHdvIGV4aXN0aW5nIGNvbHVtbnMgb2YKKyAgICAgIHRoZSB0YWJsZS4g IEl0IGRlZmluZXMgYSAic3RhcnQgY29sdW1uIiBhbmQgYW4gImVuZCBjb2x1bW4iIHdoZXJl IHRoZQorICAgICAgc3RhcnQgdmFsdWUgaXMgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBlbmQg dmFsdWUuICBBCisgICAgICA8bGl0ZXJhbD5DSEVDSzwvbGl0ZXJhbD4gY29uc3RyYWludCBp cyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdG8gZW5mb3JjZQorICAgICAgdGhpcy4gWW91IGNh biBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoYXQgY29uc3RyYWludCB3aXRoIHRoZQorICAgICAg PGxpdGVyYWw+Y2hlY2tfY29uc3RyYWludF9uYW1lPC9saXRlcmFsPiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX29wdGlvbjwvcmVwbGFjZWFibGU+LgorICAgICA8 L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBCb3RoIGNvbHVtbnMgbXVzdCBoYXZlIGV4 YWN0bHkgdGhlIHNhbWUgdHlwZSBhbmQgbXVzdCBoYXZlIGEgcmFuZ2UgdHlwZQorICAgICAg ZGVmaW5lZCBmcm9tIHRoZWlyIGJhc2UgdHlwZS4gIElmIHRoZXJlIGFyZSBzZXZlcmFsIHJh bmdlIHR5cGVzIGZvciB0aGF0CisgICAgICBiYXNlIHR5cGUsIHlvdSBtdXN0IHNwZWNpZnkg d2hpY2ggb25lIHlvdSB3YW50IGJ5IHVzaW5nIHRoZQorICAgICAgPGxpdGVyYWw+cmFuZ2V0 eXBlPC9saXRlcmFsPiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX29w dGlvbjwvcmVwbGFjZWFibGU+LgorICAgICAgQW55IGJhc2UgdHlwZSBpcyBhbGxvd2VkLCBh cyBsb25nIGFzIGl0IGhhcyBhIHJhbmdlIHR5cGUsIGFsdGhvdWdoIGl0IGlzCisgICAgICBl eHBlY3RlZCB0aGF0IG1vc3QgcGVyaW9kcyB3aWxsIHVzZSB0ZW1wb3JhbCB0eXBlcyBsaWtl IDxsaXRlcmFsPnRpbWVzdGFtcHR6PC9saXRlcmFsPgorICAgICAgb3IgPGxpdGVyYWw+ZGF0 ZTwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJs aXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGV0YWJsZS1wYXJt cy1jb25zdHJhaW50Ij4KICAgICA8dGVybT48bGl0ZXJhbD5DT05TVFJBSU5UIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxlPjwv bGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3JlZi9kZWxldGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwKaW5k ZXggMWM3Mjc1MzQxZWEuLmIzODhiZTc1MDhjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2RlbGV0ZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwKQEAg LTU2LDcgKzU2LDggQEAgREVMRVRFIEZST00gWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICoKICAgPC9wYXJhPgog CiAgIDxwYXJhPgotICAgSWYgdGhlIHRhYmxlIGhhcyBhIHJhbmdlIG9yIG11bHRpcmFuZ2Ug Y29sdW1uLAorICAgSWYgdGhlIHRhYmxlIGhhcyBhIHJhbmdlIG9yIG11bHRpcmFuZ2UgY29s dW1uLCBvciBhCisgICA8bGluayBsaW5rZW5kPSJkZGwtcGVyaW9kcy1hcHBsaWNhdGlvbi1w ZXJpb2RzIj48bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+PC9saW5rPiwKICAgIHlvdSBtYXkg c3VwcGx5IGEgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGNsYXVzZSwgYW5k IHlvdXIgZGVsZXRlIHdpbGwKICAgIG9ubHkgYWZmZWN0IHJvd3MgdGhhdCBvdmVybGFwIHRo ZSBnaXZlbiBpbnRlcnZhbC4gRnVydGhlcm1vcmUsIGlmIGEgcm93J3Mgc3BhbgogICAgZXh0 ZW5kcyBvdXRzaWRlIHRoZSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gYm91 bmRzLCB0aGVuIHlvdXIgZGVsZXRlCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3Vw ZGF0ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbAppbmRleCA3MWEwMjY5 N2YyZC4uYTFiODg1NzFkMGEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvdXBkYXRl LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbApAQCAtNTMsNyArNTMs OCBAQCBVUERBVEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRh YmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbCiAgIDwvcGFyYT4KIAogICA8cGFyYT4K LSAgIElmIHRoZSB0YWJsZSBoYXMgYSByYW5nZSBvciBtdWx0aXJhbmdlIGNvbHVtbiwKKyAg IElmIHRoZSB0YWJsZSBoYXMgYSByYW5nZSBvciBtdWx0aXJhbmdlIGNvbHVtbiwgb3IgYQor ICAgPGxpbmsgbGlua2VuZD0iZGRsLXBlcmlvZHMtYXBwbGljYXRpb24tcGVyaW9kcyI+PGxp dGVyYWw+UEVSSU9EPC9saXRlcmFsPjwvbGluaz4sCiAgICB5b3UgbWF5IHN1cHBseSBhIDxs aXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBjbGF1c2UsIGFuZCB5b3VyIHVwZGF0 ZSB3aWxsCiAgICBvbmx5IGFmZmVjdCByb3dzIHRoYXQgb3ZlcmxhcCB0aGUgZ2l2ZW4gaW50 ZXJ2YWwuIEZ1cnRoZXJtb3JlLCBpZiBhIHJvdydzIHNwYW4KICAgIGV4dGVuZHMgb3V0c2lk ZSB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGJvdW5kcywgdGhlbiB5 b3VyIHVwZGF0ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZSBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKaW5kZXggZDZiMjNiNGJmZDUuLmIzYjUx OWQ5ZTRjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKQEAgLTM5LDYgKzM5LDcgQEAgT0JKUyA9 IFwKIAlwZ19uYW1lc3BhY2UubyBcCiAJcGdfb3BlcmF0b3IubyBcCiAJcGdfcGFyYW1ldGVy X2FjbC5vIFwKKwlwZ19wZXJpb2QubyBcCiAJcGdfcHJvYy5vIFwKIAlwZ19wdWJsaWNhdGlv bi5vIFwKIAlwZ19yYW5nZS5vIFwKQEAgLTExMSw2ICsxMTIsNyBAQCBDQVRBTE9HX0hFQURF UlMgOj0gXAogCXBnX2NvbGxhdGlvbi5oIFwKIAlwZ19wYXJhbWV0ZXJfYWNsLmggXAogCXBn X3BhcnRpdGlvbmVkX3RhYmxlLmggXAorCXBnX3BlcmlvZC5oIFwKIAlwZ19yYW5nZS5oIFwK IAlwZ190cmFuc2Zvcm0uaCBcCiAJcGdfc2VxdWVuY2UuaCBcCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL2FjbGNoay5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsu YwppbmRleCA1OTBhZmZiNzlhNS4uNTBjYTcwNmExNjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvYWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsu YwpAQCAtMjgxNyw2ICsyODE3LDcgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVy ciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9ERUZBVUxUOgogCQkJ CQljYXNlIE9CSkVDVF9ERUZBQ0w6CiAJCQkJCWNhc2UgT0JKRUNUX0RPTUNPTlNUUkFJTlQ6 CisJCQkJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJCQkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJ T05fTkFNRVNQQUNFOgogCQkJCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6CiAJCQkJ CWNhc2UgT0JKRUNUX1JPTEU6CkBAIC0yOTU4LDYgKzI5NTksNyBAQCBhY2xjaGVja19lcnJv cihBY2xSZXN1bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNhc2UgT0JK RUNUX0RFRkFDTDoKIAkJCQkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKIAkJCQkJY2Fz ZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJCQkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQkJ CQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CiAJCQkJCWNhc2UgT0JKRUNU X1BVQkxJQ0FUSU9OX1JFTDoKIAkJCQkJY2FzZSBPQkpFQ1RfUk9MRToKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9kZXBlbmRlbmN5LmMKaW5kZXggZTc0MmM3OGVhMzUuLjNlMWQyY2JjNjkyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgImNh dGFsb2cvcGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5Lmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wYXJhbWV0ZXJfYWNsLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BvbGljeS5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGlj YXRpb24uaCIKQEAgLTE1NCw2ICsxNTUsNyBAQCBzdGF0aWMgY29uc3QgT2lkIG9iamVjdF9j bGFzc2VzW10gPSB7CiAJQ2FzdFJlbGF0aW9uSWQsCQkJCS8qIE9DTEFTU19DQVNUICovCiAJ Q29sbGF0aW9uUmVsYXRpb25JZCwJCS8qIE9DTEFTU19DT0xMQVRJT04gKi8KIAlDb25zdHJh aW50UmVsYXRpb25JZCwJCS8qIE9DTEFTU19DT05TVFJBSU5UICovCisJUGVyaW9kUmVsYXRp b25JZCwJCQkvKiBPQ0xBU1NfUEVSSU9EICovCiAJQ29udmVyc2lvblJlbGF0aW9uSWQsCQkv KiBPQ0xBU1NfQ09OVkVSU0lPTiAqLwogCUF0dHJEZWZhdWx0UmVsYXRpb25JZCwJCS8qIE9D TEFTU19ERUZBVUxUICovCiAJTGFuZ3VhZ2VSZWxhdGlvbklkLAkJCS8qIE9DTEFTU19MQU5H VUFHRSAqLwpAQCAtMTQ0Myw2ICsxNDQ1LDEwIEBAIGRvRGVsZXRpb24oY29uc3QgT2JqZWN0 QWRkcmVzcyAqb2JqZWN0LCBpbnQgZmxhZ3MpCiAJCQlSZW1vdmVDb25zdHJhaW50QnlJZChv YmplY3QtPm9iamVjdElkKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0NMQVNTX1BFUklPRDoK KwkJCVJlbW92ZVBlcmlvZEJ5SWQob2JqZWN0LT5vYmplY3RJZCk7CisJCQlicmVhazsKKwog CQljYXNlIE9DTEFTU19ERUZBVUxUOgogCQkJUmVtb3ZlQXR0ckRlZmF1bHRCeUlkKG9iamVj dC0+b2JqZWN0SWQpOwogCQkJYnJlYWs7CkBAIC0yODYyLDYgKzI4NjgsOSBAQCBnZXRPYmpl Y3RDbGFzcyhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QpCiAJCWNhc2UgQ29uc3RyYWlu dFJlbGF0aW9uSWQ6CiAJCQlyZXR1cm4gT0NMQVNTX0NPTlNUUkFJTlQ7CiAKKwkJY2FzZSBQ ZXJpb2RSZWxhdGlvbklkOgorCQkJcmV0dXJuIE9DTEFTU19QRVJJT0Q7CisKIAkJY2FzZSBD b252ZXJzaW9uUmVsYXRpb25JZDoKIAkJCXJldHVybiBPQ0xBU1NfQ09OVkVSU0lPTjsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL2hlYXAuYwppbmRleCBjNzNmN2JjZDAxMS4uZDAyY2YwZGE4ZmIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvaGVhcC5jCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19uYW1l c3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3BhcnRpdGlvbmVkX3RhYmxlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19w ZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpYy5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf dGFibGVzcGFjZS5oIgpAQCAtMjA0MCw2ICsyMDQxLDgxIEBAIFNldEF0dHJNaXNzaW5nKE9p ZCByZWxpZCwgY2hhciAqYXR0bmFtZSwgY2hhciAqdmFsdWUpCiAJdGFibGVfY2xvc2UodGFi bGVyZWwsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOwogfQogCisvKgorICogU3RvcmUgYSBwZXJp b2Qgb2YgcmVsYXRpb24gcmVsLgorICoKKyAqIFJldHVybnMgdGhlIE9JRCBvZiB0aGUgbmV3 IHBnX3BlcmlvZCB0dXBsZS4KKyAqLworT2lkCitTdG9yZVBlcmlvZChSZWxhdGlvbiByZWws IGNvbnN0IGNoYXIgKnBlcmlvZG5hbWUsIEF0dHJOdW1iZXIgc3RhcnRudW0sCisJCQlBdHRy TnVtYmVyIGVuZG51bSwgQXR0ck51bWJlciByYW5nZW51bSwgT2lkIGNvbm9pZCkKK3sKKwlE YXR1bQkJdmFsdWVzW05hdHRzX3BnX3BlcmlvZF07CisJYm9vbAkJbnVsbHNbTmF0dHNfcGdf cGVyaW9kXTsKKwlSZWxhdGlvbglwZ19wZXJpb2Q7CisJSGVhcFR1cGxlCXR1cGxlOworCU9p ZAkJCW9pZDsKKwlOYW1lRGF0YQlwZXJuYW1lOworCU9iamVjdEFkZHJlc3MJbXlzZWxmLCBy ZWZlcmVuY2VkOworCisJQXNzZXJ0KHJhbmdlbnVtICE9IEludmFsaWRBdHRyTnVtYmVyKTsK KworCW5hbWVzdHJjcHkoJnBlcm5hbWUsIHBlcmlvZG5hbWUpOworCisJTWVtU2V0KHZhbHVl cywgMCwgc2l6ZW9mKHZhbHVlcykpOworCU1lbVNldChudWxscywgZmFsc2UsIHNpemVvZihu dWxscykpOworCisJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQZXJpb2RSZWxhdGlvbklkLCBS b3dFeGNsdXNpdmVMb2NrKTsKKworCW9pZCA9IEdldE5ld09pZFdpdGhJbmRleChwZ19wZXJp b2QsIEF0dHJEZWZhdWx0T2lkSW5kZXhJZCwgQW51bV9wZ19wZXJpb2Rfb2lkKTsKKwl2YWx1 ZXNbQW51bV9wZ19wZXJpb2Rfb2lkIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKG9pZCk7CisJ dmFsdWVzW0FudW1fcGdfcGVyaW9kX3Blcm5hbWUgLSAxXSA9IE5hbWVHZXREYXR1bSgmcGVy bmFtZSk7CisJdmFsdWVzW0FudW1fcGdfcGVyaW9kX3BlcnJlbGlkIC0gMV0gPSBSZWxhdGlv bkdldFJlbGlkKHJlbCk7CisJdmFsdWVzW0FudW1fcGdfcGVyaW9kX3BlcnN0YXJ0IC0gMV0g PSBzdGFydG51bTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVyZW5kIC0gMV0gPSBlbmRu dW07CisJdmFsdWVzW0FudW1fcGdfcGVyaW9kX3BlcnJhbmdlIC0gMV0gPSByYW5nZW51bTsK Kwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVyY29uc3RyYWludCAtIDFdID0gY29ub2lkOwor CisJdHVwbGUgPSBoZWFwX2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNjcihwZ19wZXJpb2Qp LCB2YWx1ZXMsIG51bGxzKTsKKwlDYXRhbG9nVHVwbGVJbnNlcnQocGdfcGVyaW9kLCB0dXBs ZSk7CisKKwlPYmplY3RBZGRyZXNzU2V0KG15c2VsZiwgUGVyaW9kUmVsYXRpb25JZCwgb2lk KTsKKworCS8qIERyb3AgdGhlIHBlcmlvZCB3aGVuIHRoZSB0YWJsZSBpcyBkcm9wcGVkLiAq LworCU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLCBS ZWxhdGlvbkdldFJlbGlkKHJlbCkpOworCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAm cmVmZXJlbmNlZCwgREVQRU5ERU5DWV9BVVRPKTsKKworCS8qIEZvcmJpZCBkcm9wcGluZyB0 aGUgY29sdW1ucyBvZiB0aGUgcGVyaW9kLiAqLworCU9iamVjdEFkZHJlc3NTdWJTZXQocmVm ZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIHN0 YXJ0bnVtKTsKKwlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERF UEVOREVOQ1lfTk9STUFMKTsKKwlPYmplY3RBZGRyZXNzU3ViU2V0KHJlZmVyZW5jZWQsIFJl bGF0aW9uUmVsYXRpb25JZCwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBlbmRudW0pOworCXJl Y29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9OT1JN QUwpOworCisJLyoKKwkgKiBUaGUgcmFuZ2UgY29sdW1uIGlzIGFuIGltcGxlbWVudGF0aW9u IGRldGFpbCwKKwkgKiBidXQgd2UgY2FuJ3QgdXNlIERFUEVOREVOQ1lfSU5URVJOQUwKKwkg KiBiZWNhdXNlIGRyb3BwaW5nIHRoZSB0YWJsZSB3aWxsIGNoZWNrIGZvciBkZXBlbmRlbmNp ZXMgb24gYWxsIHN1Ym9iamVjdHMgdG9vCisJICogKGluIGZpbmREZXBlbmRlbnRPYmplY3Rz KS4KKwkgKiBCdXQgaWYgd2UgbWFrZSBhbiBBVVRPIGRlcGVuZGVuY3kgb25lIHdheSB3ZSB3 aWxsIGF1dG8tZHJvcCB0aGUgY29sdW1uCisJICogd2hlbiB3ZSBkcm9wIHRoZSBQRVJJT0Qs CisJICogYW5kIGEgTk9STUFMIGRlcGVuZGVuY3kgdGhlIG90aGVyIHdheSB3ZSB3aWxsIGZv cmJpZCBkcm9wcGluZyB0aGUgY29sdW1uIGRpcmVjdGx5LgorCSAqLworCU9iamVjdEFkZHJl c3NTdWJTZXQocmVmZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLCBSZWxhdGlvbkdldFJl bGlkKHJlbCksIHJhbmdlbnVtKTsKKwlyZWNvcmREZXBlbmRlbmN5T24oJnJlZmVyZW5jZWQs ICZteXNlbGYsIERFUEVOREVOQ1lfQVVUTyk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNl bGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05PUk1BTCk7CisKKwkvKgorCSAqIFRoZSBj b25zdHJhaW50IGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwgc28gd2UgbWFyayBpdCBh cyBzdWNoLgorCSAqIChOb3RlIHRoYXQgbXlzZWxmIGFuZCByZWZlcmVuY2VkIGFyZSByZXZl cnNlZCBmb3IgdGhpcyBvbmUuKQorCSAqLworCU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNl ZCwgQ29uc3RyYWludFJlbGF0aW9uSWQsIGNvbm9pZCk7CisJcmVjb3JkRGVwZW5kZW5jeU9u KCZyZWZlcmVuY2VkLCAmbXlzZWxmLCBERVBFTkRFTkNZX0lOVEVSTkFMKTsKKworCXRhYmxl X2Nsb3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gb2lkOwor fQorCiAvKgogICogU3RvcmUgYSBjaGVjay1jb25zdHJhaW50IGV4cHJlc3Npb24gZm9yIHRo ZSBnaXZlbiByZWxhdGlvbi4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L2luZm9ybWF0aW9uX3NjaGVtYS5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0 aW9uX3NjaGVtYS5zcWwKaW5kZXggYzQwMmFlNzI3NDEuLjUwY2EwZDA1Zjg3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsCkBAIC0xMjA3LDcg KzEyMDcsMjggQEAgR1JBTlQgU0VMRUNUIE9OIHBhcmFtZXRlcnMgVE8gUFVCTElDOwogICog UEVSSU9EUyB2aWV3CiAgKi8KIAotLS0gZmVhdHVyZSBub3Qgc3VwcG9ydGVkCitDUkVBVEUg VklFVyBwZXJpb2RzIEFTCisgICAgU0VMRUNUIGN1cnJlbnRfZGF0YWJhc2UoKTo6aW5mb3Jt YXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyIEFTIHRhYmxlX2NhdGFsb2csCisgICAgICAg ICAgIG5jLm5zcG5hbWU6OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRlbnRpZmllciBBUyB0 YWJsZV9zY2hlbWEsCisgICAgICAgICAgIGMucmVsbmFtZTo6aW5mb3JtYXRpb25fc2NoZW1h LnNxbF9pZGVudGlmaWVyIEFTIHRhYmxlX25hbWUsCisgICAgICAgICAgIHAucGVybmFtZTo6 aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyIEFTIHBlcmlvZF9uYW1lLAorICAg ICAgICAgICBDQVNFIFdIRU4gcGdfaGFzX3JvbGUoYy5yZWxvd25lciwgJ1VTQUdFJykKKyAg ICAgICAgICAgICAgICAgIE9SIGhhc19jb2x1bW5fcHJpdmlsZWdlKHNhLmF0dHJlbGlkLCBz YS5hdHRudW0sICdTRUxFQ1QsIElOU0VSVCwgVVBEQVRFLCBSRUZFUkVOQ0VTJykKKyAgICAg ICAgICAgICAgICBUSEVOIHNhLmF0dG5hbWU6OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRl bnRpZmllcgorICAgICAgICAgICBFTkQgQVMgc3RhcnRfY29sdW1uX25hbWUsCisgICAgICAg ICAgIENBU0UgV0hFTiBwZ19oYXNfcm9sZShjLnJlbG93bmVyLCAnVVNBR0UnKQorICAgICAg ICAgICAgICAgICAgT1IgaGFzX2NvbHVtbl9wcml2aWxlZ2UoZWEuYXR0cmVsaWQsIGVhLmF0 dG51bSwgJ1NFTEVDVCwgSU5TRVJULCBVUERBVEUsIFJFRkVSRU5DRVMnKQorICAgICAgICAg ICAgICAgIFRIRU4gZWEuYXR0bmFtZTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlm aWVyCisgICAgICAgICAgIEVORCBBUyBlbmRfY29sdW1uX25hbWUKKyAgICBGUk9NIHBnX3Bl cmlvZCBBUyBwCisgICAgSk9JTiBwZ19jbGFzcyBBUyBjIE9OIGMub2lkID0gcC5wZXJyZWxp ZAorICAgIEpPSU4gcGdfbmFtZXNwYWNlIEFTIG5jIE9OIG5jLm9pZCA9IGMucmVsbmFtZXNw YWNlCisgICAgSk9JTiBwZ19hdHRyaWJ1dGUgQVMgc2EgT04gKHNhLmF0dHJlbGlkLCBzYS5h dHRudW0pID0gKHAucGVycmVsaWQsIHAucGVyc3RhcnQpCisgICAgSk9JTiBwZ19hdHRyaWJ1 dGUgQVMgZWEgT04gKGVhLmF0dHJlbGlkLCBlYS5hdHRudW0pID0gKHAucGVycmVsaWQsIHAu cGVyZW5kKQorICAgIFdIRVJFIE5PVCBwZ19pc19vdGhlcl90ZW1wX3NjaGVtYShuYy5vaWQp CisgICAgICBBTkQgYy5yZWxraW5kIElOICgncicsICd2Jyk7CisKK0dSQU5UIFNFTEVDVCBP TiBwZXJpb2RzIFRPIFBVQkxJQzsKIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQK aW5kZXggMmYzZGVkOGEwZTcuLmEzNzJmYjBhYWU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24u YnVpbGQKQEAgLTI2LDYgKzI2LDcgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAn cGdfbmFtZXNwYWNlLmMnLAogICAncGdfb3BlcmF0b3IuYycsCiAgICdwZ19wYXJhbWV0ZXJf YWNsLmMnLAorICAncGdfcGVyaW9kLmMnLAogICAncGdfcHJvYy5jJywKICAgJ3BnX3B1Ymxp Y2F0aW9uLmMnLAogICAncGdfcmFuZ2UuYycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL29iamVjdGFkZHJlc3MuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRk cmVzcy5jCmluZGV4IDhiYjI5MjRiOWNkLi44NTk3YjBjYzJhZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9vYmplY3RhZGRyZXNzLmMKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJjYXRh bG9nL3BnX29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWlseS5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfcGFyYW1ldGVyX2FjbC5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wb2xpY3kuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0 aW9uLmgiCkBAIC03MzYsNiArNzM3LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZWN0 X3R5cGVfbWFwCiAJewogCQkiZG9tYWluIGNvbnN0cmFpbnQiLCBPQkpFQ1RfRE9NQ09OU1RS QUlOVAogCX0sCisJLyogT0NMQVNTX1BFUklPRCAqLworCXsKKwkJInBlcmlvZCIsIE9CSkVD VF9QRVJJT0QKKwl9LAogCS8qIE9DTEFTU19DT05WRVJTSU9OICovCiAJewogCQkiY29udmVy c2lvbiIsIE9CSkVDVF9DT05WRVJTSU9OCkBAIC0xMDE0LDYgKzEwMTksNyBAQCBnZXRfb2Jq ZWN0X2FkZHJlc3MoT2JqZWN0VHlwZSBvYmp0eXBlLCBOb2RlICpvYmplY3QsCiAJCQljYXNl IE9CSkVDVF9UUklHR0VSOgogCQkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoKIAkJCWNh c2UgT0JKRUNUX1BPTElDWToKKwkJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJCQlhZGRyZXNz ID0gZ2V0X29iamVjdF9hZGRyZXNzX3JlbG9iamVjdChvYmp0eXBlLCBjYXN0Tm9kZShMaXN0 LCBvYmplY3QpLAogCQkJCQkJCQkJCQkJCSAgICZyZWxhdGlvbiwgbWlzc2luZ19vayk7CiAJ CQkJYnJlYWs7CkBAIC0xNTEyLDYgKzE1MTgsMTMgQEAgZ2V0X29iamVjdF9hZGRyZXNzX3Jl bG9iamVjdChPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm9iamVjdCwKIAkJCQlJbnZhbGlk T2lkOwogCQkJYWRkcmVzcy5vYmplY3RTdWJJZCA9IDA7CiAJCQlicmVhazsKKwkJY2FzZSBP QkpFQ1RfUEVSSU9EOgorCQkJYWRkcmVzcy5jbGFzc0lkID0gUGVyaW9kUmVsYXRpb25JZDsK KwkJCWFkZHJlc3Mub2JqZWN0SWQgPSByZWxhdGlvbiA/CisJCQkJZ2V0X3JlbGF0aW9uX3Bl cmlvZF9vaWQocmVsb2lkLCBkZXBuYW1lLCBtaXNzaW5nX29rKSA6CisJCQkJSW52YWxpZE9p ZDsKKwkJCWFkZHJlc3Mub2JqZWN0U3ViSWQgPSAwOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6 CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9iamVjdCB0eXBlOiAlZCIsIChpbnQp IG9ianR5cGUpOwogCX0KQEAgLTIzMjksNiArMjM0Miw3IEBAIHBnX2dldF9vYmplY3RfYWRk cmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQljYXNlIE9CSkVDVF9SVUxFOgogCQljYXNlIE9C SkVDVF9UUklHR0VSOgogCQljYXNlIE9CSkVDVF9UQUJDT05TVFJBSU5UOgorCQljYXNlIE9C SkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX09QQ0xBU1M6CiAJCWNhc2UgT0JKRUNUX09Q RkFNSUxZOgogCQkJb2Jqbm9kZSA9IChOb2RlICopIG5hbWU7CkBAIC0yNDM5LDYgKzI0NTMs NyBAQCBjaGVja19vYmplY3Rfb3duZXJzaGlwKE9pZCByb2xlaWQsIE9iamVjdFR5cGUgb2Jq dHlwZSwgT2JqZWN0QWRkcmVzcyBhZGRyZXNzLAogCQljYXNlIE9CSkVDVF9UUklHR0VSOgog CQljYXNlIE9CSkVDVF9QT0xJQ1k6CiAJCWNhc2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CisJ CWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJCWlmICghb2JqZWN0X293bmVyY2hlY2soUmVsYXRp b25SZWxhdGlvbklkLCBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKSwgcm9sZWlkKSkKIAkJ CQlhY2xjaGVja19lcnJvcihBQ0xDSEVDS19OT1RfT1dORVIsIG9ianR5cGUsCiAJCQkJCQkJ ICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKTsKQEAgLTMwODcsNiArMzEw MiwzOCBAQCBnZXRPYmplY3REZXNjcmlwdGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpvYmpl Y3QsIGJvb2wgbWlzc2luZ19vaykKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNlIE9DTEFT U19QRVJJT0Q6CisJCQl7CisJCQkJSGVhcFR1cGxlCXBlclR1cDsKKwkJCQlGb3JtX3BnX3Bl cmlvZCBwZXI7CisKKwkJCQlwZXJUdXAgPSBTZWFyY2hTeXNDYWNoZTEoUEVSSU9ET0lELAor CQkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKG9iamVjdC0+b2JqZWN0SWQpKTsKKwkJCQlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQocGVyVHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hl IGxvb2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAldSIsCisJCQkJCQkgb2JqZWN0LT5vYmplY3RJ ZCk7CisJCQkJcGVyID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QocGVyVHVwKTsKKwor CQkJCWlmIChPaWRJc1ZhbGlkKHBlci0+cGVycmVsaWQpKQorCQkJCXsKKwkJCQkJU3RyaW5n SW5mb0RhdGEgcmVsOworCisJCQkJCWluaXRTdHJpbmdJbmZvKCZyZWwpOworCQkJCQlnZXRS ZWxhdGlvbkRlc2NyaXB0aW9uKCZyZWwsIHBlci0+cGVycmVsaWQsIGZhbHNlKTsKKwkJCQkJ YXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCBfKCJwZXJpb2QgJXMgb24gJXMiKSwKKwkJCQkJ CQkJCSBOYW1lU3RyKHBlci0+cGVybmFtZSksIHJlbC5kYXRhKTsKKwkJCQkJcGZyZWUocmVs LmRhdGEpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlhcHBlbmRTdHJpbmdJbmZv KCZidWZmZXIsIF8oInBlcmlvZCAlcyIpLAorCQkJCQkJCQkJIE5hbWVTdHIocGVyLT5wZXJu YW1lKSk7CisJCQkJfQorCisJCQkJUmVsZWFzZVN5c0NhY2hlKHBlclR1cCk7CisJCQkJYnJl YWs7CisJCQl9CisKIAkJY2FzZSBPQ0xBU1NfQ09OVkVSU0lPTjoKIAkJCXsKIAkJCQlIZWFw VHVwbGUJY29uVHVwOwpAQCAtNDQ1MSw2ICs0NDk4LDEwIEBAIGdldE9iamVjdFR5cGVEZXNj cmlwdGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykK IAkJCQkJCQkJCQkgbWlzc2luZ19vayk7CiAJCQlicmVhazsKIAorCQljYXNlIE9DTEFTU19Q RVJJT0Q6CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsICJwZXJpb2QiKTsK KwkJCWJyZWFrOworCiAJCWNhc2UgT0NMQVNTX0NPTlZFUlNJT046CiAJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZidWZmZXIsICJjb252ZXJzaW9uIik7CiAJCQlicmVhazsKQEAgLTQ5 NTgsNiArNTAwOSwyOCBAQCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFk ZHJlc3MgKm9iamVjdCwKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNlIE9DTEFTU19QRVJJ T0Q6CisJCQl7CisJCQkJSGVhcFR1cGxlCXBlclR1cDsKKwkJCQlGb3JtX3BnX3BlcmlvZCBw ZXI7CisKKwkJCQlwZXJUdXAgPSBTZWFyY2hTeXNDYWNoZTEoUEVSSU9ET0lELAorCQkJCQkJ CQkJCSBPYmplY3RJZEdldERhdHVtKG9iamVjdC0+b2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhl YXBUdXBsZUlzVmFsaWQocGVyVHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIHBlcmlvZCAldSIsCisJCQkJCQkgb2JqZWN0LT5vYmplY3RJZCk7CisJ CQkJcGVyID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QocGVyVHVwKTsKKworCQkJCWFw cGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgIiVzIG9uICIsCisJCQkJCQkJCSBxdW90ZV9pZGVu dGlmaWVyKE5hbWVTdHIocGVyLT5wZXJuYW1lKSkpOworCQkJCWdldFJlbGF0aW9uSWRlbnRp dHkoJmJ1ZmZlciwgcGVyLT5wZXJyZWxpZCwgb2JqbmFtZSwgZmFsc2UpOworCQkJCWlmIChv YmpuYW1lKQorCQkJCQkqb2JqbmFtZSA9IGxhcHBlbmQoKm9iam5hbWUsIHBzdHJkdXAoTmFt ZVN0cihwZXItPnBlcm5hbWUpKSk7CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUocGVyVHVwKTsK KwkJCQlicmVhazsKKwkJCX0KKwogCQljYXNlIE9DTEFTU19DT05WRVJTSU9OOgogCQkJewog CQkJCUhlYXBUdXBsZQljb25UdXA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX3BlcmlvZC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wZXJpb2QuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDY1YjViNjc1ZTMKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCkBAIC0wLDAgKzEs MTMyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19wZXJpb2QuYworICoJ ICByb3V0aW5lcyB0byBzdXBwb3J0IG1hbmlwdWxhdGlvbiBvZiB0aGUgcGdfcGVyaW9kIHJl bGF0aW9uCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICoKKyAqIElERU5USUZJQ0FU SU9OCisgKgkgIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMKKyAqCisgKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRl ICJhY2Nlc3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVk ZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgorI2luY2x1ZGUgInV0aWxzL2Zt Z3JvaWRzLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRp bHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworCisvKgorICogRGVs ZXRlIGEgc2luZ2xlIHBlcmlvZCByZWNvcmQuCisgKi8KK3ZvaWQKK1JlbW92ZVBlcmlvZEJ5 SWQoT2lkIHBlcmlvZElkKQoreworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlIZWFwVHVwbGUJ dHVwOworCisJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQZXJpb2RSZWxhdGlvbklkLCBSb3dF eGNsdXNpdmVMb2NrKTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsIE9i amVjdElkR2V0RGF0dW0ocGVyaW9kSWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVw KSkgLyogc2hvdWxkIG5vdCBoYXBwZW4gKi8KKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIHBlcmlvZCAldSIsIHBlcmlvZElkKTsKKworCS8qIEZyeSB0aGUgcGVy aW9kIGl0c2VsZiAqLworCUNhdGFsb2dUdXBsZURlbGV0ZShwZ19wZXJpb2QsICZ0dXAtPnRf c2VsZik7CisKKwkvKiBDbGVhbiB1cCAqLworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCXRh YmxlX2Nsb3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKKy8qCisgKiBn ZXRfcmVsYXRpb25fcGVyaW9kX29pZAorICoJCUZpbmQgYSBwZXJpb2Qgb24gdGhlIHNwZWNp ZmllZCByZWxhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4KKyAqCQlSZXR1cm5zIHBl cmlvZCdzIE9JRC4KKyAqLworT2lkCitnZXRfcmVsYXRpb25fcGVyaW9kX29pZChPaWQgcmVs aWQsIGNvbnN0IGNoYXIgKnBlcm5hbWUsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlSZWxhdGlv bglwZ19wZXJpb2Q7CisJSGVhcFR1cGxlCXR1cGxlOworCVN5c1NjYW5EZXNjIHNjYW47CisJ U2NhbktleURhdGEgc2tleVsyXTsKKwlPaWQJCQlwZXJPaWQgPSBJbnZhbGlkT2lkOworCisJ LyogRmV0Y2ggdGhlIHBlcmlvZCB0dXBsZSBmcm9tIHBnX3BlcmlvZC4gKi8KKwlwZ19wZXJp b2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisK KwlTY2FuS2V5SW5pdCgmc2tleVswXSwKKwkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwK KwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXRE YXR1bShyZWxpZCkpOworCVNjYW5LZXlJbml0KCZza2V5WzFdLAorCQkJCUFudW1fcGdfcGVy aW9kX3Blcm5hbWUsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX05BTUVFUSwKKwkJ CQlDU3RyaW5nR2V0RGF0dW0ocGVybmFtZSkpOworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2lu c2NhbihwZ19wZXJpb2QsIFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJ ICBOVUxMLCAyLCBza2V5KTsKKworCS8qIFRoZXJlIGNhbiBiZSBhdCBtb3N0IG9uZSBtYXRj aGluZyByb3cgKi8KKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dl dG5leHQoc2NhbikpKQorCQlwZXJPaWQgPSAoKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1Qo dHVwbGUpKS0+b2lkOworCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKworCS8qIElmIG5v IHN1Y2ggcGVyaW9kIGV4aXN0cywgY29tcGxhaW4gKi8KKwlpZiAoIU9pZElzVmFsaWQocGVy T2lkKSAmJiAhbWlzc2luZ19vaykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIg Zm9yIHRhYmxlIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQlwZXJuYW1lLCBnZXRf cmVsX25hbWUocmVsaWQpKSkpOworCisJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBBY2Nlc3NT aGFyZUxvY2spOworCisJcmV0dXJuIHBlck9pZDsKK30KKworLyoKKyAqIGdldF9wZXJpb2Rf YXR0bm9zCisgKgkJR2V0IHRoZSBhdHRubyBvZiB0aGUgR0VORVJBVEVEIHJhbmdldHlwZSBj b2x1bW4KKyAqCQlmb3IgYWxsIFBFUklPRHMgaW4gdGhpcyB0YWJsZS4KKyAqLworZXh0ZXJu IEJpdG1hcHNldAorKmdldF9wZXJpb2RfYXR0bm9zKE9pZCByZWxpZCkKK3sKKwlCaXRtYXBz ZXQgKmF0dG5vcyA9IE5VTEw7CisJUmVsYXRpb24JcGdfcGVyaW9kOworCUhlYXBUdXBsZQl0 dXBsZTsKKwlTeXNTY2FuRGVzYyBzY2FuOworCVNjYW5LZXlEYXRhIHNrZXlbMV07CisKKwlw Z19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9j ayk7CisKKwlTY2FuS2V5SW5pdCgmc2tleVswXSwKKwkJCQlBbnVtX3BnX3BlcmlvZF9wZXJy ZWxpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0 SWRHZXREYXR1bShyZWxpZCkpOworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19w ZXJpb2QsIFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxMLCAx LCBza2V5KTsKKworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVf Z2V0bmV4dChzY2FuKSkpCisJeworCQlGb3JtX3BnX3BlcmlvZCBwZXJpb2QgPSAoRm9ybV9w Z19wZXJpb2QpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJYXR0bm9zID0gYm1zX2FkZF9tZW1i ZXIoYXR0bm9zLCBwZXJpb2QtPnBlcnJhbmdlKTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2Fu KHNjYW4pOworCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwor CXJldHVybiBhdHRub3M7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3Nx bF9mZWF0dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQK aW5kZXggODBjNDBlYWY1NzguLjJjMWQxYTEwYTdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9z cWxfZmVhdHVyZXMudHh0CkBAIC00NDksNyArNDQ5LDcgQEAgVDE3NglTZXF1ZW5jZSBnZW5l cmF0b3Igc3VwcG9ydAkJCU5PCXN1cHBvcnRlZCBleGNlcHQgZm9yIE5FWFQgVkFMVUUgRk9S CiBUMTc3CVNlcXVlbmNlIGdlbmVyYXRvciBzdXBwb3J0OiBzaW1wbGUgcmVzdGFydCBvcHRp b24JCQlZRVMJCiBUMTc4CUlkZW50aXR5IGNvbHVtbnM6IHNpbXBsZSByZXN0YXJ0IG9wdGlv bgkJCVlFUwkKIFQxODAJU3lzdGVtLXZlcnNpb25lZCB0YWJsZXMJCQlOTwkKLVQxODEJQXBw bGljYXRpb24tdGltZSBwZXJpb2QgdGFibGVzCQkJTk8JCitUMTgxCUFwcGxpY2F0aW9uLXRp bWUgcGVyaW9kIHRhYmxlcwkJCVlFUwkKIFQxOTEJUmVmZXJlbnRpYWwgYWN0aW9uIFJFU1RS SUNUCQkJWUVTCQogVDIwMAlUcmlnZ2VyIERETAkJCU5PCXNpbWlsYXIgYnV0IG5vdCBmdWxs eSBjb21wYXRpYmxlCiBUMjAxCUNvbXBhcmFibGUgZGF0YSB0eXBlcyBmb3IgcmVmZXJlbnRp YWwgY29uc3RyYWludHMJCQlZRVMJCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9hbHRlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYwppbmRleCBiMmU0MjYw YWVmNy4uMzQ2N2I2OGMwYzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Fs dGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYwpAQCAtNjY5LDYgKzY2 OSw3IEBAIEFsdGVyT2JqZWN0TmFtZXNwYWNlX29pZChPaWQgY2xhc3NJZCwgT2lkIG9iamlk LCBPaWQgbnNwT2lkLAogCiAJCWNhc2UgT0NMQVNTX0NBU1Q6CiAJCWNhc2UgT0NMQVNTX0NP TlNUUkFJTlQ6CisJCWNhc2UgT0NMQVNTX1BFUklPRDoKIAkJY2FzZSBPQ0xBU1NfREVGQVVM VDoKIAkJY2FzZSBPQ0xBU1NfTEFOR1VBR0U6CiAJCWNhc2UgT0NMQVNTX0xBUkdFT0JKRUNU OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVudC5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29tbWVudC5jCmluZGV4IGU5ZDUwZmM3ZDg3Li4wNWZlZmI1YjVj ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVudC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQuYwpAQCAtMTAyLDYgKzEwMiwxNiBAQCBDb21t ZW50T2JqZWN0KENvbW1lbnRTdG10ICpzdG10KQogCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWxhdGlvbikpLAogCQkJCQkJIGVycmRldGFpbF9yZWxraW5kX25vdF9zdXBw b3J0ZWQocmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCkpKTsKIAkJCWJyZWFrOworCisJCWNh c2UgT0JKRUNUX1BFUklPRDoKKwkJCS8qIFBlcmlvZHMgY2FuIG9ubHkgZ28gb24gdGFibGVz ICovCisJCQlpZiAocmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFU SU9OKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05H X09CSkVDVF9UWVBFKSwKKwkJCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSB0YWJsZSIs CisJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSkpKTsKKwkJCWJy ZWFrOworCiAJCWRlZmF1bHQ6CiAJCQlicmVhazsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9kcm9wY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNt ZHMuYwppbmRleCA4N2EyZGI0ZTBmNS4uNGFlOTkyMWQzY2IgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZHJvcGNtZHMuYwpAQCAtNTA5LDYgKzUwOSw3IEBAIGRvZXNfbm90X2V4aXN0X3NraXBwaW5n KE9iamVjdFR5cGUgb2JqdHlwZSwgTm9kZSAqb2JqZWN0KQogCQljYXNlIE9CSkVDVF9ET01D T05TVFJBSU5UOgogCQljYXNlIE9CSkVDVF9MQVJHRU9CSkVDVDoKIAkJY2FzZSBPQkpFQ1Rf UEFSQU1FVEVSX0FDTDoKKwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQljYXNlIE9CSkVDVF9Q VUJMSUNBVElPTl9OQU1FU1BBQ0U6CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX1JFTDoK IAkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50 X3RyaWdnZXIuYwppbmRleCBiMTQ2ZDJhYWY0NC4uY2Y1YWE1Mzg2YTAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKQEAgLTExMzgsNiArMTEzOCw3IEBAIEV2ZW50 VHJpZ2dlclN1cHBvcnRzT2JqZWN0VHlwZShPYmplY3RUeXBlIG9idHlwZSkKIAkJY2FzZSBP QkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JKRUNU X09QRkFNSUxZOgorCQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElD WToKIAkJY2FzZSBPQkpFQ1RfUFJPQ0VEVVJFOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElP TjoKQEAgLTExOTYsNiArMTE5Nyw3IEBAIEV2ZW50VHJpZ2dlclN1cHBvcnRzT2JqZWN0Q2xh c3MoT2JqZWN0Q2xhc3Mgb2JqY2xhc3MpCiAJCWNhc2UgT0NMQVNTX0NBU1Q6CiAJCWNhc2Ug T0NMQVNTX0NPTExBVElPTjoKIAkJY2FzZSBPQ0xBU1NfQ09OU1RSQUlOVDoKKwkJY2FzZSBP Q0xBU1NfUEVSSU9EOgogCQljYXNlIE9DTEFTU19DT05WRVJTSU9OOgogCQljYXNlIE9DTEFT U19ERUZBVUxUOgogCQljYXNlIE9DTEFTU19MQU5HVUFHRToKQEAgLTIyMzcsNiArMjIzOSw3 IEBAIHN0cmluZ2lmeV9ncmFudF9vYmp0eXBlKE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJY2Fz ZSBPQkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JK RUNUX09QRkFNSUxZOgorCQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BP TElDWToKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT046CiAJCWNhc2UgT0JKRUNUX1BVQkxJ Q0FUSU9OX05BTUVTUEFDRToKQEAgLTIzMjEsNiArMjMyNCw3IEBAIHN0cmluZ2lmeV9hZGVm cHJpdnNfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JKRUNUX09QRVJB VE9SOgogCQljYXNlIE9CSkVDVF9PUEZBTUlMWToKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVS X0FDTDoKKwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQljYXNlIE9CSkVDVF9QT0xJQ1k6CiAJ CWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9O QU1FU1BBQ0U6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYwppbmRleCA1NjA3MjczYmY5Zi4u YWY3MTc3MTc5Y2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVs LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYwpAQCAtNzksNiArNzks NyBAQCBTZWNMYWJlbFN1cHBvcnRzT2JqZWN0VHlwZShPYmplY3RUeXBlIG9ianR5cGUpCiAJ CWNhc2UgT0JKRUNUX09QRVJBVE9SOgogCQljYXNlIE9CSkVDVF9PUEZBTUlMWToKIAkJY2Fz ZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQljYXNl IE9CSkVDVF9QT0xJQ1k6CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToK IAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fUkVMOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYwppbmRleCA1NGI0NTI3YWE3Ny4uYjY0NTEzMzZhMWMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19s YXJnZW9iamVjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNlLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJp b2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpY19leHQuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RyaWdn ZXIuaCIKQEAgLTE1Myw2ICsxNTQsMTEgQEAgdHlwZWRlZiBlbnVtIEFsdGVyVGFibGVQYXNz CiAJQVRfUEFTU19PTERfSU5ERVgsCQkJLyogcmUtYWRkIGV4aXN0aW5nIGluZGV4ZXMgKi8K IAlBVF9QQVNTX09MRF9DT05TVFIsCQkJLyogcmUtYWRkIGV4aXN0aW5nIGNvbnN0cmFpbnRz ICovCiAJLyogV2UgY291bGQgc3VwcG9ydCBhIFJFTkFNRSBDT0xVTU4gcGFzcyBoZXJlLCBi dXQgbm90IGN1cnJlbnRseSB1c2VkICovCisJLyoKKwkgKiBXZSBtdXN0IGFkZCBQRVJJT0Rz IGFmdGVyIGNvbHVtbnMsIGluIGNhc2UgdGhleSByZWZlcmVuY2UgYSBuZXdseS1hZGRlZCBj b2x1bW4sCisJICogYW5kIGJlZm9yZSBjb25zdHJhaW50cywgaW4gY2FzZSBhIG5ld2x5LWFk ZGVkIFBLL0ZLIHJlZmVyZW5jZXMgdGhlbS4KKwkgKi8KKwlBVF9QQVNTX0FERF9QRVJJT0Qs CQkJLyogQUREIFBFUklPRCAqLwogCUFUX1BBU1NfQUREX0NPTlNUUiwJCQkvKiBBREQgY29u c3RyYWludHMgKGluaXRpYWwgZXhhbWluYXRpb24pICovCiAJQVRfUEFTU19DT0xfQVRUUlMs CQkJLyogc2V0IGNvbHVtbiBhdHRyaWJ1dGVzLCBlZyBOT1QgTlVMTCAqLwogCUFUX1BBU1Nf QUREX0lOREVYQ09OU1RSLAkvKiBBREQgaW5kZXgtYmFzZWQgY29uc3RyYWludHMgKi8KQEAg LTM2Miw2ICszNjgsNyBAQCBzdGF0aWMgdm9pZCBSYW5nZVZhckNhbGxiYWNrRm9yVHJ1bmNh dGUoY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLAogc3RhdGljIExpc3QgKk1lcmdlQXR0cmli dXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBMaXN0ICpzdXBlcnMsIGNoYXIgcmVscGVyc2lz dGVuY2UsCiAJCQkJCQkJIGJvb2wgaXNfcGFydGl0aW9uLCBMaXN0ICoqc3VwY29uc3RyLAog CQkJCQkJCSBMaXN0ICoqc3Vwbm90bnVsbHMpOworc3RhdGljIExpc3QgKk1lcmdlUGVyaW9k cyhjaGFyICpyZWxuYW1lLCBMaXN0ICpwZXJpb2RzLCBMaXN0ICp0YWJsZUVsdHMsIExpc3Qg KnN1cGVycyk7CiBzdGF0aWMgTGlzdCAqTWVyZ2VDaGVja0NvbnN0cmFpbnQoTGlzdCAqY29u c3RyYWludHMsIGNvbnN0IGNoYXIgKm5hbWUsIE5vZGUgKmV4cHIpOwogc3RhdGljIHZvaWQg TWVyZ2VBdHRyaWJ1dGVzSW50b0V4aXN0aW5nKFJlbGF0aW9uIGNoaWxkX3JlbCwgUmVsYXRp b24gcGFyZW50X3JlbCwgYm9vbCBpc3BhcnRpdGlvbik7CiBzdGF0aWMgdm9pZCBNZXJnZUNv bnN0cmFpbnRzSW50b0V4aXN0aW5nKFJlbGF0aW9uIGNoaWxkX3JlbCwgUmVsYXRpb24gcGFy ZW50X3JlbCk7CkBAIC00NDMsNiArNDUwLDggQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgQVRF eGVjQWRkQ29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJ CQkJCQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIGJv b2wgY2hlY2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lvbihSZWxhdGlvbiByZWwsIGNvbnN0 IGNoYXIgKmNvbG5hbWUsCiAJCQkJCQkJCQkJCWJvb2wgaWZfbm90X2V4aXN0cyk7CitzdGF0 aWMgYm9vbCBjaGVja19mb3JfcGVyaW9kX25hbWVfY29sbGlzaW9uKFJlbGF0aW9uIHJlbCwg Y29uc3QgY2hhciAqcGVybmFtZSwKKwkJCQkJCQkJCQkJYm9vbCBpZl9ub3RfZXhpc3RzKTsK IHN0YXRpYyB2b2lkIGFkZF9jb2x1bW5fZGF0YXR5cGVfZGVwZW5kZW5jeShPaWQgcmVsaWQs IGludDMyIGF0dG51bSwgT2lkIHR5cGlkKTsKIHN0YXRpYyB2b2lkIGFkZF9jb2x1bW5fY29s bGF0aW9uX2RlcGVuZGVuY3koT2lkIHJlbGlkLCBpbnQzMiBhdHRudW0sIE9pZCBjb2xsaWQp Owogc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjRHJvcE5vdE51bGwoUmVsYXRpb24gcmVs LCBjb25zdCBjaGFyICpjb2xOYW1lLCBib29sIHJlY3Vyc2UsCkBAIC00NjIsNiArNDcxLDEy IEBAIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0NvbHVtbkRlZmF1bHQoUmVsYXRpb24g cmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAogCQkJCQkJCQkJCSBOb2RlICpuZXdEZWZhdWx0 LCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNDb29r ZWRDb2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwgQXR0ck51bWJlciBhdHRudW0sCiAJCQkJ CQkJCQkJCSAgIE5vZGUgKm5ld0RlZmF1bHQpOworc3RhdGljIE9iamVjdEFkZHJlc3MgQVRF eGVjQWRkUGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpwZXJpb2QsCisJCQkJCQkJ CQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKK3N0YXRpYyB2b2lkIEFU RXhlY0Ryb3BQZXJpb2QoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpwZXJpb2ROYW1lLAor CQkJCQkJCSBEcm9wQmVoYXZpb3IgYmVoYXZpb3IsCisJCQkJCQkJIGJvb2wgcmVjdXJzZSwg Ym9vbCByZWN1cnNpbmcsCisJCQkJCQkJIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgT2Jq ZWN0QWRkcmVzcyBBVEV4ZWNBZGRJZGVudGl0eShSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIg KmNvbE5hbWUsCiAJCQkJCQkJCQkgICBOb2RlICpkZWYsIExPQ0tNT0RFIGxvY2ttb2RlLCBi b29sIHJlY3Vyc2UsIGJvb2wgcmVjdXJzaW5nKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFU RXhlY1NldElkZW50aXR5KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKQEAg LTY3NSw2ICs2OTAsMTAgQEAgc3RhdGljIExpc3QgKkdldFBhcmVudGVkRm9yZWlnbktleVJl ZnMoUmVsYXRpb24gcGFydGl0aW9uKTsKIHN0YXRpYyB2b2lkIEFURGV0YWNoQ2hlY2tOb0Zv cmVpZ25LZXlSZWZzKFJlbGF0aW9uIHBhcnRpdGlvbik7CiBzdGF0aWMgY2hhciBHZXRBdHRy aWJ1dGVDb21wcmVzc2lvbihPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKmNvbXByZXNzaW9u KTsKIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0ZVN0b3JhZ2UoT2lkIGF0dHR5cGlkLCBjb25z dCBjaGFyICpzdG9yYWdlbW9kZSk7CitzdGF0aWMgdm9pZCBBZGRSZWxhdGlvbk5ld1Blcmlv ZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAqcGVyaW9kKTsKK3N0YXRpYyB2b2lkIFZhbGlk YXRlUGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpwZXJpb2QpOworc3RhdGljIENv bnN0cmFpbnQgKm1ha2VfY29uc3RyYWludF9mb3JfcGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVy aW9kRGVmICpwZXJpb2QpOworc3RhdGljIENvbHVtbkRlZiAqbWFrZV9yYW5nZV9jb2x1bW5f Zm9yX3BlcmlvZChQZXJpb2REZWYgKnBlcmlvZCk7CiAKIAogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt OTAzLDYgKzkyMiwyNiBAQCBEZWZpbmVSZWxhdGlvbihDcmVhdGVTdG10ICpzdG10LCBjaGFy IHJlbGtpbmQsIE9pZCBvd25lcklkLAogCQkJCQkJc3RtdC0+cGFydGJvdW5kICE9IE5VTEws CiAJCQkJCQkmb2xkX2NvbnN0cmFpbnRzLCAmb2xkX25vdG51bGxzKTsKIAorCS8qCisJICog VXNpbmcgdGhlIGNvbHVtbiBsaXN0IChpbmNsdWRpbmcgaW5oZXJpdGVkIGNvbHVtbnMpLAor CSAqIGZpbmQgdGhlIHN0YXJ0L2VuZCBjb2x1bW5zIGZvciBlYWNoIHBlcmlvZC4KKwkgKiBQ RVJJT0RzIHNob3VsZCBiZSBpbmhlcml0ZWQgdG9vIChidXQgYXJlbid0IHlldCkuCisJICov CisJc3RtdC0+cGVyaW9kcyA9IE1lcmdlUGVyaW9kcyhyZWxuYW1lLCBzdG10LT5wZXJpb2Rz LCBzdG10LT50YWJsZUVsdHMsIGluaGVyaXRPaWRzKTsKKworCS8qCisJICogRm9yIGVhY2gg UEVSSU9EIHdlIG5lZWQgdG8gY3JlYXRlIGEgR0VORVJBVEVEIGNvbHVtbiwKKwkgKiBzbyBh ZGQgdGhvc2UgdG8gdGFibGVFbHRzLgorCSAqIFRoZXNlIGNvbHVtbnMgYXJlIG5vdCBpbmhl cml0ZWQsCisJICogc28gd2UgZG9uJ3Qgd29ycnkgYWJvdXQgY29uZmxpY3RzIGluIHRhYmxl RWx0cy4KKwkgKi8KKwlmb3JlYWNoKGxpc3RwdHIsIHN0bXQtPnBlcmlvZHMpCisJeworCQlQ ZXJpb2REZWYgKnBlcmlvZCA9IChQZXJpb2REZWYgKikgbGZpcnN0KGxpc3RwdHIpOworCQlD b2x1bW5EZWYgKmNvbCA9IG1ha2VfcmFuZ2VfY29sdW1uX2Zvcl9wZXJpb2QocGVyaW9kKTsK KwkJc3RtdC0+dGFibGVFbHRzID0gbGFwcGVuZChzdG10LT50YWJsZUVsdHMsIGNvbCk7CisJ fQorCiAJLyoKIAkgKiBDcmVhdGUgYSB0dXBsZSBkZXNjcmlwdG9yIGZyb20gdGhlIHJlbGF0 aW9uIHNjaGVtYS4gIE5vdGUgdGhhdCB0aGlzCiAJICogZGVhbHMgd2l0aCBjb2x1bW4gbmFt ZXMsIHR5cGVzLCBhbmQgaW4tZGVzY3JpcHRvciBOT1QgTlVMTCBmbGFncywgYnV0CkBAIC0x Mjg4LDYgKzEzMjcsMjEgQEAgRGVmaW5lUmVsYXRpb24oQ3JlYXRlU3RtdCAqc3RtdCwgY2hh ciByZWxraW5kLCBPaWQgb3duZXJJZCwKIAlmb3JlYWNoKGxpc3RwdHIsIG5uY29scykKIAkJ c2V0X2F0dG5vdG51bGwoTlVMTCwgcmVsLCBsZmlyc3RfaW50KGxpc3RwdHIpLCBmYWxzZSwg Tm9Mb2NrKTsKIAorCS8qCisJICogQ3JlYXRlIHBlcmlvZHMgZm9yIHRoZSB0YWJsZS4gVGhp cyBtdXN0IGNvbWUgYWZ0ZXIgd2UgY3JlYXRlIGNvbHVtbnMKKwkgKiBhbmQgYmVmb3JlIHdl IGNyZWF0ZSBpbmRleCBjb25zdHJhaW50cy4gSXQgd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0 ZQorCSAqIGEgQ0hFQ0sgY29uc3RyYWludCBmb3IgdGhlIHBlcmlvZC4KKwkgKi8KKwlmb3Jl YWNoKGxpc3RwdHIsIHN0bXQtPnBlcmlvZHMpCisJeworCQlQZXJpb2REZWYgKnBlcmlvZCA9 IChQZXJpb2REZWYgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCS8qIERvbid0IHVwZGF0ZSB0 aGUgY291bnQgb2YgY2hlY2sgY29uc3RyYWludHMgdHdpY2UgKi8KKwkJQ29tbWFuZENvdW50 ZXJJbmNyZW1lbnQoKTsKKworCQlBZGRSZWxhdGlvbk5ld1BlcmlvZChyZWwsIHBlcmlvZCk7 CisJfQorCiAJT2JqZWN0QWRkcmVzc1NldChhZGRyZXNzLCBSZWxhdGlvblJlbGF0aW9uSWQs IHJlbGF0aW9uSWQpOwogCiAJLyoKQEAgLTE0MDQsNiArMTQ1OCwyNjQgQEAgQnVpbGREZXNj Rm9yUmVsYXRpb24oY29uc3QgTGlzdCAqY29sdW1ucykKIAlyZXR1cm4gZGVzYzsKIH0KIAor LyoKKyAqIG1ha2VfY29uc3RyYWludF9mb3JfcGVyaW9kCisgKgorICogQnVpbGRzIGEgQ0hF Q0sgQ29uc3RyYWludCB0byBlbnN1cmUgc3RhcnQgPCBlbmQuCisgKiBSZXR1cm5zIHRoZSBD SEVDSyBDb25zdHJhaW50LgorICogQWxzbyBmaWxscyBpbiBwZXJpb2QtPmNvbnN0cmFpbnRu YW1lIGlmIG5lZWRlZC4KKyAqLworc3RhdGljIENvbnN0cmFpbnQgKgorbWFrZV9jb25zdHJh aW50X2Zvcl9wZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCkKK3sKKwlD b2x1bW5SZWYgICpzY29sLCAqZWNvbDsKKwlDb25zdHJhaW50ICpjb25zdHI7CisJVHlwZUNh Y2hlRW50cnkgKnR5cGU7CisKKwlpZiAocGVyaW9kLT5jb25zdHJhaW50bmFtZSA9PSBOVUxM KQorCQlwZXJpb2QtPmNvbnN0cmFpbnRuYW1lID0gQ2hvb3NlQ29uc3RyYWludE5hbWUoUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwKKwkJCQkJCQkJCQkJCQkgIHBlcmlvZC0+cGVy aW9kbmFtZSwKKwkJCQkJCQkJCQkJCQkgICJjaGVjayIsCisJCQkJCQkJCQkJCQkJICBSZWxh dGlvbkdldE5hbWVzcGFjZShyZWwpLAorCQkJCQkJCQkJCQkJCSAgTklMKTsKKwlzY29sID0g bWFrZU5vZGUoQ29sdW1uUmVmKTsKKwlzY29sLT5maWVsZHMgPSBsaXN0X21ha2UxKG1ha2VT dHJpbmcocHN0cmR1cChwZXJpb2QtPnN0YXJ0Y29sbmFtZSkpKTsKKwlzY29sLT5sb2NhdGlv biA9IDA7CisKKwllY29sID0gbWFrZU5vZGUoQ29sdW1uUmVmKTsKKwllY29sLT5maWVsZHMg PSBsaXN0X21ha2UxKG1ha2VTdHJpbmcocHN0cmR1cChwZXJpb2QtPmVuZGNvbG5hbWUpKSk7 CisJZWNvbC0+bG9jYXRpb24gPSAwOworCisJdHlwZSA9IGxvb2t1cF90eXBlX2NhY2hlKHBl cmlvZC0+Y29sdHlwaWQsIFRZUEVDQUNIRV9MVF9PUFIpOworCWlmICh0eXBlLT5sdF9vcHIg PT0gSW52YWxpZE9pZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBj YW5ub3QgYmUgdXNlZCBpbiBhIFBFUklPRCBiZWNhdXNlIGl0cyB0eXBlICVzIGhhcyBubyBs ZXNzIHRoYW4gb3BlcmF0b3IiLAorCQkJCQkJcGVyaW9kLT5zdGFydGNvbG5hbWUsIGZvcm1h dF90eXBlX2JlKHBlcmlvZC0+Y29sdHlwaWQpKSkpOworCisJY29uc3RyID0gbWFrZU5vZGUo Q29uc3RyYWludCk7CisJY29uc3RyLT5jb250eXBlID0gQ09OU1RSX0NIRUNLOworCWNvbnN0 ci0+Y29ubmFtZSA9IHBlcmlvZC0+Y29uc3RyYWludG5hbWU7CisJY29uc3RyLT5kZWZlcnJh YmxlID0gZmFsc2U7CisJY29uc3RyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwljb25zdHIt PmxvY2F0aW9uID0gLTE7CisJY29uc3RyLT5pc19ub19pbmhlcml0ID0gZmFsc2U7CisJY29u c3RyLT5yYXdfZXhwciA9IChOb2RlICopIG1ha2VTaW1wbGVBX0V4cHIoQUVYUFJfT1AsCisJ CQkJCQkJCQkJCQkgZ2V0X29wbmFtZSh0eXBlLT5sdF9vcHIpLAorCQkJCQkJCQkJCQkJIChO b2RlICopIHNjb2wsCisJCQkJCQkJCQkJCQkgKE5vZGUgKikgZWNvbCwKKwkJCQkJCQkJCQkJ CSAwKTsKKwljb25zdHItPmNvb2tlZF9leHByID0gTlVMTDsKKwljb25zdHItPnNraXBfdmFs aWRhdGlvbiA9IGZhbHNlOworCWNvbnN0ci0+aW5pdGlhbGx5X3ZhbGlkID0gdHJ1ZTsKKwor CXJldHVybiBjb25zdHI7Cit9CisKKy8qCisgKiBtYWtlX3JhbmdlX2NvbHVtbl9mb3JfcGVy aW9kCisgKgorICogQnVpbGRzIGEgR0VORVJBVEVEIEFMV0FZUyByYW5nZSBjb2x1bW4gYmFz ZWQgb24gdGhlIFBFUklPRAorICogc3RhcnQvZW5kIGNvbHVtbnMuIFJldHVybnMgdGhlIENv bHVtbkRlZi4KKyAqLworQ29sdW1uRGVmICoKK21ha2VfcmFuZ2VfY29sdW1uX2Zvcl9wZXJp b2QoUGVyaW9kRGVmICpwZXJpb2QpCit7CisJY2hhciAqcmFuZ2VfdHlwZV9uYW1lc3BhY2U7 CisJY2hhciAqcmFuZ2VfdHlwZV9uYW1lOworCUNvbHVtbkRlZiAqY29sID0gbWFrZU5vZGUo Q29sdW1uRGVmKTsKKwlDb2x1bW5SZWYgKnN0YXJ0dmFyLCAqZW5kdmFyOworCUV4cHIgKnJh bmdlQ29uc3RydWN0b3I7CisKKwlpZiAoIWdldF90eXBuYW1lX2FuZF9uYW1lc3BhY2UocGVy aW9kLT5ybmd0eXBpZCwgJnJhbmdlX3R5cGVfbmFtZSwgJnJhbmdlX3R5cGVfbmFtZXNwYWNl KSkKKwkJZWxvZyhFUlJPUiwgIm1pc3NpbmcgcmFuZ2UgdHlwZSAlZCIsIHBlcmlvZC0+cm5n dHlwaWQpOworCisJc3RhcnR2YXIgPSBtYWtlTm9kZShDb2x1bW5SZWYpOworCXN0YXJ0dmFy LT5maWVsZHMgPSBsaXN0X21ha2UxKG1ha2VTdHJpbmcocHN0cmR1cChwZXJpb2QtPnN0YXJ0 Y29sbmFtZSkpKTsKKwllbmR2YXIgPSBtYWtlTm9kZShDb2x1bW5SZWYpOworCWVuZHZhci0+ ZmllbGRzID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKHBzdHJkdXAocGVyaW9kLT5lbmRjb2xu YW1lKSkpOworCXJhbmdlQ29uc3RydWN0b3IgPSAoRXhwciAqKSBtYWtlRnVuY0NhbGwoCisJ CQlsaXN0X21ha2UyKG1ha2VTdHJpbmcocmFuZ2VfdHlwZV9uYW1lc3BhY2UpLCBtYWtlU3Ry aW5nKHJhbmdlX3R5cGVfbmFtZSkpLAorCQkJbGlzdF9tYWtlMihzdGFydHZhciwgZW5kdmFy KSwKKwkJCUNPRVJDRV9FWFBMSUNJVF9DQUxMLAorCQkJcGVyaW9kLT5sb2NhdGlvbik7CisK Kwljb2wtPmNvbG5hbWUgPSBwc3RyZHVwKHBlcmlvZC0+cGVyaW9kbmFtZSk7CisJY29sLT50 eXBlTmFtZSA9IG1ha2VUeXBlTmFtZShyYW5nZV90eXBlX25hbWUpOworCWNvbC0+Y29tcHJl c3Npb24gPSBOVUxMOworCWNvbC0+aW5oY291bnQgPSAwOworCWNvbC0+aXNfbG9jYWwgPSB0 cnVlOworCWNvbC0+aXNfbm90X251bGwgPSB0cnVlOworCWNvbC0+aXNfZnJvbV90eXBlID0g ZmFsc2U7CisJY29sLT5zdG9yYWdlID0gMDsKKwljb2wtPnN0b3JhZ2VfbmFtZSA9IE5VTEw7 CisJY29sLT5yYXdfZGVmYXVsdCA9IChOb2RlICopIHJhbmdlQ29uc3RydWN0b3I7CisJY29s LT5jb29rZWRfZGVmYXVsdCA9IE5VTEw7CisJY29sLT5pZGVudGl0eSA9IDA7CisJY29sLT5n ZW5lcmF0ZWQgPSBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRDsKKwljb2wtPmNvbGxDbGF1 c2UgPSBOVUxMOworCWNvbC0+Y29sbE9pZCA9IEludmFsaWRPaWQ7CisJY29sLT5mZHdvcHRp b25zID0gTklMOworCWNvbC0+bG9jYXRpb24gPSBwZXJpb2QtPmxvY2F0aW9uOworCisJcmV0 dXJuIGNvbDsKK30KKworLyoKKyAqIFZhbGlkYXRlUGVyaW9kCisgKgorICogTG9vayB1cCB0 aGUgYXR0cmlidXRlcyB1c2VkIGJ5IHRoZSBQRVJJT0QsCisgKiBtYWtlIHN1cmUgdGhleSBl eGlzdCwgYXJlIG5vdCBzeXN0ZW0gY29sdW1ucywKKyAqIGFuZCBoYXZlIHRoZSBzYW1lIHR5 cGUgYW5kIGNvbGxhdGlvbi4KKyAqCisgKiBZb3UgbXVzdCBoYXZlIGEgUm93RXhjbHVzaXZl TG9jayBvbiBwZ19hdHRyaWJ1dGUKKyAqIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24u CisgKgorICogQWRkIG91ciBmaW5kaW5ncyB0byB0aGVzZSBQZXJpb2REZWYgZmllbGRzOgor ICoKKyAqIGNvbHR5cGlkIC0gdGhlIHR5cGUgb2YgUEVSSU9EIGNvbHVtbnMuCisgKiBzdGFy dGF0dG51bSAtIHRoZSBhdHRudW0gb2YgdGhlIHN0YXJ0IGNvbHVtbi4KKyAqIGVuZGF0dG51 bSAtIHRoZSBhdHRudW0gb2YgdGhlIGVuZCBjb2x1bW4uCisgKi8KK3N0YXRpYyB2b2lkCitW YWxpZGF0ZVBlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAqcGVyaW9kKQoreworCUhl YXBUdXBsZSBzdGFydHR1cGxlOworCUhlYXBUdXBsZSBlbmR0dXBsZTsKKwlGb3JtX3BnX2F0 dHJpYnV0ZQlhdHR0dXBsZTsKKwlPaWQJYXR0Y29sbGF0aW9uOworCisJLyogRmluZCB0aGUg c3RhcnQgY29sdW1uICovCisJc3RhcnR0dXBsZSA9IFNlYXJjaFN5c0NhY2hlQ29weUF0dE5h bWUoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBwZXJpb2QtPnN0YXJ0Y29sbmFtZSk7CisJaWYg KCFIZWFwVHVwbGVJc1ZhbGlkKHN0YXJ0dHVwbGUpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVycm1zZygiY29s dW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJ cGVyaW9kLT5zdGFydGNvbG5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7 CisJYXR0dHVwbGUgPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVChzdGFydHR1cGxl KTsKKwlwZXJpb2QtPmNvbHR5cGlkID0gYXR0dHVwbGUtPmF0dHR5cGlkOworCWF0dGNvbGxh dGlvbiA9IGF0dHR1cGxlLT5hdHRjb2xsYXRpb247CisJcGVyaW9kLT5zdGFydGF0dG51bSA9 IGF0dHR1cGxlLT5hdHRudW07CisKKwkvKiBNYWtlIHN1cmUgaXQncyBub3QgYSBzeXN0ZW0g Y29sdW1uICovCisJaWYgKHBlcmlvZC0+c3RhcnRhdHRudW0gPD0gMCkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04p LAorCQkJCSBlcnJtc2coImNhbm5vdCB1c2Ugc3lzdGVtIGNvbHVtbiBcIiVzXCIgaW4gcGVy aW9kIiwKKwkJCQkJCXBlcmlvZC0+c3RhcnRjb2xuYW1lKSkpOworCisJLyogRmluZCB0aGUg ZW5kIGNvbHVtbiAqLworCWVuZHR1cGxlID0gU2VhcmNoU3lzQ2FjaGVDb3B5QXR0TmFtZShS ZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+ZW5kY29sbmFtZSk7CisJaWYgKCFIZWFw VHVwbGVJc1ZhbGlkKGVuZHR1cGxlKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCSBlcnJtc2coImNvbHVtbiBcIiVz XCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCXBlcmlvZC0+ ZW5kY29sbmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwlhdHR0dXBs ZSA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKGVuZHR1cGxlKTsKKwlwZXJpb2Qt PmVuZGF0dG51bSA9IGF0dHR1cGxlLT5hdHRudW07CisKKwkvKiBNYWtlIHN1cmUgaXQncyBu b3QgYSBzeXN0ZW0gY29sdW1uICovCisJaWYgKHBlcmlvZC0+ZW5kYXR0bnVtIDw9IDApCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9E RUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIHN5c3RlbSBjb2x1bW4gXCIl c1wiIGluIHBlcmlvZCIsCisJCQkJCQlwZXJpb2QtPmVuZGNvbG5hbWUpKSk7CisKKwkvKiBC b3RoIGNvbHVtbnMgbXVzdCBiZSBvZiBzYW1lIHR5cGUgKi8KKwlpZiAocGVyaW9kLT5jb2x0 eXBpZCAhPSBhdHR0dXBsZS0+YXR0dHlwaWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJIGVycm1zZygic3RhcnQg YW5kIGVuZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0IGJlIG9mIHNhbWUgdHlwZSIpKSk7CisK KwkvKiBCb3RoIGNvbHVtbnMgbXVzdCBoYXZlIHRoZSBzYW1lIGNvbGxhdGlvbiAqLworCWlm IChhdHRjb2xsYXRpb24gIT0gYXR0dHVwbGUtPmF0dGNvbGxhdGlvbikKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0NPTExBVElPTl9NSVNNQVRDSCksCisJCQkJ IGVycm1zZygic3RhcnQgYW5kIGVuZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0IGhhdmUgc2Ft ZSBjb2xsYXRpb24iKSkpOworCisJaGVhcF9mcmVldHVwbGUoc3RhcnR0dXBsZSk7CisJaGVh cF9mcmVldHVwbGUoZW5kdHVwbGUpOworfQorCisvKgorICogY2hvb3NlX3JhbmdldHlwZV9m b3JfcGVyaW9kCisgKgorICogRmluZCBhIHN1aXRhYmxlIHJhbmdlIHR5cGUgZm9yIG9wZXJh dGlvbnMgaW52b2x2aW5nIHRoaXMgcGVyaW9kLgorICogVXNlIHRoZSByYW5nZXR5cGUgb3B0 aW9uIGlmIHByb3ZpZGVkLCBvdGhlcndpc2UgdHJ5IHRvIGZpbmQgYQorICogbm9uLWFtYmln dW91cyBleGlzdGluZyB0eXBlLgorICovCisvLyBUT0RPOiBUaGlzIGNvdWxkIGJlIHN0YXRp YyBub3cKK09pZAorY2hvb3NlX3JhbmdldHlwZV9mb3JfcGVyaW9kKFBlcmlvZERlZiAqcGVy aW9kKQoreworCU9pZAlybmd0eXBpZDsKKworCWlmIChwZXJpb2QtPnJhbmdldHlwZW5hbWUg IT0gTlVMTCkKKwl7CisJCS8qIE1ha2Ugc3VyZSBpdCBleGlzdHMgKi8KKwkJcm5ndHlwaWQg PSBUeXBlbmFtZUdldFR5cGlkRXh0ZW5kZWQocGVyaW9kLT5yYW5nZXR5cGVuYW1lLCBmYWxz ZSk7CisJCWlmIChybmd0eXBpZCA9PSBJbnZhbGlkT2lkKQorCQkJZXJlcG9ydChFUlJPUiwg KGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygiUmFu Z2UgdHlwZSAlcyBub3QgZm91bmQiLCBwZXJpb2QtPnJhbmdldHlwZW5hbWUpKSk7CisKKwkJ LyogTWFrZSBzdXJlIGl0IGlzIGEgcmFuZ2UgdHlwZSAqLworCQlpZiAoIXR5cGVfaXNfcmFu Z2Uocm5ndHlwaWQpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coIlR5cGUgJXMgaXMgbm90IGEg cmFuZ2UgdHlwZSIsIHBlcmlvZC0+cmFuZ2V0eXBlbmFtZSkpKTsKKworCQkvKiBNYWtlIHN1 cmUgaXQgbWF0Y2hlcyB0aGUgY29sdW1uIHR5cGUgKi8KKwkJaWYgKGdldF9yYW5nZV9zdWJ0 eXBlKHJuZ3R5cGlkKSAhPSBwZXJpb2QtPmNvbHR5cGlkKQorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCSBlcnJt c2coIlJhbmdlIHR5cGUgJXMgZG9lcyBub3QgbWF0Y2ggY29sdW1uIHR5cGUgJXMiLAorCQkJ CQkJIHBlcmlvZC0+cmFuZ2V0eXBlbmFtZSwKKwkJCQkJCSBmb3JtYXRfdHlwZV9iZShwZXJp b2QtPmNvbHR5cGlkKSkpKTsKKwl9CisJZWxzZQorCXsKKwkJcm5ndHlwaWQgPSBnZXRfc3Vi dHlwZV9yYW5nZShwZXJpb2QtPmNvbHR5cGlkKTsKKwkJaWYgKHJuZ3R5cGlkID09IEludmFs aWRPaWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVG SU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJubyByYW5nZSB0eXBlIGZvciAlcyBmb3Vu ZCBmb3IgcGVyaW9kICVzIiwKKwkJCQkJCQlmb3JtYXRfdHlwZV9iZShwZXJpb2QtPmNvbHR5 cGlkKSwKKwkJCQkJCQlwZXJpb2QtPnBlcmlvZG5hbWUpLAorCQkJCQkgZXJyaGludCgiWW91 IGNhbiBkZWZpbmUgYSBjdXN0b20gcmFuZ2UgdHlwZSB3aXRoIENSRUFURSBUWVBFIikpKTsK KworCX0KKworCXJldHVybiBybmd0eXBpZDsKK30KKworc3RhdGljIHZvaWQKK0FkZFJlbGF0 aW9uTmV3UGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpwZXJpb2QpCit7CisJUmVs YXRpb24JYXR0cmVsYXRpb247CisJT2lkCQkJY29ub2lkOworCUNvbnN0cmFpbnQgKmNvbnN0 cjsKKwlMaXN0CSAgICpuZXdjb25zdHJzOworCisJYXR0cmVsYXRpb24gPSB0YWJsZV9vcGVu KEF0dHJpYnV0ZVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJLyogRmluZCB0 aGUgR0VORVJBVEVEIHJhbmdlIGNvbHVtbiAqLworCisJcGVyaW9kLT5ybmdhdHRudW0gPSBn ZXRfYXR0bnVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5wZXJpb2RuYW1lKTsK KwlpZiAocGVyaW9kLT5ybmdhdHRudW0gPT0gSW52YWxpZEF0dHJOdW1iZXIpCisJCWVsb2co RVJST1IsICJtaXNzaW5nIGF0dHJpYnV0ZSAlcyIsIHBlcmlvZC0+cGVyaW9kbmFtZSk7CisK KwkvKiBUaGUgcGFyc2VyIGhhcyBhbHJlYWR5IGZvdW5kIHBlcmlvZC0+Y29sdHlwaWQgKi8K KworCWNvbnN0ciA9IG1ha2VfY29uc3RyYWludF9mb3JfcGVyaW9kKHJlbCwgcGVyaW9kKTsK KwluZXdjb25zdHJzID0gQWRkUmVsYXRpb25OZXdDb25zdHJhaW50cyhyZWwsIE5JTCwgbGlz dF9tYWtlMShjb25zdHIpLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgTlVMTCk7CisJY29ub2lkID0g KChDb29rZWRDb25zdHJhaW50ICopIGxpbml0aWFsKG5ld2NvbnN0cnMpKS0+Y29ub2lkOwor CisJLyogU2F2ZSBpdCAqLworCVN0b3JlUGVyaW9kKHJlbCwgcGVyaW9kLT5wZXJpb2RuYW1l LCBwZXJpb2QtPnN0YXJ0YXR0bnVtLCBwZXJpb2QtPmVuZGF0dG51bSwgcGVyaW9kLT5ybmdh dHRudW0sIGNvbm9pZCk7CisKKwl0YWJsZV9jbG9zZShhdHRyZWxhdGlvbiwgUm93RXhjbHVz aXZlTG9jayk7Cit9CisKIC8qCiAgKiBFbWl0IHRoZSByaWdodCBlcnJvciBvciB3YXJuaW5n IG1lc3NhZ2UgZm9yIGEgIkRST1AiIGNvbW1hbmQgaXNzdWVkIG9uIGEKICAqIG5vbi1leGlz dGVudCByZWxhdGlvbgpAQCAtMzM2OSw2ICszNjgxLDE2OCBAQCBNZXJnZUF0dHJpYnV0ZXMo TGlzdCAqY29sdW1ucywgY29uc3QgTGlzdCAqc3VwZXJzLCBjaGFyIHJlbHBlcnNpc3RlbmNl LAogfQogCiAKKy8qLS0tLS0tLS0tLQorICogTWVyZ2VQZXJpb2RzCisgKgkJUmV0dXJucyBu ZXcgcGVyaW9kIGxpc3QgZ2l2ZW4gaW5pdGlhbCBwZXJpb2RzIGFuZCBzdXBlcmNsYXNzZXMu CisgKgorICogRm9yIG5vdyB3ZSBkb24ndCBzdXBwb3J0IGluaGVyaXRlbmNlIHdpdGggUEVS SU9EcywKKyAqIGJ1dCB3ZSBtaWdodCBtYWtlIGl0IHdvcmsgZXZlbnR1YWxseS4KKyAqCisg KiBXZSBjYW4gb21pdCBsb3RzIG9mIGNoZWNrcyBoZXJlIGFuZCBhc3N1bWUgTWVyZ2VBdHRy aWJ1dGVzIGFscmVhZHkgZGlkIHRoZW0sCisgKiBmb3IgZXhhbXBsZSB0aGF0IGNoaWxkICYg cGFyZW50cyBhcmUgbm90IGEgbWl4IG9mIHBlcm1hbmVudCBhbmQgdGVtcC4KKyAqLworc3Rh dGljIExpc3QgKgorTWVyZ2VQZXJpb2RzKGNoYXIgKnJlbG5hbWUsIExpc3QgKnBlcmlvZHMs IExpc3QgKnRhYmxlRWx0cywgTGlzdCAqc3VwZXJzKQoreworCUxpc3RDZWxsICAgKmVudHJ5 OworCisJLyogSWYgd2UgaGF2ZSBhIFBFUklPRCB0aGVuIHN1cGVycyBtdXN0IGJlIGVtcHR5 LiAqLworCisJaWYgKGxpc3RfbGVuZ3RoKHBlcmlvZHMpID4gMCAmJiBsaXN0X2xlbmd0aChz dXBlcnMpID4gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiSW5oZXJpdGluZyBpcyBub3Qg c3VwcG9ydGVkIHdoZW4gYSB0YWJsZSBoYXMgYSBQRVJJT0QiKSkpOworCisJLyogSWYgYW55 IHBhcmVudCB0YWJsZSBoYXMgYSBQRVJJT0QsIHRoZW4gZmFpbC4gKi8KKworCWZvcmVhY2go ZW50cnksIHN1cGVycykKKwl7CisJCU9pZAkJCXBhcmVudCA9IGxmaXJzdF9vaWQoZW50cnkp OworCQlSZWxhdGlvbglyZWxhdGlvbjsKKwkJUmVsYXRpb24JcGdfcGVyaW9kOworCQlTeXNT Y2FuRGVzYyBzY2FuOworCQlTY2FuS2V5RGF0YSBza2V5WzFdOworCQlIZWFwVHVwbGUJdHVw bGU7CisKKwkJLyogY2FsbGVyIGFscmVhZHkgZ290IGxvY2sgKi8KKwkJcmVsYXRpb24gPSB0 YWJsZV9vcGVuKHBhcmVudCwgTm9Mb2NrKTsKKwkJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQ ZXJpb2RSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCVNjYW5LZXlJbml0KCZz a2V5WzBdLAorCQkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCQkJQlRFcXVhbFN0 cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCQlPYmplY3RJZEdldERhdHVtKHBhcmVudCkp OworCisJCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdfcGVyaW9kLCBQZXJpb2RSZWxp ZE5hbWVJbmRleElkLCB0cnVlLAorCQkJCQkJCQkgIE5VTEwsIDEsIHNrZXkpOworCisJCWlm IChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQkJCSBlcnJtc2coIkluaGVyaXRpbmcgZnJvbSBhIHRhYmxlIHdpdGgg YSBQRVJJT0QgaXMgbm90IHN1cHBvcnRlZCIpKSk7CisKKwkJc3lzdGFibGVfZW5kc2Nhbihz Y2FuKTsKKwkJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBBY2Nlc3NTaGFyZUxvY2spOworCQl0 YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9Mb2NrKTsKKwl9CisKKwkvKgorCSAqIEZpbmQgdGhl IHN0YXJ0ICYgZW5kIGNvbHVtbnMgYW5kIGdldCB0aGVpciBhdHRubyBhbmQgdHlwZS4KKwkg KiBJbiB0aGUgc2FtZSBwYXNzLCBtYWtlIHN1cmUgdGhlIHBlcmlvZCBkb2Vzbid0IGNvbmZs aWN0IHdpdGggYW55IGNvbHVtbiBuYW1lcy4KKwkgKiBBbHNvIG1ha2Ugc3VyZSB0aGUgc2Ft ZSBwZXJpb2QgbmFtZSBpc24ndCB1c2VkIG1vcmUgdGhhbiBvbmNlLgorCSAqLworCWZvcmVh Y2ggKGVudHJ5LCBwZXJpb2RzKQorCXsKKwkJUGVyaW9kRGVmICpwZXJpb2QgPSBsZmlyc3Qo ZW50cnkpOworCQlMaXN0Q2VsbCAqZW50cnkyOworCQlpbnQgaSA9IDE7CisJCU9pZCBzdGFy dGNvbHR5cGlkID0gSW52YWxpZE9pZDsKKwkJT2lkIGVuZGNvbHR5cGlkID0gSW52YWxpZE9p ZDsKKwkJT2lkCXN0YXJ0Y29sY29sbGF0aW9uID0gSW52YWxpZE9pZDsKKwkJT2lkCWVuZGNv bGNvbGxhdGlvbiA9IEludmFsaWRPaWQ7CisKKwkJcGVyaW9kLT5zdGFydGF0dG51bSA9IElu dmFsaWRBdHRyTnVtYmVyOworCQlwZXJpb2QtPmVuZGF0dG51bSA9IEludmFsaWRBdHRyTnVt YmVyOworCisJCWlmIChTeXN0ZW1BdHRyaWJ1dGVCeU5hbWUocGVyaW9kLT5wZXJpb2RuYW1l KSAhPSBOVUxMKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9E VVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkJIGVycm1zZygicGVyaW9kIG5hbWUgXCIlc1wiIGNv bmZsaWN0cyB3aXRoIGEgc3lzdGVtIGNvbHVtbiBuYW1lIiwKKwkJCQkJCQlwZXJpb2QtPnBl cmlvZG5hbWUpKSk7CisKKwkJZm9yZWFjaCAoZW50cnkyLCBwZXJpb2RzKQorCQl7CisJCQlQ ZXJpb2REZWYgKnBlcmlvZDIgPSBsZmlyc3QoZW50cnkyKTsKKworCQkJaWYgKHBlcmlvZCAh PSBwZXJpb2QyICYmIHN0cmNtcChwZXJpb2QtPnBlcmlvZG5hbWUsIHBlcmlvZDItPnBlcmlv ZG5hbWUpID09IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJCQkgZXJybXNnKCJwZXJpb2QgbmFtZSBcIiVz XCIgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlIiwKKwkJCQkJCQkJcGVyaW9kLT5wZXJpb2Ru YW1lKSkpOworCQl9CisKKwkJZm9yZWFjaCAoZW50cnkyLCB0YWJsZUVsdHMpCisJCXsKKwkJ CUNvbHVtbkRlZiAqY29sID0gbGZpcnN0KGVudHJ5Mik7CisJCQlpbnQzMglhdHR0eXBtb2Q7 CisJCQlBY2xSZXN1bHQgYWNscmVzdWx0OworCisJCQlpZiAoc3RyY21wKHBlcmlvZC0+cGVy aW9kbmFtZSwgY29sLT5jb2xuYW1lKSA9PSAwKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkJIGVycm1zZygi cGVyaW9kIG5hbWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgY29sdW1uIG5hbWUiLAorCQkJ CQkJCQlwZXJpb2QtPnBlcmlvZG5hbWUpKSk7CisKKwkJCWlmIChzdHJjbXAocGVyaW9kLT5z dGFydGNvbG5hbWUsIGNvbC0+Y29sbmFtZSkgPT0gMCkKKwkJCXsKKwkJCQlwZXJpb2QtPnN0 YXJ0YXR0bnVtID0gaTsKKworCQkJCXR5cGVuYW1lVHlwZUlkQW5kTW9kKE5VTEwsIGNvbC0+ dHlwZU5hbWUsICZzdGFydGNvbHR5cGlkLCAmYXR0dHlwbW9kKTsKKworCQkJCWFjbHJlc3Vs dCA9IG9iamVjdF9hY2xjaGVjayhUeXBlUmVsYXRpb25JZCwgc3RhcnRjb2x0eXBpZCwgR2V0 VXNlcklkKCksIEFDTF9VU0FHRSk7CisJCQkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19P SykKKwkJCQkJYWNsY2hlY2tfZXJyb3JfdHlwZShhY2xyZXN1bHQsIHN0YXJ0Y29sdHlwaWQp OworCisJCQkJc3RhcnRjb2xjb2xsYXRpb24gPSBHZXRDb2x1bW5EZWZDb2xsYXRpb24oTlVM TCwgY29sLCBzdGFydGNvbHR5cGlkKTsKKwkJCX0KKworCQkJaWYgKHN0cmNtcChwZXJpb2Qt PmVuZGNvbG5hbWUsIGNvbC0+Y29sbmFtZSkgPT0gMCkKKwkJCXsKKwkJCQlwZXJpb2QtPmVu ZGF0dG51bSA9IGk7CisKKwkJCQl0eXBlbmFtZVR5cGVJZEFuZE1vZChOVUxMLCBjb2wtPnR5 cGVOYW1lLCAmZW5kY29sdHlwaWQsICZhdHR0eXBtb2QpOworCisJCQkJYWNscmVzdWx0ID0g b2JqZWN0X2FjbGNoZWNrKFR5cGVSZWxhdGlvbklkLCBlbmRjb2x0eXBpZCwgR2V0VXNlcklk KCksIEFDTF9VU0FHRSk7CisJCQkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJ CQkJYWNsY2hlY2tfZXJyb3JfdHlwZShhY2xyZXN1bHQsIGVuZGNvbHR5cGlkKTsKKworCQkJ CWVuZGNvbGNvbGxhdGlvbiA9IEdldENvbHVtbkRlZkNvbGxhdGlvbihOVUxMLCBjb2wsIGVu ZGNvbHR5cGlkKTsKKwkJCX0KKworCQkJaSsrOworCQl9CisKKwkJLyogRGlkIHdlIGZpbmQg dGhlIGNvbHVtbnM/ICovCisJCWlmIChwZXJpb2QtPnN0YXJ0YXR0bnVtID09IEludmFsaWRB dHRyTnVtYmVyKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9V TkRFRklORURfQ09MVU1OKSwKKwkJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxh dGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJCXBlcmlvZC0+c3RhcnRjb2xu YW1lLCByZWxuYW1lKSkpOworCQlpZiAocGVyaW9kLT5lbmRhdHRudW0gPT0gSW52YWxpZEF0 dHJOdW1iZXIpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VO REVGSU5FRF9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0 aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJcGVyaW9kLT5lbmRjb2xuYW1l LCByZWxuYW1lKSkpOworCisJCS8qIEJvdGggY29sdW1ucyBtdXN0IGJlIG9mIHNhbWUgdHlw ZSAqLworCQlpZiAoc3RhcnRjb2x0eXBpZCAhPSBlbmRjb2x0eXBpZCkKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJ CQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3QgYmUgb2Yg c2FtZSB0eXBlIikpKTsKKworCQkvKiBCb3RoIGNvbHVtbnMgbXVzdCBoYXZlIHRoZSBzYW1l IGNvbGxhdGlvbiAqLworCQlpZiAoc3RhcnRjb2xjb2xsYXRpb24gIT0gZW5kY29sY29sbGF0 aW9uKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9DT0xMQVRJ T05fTUlTTUFUQ0gpLAorCQkJCQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2Yg cGVyaW9kIG11c3QgaGF2ZSBzYW1lIGNvbGxhdGlvbiIpKSk7CisKKwkJcGVyaW9kLT5jb2x0 eXBpZCA9IHN0YXJ0Y29sdHlwaWQ7CisJCXBlcmlvZC0+cm5ndHlwaWQgPSBjaG9vc2VfcmFu Z2V0eXBlX2Zvcl9wZXJpb2QocGVyaW9kKTsKKwl9CisKKwlyZXR1cm4gcGVyaW9kczsKK30K KwogLyoKICAqIE1lcmdlQ2hlY2tDb25zdHJhaW50CiAgKgkJVHJ5IHRvIG1lcmdlIGFuIGlu aGVyaXRlZCBDSEVDSyBjb25zdHJhaW50IHdpdGggcHJldmlvdXMgb25lcwpAQCAtNDQyNSwx MiArNDg5OSwxMiBAQCBBbHRlclRhYmxlKEFsdGVyVGFibGVTdG10ICpzdG10LCBMT0NLTU9E RSBsb2NrbW9kZSwKICAqIGV4aXN0aW5nIHF1ZXJ5IHBsYW5zLiAgT24gdGhlIGFzc3VtcHRp b24gaXQncyBub3QgdXNlZCBmb3Igc3VjaCwgd2UKICAqIGRvbid0IGhhdmUgdG8gcmVqZWN0 IHBlbmRpbmcgQUZURVIgdHJpZ2dlcnMsIGVpdGhlci4KICAqCi0gKiBBbHNvLCBzaW5jZSB3 ZSBkb24ndCBoYXZlIGFuIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCwgdGhpcyBjYW5ub3Qg YmUKKyAqIEFsc28sIGlmIHlvdSBkb24ndCBwYXNzIGFuIEFsdGVyVGFibGVVdGlsaXR5Q29u dGV4dCwgdGhpcyBjYW5ub3QgYmUKICAqIHVzZWQgZm9yIGFueSBzdWJjb21tYW5kIHR5cGVz IHRoYXQgcmVxdWlyZSBwYXJzZSB0cmFuc2Zvcm1hdGlvbiBvcgogICogY291bGQgZ2VuZXJh dGUgc3ViY29tbWFuZHMgdGhhdCBoYXZlIHRvIGJlIHBhc3NlZCB0byBQcm9jZXNzVXRpbGl0 eS4KICAqLwogdm9pZAotQWx0ZXJUYWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlzdCAqY21k cywgYm9vbCByZWN1cnNlKQorQWx0ZXJUYWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlzdCAq Y21kcywgYm9vbCByZWN1cnNlLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQp CiB7CiAJUmVsYXRpb24JcmVsOwogCUxPQ0tNT0RFCWxvY2ttb2RlID0gQWx0ZXJUYWJsZUdl dExvY2tMZXZlbChjbWRzKTsKQEAgLTQ0MzksNyArNDkxMyw3IEBAIEFsdGVyVGFibGVJbnRl cm5hbChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSkKIAogCUV2ZW50VHJp Z2dlckFsdGVyVGFibGVSZWxpZChyZWxpZCk7CiAKLQlBVENvbnRyb2xsZXIoTlVMTCwgcmVs LCBjbWRzLCByZWN1cnNlLCBsb2NrbW9kZSwgTlVMTCk7CisJQVRDb250cm9sbGVyKE5VTEws IHJlbCwgY21kcywgcmVjdXJzZSwgbG9ja21vZGUsIGNvbnRleHQpOwogfQogCiAvKgpAQCAt NDUzMiw2ICs1MDA2LDggQEAgQWx0ZXJUYWJsZUdldExvY2tMZXZlbChMaXN0ICpjbWRzKQog CQkJY2FzZSBBVF9FbmFibGVSZXBsaWNhUnVsZToJLyogbWF5IGNoYW5nZSBTRUxFQ1QgcnVs ZXMgKi8KIAkJCWNhc2UgQVRfRW5hYmxlUnVsZTogLyogbWF5IGNoYW5nZSBTRUxFQ1QgcnVs ZXMgKi8KIAkJCWNhc2UgQVRfRGlzYWJsZVJ1bGU6CS8qIG1heSBjaGFuZ2UgU0VMRUNUIHJ1 bGVzICovCisJCQljYXNlIEFUX0FkZFBlcmlvZDogLyogc2hhcmVzIG5hbWVzcGFjZSB3aXRo IGNvbHVtbnMsIGFkZHMgY29uc3RyYWludCAqLworCQkJY2FzZSBBVF9Ecm9wUGVyaW9kOgog CQkJCWNtZF9sb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CiAJCQkJYnJlYWs7CiAK QEAgLTQ4NDgsNiArNTMyNCwxNCBAQCBBVFByZXBDbWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRp b24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAJCQkvKiBUaGlzIGNvbW1hbmQgbmV2ZXIg cmVjdXJzZXMgKi8KIAkJCXBhc3MgPSBBVF9QQVNTX0FERF9PVEhFUkNPTlNUUjsKIAkJCWJy ZWFrOworCQljYXNlIEFUX0FkZFBlcmlvZDogLyogQUxURVIgVEFCTEUgLi4uIEFERCBQRVJJ T0QgRk9SIG5hbWUgKHN0YXJ0LCBlbmQpICovCisJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNt ZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFCTEUpOworCQkJcGFzcyA9IEFUX1BBU1NfQUREX1BF UklPRDsKKwkJCWJyZWFrOworCQljYXNlIEFUX0Ryb3BQZXJpb2Q6IC8qIEFMVEVSIFRBQkxF IC4uLiBEUk9QIFBFUklPRCBGT1IgbmFtZSAqLworCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhj bWQtPnN1YnR5cGUsIHJlbCwgQVRUX1RBQkxFKTsKKwkJCXBhc3MgPSBBVF9QQVNTX0RST1A7 CisJCQlicmVhazsKIAkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCUFUU2ltcGxlUGVybWlz c2lvbnMoY21kLT5zdWJ0eXBlLCByZWwsIEFUVF9UQUJMRSB8IEFUVF9WSUVXIHwgQVRUX0ZP UkVJR05fVEFCTEUpOwogCQkJLyogU2V0IHVwIHJlY3Vyc2lvbiBmb3IgcGhhc2UgMjsgbm8g b3RoZXIgcHJlcCBuZWVkZWQgKi8KQEAgLTUyNTUsNiArNTczOSwxNCBAQCBBVEV4ZWNDbWQo TGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0Nvb2tl ZENvbHVtbkRlZmF1bHQ6CS8qIGFkZCBhIHByZS1jb29rZWQgZGVmYXVsdCAqLwogCQkJYWRk cmVzcyA9IEFURXhlY0Nvb2tlZENvbHVtbkRlZmF1bHQocmVsLCBjbWQtPm51bSwgY21kLT5k ZWYpOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfQWRkUGVyaW9kOgorCQkJYWRkcmVzcyA9IEFU RXhlY0FkZFBlcmlvZChyZWwsIChQZXJpb2REZWYgKikgY21kLT5kZWYsIGNvbnRleHQpOwor CQkJYnJlYWs7CisJCWNhc2UgQVRfRHJvcFBlcmlvZDoKKwkJCUFURXhlY0Ryb3BQZXJpb2Qo cmVsLCBjbWQtPm5hbWUsIGNtZC0+YmVoYXZpb3IsCisJCQkJCQkJCSBmYWxzZSwgZmFsc2Us CisJCQkJCQkJCSBjbWQtPm1pc3Npbmdfb2spOworCQkJYnJlYWs7CiAJCWNhc2UgQVRfQWRk SWRlbnRpdHk6CiAJCQljbWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCBy ZWwsIGNtZCwgZmFsc2UsIGxvY2ttb2RlLAogCQkJCQkJCQkJICBjdXJfcGFzcywgY29udGV4 dCk7CkBAIC02NDAyLDYgKzY4OTQsOCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhB bHRlclRhYmxlVHlwZSBjbWR0eXBlKQogCQljYXNlIEFUX0FkZENvbHVtbjoKIAkJY2FzZSBB VF9BZGRDb2x1bW5Ub1ZpZXc6CiAJCQlyZXR1cm4gIkFERCBDT0xVTU4iOworCQljYXNlIEFU X0FkZFBlcmlvZDoKKwkJCXJldHVybiAiQUREIFBFUklPRCI7CiAJCWNhc2UgQVRfQ29sdW1u RGVmYXVsdDoKIAkJY2FzZSBBVF9Db29rZWRDb2x1bW5EZWZhdWx0OgogCQkJcmV0dXJuICJB TFRFUiBDT0xVTU4gLi4uIFNFVCBERUZBVUxUIjsKQEAgLTY0MjcsNiArNjkyMSw4IEBAIGFs dGVyX3RhYmxlX3R5cGVfdG9fc3RyaW5nKEFsdGVyVGFibGVUeXBlIGNtZHR5cGUpCiAJCQly ZXR1cm4gIkFMVEVSIENPTFVNTiAuLi4gU0VUIENPTVBSRVNTSU9OIjsKIAkJY2FzZSBBVF9E cm9wQ29sdW1uOgogCQkJcmV0dXJuICJEUk9QIENPTFVNTiI7CisJCWNhc2UgQVRfRHJvcFBl cmlvZDoKKwkJCXJldHVybiAiRFJPUCBQRVJJT0QiOwogCQljYXNlIEFUX0FkZEluZGV4Ogog CQljYXNlIEFUX1JlQWRkSW5kZXg6CiAJCQlyZXR1cm4gTlVMTDsJCS8qIG5vdCByZWFsIGdy YW1tYXIgKi8KQEAgLTczOTMsMTQgKzc4ODksMjkgQEAgQVRFeGVjQWRkQ29sdW1uKExpc3Qg Kip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogLyoKICAq IElmIGEgbmV3IG9yIHJlbmFtZWQgY29sdW1uIHdpbGwgY29sbGlkZSB3aXRoIHRoZSBuYW1l IG9mIGFuIGV4aXN0aW5nCiAgKiBjb2x1bW4gYW5kIGlmX25vdF9leGlzdHMgaXMgZmFsc2Ug dGhlbiBlcnJvciBvdXQsIGVsc2UgZG8gbm90aGluZy4KKyAqCisgKiBTZWUgYWxzbyBjaGVj a19mb3JfcGVyaW9kX25hbWVfY29sbGlzaW9uLgogICovCiBzdGF0aWMgYm9vbAogY2hlY2tf Zm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lvbihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNv bG5hbWUsCiAJCQkJCQkJCWJvb2wgaWZfbm90X2V4aXN0cykKIHsKLQlIZWFwVHVwbGUJYXR0 VHVwbGU7CisJSGVhcFR1cGxlCWF0dFR1cGxlLCBwZXJUdXBsZTsKIAlpbnQJCQlhdHRudW07 CiAKKwkvKiBJZiB0aGUgbmFtZSBleGlzdHMgYXMgYSBwZXJpb2QsIHdlJ3JlIGRvbmUuICov CisJcGVyVHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoUEVSSU9ETkFNRSwKKwkJCQkJCQkgICBP YmplY3RJZEdldERhdHVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSksCisJCQkJCQkJICAgUG9p bnRlckdldERhdHVtKGNvbG5hbWUpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZChwZXJUdXBs ZSkpCisJeworCQlSZWxlYXNlU3lzQ2FjaGUocGVyVHVwbGUpOworCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJIGVycm1z ZygiY29sdW1uIG5hbWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgcGVyaW9kIG5hbWUiLAor CQkJCQkJY29sbmFtZSkpKTsKKwl9CisKIAkvKgogCSAqIHRoaXMgdGVzdCBpcyBkZWxpYmVy YXRlbHkgbm90IGF0dGlzZHJvcHBlZC1hd2FyZSwgc2luY2UgaWYgb25lIHRyaWVzIHRvCiAJ ICogYWRkIGEgY29sdW1uIG1hdGNoaW5nIGEgZHJvcHBlZCBjb2x1bW4gbmFtZSwgaXQncyBn b25uYSBmYWlsIGFueXdheS4KQEAgLTc0NDQsNiArNzk1NSw3NiBAQCBjaGVja19mb3JfY29s dW1uX25hbWVfY29sbGlzaW9uKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sbmFtZSwK IAlyZXR1cm4gdHJ1ZTsKIH0KIAorLyoKKyAqIElmIGEgbmV3IHBlcmlvZCBuYW1lIHdpbGwg Y29sbGlkZSB3aXRoIHRoZSBuYW1lIG9mIGFuIGV4aXN0aW5nIGNvbHVtbiBvcgorICogcGVy aW9kIFthbmQgaWZfbm90X2V4aXN0cyBpcyBmYWxzZV0gdGhlbiBlcnJvciBvdXQsIGVsc2Ug ZG8gbm90aGluZy4KKyAqCisgKiBTZWUgYWxzbyBjaGVja19mb3JfY29sdW1uX25hbWVfY29s bGlzaW9uLgorICovCitzdGF0aWMgYm9vbAorY2hlY2tfZm9yX3BlcmlvZF9uYW1lX2NvbGxp c2lvbihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKnBlcm5hbWUsCisJCQkJCQkJCWJvb2wg aWZfbm90X2V4aXN0cykKK3sKKwlIZWFwVHVwbGUJYXR0VHVwbGUsIHBlclR1cGxlOworCWlu dAkJCWF0dG51bTsKKworCS8qIFRPRE86IGltcGxlbWVudCBJRiBbTk9UXSBFWElTVFMgZm9y IHBlcmlvZHMgKi8KKwlBc3NlcnQoIWlmX25vdF9leGlzdHMpOworCisJLyogSWYgdGhlcmUg aXMgYWxyZWFkeSBhIHBlcmlvZCB3aXRoIHRoaXMgbmFtZSwgdGhlbiB3ZSdyZSBkb25lLiAq LworCXBlclR1cGxlID0gU2VhcmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUsCisJCQkJCQkJICAg T2JqZWN0SWRHZXREYXR1bShSZWxhdGlvbkdldFJlbGlkKHJlbCkpLAorCQkJCQkJCSAgIFBv aW50ZXJHZXREYXR1bShwZXJuYW1lKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQocGVyVHVw bGUpKQorCXsKKwkJaWYgKGlmX25vdF9leGlzdHMpCisJCXsKKwkJCVJlbGVhc2VTeXNDYWNo ZShwZXJUdXBsZSk7CisKKwkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJwZXJpb2QgXCIlc1wiIG9m IHJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmciLAorCQkJCQkJCXBl cm5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCQlyZXR1cm4gZmFs c2U7CisJCX0KKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQ TElDQVRFX0NPTFVNTiksCisJCQkJIGVycm1zZygicGVyaW9kIFwiJXNcIiBvZiByZWxhdGlv biBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLAorCQkJCQkJcGVybmFtZSwgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsKSkpKTsKKwl9CisKKwkvKgorCSAqIHRoaXMgdGVzdCBpcyBkZWxp YmVyYXRlbHkgbm90IGF0dGlzZHJvcHBlZC1hd2FyZSwgc2luY2UgaWYgb25lIHRyaWVzIHRv CisJICogYWRkIGEgY29sdW1uIG1hdGNoaW5nIGEgZHJvcHBlZCBjb2x1bW4gbmFtZSwgaXQn cyBnb25uYSBmYWlsIGFueXdheS4KKwkgKi8KKwlhdHRUdXBsZSA9IFNlYXJjaFN5c0NhY2hl MihBVFROQU1FLAorCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0oUmVsYXRpb25HZXRSZWxp ZChyZWwpKSwKKwkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0ocGVybmFtZSkpOworCWlmIChI ZWFwVHVwbGVJc1ZhbGlkKGF0dFR1cGxlKSkKKwl7CisJCWF0dG51bSA9ICgoRm9ybV9wZ19h dHRyaWJ1dGUpIEdFVFNUUlVDVChhdHRUdXBsZSkpLT5hdHRudW07CisJCVJlbGVhc2VTeXND YWNoZShhdHRUdXBsZSk7CisKKwkJLyoKKwkJICogV2UgdGhyb3cgYSBkaWZmZXJlbnQgZXJy b3IgbWVzc2FnZSBmb3IgY29uZmxpY3RzIHdpdGggc3lzdGVtIGNvbHVtbgorCQkgKiBuYW1l cywgc2luY2UgdGhleSBhcmUgbm9ybWFsbHkgbm90IHNob3duIGFuZCB0aGUgdXNlciBtaWdo dCBvdGhlcndpc2UKKwkJICogYmUgY29uZnVzZWQgYWJvdXQgdGhlIHJlYXNvbiBmb3IgdGhl IGNvbmZsaWN0LgorCQkgKi8KKwkJaWYgKGF0dG51bSA8PSAwKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkJIGVy cm1zZygicGVyaW9kIG5hbWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgc3lzdGVtIGNvbHVt biBuYW1lIiwKKwkJCQkJCQlwZXJuYW1lKSkpOworCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJIGVycm1zZygicGVyaW9k IG5hbWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgY29sdW1uIG5hbWUiLAorCQkJCQkJcGVy bmFtZSkpKTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIEluc3RhbGwgYSBj b2x1bW4ncyBkZXBlbmRlbmN5IG9uIGl0cyBkYXRhdHlwZS4KICAqLwpAQCAtODA5NSw2ICs4 Njc2LDE1NSBAQCBBVEV4ZWNDb29rZWRDb2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwgQXR0 ck51bWJlciBhdHRudW0sCiAJcmV0dXJuIGFkZHJlc3M7CiB9CiAKKy8qCisgKiBBTFRFUiBU QUJMRSBBREQgUEVSSU9ECisgKgorICogUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBwZXJp b2QuCisgKi8KK3N0YXRpYyBPYmplY3RBZGRyZXNzCitBVEV4ZWNBZGRQZXJpb2QoUmVsYXRp b24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpj b250ZXh0KQoreworCVJlbGF0aW9uCQlhdHRyZWxhdGlvbjsKKwlPYmplY3RBZGRyZXNzCWFk ZHJlc3MgPSBJbnZhbGlkT2JqZWN0QWRkcmVzczsKKwlDb25zdHJhaW50CSAgICpjb25zdHI7 CisJQ29sdW1uRGVmCSAgICpyYW5nZWNvbDsKKwlPaWQJCQkJY29ub2lkLCBwZXJpb2RvaWQ7 CisJTGlzdAkJICAgKmNtZHMgPSBOSUw7CisJQWx0ZXJUYWJsZUNtZCAgKmNtZDsKKworCS8q CisJICogUEVSSU9EIEZPUiBTWVNURU1fVElNRSBpcyBub3QgeWV0IGltcGxlbWVudGVkLCBi dXQgbWFrZSBzdXJlIG5vIG9uZSB1c2VzCisJICogdGhlIG5hbWUuCisJICovCisJaWYgKHN0 cmNtcChwZXJpb2QtPnBlcmlvZG5hbWUsICJzeXN0ZW1fdGltZSIpID09IDApCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkJCSBlcnJtc2coIlBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1cHBv cnRlZCIpKSk7CisKKwkvKiBUaGUgcGVyaW9kIG5hbWUgbXVzdCBub3QgYWxyZWFkeSBleGlz dCAqLworCSh2b2lkKSBjaGVja19mb3JfcGVyaW9kX25hbWVfY29sbGlzaW9uKHJlbCwgcGVy aW9kLT5wZXJpb2RuYW1lLCBmYWxzZSk7CisKKwkvKiBQYXJzZSBvcHRpb25zICovCisJdHJh bnNmb3JtUGVyaW9kT3B0aW9ucyhwZXJpb2QpOworCisJYXR0cmVsYXRpb24gPSB0YWJsZV9v cGVuKEF0dHJpYnV0ZVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCVZhbGlkYXRl UGVyaW9kKHJlbCwgcGVyaW9kKTsKKworCXBlcmlvZC0+cm5ndHlwaWQgPSBjaG9vc2VfcmFu Z2V0eXBlX2Zvcl9wZXJpb2QocGVyaW9kKTsKKworCS8qIE1ha2UgdGhlIENIRUNLIGNvbnN0 cmFpbnQgKi8KKwljb25zdHIgPSBtYWtlX2NvbnN0cmFpbnRfZm9yX3BlcmlvZChyZWwsIHBl cmlvZCk7CisJY21kID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJY21kLT5zdWJ0eXBl ID0gQVRfQWRkQ29uc3RyYWludDsKKwljbWQtPmRlZiA9IChOb2RlICopIGNvbnN0cjsKKwlj bWRzID0gbGFwcGVuZChjbWRzLCBjbWQpOworCUFsdGVyVGFibGVJbnRlcm5hbChSZWxhdGlv bkdldFJlbGlkKHJlbCksIGNtZHMsIHRydWUsIGNvbnRleHQpOworCWNvbm9pZCA9IGdldF9y ZWxhdGlvbl9jb25zdHJhaW50X29pZChSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+ Y29uc3RyYWludG5hbWUsIGZhbHNlKTsKKworCS8qIE1ha2UgdGhlIHJhbmdlIGNvbHVtbiAq LworCXJhbmdlY29sID0gbWFrZV9yYW5nZV9jb2x1bW5fZm9yX3BlcmlvZChwZXJpb2QpOwor CWNtZCA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOworCWNtZC0+c3VidHlwZSA9IEFUX0Fk ZENvbHVtbjsKKwljbWQtPmRlZiA9IChOb2RlICopIHJhbmdlY29sOworCWNtZC0+bmFtZSA9 IHBlcmlvZC0+cGVyaW9kbmFtZTsKKwljbWQtPnJlY3Vyc2UgPSBmYWxzZTsgLyogbm8sIGxl dCB0aGUgUEVSSU9EIHJlY3Vyc2UgaW5zdGVhZCAqLworCUFsdGVyVGFibGVJbnRlcm5hbChS ZWxhdGlvbkdldFJlbGlkKHJlbCksIGxpc3RfbWFrZTEoY21kKSwgdHJ1ZSwgY29udGV4dCk7 CisJcGVyaW9kLT5ybmdhdHRudW0gPSBnZXRfYXR0bnVtKFJlbGF0aW9uR2V0UmVsaWQocmVs KSwgcGVyaW9kLT5wZXJpb2RuYW1lKTsKKwlpZiAocGVyaW9kLT5ybmdhdHRudW0gPT0gSW52 YWxpZEF0dHJOdW1iZXIpCisJCWVsb2coRVJST1IsICJtaXNzaW5nIGF0dHJpYnV0ZSAlcyIs IHBlcmlvZC0+cGVyaW9kbmFtZSk7CisKKwkvKiBTYXZlIHRoZSBQZXJpb2QgKi8KKwlwZXJp b2RvaWQgPSBTdG9yZVBlcmlvZChyZWwsIHBlcmlvZC0+cGVyaW9kbmFtZSwgcGVyaW9kLT5z dGFydGF0dG51bSwgcGVyaW9kLT5lbmRhdHRudW0sIHBlcmlvZC0+cm5nYXR0bnVtLCBjb25v aWQpOworCisJT2JqZWN0QWRkcmVzc1NldChhZGRyZXNzLCBQZXJpb2RSZWxhdGlvbklkLCBw ZXJpb2RvaWQpOworCisJdGFibGVfY2xvc2UoYXR0cmVsYXRpb24sIFJvd0V4Y2x1c2l2ZUxv Y2spOworCisJcmV0dXJuIGFkZHJlc3M7Cit9CisKKy8qCisgKiBBTFRFUiBUQUJMRSBEUk9Q IFBFUklPRAorICoKKyAqIExpa2UgRFJPUCBDT0xVTU4sIHdlIGNhbid0IHVzZSB0aGUgbm9y bWFsIEFMVEVSIFRBQkxFIHJlY3Vyc2lvbiBtZWNoYW5pc20uCisgKi8KK3N0YXRpYyB2b2lk CitBVEV4ZWNEcm9wUGVyaW9kKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVyaW9kTmFt ZSwKKwkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwKKwkJCQkJIGJvb2wgcmVjdXJzZSwg Ym9vbCByZWN1cnNpbmcsCisJCQkJCSBib29sIG1pc3Npbmdfb2spCit7CisJUmVsYXRpb24J cGdfcGVyaW9kOworCUZvcm1fcGdfcGVyaW9kIHBlcmlvZDsKKwlTeXNTY2FuRGVzYyBzY2Fu OworCVNjYW5LZXlEYXRhIGtleTsKKwlIZWFwVHVwbGUJdHVwbGU7CisJYm9vbAkJZm91bmQg PSBmYWxzZTsKKworCS8qIEF0IHRvcCBsZXZlbCwgcGVybWlzc2lvbiBjaGVjayB3YXMgZG9u ZSBpbiBBVFByZXBDbWQsIGVsc2UgZG8gaXQgKi8KKwlpZiAocmVjdXJzaW5nKQorCQlBVFNp bXBsZVBlcm1pc3Npb25zKEFUX0Ryb3BQZXJpb2QsIHJlbCwgQVRUX1RBQkxFKTsKKworCXBn X3BlcmlvZCA9IHRhYmxlX29wZW4oUGVyaW9kUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9j ayk7CisKKwkvKgorCSAqIEZpbmQgYW5kIGRyb3AgdGhlIHRhcmdldCBwZXJpb2QKKwkgKi8K KwlTY2FuS2V5SW5pdCgma2V5LAorCQkJCUFudW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJ CUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVt KFJlbGF0aW9uR2V0UmVsaWQocmVsKSkpOworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4o cGdfcGVyaW9kLCBQZXJpb2RSZWxpZE5hbWVJbmRleElkLAorCQkJCQkJCSAgdHJ1ZSwgTlVM TCwgMSwgJmtleSk7CisKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9IHN5c3Rh YmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJT2JqZWN0QWRkcmVzcyBwZXJvYmo7CisKKwkJ cGVyaW9kID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCWlmIChz dHJjbXAoTmFtZVN0cihwZXJpb2QtPnBlcm5hbWUpLCBwZXJpb2ROYW1lKSAhPSAwKQorCQkJ Y29udGludWU7CisKKwkJLyoKKwkJICogUGVyZm9ybSB0aGUgYWN0dWFsIHBlcmlvZCBkZWxl dGlvbgorCQkgKi8KKwkJcGVyb2JqLmNsYXNzSWQgPSBQZXJpb2RSZWxhdGlvbklkOworCQlw ZXJvYmoub2JqZWN0SWQgPSBwZXJpb2QtPm9pZDsKKwkJcGVyb2JqLm9iamVjdFN1YklkID0g MDsKKworCQlwZXJmb3JtRGVsZXRpb24oJnBlcm9iaiwgYmVoYXZpb3IsIDApOworCisJCWZv dW5kID0gdHJ1ZTsKKworCQkvKiBwZXJpb2QgZm91bmQgYW5kIGRyb3BwZWQgLS0gbm8gbmVl ZCB0byBrZWVwIGxvb3BpbmcgKi8KKwkJYnJlYWs7CisJfQorCisJc3lzdGFibGVfZW5kc2Nh bihzY2FuKTsKKworCWlmICghZm91bmQpCisJeworCQlpZiAoIW1pc3Npbmdfb2spCisJCXsK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09C SkVDVCksCisJCQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgb24gcmVsYXRpb24gXCIlc1wi IGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQlwZXJpb2ROYW1lLCBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWwpKSkpOworCQl9CisJCWVsc2UKKwkJeworCQkJZXJlcG9ydChOT1RJQ0Us CisJCQkJCShlcnJtc2coInBlcmlvZCBcIiVzXCIgb24gcmVsYXRpb24gXCIlc1wiIGRvZXMg bm90IGV4aXN0LCBza2lwcGluZyIsCisJCQkJCQkJcGVyaW9kTmFtZSwgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsKSkpKTsKKwkJCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgUm93RXhj bHVzaXZlTG9jayk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwl0YWJsZV9jbG9zZShwZ19w ZXJpb2QsIFJvd0V4Y2x1c2l2ZUxvY2spOworfQorCiAvKgogICogQUxURVIgVEFCTEUgQUxU RVIgQ09MVU1OIEFERCBJREVOVElUWQogICoKQEAgLTE0MTY2LDYgKzE0ODk2LDE1IEBAIFJl bWVtYmVyQWxsRGVwZW5kZW50Rm9yUmVidWlsZGluZyhBbHRlcmVkVGFibGVJbmZvICp0YWIs IEFsdGVyVGFibGVUeXBlIHN1YnR5cGUsCiAJCQkJUmVtZW1iZXJDb25zdHJhaW50Rm9yUmVi dWlsZGluZyhmb3VuZE9iamVjdC5vYmplY3RJZCwgdGFiKTsKIAkJCQlicmVhazsKIAorCQkJ Y2FzZSBPQ0xBU1NfUEVSSU9EOgorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJjYW5u b3QgYWx0ZXIgdHlwZSBvZiBhIGNvbHVtbiB1c2VkIGJ5IGEgcGVyaW9kIiksCisJCQkJCQkg ZXJyZGV0YWlsKCIlcyBkZXBlbmRzIG9uIGNvbHVtbiBcIiVzXCIiLAorCQkJCQkJCQkgICBn ZXRPYmplY3REZXNjcmlwdGlvbigmZm91bmRPYmplY3QsIGZhbHNlKSwKKwkJCQkJCQkJICAg Y29sTmFtZSkpKTsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBPQ0xBU1NfUkVXUklURToKIAkJ CQkvKiBYWFggc29tZWRheSBzZWUgaWYgd2UgY2FuIGNvcGUgd2l0aCByZXZpc2luZyB2aWV3 cyAqLwogCQkJCWlmIChzdWJ0eXBlID09IEFUX0FsdGVyQ29sdW1uVHlwZSkKQEAgLTE2MDQy LDcgKzE2NzgxLDcgQEAgQWx0ZXJUYWJsZU1vdmVBbGwoQWx0ZXJUYWJsZU1vdmVBbGxTdG10 ICpzdG10KQogCiAJCUV2ZW50VHJpZ2dlckFsdGVyVGFibGVTdGFydCgoTm9kZSAqKSBzdG10 KTsKIAkJLyogT0lEIGlzIHNldCBieSBBbHRlclRhYmxlSW50ZXJuYWwgKi8KLQkJQWx0ZXJU YWJsZUludGVybmFsKGxmaXJzdF9vaWQobCksIGNtZHMsIGZhbHNlKTsKKwkJQWx0ZXJUYWJs ZUludGVybmFsKGxmaXJzdF9vaWQobCksIGNtZHMsIGZhbHNlLCBOVUxMKTsKIAkJRXZlbnRU cmlnZ2VyQWx0ZXJUYWJsZUVuZCgpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmlldy5jCmluZGV4IGRj ZTg5OGM3NTFjLi41NGJkYjRiZGVhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdmlldy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZpZXcuYwpAQCAtMTY5LDcg KzE2OSw3IEBAIERlZmluZVZpcnR1YWxSZWxhdGlvbihSYW5nZVZhciAqcmVsYXRpb24sIExp c3QgKnRsaXN0LCBib29sIHJlcGxhY2UsCiAJCQl9CiAKIAkJCS8qIEV2ZW50VHJpZ2dlckFs dGVyVGFibGVTdGFydCBjYWxsZWQgYnkgUHJvY2Vzc1V0aWxpdHlTbG93ICovCi0JCQlBbHRl clRhYmxlSW50ZXJuYWwodmlld09pZCwgYXRjbWRzLCB0cnVlKTsKKwkJCUFsdGVyVGFibGVJ bnRlcm5hbCh2aWV3T2lkLCBhdGNtZHMsIHRydWUsIE5VTEwpOwogCiAJCQkvKiBNYWtlIHRo ZSBuZXcgdmlldyBjb2x1bW5zIHZpc2libGUgKi8KIAkJCUNvbW1hbmRDb3VudGVySW5jcmVt ZW50KCk7CkBAIC0yMDEsNyArMjAxLDcgQEAgRGVmaW5lVmlydHVhbFJlbGF0aW9uKFJhbmdl VmFyICpyZWxhdGlvbiwgTGlzdCAqdGxpc3QsIGJvb2wgcmVwbGFjZSwKIAkJYXRjbWRzID0g bGlzdF9tYWtlMShhdGNtZCk7CiAKIAkJLyogRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVN0YXJ0 IGNhbGxlZCBieSBQcm9jZXNzVXRpbGl0eVNsb3cgKi8KLQkJQWx0ZXJUYWJsZUludGVybmFs KHZpZXdPaWQsIGF0Y21kcywgdHJ1ZSk7CisJCUFsdGVyVGFibGVJbnRlcm5hbCh2aWV3T2lk LCBhdGNtZHMsIHRydWUsIE5VTEwpOwogCiAJCS8qCiAJCSAqIFRoZXJlIGlzIHZlcnkgbGl0 dGxlIHRvIGRvIGhlcmUgdG8gdXBkYXRlIHRoZSB2aWV3J3MgZGVwZW5kZW5jaWVzLgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9u b2Rlcy9ub2RlRnVuY3MuYwppbmRleCA2YzE5ODQ0ZTE3ZS4uNjc2ZWQ4NWQyMDMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5k L25vZGVzL25vZGVGdW5jcy5jCkBAIC0xNjM5LDYgKzE2MzksOSBAQCBleHByTG9jYXRpb24o Y29uc3QgTm9kZSAqZXhwcikKIAkJY2FzZSBUX0NvbnN0cmFpbnQ6CiAJCQlsb2MgPSAoKGNv bnN0IENvbnN0cmFpbnQgKikgZXhwciktPmxvY2F0aW9uOwogCQkJYnJlYWs7CisJCWNhc2Ug VF9QZXJpb2REZWY6CisJCQlsb2MgPSAoKGNvbnN0IFBlcmlvZERlZiAqKSBleHByKS0+bG9j YXRpb247CisJCQlicmVhazsKIAkJY2FzZSBUX0Z1bmN0aW9uUGFyYW1ldGVyOgogCQkJLyog anVzdCB1c2UgdHlwZW5hbWUncyBsb2NhdGlvbiAqLwogCQkJbG9jID0gZXhwckxvY2F0aW9u KChOb2RlICopICgoY29uc3QgRnVuY3Rpb25QYXJhbWV0ZXIgKikgZXhwciktPmFyZ1R5cGUp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKaW5kZXggYzg1YjhiMDk0ZWMuLmEwYTZmNTY4MWU0IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkKQEAgLTU5NSw3ICs1OTUsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2 ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkp OwogJXR5cGUgPGtleXdvcmQ+IGNvbF9uYW1lX2tleXdvcmQgcmVzZXJ2ZWRfa2V5d29yZAog JXR5cGUgPGtleXdvcmQ+IGJhcmVfbGFiZWxfa2V5d29yZAogCi0ldHlwZSA8bm9kZT4JVGFi bGVDb25zdHJhaW50IFRhYmxlTGlrZUNsYXVzZQorJXR5cGUgPG5vZGU+CVRhYmxlQ29uc3Ry YWludCBUYWJsZUxpa2VDbGF1c2UgVGFibGVQZXJpb2QKICV0eXBlIDxpdmFsPglUYWJsZUxp a2VPcHRpb25MaXN0IFRhYmxlTGlrZU9wdGlvbgogJXR5cGUgPHN0cj4JCWNvbHVtbl9jb21w cmVzc2lvbiBvcHRfY29sdW1uX2NvbXByZXNzaW9uIGNvbHVtbl9zdG9yYWdlIG9wdF9jb2x1 bW5fc3RvcmFnZQogJXR5cGUgPGxpc3Q+CUNvbFF1YWxMaXN0CkBAIC0yNjI1LDYgKzI2MjUs MjQgQEAgYWx0ZXJfdGFibGVfY21kOgogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSAkNDsKIAkJ CQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBB REQgUEVSSU9EIEZPUiA8bmFtZT4gKDxuYW1lPiwgPG5hbWU+KSAqLworCQkJfCBBRERfUCBU YWJsZVBlcmlvZAorCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFs dGVyVGFibGVDbWQpOworCQkJCQluLT5zdWJ0eXBlID0gQVRfQWRkUGVyaW9kOworCQkJCQlu LT5kZWYgPSAkMjsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJLyogQUxURVIg VEFCTEUgPG5hbWU+IERST1AgUEVSSU9EIEZPUiA8bmFtZT4gW1JFU1RSSUNUfENBU0NBREVd ICovCisJCQl8IERST1AgUEVSSU9EIEZPUiBuYW1lIG9wdF9kcm9wX2JlaGF2aW9yCisJCQkJ eworCQkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJ CQkJCW4tPnN1YnR5cGUgPSBBVF9Ecm9wUGVyaW9kOworCQkJCQluLT5uYW1lID0gJDQ7CisJ CQkJCW4tPmJlaGF2aW9yID0gJDU7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSBmYWxzZTsKKwkJ CQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQogCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IEFE RCBDT05TVFJBSU5UIC4uLiAqLwogCQkJfCBBRERfUCBUYWJsZUNvbnN0cmFpbnQKIAkJCQl7 CkBAIC0zNzQ5LDggKzM3NjcsMTAgQEAgVGFibGVFbGVtZW50OgogCQkJY29sdW1uRGVmCQkJ CQkJCXsgJCQgPSAkMTsgfQogCQkJfCBUYWJsZUxpa2VDbGF1c2UJCQkJCXsgJCQgPSAkMTsg fQogCQkJfCBUYWJsZUNvbnN0cmFpbnQJCQkJCXsgJCQgPSAkMTsgfQorCQkJfCBUYWJsZVBl cmlvZAkJCQkJCXsgJCQgPSAkMTsgfQogCQk7CiAKKwogVHlwZWRUYWJsZUVsZW1lbnQ6CiAJ CQljb2x1bW5PcHRpb25zCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8IFRhYmxlQ29uc3RyYWlu dAkJCQkJeyAkJCA9ICQxOyB9CkBAIC00MTAyLDYgKzQxMjIsMTkgQEAgVGFibGVMaWtlT3B0 aW9uOgogCQk7CiAKIAorVGFibGVQZXJpb2Q6CisJCQlQRVJJT0QgRk9SIG5hbWUgJygnIG5h bWUgJywnIG5hbWUgJyknIG9wdF9kZWZpbml0aW9uCisJCQkJeworCQkJCQlQZXJpb2REZWYg Km4gPSBtYWtlTm9kZShQZXJpb2REZWYpOworCQkJCQluLT5wZXJpb2RuYW1lID0gJDM7CisJ CQkJCW4tPnN0YXJ0Y29sbmFtZSA9ICQ1OworCQkJCQluLT5lbmRjb2xuYW1lID0gJDc7CisJ CQkJCW4tPm9wdGlvbnMgPSAkOTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQg PSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCiAvKiBDb25zdHJhaW50RWxlbSBzcGVjaWZp ZXMgY29uc3RyYWludCBzeW50YXggd2hpY2ggaXMgbm90IGVtYmVkZGVkIGludG8KICAqCWEg Y29sdW1uIGRlZmluaXRpb24uIENvbENvbnN0cmFpbnRFbGVtIHNwZWNpZmllcyB0aGUgZW1i ZWRkZWQgZm9ybS4KICAqIC0gdGhvbWFzIDE5OTctMTItMDMKQEAgLTcxNjAsNiArNzE5Mywx NCBAQCBDb21tZW50U3RtdDoKIAkJCQkJbi0+Y29tbWVudCA9ICQ5OwogCQkJCQkkJCA9IChO b2RlICopIG47CiAJCQkJfQorCQkJfCBDT01NRU5UIE9OIFBFUklPRCBhbnlfbmFtZSBJUyBj b21tZW50X3RleHQKKwkJCQl7CisJCQkJCUNvbW1lbnRTdG10ICpuID0gbWFrZU5vZGUoQ29t bWVudFN0bXQpOworCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1BFUklPRDsKKwkJCQkJbi0+ b2JqZWN0ID0gKE5vZGUgKikgJDQ7CisJCQkJCW4tPmNvbW1lbnQgPSAkNjsKKwkJCQkJJCQg PSAoTm9kZSAqKSBuOworCQkJCX0KIAkJCXwgQ09NTUVOVCBPTiBMQVJHRV9QIE9CSkVDVF9Q IE51bWVyaWNPbmx5IElTIGNvbW1lbnRfdGV4dAogCQkJCXsKIAkJCQkJQ29tbWVudFN0bXQg Km4gPSBtYWtlTm9kZShDb21tZW50U3RtdCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxh dGlvbi5jCmluZGV4IDM0YTBlYzU5MDE5Li4xN2U4NWE3YzgzYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3JlbGF0aW9uLmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJhY2Nl c3MvdGFibGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL2hlYXAuaCIKICNpbmNsdWRlICJjYXRh bG9nL25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1 ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgpAQCAtMzE4OSw2ICszMTkwLDcgQEAgZXhwYW5kTlNJ dGVtQXR0cnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRl bSwKIAkJCQkgIGludCBzdWJsZXZlbHNfdXAsIGJvb2wgcmVxdWlyZV9jb2xfcHJpdnMsIGlu dCBsb2NhdGlvbikKIHsKIAlSYW5nZVRibEVudHJ5ICpydGUgPSBuc2l0ZW0tPnBfcnRlOwor CUJpdG1hcHNldCAgKnBlcmlvZGF0dHMgPSBOVUxMOwogCVJURVBlcm1pc3Npb25JbmZvICpw ZXJtaW5mbyA9IG5zaXRlbS0+cF9wZXJtaW5mbzsKIAlMaXN0CSAgICpuYW1lcywKIAkJCSAg ICp2YXJzOwpAQCAtMzIxMiwxMiArMzIxNCwyMCBAQCBleHBhbmROU0l0ZW1BdHRycyhQYXJz ZVN0YXRlICpwc3RhdGUsIFBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVtLAogCQlwZXJtaW5m by0+cmVxdWlyZWRQZXJtcyB8PSBBQ0xfU0VMRUNUOwogCX0KIAorCS8qIEdldCBQRVJJT0Qg Y29sdW1ucyB0byBleGNsdWRlICovCisJaWYgKHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJ T04pCisJCXBlcmlvZGF0dHMgPSBnZXRfcGVyaW9kX2F0dG5vcyhydGUtPnJlbGlkKTsKKwog CWZvcmJvdGgobmFtZSwgbmFtZXMsIHZhciwgdmFycykKIAl7CiAJCWNoYXIJICAgKmxhYmVs ID0gc3RyVmFsKGxmaXJzdChuYW1lKSk7CiAJCVZhcgkJICAgKnZhcm5vZGUgPSAoVmFyICop IGxmaXJzdCh2YXIpOwogCQlUYXJnZXRFbnRyeSAqdGU7CiAKKwkJLyogSWYgdGhpcyBjb2x1 bW4gaXMgZnJvbSBhIFBFUklPRCwgc2tpcCBpdCAqLworCQlpZiAoYm1zX2lzX21lbWJlcihw c3RhdGUtPnBfbmV4dF9yZXNubywgcGVyaW9kYXR0cykpCisJCQkJY29udGludWU7CisKIAkJ dGUgPSBtYWtlVGFyZ2V0RW50cnkoKEV4cHIgKikgdmFybm9kZSwKIAkJCQkJCQkgKEF0dHJO dW1iZXIpIHBzdGF0ZS0+cF9uZXh0X3Jlc25vKyssCiAJCQkJCQkJIGxhYmVsLApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggMDc3MmEwMjEwZTcuLjg0ZGYxZDMyMTky IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTM3LDYgKzM3LDcgQEAK ICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX29wY2xhc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N0YXRp c3RpY19leHQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJj b21tYW5kcy9jb21tZW50LmgiCkBAIC04MCw2ICs4MSw3IEBAIHR5cGVkZWYgc3RydWN0CiAJ Ym9vbAkJaXNmb3JlaWduOwkJLyogdHJ1ZSBpZiBDUkVBVEUvQUxURVIgRk9SRUlHTiBUQUJM RSAqLwogCWJvb2wJCWlzYWx0ZXI7CQkvKiB0cnVlIGlmIGFsdGVyaW5nIGV4aXN0aW5nIHRh YmxlICovCiAJTGlzdAkgICAqY29sdW1uczsJCS8qIENvbHVtbkRlZiBpdGVtcyAqLworCUxp c3QJICAgKnBlcmlvZHM7CQkvKiBQZXJpb2REZWYgaXRlbXMgKi8KIAlMaXN0CSAgICpja2Nv bnN0cmFpbnRzOwkvKiBDSEVDSyBjb25zdHJhaW50cyAqLwogCUxpc3QJICAgKm5uY29uc3Ry YWludHM7CS8qIE5PVCBOVUxMIGNvbnN0cmFpbnRzICovCiAJTGlzdAkgICAqZmtjb25zdHJh aW50czsJLyogRk9SRUlHTiBLRVkgY29uc3RyYWludHMgKi8KQEAgLTExMSw2ICsxMTMsOCBA QCB0eXBlZGVmIHN0cnVjdAogCiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Db2x1bW5EZWZpbml0 aW9uKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkgIENvbHVtbkRlZiAqY29s dW1uKTsKK3N0YXRpYyB2b2lkIHRyYW5zZm9ybVRhYmxlUGVyaW9kKENyZWF0ZVN0bXRDb250 ZXh0ICpjeHQsCisJCQkJCQkJCSBQZXJpb2REZWYgKnBlcmlvZCk7CiBzdGF0aWMgdm9pZCB0 cmFuc2Zvcm1UYWJsZUNvbnN0cmFpbnQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwKIAkJCQkJ CQkJCSBDb25zdHJhaW50ICpjb25zdHJhaW50KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybVRh YmxlTGlrZUNsYXVzZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LApAQCAtMjQwLDYgKzI0NCw3 IEBAIHRyYW5zZm9ybUNyZWF0ZVN0bXQoQ3JlYXRlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAq cXVlcnlTdHJpbmcpCiAJY3h0LmluaFJlbGF0aW9ucyA9IHN0bXQtPmluaFJlbGF0aW9uczsK IAljeHQuaXNhbHRlciA9IGZhbHNlOwogCWN4dC5jb2x1bW5zID0gTklMOworCWN4dC5wZXJp b2RzID0gTklMOwogCWN4dC5ja2NvbnN0cmFpbnRzID0gTklMOwogCWN4dC5ubmNvbnN0cmFp bnRzID0gTklMOwogCWN4dC5ma2NvbnN0cmFpbnRzID0gTklMOwpAQCAtMjgwLDYgKzI4NSwx MCBAQCB0cmFuc2Zvcm1DcmVhdGVTdG10KENyZWF0ZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIg KnF1ZXJ5U3RyaW5nKQogCQkJCXRyYW5zZm9ybUNvbHVtbkRlZmluaXRpb24oJmN4dCwgKENv bHVtbkRlZiAqKSBlbGVtZW50KTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBUX1BlcmlvZERl ZjoKKwkJCQl0cmFuc2Zvcm1UYWJsZVBlcmlvZCgmY3h0LCAoUGVyaW9kRGVmICopIGVsZW1l bnQpOworCQkJCWJyZWFrOworCiAJCQljYXNlIFRfQ29uc3RyYWludDoKIAkJCQl0cmFuc2Zv cm1UYWJsZUNvbnN0cmFpbnQoJmN4dCwgKENvbnN0cmFpbnQgKikgZWxlbWVudCk7CiAJCQkJ YnJlYWs7CkBAIC0zNDcsNiArMzU2LDcgQEAgdHJhbnNmb3JtQ3JlYXRlU3RtdChDcmVhdGVT dG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZykKIAkgKiBPdXRwdXQgcmVzdWx0 cy4KIAkgKi8KIAlzdG10LT50YWJsZUVsdHMgPSBjeHQuY29sdW1uczsKKwlzdG10LT5wZXJp b2RzID0gY3h0LnBlcmlvZHM7CiAJc3RtdC0+Y29uc3RyYWludHMgPSBjeHQuY2tjb25zdHJh aW50czsKIAlzdG10LT5ubmNvbnN0cmFpbnRzID0gY3h0Lm5uY29uc3RyYWludHM7CiAKQEAg LTkxMyw2ICs5MjMsMTEzIEBAIHRyYW5zZm9ybUNvbHVtbkRlZmluaXRpb24oQ3JlYXRlU3Rt dENvbnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4pCiAJfQogfQogCit2b2lkCit0cmFu c2Zvcm1QZXJpb2RPcHRpb25zKFBlcmlvZERlZiAqcGVyaW9kKQoreworCUxpc3RDZWxsICAg Km9wdGlvbjsKKwlEZWZFbGVtCSAgICpkY29uc3RyYWludG5hbWUgPSBOVUxMOworCURlZkVs ZW0JICAgKmRyYW5nZXR5cGVuYW1lID0gTlVMTDsKKworCWZvcmVhY2gob3B0aW9uLCBwZXJp b2QtPm9wdGlvbnMpCisJeworCQlEZWZFbGVtICAgICpkZWZlbCA9IChEZWZFbGVtICopIGxm aXJzdChvcHRpb24pOworCisJCWlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJjaGVja19j b25zdHJhaW50X25hbWUiKSA9PSAwKQorCQl7CisJCQlpZiAoZGNvbnN0cmFpbnRuYW1lKQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkJCQkgZXJybXNnKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucyIp KSk7CisJCQlkY29uc3RyYWludG5hbWUgPSBkZWZlbDsKKwkJfQorCQllbHNlIGlmIChzdHJj bXAoZGVmZWwtPmRlZm5hbWUsICJyYW5nZXR5cGUiKSA9PSAwKQorCQl7CisJCQlpZiAoZHJh bmdldHlwZW5hbWUpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVu ZGFudCBvcHRpb25zIikpKTsKKwkJCWRyYW5nZXR5cGVuYW1lID0gZGVmZWw7CisJCX0KKwkJ ZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhf RVJST1IpLAorCQkJCQkgZXJybXNnKCJvcHRpb24gXCIlc1wiIG5vdCByZWNvZ25pemVkIiwg ZGVmZWwtPmRlZm5hbWUpKSk7CisJfQorCisJaWYgKGRjb25zdHJhaW50bmFtZSAhPSBOVUxM KQorCQlwZXJpb2QtPmNvbnN0cmFpbnRuYW1lID0gZGVmR2V0U3RyaW5nKGRjb25zdHJhaW50 bmFtZSk7CisJZWxzZQorCQlwZXJpb2QtPmNvbnN0cmFpbnRuYW1lID0gTlVMTDsKKworCWlm IChkcmFuZ2V0eXBlbmFtZSAhPSBOVUxMKQorCQlwZXJpb2QtPnJhbmdldHlwZW5hbWUgPSBk ZWZHZXRTdHJpbmcoZHJhbmdldHlwZW5hbWUpOworCWVsc2UKKwkJcGVyaW9kLT5yYW5nZXR5 cGVuYW1lID0gTlVMTDsKK30KKworLyoKKyAqIHRyYW5zZm9ybVRhYmxlUGVyaW9kCisgKgkJ dHJhbnNmb3JtIGEgUGVyaW9kRGVmIG5vZGUgd2l0aGluIENSRUFURSBUQUJMRSBvciBBTFRF UiBUQUJMRQorICoJCVRPRE86IERvZXMgQUxURVIgVEFCTEUgcmVhbGx5IGNhbGwgdXM/PyBJ dCBkb2Vzbid0IHNlZW0gbGlrZSBpdCBkb2VzLiBNYXliZSBpdCBzaG91bGQuIERpZCBpdCBp biBWaWsncyBvcmlnaW5hbCBwYXRjaD8KKyAqLworc3RhdGljIHZvaWQKK3RyYW5zZm9ybVRh YmxlUGVyaW9kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBlcmlvZERlZiAqcGVyaW9kKQor eworCS8vIE9pZAkJCWNvbHR5cGlkOworCS8vIENvbHVtbkRlZiAgKmNvbDsKKwkvLyBMaXN0 Q2VsbCAgICpjb2x1bW5zOworCisJaWYgKHN0cmNtcChwZXJpb2QtPnBlcmlvZG5hbWUsICJz eXN0ZW1fdGltZSIpID09IDApCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coIlBFUklPRCBG T1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1cHBvcnRlZCIpLAorCQkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKGN4dC0+cHN0YXRlLAorCQkJCQkJCQkJCXBlcmlvZC0+bG9jYXRpb24pKSk7CisK KwlpZiAoc3RyY21wKHBlcmlvZC0+c3RhcnRjb2xuYW1lLCBwZXJpb2QtPmVuZGNvbG5hbWUp ID09IDApCisJCWVyZXBvcnQoRVJST1IsIChlcnJtc2coImNvbHVtbiBcIiVzXCIgY2FuJ3Qg YmUgdGhlIHN0YXJ0IGFuZCBlbmQgY29sdW1uIGZvciBwZXJpb2QgXCIlc1wiIiwKKwkJCQkJ CXBlcmlvZC0+c3RhcnRjb2xuYW1lLCBwZXJpb2QtPnBlcmlvZG5hbWUpKSk7CisKKwkvKgor CSAqIERldGVybWluZSB0aGUgY29sdW1uIGluZm8gYW5kIHJhbmdlIHR5cGUgc28gdGhhdCB0 cmFuc2Zvcm1JbmRleENvbnN0cmFpbnRzCisJICoga25vd3MgaG93IHRvIGNyZWF0ZSBQUklN QVJZIEtFWS9VTklRVUUgY29uc3RyYWludHMgdXNpbmcgdGhpcyBQRVJJT0QuCisJICovCisJ dHJhbnNmb3JtUGVyaW9kT3B0aW9ucyhwZXJpb2QpOworCisJLyoKKwkgKiBGaW5kIGEgc3Vp dGFibGUgcmFuZ2UgdHlwZSBmb3Igb3BlcmF0aW9ucyBpbnZvbHZpbmcgdGhpcyBwZXJpb2Qu CisJICogVXNlIHRoZSByYW5nZXR5cGUgb3B0aW9uIGlmIHByb3ZpZGVkLCBvdGhlcndpc2Ug dHJ5IHRvIGZpbmQgYQorCSAqIG5vbi1hbWJpZ3VvdXMgZXhpc3RpbmcgdHlwZS4KKwkgKi8K KworI2lmZGVmIGFzZHNkZmEKKwkvKiBGaXJzdCBmaW5kIG91dCB0aGUgdHlwZSBvZiB0aGUg cGVyaW9kJ3MgY29sdW1ucyAqLworCS8vIFRPRE86IEknbSBkb2luZyB0aGlzIGluIERlZmlu ZVJlbGF0aW9uIG5vdywKKwkvLyB3aGljaCBzZWVtcyBsaWtlIGEgYmV0dGVyIHBsYWNlIHNp bmNlIGl0IGtub3dzIGFib3V0IGluaGVyaXRlZCBjb2x1bW5zLgorCXBlcmlvZC0+Y29sdHlw aWQgPSBJbnZhbGlkT2lkOworCXBlcmlvZC0+cm5ndHlwaWQgPSBJbnZhbGlkT2lkOworCWZv cmVhY2ggKGNvbHVtbnMsIGN4dC0+Y29sdW1ucykKKwl7CisJCWNvbCA9IChDb2x1bW5EZWYg KikgbGZpcnN0KGNvbHVtbnMpOworCQlpZiAoc3RyY21wKGNvbC0+Y29sbmFtZSwgcGVyaW9k LT5zdGFydGNvbG5hbWUpID09IDApCisJCXsKKwkJCWNvbHR5cGlkID0gdHlwZW5hbWVUeXBl SWQoY3h0LT5wc3RhdGUsIGNvbC0+dHlwZU5hbWUpOworCQkJYnJlYWs7CisJCX0KKwl9CisJ aWYgKGNvbHR5cGlkID09IEludmFsaWRPaWQpCisJCWVyZXBvcnQoRVJST1IsIChlcnJtc2co ImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJ CQkJCXBlcmlvZC0+c3RhcnRjb2xuYW1lLCBjeHQtPnJlbGF0aW9uLT5yZWxuYW1lKSkpOwor CisJcGVyaW9kLT5jb2x0eXBpZCA9IGNvbHR5cGlkOworCisJLyogTm93IG1ha2Ugc3VyZSBp dCBtYXRjaGVzIHJhbmdldHlwZW5hbWUgb3Igd2UgY2FuIGZpbmQgYSBtYXRjaGluZyByYW5n ZSAqLworCXBlcmlvZC0+cm5ndHlwaWQgPSBjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9wZXJpb2Qo cGVyaW9kKTsKKyNlbmRpZgorCisJY3h0LT5wZXJpb2RzID0gbGFwcGVuZChjeHQtPnBlcmlv ZHMsIHBlcmlvZCk7Cit9CisKIC8qCiAgKiB0cmFuc2Zvcm1UYWJsZUNvbnN0cmFpbnQKICAq CQl0cmFuc2Zvcm0gYSBDb25zdHJhaW50IG5vZGUgd2l0aGluIENSRUFURSBUQUJMRSBvciBB TFRFUiBUQUJMRQpAQCAtMTAwMyw2ICsxMTIwLDcgQEAgdHJhbnNmb3JtVGFibGVMaWtlQ2xh dXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFRhYmxlTGlrZUNsYXVzZSAqdGFibGVfbGlr ZV9jbGEKIAlBdHRyTnVtYmVyCXBhcmVudF9hdHRubzsKIAlSZWxhdGlvbglyZWxhdGlvbjsK IAlUdXBsZURlc2MJdHVwbGVEZXNjOworCUJpdG1hcHNldCAgKnBlcmlvZGF0dHM7CiAJQWNs UmVzdWx0CWFjbHJlc3VsdDsKIAljaGFyCSAgICpjb21tZW50OwogCVBhcnNlQ2FsbGJhY2tT dGF0ZSBwY2JzdGF0ZTsKQEAgLTEwNTUsNiArMTE3Myw3IEBAIHRyYW5zZm9ybVRhYmxlTGlr ZUNsYXVzZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBUYWJsZUxpa2VDbGF1c2UgKnRhYmxl X2xpa2VfY2xhCiAJfQogCiAJdHVwbGVEZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWxhdGlv bik7CisJcGVyaW9kYXR0cyA9IGdldF9wZXJpb2RfYXR0bm9zKFJlbGF0aW9uR2V0UmVsaWQo cmVsYXRpb24pKTsKIAogCS8qCiAJICogSW5zZXJ0IHRoZSBjb3BpZWQgYXR0cmlidXRlcyBp bnRvIHRoZSBjeHQgZm9yIHRoZSBuZXcgdGFibGUgZGVmaW5pdGlvbi4KQEAgLTEwNjQsMTAg KzExODMsMTggQEAgdHJhbnNmb3JtVGFibGVMaWtlQ2xhdXNlKENyZWF0ZVN0bXRDb250ZXh0 ICpjeHQsIFRhYmxlTGlrZUNsYXVzZSAqdGFibGVfbGlrZV9jbGEKIAlmb3IgKHBhcmVudF9h dHRubyA9IDE7IHBhcmVudF9hdHRubyA8PSB0dXBsZURlc2MtPm5hdHRzOwogCQkgcGFyZW50 X2F0dG5vKyspCiAJewotCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyaWJ1dGUgPSBUdXBsZURl c2NBdHRyKHR1cGxlRGVzYywKLQkJCQkJCQkJCQkJCQlwYXJlbnRfYXR0bm8gLSAxKTsKKwkJ Rm9ybV9wZ19hdHRyaWJ1dGUgYXR0cmlidXRlOwogCQlDb2x1bW5EZWYgICpkZWY7CiAKKwkJ LyoKKwkJICogSWYgdGhpcyBjb2x1bW4gaXMgZnJvbSBhIFBFUklPRCwgc2tpcCBpdAorCQkg KiAoc2luY2UgTElLRSBuZXZlciBjb3BpZXMgUEVSSU9EcykuCisJCSAqLworCQlpZiAoYm1z X2lzX21lbWJlcihwYXJlbnRfYXR0bm8sIHBlcmlvZGF0dHMpKQorCQkJY29udGludWU7CisK KwkJYXR0cmlidXRlID0gVHVwbGVEZXNjQXR0cih0dXBsZURlc2MsIHBhcmVudF9hdHRubyAt IDEpOworCiAJCS8qCiAJCSAqIElnbm9yZSBkcm9wcGVkIGNvbHVtbnMgaW4gdGhlIHBhcmVu dC4KIAkJICovCkBAIC0zMDA4LDYgKzMxMzUsMTAgQEAgdHJhbnNmb3JtSW5kZXhTdG10KE9p ZCByZWxpZCwgSW5kZXhTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZykKIAkJ fQogCX0KIAorCS8qIHRha2UgY2FyZSBvZiB0aGUgcGVyaW9kICovCisJaWYgKHN0bXQtPnBl cmlvZCkKKwkJc3RtdC0+cGVyaW9kLT5vaWQgPSBnZXRfcGVyaW9kX29pZChyZWxpZCwgc3Rt dC0+cGVyaW9kLT5wZXJpb2RuYW1lLCBmYWxzZSk7CisKIAkvKgogCSAqIENoZWNrIHRoYXQg b25seSB0aGUgYmFzZSByZWwgaXMgbWVudGlvbmVkLiAgKFRoaXMgc2hvdWxkIGJlIGRlYWQg Y29kZQogCSAqIG5vdyB0aGF0IGFkZF9taXNzaW5nX2Zyb20gaXMgaGlzdG9yeS4pCkBAIC0z NDY1LDYgKzM1OTYsNyBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFs dGVyVGFibGVTdG10ICpzdG10LAogCWN4dC5pbmhSZWxhdGlvbnMgPSBOSUw7CiAJY3h0Lmlz YWx0ZXIgPSB0cnVlOwogCWN4dC5jb2x1bW5zID0gTklMOworCWN4dC5wZXJpb2RzID0gTklM OwogCWN4dC5ja2NvbnN0cmFpbnRzID0gTklMOwogCWN4dC5ubmNvbnN0cmFpbnRzID0gTklM OwogCWN4dC5ma2NvbnN0cmFpbnRzID0gTklMOwpAQCAtMzUyNyw2ICszNjU5LDE1IEBAIHRy YW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQs CiAJCQkJCQkgKGludCkgbm9kZVRhZyhjbWQtPmRlZikpOwogCQkJCWJyZWFrOwogCisJCQlj YXNlIEFUX0FkZFBlcmlvZDoKKwkJCQl7CisJCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2Nt ZHMsIGNtZCk7CisJCQkJCS8vIFdoeSBub3QgY2FsbCB0cmFuc2Zvcm1UYWJsZVBlcmlvZCBo ZXJlPworCQkJCQkvLyBBaCBiZWNhdXNlIGl0IGxvb2tzIGF0IGN4dC0+Y29sdW1ucworCQkJ CQkvLyBhbmQgaW4gYW4gQUxURVIgc3RhdGVtZW50IHRoZSBjb2x1bW5zIG1pZ2h0IGFscmVh ZHkgZXhpc3QgKG9yIG5vdCkuCisJCQkJCWJyZWFrOworCQkJCX0KKwogCQkJY2FzZSBBVF9B bHRlckNvbHVtblR5cGU6CiAJCQkJewogCQkJCQlDb2x1bW5EZWYgICpkZWYgPSBjYXN0Tm9k ZShDb2x1bW5EZWYsIGNtZC0+ZGVmKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZQppbmRleCAx OTllYWU1MjVkMS4uZDA0Yzc1YjM5ODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZpbGUKQEAg LTc4LDYgKzc4LDcgQEAgT0JKUyA9IFwKIAlvcmFjbGVfY29tcGF0Lm8gXAogCW9yZGVyZWRz ZXRhZ2dzLm8gXAogCXBhcnRpdGlvbmZ1bmNzLm8gXAorCXBlcmlvZC5vIFwKIAlwZ19sb2Nh bGUubyBcCiAJcGdfbHNuLm8gXAogCXBnX3VwZ3JhZGVfc3VwcG9ydC5vIFwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZXJpb2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MGVkNDMwNGUxNmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cGVyaW9kLmMKQEAgLTAsMCArMSw1NiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgor ICogcGVyaW9kLmMKKyAqCSAgRnVuY3Rpb25zIHRvIHN1cHBvcnQgcGVyaW9kcy4KKyAqCisg KgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjIsIFBvc3RncmVTUUwgR2xv YmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQs IFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBJ REVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMKKyAq CisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisK KyNpbmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5oIgorI2luY2x1ZGUgImZtZ3IuaCIKKyNp bmNsdWRlICJub2Rlcy9wcmltbm9kZXMuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9z LmgiCisjaW5jbHVkZSAidXRpbHMvcGVyaW9kLmgiCisjaW5jbHVkZSAidXRpbHMvcmFuZ2V0 eXBlcy5oIgorCitEYXR1bSBwZXJpb2RfdG9fcmFuZ2UoVHVwbGVUYWJsZVNsb3QgKnNsb3Qs IGludCBzdGFydGF0dG5vLCBpbnQgZW5kYXR0bm8sIE9pZCByYW5nZXR5cGUpCit7CisJRGF0 dW0gc3RhcnR2YWx1ZTsKKwlEYXR1bSBlbmR2YWx1ZTsKKwlEYXR1bSByZXN1bHQ7CisJYm9v bAlzdGFydGlzbnVsbDsKKwlib29sCWVuZGlzbnVsbDsKKwlMT0NBTF9GQ0lORk8oZmNpbmZv LCAyKTsKKwlGbWdySW5mbwlmbGluZm87CisJRnVuY0V4cHIgICAqZjsKKworCUluaXRGdW5j dGlvbkNhbGxJbmZvRGF0YSgqZmNpbmZvLCAmZmxpbmZvLCAyLCBJbnZhbGlkT2lkLCBOVUxM LCBOVUxMKTsKKwlmID0gbWFrZU5vZGUoRnVuY0V4cHIpOworCWYtPmZ1bmNyZXN1bHR0eXBl ID0gcmFuZ2V0eXBlOworCWZsaW5mby5mbl9leHByID0gKE5vZGUgKikgZjsKKwlmbGluZm8u Zm5fZXh0cmEgPSBOVUxMOworCisJLyogY29tcHV0ZSBvbGR2YWx1ZSAqLworCXN0YXJ0dmFs dWUgPSBzbG90X2dldGF0dHIoc2xvdCwgc3RhcnRhdHRubywgJnN0YXJ0aXNudWxsKTsKKwll bmR2YWx1ZSA9IHNsb3RfZ2V0YXR0cihzbG90LCBlbmRhdHRubywgJmVuZGlzbnVsbCk7CisK KwlmY2luZm8tPmFyZ3NbMF0udmFsdWUgPSBzdGFydHZhbHVlOworCWZjaW5mby0+YXJnc1sw XS5pc251bGwgPSBzdGFydGlzbnVsbDsKKwlmY2luZm8tPmFyZ3NbMV0udmFsdWUgPSBlbmR2 YWx1ZTsKKwlmY2luZm8tPmFyZ3NbMV0uaXNudWxsID0gZW5kaXNudWxsOworCisJcmVzdWx0 ID0gcmFuZ2VfY29uc3RydWN0b3IyKGZjaW5mbyk7CisJaWYgKGZjaW5mby0+aXNudWxsKQor CQllbG9nKEVSUk9SLCAiZnVuY3Rpb24gJXUgcmV0dXJuZWQgTlVMTCIsIGZsaW5mby5mbl9v aWQpOworCisJcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMKaW5kZXggOWEyNDg4MmY4OTUuLjU0NDA0YzU0YTcxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9sc3lzY2FjaGUuYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNhdGFs b2cvcGdfbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdf cGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19yYW5nZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljLmgiCkBA IC05OTQsNiArOTk1LDY4IEBAIGdldF9hdHRvcHRpb25zKE9pZCByZWxpZCwgaW50MTYgYXR0 bnVtKQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCQkJCS0tLS0tLS0tLS0gUEdfUEVSSU9E IENBQ0hFIC0tLS0tLS0tLS0JCQkJICovCisKKy8qCisgKiBnZXRfcGVyaW9kbmFtZSAtIGdp dmVuIGl0cyBPSUQsIGxvb2sgdXAgYSBwZXJpb2QKKyAqCisgKiBJZiBtaXNzaW5nX29rIGlz IGZhbHNlLCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgcGVyaW9kIGlzIG5vdCBmb3VuZC4KKyAq IElmIHRydWUsIGp1c3QgcmV0dXJuIEludmFsaWRPaWQuCisgKi8KK2NoYXIgKgorZ2V0X3Bl cmlvZG5hbWUoT2lkIHBlcmlvZGlkLCBib29sIG1pc3Npbmdfb2spCit7CisJSGVhcFR1cGxl CXRwOworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoUEVSSU9ET0lELAorCQkJCQkJIE9iamVj dElkR2V0RGF0dW0ocGVyaW9kaWQpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJ eworCQlGb3JtX3BnX3BlcmlvZCBwZXJpb2RfdHVwID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRT VFJVQ1QodHApOworCQljaGFyCSAgICpyZXN1bHQ7CisKKwkJcmVzdWx0ID0gcHN0cmR1cChO YW1lU3RyKHBlcmlvZF90dXAtPnBlcm5hbWUpKTsKKwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsK KwkJcmV0dXJuIHJlc3VsdDsKKwl9CisKKwlpZiAoIW1pc3Npbmdfb2spCisJCWVsb2coRVJS T1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBwZXJpb2QgJWQiLAorCQkJIHBlcmlvZGlk KTsKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIGdldF9wZXJpb2Rfb2lkIC0gZ2V0cyBp dHMgcmVsYXRpb24gYW5kIG5hbWUsIGxvb2sgdXAgYSBwZXJpb2QKKyAqCisgKiBJZiBtaXNz aW5nX29rIGlzIGZhbHNlLCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgY2FzdCBpcyBub3QgZm91 bmQuICBJZgorICogdHJ1ZSwganVzdCByZXR1cm4gSW52YWxpZE9pZC4KKyAqLworT2lkCitn ZXRfcGVyaW9kX29pZChPaWQgcmVsaWQsIGNvbnN0IGNoYXIgKnBlcmlvZG5hbWUsIGJvb2wg bWlzc2luZ19vaykKK3sKKwlIZWFwVHVwbGUJdHA7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hl MihQRVJJT0ROQU1FLAorCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJ IFBvaW50ZXJHZXREYXR1bShwZXJpb2RuYW1lKSk7CisKKwlpZiAoSGVhcFR1cGxlSXNWYWxp ZCh0cCkpCisJeworCQlGb3JtX3BnX3BlcmlvZCBwZXJpb2RfdHVwID0gKEZvcm1fcGdfcGVy aW9kKSBHRVRTVFJVQ1QodHApOworCQlPaWQgcmVzdWx0OworCisJCXJlc3VsdCA9IHBlcmlv ZF90dXAtPm9pZDsKKwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJcmV0dXJuIHJlc3VsdDsK Kwl9CisKKwlpZiAoIW1pc3Npbmdfb2spCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAg ZmFpbGVkIGZvciBwZXJpb2QgJXMiLAorCQkJIHBlcmlvZG5hbWUpOworCXJldHVybiBJbnZh bGlkT2lkOworfQorCiAvKgkJCQktLS0tLS0tLS0tIFBHX0NBU1QgQ0FDSEUgLS0tLS0tLS0t LQkJCQkJICovCiAKIC8qCkBAIC0zNTM3LDYgKzM2MDAsMzAgQEAgZ2V0X211bHRpcmFuZ2Vf cmFuZ2UoT2lkIG11bHRpcmFuZ2VPaWQpCiAJCXJldHVybiBJbnZhbGlkT2lkOwogfQogCitP aWQKK2dldF9zdWJ0eXBlX3JhbmdlKE9pZCBzdWJ0eXBlT2lkKQoreworCUNhdENMaXN0ICpj YXRsaXN0OworCU9pZAlyZXN1bHQgPSBJbnZhbGlkT2lkOworCisJY2F0bGlzdCA9IFNlYXJj aFN5c0NhY2hlTGlzdDEoUkFOR0VTVUJUWVBFLCBPYmplY3RJZEdldERhdHVtKHN1YnR5cGVP aWQpKTsKKworCWlmIChjYXRsaXN0LT5uX21lbWJlcnMgPT0gMSkKKwl7CisJCUhlYXBUdXBs ZQl0dXBsZSA9ICZjYXRsaXN0LT5tZW1iZXJzWzBdLT50dXBsZTsKKwkJRm9ybV9wZ19yYW5n ZSBybmd0dXAgPSAoRm9ybV9wZ19yYW5nZSkgR0VUU1RSVUNUKHR1cGxlKTsKKwkJcmVzdWx0 ID0gcm5ndHVwLT5ybmd0eXBpZDsKKwkJUmVsZWFzZUNhdENhY2hlTGlzdChjYXRsaXN0KTsK Kwl9CisJZWxzZSBpZiAoY2F0bGlzdC0+bl9tZW1iZXJzID4gMSkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOREVURVJNSU5BVEVfREFUQVRZUEUpLAorCQkJ CSBlcnJtc2coImFtYmlndW91cyByYW5nZSBmb3IgdHlwZSAlcyIsCisJCQkJCQlmb3JtYXRf dHlwZV9iZShzdWJ0eXBlT2lkKSkpKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKIC8qCQkJ CS0tLS0tLS0tLS0gUEdfSU5ERVggQ0FDSEUgLS0tLS0tLS0tLQkJCQkgKi8KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCmluZGV4IGMxMGE3YjNkMGQyLi5lZmQ4NDUw YmFlZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCkBAIC00OSw2ICs0OSw3 IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWlseS5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfcGFyYW1ldGVyX2FjbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFydGl0aW9u ZWRfdGFibGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24u aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS5oIgpAQCAt NDIyLDYgKzQyMywxOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNhY2hlZGVzYyBjYWNoZWlu Zm9bXSA9IHsKIAkJS0VZKEFudW1fcGdfcGFydGl0aW9uZWRfdGFibGVfcGFydHJlbGlkKSwK IAkJMzIKIAl9LAorCVtQRVJJT0ROQU1FXSA9IHsKKwkJUGVyaW9kUmVsYXRpb25JZCwKKwkJ UGVyaW9kUmVsaWROYW1lSW5kZXhJZCwKKwkJS0VZKEFudW1fcGdfcGVyaW9kX3BlcnJlbGlk LAorCQkJQW51bV9wZ19wZXJpb2RfcGVybmFtZSksCisJCTMyCisJfSwKKwlbUEVSSU9ET0lE XSA9IHsKKwkJUGVyaW9kUmVsYXRpb25JZCwKKwkJUGVyaW9kT2JqZWN0SW5kZXhJZCwKKwkJ S0VZKEFudW1fcGdfcGVyaW9kX29pZCksCisJCTMyCisJfSwKIAlbUFJPQ05BTUVBUkdTTlNQ XSA9IHsKIAkJUHJvY2VkdXJlUmVsYXRpb25JZCwKIAkJUHJvY2VkdXJlTmFtZUFyZ3NOc3BJ bmRleElkLApAQCAtNDgwLDYgKzQ5NCwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNhY2hl ZGVzYyBjYWNoZWluZm9bXSA9IHsKIAkJS0VZKEFudW1fcGdfcmFuZ2Vfcm5nbXVsdGl0eXBp ZCksCiAJCTQKIAl9LAorCVtSQU5HRVNVQlRZUEVdID0geworCQlSYW5nZVJlbGF0aW9uSWQs CisJCVJhbmdlU3ViVHlwaWRUeXBpZEluZGV4SWQsCisJCUtFWShBbnVtX3BnX3JhbmdlX3Ju Z3N1YnR5cGUsCisJCQlBbnVtX3BnX3JhbmdlX3JuZ3R5cGlkKSwKKwkJNAorCX0sCiAJW1JB TkdFVFlQRV0gPSB7CiAJCVJhbmdlUmVsYXRpb25JZCwKIAkJUmFuZ2VUeXBpZEluZGV4SWQs CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMgYi9z cmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKaW5kZXggMjU2ZDFlMzVhNGUu LjBhMjY5NmM1NTk3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2Fy Y2hpdmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCkBA IC0zNTE4LDYgKzM1MTgsNyBAQCBfZ2V0T2JqZWN0RGVzY3JpcHRpb24oUFFFeHBCdWZmZXIg YnVmLCBjb25zdCBUb2NFbnRyeSAqdGUpCiAJCQkgc3RyY21wKHR5cGUsICJEQVRBQkFTRSBQ Uk9QRVJUSUVTIikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiREVGQVVMVCIpID09IDAg fHwKIAkJCSBzdHJjbXAodHlwZSwgIkZLIENPTlNUUkFJTlQiKSA9PSAwIHx8CisJCQkgc3Ry Y21wKHR5cGUsICJQRVJJT0QiKSA9PSAwIHx8CiAJCQkgc3RyY21wKHR5cGUsICJJTkRFWCIp ID09IDAgfHwKIAkJCSBzdHJjbXAodHlwZSwgIlJVTEUiKSA9PSAwIHx8CiAJCQkgc3RyY21w KHR5cGUsICJUUklHR0VSIikgPT0gMCB8fApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggYTE5NDQzYmVj ZDYuLmIxM2NmMjg0ODI3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j CisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTY2MDAsNiArNjYwMCw3IEBA IGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxlcykKIAlpbnQJCQlpX3Jl bHR5cGU7CiAJaW50CQkJaV9yZWxvd25lcjsKIAlpbnQJCQlpX3JlbGNoZWNrczsKKwlpbnQJ CQlpX25wZXJpb2Q7CiAJaW50CQkJaV9yZWxoYXNpbmRleDsKIAlpbnQJCQlpX3JlbGhhc3J1 bGVzOwogCWludAkJCWlfcmVscGFnZXM7CkBAIC02Njc3LDYgKzY2NzgsMTQgQEAgZ2V0VGFi bGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQogCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwKIAkJCQkJCQkgImMucmVsaGFzb2lkcywgIik7CiAKKwkvKiBJbiBQRzE2 IHVwd2FyZHMgd2UgaGF2ZSBQRVJJT0RzLiAqLworCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9u ID49IDE2MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJICIo U0VMRUNUIGNvdW50KCopIEZST00gcGdfcGVyaW9kIFdIRVJFIHBlcnJlbGlkID0gYy5vaWQp IEFTIG5wZXJpb2RzLCAiKTsKKwllbHNlCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LAorCQkJCQkJCSAiMCBBUyBucGVyaW9kcywgIik7CisKIAlpZiAoZm91dC0+cmVtb3RlVmVy c2lvbiA+PSA5MDMwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJ ICJjLnJlbGlzcG9wdWxhdGVkLCAiKTsKQEAgLTY4MTQsNiArNjgyMyw3IEBAIGdldFRhYmxl cyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxlcykKIAlpX3JlbHR5cGUgPSBQUWZudW1i ZXIocmVzLCAicmVsdHlwZSIpOwogCWlfcmVsb3duZXIgPSBQUWZudW1iZXIocmVzLCAicmVs b3duZXIiKTsKIAlpX3JlbGNoZWNrcyA9IFBRZm51bWJlcihyZXMsICJyZWxjaGVja3MiKTsK KwlpX25wZXJpb2QgPSBQUWZudW1iZXIocmVzLCAibnBlcmlvZHMiKTsKIAlpX3JlbGhhc2lu ZGV4ID0gUFFmbnVtYmVyKHJlcywgInJlbGhhc2luZGV4Iik7CiAJaV9yZWxoYXNydWxlcyA9 IFBRZm51bWJlcihyZXMsICJyZWxoYXNydWxlcyIpOwogCWlfcmVscGFnZXMgPSBQUWZudW1i ZXIocmVzLCAicmVscGFnZXMiKTsKQEAgLTY4OTcsNiArNjkwNyw3IEBAIGdldFRhYmxlcyhB cmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxlcykKIAkJfQogCQl0YmxpbmZvW2ldLnJlbHRh Ymxlc3BhY2UgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcmVsdGFibGVzcGFj ZSkpOwogCQl0YmxpbmZvW2ldLmhhc29pZHMgPSAoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBp LCBpX3JlbGhhc29pZHMpLCAidCIpID09IDApOworCQl0YmxpbmZvW2ldLm5wZXJpb2QgPSBh dG9pKFBRZ2V0dmFsdWUocmVzLCBpLCBpX25wZXJpb2QpKTsKIAkJdGJsaW5mb1tpXS5oYXN0 cmlnZ2VycyA9IChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcmVsaGFzdHJpZ2dlcnMp LCAidCIpID09IDApOwogCQl0YmxpbmZvW2ldLnJlbHBlcnNpc3RlbmNlID0gKihQUWdldHZh bHVlKHJlcywgaSwgaV9yZWxwZXJzaXN0ZW5jZSkpOwogCQl0YmxpbmZvW2ldLnJlbGlzcG9w dWxhdGVkID0gKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9yZWxpc3BvcHVsYXRlZCks ICJ0IikgPT0gMCk7CkBAIC04NTYxLDcgKzg1NzIsNyBAQCBnZXRUcmFuc2Zvcm1zKEFyY2hp dmUgKmZvdXQsIGludCAqbnVtVHJhbnNmb3JtcykKIC8qCiAgKiBnZXRUYWJsZUF0dHJzIC0K ICAqCSAgZm9yIGVhY2ggaW50ZXJlc3RpbmcgdGFibGUsIHJlYWQgaW5mbyBhYm91dCBpdHMg YXR0cmlidXRlcwotICoJICAobmFtZXMsIHR5cGVzLCBkZWZhdWx0IHZhbHVlcywgQ0hFQ0sg Y29uc3RyYWludHMsIGV0YykKKyAqCSAgKG5hbWVzLCB0eXBlcywgZGVmYXVsdCB2YWx1ZXMs IENIRUNLIGNvbnN0cmFpbnRzLCBQRVJJT0RzLCBldGMpCiAgKgogICoJbW9kaWZpZXMgdGJs aW5mbwogICovCkBAIC04NjE0LDYgKzg2MjUsOCBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUg KmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykKIAlmb3IgKGludCBp ID0gMDsgaSA8IG51bVRhYmxlczsgaSsrKQogCXsKIAkJVGFibGVJbmZvICAqdGJpbmZvID0g JnRibGluZm9baV07CisJCWludAkJCW5kdW1wYWJsZWNoZWNrczsJLyogbnVtYmVyIG9mIENI RUNLIGNvbnN0cmFpbnRzIHRoYXQgZG8KKwkJCQkJCQkJCQkgICBub3QgYmVsb25nIHRvIGEg cGVyaW9kICovCiAKIAkJLyogRG9uJ3QgYm90aGVyIHRvIGNvbGxlY3QgaW5mbyBmb3Igc2Vx dWVuY2VzICovCiAJCWlmICh0YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSkK QEAgLTg2MjgsNyArODY0MSw4IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFi bGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJYXBwZW5kUFFFeHBCdWZmZXJD aGFyKHRibG9pZHMsICcsJyk7CiAJCWFwcGVuZFBRRXhwQnVmZmVyKHRibG9pZHMsICIldSIs IHRiaW5mby0+ZG9iai5jYXRJZC5vaWQpOwogCi0JCWlmICh0YmluZm8tPm5jaGVjayA+IDAp CisJCW5kdW1wYWJsZWNoZWNrcyA9IHRiaW5mby0+bmNoZWNrIC0gdGJpbmZvLT5ucGVyaW9k OworCQlpZiAobmR1bXBhYmxlY2hlY2tzID4gMCkKIAkJewogCQkJLyogQWxzbyBtYWtlIGEg bGlzdCBvZiB0aGUgb25lcyB3aXRoIGNoZWNrIGNvbnN0cmFpbnRzICovCiAJCQlpZiAoY2hl Y2tvaWRzLT5sZW4gPiAxKSAvKiBkbyB3ZSBoYXZlIG1vcmUgdGhhbiB0aGUgJ3snPyAqLwpA QCAtOTE2NywxNSArOTE4MSwzNiBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRh YmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykKIAkJcGdfbG9nX2luZm8oImZpbmRp bmcgdGFibGUgY2hlY2sgY29uc3RyYWludHMiKTsKIAogCQlyZXNldFBRRXhwQnVmZmVyKHEp OwotCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLAotCQkJCQkJICAiU0VMRUNUIGMudGFibGVvaWQs IGMub2lkLCBjb25yZWxpZCwgY29ubmFtZSwgIgotCQkJCQkJICAicGdfY2F0YWxvZy5wZ19n ZXRfY29uc3RyYWludGRlZihjLm9pZCkgQVMgY29uc3JjLCAiCi0JCQkJCQkgICJjb25pc2xv Y2FsLCBjb252YWxpZGF0ZWQgIgotCQkJCQkJICAiRlJPTSB1bm5lc3QoJyVzJzo6cGdfY2F0 YWxvZy5vaWRbXSkgQVMgc3JjKHRibG9pZClcbiIKLQkJCQkJCSAgIkpPSU4gcGdfY2F0YWxv Zy5wZ19jb25zdHJhaW50IGMgT04gKHNyYy50YmxvaWQgPSBjLmNvbnJlbGlkKVxuIgotCQkJ CQkJICAiV0hFUkUgY29udHlwZSA9ICdjJyAiCi0JCQkJCQkgICJPUkRFUiBCWSBjLmNvbnJl bGlkLCBjLmNvbm5hbWUiLAotCQkJCQkJICBjaGVja29pZHMtPmRhdGEpOworCQlpZiAoZm91 dC0+cmVtb3RlVmVyc2lvbiA+PSAxNjAwMDApCisJCXsKKwkJCS8qCisJCQkgKiBQRVJJT0Rz IHdlcmUgYWRkZWQgaW4gdjE3IGFuZCB3ZSBkb24ndCBkdW1wIENIRUNLCisJCQkgKiBjb25z dHJhaW50cyBmb3IgdGhlbS4KKwkJCSAqLworCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwKKwkJ CQkJCQkgICJTRUxFQ1QgYy50YWJsZW9pZCwgYy5vaWQsIGNvbnJlbGlkLCBjb25uYW1lLCAi CisJCQkJCQkJICAicGdfY2F0YWxvZy5wZ19nZXRfY29uc3RyYWludGRlZihjLm9pZCkgQVMg Y29uc3JjLCAiCisJCQkJCQkJICAiY29uaXNsb2NhbCwgY29udmFsaWRhdGVkICIKKwkJCQkJ CQkgICJGUk9NIHVubmVzdCgnJXMnOjpwZ19jYXRhbG9nLm9pZFtdKSBBUyBzcmModGJsb2lk KVxuIgorCQkJCQkJCSAgIkpPSU4gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50IGMgT04gKHNy Yy50YmxvaWQgPSBjLmNvbnJlbGlkKVxuIgorCQkJCQkJCSAgIldIRVJFIGNvbnR5cGUgPSAn YycgIgorCQkJCQkJCSAgIiAgIEFORCBOT1QgRVhJU1RTIChTRUxFQ1QgRlJPTSBwZ19wZXJp b2QgIgorCQkJCQkJCSAgIiAgICAgICAgICAgICAgICAgICBXSEVSRSAocGVycmVsaWQsIHBl cmNvbnN0cmFpbnQpID0gKGNvbnJlbGlkLCBjLm9pZCkpICIKKwkJCQkJCQkgICJPUkRFUiBC WSBjLmNvbnJlbGlkLCBjLmNvbm5hbWUiLAorCQkJCQkJCSAgY2hlY2tvaWRzLT5kYXRhKTsK KwkJfQorCQllbHNlCisJCXsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsCisJCQkJCQkJICAi U0VMRUNUIGMudGFibGVvaWQsIGMub2lkLCBjb25yZWxpZCwgY29ubmFtZSwgIgorCQkJCQkJ CSAgInBnX2NhdGFsb2cucGdfZ2V0X2NvbnN0cmFpbnRkZWYoYy5vaWQpIEFTIGNvbnNyYywg IgorCQkJCQkJCSAgImNvbmlzbG9jYWwsIGNvbnZhbGlkYXRlZCAiCisJCQkJCQkJICAiRlJP TSB1bm5lc3QoJyVzJzo6cGdfY2F0YWxvZy5vaWRbXSkgQVMgc3JjKHRibG9pZClcbiIKKwkJ CQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBjIE9OIChzcmMudGJsb2lk ID0gYy5jb25yZWxpZClcbiIKKwkJCQkJCQkgICJXSEVSRSBjb250eXBlID0gJ2MnICIKKwkJ CQkJCQkgICJPUkRFUiBCWSBjLmNvbnJlbGlkLCBjLmNvbm5hbWUiLAorCQkJCQkJCSAgY2hl Y2tvaWRzLT5kYXRhKTsKKwkJfQogCiAJCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBx LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOwogCkBAIC05MTk3LDYgKzkyMzIsNyBAQCBnZXRU YWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRh YmxlcykKIAkJCU9pZAkJCWNvbnJlbGlkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBqLCBp X2NvbnJlbGlkKSk7CiAJCQlUYWJsZUluZm8gICp0YmluZm8gPSBOVUxMOwogCQkJaW50CQkJ bnVtY29uczsKKwkJCWludAkJCW5kdW1wYWJsZWNoZWNrczsKIAogCQkJLyogQ291bnQgcm93 cyBmb3IgdGhpcyB0YWJsZSAqLwogCQkJZm9yIChudW1jb25zID0gMTsgbnVtY29ucyA8IG51 bUNvbnN0cnMgLSBqOyBudW1jb25zKyspCkBAIC05MjE2LDEyICs5MjUyLDEzIEBAIGdldFRh YmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFi bGVzKQogCQkJaWYgKGN1cnRibGluZHggPj0gbnVtVGFibGVzKQogCQkJCXBnX2ZhdGFsKCJ1 bnJlY29nbml6ZWQgdGFibGUgT0lEICV1IiwgY29ucmVsaWQpOwogCi0JCQlpZiAobnVtY29u cyAhPSB0YmluZm8tPm5jaGVjaykKKwkJCW5kdW1wYWJsZWNoZWNrcyA9IHRiaW5mby0+bmNo ZWNrIC0gdGJpbmZvLT5ucGVyaW9kOworCQkJaWYgKG51bWNvbnMgIT0gbmR1bXBhYmxlY2hl Y2tzKQogCQkJewogCQkJCXBnX2xvZ19lcnJvcihuZ2V0dGV4dCgiZXhwZWN0ZWQgJWQgY2hl Y2sgY29uc3RyYWludCBvbiB0YWJsZSBcIiVzXCIgYnV0IGZvdW5kICVkIiwKIAkJCQkJCQkJ CSAgImV4cGVjdGVkICVkIGNoZWNrIGNvbnN0cmFpbnRzIG9uIHRhYmxlIFwiJXNcIiBidXQg Zm91bmQgJWQiLAotCQkJCQkJCQkJICB0YmluZm8tPm5jaGVjayksCi0JCQkJCQkJIHRiaW5m by0+bmNoZWNrLCB0YmluZm8tPmRvYmoubmFtZSwgbnVtY29ucyk7CisJCQkJCQkJCQkgIG5k dW1wYWJsZWNoZWNrcyksCisJCQkJCQkJIG5kdW1wYWJsZWNoZWNrcywgdGJpbmZvLT5kb2Jq Lm5hbWUsIG51bWNvbnMpOwogCQkJCXBnX2xvZ19lcnJvcl9oaW50KCJUaGUgc3lzdGVtIGNh dGFsb2dzIG1pZ2h0IGJlIGNvcnJ1cHRlZC4iKTsKIAkJCQlleGl0X25pY2VseSgxKTsKIAkJ CX0KQEAgLTkyODAsNiArOTMxNyw3OSBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQs IFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykKIAkJUFFjbGVhcihyZXMpOwog CX0KIAorCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGFibGVzOyBpKyspCisJeworCQlUYWJs ZUluZm8gICp0YmluZm8gPSAmdGJsaW5mb1tpXTsKKworCQkvKgorCQkgKiBHZXQgaW5mbyBh Ym91dCBQRVJJT0QgZGVmaW5pdGlvbnMKKwkJICovCisJCWlmICh0YmluZm8tPm5wZXJpb2Qg PiAwKQorCQl7CisJCQlQZXJpb2RJbmZvICpwZXJpb2RzOworCQkJaW50CQkJbnVtUGVyaW9k czsKKwkJCWludAkJCWo7CisKKwkJCS8qIFdlIHNob3VsZG4ndCBoYXZlIGFueSBwZXJpb2Rz IGJlZm9yZSB2MTcgKi8KKwkJCUFzc2VydChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE2MDAw MCk7CisKKwkJCXBnX2xvZ19pbmZvKCJmaW5kaW5nIHBlcmlvZHMgZm9yIHRhYmxlIFwiJXMu JXNcIiIsCisJCQkJCQl0YmluZm8tPmRvYmoubmFtZXNwYWNlLT5kb2JqLm5hbWUsCisJCQkJ CQl0YmluZm8tPmRvYmoubmFtZSk7CisKKwkJCXJlc2V0UFFFeHBCdWZmZXIocSk7CisJCQlh cHBlbmRQUUV4cEJ1ZmZlcihxLAorCQkJCSJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAu cGVybmFtZSwgIgorCQkJCSIgICAgICAgc2EuYXR0bmFtZSBBUyBwZXJzdGFydCwgZWEuYXR0 bmFtZSBBUyBwZXJlbmQsICIKKwkJCQkiICAgICAgIHIudHlwbmFtZSBBUyBybmd0eXBlLCAi CisJCQkJIiAgICAgICBjLmNvbm5hbWUgQVMgY29ubmFtZSAiCisJCQkJIkZST00gcGdfY2F0 YWxvZy5wZ19wZXJpb2QgQVMgcCAiCisJCQkJIkpPSU4gcGdfY2F0YWxvZy5wZ19hdHRyaWJ1 dGUgQVMgc2EgT04gKHNhLmF0dHJlbGlkLCBzYS5hdHRudW0pID0gKHAucGVycmVsaWQsIHAu cGVyc3RhcnQpICIKKwkJCQkiSk9JTiBwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBBUyBlYSBP TiAoZWEuYXR0cmVsaWQsIGVhLmF0dG51bSkgPSAocC5wZXJyZWxpZCwgcC5wZXJlbmQpICIK KwkJCQkiSk9JTiBwZ19jYXRhbG9nLnBnX3R5cGUgQVMgciBPTiByLm9pZCA9IHAucGVycm5n dHlwZSAiCisJCQkJIkpPSU4gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50IEFTIGMgT04gYy5v aWQgPSBwLnBlcmNvbnN0cmFpbnQgIgorCQkJCSJXSEVSRSBwLnBlcnJlbGlkID0gJyV1Jzo6 cGdfY2F0YWxvZy5vaWQgIgorCQkJCSJPUkRFUiBCWSBwLnBlcm5hbWUiLAorCQkJCXRiaW5m by0+ZG9iai5jYXRJZC5vaWQpOworCisJCQlyZXMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwg cS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKKworCQkJLyoKKwkJCSAqIElmIHdlIGRpZG4n dCBnZXQgdGhlIG51bWJlciBvZiByb3dzIHdlIHRob3VnaHQgd2Ugd2VyZSBnb2luZyB0bywK KwkJCSAqIHRoZW4gdGhvc2UgSk9JTnMgZGlkbid0IHdvcmsuCisJCQkgKi8KKwkJCW51bVBl cmlvZHMgPSBQUW50dXBsZXMocmVzKTsKKwkJCWlmIChudW1QZXJpb2RzICE9IHRiaW5mby0+ bnBlcmlvZCkKKwkJCXsKKwkJCQlwZ19sb2dfaW5mbyhuZ2V0dGV4dCgiZXhwZWN0ZWQgJWQg cGVyaW9kIG9uIHRhYmxlIFwiJXNcIiBidXQgZm91bmQgJWQiLAorCQkJCQkJCQkJICJleHBl Y3RlZCAlZCBwZXJpb2RzIG9uIHRhYmxlIFwiJXNcIiBidXQgZm91bmQgJWQiLAorCQkJCQkJ CQkJIHRiaW5mby0+bnBlcmlvZCksCisJCQkJCQkJdGJpbmZvLT5ucGVyaW9kLCB0YmluZm8t PmRvYmoubmFtZSwgbnVtUGVyaW9kcyk7CisJCQkJcGdfbG9nX2luZm8oIihUaGUgc3lzdGVt IGNhdGFsb2dzIG1pZ2h0IGJlIGNvcnJ1cHRlZC4pIik7CisJCQkJZXhpdF9uaWNlbHkoMSk7 CisJCQl9CisKKwkJCXBlcmlvZHMgPSAoUGVyaW9kSW5mbyAqKSBwZ19tYWxsb2MobnVtUGVy aW9kcyAqIHNpemVvZihQZXJpb2RJbmZvKSk7CisJCQl0YmluZm8tPnBlcmlvZHMgPSBwZXJp b2RzOworCisJCQlmb3IgKGogPSAwOyBqIDwgbnVtUGVyaW9kczsgaisrKQorCQkJeworCQkJ CXBlcmlvZHNbal0uZG9iai5vYmpUeXBlID0gRE9fUEVSSU9EOworCQkJCXBlcmlvZHNbal0u ZG9iai5jYXRJZC50YWJsZW9pZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaiwgMCkpOwor CQkJCXBlcmlvZHNbal0uZG9iai5jYXRJZC5vaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMs IGosIDEpKTsKKwkJCQlBc3NpZ25EdW1wSWQoJnBlcmlvZHNbal0uZG9iaik7CisJCQkJcGVy aW9kc1tqXS5kb2JqLm5hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGosIDIpKTsK KwkJCQlwZXJpb2RzW2pdLmRvYmoubmFtZXNwYWNlID0gdGJpbmZvLT5kb2JqLm5hbWVzcGFj ZTsKKwkJCQlwZXJpb2RzW2pdLnBlcnRhYmxlID0gdGJpbmZvOworCQkJCXBlcmlvZHNbal0u cGVyc3RhcnQgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGosIDMpKTsKKwkJCQlwZXJp b2RzW2pdLnBlcmVuZCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaiwgNCkpOworCQkJ CXBlcmlvZHNbal0ucm5ndHlwZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaiwgNSkp OworCQkJCXBlcmlvZHNbal0uY29ubmFtZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywg aiwgNikpOworCQkJfQorCQkJUFFjbGVhcihyZXMpOworCQl9CisJfQorCiAJZGVzdHJveVBR RXhwQnVmZmVyKHEpOwogCWRlc3Ryb3lQUUV4cEJ1ZmZlcih0YmxvaWRzKTsKIAlkZXN0cm95 UFFFeHBCdWZmZXIoY2hlY2tvaWRzKTsKQEAgLTEwNTUwLDYgKzEwNjYwLDggQEAgZHVtcER1 bXBhYmxlT2JqZWN0KEFyY2hpdmUgKmZvdXQsIER1bXBhYmxlT2JqZWN0ICpkb2JqKQogCQlj YXNlIERPX0ZLX0NPTlNUUkFJTlQ6CiAJCQlkdW1wQ29uc3RyYWludChmb3V0LCAoY29uc3Qg Q29uc3RyYWludEluZm8gKikgZG9iaik7CiAJCQlicmVhazsKKwkJY2FzZSBET19QRVJJT0Q6 CisJCQlicmVhazsKIAkJY2FzZSBET19QUk9DTEFORzoKIAkJCWR1bXBQcm9jTGFuZyhmb3V0 LCAoY29uc3QgUHJvY0xhbmdJbmZvICopIGRvYmopOwogCQkJYnJlYWs7CkBAIC0xNjA4OCw2 ICsxNjIwMCwzMiBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29uc3QgVGFi bGVJbmZvICp0YmluZm8pCiAJCQkJfQogCQkJfQogCisJCQkvKgorCQkJICogQWRkIG5vbi1p bmhlcml0ZWQgUEVSSU9EIGRlZmluaXRpb25zLCBpZiBhbnkuCisJCQkgKi8KKwkJCWZvciAo aiA9IDA7IGogPCB0YmluZm8tPm5wZXJpb2Q7IGorKykKKwkJCXsKKwkJCQlQZXJpb2RJbmZv ICpwZXJpb2QgPSAmKHRiaW5mby0+cGVyaW9kc1tqXSk7CisKKwkJCQljaGFyCSAgICpuYW1l ID0gcGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+ZG9iai5uYW1lKSk7CisJCQkJY2hhcgkgICAq c3RhcnQgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9kLT5wZXJzdGFydCkpOworCQkJCWNoYXIJ ICAgKmVuZCA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2QtPnBlcmVuZCkpOworCQkJCWNoYXIJ ICAgKnJuZ3R5cGUgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9kLT5ybmd0eXBlKSk7CisJCQkJ Y2hhcgkgICAqY29ubmFtZSA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2QtPmNvbm5hbWUpKTsK KworCQkJCWlmIChhY3R1YWxfYXR0cyA9PSAwKQorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxLCAiIChcbiAgICAiKTsKKwkJCQllbHNlCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KHEsICIsXG4gICAgIik7CisKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiUEVSSU9EIEZP UiAlcyAoJXMsICVzKSAiCisJCQkJCQkiV0lUSCAocmFuZ2V0eXBlID0gJXMsIGNoZWNrX2Nv bnN0cmFpbnRfbmFtZSA9ICVzKSIsCisJCQkJCQkJCSAgbmFtZSwgc3RhcnQsIGVuZCwKKwkJ CQkJCQkJICBybmd0eXBlLCBjb25uYW1lKTsKKworCQkJCWFjdHVhbF9hdHRzKys7CisJCQl9 CisKIAkJCS8qCiAJCQkgKiBBZGQgbm9uLWluaGVyaXRlZCBDSEVDSyBjb25zdHJhaW50cywg aWYgYW55LgogCQkJICoKQEAgLTE2MDk2LDcgKzE2MjM0LDcgQEAgZHVtcFRhYmxlU2NoZW1h KEFyY2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJICogUEFSVElU SU9OIHRoYXQgd2UnbGwgZW1pdCBsYXRlciBleHBlY3RzIHRoZSBjb25zdHJhaW50IHRvIGJl CiAJCQkgKiB0aGVyZS4gIChObyBuZWVkIHRvIGZpeCBjb25pc2xvY2FsOiBBVFRBQ0ggUEFS VElUSU9OIGRvZXMgdGhhdCkKIAkJCSAqLwotCQkJZm9yIChqID0gMDsgaiA8IHRiaW5mby0+ bmNoZWNrOyBqKyspCisJCQlmb3IgKGogPSAwOyBqIDwgdGJpbmZvLT5uY2hlY2sgLSB0Ymlu Zm8tPm5wZXJpb2Q7IGorKykKIAkJCXsKIAkJCQlDb25zdHJhaW50SW5mbyAqY29uc3RyID0g Jih0YmluZm8tPmNoZWNrZXhwcnNbal0pOwogCkBAIC0xNjMxNCw3ICsxNjQ1Miw3IEBAIGR1 bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBjb25zdCBUYWJsZUluZm8gKnRiaW5mbykK IAkJCSAqIEZvciBwYXJ0aXRpb25zLCB0aGV5IHdlcmUgYWxyZWFkeSBkdW1wZWQsIGFuZCBj b25pc2xvY2FsCiAJCQkgKiBkb2Vzbid0IG5lZWQgZml4aW5nLgogCQkJICovCi0JCQlmb3Ig KGsgPSAwOyBrIDwgdGJpbmZvLT5uY2hlY2s7IGsrKykKKwkJCWZvciAoayA9IDA7IGsgPCB0 YmluZm8tPm5jaGVjayAtIHRiaW5mby0+bnBlcmlvZDsgaysrKQogCQkJewogCQkJCUNvbnN0 cmFpbnRJbmZvICpjb25zdHIgPSAmKHRiaW5mby0+Y2hlY2tleHByc1trXSk7CiAKQEAgLTE2 NjE2LDcgKzE2NzU0LDcgQEAgZHVtcFRhYmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIGNvbnN0 IFRhYmxlSW5mbyAqdGJpbmZvKQogCQlkdW1wVGFibGVTZWNMYWJlbChmb3V0LCB0YmluZm8s IHJlbHR5cGVuYW1lKTsKIAogCS8qIER1bXAgY29tbWVudHMgb24gaW5saW5lZCB0YWJsZSBj b25zdHJhaW50cyAqLwotCWZvciAoaiA9IDA7IGogPCB0YmluZm8tPm5jaGVjazsgaisrKQor CWZvciAoaiA9IDA7IGogPCB0YmluZm8tPm5jaGVjayAtIHRiaW5mby0+bnBlcmlvZDsgaisr KQogCXsKIAkJQ29uc3RyYWludEluZm8gKmNvbnN0ciA9ICYodGJpbmZvLT5jaGVja2V4cHJz W2pdKTsKIApAQCAtMTg1ODUsNiArMTg3MjMsNyBAQCBhZGRCb3VuZGFyeURlcGVuZGVuY2ll cyhEdW1wYWJsZU9iamVjdCAqKmRvYmpzLCBpbnQgbnVtT2JqcywKIAkJCWNhc2UgRE9fVFJJ R0dFUjoKIAkJCWNhc2UgRE9fRVZFTlRfVFJJR0dFUjoKIAkJCWNhc2UgRE9fREVGQVVMVF9B Q0w6CisJCQljYXNlIERPX1BFUklPRDoKIAkJCWNhc2UgRE9fUE9MSUNZOgogCQkJY2FzZSBE T19QVUJMSUNBVElPTjoKIAkJCWNhc2UgRE9fUFVCTElDQVRJT05fUkVMOgpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmgKaW5kZXggZjUyM2MzYTU5MGQuLmY0NjM1YjEyODg3IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAg LTU5LDYgKzU5LDcgQEAgdHlwZWRlZiBlbnVtCiAJRE9fVFJJR0dFUiwKIAlET19DT05TVFJB SU5ULAogCURPX0ZLX0NPTlNUUkFJTlQsCQkJLyogc2VlIG5vdGUgZm9yIENvbnN0cmFpbnRJ bmZvICovCisJRE9fUEVSSU9ELAogCURPX1BST0NMQU5HLAogCURPX0NBU1QsCiAJRE9fVEFC TEVfREFUQSwKQEAgLTMwMCwxMiArMzAxLDE0IEBAIHR5cGVkZWYgc3RydWN0IF90YWJsZUlu Zm8KIAlib29sCQlyb3dzZWM7CQkJLyogaXMgcm93IHNlY3VyaXR5IGVuYWJsZWQ/ICovCiAJ Ym9vbAkJZm9yY2Vyb3dzZWM7CS8qIGlzIHJvdyBzZWN1cml0eSBmb3JjZWQ/ICovCiAJYm9v bAkJaGFzb2lkczsJCS8qIGRvZXMgaXQgaGF2ZSBPSURzPyAqLworCWJvb2wJCWhhc3Blcmlv ZHM7CQkvKiBkb2VzIGl0IGhhdmUgYW55IHBlcmlvZHM/ICovCiAJdWludDMyCQlmcm96ZW54 aWQ7CQkvKiB0YWJsZSdzIHJlbGZyb3plbnhpZCAqLwogCXVpbnQzMgkJbWlubXhpZDsJCS8q IHRhYmxlJ3MgcmVsbWlubXhpZCAqLwogCU9pZAkJCXRvYXN0X29pZDsJCS8qIHRvYXN0IHRh YmxlJ3MgT0lELCBvciAwIGlmIG5vbmUgKi8KIAl1aW50MzIJCXRvYXN0X2Zyb3plbnhpZDsJ LyogdG9hc3QgdGFibGUncyByZWxmcm96ZW54aWQsIGlmIGFueSAqLwogCXVpbnQzMgkJdG9h c3RfbWlubXhpZDsJLyogdG9hc3QgdGFibGUncyByZWxtaW5teGlkICovCiAJaW50CQkJbmNo ZWNrOwkJCS8qICMgb2YgQ0hFQ0sgZXhwcmVzc2lvbnMgKi8KKwlpbnQJCQlucGVyaW9kOwkJ LyogIyBvZiBQRVJJT0QgZGVmaW5pdGlvbnMgKi8KIAlPaWQJCQlyZWx0eXBlOwkJLyogT0lE IG9mIHRhYmxlJ3MgY29tcG9zaXRlIHR5cGUsIGlmIGFueSAqLwogCU9pZAkJCXJlbG9mdHlw ZTsJCS8qIHVuZGVybHlpbmcgdHlwZSBmb3IgdHlwZWQgdGFibGUgKi8KIAlPaWQJCQlmb3Jl aWduX3NlcnZlcjsgLyogZm9yZWlnbiBzZXJ2ZXIgb2lkLCBpZiBhcHBsaWNhYmxlICovCkBA IC0zNTUsNiArMzU4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX3RhYmxlSW5mbwogCWJvb2wJICAg Km5vdG51bGxfaW5oOwkvKiB0cnVlIGlmIE5PVCBOVUxMIGhhcyBubyBsb2NhbCBkZWZpbml0 aW9uICovCiAJc3RydWN0IF9hdHRyRGVmSW5mbyAqKmF0dHJkZWZzOyAvKiBERUZBVUxUIGV4 cHJlc3Npb25zICovCiAJc3RydWN0IF9jb25zdHJhaW50SW5mbyAqY2hlY2tleHByczsgLyog Q0hFQ0sgY29uc3RyYWludHMgKi8KKwlzdHJ1Y3QgX3BlcmlvZEluZm8gKnBlcmlvZHM7CS8q IFBFUklPRCBkZWZpbml0aW9ucyAqLwogCWJvb2wJCW5lZWRzX292ZXJyaWRlOyAvKiBoYXMg R0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSAqLwogCWNoYXIJICAgKmFtbmFtZTsJCQkv KiByZWxhdGlvbiBhY2Nlc3MgbWV0aG9kICovCiAKQEAgLTQ4NCw2ICs0ODgsMTYgQEAgdHlw ZWRlZiBzdHJ1Y3QgX2NvbnN0cmFpbnRJbmZvCiAJYm9vbAkJc2VwYXJhdGU7CQkvKiB0cnVl IGlmIG11c3QgZHVtcCBhcyBzZXBhcmF0ZSBpdGVtICovCiB9IENvbnN0cmFpbnRJbmZvOwog Cit0eXBlZGVmIHN0cnVjdCBfcGVyaW9kSW5mbworeworCUR1bXBhYmxlT2JqZWN0IGRvYmo7 CisJVGFibGVJbmZvICAqcGVydGFibGU7CisJY2hhcgkgICAqcGVyc3RhcnQ7CQkvKiB0aGUg bmFtZSBvZiB0aGUgc3RhcnQgY29sdW1uICovCisJY2hhcgkgICAqcGVyZW5kOwkJCS8qIHRo ZSBuYW1lIG9mIHRoZSBlbmQgY29sdW1uICovCisJY2hhcgkgICAqcm5ndHlwZTsJCS8qIHRo ZSBuYW1lIG9mIHRoZSByYW5nZSB0eXBlICovCisJY2hhcgkgICAqY29ubmFtZTsJCS8qIHRo ZSBuYW1lIG9mIHRoZSBDSEVDSyBjb25zdHJhaW50ICovCit9IFBlcmlvZEluZm87CisKIHR5 cGVkZWYgc3RydWN0IF9wcm9jTGFuZ0luZm8KIHsKIAlEdW1wYWJsZU9iamVjdCBkb2JqOwpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXBfc29ydC5jCmluZGV4IGYzNThkZDIyYjlkLi5iMjViMzg2MmFiMiAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCisrKyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwpAQCAtODUsNiArODUsNyBAQCBlbnVtIGRiT2Jq ZWN0VHlwZVByaW9yaXRpZXMKIAlQUklPX0NPTlNUUkFJTlQsCiAJUFJJT19JTkRFWCwKIAlQ UklPX0lOREVYX0FUVEFDSCwKKwlQUklPX1BFUklPRCwKIAlQUklPX1NUQVRTRVhULAogCVBS SU9fUlVMRSwKIAlQUklPX1RSSUdHRVIsCkBAIC0xMjAsNiArMTIxLDcgQEAgc3RhdGljIGNv bnN0IGludCBkYk9iamVjdFR5cGVQcmlvcml0eVtdID0KIAlQUklPX0FUVFJERUYsCQkJCS8q IERPX0FUVFJERUYgKi8KIAlQUklPX0lOREVYLAkJCQkJLyogRE9fSU5ERVggKi8KIAlQUklP X0lOREVYX0FUVEFDSCwJCQkvKiBET19JTkRFWF9BVFRBQ0ggKi8KKwlQUklPX1BFUklPRCwJ CQkJLyogRE9fUEVSSU9EICovCiAJUFJJT19TVEFUU0VYVCwJCQkJLyogRE9fU1RBVFNFWFQg Ki8KIAlQUklPX1JVTEUsCQkJCQkvKiBET19SVUxFICovCiAJUFJJT19UUklHR0VSLAkJCQkv KiBET19UUklHR0VSICovCkBAIC0xMzcwLDYgKzEzNzIsMTEgQEAgZGVzY3JpYmVEdW1wYWJs ZU9iamVjdChEdW1wYWJsZU9iamVjdCAqb2JqLCBjaGFyICpidWYsIGludCBidWZzaXplKQog CQkJCQkgIkZLIENPTlNUUkFJTlQgJXMgIChJRCAlZCBPSUQgJXUpIiwKIAkJCQkJIG9iai0+ bmFtZSwgb2JqLT5kdW1wSWQsIG9iai0+Y2F0SWQub2lkKTsKIAkJCXJldHVybjsKKwkJY2Fz ZSBET19QRVJJT0Q6CisJCQlzbnByaW50ZihidWYsIGJ1ZnNpemUsCisJCQkJCSAiUEVSSU9E ICVzICAoSUQgJWQgT0lEICV1KSIsCisJCQkJCSBvYmotPm5hbWUsIG9iai0+ZHVtcElkLCBv YmotPmNhdElkLm9pZCk7CisJCQlyZXR1cm47CiAJCWNhc2UgRE9fUFJPQ0xBTkc6CiAJCQlz bnByaW50ZihidWYsIGJ1ZnNpemUsCiAJCQkJCSAiUFJPQ0VEVVJBTCBMQU5HVUFHRSAlcyAg KElEICVkIE9JRCAldSkiLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMg Yi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCAzZjhiZmY1OTU0OC4uNjFjNjlmMTFl ZDkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4v cHNxbC9kZXNjcmliZS5jCkBAIC0xOTQzLDYgKzE5NDMsOCBAQCBkZXNjcmliZU9uZVRhYmxl RGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCiAJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmJ1ZiwgIlxuRlJPTSBwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBhIik7CiAJYXBwZW5k UFFFeHBCdWZmZXIoJmJ1ZiwgIlxuV0hFUkUgYS5hdHRyZWxpZCA9ICclcycgQU5EIGEuYXR0 bnVtID4gMCBBTkQgTk9UIGEuYXR0aXNkcm9wcGVkIiwgb2lkKTsKKwlpZiAocHNldC5zdmVy c2lvbiA+PSAxNzAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICJcbkFORCBOT1Qg RVhJU1RTIChTRUxFQ1QgMSBGUk9NIHBnX2NhdGFsb2cucGdfcGVyaW9kIHAgV0hFUkUgcC5w ZXJyZWxpZCA9IGEuYXR0cmVsaWQgQU5EIHAucGVycmFuZ2UgPSBhLmF0dG51bSkiKTsKIAlh cHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiXG5PUkRFUiBCWSBhLmF0dG51bTsiKTsKIAog CXJlcyA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsKQEAgLTIzNjUsNiArMjM2Nyw0MCBAQCBkZXNj cmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQlQR3Jlc3Vs dCAgICpyZXN1bHQgPSBOVUxMOwogCQlpbnQJCQl0dXBsZXMgPSAwOwogCisJCS8qIHByaW50 IHBlcmlvZHMgKi8KKwkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTcwMDAwKQorCQl7CisJCQlw cmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCSAgIlNFTEVDVCBxdW90ZV9pZGVudChw LnBlcm5hbWUpLCBxdW90ZV9pZGVudChzLmF0dG5hbWUpIEFTIHN0YXJ0YXR0LCBxdW90ZV9p ZGVudChlLmF0dG5hbWUpIEFTIGVuZGF0dFxuIgorCQkJCQkJCSAgIkZST00gcGdfcGVyaW9k IEFTIHBcbiIKKwkJCQkJCQkgICJKT0lOIHBnX2F0dHJpYnV0ZSBBUyBzIE9OIChzLmF0dHJl bGlkLCBzLmF0dG51bSkgPSAocC5wZXJyZWxpZCwgcC5wZXJzdGFydClcbiIKKwkJCQkJCQkg ICJKT0lOIHBnX2F0dHJpYnV0ZSBBUyBlIE9OIChlLmF0dHJlbGlkLCBlLmF0dG51bSkgPSAo cC5wZXJyZWxpZCwgcC5wZXJlbmQpXG4iCisJCQkJCQkJICAiV0hFUkUgcC5wZXJyZWxpZCA9 ICclcydcbiIKKwkJCQkJCQkgICJPUkRFUiBCWSAxOyIsCisJCQkJCQkJICBvaWQpOworCQkJ cmVzdWx0ID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCQkJaWYgKCFyZXN1bHQpCisJCQkJZ290 byBlcnJvcl9yZXR1cm47CisJCQllbHNlCisJCQkJdHVwbGVzID0gUFFudHVwbGVzKHJlc3Vs dCk7CisKKwkJCWlmICh0dXBsZXMgPiAwKQorCQkJeworCQkJCXByaW50VGFibGVBZGRGb290 ZXIoJmNvbnQsIF8oIlBlcmlvZHM6IikpOworCQkJCWZvciAoaSA9IDA7IGkgPCB0dXBsZXM7 IGkrKykKKwkJCQl7CisJCQkJCS8qIHVudHJhbnNsYXRlZCBjb25zdHJhaW50IG5hbWUgYW5k IGRlZiAqLworCQkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAgICVzICglcywgJXMp IiwKKwkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDApLAorCQkJCQkJCQkJICBQ UWdldHZhbHVlKHJlc3VsdCwgaSwgMSksCisJCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0 LCBpLCAyKSk7CisKKwkJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwgYnVmLmRhdGEp OworCQkJCX0KKwkJCX0KKwkJCVBRY2xlYXIocmVzdWx0KTsKKwkJfQorCiAJCS8qIHByaW50 IGluZGV4ZXMgKi8KIAkJaWYgKHRhYmxlaW5mby5oYXNpbmRleCkKIAkJewpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggYi9zcmMvaW5jbHVkZS9jYXRh bG9nL2RlcGVuZGVuY3kuaAppbmRleCBmZDU4ODY1OTAxNC4uZTg0ZDkwYzBlNWUgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCkBAIC05Myw2ICs5Myw3IEBAIHR5cGVkZWYgZW51 bSBPYmplY3RDbGFzcwogCU9DTEFTU19DQVNULAkJCQkvKiBwZ19jYXN0ICovCiAJT0NMQVNT X0NPTExBVElPTiwJCQkvKiBwZ19jb2xsYXRpb24gKi8KIAlPQ0xBU1NfQ09OU1RSQUlOVCwJ CQkvKiBwZ19jb25zdHJhaW50ICovCisJT0NMQVNTX1BFUklPRCwJCQkJLyogcGdfcGVyaW9k ICovCiAJT0NMQVNTX0NPTlZFUlNJT04sCQkJLyogcGdfY29udmVyc2lvbiAqLwogCU9DTEFT U19ERUZBVUxULAkJCQkvKiBwZ19hdHRyZGVmICovCiAJT0NMQVNTX0xBTkdVQUdFLAkJCS8q IHBnX2xhbmd1YWdlICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAu aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oCmluZGV4IDFkN2Y4MzgwZDkwLi4zNTky YTQ0NGJkMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmgKKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmgKQEAgLTEyMSw2ICsxMjEsMTAgQEAgZXh0ZXJu IExpc3QgKkFkZFJlbGF0aW9uTm90TnVsbENvbnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwKIGV4 dGVybiB2b2lkIFJlbGF0aW9uQ2xlYXJNaXNzaW5nKFJlbGF0aW9uIHJlbCk7CiBleHRlcm4g dm9pZCBTZXRBdHRyTWlzc2luZyhPaWQgcmVsaWQsIGNoYXIgKmF0dG5hbWUsIGNoYXIgKnZh bHVlKTsKIAorZXh0ZXJuIE9pZCBTdG9yZVBlcmlvZChSZWxhdGlvbiByZWwsIGNvbnN0IGNo YXIgKnBlcmlvZCwKKwkJCQkJICAgQXR0ck51bWJlciBzdGFydG51bSwgQXR0ck51bWJlciBl bmRudW0sCisJCQkJCSAgIEF0dHJOdW1iZXIgcmFuZ2VudW0sIE9pZCBjb25vaWQpOworCiBl eHRlcm4gTm9kZSAqY29va0RlZmF1bHQoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJIE5v ZGUgKnJhd19kZWZhdWx0LAogCQkJCQkJIE9pZCBhdHR0eXBpZCwKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL21l c29uLmJ1aWxkCmluZGV4IDJiY2JlMzI3Y2ZlLi41NTk2YzUyM2I3ZSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9tZXNvbi5idWlsZAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL21lc29uLmJ1aWxkCkBAIC02MSw2ICs2MSw3IEBAIGNhdGFsb2dfaGVhZGVycyA9IFsK ICAgJ3BnX2NvbGxhdGlvbi5oJywKICAgJ3BnX3BhcmFtZXRlcl9hY2wuaCcsCiAgICdwZ19w YXJ0aXRpb25lZF90YWJsZS5oJywKKyAgJ3BnX3BlcmlvZC5oJywKICAgJ3BnX3JhbmdlLmgn LAogICAncGdfdHJhbnNmb3JtLmgnLAogICAncGdfc2VxdWVuY2UuaCcsCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2luZGV4LmgKaW5kZXggZTRmM2Y3MDgwNzEuLmI0Y2NmMmZhNjllIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19pbmRleC5oCkBAIC00OCw3ICs0OCw2IEBAIENBVEFMT0cocGdfaW5kZXgsMjYx MCxJbmRleFJlbGF0aW9uSWQpIEJLSV9TQ0hFTUFfTUFDUk8KIAkvKiB2YXJpYWJsZS1sZW5n dGggZmllbGRzIHN0YXJ0IGhlcmUsIGJ1dCB3ZSBhbGxvdyBkaXJlY3QgYWNjZXNzIHRvIGlu ZGtleSAqLwogCWludDJ2ZWN0b3IJaW5ka2V5IEJLSV9GT1JDRV9OT1RfTlVMTDsJLyogY29s dW1uIG51bWJlcnMgb2YgaW5kZXhlZCBjb2xzLAogCQkJCQkJCQkJCQkgKiBvciAwICovCi0K ICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgogCW9pZHZlY3RvcglpbmRjb2xsYXRpb24gQktJX0xP T0tVUF9PUFQocGdfY29sbGF0aW9uKSBCS0lfRk9SQ0VfTk9UX05VTEw7CS8qIGNvbGxhdGlv biBpZGVudGlmaWVycyAqLwogCW9pZHZlY3RvcglpbmRjbGFzcyBCS0lfTE9PS1VQKHBnX29w Y2xhc3MpIEJLSV9GT1JDRV9OT1RfTlVMTDsgLyogb3BjbGFzcyBpZGVudGlmaWVycyAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaCBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmQyY2ZmYTA3YmNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wZXJpb2QuaApAQCAtMCwwICsxLDU0IEBACisvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiBwZ19wZXJpb2QuaAorICoJICBkZWZpbml0aW9uIG9mIHRoZSAicGVy aW9kIiBzeXN0ZW0gY2F0YWxvZyAocGdfcGVyaW9kKQorICoKKyAqCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDE5OTYtMjAyMSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKyAqCisgKiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3BlcmlvZC5oCisgKgorICog Tk9URVMKKyAqCSAgVGhlIENhdGFsb2cucG0gbW9kdWxlIHJlYWRzIHRoaXMgZmlsZSBhbmQg ZGVyaXZlcyBzY2hlbWEKKyAqCSAgaW5mb3JtYXRpb24uCisgKgorICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKyNpZm5kZWYgUEdfUEVSSU9EX0gKKyNkZWZpbmUgUEdfUEVSSU9EX0gK KworI2luY2x1ZGUgImNhdGFsb2cvZ2VuYmtpLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19w ZXJpb2RfZC5oIgorCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkJcGdfcGVyaW9kIGRlZmlu aXRpb24uICBjcHAgdHVybnMgdGhpcyBpbnRvCisgKgkJdHlwZWRlZiBzdHJ1Y3QgRm9ybURh dGFfcGdfcGVyaW9kCisgKiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KK0NBVEFMT0cocGdfcGVy aW9kLDgwMDAsUGVyaW9kUmVsYXRpb25JZCkKK3sKKwlPaWQJCQlvaWQ7CQkJLyogT0lEIG9m IHRoZSBwZXJpb2QgKi8KKwlOYW1lRGF0YQlwZXJuYW1lOwkJLyogbmFtZSBvZiBwZXJpb2Qg Ki8KKwlPaWQJCQlwZXJyZWxpZDsJCS8qIE9JRCBvZiByZWxhdGlvbiBjb250YWluaW5nIHRo aXMgcGVyaW9kICovCisJaW50MTYJCXBlcnN0YXJ0OwkJLyogY29sdW1uIGZvciBzdGFydCB2 YWx1ZSAqLworCWludDE2CQlwZXJlbmQ7CQkJLyogY29sdW1uIGZvciBlbmQgdmFsdWUgKi8K KwlpbnQxNgkJcGVycmFuZ2U7CQkvKiBjb2x1bW4gZm9yIHJhbmdlIHZhbHVlICovCisJT2lk CQkJcGVyY29uc3RyYWludDsJLyogT0lEIG9mIChzdGFydCA8IGVuZCkgY29uc3RyYWludCAq LworfSBGb3JtRGF0YV9wZ19wZXJpb2Q7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlG b3JtX3BnX3BlcmlvZCBjb3JyZXNwb25kcyB0byBhIHBvaW50ZXIgdG8gYSB0dXBsZSB3aXRo CisgKgkJdGhlIGZvcm1hdCBvZiBwZ19wZXJpb2QgcmVsYXRpb24uCisgKiAtLS0tLS0tLS0t LS0tLS0tCisgKi8KK3R5cGVkZWYgRm9ybURhdGFfcGdfcGVyaW9kICpGb3JtX3BnX3Blcmlv ZDsKKworREVDTEFSRV9VTklRVUVfSU5ERVhfUEtFWShwZ19wZXJpb2Rfb2lkX2luZGV4LCA4 MDAxLCBQZXJpb2RPYmplY3RJbmRleElkLCBwZ19wZXJpb2QsIGJ0cmVlKG9pZCBvaWRfb3Bz KSk7CitERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19wZXJpb2RfcGVycmVsaWRfcGVybmFtZV9p bmRleCwgODAwMiwgUGVyaW9kUmVsaWROYW1lSW5kZXhJZCwgcGdfcGVyaW9kLCBidHJlZShw ZXJyZWxpZCBvaWRfb3BzLCBwZXJuYW1lIG5hbWVfb3BzKSk7CisKK2V4dGVybiB2b2lkIFJl bW92ZVBlcmlvZEJ5SWQoT2lkIHBlcmlvZElkKTsKKworZXh0ZXJuIE9pZCBnZXRfcmVsYXRp b25fcGVyaW9kX29pZChPaWQgcmVsaWQsIGNvbnN0IGNoYXIgKnBlcm5hbWUsIGJvb2wgbWlz c2luZ19vayk7CitleHRlcm4gQml0bWFwc2V0ICpnZXRfcGVyaW9kX2F0dG5vcyhPaWQgcmVs aWQpOworCisjZW5kaWYJCQkJCQkJLyogUEdfUEVSSU9EX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcmFuZ2UuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cmFuZ2UuaAppbmRleCBhMWY1MjcxMzBiZi4uZDk3YTk1YmQyZmIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcmFuZ2UuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3JhbmdlLmgKQEAgLTU5LDYgKzU5LDcgQEAgdHlwZWRlZiBGb3JtRGF0YV9wZ19yYW5n ZSAqRm9ybV9wZ19yYW5nZTsKIAogREVDTEFSRV9VTklRVUVfSU5ERVhfUEtFWShwZ19yYW5n ZV9ybmd0eXBpZF9pbmRleCwgMzU0MiwgUmFuZ2VUeXBpZEluZGV4SWQsIHBnX3JhbmdlLCBi dHJlZShybmd0eXBpZCBvaWRfb3BzKSk7CiBERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19yYW5n ZV9ybmdtdWx0aXR5cGlkX2luZGV4LCAyMjI4LCBSYW5nZU11bHRpcmFuZ2VUeXBpZEluZGV4 SWQsIHBnX3JhbmdlLCBidHJlZShybmdtdWx0aXR5cGlkIG9pZF9vcHMpKTsKK0RFQ0xBUkVf VU5JUVVFX0lOREVYKHBnX3JhbmdlX3JuZ3N1YnR5cGVfcm5ndHlwaWRfaW5kZXgsIDgwMDMs IFJhbmdlU3ViVHlwaWRUeXBpZEluZGV4SWQsIHBnX3JhbmdlLCBidHJlZShybmdzdWJ0eXBl IG9pZF9vcHMsIHJuZ3R5cGlkIG9pZF9vcHMpKTsKIAogLyoKICAqIHByb3RvdHlwZXMgZm9y IGZ1bmN0aW9ucyBpbiBwZ19yYW5nZS5jCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21t YW5kcy90YWJsZWNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCmlu ZGV4IDk2NzY5NDcyYmJiLi44OWU1MzhjNzUwNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvdGFibGVjbWRzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVj bWRzLmgKQEAgLTQwLDcgKzQwLDggQEAgZXh0ZXJuIExPQ0tNT0RFIEFsdGVyVGFibGVHZXRM b2NrTGV2ZWwoTGlzdCAqY21kcyk7CiAKIGV4dGVybiB2b2lkIEFURXhlY0NoYW5nZU93bmVy KE9pZCByZWxhdGlvbk9pZCwgT2lkIG5ld093bmVySWQsIGJvb2wgcmVjdXJzaW5nLCBMT0NL TU9ERSBsb2NrbW9kZSk7CiAKLWV4dGVybiB2b2lkIEFsdGVyVGFibGVJbnRlcm5hbChPaWQg cmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSk7CitleHRlcm4gdm9pZCBBbHRlclRh YmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UsCisJCQkJ CQkJICAgc3RydWN0IEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CiAKIGV4 dGVybiBPaWQJQWx0ZXJUYWJsZU1vdmVBbGwoQWx0ZXJUYWJsZU1vdmVBbGxTdG10ICpzdG10 KTsKIApAQCAtMTA4LDUgKzEwOSw2IEBAIGV4dGVybiBib29sIFBhcnRDb25zdHJhaW50SW1w bGllZEJ5UmVsQ29uc3RyYWludChSZWxhdGlvbiBzY2FucmVsLAogZXh0ZXJuIHZvaWQgRmlu ZEZLUGVyaW9kT3BlcnNBbmRQcm9jcyhPaWQgb3BjbGFzcywKIAkJCQkJCQkJCSAgT2lkICpw ZXJpb2RvcGVyb2lkLAogCQkJCQkJCQkJICBPaWQgKnBlcmlvZHByb2NvaWQpOworZXh0ZXJu IE9pZCBjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9wZXJpb2QoUGVyaW9kRGVmICpwZXJpb2QpOwog CiAjZW5kaWYJCQkJCQkJLyogVEFCTEVDTURTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aAppbmRleCBiZGFkYTZiNDI1Mi4uYTYyNjI1NTliZTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmgKQEAgLTIxNDEsNiArMjE0MSw3IEBAIHR5cGVkZWYgZW51bSBPYmplY3RUeXBlCiAJ T0JKRUNUX09QRVJBVE9SLAogCU9CSkVDVF9PUEZBTUlMWSwKIAlPQkpFQ1RfUEFSQU1FVEVS X0FDTCwKKwlPQkpFQ1RfUEVSSU9ELAogCU9CSkVDVF9QT0xJQ1ksCiAJT0JKRUNUX1BST0NF RFVSRSwKIAlPQkpFQ1RfUFVCTElDQVRJT04sCkBAIC0yMjI5LDYgKzIyMzAsOCBAQCB0eXBl ZGVmIGVudW0gQWx0ZXJUYWJsZVR5cGUKIAlBVF9WYWxpZGF0ZUNvbnN0cmFpbnQsCQkvKiB2 YWxpZGF0ZSBjb25zdHJhaW50ICovCiAJQVRfQWRkSW5kZXhDb25zdHJhaW50LAkJLyogYWRk IGNvbnN0cmFpbnQgdXNpbmcgZXhpc3RpbmcgaW5kZXggKi8KIAlBVF9Ecm9wQ29uc3RyYWlu dCwJCQkvKiBkcm9wIGNvbnN0cmFpbnQgKi8KKwlBVF9BZGRQZXJpb2QsCQkJCS8qIEFERCBQ RVJJT0QgKi8KKwlBVF9Ecm9wUGVyaW9kLAkJCQkvKiBEUk9QIFBFUklPRCAqLwogCUFUX1Jl QWRkQ29tbWVudCwJCQkvKiBpbnRlcm5hbCB0byBjb21tYW5kcy90YWJsZWNtZHMuYyAqLwog CUFUX0FsdGVyQ29sdW1uVHlwZSwJCQkvKiBhbHRlciBjb2x1bW4gdHlwZSAqLwogCUFUX0Fs dGVyQ29sdW1uR2VuZXJpY09wdGlvbnMsCS8qIGFsdGVyIGNvbHVtbiBPUFRJT05TICguLi4p ICovCkBAIC0yNDk1LDExICsyNDk4LDExIEBAIHR5cGVkZWYgc3RydWN0IFZhcmlhYmxlU2hv d1N0bXQKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlDcmVhdGUgVGFibGUgU3Rh dGVtZW50CiAgKgotICogTk9URTogaW4gdGhlIHJhdyBncmFtLnkgb3V0cHV0LCBDb2x1bW5E ZWYgYW5kIENvbnN0cmFpbnQgbm9kZXMgYXJlCi0gKiBpbnRlcm1peGVkIGluIHRhYmxlRWx0 cywgYW5kIGNvbnN0cmFpbnRzIGFuZCBubmNvbnN0cmFpbnRzIGFyZSBOSUwuICBBZnRlcgot ICogcGFyc2UgYW5hbHlzaXMsIHRhYmxlRWx0cyBjb250YWlucyBqdXN0IENvbHVtbkRlZnMs IG5uY29uc3RyYWludHMgY29udGFpbnMKLSAqIENvbnN0cmFpbnQgbm9kZXMgb2YgQ09OU1RS X05PVE5VTEwgdHlwZSBmcm9tIHZhcmlvdXMgc291cmNlcywgYW5kCi0gKiBjb25zdHJhaW50 cyBjb250YWlucyBqdXN0IENPTlNUUl9DSEVDSyBDb25zdHJhaW50IG5vZGVzLgorICogTk9U RTogaW4gdGhlIHJhdyBncmFtLnkgb3V0cHV0LCBDb2x1bW5EZWYsIFBlcmlvZERlZiwgYW5k IENvbnN0cmFpbnQgbm9kZXMgYXJlCisgKiBpbnRlcm1peGVkIGluIHRhYmxlRWx0czsgcGVy aW9kcywgY29uc3RyYWludHMsIGFuZCBubmNvbnN0cmFpbnRzIGFyZSBOSUwuICBBZnRlcgor ICogcGFyc2UgYW5hbHlzaXMsIHRhYmxlRWx0cyBjb250YWlucyBqdXN0IENvbHVtbkRlZnMs IHBlcmlvZHMgY29udGFpbnMganVzdCBQZXJpb2REZWZzLAorICogbm5jb25zdHJhaW50cyBj b250YWlucyBDb25zdHJhaW50IG5vZGVzIG9mIENPTlNUUl9OT1ROVUxMIHR5cGUgZnJvbSB2 YXJpb3VzIHNvdXJjZXMsCisgKiBhbmQgY29uc3RyYWludHMgY29udGFpbnMganVzdCBDT05T VFJfQ0hFQ0sgQ29uc3RyYWludCBub2Rlcy4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICAqLwogCkBAIC0yNTA4LDYgKzI1MTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBDcmVhdGVTdG10 CiAJTm9kZVRhZwkJdHlwZTsKIAlSYW5nZVZhciAgICpyZWxhdGlvbjsJCS8qIHJlbGF0aW9u IHRvIGNyZWF0ZSAqLwogCUxpc3QJICAgKnRhYmxlRWx0czsJCS8qIGNvbHVtbiBkZWZpbml0 aW9ucyAobGlzdCBvZiBDb2x1bW5EZWYpICovCisJTGlzdAkgICAqcGVyaW9kczsJCS8qIHBl cmlvZHMgKGxpc3Qgb2YgUGVyaW9kRGVmIG5vZGVzKSAqLwogCUxpc3QJICAgKmluaFJlbGF0 aW9uczsJLyogcmVsYXRpb25zIHRvIGluaGVyaXQgZnJvbSAobGlzdCBvZgogCQkJCQkJCQkg KiBSYW5nZVZhcikgKi8KIAlQYXJ0aXRpb25Cb3VuZFNwZWMgKnBhcnRib3VuZDsJLyogRk9S IFZBTFVFUyBjbGF1c2UgKi8KQEAgLTI1MjIsNiArMjUyNiwzMCBAQCB0eXBlZGVmIHN0cnVj dCBDcmVhdGVTdG10CiAJYm9vbAkJaWZfbm90X2V4aXN0czsJLyoganVzdCBkbyBub3RoaW5n IGlmIGl0IGFscmVhZHkgZXhpc3RzPyAqLwogfSBDcmVhdGVTdG10OwogCisKKy8qIC0tLS0t LS0tLS0KKyAqIERlZmluaXRpb25zIGZvciBwZXJpb2RzIGluIENyZWF0ZVN0bXQKKyAqIC0t LS0tLS0tLS0KKyAqLworCit0eXBlZGVmIHN0cnVjdCBQZXJpb2REZWYKK3sKKwlOb2RlVGFn CQl0eXBlOworCU9pZAkJCW9pZDsJCQkvKiBwZXJpb2Qgb2lkLCBvbmNlIGl0J3MgdHJhbnNm b3JtZWQgKi8KKwljaGFyCSAgICpwZXJpb2RuYW1lOwkJLyogcGVyaW9kIG5hbWUgKi8KKwlj aGFyCSAgICpzdGFydGNvbG5hbWU7CS8qIG5hbWUgb2Ygc3RhcnQgY29sdW1uICovCisJY2hh cgkgICAqZW5kY29sbmFtZTsJCS8qIG5hbWUgb2YgZW5kIGNvbHVtbiAqLworCUF0dHJOdW1i ZXIJc3RhcnRhdHRudW07CS8qIGF0dG51bSBvZiB0aGUgc3RhcnQgY29sdW1uICovCisJQXR0 ck51bWJlcgllbmRhdHRudW07CQkvKiBhdHRudW0gb2YgdGhlIGVuZCBjb2x1bW4gKi8KKwlB dHRyTnVtYmVyCXJuZ2F0dG51bTsJCS8qIGF0dG51bSBvZiB0aGUgR0VORVJBVEVEIHJhbmdl IGNvbHVtbiAqLworCUxpc3QJICAgKm9wdGlvbnM7CQkvKiBvcHRpb25zIGZyb20gV0lUSCBj bGF1c2UgKi8KKwljaGFyCSAgICpjb25zdHJhaW50bmFtZTsJLyogbmFtZSBvZiB0aGUgQ0hF Q0sgY29uc3RyYWludCAqLworCWNoYXIJICAgKnJhbmdldHlwZW5hbWU7CS8qIG5hbWUgb2Yg dGhlIHJhbmdlIHR5cGUgKi8KKwlPaWQJCQljb2x0eXBpZDsJCS8qIHRoZSBzdGFydC9lbmQg Y29sIHR5cGUgKi8KKwlPaWQJCQlybmd0eXBpZDsJCS8qIHRoZSByYW5nZSB0eXBlIHRvIHVz ZSAqLworCWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVu a25vd24gKi8KK30gUGVyaW9kRGVmOworCiAvKiAtLS0tLS0tLS0tCiAgKiBEZWZpbml0aW9u cyBmb3IgY29uc3RyYWludHMgaW4gQ3JlYXRlU3RtdAogICoKQEAgLTMyMzMsNiArMzI2MSw3 IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4U3RtdAogCUxpc3QJICAgKmluZGV4UGFyYW1zOwkv KiBjb2x1bW5zIHRvIGluZGV4OiBhIGxpc3Qgb2YgSW5kZXhFbGVtICovCiAJTGlzdAkgICAq aW5kZXhJbmNsdWRpbmdQYXJhbXM7CS8qIGFkZGl0aW9uYWwgY29sdW1ucyB0byBpbmRleDog YSBsaXN0CiAJCQkJCQkJCQkJICogb2YgSW5kZXhFbGVtICovCisJUGVyaW9kRGVmICAqcGVy aW9kOwkJCS8qIFRoZSBwZXJpb2QgaW5jbHVkZWQgaW4gdGhlIGluZGV4ICovCiAJTGlzdAkg ICAqb3B0aW9uczsJCS8qIFdJVEggY2xhdXNlIG9wdGlvbnM6IGEgbGlzdCBvZiBEZWZFbGVt ICovCiAJTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb24gKHBhcnRpYWwt aW5kZXggcHJlZGljYXRlKSAqLwogCUxpc3QJICAgKmV4Y2x1ZGVPcE5hbWVzOyAvKiBleGNs dXNpb24gb3BlcmF0b3IgbmFtZXMsIG9yIE5JTCBpZiBub25lICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdXRpbGNtZC5oIGIvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuaAppbmRleCAxNDA2NTg5NDc3OS4uZDg0ZDAyYjAyODAgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX3V0aWxjbWQuaApAQCAtNDAsNSArNDAsNiBAQCBleHRlcm4g SW5kZXhTdG10ICpnZW5lcmF0ZUNsb25lZEluZGV4U3RtdChSYW5nZVZhciAqaGVhcFJlbCwK IAkJCQkJCQkJCQkgIFJlbGF0aW9uIHNvdXJjZV9pZHgsCiAJCQkJCQkJCQkJICBjb25zdCBz dHJ1Y3QgQXR0ck1hcCAqYXR0bWFwLAogCQkJCQkJCQkJCSAgT2lkICpjb25zdHJhaW50T2lk KTsKK2V4dGVybiB2b2lkIHRyYW5zZm9ybVBlcmlvZE9wdGlvbnMoUGVyaW9kRGVmICpwZXJp b2QpOwogCiAjZW5kaWYJCQkJCQkJLyogUEFSU0VfVVRJTENNRF9IICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xz eXNjYWNoZS5oCmluZGV4IDk0ODc4NzNhZDQ4Li5jM2FkMjMwZWE2NSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv bHN5c2NhY2hlLmgKQEAgLTk1LDYgKzk1LDggQEAgZXh0ZXJuIE9pZAlnZXRfYXR0dHlwZShP aWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVtKTsKIGV4dGVybiB2b2lkIGdldF9hdHR0eXBl dHlwbW9kY29sbChPaWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVtLAogCQkJCQkJCQkgIE9p ZCAqdHlwaWQsIGludDMyICp0eXBtb2QsIE9pZCAqY29sbGlkKTsKIGV4dGVybiBEYXR1bSBn ZXRfYXR0b3B0aW9ucyhPaWQgcmVsaWQsIGludDE2IGF0dG51bSk7CitleHRlcm4gY2hhciAq Z2V0X3BlcmlvZG5hbWUoT2lkIHBlcmlvZGlkLCBib29sIG1pc3Npbmdfb2spOworZXh0ZXJu IE9pZAlnZXRfcGVyaW9kX29pZChPaWQgcmVsaWQsIGNvbnN0IGNoYXIgKnBlcmlvZG5hbWUs IGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gT2lkCWdldF9jYXN0X29pZChPaWQgc291cmNl dHlwZWlkLCBPaWQgdGFyZ2V0dHlwZWlkLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIGNo YXIgKmdldF9jb2xsYXRpb25fbmFtZShPaWQgY29sbG9pZCk7CiBleHRlcm4gYm9vbCBnZXRf Y29sbGF0aW9uX2lzZGV0ZXJtaW5pc3RpYyhPaWQgY29sbG9pZCk7CkBAIC0xOTcsNiArMTk5 LDcgQEAgZXh0ZXJuIE9pZAlnZXRfcmFuZ2Vfc3VidHlwZShPaWQgcmFuZ2VPaWQpOwogZXh0 ZXJuIE9pZAlnZXRfcmFuZ2VfY29sbGF0aW9uKE9pZCByYW5nZU9pZCk7CiBleHRlcm4gT2lk CWdldF9yYW5nZV9tdWx0aXJhbmdlKE9pZCByYW5nZU9pZCk7CiBleHRlcm4gT2lkCWdldF9t dWx0aXJhbmdlX3JhbmdlKE9pZCBtdWx0aXJhbmdlT2lkKTsKK2V4dGVybiBPaWQJZ2V0X3N1 YnR5cGVfcmFuZ2UoT2lkIHN1YnR5cGVPaWQpOwogZXh0ZXJuIE9pZAlnZXRfaW5kZXhfY29s dW1uX29wY2xhc3MoT2lkIGluZGV4X29pZCwgaW50IGF0dG5vKTsKIGV4dGVybiBib29sIGdl dF9pbmRleF9pc3JlcGxpZGVudChPaWQgaW5kZXhfb2lkKTsKIGV4dGVybiBib29sIGdldF9p bmRleF9pc3ZhbGlkKE9pZCBpbmRleF9vaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvcGVyaW9kLmggYi9zcmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGE4YWYzZWRiMDEKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaApAQCAtMCwwICsxLDE5IEBACisv Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZXJpb2QuaAorICoJICBzdXBwb3J0IGZv ciBQb3N0Z3JlcyBwZXJpb2RzLgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTYtMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBv ZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvdXRpbHMvcGVyaW9kLmgKKyAqCisg Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBQRVJJT0RfSAorI2RlZmluZSBQ RVJJT0RfSAorCitleHRlcm4gRGF0dW0gcGVyaW9kX3RvX3JhbmdlKFR1cGxlVGFibGVTbG90 ICpzbG90LCBpbnQgc3RhcnRhdHRubywgaW50IGVuZGF0dG5vLCBPaWQgcmFuZ2V0eXBlKTsK KworI2VuZGlmCQkJCQkJCS8qIFBFUklPRF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS91dGlscy9zeXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaAppbmRl eCAzZmIzMzE0YjZjYS4uYzk0MmU4NjczODYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL3N5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaApAQCAt NzUsNiArNzUsOCBAQCBlbnVtIFN5c0NhY2hlSWRlbnRpZmllcgogCVBBUkFNRVRFUkFDTE5B TUUsCiAJUEFSQU1FVEVSQUNMT0lELAogCVBBUlRSRUxJRCwKKwlQRVJJT0ROQU1FLAorCVBF UklPRE9JRCwKIAlQUk9DTkFNRUFSR1NOU1AsCiAJUFJPQ09JRCwKIAlQVUJMSUNBVElPTk5B TUUsCkBAIC04NCw2ICs4Niw3IEBAIGVudW0gU3lzQ2FjaGVJZGVudGlmaWVyCiAJUFVCTElD QVRJT05SRUwsCiAJUFVCTElDQVRJT05SRUxNQVAsCiAJUkFOR0VNVUxUSVJBTkdFLAorCVJB TkdFU1VCVFlQRSwKIAlSQU5HRVRZUEUsCiAJUkVMTkFNRU5TUCwKIAlSRUxPSUQsCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVw YXJzZS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2Rl cGFyc2UuYwppbmRleCA0ODU2M2IyY2YwMS4uYTk1NGU3MDMzODQgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2Uu YwpAQCAtMTgzLDYgKzE4MywxMiBAQCBnZXRfYWx0ZXJ0YWJsZV9zdWJjbWRpbmZvKFBHX0ZV TkNUSU9OX0FSR1MpCiAJCQljYXNlIEFUX0Ryb3BDb25zdHJhaW50OgogCQkJCXN0cnR5cGUg PSAiRFJPUCBDT05TVFJBSU5UIjsKIAkJCQlicmVhazsKKwkJCWNhc2UgQVRfQWRkUGVyaW9k OgorCQkJCXN0cnR5cGUgPSAiQUREIFBFUklPRCI7CisJCQkJYnJlYWs7CisJCQljYXNlIEFU X0Ryb3BQZXJpb2Q6CisJCQkJc3RydHlwZSA9ICJEUk9QIFBFUklPRCI7CisJCQkJYnJlYWs7 CiAJCQljYXNlIEFUX1JlQWRkQ29tbWVudDoKIAkJCQlzdHJ0eXBlID0gIihyZSkgQUREIENP TU1FTlQiOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wZXJpb2RzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVyaW9kcy5v dXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY0ODFjOWIzMDU2 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wZXJpb2Rz Lm91dApAQCAtMCwwICsxLDE3NyBAQAorLyogU3lzdGVtIHBlcmlvZHMgYXJlIG5vdCBpbXBs ZW1lbnRlZCAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBk YXRlLCBwZXJpb2QgZm9yIHN5c3RlbV90aW1lIChkcywgZGUpKTsKK0VSUk9SOiAgUEVSSU9E IEZPUiBTWVNURU1fVElNRSBpcyBub3Qgc3VwcG9ydGVkCitMSU5FIDI6IGNyZWF0ZSB0YWJs ZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBzeS4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KKy8qIFBlcmlvZHMgbXVzdCBzcGVjaWZ5IGFjdHVhbCBjb2x1bW5zICovCitjcmVhdGUg dGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAo Ym9ndXMsIGRlKSk7CitFUlJPUjogIGNvbHVtbiAiYm9ndXMiIG9mIHJlbGF0aW9uICJwdCIg ZG9lcyBub3QgZXhpc3QKK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwg ZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgYm9ndXMpKTsKK0VSUk9SOiAgY29sdW1uICJi b2d1cyIgb2YgcmVsYXRpb24gInB0IiBkb2VzIG5vdCBleGlzdAorLyogRGF0YSB0eXBlcyBt dXN0IG1hdGNoIGV4YWN0bHkgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMg ZGF0ZSwgZGUgdGltZXN0YW1wLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworRVJST1I6ICBz dGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3QgYmUgb2Ygc2FtZSB0eXBlCitj cmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIHRleHQgY29sbGF0ZSAiQyIsIGRlIHRl eHQgY29sbGF0ZSAiUE9TSVgiLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworRVJST1I6ICBz dGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3QgaGF2ZSBzYW1lIGNvbGxhdGlv bgorLyogUGVyaW9kcyBtdXN0IGhhdmUgYSBkZWZhdWx0IEJUcmVlIG9wZXJhdG9yIGNsYXNz ICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIHhtbCwgZGUgeG1sLCBwZXJp b2QgZm9yIHAgKGRzLCBkZSkpOworRVJST1I6ICBubyByYW5nZSB0eXBlIGZvciB4bWwgZm91 bmQgZm9yIHBlcmlvZCBwCitISU5UOiAgWW91IGNhbiBkZWZpbmUgYSBjdXN0b20gcmFuZ2Ug dHlwZSB3aXRoIENSRUFURSBUWVBFCisvKiBQZXJpb2QgYW5kIGNvbHVtbiBuYW1lcyBhcmUg aW4gdGhlIHNhbWUgbmFtZXNwYWNlICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIs IGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgY3RpZCAoZHMsIGRlKSk7CitFUlJPUjog IHBlcmlvZCBuYW1lICJjdGlkIiBjb25mbGljdHMgd2l0aCBhIHN5c3RlbSBjb2x1bW4gbmFt ZQorY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJp b2QgZm9yIGlkIChkcywgZGUpKTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUgImlkIiBjb25mbGlj dHMgd2l0aCBhIGNvbHVtbiBuYW1lCisvKiBQZXJpb2QgbmFtZSBjYW4ndCBiZSBnaXZlbiBt b3JlIHRoYW4gb25jZSAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRl LCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSksIHBlcmlvZCBmb3IgcCAoZHMsIGRl KSk7CitFUlJPUjogIHBlcmlvZCBuYW1lICJwIiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UK Ky8qIE5vdyBtYWtlIG9uZSB0aGF0IHdvcmtzICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGlu dGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisvKiBT RUxFQ1QgKiBleGNsdWRlcyB0aGUgUEVSSU9EICovCitpbnNlcnQgaW50byBwdCB2YWx1ZXMg KDEsICcyMDAwLTAxLTAxJywgJzIwMDEtMDEtMDEnKTsKK3NlbGVjdCAqIGZyb20gcHQ7Cisg aWQgfCAgICAgZHMgICAgIHwgICAgIGRlICAgICAKKy0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAxIHwgMDEtMDEtMjAwMCB8IDAxLTAxLTIwMDEKKygxIHJvdykKKworLyog WW91IGNhbiBnZXQgaXQgaWYgeW91IHdhbnQgKi8KK3NlbGVjdCAqLCBwIGZyb20gcHQ7Cisg aWQgfCAgICAgZHMgICAgIHwgICAgIGRlICAgICB8ICAgICAgICAgICAgcCAgICAgICAgICAg IAorLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgMSB8IDAxLTAxLTIwMDAgfCAwMS0wMS0yMDAxIHwgWzAxLTAxLTIwMDAsMDEt MDEtMjAwMSkKKygxIHJvdykKKworLyogVHdvIGFyZSBva2F5ICovCitjcmVhdGUgdGFibGUg cHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAxIChkcywg ZGUpLCBwZXJpb2QgZm9yIHAyIChkcywgZGUpKTsKK2Ryb3AgdGFibGUgcHQyOworLyoKKyAq IEFMVEVSIFRBQkxFIHRlc3RzCisgKi8KK2FsdGVyIHRhYmxlIHB0IGRyb3AgcGVyaW9kIGZv ciBwOworYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3Igc3lzdGVtX3RpbWUgKGRzLCBk ZSk7CitFUlJPUjogIFBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1cHBvcnRlZAor YWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgcCAoZHMsIGRlKTsKKy8qIEFkZGluZyBh IHNlY29uZCBvbmUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUs IGRlIGRhdGUsIHBlcmlvZCBmb3IgcDEgKGRzLCBkZSkpOworYWx0ZXIgdGFibGUgcHQyIGFk ZCBwZXJpb2QgZm9yIHAyIChkcywgZGUpOworZHJvcCB0YWJsZSBwdDI7CisvKiBDYW4ndCBk cm9wIGl0cyBjb2x1bW5zICovCithbHRlciB0YWJsZSBwdCBkcm9wIGNvbHVtbiBkczsKK0VS Uk9SOiAgY2Fubm90IGRyb3AgY29sdW1uIGRzIG9mIHRhYmxlIHB0IGJlY2F1c2Ugb3RoZXIg b2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRhYmxlIHB0IGRl cGVuZHMgb24gY29sdW1uIGRzIG9mIHRhYmxlIHB0CitISU5UOiAgVXNlIERST1AgLi4uIENB U0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorYWx0ZXIgdGFibGUg cHQgZHJvcCBjb2x1bW4gZGU7CitFUlJPUjogIGNhbm5vdCBkcm9wIGNvbHVtbiBkZSBvZiB0 YWJsZSBwdCBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBw ZXJpb2QgcCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiBkZSBvZiB0YWJsZSBwdAor SElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmpl Y3RzIHRvby4KKy8qIENhbid0IGNoYW5nZSB0aGUgZGF0YSB0eXBlcyAqLworYWx0ZXIgdGFi bGUgcHQgYWx0ZXIgY29sdW1uIGRzIHR5cGUgdGltZXN0YW1wOworRVJST1I6ICBjYW5ub3Qg YWx0ZXIgdHlwZSBvZiBhIGNvbHVtbiB1c2VkIGJ5IGEgcGVyaW9kCitERVRBSUw6ICBwZXJp b2QgcCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiAiZHMiCithbHRlciB0YWJsZSBw dCBhbHRlciBjb2x1bW4gZHMgdHlwZSB0aW1lc3RhbXA7CitFUlJPUjogIGNhbm5vdCBhbHRl ciB0eXBlIG9mIGEgY29sdW1uIHVzZWQgYnkgYSBwZXJpb2QKK0RFVEFJTDogIHBlcmlvZCBw IG9uIHRhYmxlIHB0IGRlcGVuZHMgb24gY29sdW1uICJkcyIKKy8qIGNvbHVtbi9wZXJpb2Qg bmFtZXNwYWNlIGNvbmZsaWN0cyAqLworYWx0ZXIgdGFibGUgcHQgYWRkIGNvbHVtbiBwIGlu dGVnZXI7CitFUlJPUjogIGNvbHVtbiBuYW1lICJwIiBjb25mbGljdHMgd2l0aCBhIHBlcmlv ZCBuYW1lCithbHRlciB0YWJsZSBwdCByZW5hbWUgY29sdW1uIGlkIHRvIHA7CitFUlJPUjog IGNvbHVtbiBuYW1lICJwIiBjb25mbGljdHMgd2l0aCBhIHBlcmlvZCBuYW1lCithbHRlciB0 YWJsZSBwdCBhZGQgcGVyaW9kIGZvciB0YWJsZW9pZCAoZHMsIGRlKTsKK0VSUk9SOiAgcGVy aW9kIG5hbWUgInRhYmxlb2lkIiBjb25mbGljdHMgd2l0aCBhIHN5c3RlbSBjb2x1bW4gbmFt ZQorYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgIi4uLi4uLi4ucGcuZHJvcHBlZC40 Li4uLi4uLi4iIChkcywgZGUpOworRVJST1I6ICBwZXJpb2QgbmFtZSAiLi4uLi4uLi5wZy5k cm9wcGVkLjQuLi4uLi4uLiIgY29uZmxpY3RzIHdpdGggYSBjb2x1bW4gbmFtZQorLyogYWRk aW5nIGNvbHVtbnMgYW5kIHRoZSBwZXJpb2QgYXQgdGhlIHNhbWUgdGltZSAqLworY3JlYXRl IHRhYmxlIHB0MiAoaWQgaW50ZWdlcik7CithbHRlciB0YWJsZSBwdDIgYWRkIGNvbHVtbiBk cyBkYXRlLCBhZGQgY29sdW1uIGRlIGRhdGUsIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSk7 Citkcm9wIHRhYmxlIHB0MjsKKy8qIEFtYmlndW91cyByYW5nZSB0eXBlcyByYWlzZSBhbiBl cnJvciAqLworY3JlYXRlIHR5cGUgbXlkYXRlcmFuZ2UgYXMgcmFuZ2Uoc3VidHlwZT1kYXRl KTsKK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9k IGZvciBwIChkcywgZGUpKTsKK0VSUk9SOiAgYW1iaWd1b3VzIHJhbmdlIGZvciB0eXBlIGRh dGUKKy8qIFlvdSBjYW4gZ2l2ZSBhbiBleHBsaWNpdCByYW5nZSB0eXBlICovCitjcmVhdGUg dGFibGUgcHQyIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMs IGRlKSB3aXRoIChyYW5nZXR5cGUgPSAnbXlkYXRlcmFuZ2UnKSk7Citkcm9wIHR5cGUgbXlk YXRlcmFuZ2U7CitFUlJPUjogIGNhbm5vdCBkcm9wIHR5cGUgbXlkYXRlcmFuZ2UgYmVjYXVz ZSBvdGhlciBvYmplY3RzIGRlcGVuZCBvbiBpdAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFi bGUgcHQyIGRlcGVuZHMgb24gdHlwZSBteWRhdGVyYW5nZQorSElOVDogIFVzZSBEUk9QIC4u LiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRvby4KK2Ryb3AgdHlw ZSBteWRhdGVyYW5nZSBjYXNjYWRlOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBwZXJp b2QgcCBvbiB0YWJsZSBwdDIKK2Ryb3AgdGFibGUgcHQyOworY3JlYXRlIHRhYmxlIHB0MiAo aWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAo cmFuZ2V0eXBlID0gJ2RhdGVyYW5nZScpKTsKKy8qIFJhbmdlIHR5cGUgaXMgbm90IGZvdW5k ICovCitjcmVhdGUgdGFibGUgcHQzIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlv ZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAnbm90YXJhbmdlJykpOworRVJS T1I6ICBSYW5nZSB0eXBlIG5vdGFyYW5nZSBub3QgZm91bmQKKy8qIFJhbmdlIHR5cGUgaXMg dGhlIHdyb25nIHR5cGUgKi8KK2NyZWF0ZSB0YWJsZSBwdDMgKGlkIGludCwgZHMgZGF0ZSwg ZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICd0c3R6 cmFuZ2UnKSk7CitFUlJPUjogIFJhbmdlIHR5cGUgdHN0enJhbmdlIGRvZXMgbm90IG1hdGNo IGNvbHVtbiB0eXBlIGRhdGUKK2Ryb3AgdGFibGUgcHQyOworLyogQ1JFQVRFIFRBQkxFIChM SUtFIC4uLikgKi8KKy8qIFBlcmlvZHMgYXJlIG5vdCBjb3BpZWQgYnkgTElLRSwgc28gdGhl aXIgY29sdW1ucyBhcmVuJ3QgZWl0aGVyICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0 KTsKK1xkIHB0MgorICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMucHQyIgorIENvbHVt biB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAg fCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkcyAgICAgfCBkYXRlICAg IHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkZSAgICAgfCBkYXRlICAgIHwgICAgICAg ICAgIHwgICAgICAgICAgfCAKKworZHJvcCB0YWJsZSBwdDI7CisvKiBDYW4gYWRkIGEgcGVy aW9kIHJlZmVycmluZyB0byBMSUtFJ2QgY29sdW1ucyAqLworY3JlYXRlIHRhYmxlIG5vdF9w IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlKTsKK2NyZWF0ZSB0YWJsZSBwdDIgKGxp a2Ugbm90X3AsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitcZCBwdDIKKyAgICAgICAgICAg ICAgICBUYWJsZSAicHVibGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9u IHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgCisgZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCisgZGUgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQZXJp b2RzOgorICAgIHAgKGRzLCBkZSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJwdDJfcF9j aGVjayIgQ0hFQ0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2FuIGFkZCBh IHBlcmlvZCB3aXRoIHRoZSBzYW1lIG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2Ug cHQsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitcZCBwdDIKKyAgICAgICAgICAgICAgICBU YWJsZSAicHVibGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVs bGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgCisgZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisg ZGUgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQZXJpb2RzOgor ICAgIHAgKGRzLCBkZSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJwdDJfcF9jaGVjayIg Q0hFQ0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2FuIGFkZCBhIHBlcmlv ZCB3aXRoIGEgZGlmZmVyZW50IG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQs IHBlcmlvZCBmb3IgcDIgKGRzLCBkZSkpOworXGQgcHQyCisgICAgICAgICAgICAgICAgVGFi bGUgInB1YmxpYy5wdDIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxh YmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLQorIGlkICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAg ICB8IAorIGRzICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRl ICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGVyaW9kczoKKyAg ICBwMiAoZHMsIGRlKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInB0Ml9wMl9jaGVjayIg Q0hFQ0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2FuJ3QgYWRkIGEgcGVy aW9kIHdob3NlIG5hbWUgY29uZmxpY3RzIHdpdGggYSBMSUtFJ2QgY29sdW1uICovCitjcmVh dGUgdGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9yIGlkIChkcywgZGUpKTsKK0VSUk9S OiAgcGVyaW9kIG5hbWUgImlkIiBjb25mbGljdHMgd2l0aCBhIGNvbHVtbiBuYW1lCisvKiBD UkVBVEUgVEFMQkUgSU5IRVJJVFMgKi8KKy8qIENhbid0IGluaGVyaXQgZnJvbSBhIHRhYmxl IHdpdGggYSBwZXJpb2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKG5hbWUgdGV4dCkgaW5oZXJp dHMgKHB0KTsKK0VSUk9SOiAgSW5oZXJpdGluZyBmcm9tIGEgdGFibGUgd2l0aCBhIFBFUklP RCBpcyBub3Qgc3VwcG9ydGVkCisvKiBDYW4ndCBpbmhlcml0IHdpdGggYSBwZXJpb2QgKi8K K2NyZWF0ZSB0YWJsZSBwdDIgKGQycyBkYXRlLCBkMmUgZGF0ZSwgcGVyaW9kIGZvciBwIChk MnMsIGQyZSkpIGluaGVyaXRzIChub3RfcCk7CitFUlJPUjogIEluaGVyaXRpbmcgaXMgbm90 IHN1cHBvcnRlZCB3aGVuIGEgdGFibGUgaGFzIGEgUEVSSU9ECitkcm9wIHRhYmxlIG5vdF9w OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggY2MyZjZiNDZlMGMuLmQ2 YjhiOTZkODhlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVk dWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTQzLDcg KzQzLDcgQEAgdGVzdDogY29weSBjb3B5c2VsZWN0IGNvcHlkbWwgaW5zZXJ0IGluc2VydF9j b25mbGljdAogIyBOb3RlOiBtYW55IG9mIHRoZSB0ZXN0cyBpbiBsYXRlciBncm91cHMgZGVw ZW5kIG9uIGNyZWF0ZV9pbmRleAogIyAtLS0tLS0tLS0tCiB0ZXN0OiBjcmVhdGVfZnVuY3Rp b25fYyBjcmVhdGVfbWlzYyBjcmVhdGVfb3BlcmF0b3IgY3JlYXRlX3Byb2NlZHVyZSBjcmVh dGVfdGFibGUgY3JlYXRlX3R5cGUgY3JlYXRlX3NjaGVtYQotdGVzdDogY3JlYXRlX2luZGV4 IGNyZWF0ZV9pbmRleF9zcGdpc3QgY3JlYXRlX3ZpZXcgaW5kZXhfaW5jbHVkaW5nIGluZGV4 X2luY2x1ZGluZ19naXN0Cit0ZXN0OiBjcmVhdGVfaW5kZXggY3JlYXRlX2luZGV4X3NwZ2lz dCBjcmVhdGVfdmlldyBpbmRleF9pbmNsdWRpbmcgaW5kZXhfaW5jbHVkaW5nX2dpc3QgcGVy aW9kcwogCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0 cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGVyaW9kcy5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uZjBiZTg5MDIxNzkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbApAQCAtMCwwICsxLDExOSBAQAorLyogU3lzdGVt IHBlcmlvZHMgYXJlIG5vdCBpbXBsZW1lbnRlZCAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBp bnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHN5c3RlbV90aW1lIChkcywg ZGUpKTsKKworLyogUGVyaW9kcyBtdXN0IHNwZWNpZnkgYWN0dWFsIGNvbHVtbnMgKi8KK2Ny ZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZv ciBwIChib2d1cywgZGUpKTsKK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0 ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgYm9ndXMpKTsKKworLyogRGF0YSB0eXBl cyBtdXN0IG1hdGNoIGV4YWN0bHkgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwg ZHMgZGF0ZSwgZGUgdGltZXN0YW1wLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworY3JlYXRl IHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyB0ZXh0IGNvbGxhdGUgIkMiLCBkZSB0ZXh0IGNv bGxhdGUgIlBPU0lYIiwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKKworLyogUGVyaW9kcyBt dXN0IGhhdmUgYSBkZWZhdWx0IEJUcmVlIG9wZXJhdG9yIGNsYXNzICovCitjcmVhdGUgdGFi bGUgcHQgKGlkIGludGVnZXIsIGRzIHhtbCwgZGUgeG1sLCBwZXJpb2QgZm9yIHAgKGRzLCBk ZSkpOworCisvKiBQZXJpb2QgYW5kIGNvbHVtbiBuYW1lcyBhcmUgaW4gdGhlIHNhbWUgbmFt ZXNwYWNlICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRh dGUsIHBlcmlvZCBmb3IgY3RpZCAoZHMsIGRlKSk7CitjcmVhdGUgdGFibGUgcHQgKGlkIGlu dGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgaWQgKGRzLCBkZSkpOworCisv KiBQZXJpb2QgbmFtZSBjYW4ndCBiZSBnaXZlbiBtb3JlIHRoYW4gb25jZSAqLworY3JlYXRl IHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAg KGRzLCBkZSksIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIE5vdyBtYWtlIG9uZSB0 aGF0IHdvcmtzICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRl IGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIFNFTEVDVCAqIGV4Y2x1ZGVz IHRoZSBQRVJJT0QgKi8KK2luc2VydCBpbnRvIHB0IHZhbHVlcyAoMSwgJzIwMDAtMDEtMDEn LCAnMjAwMS0wMS0wMScpOworc2VsZWN0ICogZnJvbSBwdDsKKworLyogWW91IGNhbiBnZXQg aXQgaWYgeW91IHdhbnQgKi8KK3NlbGVjdCAqLCBwIGZyb20gcHQ7CisKKy8qIFR3byBhcmUg b2theSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0 ZSwgcGVyaW9kIGZvciBwMSAoZHMsIGRlKSwgcGVyaW9kIGZvciBwMiAoZHMsIGRlKSk7Citk cm9wIHRhYmxlIHB0MjsKKworLyoKKyAqIEFMVEVSIFRBQkxFIHRlc3RzCisgKi8KK2FsdGVy IHRhYmxlIHB0IGRyb3AgcGVyaW9kIGZvciBwOworYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlv ZCBmb3Igc3lzdGVtX3RpbWUgKGRzLCBkZSk7CithbHRlciB0YWJsZSBwdCBhZGQgcGVyaW9k IGZvciBwIChkcywgZGUpOworCisvKiBBZGRpbmcgYSBzZWNvbmQgb25lICovCitjcmVhdGUg dGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAx IChkcywgZGUpKTsKK2FsdGVyIHRhYmxlIHB0MiBhZGQgcGVyaW9kIGZvciBwMiAoZHMsIGRl KTsKK2Ryb3AgdGFibGUgcHQyOworCisvKiBDYW4ndCBkcm9wIGl0cyBjb2x1bW5zICovCith bHRlciB0YWJsZSBwdCBkcm9wIGNvbHVtbiBkczsKK2FsdGVyIHRhYmxlIHB0IGRyb3AgY29s dW1uIGRlOworCisvKiBDYW4ndCBjaGFuZ2UgdGhlIGRhdGEgdHlwZXMgKi8KK2FsdGVyIHRh YmxlIHB0IGFsdGVyIGNvbHVtbiBkcyB0eXBlIHRpbWVzdGFtcDsKK2FsdGVyIHRhYmxlIHB0 IGFsdGVyIGNvbHVtbiBkcyB0eXBlIHRpbWVzdGFtcDsKKworLyogY29sdW1uL3BlcmlvZCBu YW1lc3BhY2UgY29uZmxpY3RzICovCithbHRlciB0YWJsZSBwdCBhZGQgY29sdW1uIHAgaW50 ZWdlcjsKK2FsdGVyIHRhYmxlIHB0IHJlbmFtZSBjb2x1bW4gaWQgdG8gcDsKK2FsdGVyIHRh YmxlIHB0IGFkZCBwZXJpb2QgZm9yIHRhYmxlb2lkIChkcywgZGUpOworYWx0ZXIgdGFibGUg cHQgYWRkIHBlcmlvZCBmb3IgIi4uLi4uLi4ucGcuZHJvcHBlZC40Li4uLi4uLi4iIChkcywg ZGUpOworCisvKiBhZGRpbmcgY29sdW1ucyBhbmQgdGhlIHBlcmlvZCBhdCB0aGUgc2FtZSB0 aW1lICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyKTsKK2FsdGVyIHRhYmxlIHB0 MiBhZGQgY29sdW1uIGRzIGRhdGUsIGFkZCBjb2x1bW4gZGUgZGF0ZSwgYWRkIHBlcmlvZCBm b3IgcCAoZHMsIGRlKTsKK2Ryb3AgdGFibGUgcHQyOworCisvKiBBbWJpZ3VvdXMgcmFuZ2Ug dHlwZXMgcmFpc2UgYW4gZXJyb3IgKi8KK2NyZWF0ZSB0eXBlIG15ZGF0ZXJhbmdlIGFzIHJh bmdlKHN1YnR5cGU9ZGF0ZSk7CitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRzIGRhdGUs IGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIFlvdSBjYW4gZ2l2ZSBh biBleHBsaWNpdCByYW5nZSB0eXBlICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRz IGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUg PSAnbXlkYXRlcmFuZ2UnKSk7Citkcm9wIHR5cGUgbXlkYXRlcmFuZ2U7Citkcm9wIHR5cGUg bXlkYXRlcmFuZ2UgY2FzY2FkZTsKK2Ryb3AgdGFibGUgcHQyOworY3JlYXRlIHRhYmxlIHB0 MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0 aCAocmFuZ2V0eXBlID0gJ2RhdGVyYW5nZScpKTsKKworLyogUmFuZ2UgdHlwZSBpcyBub3Qg Zm91bmQgKi8KK2NyZWF0ZSB0YWJsZSBwdDMgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwg cGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdub3RhcmFuZ2UnKSk7 CisKKy8qIFJhbmdlIHR5cGUgaXMgdGhlIHdyb25nIHR5cGUgKi8KK2NyZWF0ZSB0YWJsZSBw dDMgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdp dGggKHJhbmdldHlwZSA9ICd0c3R6cmFuZ2UnKSk7Citkcm9wIHRhYmxlIHB0MjsKKworLyog Q1JFQVRFIFRBQkxFIChMSUtFIC4uLikgKi8KKworLyogUGVyaW9kcyBhcmUgbm90IGNvcGll ZCBieSBMSUtFLCBzbyB0aGVpciBjb2x1bW5zIGFyZW4ndCBlaXRoZXIgKi8KK2NyZWF0ZSB0 YWJsZSBwdDIgKGxpa2UgcHQpOworXGQgcHQyCitkcm9wIHRhYmxlIHB0MjsKKworLyogQ2Fu IGFkZCBhIHBlcmlvZCByZWZlcnJpbmcgdG8gTElLRSdkIGNvbHVtbnMgKi8KK2NyZWF0ZSB0 YWJsZSBub3RfcCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSk7CitjcmVhdGUgdGFi bGUgcHQyIChsaWtlIG5vdF9wLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworXGQgcHQyCitk cm9wIHRhYmxlIHB0MjsKKworLyogQ2FuIGFkZCBhIHBlcmlvZCB3aXRoIHRoZSBzYW1lIG5h bWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgcCAoZHMsIGRl KSk7CitcZCBwdDIKK2Ryb3AgdGFibGUgcHQyOworCisvKiBDYW4gYWRkIGEgcGVyaW9kIHdp dGggYSBkaWZmZXJlbnQgbmFtZSAqLworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBwdCwgcGVy aW9kIGZvciBwMiAoZHMsIGRlKSk7CitcZCBwdDIKK2Ryb3AgdGFibGUgcHQyOworCisvKiBD YW4ndCBhZGQgYSBwZXJpb2Qgd2hvc2UgbmFtZSBjb25mbGljdHMgd2l0aCBhIExJS0UnZCBj b2x1bW4gKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgaWQgKGRz LCBkZSkpOworCisvKiBDUkVBVEUgVEFMQkUgSU5IRVJJVFMgKi8KKworLyogQ2FuJ3QgaW5o ZXJpdCBmcm9tIGEgdGFibGUgd2l0aCBhIHBlcmlvZCAqLworY3JlYXRlIHRhYmxlIHB0MiAo bmFtZSB0ZXh0KSBpbmhlcml0cyAocHQpOworCisvKiBDYW4ndCBpbmhlcml0IHdpdGggYSBw ZXJpb2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGQycyBkYXRlLCBkMmUgZGF0ZSwgcGVyaW9k IGZvciBwIChkMnMsIGQyZSkpIGluaGVyaXRzIChub3RfcCk7CisKK2Ryb3AgdGFibGUgbm90 X3A7Ci0tIAoyLjQyLjAKCg== --------------5mQnkvShJhECliiRK4zn4H0Z--