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 1uV64R-00DNds-Nm for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Jun 2025 10:12:36 +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 1uV63R-000rha-E0 for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Jun 2025 10:11:34 +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 1uV63Q-000rgv-EJ for pgsql-hackers@lists.postgresql.org; Fri, 27 Jun 2025 10:11:33 +0000 Received: from mail-yw1-x1135.google.com ([2607:f8b0:4864:20::1135]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uV63O-004Foe-0m for pgsql-hackers@lists.postgresql.org; Fri, 27 Jun 2025 10:11:31 +0000 Received: by mail-yw1-x1135.google.com with SMTP id 00721157ae682-7086dcab64bso19321677b3.1 for ; Fri, 27 Jun 2025 03:11:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751019089; x=1751623889; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=lVWtb7vRrIt+dEzhHbHBjN+ExnuEwYKhhE9Q4qQjBFI=; b=a833SpGQoBVZyN7jsEGGkRB+5h6CzdRfWXBZjS0yEz/ieFIcjx9/sDopnktxK/3FQe FQN7MCdtdlNAp5YOYYRO9t/dlfovDO3iijJhw8zkcwVj7Z0Hrvf2a51Rh+7ULDZkv4Db lD639RVrOinaJxlcW2YyAtznXEMfaAYOo4h+sWEb0UZOT6SpOQ3N1su0iGUqnOkeVw5H 4g+Dj4bKhPzNPyiM2uAe3MBSmeHGSZk2K9bDL63fwo1PmmG6oG2k/Asu5ZxsUTl9AwrP juNsDWWNpAFRvOeHlA8pOB13UJaAu/g7O/vDJvyY49EeEf3aGUkTyqqf6rYqG6nkNE1t iCRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751019089; x=1751623889; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=lVWtb7vRrIt+dEzhHbHBjN+ExnuEwYKhhE9Q4qQjBFI=; b=j4wPp020DL6R5qVs+EGhcn5cTGB66yNYc/jQyERL3m9jRKSAx/0VzlpxZddC74Os3i G4PAoOv6pSKWFI9+NRq/bWC0WGbKgntyezwNlhVQT8zYVwrx7gl6r2m2TLq9R7BOPI4c Jagor2tRAfWubrx5gs0Wf+FTLDit4YLvNgftzT/4VZ52h1CiQWGPC8LChOi3fVLsPCW4 m1YP8LiE8eGIhtLXdGdmZwOxG/scSRdJjDTTQvCw7RB8VpWLYsHwYv8QON526vqvwPjY 7P04UPpmpNGz9RvsBQ2Nu49r4g9M5WxWJvtyvBRQytJ8AyW/tqDHNUBTUIqjZYaG4V9Y OOxw== X-Forwarded-Encrypted: i=1; AJvYcCUnjKUp4tJVH0ncLSKd4I4FzIZQobwsYlxbnPC7gYdYOz0vDZNYo+qTcdfEfbiBuSRgTzNpc/v3V4dnzpB7@lists.postgresql.org X-Gm-Message-State: AOJu0YzWGyiHxPCe0AbgYQRHdckjMHS2ZCKR1QRrE+fdmHyyofj3c82W MTOxsq2IbZtzscOnvgyGuSYoImXIRjsA7ISsnBEqePH91Quj7YvqzNHQtJs7CmDkGwfV0DFBzlS 3FjOsJskMUTD8atldnb4YlAvU6V7/6eU= X-Gm-Gg: ASbGnct8NsjoYnh41JEFgl8zWlCYyQpHgZG30dd9W4ko+81ZG7WxY3/TYYC4qI//Sft 0PGHqlRoFqXxZUEBiM2G6Br6Z6bFqZ8J8xoUhh11uUXbK524L87rAxSQXPBlpCQ78JbJ2J1nXJM gyhijK4COaVOz65Tc5Tl+yXvrw6A2J3R24zJhsbiEUv9bcIQ== X-Google-Smtp-Source: AGHT+IF9fXKlTZAT40wLK4wafjAZgR0eetGUc+NOFVOkGk34niASLB03NKRv2/Ny/RgrDp7LSIJblE1yATiJkR/3xzA= X-Received: by 2002:a05:690c:306:b0:70e:53:6741 with SMTP id 00721157ae682-715171b3eb0mr38781137b3.28.1751019089097; Fri, 27 Jun 2025 03:11:29 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Fri, 27 Jun 2025 15:41:17 +0530 X-Gm-Features: Ac12FXwZiuOAms-tmnZmWYWvxbDCL2ClCAKDwkJdIjwrjvaDWDz76D7r5zhEayQ Message-ID: Subject: Re: Skipping schema changes in publication To: Peter Smith Cc: Amit Kapila , "Zhijie Hou (Fujitsu)" , vignesh C , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000cd798a06388ae6a1" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000cd798a06388ae6a1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, 26 Jun 2025 at 09:06, Peter Smith wrote: > > Hi Shlok. > > Below are some review comments for v14-0003 > > =3D=3D=3D=3D=3D=3D > 1. GENERAL > > Since the new syntax uses EXCEPT, then, in my opinion, you should try > to use that same term where possible when describing things. I > understand it is hard to do this in text and I agree often it makes > more sense to say "exclude" columns etc, but OTOH in the code there > are lots of places where you could have named vars/params differently: > e.g. 'except_collist' instead of 'exclude_collist' might have been > better. > Fixed the variable names. > =3D=3D=3D=3D=3D=3D > Commit message > > 2. > Column list specifed with EXCEPT is stored in column "prattrs" in table > "pg_publication_rel" and also column "prexcept" is set to "true", to main= tain > the column list that user wants to exclude from the publication. > > ~ > > That paragraph could do with some rewording. For example, AFAIK, > "prattrs" is for all column lists -- not just except col-lists, but > the way it is described here sounds different. > > Also, /specifed/specified/ > Reworded the paragraph > =3D=3D=3D=3D=3D=3D > doc/src/sgml/catalogs.sgml > > 3. (52.42. pg_publication_rel) > > > - True if the relation must be excluded > + True if the relation or column list must be excluded. If publicat= ion is > + created FOR ALL TABLES and it is specified as = true, > + the relation should be excluded. Else if it is true the columns i= n > + prattrs should be excluded from being publishe= d. > > > I felt this could be expressed more simply without mentioning anything > about FOR ALL TABLES. > > SUGGESTION > True if the column list or relation must be excluded from publication. > If a column list is specified in prattrs, then > exclude only those columns. If prattrs is NULL, > then exclude the entire relation. > Fixed > =3D=3D=3D=3D=3D=3D > doc/src/sgml/logical-replication.sgml > > 4. (29.5. Column Lists) > > > - Each publication can optionally specify which columns of each table a= re > - replicated to subscribers. The table on the subscriber side must have= at > - least all the columns that are published. If no column list is specif= ied, > - then all columns on the publisher are replicated. > + Each publication can optionally specify which columns of each > table should be > + replicated or excluded from replication. On the subscriber side, the = table > + must include at least all the columns that are published. If no colum= n list > + is provided, all columns from the publisher are replicated by default= . > See for details on the synt= ax. > > > I felt this patch may have changed too much text. IMO, you only needed > to say "... are replicated or excluded from replication.". The other > changes did not seem necessary. > > ~~~ Fixed > 5. > > - If no column list is specified, any columns added to the table later = are > - automatically replicated. This means that having a column list which = names > - all columns is not the same as having no column list at all. > + If no column list or a column list with EXCEPT is specified, any colu= mns > + added to the table later are automatically replicated. This means > that having > + a column list which names all columns is not the same as having no > + column list at all. If an column list is specified, any columns added= to the > + table later are automatically replicated. > > > 5a. > "This means that having a column list which names all columns is not > the same as having no column list at all." -- That note does not make > sense when you say EXCEPT. I think some rewording is needed here. > Fixed > ~ > > 5b. > "If an column list is specified, any columns added to the table later > are automatically replicated.". > > This made no sense -- some words missing? > This change was done by mistake. Removed it. > ~~~ > > 6. > Generated columns can also be specified in a column list. This allows > generated columns to be published, regardless of the publication para= meter > > - publish_generated_columns. See > - for details. > + publish_generated_columns. Generated column= s can > + be included in column list specified with EXCEPT clause if publicatio= n > + parameter > + > + publish_generated_columns is not set to > + none. Specified generated columns will not be publ= ished. > + See for details. > > > I am not so sure about this. It seemed overly strict to me. > > Why can't it simply say: > "Generated columns can also be specified in a column list. This allows > generated columns to be published or excluded, regardless of the > publication parameter..." > > Specifically, I don't know why you need to say: > Generated columns can be included in column list specified with EXCEPT > clause if publication parameter publish_generated_columns is not set > to none. Specified generated columns will not be published. > > IIUC, then EXCEPT (gencol1, gencol2) is saying to exclude the named > cols. So if param is "stored", then the named cols will be excluded. > OTOH, if param is "none" then all generated cols will be excluded > anyway, so why not just allow the EXCEPT (gencol,gencol2) here as > well, because the result will be the same. > > I have removed this change. And allowed specifying generated columns in EXCEPT column list as well irrespective of value of =E2=80=98publish_generated_columns=E2=80=99. > ~~~ > > 7. (29.5.1. Examples) > > > - Create a table t1 to be used in the following exa= mple. > + Create tables t1, t2 to be > used in the > + following example. > > /Create tables t1, t2/Create tables t1 and t2/ > Fixed > ~~~ > > 8. > > Create a publication p1. A column list is defined= for > - table t1 to reduce the number of columns that wil= l be > - replicated. Notice that the order of column names in the column list= does > - not matter. > + table t1 and a column list is defined for table > + t2 with EXCEPT clause to reduce the number of > columns that will be > + replicated. Notice that the order of column names in the column > lists does not matter. > > BEFORE > A column list is defined for table t1 and a column list is defined for > table t2... > > SUGGESTION (added comma, etc.) > A column list is defined for table t1, and another column list is > defined for table t2... > Fixed > ~~~ > > 9. > The final example still says: > "Only data from the column list of publication p1 is replicated." > > That doesn't seem quite appropriate now that you also have an EXCEPT > column list. > > SUGGESTION: > Only data specified by the column lists of publication p1 is replicated. > Fixed > =3D=3D=3D=3D=3D=3D > doc/src/sgml/ref/create_publication.sgml > > 10. > + > + When a column list is specified with EXCEPT, the named columns are= not > + replicated. Specifying a column list has no effect on > + TRUNCATE commands. > + > > I felt that to be clearer the preceding paragraph should be changed as fo= llows: > > /When a column list is specified, only the named columns are > replicated./When a column list without EXCEPT is specified, only the > named columns are replicated./ > Fixed > ~~~ > > 11. CREATE PUBLICATION (NOTES section) > > 11a. > The NOTES talk about replica identity columns -- should you mention EXCEP= T here? > Added notes for EXCEPT > ~ > > 11b. > The NOTES talk about generated columns -- should you mention EXCEPT here? > I felt it is not needed. > =3D=3D=3D=3D=3D=3D > src/backend/catalog/pg_publication.c > > 12. check_and_fetch_column_list > > + if (!isnull) > + except =3D DatumGetBool(cfdatum); > + > + *except_columns =3D except && !pub->alltables; > > AFAICT, you can Assert(!pub->alltables) because you already checked > that earlier up front. > So you don't need 'except' var either. Just assign *except_cols up > front and then overwrite it later if true. > > SUGGESTION: > > *except_cols =3D false; > > if (pub->alltables) > return false; > ... > if (!isnull) > *except_cols =3D DatumGetBool(cfdatum); > Fixed > ~~~ > > 13. publication_add_relation > > /* Validate and translate column names into a Bitmapset of attnums. */ > - attnums =3D pub_collist_validate(pri->relation, pri->columns); > + attnums =3D pub_collist_validate(pri->relation, pri->columns, > + pri->except && !pub->alltables, > + pub->pubgencols_type); > > > I am wondering why we are even calling a function to validate column > lists if pub->alltables was true. AFAIK, that combination of > column-lists and FOR ALL TABLES is not even possible, so the code > seems strange. > Fixed > ~~~ > > 14. pub_exclude_collist_validate > . > + /* > + * Check if column list specified with EXCEPT have any stored > + * generated column and 'publish_generated_columns' is not set to > + * 'stored'. > + */ > + if (except_columns && > + TupleDescAttr(tupdesc, attnum - 1)->attgenerated =3D=3D > ATTRIBUTE_GENERATED_STORED && > + pubgencols_type !=3D PUBLISH_GENCOLS_STORED) > + ereport(ERROR, > + errcode(ERRCODE_INVALID_COLUMN_REFERENCE), > + errmsg("cannot use stored generated column \"%s\" in publication > column list specified with EXCEPT when \"%s\" set to \"%s\"", > + colname, "publish_generated_columns", "stored")); > > As mentioned in the above DOCS comments, I was having doubts about why > we have this error. > > If the parameter says "none", then generated columns will not be > replicated, so why should we care if the user also says > EXCEPT(gencol1,gencol2). Either way, the result will be the same; the > generated column will not be published. > Removed this restriction. > ~~~ > > 15. GetRelationPublications > > { > HeapTuple tup =3D &pubrellist->members[i]->tuple; > Oid pubid =3D ((Form_pg_publication_rel) GETSTRUCT(tup))->prpubid; > + HeapTuple pubtup =3D SearchSysCache1(PUBLICATIONOID, ObjectIdGetDatum(p= ubid)); > + bool is_table_excluded =3D ((Form_pg_publication) > GETSTRUCT(pubtup))->puballtables && > + ((Form_pg_publication_rel) GETSTRUCT(tup))->prexcept; > > - if (except_flag =3D=3D ((Form_pg_publication_rel) GETSTRUCT(tup))->prex= cept) > + if (except_flag =3D=3D is_table_excluded) > result =3D lappend_oid(result, pubid); > + > + ReleaseS > > > I'm not 100% sure you need the additional 'pubtup'... Can't you just > look at the "prattrs" field to see if a column-list was specified? If > "prattrs" is null and "prexcept" is true, isn't that the same > combination as what you are looking for here? > Yes, we can use this combination as well. Fixed it in latest patch. > ~~~ > > 16. pg_get_publication_tables > > + columnsDatum =3D SysCacheGetAttr(PUBLICATIONRELMAP, pubtuple, > + Anum_pg_publication_rel_prattrs, > + &(nulls[2])); > + > + /* if column list is specified with EXCEPT */ > + if (!pub->alltables && except) > + columns =3D pub_collist_to_bitmapset(NULL, columnsDatum, NULL); > + else > + values[2] =3D columnsDatum; > > 16a. > Something seems fishy here. Isn't there a pathway where you missed > assigning value[2] to anything? > Modified this change. > ~ > > 16b. > Also, I feel there should be some other boolean variable used here > instead of checking bot (!pub->alltables && except) in multiple > places. > Fixed > > =3D=3D=3D=3D=3D=3D > src/backend/replication/pgoutput/pgoutput.c > > 17. RelationSyncEntry > + > + /* Indicate if no column is included in the publication */ > + bool no_cols_published; > > Maybe this can have a more explanatory comment to explain why it is neede= d? > Fixed > ~~~ > > 18. check_and_init_gencol > > + bool found =3D false; > + bool except_columns =3D false; > + > + found =3D check_and_fetch_column_list(pub, entry->publish_as_relid, NUL= L, > + NULL, &except_columns); > + > /* > * The column list takes precedence over the > * 'publish_generated_columns' parameter. Those will be checked later, > - * see pgoutput_column_list_init. > + * see pgoutput_column_list_init. But when a column list is specified > + * with EXCEPT, it should be checked. > */ > - if (check_and_fetch_column_list(pub, entry->publish_as_relid, NULL, NUL= L)) > + if (found && !except_columns) > continue; > > The variable 'found' seems a poor name; how about 'has_column_list' or si= milar? > Fixed > ~~~ > > 19. pgoutput_change > > + /* > + * If all columns of a table is present in column list specified with > + * EXCEPT, skip publishing the changes. > + */ > + if (relentry->no_cols_published) > + return; > > /is present/are present/ > fixed > =3D=3D=3D=3D=3D=3D > src/bin/pg_dump/pg_dump.c > > 20. getPublicationTables > > + if (strcmp(prexcept, "t") =3D=3D 0 && PQgetisnull(res, i, i_prattrs)) > pubrinfo[j].dobj.objType =3D DO_PUBLICATION_EXCEPT_REL; > + else > + pubrinfo[j].dobj.objType =3D DO_PUBLICATION_REL; > > pubrinfo[j].dobj.catId.tableoid =3D > atooid(PQgetvalue(res, i, i_tableoid)); > @@ -4797,6 +4797,7 @@ getPublicationTables(Archive *fout, TableInfo > tblinfo[], int numTables) > pubrinfo[j].pubrelqual =3D NULL; > else > pubrinfo[j].pubrelqual =3D pg_strdup(PQgetvalue(res, i, i_prrelqual)); > + pubrinfo[j].pubexcept =3D (strcmp(prexcept, "t") =3D=3D 0); > > > Why not assign pubrinfo[j].pubexcept earlier so you don't have to > repeat the strcmp? > Fixed > ~~~ > > 21. > - if (strcmp(prexcept, "t") =3D=3D 0) > + if (strcmp(prexcept, "t") =3D=3D 0 && PQgetisnull(res, i, i_prattrs)) > simple_ptr_list_append(&exceptinfo, &pubrinfo[j]); > > Why not assign pubrinfo[j].pubexcept earlier so you don't have to > repeat the strcmp? Same also for the PQgetisnull(res, i, > i_prattrs))... > Fixed > ~~~ > > 22. dumpPublicationTable > > if (pubrinfo->pubrattrs) > - appendPQExpBuffer(query, " (%s)", pubrinfo->pubrattrs); > + { > + if (pubrinfo->pubexcept) > + appendPQExpBuffer(query, " EXCEPT (%s)", pubrinfo->pubrattrs); > + else > + appendPQExpBuffer(query, " (%s)", pubrinfo->pubrattrs); > + } > > SUGGESTION > { > if (pubrinfo->pubexcept) > appendPQExpBuffer(query, " EXCEPT"); > > appendPQExpBuffer(query, " (%s)", pubrinfo->pubrattrs); > } Fixed I have addressed the comments shared by you and shared the updated v15 patch set here. Thanks and Regards, Shlok Kyal --000000000000cd798a06388ae6a1 Content-Type: application/octet-stream; name="v15-0001-Add-RESET-clause-to-Alter-Publication-which-will.patch" Content-Disposition: attachment; filename="v15-0001-Add-RESET-clause-to-Alter-Publication-which-will.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mceniljh0 RnJvbSA0NTIwYWExODc4ZjI3ZGZiM2NhNDlkYTJhMjg0MzZhMDc0YjMxNDA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMTEgSnVuIDIwMjUgMTE6NDE6MTggKzA1MzAKU3ViamVjdDogW1BBVENIIHYx NSAxLzNdIEFkZCBSRVNFVCBjbGF1c2UgdG8gQWx0ZXIgUHVibGljYXRpb24gd2hpY2ggd2lsbAog cmVzZXQgdGhlIHB1YmxpY2F0aW9uIHdpdGggZGVmYXVsdCB2YWx1ZXMuCgpUaGlzIHBhdGNoIGFk ZHMgYSBuZXcgUkVTRVQgY2xhdXNlIHRvIEFMVEVSIFBVQkxJQ0FUSU9OIHdoaWNoIHdpbGwgcmVz ZXQKdGhlIHB1YmxpY2F0aW9uIHRvIHRoZSBkZWZhdWx0IHN0YXRlIHdoaWNoIGluY2x1ZGVzIHJl c2V0dGluZyB0aGUgcHVibGljYXRpb24KcGFyYW1ldGVycywgc2V0dGluZyBBTEwgVEFCTEVTIGZs YWcgdG8gZmFsc2UgYW5kIGRyb3BwaW5nIHRoZSByZWxhdGlvbnMgYW5kCnNjaGVtYXMgdGhhdCBh cmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBwdWJsaWNhdGlvbi4KVXNhZ2U6CkFMVEVSIFBVQkxJQ0FU SU9OIHB1YjEgUkVTRVQ7Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5z Z21sICAgfCAgMzQgKysrKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRz LmMgICAgfCAxMDkgKysrKysrKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkgICAgICAgICAgICAgICAgIHwgICA5ICsrCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMgICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAg ICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5v dXQgfCAxMTggKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVi bGljYXRpb24uc3FsICAgICAgfCAgNTcgKysrKysrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgMzE2 IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVi bGljYXRpb24uc2dtbAppbmRleCBkNWVhMzgzZThiYy4uMTc4ZjM5ZDk1NzUgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTI3LDYgKzI3LDcgQEAgQUxURVIgUFVC TElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxl PiBEUk9QIDxyZXBsYWMKIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gU0VUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnB1YmxpY2F0aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+XSBbLCAuLi4gXSApCiBBTFRF UiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFj ZWFibGU+IE9XTkVSIFRPIHsgPHJlcGxhY2VhYmxlPm5ld19vd25lcjwvcmVwbGFjZWFibGU+IHwg Q1VSUkVOVF9ST0xFIHwgQ1VSUkVOVF9VU0VSIHwgU0VTU0lPTl9VU0VSIH0KIEFMVEVSIFBVQkxJ Q0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4g UkVOQU1FIFRPIDxyZXBsYWNlYWJsZT5uZXdfbmFtZTwvcmVwbGFjZWFibGU+CitBTFRFUiBQVUJM SUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+ IFJFU0VUCiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1 YmxpY2F0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIApAQCAt NjksMTggKzcwLDMxIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAgIDwvcGFyYT4KIAogICA8 cGFyYT4KLSAgIFRoZSByZW1haW5pbmcgdmFyaWFudHMgY2hhbmdlIHRoZSBvd25lciBhbmQgdGhl IG5hbWUgb2YgdGhlIHB1YmxpY2F0aW9uLgorICAgVGhlIDxsaXRlcmFsPk9XTkVSPC9saXRlcmFs PiBjbGF1c2Ugd2lsbCBjaGFuZ2UgdGhlIG93bmVyIG9mIHRoZQorICAgcHVibGljYXRpb24uCisg IDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSA8bGl0ZXJhbD5SRU5BTUU8L2xpdGVyYWw+IGNs YXVzZSB3aWxsIGNoYW5nZSB0aGUgbmFtZSBvZiB0aGUKKyAgIHB1YmxpY2F0aW9uLgorICA8L3Bh cmE+CisKKyAgPHBhcmE+CisgICBUaGUgPGxpdGVyYWw+UkVTRVQ8L2xpdGVyYWw+IGNsYXVzZSB3 aWxsIHJlc2V0IHRoZSBwdWJsaWNhdGlvbiB0byB0aGUgZGVmYXVsdAorICAgc3RhdGUuIFRoaXMg aW5jbHVkZXMgcmVzZXR0aW5nIGFsbCBwdWJsaWNhdGlvbiBwYXJhbWV0ZXJzLCBzZXR0aW5nIHRo ZQorICAgPGxpdGVyYWw+QUxMIFRBQkxFUzwvbGl0ZXJhbD4gZmxhZyB0byA8bGl0ZXJhbD5mYWxz ZTwvbGl0ZXJhbD4sIGFuZAorICAgcmVtb3ZpbmcgYWxsIGFzc29jaWF0ZWQgdGFibGVzIGFuZCBz Y2hlbWFzIGZyb20gdGhlIHB1YmxpY2F0aW9uLgogICA8L3BhcmE+CiAKICAgPHBhcmE+CiAgICBZ b3UgbXVzdCBvd24gdGhlIHB1YmxpY2F0aW9uIHRvIHVzZSA8Y29tbWFuZD5BTFRFUiBQVUJMSUNB VElPTjwvY29tbWFuZD4uCiAgICBBZGRpbmcgYSB0YWJsZSB0byBhIHB1YmxpY2F0aW9uIGFkZGl0 aW9uYWxseSByZXF1aXJlcyBvd25pbmcgdGhhdCB0YWJsZS4KLSAgIFRoZSA8bGl0ZXJhbD5BREQg VEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4gYW5kCi0gICA8bGl0ZXJhbD5TRVQgVEFCTEVTIElO IFNDSEVNQTwvbGl0ZXJhbD4gdG8gYSBwdWJsaWNhdGlvbiByZXF1aXJlcyB0aGUKLSAgIGludm9r aW5nIHVzZXIgdG8gYmUgYSBzdXBlcnVzZXIuCi0gICBUbyBhbHRlciB0aGUgb3duZXIsIHlvdSBt dXN0IGJlIGFibGUgdG8gPGxpdGVyYWw+U0VUIFJPTEU8L2xpdGVyYWw+IHRvIHRoZQotICAgbmV3 IG93bmluZyByb2xlLCBhbmQgdGhhdCByb2xlIG11c3QgaGF2ZSA8bGl0ZXJhbD5DUkVBVEU8L2xp dGVyYWw+Ci0gICBwcml2aWxlZ2Ugb24gdGhlIGRhdGFiYXNlLgorICAgVGhlIDxsaXRlcmFsPkFE RCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiwKKyAgIDxsaXRlcmFsPlNFVCBUQUJMRVMgSU4g U0NIRU1BPC9saXRlcmFsPiB0byBhIHB1YmxpY2F0aW9uIGFuZAorICAgPGxpdGVyYWw+UkVTRVQ8 L2xpdGVyYWw+IG9mIHB1YmxpY2F0aW9uIHJlcXVpcmVzIHRoZSBpbnZva2luZyB1c2VyIHRvIGJl IGEKKyAgIHN1cGVydXNlci4gVG8gYWx0ZXIgdGhlIG93bmVyLCB5b3UgbXVzdCBiZSBhYmxlIHRv CisgICA8bGl0ZXJhbD5TRVQgUk9MRTwvbGl0ZXJhbD4gdG8gdGhlIG5ldyBvd25pbmcgcm9sZSwg YW5kIHRoYXQgcm9sZSBtdXN0IGhhdmUKKyAgIDxsaXRlcmFsPkNSRUFURTwvbGl0ZXJhbD4gcHJp dmlsZWdlIG9uIHRoZSBkYXRhYmFzZS4KICAgIEFsc28sIHRoZSBuZXcgb3duZXIgb2YgYQogICAg PGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItYWxsLXRhYmxl cyI+PGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+PC9saW5rPgogICAgb3IgPGxpbmsg bGlua2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItdGFibGVzLWluLXNjaGVt YSI+PGxpdGVyYWw+Rk9SIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+PC9saW5rPgpAQCAtMjMw LDYgKzI0NCwxMiBAQCBBTFRFUiBQVUJMSUNBVElPTiBzYWxlc19wdWJsaWNhdGlvbiBBREQgVEFC TEVTIElOIFNDSEVNQSBtYXJrZXRpbmcsIHNhbGVzOwogICAgPHN0cnVjdG5hbWU+cHJvZHVjdGlv bl9wdWJsaWNhdGlvbjwvc3RydWN0bmFtZT46CiA8cHJvZ3JhbWxpc3Rpbmc+CiBBTFRFUiBQVUJM SUNBVElPTiBwcm9kdWN0aW9uX3B1YmxpY2F0aW9uIEFERCBUQUJMRSB1c2VycywgZGVwYXJ0bWVu dHMsIFRBQkxFUyBJTiBTQ0hFTUEgcHJvZHVjdGlvbjsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJh PgorCisgIDxwYXJhPgorICAgUmVzZXQgdGhlIHB1YmxpY2F0aW9uIDxzdHJ1Y3RuYW1lPnByb2R1 Y3Rpb25fcHVibGljYXRpb248L3N0cnVjdG5hbWU+OgorPHByb2dyYW1saXN0aW5nPgorQUxURVIg UFVCTElDQVRJT04gcHJvZHVjdGlvbl9wdWJsaWNhdGlvbiBSRVNFVDsKIDwvcHJvZ3JhbWxpc3Rp bmc+PC9wYXJhPgogIDwvcmVmc2VjdDE+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25j bWRzLmMKaW5kZXggMGIyM2Q5NGMzOGUuLjY3MjExMzMxZWZlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtNDksNiArNDksMTUgQEAKICNpbmNsdWRlICJ1dGlscy92 YXJsZW5hLmgiCiAKIAorLyogQ1JFQVRFIFBVQkxJQ0FUSU9OIGRlZmF1bHQgdmFsdWVzIGZvciBm bGFncyBhbmQgcHVibGljYXRpb24gcGFyYW1ldGVycyAqLworI2RlZmluZSBQVUJfREVGQVVMVF9B Q1RJT05fSU5TRVJUIHRydWUKKyNkZWZpbmUgUFVCX0RFRkFVTFRfQUNUSU9OX1VQREFURSB0cnVl CisjZGVmaW5lIFBVQl9ERUZBVUxUX0FDVElPTl9ERUxFVEUgdHJ1ZQorI2RlZmluZSBQVUJfREVG QVVMVF9BQ1RJT05fVFJVTkNBVEUgdHJ1ZQorI2RlZmluZSBQVUJfREVGQVVMVF9WSUFfUk9PVCBm YWxzZQorI2RlZmluZSBQVUJfREVGQVVMVF9BTExfVEFCTEVTIGZhbHNlCisjZGVmaW5lIFBVQl9E RUZBVUxUX0dFTkNPTFMgUFVCTElTSF9HRU5DT0xTX05PTkUKKwogLyoKICAqIEluZm9ybWF0aW9u IHVzZWQgdG8gdmFsaWRhdGUgdGhlIGNvbHVtbnMgaW4gdGhlIHJvdyBmaWx0ZXIgZXhwcmVzc2lv bi4gU2VlCiAgKiBjb250YWluX2ludmFsaWRfcmZjb2x1bW5fd2Fsa2VyIGZvciBkZXRhaWxzLgpA QCAtOTEsMTIgKzEwMCwxMiBAQCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUg KnBzdGF0ZSwKIAkqcHVibGlzaF9nZW5lcmF0ZWRfY29sdW1uc19naXZlbiA9IGZhbHNlOwogCiAJ LyogZGVmYXVsdHMgKi8KLQlwdWJhY3Rpb25zLT5wdWJpbnNlcnQgPSB0cnVlOwotCXB1YmFjdGlv bnMtPnB1YnVwZGF0ZSA9IHRydWU7Ci0JcHViYWN0aW9ucy0+cHViZGVsZXRlID0gdHJ1ZTsKLQlw dWJhY3Rpb25zLT5wdWJ0cnVuY2F0ZSA9IHRydWU7Ci0JKnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290ID0gZmFsc2U7Ci0JKnB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMgPSBQVUJMSVNIX0dFTkNP TFNfTk9ORTsKKwlwdWJhY3Rpb25zLT5wdWJpbnNlcnQgPSBQVUJfREVGQVVMVF9BQ1RJT05fSU5T RVJUOworCXB1YmFjdGlvbnMtPnB1YnVwZGF0ZSA9IFBVQl9ERUZBVUxUX0FDVElPTl9VUERBVEU7 CisJcHViYWN0aW9ucy0+cHViZGVsZXRlID0gUFVCX0RFRkFVTFRfQUNUSU9OX0RFTEVURTsKKwlw dWJhY3Rpb25zLT5wdWJ0cnVuY2F0ZSA9IFBVQl9ERUZBVUxUX0FDVElPTl9UUlVOQ0FURTsKKwkq cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBQVUJfREVGQVVMVF9WSUFfUk9PVDsKKwkqcHVi bGlzaF9nZW5lcmF0ZWRfY29sdW1ucyA9IFBVQl9ERUZBVUxUX0dFTkNPTFM7CiAKIAkvKiBQYXJz ZSBvcHRpb25zICovCiAJZm9yZWFjaChsYywgb3B0aW9ucykKQEAgLTExODcsNiArMTE5Niw5MiBA QCBJbnZhbGlkYXRlUHVibGljYXRpb25SZWxzKExpc3QgKnJlbGlkcykKIAkJQ2FjaGVJbnZhbGlk YXRlUmVsY2FjaGVBbGwoKTsKIH0KIAorLyoKKyAqIFJlc2V0IHRoZSBwdWJsaWNhdGlvbi4KKyAq CisgKiBSZXNldCB0aGUgcHVibGljYXRpb24gcGFyYW1ldGVycywgc2V0dGluZyBBTEwgVEFCTEVT IGZsYWcgdG8gZmFsc2UgYW5kIGRyb3AKKyAqIGFsbCByZWxhdGlvbnMgYW5kIHNjaGVtYXMgdGhh dCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBwdWJsaWNhdGlvbi4KKyAqLworc3RhdGljIHZvaWQK K0FsdGVyUHVibGljYXRpb25SZXNldChQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10LAorCQkJCQkgIFJlbGF0aW9uIHJlbCwgSGVhcFR1cGxlIHR1cCkKK3sKKwlG b3JtX3BnX3B1YmxpY2F0aW9uIHB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RS VUNUKHR1cCk7CisJT2lkCQkJcHViaWQgPSBwdWJmb3JtLT5vaWQ7CisJTGlzdAkgICAqc2NoZW1h cyA9IE5JTDsKKwlMaXN0CSAgICpyZWxzID0gTklMOworCWJvb2wJCW51bGxzW05hdHRzX3BnX3B1 YmxpY2F0aW9uXTsKKwlib29sCQlyZXBsYWNlc1tOYXR0c19wZ19wdWJsaWNhdGlvbl07CisJRGF0 dW0JCXZhbHVlc1tOYXR0c19wZ19wdWJsaWNhdGlvbl07CisJT2JqZWN0QWRkcmVzcyBvYmo7CisJ TGlzdENlbGwgICAqbGM7CisJT2lkCQkJcHJpZDsKKworCS8qIFJFU0VUIHB1YmxpY2F0aW9uIHJl cXVpcmVzIHN1cGVydXNlciAqLworCWlmICghc3VwZXJ1c2VyKCkpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJCWVycm1z ZygibXVzdCBiZSBzdXBlcnVzZXIgdG8gUkVTRVQgcHVibGljYXRpb24iKSk7CisKKwltZW1zZXQo dmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJbWVtc2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9m KG51bGxzKSk7CisJbWVtc2V0KHJlcGxhY2VzLCBmYWxzZSwgc2l6ZW9mKHJlcGxhY2VzKSk7CisK KwkvKiBSZXNldCB0aGUgcHVibGljYXRpb24gcGFyYW1ldGVycyAqLworCXZhbHVlc1tBbnVtX3Bn X3B1YmxpY2F0aW9uX3B1Ymluc2VydCAtIDFdID0gQm9vbEdldERhdHVtKFBVQl9ERUZBVUxUX0FD VElPTl9JTlNFUlQpOworCXJlcGxhY2VzW0FudW1fcGdfcHVibGljYXRpb25fcHViaW5zZXJ0IC0g MV0gPSB0cnVlOworCisJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVidXBkYXRlIC0gMV0g PSBCb29sR2V0RGF0dW0oUFVCX0RFRkFVTFRfQUNUSU9OX1VQREFURSk7CisJcmVwbGFjZXNbQW51 bV9wZ19wdWJsaWNhdGlvbl9wdWJ1cGRhdGUgLSAxXSA9IHRydWU7CisKKwl2YWx1ZXNbQW51bV9w Z19wdWJsaWNhdGlvbl9wdWJkZWxldGUgLSAxXSA9IEJvb2xHZXREYXR1bShQVUJfREVGQVVMVF9B Q1RJT05fREVMRVRFKTsKKwlyZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmRlbGV0ZSAt IDFdID0gdHJ1ZTsKKworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnRydW5jYXRlIC0g MV0gPSBCb29sR2V0RGF0dW0oUFVCX0RFRkFVTFRfQUNUSU9OX1RSVU5DQVRFKTsKKwlyZXBsYWNl c1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnRydW5jYXRlIC0gMV0gPSB0cnVlOworCisJdmFsdWVz W0FudW1fcGdfcHVibGljYXRpb25fcHVidmlhcm9vdCAtIDFdID0gQm9vbEdldERhdHVtKFBVQl9E RUZBVUxUX1ZJQV9ST09UKTsKKwlyZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnZpYXJv b3QgLSAxXSA9IHRydWU7CisKKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJnZW5jb2xz IC0gMV0gPSBDaGFyR2V0RGF0dW0oUFVCX0RFRkFVTFRfR0VOQ09MUyk7CisJcmVwbGFjZXNbQW51 bV9wZ19wdWJsaWNhdGlvbl9wdWJnZW5jb2xzIC0gMV0gPSB0cnVlOworCisJLyogU2V0IEFMTCBU QUJMRVMgZmxhZyB0byBmYWxzZSAqLworCWlmIChwdWJmb3JtLT5wdWJhbGx0YWJsZXMpCisJewor CQl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJhbGx0YWJsZXMgLSAxXSA9IEJvb2xHZXRE YXR1bShQVUJfREVGQVVMVF9BTExfVEFCTEVTKTsKKwkJcmVwbGFjZXNbQW51bV9wZ19wdWJsaWNh dGlvbl9wdWJhbGx0YWJsZXMgLSAxXSA9IHRydWU7CisJCUNhY2hlSW52YWxpZGF0ZVJlbGNhY2hl QWxsKCk7CisJfQorCisJdHVwID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwLCBSZWxhdGlvbkdldERl c2NyKHJlbCksIHZhbHVlcywgbnVsbHMsCisJCQkJCQkJcmVwbGFjZXMpOworCisJLyogVXBkYXRl IHRoZSBjYXRhbG9nLiAqLworCUNhdGFsb2dUdXBsZVVwZGF0ZShyZWwsICZ0dXAtPnRfc2VsZiwg dHVwKTsKKworCS8qIERyb3AgdGhlIHNjaGVtYXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwdWJsaWNh dGlvbiAqLworCXNjaGVtYXMgPSBHZXRQdWJsaWNhdGlvblNjaGVtYXMocHViaWQpOworCVB1Ymxp Y2F0aW9uRHJvcFNjaGVtYXMocHViaWQsIHNjaGVtYXMsIHRydWUpOworCisJLyogRHJvcCB0aGUg cmVsYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHVibGljYXRpb24gKi8KKwlyZWxzID0gR2V0 UHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJZm9y ZWFjaChsYywgcmVscykKKwl7CisJCU9pZAkJCXJlbGlkID0gbGZpcnN0X29pZChsYyk7CisKKwkJ cHJpZCA9IEdldFN5c0NhY2hlT2lkMihQVUJMSUNBVElPTlJFTE1BUCwgQW51bV9wZ19wdWJsaWNh dGlvbl9yZWxfb2lkLAorCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJ CSAgIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKKworCQlpZiAoIU9pZElzVmFsaWQocHJpZCkp CisJCQljb250aW51ZTsKKworCQlPYmplY3RBZGRyZXNzU2V0KG9iaiwgUHVibGljYXRpb25SZWxS ZWxhdGlvbklkLCBwcmlkKTsKKwkJcGVyZm9ybURlbGV0aW9uKCZvYmosIERST1BfQ0FTQ0FERSwg MCk7CisJfQorfQorCiAvKgogICogQWRkIG9yIHJlbW92ZSB0YWJsZSB0by9mcm9tIHB1YmxpY2F0 aW9uLgogICovCkBAIC0xNTAxLDYgKzE1OTYsOCBAQCBBbHRlclB1YmxpY2F0aW9uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAKIAlpZiAoc3RtdC0+b3B0 aW9ucykKIAkJQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMocHN0YXRlLCBzdG10LCByZWwsIHR1cCk7 CisJZWxzZSBpZiAoc3RtdC0+YWN0aW9uID09IEFQX1Jlc2V0UHVibGljYXRpb24pCisJCUFsdGVy UHVibGljYXRpb25SZXNldChwc3RhdGUsIHN0bXQsIHJlbCwgdHVwKTsKIAllbHNlCiAJewogCQlM aXN0CSAgICpyZWxhdGlvbnMgPSBOSUw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA1MGY1MzE1OWQ1OC4uZTE2 ZjQ4MzI5NjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMTA3NjAsNiArMTA3NjAsOCBAQCBwdWJfb2JqX2xp c3Q6CVB1YmxpY2F0aW9uT2JqU3BlYwogICoKICAqIEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgU0VU IHB1Yl9vYmogWywgLi4uXQogICoKKyAqIEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgUkVTRVQKKyAq CiAgKiBwdWJfb2JqIGlzIG9uZSBvZjoKICAqCiAgKgkJVEFCTEUgdGFibGVfbmFtZSBbLCAuLi5d CkBAIC0xMDgwNiw2ICsxMDgwOCwxMyBAQCBBbHRlclB1YmxpY2F0aW9uU3RtdDoKIAkJCQkJbi0+ YWN0aW9uID0gQVBfRHJvcE9iamVjdHM7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJ CQl8IEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgUkVTRVQKKwkJCQl7CisJCQkJCUFsdGVyUHVibGlj YXRpb25TdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJQdWJsaWNhdGlvblN0bXQpOworCQkJCQluLT5w dWJuYW1lID0gJDM7CisJCQkJCW4tPmFjdGlvbiA9IEFQX1Jlc2V0UHVibGljYXRpb247CisJCQkJ CSQkID0gKE5vZGUgKiluOworCQkJCX0KIAkJOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYwppbmRleCA5MDhlZWY5N2M2ZS4uOTRlZDNlOGE3NzYgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMKQEAgLTIyNDIsNyArMjI0Miw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRz KGludCBwYXR0ZXJuX2lkLAogCiAJLyogQUxURVIgUFVCTElDQVRJT04gPG5hbWU+ICovCiAJZWxz ZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSkpCi0JCUNPTVBM RVRFX1dJVEgoIkFERCIsICJEUk9QIiwgIk9XTkVSIFRPIiwgIlJFTkFNRSBUTyIsICJTRVQiKTsK KwkJQ09NUExFVEVfV0lUSCgiQUREIiwgIkRST1AiLCAiT1dORVIgVE8iLCAiUkVOQU1FIFRPIiwg IlJFU0VUIiwgIlNFVCIpOwogCS8qIEFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1lPiBBREQgKi8KIAll bHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIikp CiAJCUNPTVBMRVRFX1dJVEgoIlRBQkxFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaAppbmRleCBiYTEyNjc4ZDFjYi4uOTA1YjU4ZTAyNzkgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmgKQEAgLTQyNzIsNiArNDI3Miw3IEBAIHR5cGVkZWYgZW51bSBBbHRlclB1YmxpY2F0 aW9uQWN0aW9uCiAJQVBfQWRkT2JqZWN0cywJCQkJLyogYWRkIG9iamVjdHMgdG8gcHVibGljYXRp b24gKi8KIAlBUF9Ecm9wT2JqZWN0cywJCQkJLyogcmVtb3ZlIG9iamVjdHMgZnJvbSBwdWJsaWNh dGlvbiAqLwogCUFQX1NldE9iamVjdHMsCQkJCS8qIHNldCBsaXN0IG9mIG9iamVjdHMgKi8KKwlB UF9SZXNldFB1YmxpY2F0aW9uLAkJLyogcmVzZXQgdGhlIHB1YmxpY2F0aW9uICovCiB9IEFsdGVy UHVibGljYXRpb25BY3Rpb247CiAKIHR5cGVkZWYgc3RydWN0IEFsdGVyUHVibGljYXRpb25TdG10 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IGYxMDI1ZmMw ZjE5Li43ODgzNjhkMTVjYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w dWJsaWNhdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlv bi5vdXQKQEAgLTE5MjksNiArMTkyOSwxMjQgQEAgVGFibGVzOgogRFJPUCBQVUJMSUNBVElPTiBw dWIxOwogRFJPUCBQVUJMSUNBVElPTiBwdWIyOwogRFJPUCBUQUJMRSBnZW5jb2xzOworLS0gVGVz dHMgZm9yIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBSRVNFVAorQ1JFQVRFIFNDSEVNQSBwdWJfc2No MTsKK0NSRUFURSBUQUJMRSBwdWJfc2NoMS50YmwxIChhIGludCk7CitTRVQgY2xpZW50X21pbl9t ZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBGT1Ig QUxMIFRBQkxFUzsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CistLSBWZXJpZnkgdGhhdCAn QUxMIFRBQkxFUycgZmxhZyBpcyByZXNldAorXGRScCsgdGVzdHB1Yl9yZXNldAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVz ZXQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9v dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCisoMSBy b3cpCisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CitcZFJwKyB0ZXN0 cHViX3Jlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9yZXNldAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0 ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAg ICAgICAgICAgICB8IGYKKygxIHJvdykKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNl dCBBREQgVEFCTEUgcHViX3NjaDEudGJsMTsKKy0tIFZlcmlmeSB0aGF0IHRhYmxlcyBhc3NvY2lh dGVkIHdpdGggdGhlIHB1YmxpY2F0aW9uIGFyZSBkcm9wcGVkIGFmdGVyIFJFU0VUCitcZFJwKyB0 ZXN0cHViX3Jlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9yZXNldAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5l cmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25l ICAgICAgICAgICAgICB8IGYKK1RhYmxlczoKKyAgICAicHViX3NjaDEudGJsMSIKKworQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKK1xkUnArIHRlc3RwdWJfcmVzZXQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViX3Jlc2V0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwg ZgorKDEgcm93KQorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFERCBUQUJMRVMg SU4gU0NIRU1BIHB1YmxpYzsKKy0tIFZlcmlmeSB0aGF0IHNjaGVtYXMgYXNzb2NpYXRlZCB3aXRo IHRoZSBwdWJsaWNhdGlvbiBhcmUgZHJvcHBlZCBhZnRlciBSRVNFVAorXGRScCsgdGVzdHB1Yl9y ZXNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNv bHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAg ICAgICAgfCBmCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJsaWMiCisKK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9yZXNldAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZp YSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYK KygxIHJvdykKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBTRVQgKFBVQkxJU0gg PSAnJyk7CistLSBWZXJpZnkgdGhhdCAnUFVCTElTSCcgcGFyYW1ldGVyIGlzIHJlc2V0CitcZFJw KyB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1Yl9yZXNldAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBH ZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBu b25lICAgICAgICAgICAgICB8IGYKKygxIHJvdykKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9yZXNldCBSRVNFVDsKK1xkUnArIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0CisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZgorKDEgcm93KQorCitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFNFVCAoUFVCTElTSF9WSUFfUEFSVElUSU9OX1JP T1QgPSAndHJ1ZScpOworLS0gVmVyaWZ5IHRoYXQgJ1BVQkxJU0hfVklBX1BBUlRJVElPTl9ST09U JyBwYXJhbWV0ZXIgaXMgcmVzZXQKK1xkUnArIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0Cisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgdAorKDEgcm93KQor CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOworXGRScCsgdGVzdHB1Yl9y ZXNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNv bHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAg ICAgICAgfCBmCisoMSByb3cpCisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgU0VU IChQVUJMSVNIX0dFTkVSQVRFRF9DT0xVTU5TID0gc3RvcmVkKTsKKy0tIFZlcmlmeSB0aGF0ICdQ VUJMSVNIX0dFTkVSQVRFRF9DT0xVTU5TJyBwYXJhbWV0ZXIgaXMgcmVzZXQKK1xkUnArIHRlc3Rw dWJfcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRl ZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHN0b3JlZCAg ICAgICAgICAgIHwgZgorKDEgcm93KQorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0 IFJFU0VUOworXGRScCsgdGVzdHB1Yl9yZXNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCisoMSByb3cpCisKKy0tIFZlcmlmeSB0 aGF0IG9ubHkgc3VwZXJ1c2VyIGNhbiByZXNldCBhIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX3Jlc2V0IE9XTkVSIFRPIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7CitT RVQgUk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOworQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9yZXNldCBSRVNFVDsgLS0gZmFpbCAtIG11c3QgYmUgc3VwZXJ1c2VyCitFUlJPUjogIG11 c3QgYmUgc3VwZXJ1c2VyIHRvIFJFU0VUIHB1YmxpY2F0aW9uCitTRVQgUk9MRSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXI7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQ7CitEUk9QIFRB QkxFIHB1Yl9zY2gxLnRibDE7CitEUk9QIFNDSEVNQSBwdWJfc2NoMTsKIFJFU0VUIGNsaWVudF9t aW5fbWVzc2FnZXM7CiBSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CiBEUk9QIFJPTEUgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyLCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4IGM5ZTMwOTE5MGRmLi44NGFlYTcwMjdhMSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMTIyNSw2ICsxMjI1LDYzIEBA IERST1AgUFVCTElDQVRJT04gcHViMTsKIERST1AgUFVCTElDQVRJT04gcHViMjsKIERST1AgVEFC TEUgZ2VuY29sczsKIAorLS0gVGVzdHMgZm9yIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBSRVNFVAor Q1JFQVRFIFNDSEVNQSBwdWJfc2NoMTsKK0NSRUFURSBUQUJMRSBwdWJfc2NoMS50YmwxIChhIGlu dCk7CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1Yl9yZXNldCBGT1IgQUxMIFRBQkxFUzsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXM7CisKKy0tIFZlcmlmeSB0aGF0ICdBTEwgVEFCTEVTJyBmbGFnIGlzIHJlc2V0CitcZFJwKyB0 ZXN0cHViX3Jlc2V0CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOworXGRS cCsgdGVzdHB1Yl9yZXNldAorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFERCBU QUJMRSBwdWJfc2NoMS50YmwxOworCistLSBWZXJpZnkgdGhhdCB0YWJsZXMgYXNzb2NpYXRlZCB3 aXRoIHRoZSBwdWJsaWNhdGlvbiBhcmUgZHJvcHBlZCBhZnRlciBSRVNFVAorXGRScCsgdGVzdHB1 Yl9yZXNldAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKK1xkUnArIHRl c3RwdWJfcmVzZXQKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgVEFCTEVT IElOIFNDSEVNQSBwdWJsaWM7CisKKy0tIFZlcmlmeSB0aGF0IHNjaGVtYXMgYXNzb2NpYXRlZCB3 aXRoIHRoZSBwdWJsaWNhdGlvbiBhcmUgZHJvcHBlZCBhZnRlciBSRVNFVAorXGRScCsgdGVzdHB1 Yl9yZXNldAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKK1xkUnArIHRl c3RwdWJfcmVzZXQKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBTRVQgKFBVQkxJ U0ggPSAnJyk7CisKKy0tIFZlcmlmeSB0aGF0ICdQVUJMSVNIJyBwYXJhbWV0ZXIgaXMgcmVzZXQK K1xkUnArIHRlc3RwdWJfcmVzZXQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVT RVQ7CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVz ZXQgU0VUIChQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVCA9ICd0cnVlJyk7CisKKy0tIFZlcmlm eSB0aGF0ICdQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVCcgcGFyYW1ldGVyIGlzIHJlc2V0Citc ZFJwKyB0ZXN0cHViX3Jlc2V0CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VU OworXGRScCsgdGVzdHB1Yl9yZXNldAorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0 IFNFVCAoUFVCTElTSF9HRU5FUkFURURfQ09MVU1OUyA9IHN0b3JlZCk7CisKKy0tIFZlcmlmeSB0 aGF0ICdQVUJMSVNIX0dFTkVSQVRFRF9DT0xVTU5TJyBwYXJhbWV0ZXIgaXMgcmVzZXQKK1xkUnAr IHRlc3RwdWJfcmVzZXQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7Citc ZFJwKyB0ZXN0cHViX3Jlc2V0CisKKy0tIFZlcmlmeSB0aGF0IG9ubHkgc3VwZXJ1c2VyIGNhbiBy ZXNldCBhIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IE9XTkVS IFRPIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7CitTRVQgUk9MRSByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIyOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsgLS0gZmFp bCAtIG11c3QgYmUgc3VwZXJ1c2VyCitTRVQgUk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXI7 CisKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldDsKK0RST1AgVEFCTEUgcHViX3NjaDEu dGJsMTsKK0RST1AgU0NIRU1BIHB1Yl9zY2gxOworCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2Vz OwogUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwogRFJPUCBST0xFIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKLS0gCjIuMzQuMQoK --000000000000cd798a06388ae6a1 Content-Type: application/octet-stream; name="v15-0002-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Disposition: attachment; filename="v15-0002-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mceniljr1 RnJvbSA3YzA1YzM5NTE2YzBjOTcxMzA4ZGNjZGZhNDg5MjQ2MGQyNDc5NGNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMjcgSnVuIDIwMjUgMTQ6MTM6NDcgKzA1MzAKU3ViamVjdDogW1BBVENIIHYx NSAyLzNdIFNraXAgcHVibGlzaGluZyB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiBFWENFUFQgVEFC TEUuCgpBIG5ldyAiRVhDRVBUIFRBQkxFIiBjbGF1c2UgZm9yIENSRUFURS9BTFRFUiBQVUJMSUNB VElPTiBhbGxvd3Mgb25lIG9yCm1vcmUgdGFibGVzIHRvIGJlIGV4Y2x1ZGVkLiBUaGUgcHVibGlz aGVyIHdpbGwgbm90IHNlbmQgdGhlIGRhdGEgb2YKZXhjbHVkZWQgdGFibGVzIHRvIHRoZSBzdWJz Y3JpYmVyLgoKVGhlIG5ldyBzeW50YXggYWxsb3dzIHNwZWNpZnlpbmcgZXhjbHVkZWQgcmVsYXRp b25zIHdoZW4gY3JlYXRpbmcgb3IgYWx0ZXJpbmcKYSBwdWJsaWNhdGlvbi4gRm9yIGV4YW1wbGU6 CkNSRUFURSBQVUJMSUNBVElPTiBwdWIxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSB0MSx0 MjsKb3IKQUxURVIgUFVCTElDQVRJT04gcHViMSBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUg dDEsdDI7CgpBIG5ldyBjb2x1bW4gInByZXhjZXB0IiBpcyBhZGRlZCB0byB0YWJsZSAicGdfcHVi bGljYXRpb25fcmVsIiwgdG8gbWFpbnRhaW4KdGhlIHJlbGF0aW9ucyB0aGF0IHRoZSB1c2VyIHdh bnRzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgcHVibGljYXRpb25zLgoKcGdfZHVtcCBpcyB1cGRhdGVk IHRvIGlkZW50aWZ5IGFuZCBkdW1wIHRoZSBleGNsdWRlZCB0YWJsZXMgb2YgdGhlIHB1YmxpY2F0 aW9ucy4KClRoZSBwc3FsIFxkIGZhbWlseSBvZiBjb21tYW5kcyBjYW4gbm93IGRpc3BsYXkgZXhj bHVkZWQgdGFibGVzLiBlLmcuIHBzcWwKXGRScCsgdmFyaWFudCB3aWxsIG5vdyBkaXNwbGF5IGFz c29jaWF0ZWQgImV4Y2VwdCB0YWJsZXMiIGlmIGFueS4KCkJ1bXAgY2F0YWxvZyB2ZXJzaW9uLgot LS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAgOSAr CiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCAgIDggKy0K IGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCAgICAgICB8ICAxOSArLQog ZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sLm9yaWcgIHwgMjc1ICsrKysr KysrKysrKysrKysrKwogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCAg ICAgIHwgIDI5ICstCiBkb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwgICAgICAgICAgICAg ICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgICAg ICB8ICA2OCArKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAg ICAgIHwgMTk3ICsrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j ICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAg ICAgICAgICAgICAgIHwgIDQxICsrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQv cGdvdXRwdXQuYyAgIHwgIDI1ICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j ICAgICAgICAgICAgfCAgMTYgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAg ICAgICAgICAgICB8ICA1NiArKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jICAgICAg ICAgICAgICAgIHwgICA3ICsKIHNyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsICAgICAg ICAgICAgICB8ICAyMCArKwogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAg ICAgICAgIHwgIDYyICsrKy0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAg ICAgICAgICB8ICAxMyArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAg ICAgICAgIHwgICA3ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5o ICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmggICAg ICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAg ICAgfCAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgICAg IHwgIDg5ICsrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAg ICAgIHwgIDQ2ICsrLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkICAgICAgICAg ICAgIHwgICAxICsKIC4uLi90LzAzNl9yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwgICAgICAg ICB8ICA4MyArKysrKysKIDI2IGZpbGVzIGNoYW5nZWQsIDk2MSBpbnNlcnRpb25zKCspLCAxMjgg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9w dWJsaWNhdGlvbi5zZ21sLm9yaWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMzZfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsCgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRl eCBmYTg2YzU2OWRjNC4uNGUzN2M5MjhiNDQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC02NTY4LDYgKzY1 NjgsMTUgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZn dDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgIGlmIHRoZXJlIGlzIG5vIHB1 YmxpY2F0aW9uIHF1YWxpZnlpbmcgY29uZGl0aW9uLjwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jv dz4KIAorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgIDxzdHJ1Y3RmaWVsZD5wcmV4 Y2VwdDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBUcnVlIGlmIHRoZSByZWxhdGlvbiBtdXN0IGJlIGV4Y2x1ZGVkCisg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxl bnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnByYXR0cnM8L3N0cnVjdGZpZWxkPiA8dHlwZT5p bnQydmVjdG9yPC90eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGlj YXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXgg YzMyZTZiYzAwMGQuLjNkMGQyOWNmOGIxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9u LnNnbWwKQEAgLTIyNTEsMTAgKzIyNTEsMTAgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3Rl IGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAg PC9wYXJhPgogCiAgIDxwYXJhPgotICAgVG8gYWRkIHRhYmxlcyB0byBhIHB1YmxpY2F0aW9uLCB0 aGUgdXNlciBtdXN0IGhhdmUgb3duZXJzaGlwIHJpZ2h0cyBvbiB0aGUKLSAgIHRhYmxlLiBUbyBh ZGQgYWxsIHRhYmxlcyBpbiBzY2hlbWEgdG8gYSBwdWJsaWNhdGlvbiwgdGhlIHVzZXIgbXVzdCBi ZSBhCi0gICBzdXBlcnVzZXIuIFRvIGNyZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVz IGFsbCB0YWJsZXMgb3IgYWxsIHRhYmxlcyBpbgotICAgc2NoZW1hIGF1dG9tYXRpY2FsbHksIHRo ZSB1c2VyIG11c3QgYmUgYSBzdXBlcnVzZXIuCisgICBUbyBjcmVhdGUgYSBwdWJsaWNhdGlvbiB1 c2luZyBGT1IgQUxMIFRBQkxFUyBvciBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEsCisgICB0aGUg dXNlciBtdXN0IGJlIGEgc3VwZXJ1c2VyLiBUbyBhZGQgQUxMIFRBQkxFUyBvciBBTEwgVEFCTEVT IElOIFNDSEVNQSB0byBhCisgICBwdWJsaWNhdGlvbiwgdGhlIHVzZXIgbXVzdCBiZSBhIHN1cGVy dXNlci4gVG8gYWRkIHRhYmxlcyB0byBhIHB1YmxpY2F0aW9uLAorICAgdGhlIHVzZXIgbXVzdCBo YXZlIG93bmVyc2hpcCByaWdodHMgb24gdGhlIHRhYmxlLgogICA8L3BhcmE+CiAKICAgPHBhcmE+ CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwgYi9k b2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXggMTc4ZjM5ZDk1NzUu LjYyMjczZWQyMGRkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0 aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCkBA IC0yMiw2ICsyMiw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogIDxyZWZzeW5vcHNpc2Rp dj4KIDxzeW5vcHNpcz4KIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gQUREIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCitBTFRFUiBQVUJM SUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+ IEFERCBBTEwgVEFCTEVTIFsgRVhDRVBUIFsgVEFCTEUgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+ZXhjZXB0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdIF0KIEFMVEVS IFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNl YWJsZT4gU0VUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vYmpl Y3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCiBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IERST1AgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLl0K IEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9y ZXBsYWNlYWJsZT4gU0VUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0 aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+XSBbLCAuLi4gXSApCkBAIC0zMyw2ICszNCwxMSBAQCBB TFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+IFJFU0VUCiAKICAgICBUQUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgKCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSAp IF0gWyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9y ZXBsYWNlYWJsZT4gKSBdIFssIC4uLiBdCiAgICAgVEFCTEVTIElOIFNDSEVNQSB7IDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVO VF9TQ0hFTUEgfSBbLCAuLi4gXQorCis8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5leGNlcHRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisK KyAgICBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwv cmVwbGFjZWFibGU+IFsgKiBdCisKIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApA QCAtODgsOCArOTQsOSBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFU0VUCiAKICAgPHBhcmE+CiAgICBZb3UgbXVz dCBvd24gdGhlIHB1YmxpY2F0aW9uIHRvIHVzZSA8Y29tbWFuZD5BTFRFUiBQVUJMSUNBVElPTjwv Y29tbWFuZD4uCi0gICBBZGRpbmcgYSB0YWJsZSB0byBhIHB1YmxpY2F0aW9uIGFkZGl0aW9uYWxs eSByZXF1aXJlcyBvd25pbmcgdGhhdCB0YWJsZS4KLSAgIFRoZSA8bGl0ZXJhbD5BREQgVEFCTEVT IElOIFNDSEVNQTwvbGl0ZXJhbD4sCisgICBBZGRpbmcgYSB0YWJsZSB0byBvciBleGNsdWRpbmcg YSB0YWJsZSBmcm9tIGEgcHVibGljYXRpb24gYWRkaXRpb25hbGx5CisgICByZXF1aXJlcyBvd25p bmcgdGhhdCB0YWJsZS4gVGhlIDxsaXRlcmFsPkFERCBBTEwgVEFCTEVTPC9saXRlcmFsPiwKKyAg IDxsaXRlcmFsPkFERCBBTEwgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sCiAgICA8bGl0ZXJh bD5TRVQgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4gdG8gYSBwdWJsaWNhdGlvbiBhbmQKICAg IDxsaXRlcmFsPlJFU0VUPC9saXRlcmFsPiBvZiBwdWJsaWNhdGlvbiByZXF1aXJlcyB0aGUgaW52 b2tpbmcgdXNlciB0byBiZSBhCiAgICBzdXBlcnVzZXIuIFRvIGFsdGVyIHRoZSBvd25lciwgeW91 IG11c3QgYmUgYWJsZSB0bwpAQCAtMjM3LDYgKzI0NCwxNCBAQCBBTFRFUiBQVUJMSUNBVElPTiBz YWxlc19wdWJsaWNhdGlvbiBBREQgVEFCTEVTIElOIFNDSEVNQSBtYXJrZXRpbmcsIHNhbGVzOwog PC9wcm9ncmFtbGlzdGluZz4KICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgQWx0ZXIgcHVibGlj YXRpb24gPHN0cnVjdG5hbWU+cHJvZHVjdGlvbl9wdWJsaWNhdGlvbjwvc3RydWN0bmFtZT4gdG8g cHVibGlzaAorICAgYWxsIHRhYmxlcyBleGNlcHQgPHN0cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5h bWU+IGFuZAorICAgPHN0cnVjdG5hbWU+ZGVwYXJ0bWVudHM8L3N0cnVjdG5hbWU+OgorPHByb2dy YW1saXN0aW5nPgorQUxURVIgUFVCTElDQVRJT04gcHJvZHVjdGlvbl9wdWJsaWNhdGlvbiBBREQg QUxMIFRBQkxFUyBFWENFUFQgdXNlcnMsIGRlcGFydG1lbnRzOworPC9wcm9ncmFtbGlzdGluZz48 L3BhcmE+CisKICAgPHBhcmE+CiAgICBBZGQgdGFibGVzIDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1 Y3RuYW1lPiwKICAgIDxzdHJ1Y3RuYW1lPmRlcGFydG1lbnRzPC9zdHJ1Y3RuYW1lPiBhbmQgc2No ZW1hCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwu b3JpZyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbC5vcmlnCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNzhmMzlkOTU3NQotLS0gL2Rldi9u dWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbC5vcmlnCkBA IC0wLDAgKzEsMjc1IEBACis8IS0tCitkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9u LnNnbWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3Fs LWFsdGVycHVibGljYXRpb24iPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWFsdGVycHVibGljYXRp b24iPgorICA8cHJpbWFyeT5BTFRFUiBQVUJMSUNBVElPTjwvcHJpbWFyeT4KKyA8L2luZGV4dGVy bT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0aXRsZT5BTFRFUiBQVUJMSUNBVElPTjwvcmVm ZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5T UUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8 cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+QUxURVIgUFVCTElDQVRJT048L3JlZm5hbWU+CisgIDxy ZWZwdXJwb3NlPmNoYW5nZSB0aGUgZGVmaW5pdGlvbiBvZiBhIHB1YmxpY2F0aW9uPC9yZWZwdXJw b3NlPgorIDwvcmVmbmFtZWRpdj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK0FM VEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBs YWNlYWJsZT4gQUREIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9v YmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCitBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFNFVCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4u XQorQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPiBEUk9QIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNh dGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCitBTFRFUiBQVUJMSUNBVElPTiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFNFVCAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9wYXJhbWV0ZXI8L3JlcGxhY2Vh YmxlPiBbPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxl Pl0gWywgLi4uIF0gKQorQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBPV05FUiBUTyB7IDxyZXBsYWNlYWJsZT5uZXdfb3du ZXI8L3JlcGxhY2VhYmxlPiB8IENVUlJFTlRfUk9MRSB8IENVUlJFTlRfVVNFUiB8IFNFU1NJT05f VVNFUiB9CitBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cmVwbGFjZWFibGU+bmV3X25hbWU8L3JlcGxh Y2VhYmxlPgorQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm5hbWU8L3JlcGxhY2VhYmxlPiBSRVNFVAorCis8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUg b2Y6PC9waHJhc2U+CisKKyAgICBUQUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgKCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0g WyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBs YWNlYWJsZT4gKSBdIFssIC4uLiBdCisgICAgVEFCTEVTIElOIFNDSEVNQSB7IDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9T Q0hFTUEgfSBbLCAuLi4gXQorPC9zeW5vcHNpcz4KKyA8L3JlZnN5bm9wc2lzZGl2PgorCisgPHJl ZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhl IGNvbW1hbmQgPGNvbW1hbmQ+QUxURVIgUFVCTElDQVRJT048L2NvbW1hbmQ+IGNhbiBjaGFuZ2Ug dGhlIGF0dHJpYnV0ZXMKKyAgIG9mIGEgcHVibGljYXRpb24uCisgIDwvcGFyYT4KKworICA8cGFy YT4KKyAgIFRoZSBmaXJzdCB0aHJlZSB2YXJpYW50cyBjaGFuZ2Ugd2hpY2ggdGFibGVzL3NjaGVt YXMgYXJlIHBhcnQgb2YgdGhlCisgICBwdWJsaWNhdGlvbi4gIFRoZSA8bGl0ZXJhbD5TRVQ8L2xp dGVyYWw+IGNsYXVzZSB3aWxsIHJlcGxhY2UgdGhlIGxpc3Qgb2YKKyAgIHRhYmxlcy9zY2hlbWFz IGluIHRoZSBwdWJsaWNhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbGlzdDsgdGhlIGV4aXN0aW5n CisgICB0YWJsZXMvc2NoZW1hcyB0aGF0IHdlcmUgcHJlc2VudCBpbiB0aGUgcHVibGljYXRpb24g d2lsbCBiZSByZW1vdmVkLiAgVGhlCisgICA8bGl0ZXJhbD5BREQ8L2xpdGVyYWw+IGFuZCA8bGl0 ZXJhbD5EUk9QPC9saXRlcmFsPiBjbGF1c2VzIHdpbGwgYWRkIGFuZAorICAgcmVtb3ZlIG9uZSBv ciBtb3JlIHRhYmxlcy9zY2hlbWFzIGZyb20gdGhlIHB1YmxpY2F0aW9uLiAgTm90ZSB0aGF0IGFk ZGluZworICAgdGFibGVzL3NjaGVtYXMgdG8gYSBwdWJsaWNhdGlvbiB0aGF0IGlzIGFscmVhZHkg c3Vic2NyaWJlZCB0byB3aWxsIHJlcXVpcmUgYW4KKyAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRl cnN1YnNjcmlwdGlvbi1wYXJhbXMtcmVmcmVzaC1wdWJsaWNhdGlvbiI+CisgICA8bGl0ZXJhbD5B TFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT048L2xpdGVyYWw+PC9saW5r PiBhY3Rpb24gb24gdGhlCisgICBzdWJzY3JpYmluZyBzaWRlIGluIG9yZGVyIHRvIGJlY29tZSBl ZmZlY3RpdmUuIE5vdGUgYWxzbyB0aGF0CisgICA8bGl0ZXJhbD5EUk9QIFRBQkxFUyBJTiBTQ0hF TUE8L2xpdGVyYWw+IHdpbGwgbm90IGRyb3AgYW55IHNjaGVtYSB0YWJsZXMKKyAgIHRoYXQgd2Vy ZSBzcGVjaWZpZWQgdXNpbmcKKyAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlv bi1wYXJhbXMtZm9yLXRhYmxlIj48bGl0ZXJhbD5GT1IgVEFCTEU8L2xpdGVyYWw+PC9saW5rPi8K KyAgIDxsaXRlcmFsPkFERCBUQUJMRTwvbGl0ZXJhbD4sIGFuZCB0aGUgY29tYmluYXRpb24gb2Yg PGxpdGVyYWw+RFJPUDwvbGl0ZXJhbD4KKyAgIHdpdGggYSA8bGl0ZXJhbD5XSEVSRTwvbGl0ZXJh bD4gY2xhdXNlIGlzIG5vdCBhbGxvd2VkLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGUg Zm91cnRoIHZhcmlhbnQgb2YgdGhpcyBjb21tYW5kIGxpc3RlZCBpbiB0aGUgc3lub3BzaXMgY2Fu IGNoYW5nZQorICAgYWxsIG9mIHRoZSBwdWJsaWNhdGlvbiBwcm9wZXJ0aWVzIHNwZWNpZmllZCBp bgorICAgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uIi8+LiAgUHJvcGVydGll cyBub3QgbWVudGlvbmVkIGluIHRoZQorICAgY29tbWFuZCByZXRhaW4gdGhlaXIgcHJldmlvdXMg c2V0dGluZ3MuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSA8bGl0ZXJhbD5PV05FUjwv bGl0ZXJhbD4gY2xhdXNlIHdpbGwgY2hhbmdlIHRoZSBvd25lciBvZiB0aGUKKyAgIHB1YmxpY2F0 aW9uLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGUgPGxpdGVyYWw+UkVOQU1FPC9saXRl cmFsPiBjbGF1c2Ugd2lsbCBjaGFuZ2UgdGhlIG5hbWUgb2YgdGhlCisgICBwdWJsaWNhdGlvbi4K KyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlIDxsaXRlcmFsPlJFU0VUPC9saXRlcmFsPiBj bGF1c2Ugd2lsbCByZXNldCB0aGUgcHVibGljYXRpb24gdG8gdGhlIGRlZmF1bHQKKyAgIHN0YXRl LiBUaGlzIGluY2x1ZGVzIHJlc2V0dGluZyBhbGwgcHVibGljYXRpb24gcGFyYW1ldGVycywgc2V0 dGluZyB0aGUKKyAgIDxsaXRlcmFsPkFMTCBUQUJMRVM8L2xpdGVyYWw+IGZsYWcgdG8gPGxpdGVy YWw+ZmFsc2U8L2xpdGVyYWw+LCBhbmQKKyAgIHJlbW92aW5nIGFsbCBhc3NvY2lhdGVkIHRhYmxl cyBhbmQgc2NoZW1hcyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KKyAgPC9wYXJhPgorCisgIDxwYXJh PgorICAgWW91IG11c3Qgb3duIHRoZSBwdWJsaWNhdGlvbiB0byB1c2UgPGNvbW1hbmQ+QUxURVIg UFVCTElDQVRJT048L2NvbW1hbmQ+LgorICAgQWRkaW5nIGEgdGFibGUgdG8gYSBwdWJsaWNhdGlv biBhZGRpdGlvbmFsbHkgcmVxdWlyZXMgb3duaW5nIHRoYXQgdGFibGUuCisgICBUaGUgPGxpdGVy YWw+QUREIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+LAorICAgPGxpdGVyYWw+U0VUIFRBQkxF UyBJTiBTQ0hFTUE8L2xpdGVyYWw+IHRvIGEgcHVibGljYXRpb24gYW5kCisgICA8bGl0ZXJhbD5S RVNFVDwvbGl0ZXJhbD4gb2YgcHVibGljYXRpb24gcmVxdWlyZXMgdGhlIGludm9raW5nIHVzZXIg dG8gYmUgYQorICAgc3VwZXJ1c2VyLiBUbyBhbHRlciB0aGUgb3duZXIsIHlvdSBtdXN0IGJlIGFi bGUgdG8KKyAgIDxsaXRlcmFsPlNFVCBST0xFPC9saXRlcmFsPiB0byB0aGUgbmV3IG93bmluZyBy b2xlLCBhbmQgdGhhdCByb2xlIG11c3QgaGF2ZQorICAgPGxpdGVyYWw+Q1JFQVRFPC9saXRlcmFs PiBwcml2aWxlZ2Ugb24gdGhlIGRhdGFiYXNlLgorICAgQWxzbywgdGhlIG5ldyBvd25lciBvZiBh CisgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1hbGwt dGFibGVzIj48bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD48L2xpbms+CisgICBvciA8 bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci10YWJsZXMtaW4t c2NoZW1hIj48bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD48L2xpbms+Cisg ICBwdWJsaWNhdGlvbiBtdXN0IGJlIGEgc3VwZXJ1c2VyLiBIb3dldmVyLCBhIHN1cGVydXNlciBj YW4KKyAgIGNoYW5nZSB0aGUgb3duZXJzaGlwIG9mIGEgcHVibGljYXRpb24gcmVnYXJkbGVzcyBv ZiB0aGVzZSByZXN0cmljdGlvbnMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIEFkZGluZy9T ZXR0aW5nIGFueSBzY2hlbWEgd2hlbiB0aGUgcHVibGljYXRpb24gYWxzbyBwdWJsaXNoZXMgYSB0 YWJsZSB3aXRoIGEKKyAgIGNvbHVtbiBsaXN0LCBhbmQgdmljZSB2ZXJzYSBpcyBub3Qgc3VwcG9y dGVkLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlBh cmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJs ZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIG9m IGFuIGV4aXN0aW5nIHB1YmxpY2F0aW9uIHdob3NlIGRlZmluaXRpb24gaXMgdG8gYmUgYWx0ZXJl ZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwor ICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICBOYW1lIG9mIGFuIGV4aXN0aW5nIHRhYmxlLiAgSWYgPGxpdGVyYWw+T05M WTwvbGl0ZXJhbD4gaXMgc3BlY2lmaWVkIGJlZm9yZSB0aGUKKyAgICAgIHRhYmxlIG5hbWUsIG9u bHkgdGhhdCB0YWJsZSBpcyBhZmZlY3RlZC4gIElmIDxsaXRlcmFsPk9OTFk8L2xpdGVyYWw+IGlz IG5vdAorICAgICAgc3BlY2lmaWVkLCB0aGUgdGFibGUgYW5kIGFsbCBpdHMgZGVzY2VuZGFudCB0 YWJsZXMgKGlmIGFueSkgYXJlCisgICAgICBhZmZlY3RlZC4gIE9wdGlvbmFsbHksIDxsaXRlcmFs Pio8L2xpdGVyYWw+IGNhbiBiZSBzcGVjaWZpZWQgYWZ0ZXIgdGhlIHRhYmxlCisgICAgICBuYW1l IHRvIGV4cGxpY2l0bHkgaW5kaWNhdGUgdGhhdCBkZXNjZW5kYW50IHRhYmxlcyBhcmUgaW5jbHVk ZWQuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIE9wdGlvbmFsbHksIGEgY29s dW1uIGxpc3QgY2FuIGJlIHNwZWNpZmllZC4gIFNlZSA8eHJlZgorICAgICAgbGlua2VuZD0ic3Fs LWNyZWF0ZXB1YmxpY2F0aW9uIi8+IGZvciBkZXRhaWxzLiBOb3RlIHRoYXQgYSBzdWJzY3JpcHRp b24KKyAgICAgIGhhdmluZyBzZXZlcmFsIHB1YmxpY2F0aW9ucyBpbiB3aGljaCB0aGUgc2FtZSB0 YWJsZSBoYXMgYmVlbiBwdWJsaXNoZWQKKyAgICAgIHdpdGggZGlmZmVyZW50IGNvbHVtbiBsaXN0 cyBpcyBub3Qgc3VwcG9ydGVkLiBTZWUKKyAgICAgIDx4cmVmIGxpbmtlbmQ9ImxvZ2ljYWwtcmVw bGljYXRpb24tY29sLWxpc3QtY29tYmluaW5nIi8+IGZvciBkZXRhaWxzIG9mCisgICAgICBwb3Rl bnRpYWwgcHJvYmxlbXMgd2hlbiBhbHRlcmluZyBjb2x1bW4gbGlzdHMuCisgICAgIDwvcGFyYT4K KworICAgICA8cGFyYT4KKyAgICAgIElmIHRoZSBvcHRpb25hbCA8bGl0ZXJhbD5XSEVSRTwvbGl0 ZXJhbD4gY2xhdXNlIGlzIHNwZWNpZmllZCwgcm93cyBmb3IKKyAgICAgIHdoaWNoIHRoZSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+CisgICAg ICBldmFsdWF0ZXMgdG8gZmFsc2Ugb3IgbnVsbCB3aWxsIG5vdCBiZSBwdWJsaXNoZWQuIE5vdGUg dGhhdCBwYXJlbnRoZXNlcworICAgICAgYXJlIHJlcXVpcmVkIGFyb3VuZCB0aGUgZXhwcmVzc2lv bi4gVGhlCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwv cmVwbGFjZWFibGU+IGlzIGV2YWx1YXRlZCB3aXRoCisgICAgICB0aGUgcm9sZSB1c2VkIGZvciB0 aGUgcmVwbGljYXRpb24gY29ubmVjdGlvbi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVy bT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgTmFtZSBvZiBhbiBleGlzdGlu ZyBzY2hlbWEuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+U0VUICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFi bGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+ XSBbLCAuLi4gXSApPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgVGhpcyBjbGF1c2UgYWx0ZXJzIHB1YmxpY2F0aW9uIHBhcmFtZXRlcnMgb3JpZ2lu YWxseSBzZXQgYnkKKyAgICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbiIv Pi4gIFNlZSB0aGVyZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgPC9wYXJhPgorICAgICA8 Y2F1dGlvbj4KKyAgICAgIDxwYXJhPgorICAgICAgIEFsdGVyaW5nIHRoZSA8bGl0ZXJhbD5wdWJs aXNoX3ZpYV9wYXJ0aXRpb25fcm9vdDwvbGl0ZXJhbD4gcGFyYW1ldGVyIGNhbgorICAgICAgIGxl YWQgdG8gZGF0YSBsb3NzIG9yIGR1cGxpY2F0aW9uIGF0IHRoZSBzdWJzY3JpYmVyIGJlY2F1c2Ug aXQgY2hhbmdlcworICAgICAgIHRoZSBpZGVudGl0eSBhbmQgc2NoZW1hIG9mIHRoZSBwdWJsaXNo ZWQgdGFibGVzLiBOb3RlIHRoaXMgaGFwcGVucyBvbmx5CisgICAgICAgd2hlbiBhIHBhcnRpdGlv biByb290IHRhYmxlIGlzIHNwZWNpZmllZCBhcyB0aGUgcmVwbGljYXRpb24gdGFyZ2V0LgorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhpcyBwcm9ibGVtIGNhbiBiZSBhdm9p ZGVkIGJ5IHJlZnJhaW5pbmcgZnJvbSBtb2RpZnlpbmcgcGFydGl0aW9uIGxlYWYKKyAgICAgICB0 YWJsZXMgYWZ0ZXIgdGhlIDxjb21tYW5kPkFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBTRVQ8L2NvbW1h bmQ+IHVudGlsIHRoZQorICAgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlv biI+PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OPC9j b21tYW5kPjwvbGluaz4KKyAgICAgICBpcyBleGVjdXRlZCBhbmQgYnkgb25seSByZWZyZXNoaW5n IHVzaW5nIHRoZSA8bGl0ZXJhbD5jb3B5X2RhdGEgPSBvZmY8L2xpdGVyYWw+CisgICAgICAgb3B0 aW9uLgorICAgICAgPC9wYXJhPgorICAgICA8L2NhdXRpb24+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfb3duZXI8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAg ICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIHVzZXIgbmFtZSBvZiB0aGUgbmV3 IG93bmVyIG9mIHRoZSBwdWJsaWNhdGlvbi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIG5ldyBuYW1lIGZvciB0aGUg cHVibGljYXRpb24uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisgIDwvdmFyaWFibGVsaXN0PgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+Cisg IDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBDaGFuZ2UgdGhlIHB1Ymxp Y2F0aW9uIHRvIHB1Ymxpc2ggb25seSBkZWxldGVzIGFuZCB1cGRhdGVzOgorPHByb2dyYW1saXN0 aW5nPgorQUxURVIgUFVCTElDQVRJT04gbm9pbnNlcnQgU0VUIChwdWJsaXNoID0gJ3VwZGF0ZSwg ZGVsZXRlJyk7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBB ZGQgc29tZSB0YWJsZXMgdG8gdGhlIHB1YmxpY2F0aW9uOgorPHByb2dyYW1saXN0aW5nPgorQUxU RVIgUFVCTElDQVRJT04gbXlwdWJsaWNhdGlvbiBBREQgVEFCTEUgdXNlcnMgKHVzZXJfaWQsIGZp cnN0bmFtZSksIGRlcGFydG1lbnRzOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisKKyAgPHBh cmE+CisgICBDaGFuZ2UgdGhlIHNldCBvZiBjb2x1bW5zIHB1Ymxpc2hlZCBmb3IgYSB0YWJsZToK Kzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFBVQkxJQ0FUSU9OIG15cHVibGljYXRpb24gU0VUIFRB QkxFIHVzZXJzICh1c2VyX2lkLCBmaXJzdG5hbWUsIGxhc3RuYW1lKSwgVEFCTEUgZGVwYXJ0bWVu dHM7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKworICA8cGFyYT4KKyAgIEFkZCBzY2hlbWFz IDxzdHJ1Y3RuYW1lPm1hcmtldGluZzwvc3RydWN0bmFtZT4gYW5kCisgICA8c3RydWN0bmFtZT5z YWxlczwvc3RydWN0bmFtZT4gdG8gdGhlIHB1YmxpY2F0aW9uCisgICA8c3RydWN0bmFtZT5zYWxl c19wdWJsaWNhdGlvbjwvc3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBQVUJM SUNBVElPTiBzYWxlc19wdWJsaWNhdGlvbiBBREQgVEFCTEVTIElOIFNDSEVNQSBtYXJrZXRpbmcs IHNhbGVzOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgQWRk IHRhYmxlcyA8c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4sCisgICA8c3RydWN0bmFtZT5k ZXBhcnRtZW50czwvc3RydWN0bmFtZT4gYW5kIHNjaGVtYQorICAgPHN0cnVjdG5hbWU+cHJvZHVj dGlvbjwvc3RydWN0bmFtZT4gdG8gdGhlIHB1YmxpY2F0aW9uCisgICA8c3RydWN0bmFtZT5wcm9k dWN0aW9uX3B1YmxpY2F0aW9uPC9zdHJ1Y3RuYW1lPjoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVS IFBVQkxJQ0FUSU9OIHByb2R1Y3Rpb25fcHVibGljYXRpb24gQUREIFRBQkxFIHVzZXJzLCBkZXBh cnRtZW50cywgVEFCTEVTIElOIFNDSEVNQSBwcm9kdWN0aW9uOworPC9wcm9ncmFtbGlzdGluZz48 L3BhcmE+CisKKyAgPHBhcmE+CisgICBSZXNldCB0aGUgcHVibGljYXRpb24gPHN0cnVjdG5hbWU+ cHJvZHVjdGlvbl9wdWJsaWNhdGlvbjwvc3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitB TFRFUiBQVUJMSUNBVElPTiBwcm9kdWN0aW9uX3B1YmxpY2F0aW9uIFJFU0VUOworPC9wcm9ncmFt bGlzdGluZz48L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNv bXBhdGliaWxpdHk8L3RpdGxlPgorCisgIDxwYXJhPgorICAgPGNvbW1hbmQ+QUxURVIgUFVCTElD QVRJT048L2NvbW1hbmQ+IGlzIGEgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1l PgorICAgZXh0ZW5zaW9uLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4K KyAgPHRpdGxlPlNlZSBBbHNvPC90aXRsZT4KKworICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUi PgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24iLz48L21l bWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWRyb3BwdWJsaWNhdGlvbiIvPjwv bWVtYmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9u Ii8+PC9tZW1iZXI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlw dGlvbiIvPjwvbWVtYmVyPgorICA8L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKzwvcmVmZW50 cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbAppbmRleCA4MDI2MzBm MmRmMS4uN2ZkODg3MmRiNWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1 YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24u c2dtbApAQCAtMjIsNyArMjIsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICA8cmVmc3lu b3BzaXNkaXY+CiA8c3lub3BzaXM+CiBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgotICAgIFsgRk9SIEFMTCBUQUJMRVMK KyAgICBbIEZPUiBBTEwgVEFCTEVTIFsgRVhDRVBUIFsgVEFCTEUgXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+ZXhjZXB0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdIF0K ICAgICAgIHwgRk9SIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9v YmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBdCiAgICAgWyBXSVRIICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+IFs9 IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+XSBbLCAu Li4gXSApIF0KIApAQCAtMzAsNiArMzAsMTAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KIAogICAgIFRBQkxFIFsg T05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNl YWJsZT4gWyAqIF0gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFt ZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXSBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0gWywgLi4uIF0KICAgICBU QUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9u YW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9IFssIC4uLiBdCisKKzxwaHJhc2U+ d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdGlvbl9vYmplY3Q8L3Jl cGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKworICAgIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0KIDwvc3lub3BzaXM+ CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApAQCAtMTI1LDcgKzEyOSw5IEBAIENSRUFURSBQVUJMSUNB VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAg ICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAgIE1hcmtzIHRoZSBwdWJsaWNhdGlvbiBh cyBvbmUgdGhhdCByZXBsaWNhdGVzIGNoYW5nZXMgZm9yIGFsbCB0YWJsZXMgaW4KLSAgICAgIHRo ZSBkYXRhYmFzZSwgaW5jbHVkaW5nIHRhYmxlcyBjcmVhdGVkIGluIHRoZSBmdXR1cmUuCisgICAg ICB0aGUgZGF0YWJhc2UsIGluY2x1ZGluZyB0YWJsZXMgY3JlYXRlZCBpbiB0aGUgZnV0dXJlLiBJ ZgorICAgICAgPGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQsIHRo ZW4gZXhjbHVkZSByZXBsaWNhdGluZworICAgICAgdGhlIGNoYW5nZXMgZm9yIHRoZSBzcGVjaWZp ZWQgdGFibGVzLgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVu dHJ5PgpAQCAtMTYxLDYgKzE2NywxNiBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIDwvbGlzdGl0ZW0+CiAg ICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXB1Ymxp Y2F0aW9uLXBhcmFtcy1mb3ItZXhjZXB0LXRhYmxlIj4KKyAgICA8dGVybT48bGl0ZXJhbD5FWENF UFQgVEFCTEU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+Cisg ICAgICBUaGlzIGNsYXVzZSBzcGVjaWZpZXMgYSBsaXN0IG9mIHRhYmxlcyB0byBiZSBleGNsdWRl ZCBmcm9tIHRoZQorICAgICAgcHVibGljYXRpb24uIEl0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCA8 bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xp c3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1j cmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtd2l0aCI+CiAgICAgPHRlcm0+PGxpdGVyYWw+V0lUSCAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9wYXJhbWV0ZXI8L3Jl cGxhY2VhYmxlPiBbPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxh Y2VhYmxlPl0gWywgLi4uIF0gKTwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAt NDQyLDYgKzQ1OCwxNSBAQCBDUkVBVEUgUFVCTElDQVRJT04gcHJvZHVjdGlvbl9wdWJsaWNhdGlv biBGT1IgVEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzLCBUQUJMRVMgSQogQ1JFQVRFIFBVQkxJQ0FU SU9OIHNhbGVzX3B1YmxpY2F0aW9uIEZPUiBUQUJMRVMgSU4gU0NIRU1BIG1hcmtldGluZywgc2Fs ZXM7CiA8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KIAorICA8cGFyYT4KKyAgIENyZWF0ZSBhIHB1 YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCBjaGFuZ2VzIGluIGFsbCB0aGUgdGFibGVzIGV4 Y2VwdCBmb3IKKyAgIHRoZSBjaGFuZ2VzIG9mIDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1l PiBhbmQKKyAgIDxzdHJ1Y3RuYW1lPmRlcGFydG1lbnRzPC9zdHJ1Y3RuYW1lPjoKKzxwcm9ncmFt bGlzdGluZz4KK0NSRUFURSBQVUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIEZPUiBBTEwgVEFCTEVT IEVYQ0VQVCB1c2VycywgZGVwYXJ0bWVudHM7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+ CisKICAgPHBhcmE+CiAgICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwg Y2hhbmdlcyBmb3IgdGFibGUgPHN0cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+LAogICAgYnV0 IHJlcGxpY2F0ZXMgb25seSBjb2x1bW5zIDxzdHJ1Y3RuYW1lPnVzZXJfaWQ8L3N0cnVjdG5hbWU+ IGFuZApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCmluZGV4IDk1ZjRjYWMyNDY3Li43Mzk2NWNjZDA0YyAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvcHNxbC1yZWYuc2dtbApAQCAtMjEwMyw4ICsyMTAzLDkgQEAgU0VMRUNUICQxIFxw YXJzZSBzdG10MQogICAgICAgICBsaXN0ZWQuCiAgICAgICAgIElmIDxsaXRlcmFsPng8L2xpdGVy YWw+IGlzIGFwcGVuZGVkIHRvIHRoZSBjb21tYW5kIG5hbWUsIHRoZSByZXN1bHRzCiAgICAgICAg IGFyZSBkaXNwbGF5ZWQgaW4gZXhwYW5kZWQgbW9kZS4KLSAgICAgICAgSWYgPGxpdGVyYWw+Kzwv bGl0ZXJhbD4gaXMgYXBwZW5kZWQgdG8gdGhlIGNvbW1hbmQgbmFtZSwgdGhlIHRhYmxlcyBhbmQK LSAgICAgICAgc2NoZW1hcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBwdWJsaWNhdGlvbiBhcmUgc2hv d24gYXMgd2VsbC4KKyAgICAgICAgSWYgPGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgYXBwZW5kZWQg dG8gdGhlIGNvbW1hbmQgbmFtZSwgdGhlIHRhYmxlcywKKyAgICAgICAgZXhjbHVkZWQgdGFibGVz IGFuZCBzY2hlbWFzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHB1YmxpY2F0aW9uIGFyZSBzaG93biBh cworICAgICAgICB3ZWxsLgogICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf cHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwppbmRl eCBkNmY5NGRiNWQ5OS4uZWM1ODBlM2IwNTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0 aW9uLmMKQEAgLTM1MSw3ICszNTEsOCBAQCBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMo TGlzdCAqcmVzdWx0LCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCiAgKiBhbmNlc3Rv ciBpcyBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0LgogICovCiBPaWQKLUdldFRvcE1vc3RBbmNlc3Rv ckluUHVibGljYXRpb24oT2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLCBpbnQgKmFuY2VzdG9y X2xldmVsKQorR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0 ICphbmNlc3RvcnMsCisJCQkJCQkJCWludCAqYW5jZXN0b3JfbGV2ZWwsIGJvb2wgcHViYWxsdGFi bGVzKQogewogCUxpc3RDZWxsICAgKmxjOwogCU9pZAkJCXRvcG1vc3RfcmVsaWQgPSBJbnZhbGlk T2lkOwpAQCAtMzYzLDMyICszNjQsNDQgQEAgR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlv bihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsIGludCAqYW5jZXN0b3JfbGV2ZWwKIAlmb3Jl YWNoKGxjLCBhbmNlc3RvcnMpCiAJewogCQlPaWQJCQlhbmNlc3RvciA9IGxmaXJzdF9vaWQobGMp OwotCQlMaXN0CSAgICphcHViaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3Ip OwotCQlMaXN0CSAgICphc2NoZW1hUHViaWRzID0gTklMOworCQlMaXN0CSAgICphcHViaWRzID0g R2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IsIGZhbHNlKTsKKwkJTGlzdAkgICAqYXNj aGVtYXB1YmlkcyA9IE5JTDsKKwkJTGlzdAkgICAqYWV4Y2VwdHB1YmlkcyA9IE5JTDsKKwkJYm9v bAkJc2V0X3RvcCA9IGZhbHNlOwogCiAJCWxldmVsKys7CiAKLQkJaWYgKGxpc3RfbWVtYmVyX29p ZChhcHViaWRzLCBwdWJvaWQpKQorCQkvKiBjaGVjayBpZiBtZW1iZXIgb2YgdGFibGUgcHVibGlj YXRpb25zICovCisJCXNldF90b3AgPSBsaXN0X21lbWJlcl9vaWQoYXB1YmlkcywgcHVib2lkKTsK KwkJaWYgKCFzZXRfdG9wKQogCQl7Ci0JCQl0b3Btb3N0X3JlbGlkID0gYW5jZXN0b3I7CisJCQlh c2NoZW1hcHViaWRzID0gR2V0U2NoZW1hUHVibGljYXRpb25zKGdldF9yZWxfbmFtZXNwYWNlKGFu Y2VzdG9yKSk7CiAKLQkJCWlmIChhbmNlc3Rvcl9sZXZlbCkKLQkJCQkqYW5jZXN0b3JfbGV2ZWwg PSBsZXZlbDsKKwkJCS8qIGNoZWNrIGlmIG1lbWJlciBvZiBzY2hlbWEgcHVibGljYXRpb25zICov CisJCQlzZXRfdG9wID0gbGlzdF9tZW1iZXJfb2lkKGFzY2hlbWFwdWJpZHMsIHB1Ym9pZCk7CisK KwkJCS8qCisJCQkgKiBJZiB0aGUgcHVibGljYXRpb24gaXMgYWxsIHRhYmxlcyBwdWJsaWNhdGlv biBhbmQgdGhlIHRhYmxlIGlzCisJCQkgKiBub3QgcGFydCBvZiBleGNlcHRpb24gdGFibGVzLgor CQkJICovCisJCQlpZiAoIXNldF90b3AgJiYgcHViYWxsdGFibGVzKQorCQkJeworCQkJCWFleGNl cHRwdWJpZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvciwgdHJ1ZSk7CisJCQkJ c2V0X3RvcCA9ICFsaXN0X21lbWJlcl9vaWQoYWV4Y2VwdHB1YmlkcywgcHVib2lkKTsKKwkJCX0K IAkJfQotCQllbHNlCisKKwkJaWYgKHNldF90b3ApCiAJCXsKLQkJCWFzY2hlbWFQdWJpZHMgPSBH ZXRTY2hlbWFQdWJsaWNhdGlvbnMoZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0b3IpKTsKLQkJCWlm IChsaXN0X21lbWJlcl9vaWQoYXNjaGVtYVB1YmlkcywgcHVib2lkKSkKLQkJCXsKLQkJCQl0b3Bt b3N0X3JlbGlkID0gYW5jZXN0b3I7CisJCQl0b3Btb3N0X3JlbGlkID0gYW5jZXN0b3I7CiAKLQkJ CQlpZiAoYW5jZXN0b3JfbGV2ZWwpCi0JCQkJCSphbmNlc3Rvcl9sZXZlbCA9IGxldmVsOwotCQkJ fQorCQkJaWYgKGFuY2VzdG9yX2xldmVsKQorCQkJCSphbmNlc3Rvcl9sZXZlbCA9IGxldmVsOwog CQl9CiAKIAkJbGlzdF9mcmVlKGFwdWJpZHMpOwotCQlsaXN0X2ZyZWUoYXNjaGVtYVB1Ymlkcyk7 CisJCWxpc3RfZnJlZShhc2NoZW1hcHViaWRzKTsKKwkJbGlzdF9mcmVlKGFleGNlcHRwdWJpZHMp OwogCX0KIAogCXJldHVybiB0b3Btb3N0X3JlbGlkOwpAQCAtNDc5LDYgKzQ5Miw4IEBAIHB1Ymxp Y2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAog CQlPYmplY3RJZEdldERhdHVtKHB1YmlkKTsKIAl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9y ZWxfcHJyZWxpZCAtIDFdID0KIAkJT2JqZWN0SWRHZXREYXR1bShyZWxpZCk7CisJdmFsdWVzW0Fu dW1fcGdfcHVibGljYXRpb25fcmVsX3ByZXhjZXB0IC0gMV0gPQorCQlCb29sR2V0RGF0dW0ocHJp LT5leGNlcHQpOwogCiAJLyogQWRkIHF1YWxpZmljYXRpb25zLCBpZiBhdmFpbGFibGUgKi8KIAlp ZiAocHJpLT53aGVyZUNsYXVzZSAhPSBOVUxMKQpAQCAtNzQ2LDkgKzc2MSw5IEBAIHB1YmxpY2F0 aW9uX2FkZF9zY2hlbWEoT2lkIHB1YmlkLCBPaWQgc2NoZW1haWQsIGJvb2wgaWZfbm90X2V4aXN0 cykKIAlyZXR1cm4gbXlzZWxmOwogfQogCi0vKiBHZXRzIGxpc3Qgb2YgcHVibGljYXRpb24gb2lk cyBmb3IgYSByZWxhdGlvbiAqLworLyogR2V0cyBsaXN0IG9mIHB1YmxpY2F0aW9uIG9pZHMgZm9y IGEgcmVsYXRpb24gdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRfZmxhZyAqLwogTGlzdCAqCi1HZXRS ZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpCitHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhP aWQgcmVsaWQsIGJvb2wgZXhjZXB0X2ZsYWcpCiB7CiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOwog CUNhdENMaXN0ICAgKnB1YnJlbGxpc3Q7CkBAIC03NjIsNyArNzc3LDggQEAgR2V0UmVsYXRpb25Q dWJsaWNhdGlvbnMoT2lkIHJlbGlkKQogCQlIZWFwVHVwbGUJdHVwID0gJnB1YnJlbGxpc3QtPm1l bWJlcnNbaV0tPnR1cGxlOwogCQlPaWQJCQlwdWJpZCA9ICgoRm9ybV9wZ19wdWJsaWNhdGlvbl9y ZWwpIEdFVFNUUlVDVCh0dXApKS0+cHJwdWJpZDsKIAotCQlyZXN1bHQgPSBsYXBwZW5kX29pZChy ZXN1bHQsIHB1YmlkKTsKKwkJaWYgKGV4Y2VwdF9mbGFnID09ICgoRm9ybV9wZ19wdWJsaWNhdGlv bl9yZWwpIEdFVFNUUlVDVCh0dXApKS0+cHJleGNlcHQpCisJCQlyZXN1bHQgPSBsYXBwZW5kX29p ZChyZXN1bHQsIHB1YmlkKTsKIAl9CiAKIAlSZWxlYXNlU3lzQ2FjaGVMaXN0KHB1YnJlbGxpc3Qp OwpAQCAtODYxLDEzICs4NzcsMTYgQEAgR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpCiAg KiByb290IHBhcnRpdGlvbmVkIHRhYmxlcy4KICAqLwogTGlzdCAqCi1HZXRBbGxUYWJsZXNQdWJs aWNhdGlvblJlbGF0aW9ucyhib29sIHB1YnZpYXJvb3QpCitHZXRBbGxUYWJsZXNQdWJsaWNhdGlv blJlbGF0aW9ucyhPaWQgcHViaWQsIGJvb2wgcHVidmlhcm9vdCkKIHsKIAlSZWxhdGlvbgljbGFz c1JlbDsKIAlTY2FuS2V5RGF0YSBrZXlbMV07CiAJVGFibGVTY2FuRGVzYyBzY2FuOwogCUhlYXBU dXBsZQl0dXBsZTsKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CisJTGlzdAkgICAqZXhjZXB0bGlz dDsKKworCWV4Y2VwdGxpc3QgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwgUFVCTElD QVRJT05fUEFSVF9BTEwpOwogCiAJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRp b25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKIApAQCAtODg0LDcgKzkwMyw4IEBAIEdldEFsbFRhYmxl c1B1YmxpY2F0aW9uUmVsYXRpb25zKGJvb2wgcHVidmlhcm9vdCkKIAkJT2lkCQkJcmVsaWQgPSBy ZWxGb3JtLT5vaWQ7CiAKIAkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3Jt KSAmJgotCQkJIShyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbiAmJiBwdWJ2aWFyb290KSkKKwkJCSEo cmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24gJiYgcHVidmlhcm9vdCkgJiYKKwkJCSFsaXN0X21lbWJl cl9vaWQoZXhjZXB0bGlzdCwgcmVsaWQpKQogCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0 LCByZWxpZCk7CiAJfQogCkBAIC05MDUsNyArOTI1LDggQEAgR2V0QWxsVGFibGVzUHVibGljYXRp b25SZWxhdGlvbnMoYm9vbCBwdWJ2aWFyb290KQogCQkJT2lkCQkJcmVsaWQgPSByZWxGb3JtLT5v aWQ7CiAKIAkJCWlmIChpc19wdWJsaXNoYWJsZV9jbGFzcyhyZWxpZCwgcmVsRm9ybSkgJiYKLQkJ CQkhcmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24pCisJCQkJIXJlbEZvcm0tPnJlbGlzcGFydGl0aW9u ICYmCisJCQkJIWxpc3RfbWVtYmVyX29pZChleGNlcHRsaXN0LCByZWxpZCkpCiAJCQkJcmVzdWx0 ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CiAJCX0KIApAQCAtMTE2MCw3ICsxMTgxLDgg QEAgcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhQR19GVU5DVElPTl9BUkdTKQogCQkJICogdGhv c2UuIE90aGVyd2lzZSwgZ2V0IHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBpdHNlbGYuCiAJCQkgKi8K IAkJCWlmIChwdWJfZWxlbS0+YWxsdGFibGVzKQotCQkJCXB1Yl9lbGVtX3RhYmxlcyA9IEdldEFs bFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVtLT5wdWJ2aWFyb290KTsKKwkJCQlw dWJfZWxlbV90YWJsZXMgPSBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJfZWxl bS0+b2lkLAorCQkJCQkJCQkJCQkJCQkJCSAgIHB1Yl9lbGVtLT5wdWJ2aWFyb290KTsKIAkJCWVs c2UKIAkJCXsKIAkJCQlMaXN0CSAgICpyZWxpZHMsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0 aW9uY21kcy5jCmluZGV4IDY3MjExMzMxZWZlLi44MjUwMGNmOWZlZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTIwNCw2ICsyMDQsMTEgQEAgT2JqZWN0c0luUHVi bGljYXRpb25Ub09pZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUs CiAJCXN3aXRjaCAocHVib2JqLT5wdWJvYmp0eXBlKQogCQl7CiAJCQljYXNlIFBVQkxJQ0FUSU9O T0JKX1RBQkxFOgorCQkJCXB1Ym9iai0+cHVidGFibGUtPmV4Y2VwdCA9IGZhbHNlOworCQkJCSpy ZWxzID0gbGFwcGVuZCgqcmVscywgcHVib2JqLT5wdWJ0YWJsZSk7CisJCQkJYnJlYWs7CisJCQlj YXNlIFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJMRToKKwkJCQlwdWJvYmotPnB1YnRhYmxlLT5l eGNlcHQgPSB0cnVlOwogCQkJCSpyZWxzID0gbGFwcGVuZCgqcmVscywgcHVib2JqLT5wdWJ0YWJs ZSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hFTUE6 CkBAIC0yNzgsNyArMjgzLDcgQEAgY29udGFpbl9pbnZhbGlkX3JmY29sdW1uX3dhbGtlcihOb2Rl ICpub2RlLCByZl9jb250ZXh0ICpjb250ZXh0KQogICovCiBib29sCiBwdWJfcmZfY29udGFpbnNf aW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqYW5jZXN0 b3JzLAotCQkJCQkJCSAgIGJvb2wgcHVidmlhcm9vdCkKKwkJCQkJCQkgICBib29sIHB1YnZpYXJv b3QsIGJvb2wgcHViYWxsdGFibGVzKQogewogCUhlYXBUdXBsZQlyZnR1cGxlOwogCU9pZAkJCXJl bGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7CkBAIC0zMDUsNyArMzEwLDggQEAgcHVi X3JmX2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24s IExpc3QgKmFuY2VzdG9ycywKIAlpZiAocHVidmlhcm9vdCAmJiByZWxhdGlvbi0+cmRfcmVsLT5y ZWxpc3BhcnRpdGlvbikKIAl7CiAJCXB1Ymxpc2hfYXNfcmVsaWQKLQkJCT0gR2V0VG9wTW9zdEFu Y2VzdG9ySW5QdWJsaWNhdGlvbihwdWJpZCwgYW5jZXN0b3JzLCBOVUxMKTsKKwkJCT0gR2V0VG9w TW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihwdWJpZCwgYW5jZXN0b3JzLCBOVUxMLAorCQkJCQkJ CQkJCQkgIHB1YmFsbHRhYmxlcyk7CiAKIAkJaWYgKCFPaWRJc1ZhbGlkKHB1Ymxpc2hfYXNfcmVs aWQpKQogCQkJcHVibGlzaF9hc19yZWxpZCA9IHJlbGlkOwpAQCAtMzY1LDcgKzM3MSw3IEBAIHB1 Yl9yZl9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0aW9u LCBMaXN0ICphbmNlc3RvcnMsCiBib29sCiBwdWJfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lk IHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3JzLAogCQkJCQkJCWJvb2wg cHVidmlhcm9vdCwgY2hhciBwdWJnZW5jb2xzX3R5cGUsCi0JCQkJCQkJYm9vbCAqaW52YWxpZF9j b2x1bW5fbGlzdCwKKwkJCQkJCQlib29sIHB1YmFsbHRhYmxlcywgYm9vbCAqaW52YWxpZF9jb2x1 bW5fbGlzdCwKIAkJCQkJCQlib29sICppbnZhbGlkX2dlbl9jb2wpCiB7CiAJT2lkCQkJcmVsaWQg PSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKQEAgLTM4OSw3ICszOTUsOCBAQCBwdWJfY29u dGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAq YW5jZXN0b3JzLAogCSAqLwogCWlmIChwdWJ2aWFyb290ICYmIHJlbGF0aW9uLT5yZF9yZWwtPnJl bGlzcGFydGl0aW9uKQogCXsKLQkJcHVibGlzaF9hc19yZWxpZCA9IEdldFRvcE1vc3RBbmNlc3Rv ckluUHVibGljYXRpb24ocHViaWQsIGFuY2VzdG9ycywgTlVMTCk7CisJCXB1Ymxpc2hfYXNfcmVs aWQgPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3RvcnMsCisJ CQkJCQkJCQkJCQkJCSAgIE5VTEwsIHB1YmFsbHRhYmxlcyk7CiAKIAkJaWYgKCFPaWRJc1ZhbGlk KHB1Ymxpc2hfYXNfcmVsaWQpKQogCQkJcHVibGlzaF9hc19yZWxpZCA9IHJlbGlkOwpAQCAtOTIx LDUyICs5MjgsNTAgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVh dGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJLyogTWFrZSB0aGUgY2hhbmdlcyB2aXNpYmxlLiAq LwogCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiAKLQkvKiBBc3NvY2lhdGUgb2JqZWN0cyB3 aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KLQlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCi0Jewot CQkvKiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1 aWx0LiAqLwotCQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUFsbCgpOwotCX0KLQllbHNlCi0Jewot CQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZy ZWxhdGlvbnMsCi0JCQkJCQkJCSAgICZzY2hlbWFpZGxpc3QpOworCU9iamVjdHNJblB1YmxpY2F0 aW9uVG9PaWRzKHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0ZSwgJnJlbGF0aW9ucywKKwkJCQkJCQkg ICAmc2NoZW1haWRsaXN0KTsKIAotCQkvKiBGT1IgVEFCTEVTIElOIFNDSEVNQSByZXF1aXJlcyBz dXBlcnVzZXIgKi8KLQkJaWYgKHNjaGVtYWlkbGlzdCAhPSBOSUwgJiYgIXN1cGVydXNlcigpKQot CQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklW SUxFR0UpLAotCQkJCQllcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGNyZWF0ZSBGT1IgVEFC TEVTIElOIFNDSEVNQSBwdWJsaWNhdGlvbiIpKTsKKwkvKiBGT1IgVEFCTEVTIElOIFNDSEVNQSBy ZXF1aXJlcyBzdXBlcnVzZXIgKi8KKwlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCAmJiAhc3VwZXJ1 c2VyKCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVO VF9QUklWSUxFR0UpLAorCQkJCWVycm1zZygibXVzdCBiZSBzdXBlcnVzZXIgdG8gY3JlYXRlIEZP UiBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9uIikpOwogCi0JCWlmIChyZWxhdGlvbnMgIT0g TklMKQotCQl7Ci0JCQlMaXN0CSAgICpyZWxzOworCWlmIChyZWxhdGlvbnMgIT0gTklMKQorCXsK KwkJTGlzdAkgICAqcmVsczsKIAotCQkJcmVscyA9IE9wZW5UYWJsZUxpc3QocmVsYXRpb25zKTsK LQkJCVRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhyZWxzLCBwc3RhdGUtPnBfc291cmNldGV4dCwK LQkJCQkJCQkJCSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CisJCXJlbHMgPSBPcGVuVGFi bGVMaXN0KHJlbGF0aW9ucyk7CisJCVRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhyZWxzLCBwc3Rh dGUtPnBfc291cmNldGV4dCwKKwkJCQkJCQkJIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsK IAotCQkJQ2hlY2tQdWJSZWxhdGlvbkNvbHVtbkxpc3Qoc3RtdC0+cHVibmFtZSwgcmVscywKLQkJ CQkJCQkJCSAgIHNjaGVtYWlkbGlzdCAhPSBOSUwsCi0JCQkJCQkJCQkgICBwdWJsaXNoX3ZpYV9w YXJ0aXRpb25fcm9vdCk7CisJCUNoZWNrUHViUmVsYXRpb25Db2x1bW5MaXN0KHN0bXQtPnB1Ym5h bWUsIHJlbHMsCisJCQkJCQkJCSAgIHNjaGVtYWlkbGlzdCAhPSBOSUwsCisJCQkJCQkJCSAgIHB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKIAotCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVi b2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKLQkJCUNsb3NlVGFibGVMaXN0KHJlbHMpOwotCQl9CisJ CVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7CisJCUNsb3Nl VGFibGVMaXN0KHJlbHMpOworCX0KIAotCQlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCkKLQkJewot CQkJLyoKLQkJCSAqIFNjaGVtYSBsb2NrIGlzIGhlbGQgdW50aWwgdGhlIHB1YmxpY2F0aW9uIGlz IGNyZWF0ZWQgdG8gcHJldmVudAotCQkJICogY29uY3VycmVudCBzY2hlbWEgZGVsZXRpb24uCi0J CQkgKi8KLQkJCUxvY2tTY2hlbWFMaXN0KHNjaGVtYWlkbGlzdCk7Ci0JCQlQdWJsaWNhdGlvbkFk ZFNjaGVtYXMocHVib2lkLCBzY2hlbWFpZGxpc3QsIHRydWUsIE5VTEwpOwotCQl9CisJaWYgKHNj aGVtYWlkbGlzdCAhPSBOSUwpCisJeworCQkvKgorCQkgKiBTY2hlbWEgbG9jayBpcyBoZWxkIHVu dGlsIHRoZSBwdWJsaWNhdGlvbiBpcyBjcmVhdGVkIHRvIHByZXZlbnQKKwkJICogY29uY3VycmVu dCBzY2hlbWEgZGVsZXRpb24uCisJCSAqLworCQlMb2NrU2NoZW1hTGlzdChzY2hlbWFpZGxpc3Qp OworCQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMocHVib2lkLCBzY2hlbWFpZGxpc3QsIHRydWUsIE5V TEwpOwogCX0KIAogCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKKwkvKiBB c3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KKwlpZiAoc3RtdC0+Zm9y X2FsbF90YWJsZXMpCisJeworCQkvKiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGlj YXRpb24gaW5mbyBpcyByZWJ1aWx0LiAqLworCQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUFsbCgp OworCX0KKwogCUludm9rZU9iamVjdFBvc3RDcmVhdGVIb29rKFB1YmxpY2F0aW9uUmVsYXRpb25J ZCwgcHVib2lkLCAwKTsKIAogCWlmICh3YWxfbGV2ZWwgIT0gV0FMX0xFVkVMX0xPR0lDQUwpCkBA IC0xMjQ2LDYgKzEyNTEsMjcgQEAgQWx0ZXJQdWJsaWNhdGlvblJlc2V0KFBhcnNlU3RhdGUgKnBz dGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJdmFsdWVzW0FudW1fcGdfcHVibGlj YXRpb25fcHViZ2VuY29scyAtIDFdID0gQ2hhckdldERhdHVtKFBVQl9ERUZBVUxUX0dFTkNPTFMp OwogCXJlcGxhY2VzW0FudW1fcGdfcHVibGljYXRpb25fcHViZ2VuY29scyAtIDFdID0gdHJ1ZTsK IAorCS8qCisJICogTG9jayB0aGUgcHVibGljYXRpb24gc28gbm9ib2R5IGVsc2UgY2FuIGRvIGFu eXRoaW5nIHdpdGggaXQuIFRoaXMKKwkgKiBwcmV2ZW50cyBjb25jdXJyZW50IHB1YmxpY2F0aW9u IHBhcmFtZXRlciBjaGFuZ2VzLCBhZGQvZHJvcCB0YWJsZXMocykKKwkgKiB0byB0aGUgcHVibGlj YXRpb24gYW5kIGFkZC9kcm9wIHNjaGVtYShzKSB0byB0aGUgcHVibGljYXRpb24uCisJICovCisJ TG9ja0RhdGFiYXNlT2JqZWN0KFB1YmxpY2F0aW9uUmVsYXRpb25JZCwgcHViaWQsIDAsCisJCQkJ CSAgIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJLyoKKwkgKiBJdCBpcyBwb3NzaWJsZSB0aGF0 IGJ5IHRoZSB0aW1lIHdlIGFjcXVpcmUgdGhlIGxvY2sgb24gcHVibGljYXRpb24sCisJICogY29u Y3VycmVudCBEREwgaGFzIHJlbW92ZWQgaXQuIFdlIGNhbiB0ZXN0IHRoaXMgYnkgY2hlY2tpbmcg dGhlCisJICogZXhpc3RlbmNlIG9mIHB1YmxpY2F0aW9uLiBXZSBnZXQgdGhlIHR1cGxlIGFnYWlu IHRvIGF2b2lkIHRoZSByaXNrIG9mCisJICogYW55IHB1YmxpY2F0aW9uIG9wdGlvbiBnZXR0aW5n IGNoYW5nZWQuCisJICovCisJdHVwID0gU2VhcmNoU3lzQ2FjaGVDb3B5MShQVUJMSUNBVElPTk9J RCwgT2JqZWN0SWRHZXREYXR1bShwdWJpZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXAp KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNU KSwKKwkJCQllcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJ CSAgIHN0bXQtPnB1Ym5hbWUpKTsKKwogCS8qIFNldCBBTEwgVEFCTEVTIGZsYWcgdG8gZmFsc2Ug Ki8KIAlpZiAocHViZm9ybS0+cHViYWxsdGFibGVzKQogCXsKQEAgLTEyODIsNiArMTMwOCw3OSBA QCBBbHRlclB1YmxpY2F0aW9uUmVzZXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0 aW9uU3RtdCAqc3RtdCwKIAl9CiB9CiAKKy8qCisgKiBDaGVjayBpZiB0aGUgcHVibGljYXRpb24g aGFzIGRlZmF1bHQgdmFsdWVzLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHVibGljYXRp b24gc2F0aXNmaWVzIGFsbCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKiBhKSBQdWJsaWNh dGlvbiBpcyBub3Qgc2V0IHdpdGggIkZPUiBBTEwgVEFCTEVTIgorICogYikgUHVibGljYXRpb24g aXMgaGF2aW5nIGRlZmF1bHQgcHVibGljYXRpb24gcGFyYW1ldGVyIHZhbHVlcworICogYykgUHVi bGljYXRpb24gaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBzY2hlbWFzCisgKiBkKSBQdWJsaWNhdGlv biBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIHJlbGF0aW9ucworICovCitzdGF0aWMgYm9vbAorQ2hl Y2tQdWJsaWNhdGlvbkRlZlZhbHVlcyhIZWFwVHVwbGUgdHVwKQoreworCUZvcm1fcGdfcHVibGlj YXRpb24gcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKKwlP aWQJCQlwdWJpZCA9IHB1YmZvcm0tPm9pZDsKKwlMaXN0CSAgICpwdWJvYmpzID0gTklMOworCisJ aWYgKHB1YmZvcm0tPnB1YmFsbHRhYmxlcyAhPSBQVUJfREVGQVVMVF9BTExfVEFCTEVTKQorCQly ZXR1cm4gZmFsc2U7CisKKwlpZiAocHViZm9ybS0+cHViaW5zZXJ0ICE9IFBVQl9ERUZBVUxUX0FD VElPTl9JTlNFUlQgfHwKKwkJcHViZm9ybS0+cHVidXBkYXRlICE9IFBVQl9ERUZBVUxUX0FDVElP Tl9VUERBVEUgfHwKKwkJcHViZm9ybS0+cHViZGVsZXRlICE9IFBVQl9ERUZBVUxUX0FDVElPTl9E RUxFVEUgfHwKKwkJcHViZm9ybS0+cHVidHJ1bmNhdGUgIT0gUFVCX0RFRkFVTFRfQUNUSU9OX1RS VU5DQVRFIHx8CisJCXB1YmZvcm0tPnB1YnZpYXJvb3QgIT0gUFVCX0RFRkFVTFRfVklBX1JPT1Qp CisJCXJldHVybiBmYWxzZTsKKworCXB1Ym9ianMgPSBHZXRQdWJsaWNhdGlvblNjaGVtYXMocHVi aWQpOworCWlmIChsaXN0X2xlbmd0aChwdWJvYmpzKSkKKwkJcmV0dXJuIGZhbHNlOworCisJcHVi b2JqcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLCBQVUJMSUNBVElPTl9QQVJUX1JP T1QpOworCWlmIChsaXN0X2xlbmd0aChwdWJvYmpzKSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0 dXJuIHRydWU7Cit9CisKKy8qCisgKiBTZXQgcHVibGljYXRpb24gdG8gcHVibGlzaCBhbGwgdGFi bGVzLgorICovCitzdGF0aWMgdm9pZAorQWx0ZXJQdWJsaWNhdGlvblNldEFsbFRhYmxlcyhSZWxh dGlvbiByZWwsIEhlYXBUdXBsZSB0dXApCit7CisJRm9ybV9wZ19wdWJsaWNhdGlvbiBwdWJmb3Jt IFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJV Q1QodHVwKTsKKwlib29sCQludWxsc1tOYXR0c19wZ19wdWJsaWNhdGlvbl07CisJYm9vbAkJcmVw bGFjZXNbTmF0dHNfcGdfcHVibGljYXRpb25dOworCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcHVi bGljYXRpb25dOworCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCUFzc2VydCghcHViZm9y bS0+cHViYWxsdGFibGVzKTsKKyNlbmRpZgorCisJLyogQWRkIEFMTCBUQUJMRVMgdG8gdGhlIHB1 YmxpY2F0aW9uIHJlcXVpcmVzIHN1cGVydXNlciAqLworCWlmICghc3VwZXJ1c2VyKCkpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0Up LAorCQkJCWVycm1zZygibXVzdCBiZSBzdXBlcnVzZXIgdG8gQUREIEFMTCBUQUJMRVMgdG8gdGhl IHB1YmxpY2F0aW9uIikpOworCisJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOwor CW1lbXNldChudWxscywgZmFsc2UsIHNpemVvZihudWxscykpOworCW1lbXNldChyZXBsYWNlcywg ZmFsc2UsIHNpemVvZihyZXBsYWNlcykpOworCisJLyogU2V0IEFMTCBUQUJMRVMgZmxhZyAqLwor CXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmFsbHRhYmxlcyAtIDFdID0gQm9vbEdldERh dHVtKHRydWUpOworCXJlcGxhY2VzW0FudW1fcGdfcHVibGljYXRpb25fcHViYWxsdGFibGVzIC0g MV0gPSB0cnVlOworCisJdHVwID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwLCBSZWxhdGlvbkdldERl c2NyKHJlbCksIHZhbHVlcywgbnVsbHMsCisJCQkJCQkJcmVwbGFjZXMpOworCisJLyogVXBkYXRl IHRoZSBjYXRhbG9nLiAqLworCUNhdGFsb2dUdXBsZVVwZGF0ZShyZWwsICZ0dXAtPnRfc2VsZiwg dHVwKTsKK30KKwogLyoKICAqIEFkZCBvciByZW1vdmUgdGFibGUgdG8vZnJvbSBwdWJsaWNhdGlv bi4KICAqLwpAQCAtMTU5NCw2ICsxNjkzLDIwIEBAIEFsdGVyUHVibGljYXRpb24oUGFyc2VTdGF0 ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJYWNsY2hlY2tfZXJyb3Io QUNMQ0hFQ0tfTk9UX09XTkVSLCBPQkpFQ1RfUFVCTElDQVRJT04sCiAJCQkJCSAgIHN0bXQtPnB1 Ym5hbWUpOwogCisJaWYgKHN0bXQtPmZvcl9hbGxfdGFibGVzKQorCXsKKwkJYm9vbAkJaXNkZWZh dWx0ID0gQ2hlY2tQdWJsaWNhdGlvbkRlZlZhbHVlcyh0dXApOworCisJCWlmICghaXNkZWZhdWx0 KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNU X0RFRklOSVRJT04pLAorCQkJCQllcnJtc2coImFkZGluZyBBTEwgVEFCTEVTIHJlcXVpcmVzIHRo ZSBwdWJsaWNhdGlvbiB0byBoYXZlIGRlZmF1bHQgcHVibGljYXRpb24gcGFyYW1ldGVyIHZhbHVl cyIpLAorCQkJCQllcnJkZXRhaWwoIkFMTCBUQUJMRVMgZmxhZyBzaG91bGQgbm90IGJlIHNldCBh bmQgbm8gdGFibGVzL3NjaGVtYXMgc2hvdWxkIGJlIGFzc29jaWF0ZWQuIiksCisJCQkJCWVycmhp bnQoIlVzZSBBTFRFUiBQVUJMSUNBVElPTiAuLi4gUkVTRVQgdG8gcmVzZXQgdGhlIHB1YmxpY2F0 aW9uIikpOworCisJCUFsdGVyUHVibGljYXRpb25TZXRBbGxUYWJsZXMocmVsLCB0dXApOworCX0K KwogCWlmIChzdG10LT5vcHRpb25zKQogCQlBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhwc3RhdGUs IHN0bXQsIHJlbCwgdHVwKTsKIAllbHNlIGlmIChzdG10LT5hY3Rpb24gPT0gQVBfUmVzZXRQdWJs aWNhdGlvbikKQEAgLTE4MDYsNiArMTkxOSw3IEBAIE9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVz KQogCQlwdWJfcmVsLT5yZWxhdGlvbiA9IHJlbDsKIAkJcHViX3JlbC0+d2hlcmVDbGF1c2UgPSB0 LT53aGVyZUNsYXVzZTsKIAkJcHViX3JlbC0+Y29sdW1ucyA9IHQtPmNvbHVtbnM7CisJCXB1Yl9y ZWwtPmV4Y2VwdCA9IHQtPmV4Y2VwdDsKIAkJcmVscyA9IGxhcHBlbmQocmVscywgcHViX3JlbCk7 CiAJCXJlbGlkcyA9IGxhcHBlbmRfb2lkKHJlbGlkcywgbXlyZWxpZCk7CiAKQEAgLTE4NzgsNiAr MTk5Miw3IEBAIE9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQogCiAJCQkJLyogY2hpbGQgaW5o ZXJpdHMgY29sdW1uIGxpc3QgZnJvbSBwYXJlbnQgKi8KIAkJCQlwdWJfcmVsLT5jb2x1bW5zID0g dC0+Y29sdW1uczsKKwkJCQlwdWJfcmVsLT5leGNlcHQgPSB0LT5leGNlcHQ7CiAJCQkJcmVscyA9 IGxhcHBlbmQocmVscywgcHViX3JlbCk7CiAJCQkJcmVsaWRzID0gbGFwcGVuZF9vaWQocmVsaWRz LCBjaGlsZHJlbGlkKTsKIApAQCAtMTk1Myw4ICsyMDY4LDYgQEAgUHVibGljYXRpb25BZGRUYWJs ZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25vdF9leGlzdHMsCiB7CiAJTGlzdENl bGwgICAqbGM7CiAKLQlBc3NlcnQoIXN0bXQgfHwgIXN0bXQtPmZvcl9hbGxfdGFibGVzKTsKLQog CWZvcmVhY2gobGMsIHJlbHMpCiAJewogCQlQdWJsaWNhdGlvblJlbEluZm8gKnB1Yl9yZWwgPSAo UHVibGljYXRpb25SZWxJbmZvICopIGxmaXJzdChsYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CmluZGV4IGUyYjk0YzhjNjA5Li41ZjE0N2Y5N2FhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMKQEAgLTg2MjQsNyArODYyNCw3IEBAIEFURXhlY1NldEV4cHJlc3Npb24oQWx0ZXJlZFRhYmxl SW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAJICogZXhwcmVz c2lvbnMuCiAJICovCiAJaWYgKGF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1ZJ UlRVQUwgJiYKLQkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwp KSAhPSBOSUwpCisJCUdldFJlbGF0aW9uUHVibGljYXRpb25zKFJlbGF0aW9uR2V0UmVsaWQocmVs KSwgZmFsc2UpICE9IE5JTCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJIGVycm1zZygiQUxURVIgVEFCTEUgLyBTRVQg RVhQUkVTU0lPTiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5z IG9uIHRhYmxlcyB0aGF0IGFyZSBwYXJ0IG9mIGEgcHVibGljYXRpb24iKSwKQEAgLTE4Nzk3LDcg KzE4Nzk3LDcgQEAgQVRQcmVwQ2hhbmdlUGVyc2lzdGVuY2UoQWx0ZXJlZFRhYmxlSW5mbyAqdGFi LCBSZWxhdGlvbiByZWwsIGJvb2wgdG9Mb2dnZWQpCiAJICogVU5MT0dHRUQsIGFzIFVOTE9HR0VE IHRhYmxlcyBjYW4ndCBiZSBwdWJsaXNoZWQuCiAJICovCiAJaWYgKCF0b0xvZ2dlZCAmJgotCQlH ZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJlbCkpICE9IE5JTCkKKwkJ bGlzdF9sZW5ndGgoR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwp LCBmYWxzZSkpID4gMCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkgZXJybXNnKCJjYW5ub3QgY2hh bmdlIHRhYmxlIFwiJXNcIiB0byB1bmxvZ2dlZCBiZWNhdXNlIGl0IGlzIHBhcnQgb2YgYSBwdWJs aWNhdGlvbiIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBlMTZmNDgzMjk2My4uZDdmZTk1YTg0MGYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQpAQCAtNDQ1LDcgKzQ0NSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmll d1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJ dHJhbnNmb3JtX2VsZW1lbnRfbGlzdCB0cmFuc2Zvcm1fdHlwZV9saXN0CiAJCQkJVHJpZ2dlclRy YW5zaXRpb25zIFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXZhY3V1bV9yZWxhdGlvbl9saXN0IG9w dF92YWN1dW1fcmVsYXRpb25fbGlzdAotCQkJCWRyb3Bfb3B0aW9uX2xpc3QgcHViX29ial9saXN0 CisJCQkJZHJvcF9vcHRpb25fbGlzdCBwdWJfb2JqX2xpc3QgZXhjZXB0X3B1Yl9vYmpfbGlzdAog CiAldHlwZSA8cmV0Y2xhdXNlPiByZXR1cm5pbmdfY2xhdXNlCiAldHlwZSA8bm9kZT4JcmV0dXJu aW5nX29wdGlvbgpAQCAtNTg0LDYgKzU4NCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZl Vmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAl dHlwZSA8bm9kZT4JdmFyX3ZhbHVlIHpvbmVfdmFsdWUKICV0eXBlIDxyb2xlc3BlYz4gYXV0aF9p ZGVudCBSb2xlU3BlYyBvcHRfZ3JhbnRlZF9ieQogJXR5cGUgPHB1YmxpY2F0aW9ub2JqZWN0c3Bl Yz4gUHVibGljYXRpb25PYmpTcGVjCisldHlwZSA8cHVibGljYXRpb25vYmplY3RzcGVjPiBFeGNl cHRQdWJsaWNhdGlvbk9ialNwZWMKIAogJXR5cGUgPGtleXdvcmQ+IHVucmVzZXJ2ZWRfa2V5d29y ZCB0eXBlX2Z1bmNfbmFtZV9rZXl3b3JkCiAldHlwZSA8a2V5d29yZD4gY29sX25hbWVfa2V5d29y ZCByZXNlcnZlZF9rZXl3b3JkCkBAIC0xMDYxMiw3ICsxMDYxMyw3IEBAIEFsdGVyT3duZXJTdG10 OiBBTFRFUiBBR0dSRUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMgT1dORVIgVE8gUm9sZVNw ZWMKICAqCiAgKiBDUkVBVEUgUFVCTElDQVRJT04gbmFtZSBbV0lUSCBvcHRpb25zXQogICoKLSAq IENSRUFURSBQVUJMSUNBVElPTiBGT1IgQUxMIFRBQkxFUyBbV0lUSCBvcHRpb25zXQorICogQ1JF QVRFIFBVQkxJQ0FUSU9OIEZPUiBBTEwgVEFCTEVTIFtFWENFUFQgW1RBQkxFXSB0YWJsZSBbLCAu Li5dXSBbV0lUSCBvcHRpb25zXQogICoKICAqIENSRUFURSBQVUJMSUNBVElPTiBGT1IgcHViX29i aiBbLCAuLi5dIFtXSVRIIG9wdGlvbnNdCiAgKgpAQCAtMTA2MzIsMTIgKzEwNjMzLDEzIEBAIENy ZWF0ZVB1YmxpY2F0aW9uU3RtdDoKIAkJCQkJbi0+b3B0aW9ucyA9ICQ0OwogCQkJCQkkJCA9IChO b2RlICopIG47CiAJCQkJfQotCQkJfCBDUkVBVEUgUFVCTElDQVRJT04gbmFtZSBGT1IgQUxMIFRB QkxFUyBvcHRfZGVmaW5pdGlvbgorCQkJfCBDUkVBVEUgUFVCTElDQVRJT04gbmFtZSBGT1IgQUxM IFRBQkxFUyBleGNlcHRfcHViX29ial9saXN0IG9wdF9kZWZpbml0aW9uCiAJCQkJewogCQkJCQlD cmVhdGVQdWJsaWNhdGlvblN0bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVQdWJsaWNhdGlvblN0bXQp OwogCiAJCQkJCW4tPnB1Ym5hbWUgPSAkMzsKLQkJCQkJbi0+b3B0aW9ucyA9ICQ3OworCQkJCQlu LT5vcHRpb25zID0gJDg7CisJCQkJCW4tPnB1Ym9iamVjdHMgPSAoTGlzdCAqKSQ3OwogCQkJCQlu LT5mb3JfYWxsX3RhYmxlcyA9IHRydWU7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CkBA IC0xMDY3NSw2ICsxMDY3Nyw3IEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJJCQtPnB1YnRh YmxlLT5yZWxhdGlvbiA9ICQyOwogCQkJCQkkJC0+cHVidGFibGUtPmNvbHVtbnMgPSAkMzsKIAkJ CQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQ0OworCQkJCQkkJC0+bG9jYXRpb24gPSBA MTsKIAkJCQl9CiAJCQl8IFRBQkxFUyBJTl9QIFNDSEVNQSBDb2xJZAogCQkJCXsKQEAgLTEwNzUw LDYgKzEwNzUzLDI1IEBAIHB1Yl9vYmpfbGlzdDoJUHVibGljYXRpb25PYmpTcGVjCiAJCQkJCXsg JCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAk7CiAKK0V4Y2VwdFB1YmxpY2F0aW9uT2JqU3BlYzoK KwkJCSByZWxhdGlvbl9leHByCisJCQkJeworCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9u T2JqU3BlYyk7CisJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfRVhDRVBUX1RB QkxFOworCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlvblRhYmxlKTsKKwkJ CQkJJCQtPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOworCQkJCQkkJC0+cHVidGFibGUtPnJlbGF0 aW9uID0gJDE7CisJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOworCQkJCX0KKwk7CisKK2V4Y2VwdF9w dWJfb2JqX2xpc3Q6CUVYQ0VQVCBvcHRfdGFibGUgRXhjZXB0UHVibGljYXRpb25PYmpTcGVjCisJ CQkJCXsgJCQgPSBsaXN0X21ha2UxKCQzKTsgfQorCQkJfCBleGNlcHRfcHViX29ial9saXN0ICcs JyBFeGNlcHRQdWJsaWNhdGlvbk9ialNwZWMKKwkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsg fQorCQkJfCAgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gTlVMTDsgfQorCTsKKwogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCiAgKgogICogQUxURVIgUFVCTElDQVRJT04gbmFtZSBTRVQgKCBvcHRpb25z ICkKQEAgLTEwNzYyLDYgKzEwNzg0LDggQEAgcHViX29ial9saXN0OglQdWJsaWNhdGlvbk9ialNw ZWMKICAqCiAgKiBBTFRFUiBQVUJMSUNBVElPTiBuYW1lIFJFU0VUCiAgKgorICogQUxURVIgUFVC TElDQVRJT04gbmFtZSBBREQgQUxMIFRBQkxFUyBFWENFUFQgW1RBQkxFXSB0YWJsZV9uYW1lIFss IC4uLl0KKyAqCiAgKiBwdWJfb2JqIGlzIG9uZSBvZjoKICAqCiAgKgkJVEFCTEUgdGFibGVfbmFt ZSBbLCAuLi5dCkBAIC0xMDc4OCw2ICsxMDgxMiwxNSBAQCBBbHRlclB1YmxpY2F0aW9uU3RtdDoK IAkJCQkJbi0+YWN0aW9uID0gQVBfQWRkT2JqZWN0czsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwog CQkJCX0KKwkJCXwgQUxURVIgUFVCTElDQVRJT04gbmFtZSBBRERfUCBBTEwgVEFCTEVTIGV4Y2Vw dF9wdWJfb2JqX2xpc3QKKwkJCQl7CisJCQkJCUFsdGVyUHVibGljYXRpb25TdG10ICpuID0gbWFr ZU5vZGUoQWx0ZXJQdWJsaWNhdGlvblN0bXQpOworCQkJCQluLT5wdWJuYW1lID0gJDM7CisJCQkJ CW4tPnB1Ym9iamVjdHMgPSAkNzsKKwkJCQkJbi0+Zm9yX2FsbF90YWJsZXMgPSB0cnVlOworCQkJ CQluLT5hY3Rpb24gPSBBUF9BZGRPYmplY3RzOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9 CiAJCQl8IEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgU0VUIHB1Yl9vYmpfbGlzdAogCQkJCXsKIAkJ CQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKm4gPSBtYWtlTm9kZShBbHRlclB1YmxpY2F0aW9uU3Rt dCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1 dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA2 OTNhNzY2ZTZkNy4uNTUxMmI0Y2JhN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdv dXRwdXQvcGdvdXRwdXQuYwpAQCAtMjA2Myw3ICsyMDYzLDggQEAgZ2V0X3JlbF9zeW5jX2VudHJ5 KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJaWYgKCFlbnRyeS0+cmVw bGljYXRlX3ZhbGlkKQogCXsKIAkJT2lkCQkJc2NoZW1hSWQgPSBnZXRfcmVsX25hbWVzcGFjZShy ZWxpZCk7Ci0JCUxpc3QJICAgKnB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKHJlbGlk KTsKKwkJTGlzdAkgICAqcHViaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQsIGZh bHNlKTsKKwkJTGlzdAkgICAqZXhjZXB0VGFibGVQdWJpZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0 aW9ucyhyZWxpZCwgdHJ1ZSk7CiAKIAkJLyoKIAkJICogV2UgZG9uJ3QgYWNxdWlyZSBhIGxvY2sg b24gdGhlIG5hbWVzcGFjZSBzeXN0ZW0gdGFibGUgYXMgd2UgYnVpbGQKQEAgLTIxNzQsMjIgKzIx NzUsNiBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiBy ZWxhdGlvbikKIAkJCU9pZAkJCXB1Yl9yZWxpZCA9IHJlbGlkOwogCQkJaW50CQkJYW5jZXN0b3Jf bGV2ZWwgPSAwOwogCi0JCQkvKgotCQkJICogSWYgdGhpcyBpcyBhIEZPUiBBTEwgVEFCTEVTIHB1 YmxpY2F0aW9uLCBwaWNrIHRoZSBwYXJ0aXRpb24KLQkJCSAqIHJvb3QgYW5kIHNldCB0aGUgYW5j ZXN0b3IgbGV2ZWwgYWNjb3JkaW5nbHkuCi0JCQkgKi8KLQkJCWlmIChwdWItPmFsbHRhYmxlcykK LQkJCXsKLQkJCQlwdWJsaXNoID0gdHJ1ZTsKLQkJCQlpZiAocHViLT5wdWJ2aWFyb290ICYmIGFt X3BhcnRpdGlvbikKLQkJCQl7Ci0JCQkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRp b25fYW5jZXN0b3JzKHJlbGlkKTsKLQotCQkJCQlwdWJfcmVsaWQgPSBsbGFzdF9vaWQoYW5jZXN0 b3JzKTsKLQkJCQkJYW5jZXN0b3JfbGV2ZWwgPSBsaXN0X2xlbmd0aChhbmNlc3RvcnMpOwotCQkJ CX0KLQkJCX0KLQogCQkJaWYgKCFwdWJsaXNoKQogCQkJewogCQkJCWJvb2wJCWFuY2VzdG9yX3B1 Ymxpc2hlZCA9IGZhbHNlOwpAQCAtMjIwOCw3ICsyMTkzLDggQEAgZ2V0X3JlbF9zeW5jX2VudHJ5 KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAKIAkJCQkJYW5jZXN0b3Ig PSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1Yi0+b2lkLAogCQkJCQkJCQkJCQkJ CQkJICAgYW5jZXN0b3JzLAotCQkJCQkJCQkJCQkJCQkJICAgJmxldmVsKTsKKwkJCQkJCQkJCQkJ CQkJCSAgICZsZXZlbCwKKwkJCQkJCQkJCQkJCQkJCSAgIHB1Yi0+YWxsdGFibGVzKTsKIAogCQkJ CQlpZiAoYW5jZXN0b3IgIT0gSW52YWxpZE9pZCkKIAkJCQkJewpAQCAtMjIyMyw2ICsyMjA5LDgg QEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRp b24pCiAKIAkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKHB1YmlkcywgcHViLT5vaWQpIHx8CiAJCQkJ CWxpc3RfbWVtYmVyX29pZChzY2hlbWFQdWJpZHMsIHB1Yi0+b2lkKSB8fAorCQkJCQkocHViLT5h bGx0YWJsZXMgJiYKKwkJCQkJICFsaXN0X21lbWJlcl9vaWQoZXhjZXB0VGFibGVQdWJpZHMsIHB1 Yi0+b2lkKSkgfHwKIAkJCQkJYW5jZXN0b3JfcHVibGlzaGVkKQogCQkJCQlwdWJsaXNoID0gdHJ1 ZTsKIAkJCX0KQEAgLTIzMDEsNiArMjI4OSw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1 dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCiAJCWxpc3RfZnJlZShwdWJpZHMpOwog CQlsaXN0X2ZyZWUoc2NoZW1hUHViaWRzKTsKKwkJbGlzdF9mcmVlKGV4Y2VwdFRhYmxlUHViaWRz KTsKIAkJbGlzdF9mcmVlKHJlbF9wdWJsaWNhdGlvbnMpOwogCiAJCWVudHJ5LT5yZXBsaWNhdGVf dmFsaWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2Fj aGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggNTU5YmE5Y2Ri MmMuLmJmZmRhYjJhYjYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxj YWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTU3OTQs NiArNTc5NCw4IEBAIHZvaWQKIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24g cmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIHsKIAlMaXN0CSAgICpwdWJvaWRz OworCUxpc3QJICAgKmFsbHRhYmxlc3B1Ym9pZHM7CisJTGlzdAkgICAqZXhjZXB0cHVib2lkcyA9 IE5JTDsKIAlMaXN0Q2VsbCAgICpsYzsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAlPaWQJCQlz Y2hlbWFpZDsKQEAgLTU4MzEsNyArNTgzMyw3IEBAIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRl c2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIAlwdWJkZXNj LT5nZW5jb2xzX3ZhbGlkX2Zvcl9kZWxldGUgPSB0cnVlOwogCiAJLyogRmV0Y2ggdGhlIHB1Ymxp Y2F0aW9uIG1lbWJlcnNoaXAgaW5mby4gKi8KLQlwdWJvaWRzID0gR2V0UmVsYXRpb25QdWJsaWNh dGlvbnMocmVsaWQpOworCXB1Ym9pZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCwg ZmFsc2UpOwogCXNjaGVtYWlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocmVsYXRpb24pOwogCXB1 Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldFNjaGVtYVB1YmxpY2F0 aW9ucyhzY2hlbWFpZCkpOwogCkBAIC01ODQ1LDE0ICs1ODQ3LDE5IEBAIFJlbGF0aW9uQnVpbGRQ dWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVz YykKIAkJCU9pZAkJCWFuY2VzdG9yID0gbGZpcnN0X29pZChsYyk7CiAKIAkJCXB1Ym9pZHMgPSBs aXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCi0JCQkJCQkJCQkJCSBHZXRSZWxhdGlvblB1 YmxpY2F0aW9ucyhhbmNlc3RvcikpOworCQkJCQkJCQkJCQkgR2V0UmVsYXRpb25QdWJsaWNhdGlv bnMoYW5jZXN0b3IsIGZhbHNlKSk7CiAJCQlzY2hlbWFpZCA9IGdldF9yZWxfbmFtZXNwYWNlKGFu Y2VzdG9yKTsKIAkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCiAJ CQkJCQkJCQkJCSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpKTsKKwkJCWV4Y2VwdHB1 Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKGV4Y2VwdHB1Ym9pZHMsCisJCQkJCQkJCQkJ CQkgICBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvciwgdHJ1ZSkpOwogCQl9CiAJfQot CXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldEFsbFRhYmxlc1B1 YmxpY2F0aW9ucygpKTsKIAorCWFsbHRhYmxlc3B1Ym9pZHMgPSBHZXRBbGxUYWJsZXNQdWJsaWNh dGlvbnMoKTsKKwlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAorCQkJ CQkJCQkJIGxpc3RfZGlmZmVyZW5jZV9vaWQoYWxsdGFibGVzcHVib2lkcywKKwkJCQkJCQkJCQkJ CQkJIGV4Y2VwdHB1Ym9pZHMpKTsKIAlmb3JlYWNoKGxjLCBwdWJvaWRzKQogCXsKIAkJT2lkCQkJ cHViaWQgPSBsZmlyc3Rfb2lkKGxjKTsKQEAgLTU4ODMsNyArNTg5MCw3IEBAIFJlbGF0aW9uQnVp bGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHVi ZGVzYykKIAkJaWYgKCFwdWJmb3JtLT5wdWJhbGx0YWJsZXMgJiYKIAkJCShwdWJmb3JtLT5wdWJ1 cGRhdGUgfHwgcHViZm9ybS0+cHViZGVsZXRlKSAmJgogCQkJcHViX3JmX2NvbnRhaW5zX2ludmFs aWRfY29sdW1uKHB1YmlkLCByZWxhdGlvbiwgYW5jZXN0b3JzLAotCQkJCQkJCQkJCSAgIHB1YmZv cm0tPnB1YnZpYXJvb3QpKQorCQkJCQkJCQkJCSAgIHB1YmZvcm0tPnB1YnZpYXJvb3QsIHB1YmZv cm0tPnB1YmFsbHRhYmxlcykpCiAJCXsKIAkJCWlmIChwdWJmb3JtLT5wdWJ1cGRhdGUpCiAJCQkJ cHViZGVzYy0+cmZfdmFsaWRfZm9yX3VwZGF0ZSA9IGZhbHNlOwpAQCAtNTkwMSw2ICs1OTA4LDcg QEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGlj YXRpb25EZXNjICpwdWJkZXNjKQogCQkJcHViX2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKHB1Ymlk LCByZWxhdGlvbiwgYW5jZXN0b3JzLAogCQkJCQkJCQkJCXB1YmZvcm0tPnB1YnZpYXJvb3QsCiAJ CQkJCQkJCQkJcHViZm9ybS0+cHViZ2VuY29scywKKwkJCQkJCQkJCQlwdWJmb3JtLT5wdWJhbGx0 YWJsZXMsCiAJCQkJCQkJCQkJJmludmFsaWRfY29sdW1uX2xpc3QsCiAJCQkJCQkJCQkJJmludmFs aWRfZ2VuX2NvbCkpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDE5Mzc5OTdlYTY3Li41NmM3OGI3NDQx ZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCkBAIC0xODMsNiArMTgzLDggQEAgc3RhdGljIFNpbXBsZU9pZExpc3Qg ZXh0ZW5zaW9uX2luY2x1ZGVfb2lkcyA9IHtOVUxMLCBOVUxMfTsKIHN0YXRpYyBTaW1wbGVTdHJp bmdMaXN0IGV4dGVuc2lvbl9leGNsdWRlX3BhdHRlcm5zID0ge05VTEwsIE5VTEx9Owogc3RhdGlj IFNpbXBsZU9pZExpc3QgZXh0ZW5zaW9uX2V4Y2x1ZGVfb2lkcyA9IHtOVUxMLCBOVUxMfTsKIAor c3RhdGljIFNpbXBsZVB0ckxpc3QgZXhjZXB0aW5mbyA9IHtOVUxMLCBOVUxMfTsKKwogc3RhdGlj IGNvbnN0IENhdGFsb2dJZCBuaWxDYXRhbG9nSWQgPSB7MCwgMH07CiAKIC8qIG92ZXJyaWRlIGZv ciBzdGFuZGFyZCBleHRyYV9mbG9hdF9kaWdpdHMgc2V0dGluZyAqLwpAQCAtNDUxMiw4ICs0NTE0 LDM0IEBAIGR1bXBQdWJsaWNhdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvbklu Zm8gKnB1YmluZm8pCiAJCQkJCSAgcXB1Ym5hbWUpOwogCiAJaWYgKHB1YmluZm8tPnB1YmFsbHRh YmxlcykKKwl7CisJCVNpbXBsZVB0ckxpc3RDZWxsICpjZWxsOworCiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwgVEFCTEVTIik7CiAKKwkJLyogSW5jbHVkZSBleGNlcHRp b24gdGFibGVzIGlmIHRoZSBwdWJsaWNhdGlvbiBoYXMgZXhjZXB0IHRhYmxlcyAqLworCQlmb3Ig KGNlbGwgPSBleGNlcHRpbmZvLmhlYWQ7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0KQorCQl7CisJ CQlQdWJsaWNhdGlvblJlbEluZm8gKnB1YnJpbmZvID0gKFB1YmxpY2F0aW9uUmVsSW5mbyAqKSBj ZWxsLT5wdHI7CisJCQlUYWJsZUluZm8gICp0YmluZm87CisKKwkJCWlmIChwdWJpbmZvID09IHB1 YnJpbmZvLT5wdWJsaWNhdGlvbikKKwkJCXsKKwkJCQl0YmluZm8gPSBwdWJyaW5mby0+cHVidGFi bGU7CisKKwkJCQlpZiAoZmlyc3QpCisJCQkJeworCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx dWVyeSwgIiBFWENFUFQgVEFCTEUiKTsKKwkJCQkJZmlyc3QgPSBmYWxzZTsKKwkJCQl9CisJCQkJ ZWxzZQorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwiKTsKKwkJCQlhcHBlbmRQ UUV4cEJ1ZmZlcihxdWVyeSwgIiBPTkxZICVzIiwgZm10UXVhbGlmaWVkRHVtcGFibGUodGJpbmZv KSk7CisJCQl9CisJCX0KKwl9CisKKwlmaXJzdCA9IHRydWU7CiAJYXBwZW5kUFFFeHBCdWZmZXJT dHIocXVlcnksICIgV0lUSCAocHVibGlzaCA9ICciKTsKIAlpZiAocHViaW5mby0+cHViaW5zZXJ0 KQogCXsKQEAgLTQ2NzksNiArNDcwNyw3IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUg KmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJaW50CQkJaV9wcnJl bGlkOwogCWludAkJCWlfcHJyZWxxdWFsOwogCWludAkJCWlfcHJhdHRyczsKKwlpbnQJCQlpX3By ZXhjZXB0OwogCWludAkJCWksCiAJCQkJaiwKIAkJCQludHVwczsKQEAgLTQ2OTAsOCArNDcxOSwx NyBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5m b1tdLCBpbnQgbnVtVGFibGVzKQogCiAJLyogQ29sbGVjdCBhbGwgcHVibGljYXRpb24gbWVtYmVy c2hpcCBpbmZvLiAqLwogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE1MDAwMCkKKwl7CisJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lkLCBv aWQsIHBycHViaWQsIHBycmVsaWQsXG4iKTsKKworCQkvKiBGSVhNRTogMTgwMDAwIHNob3VsZCBi ZSBjaGFuZ2VkIHRvIDE5MDAwMCBsYXRlciBmb3IgUEcxOS4gKi8KKwkJaWYgKGZvdXQtPnJlbW90 ZVZlcnNpb24gPj0gMTgwMDAwKQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgcHJl eGNlcHQsXG4iKTsKKwkJZWxzZQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgZmFs c2UgQVMgcHJleGNlcHQsXG4iKTsKKwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJ CQkJCQkgIlNFTEVDVCB0YWJsZW9pZCwgb2lkLCBwcnB1YmlkLCBwcnJlbGlkLCAiCiAJCQkJCQkJ ICJwZ19jYXRhbG9nLnBnX2dldF9leHByKHBycXVhbCwgcHJyZWxpZCkgQVMgcHJyZWxxdWFsLCAi CiAJCQkJCQkJICIoQ0FTRVxuIgogCQkJCQkJCSAiICBXSEVOIHByLnByYXR0cnMgSVMgTk9UIE5V TEwgVEhFTlxuIgpAQCAtNDcwMiw2ICs0NzQwLDcgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJj aGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJCQkJCQkg IiAgICAgIFdIRVJFIGF0dHJlbGlkID0gcHIucHJyZWxpZCBBTkQgYXR0bnVtID0gcHJhdHRyc1tz XSlcbiIKIAkJCQkJCQkgIiAgRUxTRSBOVUxMIEVORCkgcHJhdHRycyAiCiAJCQkJCQkJICJGUk9N IHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIik7CisJfQogCWVsc2UKIAkJYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgcHJw dWJpZCwgcHJyZWxpZCwgIgpAQCAtNDcxNyw2ICs0NzU2LDcgQEAgZ2V0UHVibGljYXRpb25UYWJs ZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAlp X3BycmVsaWQgPSBQUWZudW1iZXIocmVzLCAicHJyZWxpZCIpOwogCWlfcHJyZWxxdWFsID0gUFFm bnVtYmVyKHJlcywgInBycmVscXVhbCIpOwogCWlfcHJhdHRycyA9IFBRZm51bWJlcihyZXMsICJw cmF0dHJzIik7CisJaV9wcmV4Y2VwdCA9IFBRZm51bWJlcihyZXMsICJwcmV4Y2VwdCIpOwogCiAJ LyogdGhpcyBhbGxvY2F0aW9uIG1heSBiZSBtb3JlIHRoYW4gd2UgbmVlZCAqLwogCXB1YnJpbmZv ID0gcGdfbWFsbG9jKG50dXBzICogc2l6ZW9mKFB1YmxpY2F0aW9uUmVsSW5mbykpOwpAQCAtNDcy OCw2ICs0NzY4LDcgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJ bmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJT2lkCQkJcHJyZWxpZCA9IGF0b29pZChQ UWdldHZhbHVlKHJlcywgaSwgaV9wcnJlbGlkKSk7CiAJCVB1YmxpY2F0aW9uSW5mbyAqcHViaW5m bzsKIAkJVGFibGVJbmZvICAqdGJpbmZvOworCQljaGFyCSAgICpwcmV4Y2VwdCA9IHBnX3N0cmR1 cChQUWdldHZhbHVlKHJlcywgaSwgaV9wcmV4Y2VwdCkpOwogCiAJCS8qCiAJCSAqIElnbm9yZSBh bnkgZW50cmllcyBmb3Igd2hpY2ggd2UgYXJlbid0IGludGVyZXN0ZWQgaW4gZWl0aGVyIHRoZQpA QCAtNDc0MSw3ICs0NzgyLDExIEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQs IFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQljb250aW51ZTsKIAogCQkv KiBPSywgbWFrZSBhIER1bXBhYmxlT2JqZWN0IGZvciB0aGlzIHJlbGF0aW9uc2hpcCAqLwotCQlw dWJyaW5mb1tqXS5kb2JqLm9ialR5cGUgPSBET19QVUJMSUNBVElPTl9SRUw7CisJCWlmIChzdHJj bXAocHJleGNlcHQsICJmIikgPT0gMCkKKwkJCXB1YnJpbmZvW2pdLmRvYmoub2JqVHlwZSA9IERP X1BVQkxJQ0FUSU9OX1JFTDsKKwkJZWxzZQorCQkJcHVicmluZm9bal0uZG9iai5vYmpUeXBlID0g RE9fUFVCTElDQVRJT05fRVhDRVBUX1JFTDsKKwogCQlwdWJyaW5mb1tqXS5kb2JqLmNhdElkLnRh Ymxlb2lkID0KIAkJCWF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV90YWJsZW9pZCkpOwogCQlw dWJyaW5mb1tqXS5kb2JqLmNhdElkLm9pZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9v aWQpKTsKQEAgLTQ3ODIsNiArNDgyNyw5IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUg KmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCS8qIERlY2lkZSB3 aGV0aGVyIHdlIHdhbnQgdG8gZHVtcCBpdCAqLwogCQlzZWxlY3REdW1wYWJsZVB1YmxpY2F0aW9u T2JqZWN0KCYocHVicmluZm9bal0uZG9iaiksIGZvdXQpOwogCisJCWlmIChzdHJjbXAocHJleGNl cHQsICJ0IikgPT0gMCkKKwkJCXNpbXBsZV9wdHJfbGlzdF9hcHBlbmQoJmV4Y2VwdGluZm8sICZw dWJyaW5mb1tqXSk7CisKIAkJaisrOwogCX0KIApAQCAtMTE1NjIsNiArMTE2MTAsOSBAQCBkdW1w RHVtcGFibGVPYmplY3QoQXJjaGl2ZSAqZm91dCwgRHVtcGFibGVPYmplY3QgKmRvYmopCiAJCWNh c2UgRE9fUFVCTElDQVRJT046CiAJCQlkdW1wUHVibGljYXRpb24oZm91dCwgKGNvbnN0IFB1Ymxp Y2F0aW9uSW5mbyAqKSBkb2JqKTsKIAkJCWJyZWFrOworCQljYXNlIERPX1BVQkxJQ0FUSU9OX0VY Q0VQVF9SRUw6CisJCQkvKiB3aWxsIGJlIGR1bXBlZCBpbiBkdW1wUHVibGljYXRpb24gKi8KKwkJ CWJyZWFrOwogCQljYXNlIERPX1BVQkxJQ0FUSU9OX1JFTDoKIAkJCWR1bXBQdWJsaWNhdGlvblRh YmxlKGZvdXQsIChjb25zdCBQdWJsaWNhdGlvblJlbEluZm8gKikgZG9iaik7CiAJCQlicmVhazsK QEAgLTE5ODUxLDYgKzE5OTAyLDcgQEAgYWRkQm91bmRhcnlEZXBlbmRlbmNpZXMoRHVtcGFibGVP YmplY3QgKipkb2JqcywgaW50IG51bU9ianMsCiAJCQljYXNlIERPX0RFRkFVTFRfQUNMOgogCQkJ Y2FzZSBET19QT0xJQ1k6CiAJCQljYXNlIERPX1BVQkxJQ0FUSU9OOgorCQkJY2FzZSBET19QVUJM SUNBVElPTl9FWENFUFRfUkVMOgogCQkJY2FzZSBET19QVUJMSUNBVElPTl9SRUw6CiAJCQljYXNl IERPX1BVQkxJQ0FUSU9OX1RBQkxFX0lOX1NDSEVNQToKIAkJCWNhc2UgRE9fU1VCU0NSSVBUSU9O OgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmgKaW5kZXggMzllZWYxZDY2MTcuLmE5Y2JlZDhjOWNlIDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgK QEAgLTgxLDYgKzgxLDcgQEAgdHlwZWRlZiBlbnVtCiAJRE9fUkVGUkVTSF9NQVRWSUVXLAogCURP X1BPTElDWSwKIAlET19QVUJMSUNBVElPTiwKKwlET19QVUJMSUNBVElPTl9FWENFUFRfUkVMLAog CURPX1BVQkxJQ0FUSU9OX1JFTCwKIAlET19QVUJMSUNBVElPTl9UQUJMRV9JTl9TQ0hFTUEsCiAJ RE9fUkVMX1NUQVRTLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5j IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCmluZGV4IDBiMDk3Nzc4OGYxLi41NmQ2 NzQwYjllYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCisrKyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwpAQCAtOTIsNiArOTIsNyBAQCBlbnVtIGRi T2JqZWN0VHlwZVByaW9yaXRpZXMKIAlQUklPX0ZLX0NPTlNUUkFJTlQsCiAJUFJJT19QT0xJQ1ks CiAJUFJJT19QVUJMSUNBVElPTiwKKwlQUklPX1BVQkxJQ0FUSU9OX0VYQ0VQVF9SRUwsCiAJUFJJ T19QVUJMSUNBVElPTl9SRUwsCiAJUFJJT19QVUJMSUNBVElPTl9UQUJMRV9JTl9TQ0hFTUEsCiAJ UFJJT19TVUJTQ1JJUFRJT04sCkBAIC0xNDcsNiArMTQ4LDcgQEAgc3RhdGljIGNvbnN0IGludCBk Yk9iamVjdFR5cGVQcmlvcml0eVtdID0KIAlbRE9fUkVGUkVTSF9NQVRWSUVXXSA9IFBSSU9fUkVG UkVTSF9NQVRWSUVXLAogCVtET19QT0xJQ1ldID0gUFJJT19QT0xJQ1ksCiAJW0RPX1BVQkxJQ0FU SU9OXSA9IFBSSU9fUFVCTElDQVRJT04sCisJW0RPX1BVQkxJQ0FUSU9OX0VYQ0VQVF9SRUxdID0g UFJJT19QVUJMSUNBVElPTl9FWENFUFRfUkVMLAogCVtET19QVUJMSUNBVElPTl9SRUxdID0gUFJJ T19QVUJMSUNBVElPTl9SRUwsCiAJW0RPX1BVQkxJQ0FUSU9OX1RBQkxFX0lOX1NDSEVNQV0gPSBQ UklPX1BVQkxJQ0FUSU9OX1RBQkxFX0lOX1NDSEVNQSwKIAlbRE9fUkVMX1NUQVRTXSA9IFBSSU9f U1RBVElTVElDU19EQVRBX0RBVEEsCkBAIC0xNDk4LDYgKzE1MDAsMTEgQEAgZGVzY3JpYmVEdW1w YWJsZU9iamVjdChEdW1wYWJsZU9iamVjdCAqb2JqLCBjaGFyICpidWYsIGludCBidWZzaXplKQog CQkJCQkgIlBVQkxJQ0FUSU9OIChJRCAlZCBPSUQgJXUpIiwKIAkJCQkJIG9iai0+ZHVtcElkLCBv YmotPmNhdElkLm9pZCk7CiAJCQlyZXR1cm47CisJCWNhc2UgRE9fUFVCTElDQVRJT05fRVhDRVBU X1JFTDoKKwkJCXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKKwkJCQkJICJQVUJMSUNBVElPTiBFWENF UFQgVEFCTEUgKElEICVkIE9JRCAldSkiLAorCQkJCQkgb2JqLT5kdW1wSWQsIG9iai0+Y2F0SWQu b2lkKTsKKwkJCXJldHVybjsKIAkJY2FzZSBET19QVUJMSUNBVElPTl9SRUw6CiAJCQlzbnByaW50 ZihidWYsIGJ1ZnNpemUsCiAJCQkJCSAiUFVCTElDQVRJT04gVEFCTEUgKElEICVkIE9JRCAldSki LApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmlu L3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCBlMWNmYTk5ODc0ZS4uZWFiYzc4ZWUwOWYg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9i aW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0zMzAzLDYgKzMzMDMsMjYgQEAgbXkgJXRl c3RzID0gKAogCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwg fSwKIAl9LAogCisJJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI2JyA9PiB7CisJCWNyZWF0ZV9vcmRl ciA9PiA1MCwKKwkJY3JlYXRlX3NxbCA9PgorCQkgICdDUkVBVEUgUFVCTElDQVRJT04gcHViNiBG T1IgQUxMIFRBQkxFUyBFWENFUFQgZHVtcF90ZXN0LnRlc3RfdGFibGU7JywKKwkJcmVnZXhwID0+ IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjYgRk9SIEFMTCBUQUJMRVMgRVhDRVBU IFRBQkxFIE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFibGUgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQs IHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVs bF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKKwknQ1JFQVRFIFBVQkxJ Q0FUSU9OIHB1YjcnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUwLAorCQljcmVhdGVfc3FsID0+ CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI3IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJM RSBkdW1wX3Rlc3QudGVzdF90YWJsZSwgZHVtcF90ZXN0LnRlc3Rfc2Vjb25kX3RhYmxlOycsCisJ CXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWI3IEZPUiBBTEwgVEFC TEVTIEVYQ0VQVCBUQUJMRSBPTkxZIGR1bXBfdGVzdC50ZXN0X3RhYmxlLCBPTkxZIGR1bXBfdGVz dC50ZXN0X3NlY29uZF90YWJsZSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxl dGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rp b25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKwogCSdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEn ID0+IHsKIAkJY3JlYXRlX29yZGVyID0+IDUwLAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgU1VC U0NSSVBUSU9OIHN1YjEKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggZGQyNWQyZmU3YjguLjEwYjVmN2YyOWNiIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3Jp YmUuYwpAQCAtMzAzOSwxNyArMzAzOSwzNiBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25z dCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCQkJCQkgICIgICAgICAgICAgV0hFUkUgYXR0cmVsaWQg PSBwci5wcnJlbGlkIEFORCBhdHRudW0gPSBwcmF0dHJzW3NdKVxuIgogCQkJCQkJCQkgICIgICAg ICAgIEVMU0UgTlVMTCBFTkQpICIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1Ymxp Y2F0aW9uIHBcbiIKLQkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRp b25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgotCQkJCQkJCQkgICIgICAgIEpPSU4g cGdfY2F0YWxvZy5wZ19jbGFzcyBjIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgotCQkJCQkJCQkg ICJXSEVSRSBwci5wcnJlbGlkID0gJyVzJ1xuIgorCQkJCQkJCQkgICIJCUpPSU4gcGdfY2F0YWxv Zy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQgPSBwci5wcnB1YmlkXG4iCisJCQkJCQkJ CSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4i CisJCQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMnXG4iLAorCQkJCQkJCQkgIG9pZCwg b2lkLCBvaWQpOworCisJCQkJLyogRklYTUU6IDE4MDAwMCBzaG91bGQgYmUgY2hhbmdlZCB0byAx OTAwMDAgbGF0ZXIgZm9yIFBHMTkuICovCisJCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTgwMDAw KQorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiIEFORCBOT1QgcHIucHJleGNlcHRc biIpOworCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkJICAiVU5JT05cbiIK IAkJCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKLQkJCQkJCQkJICAiICAgICAsIE5VTExcbiIK LQkJCQkJCQkJICAiICAgICAsIE5VTExcbiIKKwkJCQkJCQkJICAiCQksIE5VTExcbiIKKwkJCQkJ CQkJICAiCQksIE5VTExcbiIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0 aW9uIHBcbiIKLQkJCQkJCQkJICAiV0hFUkUgcC5wdWJhbGx0YWJsZXMgQU5EIHBnX2NhdGFsb2cu cGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoJyVzJylcbiIKLQkJCQkJCQkJICAiT1JERVIgQlkg MTsiLAotCQkJCQkJCQkgIG9pZCwgb2lkLCBvaWQsIG9pZCk7CisJCQkJCQkJCSAgIldIRVJFIHAu cHViYWxsdGFibGVzIEFORCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCcl cycpXG4iLAorCQkJCQkJCQkgIG9pZCk7CisKKwkJCQkvKiBGSVhNRTogMTgwMDAwIHNob3VsZCBi ZSBjaGFuZ2VkIHRvIDE5MDAwMCBsYXRlciBmb3IgUEcxOS4gKi8KKwkJCQlpZiAocHNldC5zdmVy c2lvbiA+PSAxODAwMDApCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCQkg ICIgICAgIEFORCBOT1QgRVhJU1RTIChcbiIKKwkJCQkJCQkJCSAgIgkJU0VMRUNUIDFcbiIKKwkJ CQkJCQkJCSAgIgkJRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwclxuIgorCQkJ CQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgcGNcbiIKKwkJCQkJCQkJCSAgIgkJ T04gcHIucHJyZWxpZCA9IHBjLm9pZFxuIgorCQkJCQkJCQkJICAiCQlXSEVSRSBwci5wcnJlbGlk ID0gJyVzJyBBTkQgcHIucHJwdWJpZCA9IHAub2lkKVxuIiwKKwkJCQkJCQkJCSAgb2lkKTsKKwor CQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJPUkRFUiBCWSAxOyIpOwogCQkJfQogCQkJ ZWxzZQogCQkJewpAQCAtNjY5Myw4ICs2NzEyLDEzIEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNv bnN0IGNoYXIgKnBhdHRlcm4pCiAJCQkJCQkJICAiICAgICBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0 aW9uX3JlbCBwclxuIgogCQkJCQkJCSAgIldIRVJFIGMucmVsbmFtZXNwYWNlID0gbi5vaWRcbiIK IAkJCQkJCQkgICIgIEFORCBjLm9pZCA9IHByLnBycmVsaWRcbiIKLQkJCQkJCQkgICIgIEFORCBw ci5wcnB1YmlkID0gJyVzJ1xuIgotCQkJCQkJCSAgIk9SREVSIEJZIDEsMiIsIHB1YmlkKTsKKwkJ CQkJCQkgICIgIEFORCBwci5wcnB1YmlkID0gJyVzJ1xuIiwgcHViaWQpOworCisJCQkvKiBGSVhN RTogMTgwMDAwIHNob3VsZCBiZSBjaGFuZ2VkIHRvIDE5MDAwMCBsYXRlciBmb3IgUEcxOS4gKi8K KwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE4MDAwMCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigm YnVmLCAiICBBTkQgTk9UIHByLnByZXhjZXB0XG4iKTsKKworCQkJYXBwZW5kUFFFeHBCdWZmZXIo JmJ1ZiwgIk9SREVSIEJZIDEsMiIpOwogCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVz YygmYnVmLCBfKCJUYWJsZXM6IiksIGZhbHNlLCAmY29udCkpCiAJCQkJZ290byBlcnJvcl9yZXR1 cm47CiAKQEAgLTY3MTIsNiArNjczNiwyNCBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBj aGFyICpwYXR0ZXJuKQogCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCX0KIAkJfQorCQllbHNl CisJCXsKKwkJCS8qIEZJWE1FOiAxODAwMDAgc2hvdWxkIGJlIGNoYW5nZWQgdG8gMTkwMDAwIGxh dGVyIGZvciBQRzE5LiAqLworCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTgwMDAwKQorCQkJewor CQkJCS8qIEdldCB0aGUgZXhjbHVkZWQgdGFibGVzIGZvciB0aGUgc3BlY2lmaWVkIHB1YmxpY2F0 aW9uICovCisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJICAiU0VMRUNUIGNv bmNhdChjLnJlbG5hbWVzcGFjZTo6cmVnbmFtZXNwYWNlLCAnLicsIGMucmVsbmFtZSlcbiIKKwkJ CQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNcbiIKKwkJCQkJCQkJICAiICAgICBK T0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIGMub2lkID0gcHIucHJyZWxp ZFxuIgorCQkJCQkJCQkgICJXSEVSRSBwci5wcnB1YmlkID0gJyVzJ1xuIgorCQkJCQkJCQkgICIg IEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJCQkgICJPUkRFUiBCWSAxIiwgcHViaWQpOworCQkJ CWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1ZiwgXygiRXhjZXB0IHRhYmxlczoi KSwKKwkJCQkJCQkJCQkJCXRydWUsICZjb250KSkKKwkJCQkJZ290byBlcnJvcl9yZXR1cm47CisJ CQl9CisJCX0KIAogCQlwcmludFRhYmxlKCZjb250LCBwc2V0LnF1ZXJ5Rm91dCwgZmFsc2UsIHBz ZXQubG9nZmlsZSk7CiAJCXByaW50VGFibGVDbGVhbnVwKCZjb250KTsKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu aW4uYwppbmRleCA5NGVkM2U4YTc3Ni4uMGYzYzczZGEwMmYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMKQEAgLTIyNDUsMTEgKzIyNDUsMTYgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRl cm5faWQsCiAJCUNPTVBMRVRFX1dJVEgoIkFERCIsICJEUk9QIiwgIk9XTkVSIFRPIiwgIlJFTkFN RSBUTyIsICJSRVNFVCIsICJTRVQiKTsKIAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gQURE ICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwg IkFERCIpKQotCQlDT01QTEVURV9XSVRIKCJUQUJMRVMgSU4gU0NIRU1BIiwgIlRBQkxFIik7CisJ CUNPTVBMRVRFX1dJVEgoIkFMTCBUQUJMRVMiLCAiVEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRSIp OworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJB REQiLCAiQUxMIiwgIlRBQkxFUyIpKQorCQlDT01QTEVURV9XSVRIKCJFWENFUFQgVEFCTEUiKTsK IAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQURE fFNFVCIsICJUQUJMRSIpKQogCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3Jf bGlzdF9vZl90YWJsZXMpOwotCWVsc2UgaWYgKEhlYWRNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiQUREfFNFVCIsICJUQUJMRSIpICYmCi0JCQkgZW5kc193aXRoKHBy ZXZfd2QsICcsJykpCisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBN YXRjaEFueSwgIkFERCIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIpKQorCQlD T01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOworCWVs c2UgaWYgKEhlYWRNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQURE fFNFVCIsICJUQUJMRSIpICYmIGVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9X SVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOworCWVsc2UgaWYgKEhl YWRNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIiwgIkFMTCIs ICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRBQkxFIikgJiYgZW5kc193aXRoKHByZXZfd2QsICcsJykp CiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcyk7 CiAKIAkvKgpAQCAtMzUzNiw3ICszNTQxLDcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBh dHRlcm5faWQsCiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0 Y2hBbnksICJGT1IiLCAiQUxMIikpCiAJCUNPTVBMRVRFX1dJVEgoIlRBQkxFUyIpOwogCWVsc2Ug aWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFM TCIsICJUQUJMRVMiKSkKLQkJQ09NUExFVEVfV0lUSCgiV0lUSCAoIik7CisJCUNPTVBMRVRFX1dJ VEgoIkVYQ0VQVCBUQUJMRSIsICJXSVRIICgiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUi LCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiKSkKIAkJQ09NUExFVEVf V0lUSCgiSU4gU0NIRU1BIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FU SU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEUiLCBNYXRjaEFueSkgJiYgIWVuZHNfd2l0aChw cmV2X3dkLCAnLCcpKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCmluZGV4IDQ4Yzdk MWE4NjE1Li4zM2I3NzE5OTBiZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApA QCAtMTM5LDExICsxMzksMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25SZWxJbmZvCiAJ UmVsYXRpb24JcmVsYXRpb247CiAJTm9kZQkgICAqd2hlcmVDbGF1c2U7CiAJTGlzdAkgICAqY29s dW1uczsKKwlib29sCQlleGNlcHQ7CiB9IFB1YmxpY2F0aW9uUmVsSW5mbzsKIAogZXh0ZXJuIFB1 YmxpY2F0aW9uICpHZXRQdWJsaWNhdGlvbihPaWQgcHViaWQpOwogZXh0ZXJuIFB1YmxpY2F0aW9u ICpHZXRQdWJsaWNhdGlvbkJ5TmFtZShjb25zdCBjaGFyICpwdWJuYW1lLCBib29sIG1pc3Npbmdf b2spOwotZXh0ZXJuIExpc3QgKkdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCk7Citl eHRlcm4gTGlzdCAqR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkLCBib29sIGV4Y2Vw dF9mbGFnKTsKIAogLyotLS0tLS0tLS0KICAqIEV4cGVjdGVkIHZhbHVlcyBmb3IgcHViX3BhcnRv cHQgcGFyYW1ldGVyIG9mIEdldFJlbGF0aW9uUHVibGljYXRpb25zKCksCkBAIC0xNjMsNyArMTY0 LDcgQEAgdHlwZWRlZiBlbnVtIFB1YmxpY2F0aW9uUGFydE9wdAogCiBleHRlcm4gTGlzdCAqR2V0 UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3Bh cnRvcHQpOwogZXh0ZXJuIExpc3QgKkdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKTsKLWV4 dGVybiBMaXN0ICpHZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucyhib29sIHB1YnZpYXJv b3QpOworZXh0ZXJuIExpc3QgKkdldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBw dWJpZCwgYm9vbCBwdWJ2aWFyb290KTsKIGV4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvblNjaGVt YXMoT2lkIHB1YmlkKTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvbnMoT2lkIHNj aGVtYWlkKTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQg c2NoZW1haWQsCkBAIC0xNzQsNyArMTc1LDcgQEAgZXh0ZXJuIExpc3QgKkdldFB1YlBhcnRpdGlv bk9wdGlvblJlbGF0aW9ucyhMaXN0ICpyZXN1bHQsCiAJCQkJCQkJCQkJCVB1YmxpY2F0aW9uUGFy dE9wdCBwdWJfcGFydG9wdCwKIAkJCQkJCQkJCQkJT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJR2V0 VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMs Ci0JCQkJCQkJCQkJCWludCAqYW5jZXN0b3JfbGV2ZWwpOworCQkJCQkJCQkJCQlpbnQgKmFuY2Vz dG9yX2xldmVsLCBib29sIHB1YmFsbHRhYmxlcyk7CiAKIGV4dGVybiBib29sIGlzX3B1Ymxpc2hh YmxlX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCk7CiBleHRlcm4gYm9vbCBpc19zY2hlbWFfcHVibGlj YXRpb24oT2lkIHB1YmlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVi bGljYXRpb25fcmVsLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5o CmluZGV4IDkyY2MzNmRmZGY2Li5lN2Q3ZjNiYTg1YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uX3JlbC5oCkBAIC0zMSw2ICszMSw3IEBAIENBVEFMT0cocGdfcHVibGljYXRp b25fcmVsLDYxMDYsUHVibGljYXRpb25SZWxSZWxhdGlvbklkKQogCU9pZAkJCW9pZDsJCQkvKiBv aWQgKi8KIAlPaWQJCQlwcnB1YmlkIEJLSV9MT09LVVAocGdfcHVibGljYXRpb24pOyAvKiBPaWQg b2YgdGhlIHB1YmxpY2F0aW9uICovCiAJT2lkCQkJcHJyZWxpZCBCS0lfTE9PS1VQKHBnX2NsYXNz KTsJLyogT2lkIG9mIHRoZSByZWxhdGlvbiAqLworCWJvb2wJCXByZXhjZXB0IEJLSV9ERUZBVUxU KGYpOwkvKiBleGNsdWRlIHRoZSByZWxhdGlvbiAqLwogCiAjaWZkZWYJQ0FUQUxPR19WQVJMRU4J CQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAlwZ19ub2RlX3RyZWUg cHJxdWFsOwkJLyogcXVhbGlmaWNhdGlvbnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRp b25jbWRzLmgKaW5kZXggZjkwY2YxZWY4OTYuLjBhZDVkMjg3NTRkIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21t YW5kcy9wdWJsaWNhdGlvbmNtZHMuaApAQCAtMzIsMTAgKzMyLDExIEBAIGV4dGVybiBPYmplY3RB ZGRyZXNzIEFsdGVyUHVibGljYXRpb25Pd25lcihjb25zdCBjaGFyICpuYW1lLCBPaWQgbmV3T3du ZXJJZCk7CiBleHRlcm4gdm9pZCBBbHRlclB1YmxpY2F0aW9uT3duZXJfb2lkKE9pZCBwdWJpZCwg T2lkIG5ld093bmVySWQpOwogZXh0ZXJuIHZvaWQgSW52YWxpZGF0ZVB1YmxpY2F0aW9uUmVscyhM aXN0ICpyZWxpZHMpOwogZXh0ZXJuIGJvb2wgcHViX3JmX2NvbnRhaW5zX2ludmFsaWRfY29sdW1u KE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sCi0JCQkJCQkJCQkJICAgTGlzdCAqYW5jZXN0 b3JzLCBib29sIHB1YnZpYXJvb3QpOworCQkJCQkJCQkJCSAgIExpc3QgKmFuY2VzdG9ycywgYm9v bCBwdWJ2aWFyb290LAorCQkJCQkJCQkJCSAgIGJvb2wgcHViYWxsdGFibGVzKTsKIGV4dGVybiBi b29sIHB1Yl9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0 aW9uLAogCQkJCQkJCQkJCUxpc3QgKmFuY2VzdG9ycywgYm9vbCBwdWJ2aWFyb290LAotCQkJCQkJ CQkJCWNoYXIgcHViZ2VuY29sc190eXBlLAorCQkJCQkJCQkJCWNoYXIgcHViZ2VuY29sc190eXBl LCBib29sIHB1YmFsbHRhYmxlcywKIAkJCQkJCQkJCQlib29sICppbnZhbGlkX2NvbHVtbl9saXN0 LAogCQkJCQkJCQkJCWJvb2wgKmludmFsaWRfZ2VuX2NvbCk7CiBleHRlcm4gdm9pZCBJbnZhbGlk YXRlUHViUmVsU3luY0NhY2hlKE9pZCBwdWJpZCwgYm9vbCBwdWJhbGx0YWJsZXMpOwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCmluZGV4IDkwNWI1OGUwMjc5Li5kOTAxY2IwZmZhNyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaApAQCAtNDIzNSw2ICs0MjM1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRp b25UYWJsZQogCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8gYmUgcHVibGlz aGVkICovCiAJTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25zICovCiAJTGlz dAkgICAqY29sdW1uczsJCS8qIExpc3Qgb2YgY29sdW1ucyBpbiBhIHB1YmxpY2F0aW9uIHRhYmxl ICovCisJYm9vbAkJZXhjZXB0OwkJCS8qIGV4Y2x1ZGUgdGhlIHJlbGF0aW9uICovCiB9IFB1Ymxp Y2F0aW9uVGFibGU7CiAKIC8qCkBAIC00MjQzLDYgKzQyNDQsNyBAQCB0eXBlZGVmIHN0cnVjdCBQ dWJsaWNhdGlvblRhYmxlCiB0eXBlZGVmIGVudW0gUHVibGljYXRpb25PYmpTcGVjVHlwZQogewog CVBVQkxJQ0FUSU9OT0JKX1RBQkxFLAkJLyogQSB0YWJsZSAqLworCVBVQkxJQ0FUSU9OT0JKX0VY Q0VQVF9UQUJMRSwJLyogQSB0YWJsZSB0byBiZSBleGNsdWRlZCAqLwogCVBVQkxJQ0FUSU9OT0JK X1RBQkxFU19JTl9TQ0hFTUEsCS8qIEFsbCB0YWJsZXMgaW4gc2NoZW1hICovCiAJUFVCTElDQVRJ T05PQkpfVEFCTEVTX0lOX0NVUl9TQ0hFTUEsCS8qIEFsbCB0YWJsZXMgaW4gZmlyc3QgZWxlbWVu dCBvZgogCQkJCQkJCQkJCQkgKiBzZWFyY2hfcGF0aCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCA3ODgzNjhkMTVjYS4uMGJmNDU4MmRkMTcgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC0yMDksMTMgKzIwOSwz NyBAQCBOb3QtbnVsbCBjb25zdHJhaW50czoKICByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0 ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgbm9u ZSAgICAgICAgICAgICAgfCBmCiAoMSByb3cpCiAKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0g J0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0 YWJsZSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxLCB0ZXN0cHViX3Ri bDI7CistLSBzcGVjaWZ5IEVYQ0VQVCB3aXRob3V0IFRBQkxFCitDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCB0 ZXN0cHViX3RibDE7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworXGRScCsgdGVzdHB1Yl9m b3JhbGx0YWJsZXNfZXhjZXB0dGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6Cisg ICAgInB1YmxpYy50ZXN0cHViX3RibDEiCisgICAgInB1YmxpYy50ZXN0cHViX3RibDIiCisKK1xk UnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFi bGUxCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJv b3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZgorRXhj ZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKKwogRFJPUCBUQUJMRSB0ZXN0 cHViX3RibDI7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHVi X2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYTsKK0RS T1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRl c3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hLCB0ZXN0cHViX2ZvcmFsbHRh Ymxlc19leGNlcHR0YWJsZSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxOwogQ1JF QVRFIFRBQkxFIHRlc3RwdWJfdGJsMyAoYSBpbnQpOwogQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJs M2EgKGIgdGV4dCkgSU5IRVJJVFMgKHRlc3RwdWJfdGJsMyk7CiBTRVQgY2xpZW50X21pbl9tZXNz YWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjMgRk9SIFRBQkxFIHRl c3RwdWJfdGJsMzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNCBGT1IgVEFCTEUgT05MWSB0 ZXN0cHViX3RibDM7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjUgRk9SIEFMTCBUQUJMRVMg RVhDRVBUIFRBQkxFIHRlc3RwdWJfdGJsMzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBG T1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgT05MWSB0ZXN0cHViX3RibDM7CiBSRVNFVCBjbGll bnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjMKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMwpAQCAtMjM0LDggKzI1 OCwyNSBAQCBUYWJsZXM6CiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3RibDMiCiAKK1xk UnArIHRlc3RwdWI1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJh dGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAg ICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90Ymwz IgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwzYSIKKworXGRScCsgdGVzdHB1YjYKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi NgorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK0V4Y2Vw dCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibDMiCisKIERST1AgVEFCTEUgdGVzdHB1 Yl90YmwzLCB0ZXN0cHViX3RibDNhOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMywgdGVzdHB1 YjQ7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNCwgdGVzdHB1YjUsIHRlc3Rw dWI2OwogLS0gVGVzdHMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcwogU0VUIGNsaWVudF9taW5fbWVz c2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ycGFydGVkOwpA QCAtMTkzMiw5ICsxOTczLDE1IEBAIERST1AgVEFCTEUgZ2VuY29sczsKIC0tIFRlc3RzIGZvciBB TFRFUiBQVUJMSUNBVElPTiAuLi4gUkVTRVQKIENSRUFURSBTQ0hFTUEgcHViX3NjaDE7CiBDUkVB VEUgVEFCTEUgcHViX3NjaDEudGJsMSAoYSBpbnQpOworQ1JFQVRFIFRBQkxFIHB1Yl9zY2gxLnRi bDIgKGEgaW50KTsKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEZPUiBBTEwgVEFCTEVTOwogUkVTRVQgY2xpZW50X21p bl9tZXNzYWdlczsKKy0tIENhbid0IGFkZCBFWENFUFQgVEFCTEUgdG8gJ0ZPUiBBTEwgVEFCTEVT JyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgQUxMIFRB QkxFUyBFWENFUFQgVEFCTEUgcHViX3NjaDEudGJsMTsKK0VSUk9SOiAgYWRkaW5nIEFMTCBUQUJM RVMgcmVxdWlyZXMgdGhlIHB1YmxpY2F0aW9uIHRvIGhhdmUgZGVmYXVsdCBwdWJsaWNhdGlvbiBw YXJhbWV0ZXIgdmFsdWVzCitERVRBSUw6ICBBTEwgVEFCTEVTIGZsYWcgc2hvdWxkIG5vdCBiZSBz ZXQgYW5kIG5vIHRhYmxlcy9zY2hlbWFzIHNob3VsZCBiZSBhc3NvY2lhdGVkLgorSElOVDogIFVz ZSBBTFRFUiBQVUJMSUNBVElPTiAuLi4gUkVTRVQgdG8gcmVzZXQgdGhlIHB1YmxpY2F0aW9uCiAt LSBWZXJpZnkgdGhhdCAnQUxMIFRBQkxFUycgZmxhZyBpcyByZXNldAogXGRScCsgdGVzdHB1Yl9y ZXNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWJfcmVzZXQKQEAgLTE5NTEsNyArMTk5OCwyNCBAQCBBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX3Jlc2V0IFJFU0VUOwogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAg ICAgICAgICAgICB8IGYKICgxIHJvdykKIAorLS0gU2hvdWxkIHdvcmsgbm93IGFmdGVyIHJlc2V0 dGluZyB0aGUgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQURE IEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHB1Yl9zY2gxLnRibDEsIHB1Yl9zY2gxLnRibDI7Citc ZFJwKyB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9yZXNldAorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IHQgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBub25lICAgICAgICAgICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1Yl9zY2gxLnRi bDEiCisgICAgInB1Yl9zY2gxLnRibDIiCisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVz ZXQgUkVTRVQ7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFERCBUQUJMRSBwdWJf c2NoMS50YmwxOworLS0gQ2FuJ3QgYWRkIEVYQ0VQVCBUQUJMRSB0byAnRk9SIFRBQkxFJyBwdWJs aWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgQUxMIFRBQkxFUyBF WENFUFQgVEFCTEUgcHViX3NjaDEudGJsMTsKK0VSUk9SOiAgYWRkaW5nIEFMTCBUQUJMRVMgcmVx dWlyZXMgdGhlIHB1YmxpY2F0aW9uIHRvIGhhdmUgZGVmYXVsdCBwdWJsaWNhdGlvbiBwYXJhbWV0 ZXIgdmFsdWVzCitERVRBSUw6ICBBTEwgVEFCTEVTIGZsYWcgc2hvdWxkIG5vdCBiZSBzZXQgYW5k IG5vIHRhYmxlcy9zY2hlbWFzIHNob3VsZCBiZSBhc3NvY2lhdGVkLgorSElOVDogIFVzZSBBTFRF UiBQVUJMSUNBVElPTiAuLi4gUkVTRVQgdG8gcmVzZXQgdGhlIHB1YmxpY2F0aW9uCiAtLSBWZXJp ZnkgdGhhdCB0YWJsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwdWJsaWNhdGlvbiBhcmUgZHJvcHBl ZCBhZnRlciBSRVNFVAogXGRScCsgdGVzdHB1Yl9yZXNldAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVzZXQKQEAgLTE5NzAs NiArMjAzNCwxMSBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOwogKDEg cm93KQogCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFERCBUQUJMRVMgSU4gU0NI RU1BIHB1YmxpYzsKKy0tIENhbid0IGFkZCBFWENFUFQgVEFCTEUgdG8gJ0ZPUiBBTEwgVEFCTEVT IElOIFNDSEVNQScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQg QUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHB1Yl9zY2gxLnRibDE7CitFUlJPUjogIGFkZGlu ZyBBTEwgVEFCTEVTIHJlcXVpcmVzIHRoZSBwdWJsaWNhdGlvbiB0byBoYXZlIGRlZmF1bHQgcHVi bGljYXRpb24gcGFyYW1ldGVyIHZhbHVlcworREVUQUlMOiAgQUxMIFRBQkxFUyBmbGFnIHNob3Vs ZCBub3QgYmUgc2V0IGFuZCBubyB0YWJsZXMvc2NoZW1hcyBzaG91bGQgYmUgYXNzb2NpYXRlZC4K K0hJTlQ6ICBVc2UgQUxURVIgUFVCTElDQVRJT04gLi4uIFJFU0VUIHRvIHJlc2V0IHRoZSBwdWJs aWNhdGlvbgogLS0gVmVyaWZ5IHRoYXQgc2NoZW1hcyBhc3NvY2lhdGVkIHdpdGggdGhlIHB1Ymxp Y2F0aW9uIGFyZSBkcm9wcGVkIGFmdGVyIFJFU0VUCiBcZFJwKyB0ZXN0cHViX3Jlc2V0CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9yZXNldApAQCAtMTk4OCw2ICsyMDU3LDEyIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf cmVzZXQgUkVTRVQ7CiAoMSByb3cpCiAKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQg U0VUIChQVUJMSVNIID0gJycpOworLS0gQ2FuJ3QgYWRkIEVYQ0VQVCBUQUJMRSB3aGVuIHRoZSAn UFVCTElTSCcgcGFyYW1ldGVyIGRvZXMgbm90IGhhdmUgZGVmYXVsdAorLS0gdmFsdWUKK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHB1 Yl9zY2gxLnRibDE7CitFUlJPUjogIGFkZGluZyBBTEwgVEFCTEVTIHJlcXVpcmVzIHRoZSBwdWJs aWNhdGlvbiB0byBoYXZlIGRlZmF1bHQgcHVibGljYXRpb24gcGFyYW1ldGVyIHZhbHVlcworREVU QUlMOiAgQUxMIFRBQkxFUyBmbGFnIHNob3VsZCBub3QgYmUgc2V0IGFuZCBubyB0YWJsZXMvc2No ZW1hcyBzaG91bGQgYmUgYXNzb2NpYXRlZC4KK0hJTlQ6ICBVc2UgQUxURVIgUFVCTElDQVRJT04g Li4uIFJFU0VUIHRvIHJlc2V0IHRoZSBwdWJsaWNhdGlvbgogLS0gVmVyaWZ5IHRoYXQgJ1BVQkxJ U0gnIHBhcmFtZXRlciBpcyByZXNldAogXGRScCsgdGVzdHB1Yl9yZXNldAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVzZXQK QEAgLTIwMDUsNiArMjA4MCwxMiBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJF U0VUOwogKDEgcm93KQogCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFNFVCAoUFVC TElTSF9WSUFfUEFSVElUSU9OX1JPT1QgPSAndHJ1ZScpOworLS0gQ2FuJ3QgYWRkIEVYQ0VQVCBU QUJMRSB3aGVuICdQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVCcgcGFyYW1ldGVyIGRvZXMgbm90 CistLSBoYXZlIGRlZmF1bHQgdmFsdWUKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQg QUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHB1Yl9zY2gxLnRibDE7CitFUlJPUjogIGFkZGlu ZyBBTEwgVEFCTEVTIHJlcXVpcmVzIHRoZSBwdWJsaWNhdGlvbiB0byBoYXZlIGRlZmF1bHQgcHVi bGljYXRpb24gcGFyYW1ldGVyIHZhbHVlcworREVUQUlMOiAgQUxMIFRBQkxFUyBmbGFnIHNob3Vs ZCBub3QgYmUgc2V0IGFuZCBubyB0YWJsZXMvc2NoZW1hcyBzaG91bGQgYmUgYXNzb2NpYXRlZC4K K0hJTlQ6ICBVc2UgQUxURVIgUFVCTElDQVRJT04gLi4uIFJFU0VUIHRvIHJlc2V0IHRoZSBwdWJs aWNhdGlvbgogLS0gVmVyaWZ5IHRoYXQgJ1BVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UJyBwYXJh bWV0ZXIgaXMgcmVzZXQKIFxkUnArIHRlc3RwdWJfcmVzZXQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0CkBAIC0yMDQz LDkgKzIxMjQsMTMgQEAgQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBPV05FUiBUTyBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOwogU0VUIFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyMjsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7IC0tIGZhaWwgLSBt dXN0IGJlIHN1cGVydXNlcgogRVJST1I6ICBtdXN0IGJlIHN1cGVydXNlciB0byBSRVNFVCBwdWJs aWNhdGlvbgorLS0gVmVyaWZ5IHRoYXQgb25seSBzdXBlcnVzZXIgY2FuIEFERCBBTEwgVEFCTEVT CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFERCBBTEwgVEFCTEVTOworRVJST1I6 ICBtdXN0IGJlIHN1cGVydXNlciB0byBBREQgQUxMIFRBQkxFUyB0byB0aGUgcHVibGljYXRpb24K IFNFVCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjsKIERST1AgUFVCTElDQVRJT04gdGVz dHB1Yl9yZXNldDsKIERST1AgVEFCTEUgcHViX3NjaDEudGJsMTsKK0RST1AgVEFCTEUgcHViX3Nj aDEudGJsMjsKIERST1AgU0NIRU1BIHB1Yl9zY2gxOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdl czsKIFJFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0 aW9uLnNxbAppbmRleCA4NGFlYTcwMjdhMS4uNmU4MTRlZGFjZTYgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wdWJsaWNhdGlvbi5zcWwKQEAgLTEwNCwyMCArMTA0LDMzIEBAIFNFTEVDVCBwdWJuYW1lLCBw dWJhbGx0YWJsZXMgRlJPTSBwZ19wdWJsaWNhdGlvbiBXSEVSRSBwdWJuYW1lID0gJ3Rlc3RwdWJf Zm9yYWxsCiBcZCsgdGVzdHB1Yl90YmwyCiBcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlcwogCitT RVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxF IHRlc3RwdWJfdGJsMSwgdGVzdHB1Yl90YmwyOworLS0gc3BlY2lmeSBFWENFUFQgd2l0aG91dCBU QUJMRQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxl MSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgdGVzdHB1Yl90YmwxOworUkVTRVQgY2xpZW50X21pbl9t ZXNzYWdlczsKKworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUKK1xkUnAr IHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMQorCiBEUk9QIFRBQkxFIHRlc3RwdWJf dGJsMjsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9y dGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hOworRFJPUCBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywgdGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1 Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEsIHRlc3RwdWJfZm9yYWxsdGFibGVz X2V4Y2VwdHRhYmxlLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTE7CiAKIENSRUFU RSBUQUJMRSB0ZXN0cHViX3RibDMgKGEgaW50KTsKIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibDNh IChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHViX3RibDMpOwogU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBUQUJMRSB0ZXN0 cHViX3RibDM7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVz dHB1Yl90YmwzOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEZPUiBBTEwgVEFCTEVTIEVY Q0VQVCBUQUJMRSB0ZXN0cHViX3RibDM7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjYgRk9S IEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIE9OTFkgdGVzdHB1Yl90YmwzOwogUkVTRVQgY2xpZW50 X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWIzCiBcZFJwKyB0ZXN0cHViNAorXGRScCsgdGVz dHB1YjUKK1xkUnArIHRlc3RwdWI2CiAKIERST1AgVEFCTEUgdGVzdHB1Yl90YmwzLCB0ZXN0cHVi X3RibDNhOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMywgdGVzdHB1YjQ7CitEUk9QIFBVQkxJ Q0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNCwgdGVzdHB1YjUsIHRlc3RwdWI2OwogCiAtLSBUZXN0 cyBmb3IgcGFydGl0aW9uZWQgdGFibGVzCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJP Uic7CkBAIC0xMjI4LDE3ICsxMjQxLDMxIEBAIERST1AgVEFCTEUgZ2VuY29sczsKIC0tIFRlc3Rz IGZvciBBTFRFUiBQVUJMSUNBVElPTiAuLi4gUkVTRVQKIENSRUFURSBTQ0hFTUEgcHViX3NjaDE7 CiBDUkVBVEUgVEFCTEUgcHViX3NjaDEudGJsMSAoYSBpbnQpOworQ1JFQVRFIFRBQkxFIHB1Yl9z Y2gxLnRibDIgKGEgaW50KTsKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEZPUiBBTEwgVEFCTEVTOwogUkVTRVQgY2xp ZW50X21pbl9tZXNzYWdlczsKIAorLS0gQ2FuJ3QgYWRkIEVYQ0VQVCBUQUJMRSB0byAnRk9SIEFM TCBUQUJMRVMnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFE RCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSBwdWJfc2NoMS50YmwxOworCiAtLSBWZXJpZnkgdGhh dCAnQUxMIFRBQkxFUycgZmxhZyBpcyByZXNldAogXGRScCsgdGVzdHB1Yl9yZXNldAogQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKIFxkUnArIHRlc3RwdWJfcmVzZXQKIAor LS0gU2hvdWxkIHdvcmsgbm93IGFmdGVyIHJlc2V0dGluZyB0aGUgcHVibGljYXRpb24KK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHB1 Yl9zY2gxLnRibDEsIHB1Yl9zY2gxLnRibDI7CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisKK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CisKIEFMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfcmVzZXQgQUREIFRBQkxFIHB1Yl9zY2gxLnRibDE7CiAKKy0tIENhbid0IGFkZCBFWENF UFQgVEFCTEUgdG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfcmVzZXQgQUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHB1Yl9zY2gxLnRibDE7CisK KwogLS0gVmVyaWZ5IHRoYXQgdGFibGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHVibGljYXRpb24g YXJlIGRyb3BwZWQgYWZ0ZXIgUkVTRVQKIFxkUnArIHRlc3RwdWJfcmVzZXQKIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CkBAIC0xMjQ2LDYgKzEyNzMsOSBAQCBBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOwogCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX3Jlc2V0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYzsKIAorLS0gQ2FuJ3QgYWRkIEVY Q0VQVCBUQUJMRSB0byAnRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BJyBwdWJsaWNhdGlvbgorQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUg cHViX3NjaDEudGJsMTsKKwogLS0gVmVyaWZ5IHRoYXQgc2NoZW1hcyBhc3NvY2lhdGVkIHdpdGgg dGhlIHB1YmxpY2F0aW9uIGFyZSBkcm9wcGVkIGFmdGVyIFJFU0VUCiBcZFJwKyB0ZXN0cHViX3Jl c2V0CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOwpAQCAtMTI1Myw2ICsx MjgzLDEwIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CiAKIEFMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgU0VUIChQVUJMSVNIID0gJycpOwogCistLSBDYW4n dCBhZGQgRVhDRVBUIFRBQkxFIHdoZW4gdGhlICdQVUJMSVNIJyBwYXJhbWV0ZXIgZG9lcyBub3Qg aGF2ZSBkZWZhdWx0CistLSB2YWx1ZQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBB REQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgcHViX3NjaDEudGJsMTsKKwogLS0gVmVyaWZ5IHRo YXQgJ1BVQkxJU0gnIHBhcmFtZXRlciBpcyByZXNldAogXGRScCsgdGVzdHB1Yl9yZXNldAogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKQEAgLTEyNjAsNiArMTI5NCwxMCBA QCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOwogCiBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX3Jlc2V0IFNFVCAoUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1QgPSAndHJ1 ZScpOwogCistLSBDYW4ndCBhZGQgRVhDRVBUIFRBQkxFIHdoZW4gJ1BVQkxJU0hfVklBX1BBUlRJ VElPTl9ST09UJyBwYXJhbWV0ZXIgZG9lcyBub3QKKy0tIGhhdmUgZGVmYXVsdCB2YWx1ZQorQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUg cHViX3NjaDEudGJsMTsKKwogLS0gVmVyaWZ5IHRoYXQgJ1BVQkxJU0hfVklBX1BBUlRJVElPTl9S T09UJyBwYXJhbWV0ZXIgaXMgcmVzZXQKIFxkUnArIHRlc3RwdWJfcmVzZXQKIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CkBAIC0xMjc2LDEwICsxMzE0LDE0IEBAIEFMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX3Jlc2V0IE9XTkVSIFRPIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7CiBTRVQgUk9MRSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNl dCBSRVNFVDsgLS0gZmFpbCAtIG11c3QgYmUgc3VwZXJ1c2VyCisKKy0tIFZlcmlmeSB0aGF0IG9u bHkgc3VwZXJ1c2VyIGNhbiBBREQgQUxMIFRBQkxFUworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9yZXNldCBBREQgQUxMIFRBQkxFUzsKIFNFVCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl cjsKIAogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0OwogRFJPUCBUQUJMRSBwdWJfc2No MS50YmwxOworRFJPUCBUQUJMRSBwdWJfc2NoMS50YmwyOwogRFJPUCBTQ0hFTUEgcHViX3NjaDE7 CiAKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQK aW5kZXggNTg2ZmZiYTQzNGUuLmU4YTExN2YzNDIxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1 aWxkCkBAIC00Miw2ICs0Miw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAzM19ydW5fYXNfdGFi bGVfb3duZXIucGwnLAogICAgICAgJ3QvMDM0X3RlbXBvcmFsLnBsJywKICAgICAgICd0LzAzNV9j b25mbGljdHMucGwnLAorICAgICAgJ3QvMDM2X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbCcs CiAgICAgICAndC8xMDBfYnVncy5wbCcsCiAgICAgXSwKICAgfSwKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzZfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xZDExNTI4MzgwOQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9yZXBfY2hhbmdlc19leGNlcHRf dGFibGUucGwKQEAgLTAsMCArMSw4MyBAQAorCisjIENvcHlyaWdodCAoYykgMjAyMS0yMDIyLCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIExvZ2ljYWwgcmVwbGljYXRp b24gdGVzdHMgZm9yIGV4Y2VwdCB0YWJsZSBwdWJsaWNhdGlvbnMKK3VzZSBzdHJpY3Q7Cit1c2Ug d2FybmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCisjIEluaXRpYWxpemUgcHVibGlzaGVy IG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l dygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9 PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworIyBDcmVhdGUgc3Vic2Ny aWJlciBub2RlCitteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0KGFsbG93c19zdHJl YW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisjIFRlc3Qg cmVwbGljYXRpb24gd2l0aCBwdWJsaWNhdGlvbnMgY3JlYXRlZCB1c2luZyBGT1IgQUxMIFRBQkxF UyBFWENFUFQgVEFCTEUKKyMgY2xhdXNlLgorIyBDcmVhdGUgc2NoZW1hcyBhbmQgdGFibGVzIG9u IHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFU RSBTQ0hFTUEgc2NoMSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFRBQkxFIHNjaDEudGFiMSBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTAp IEFTIGEiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUg VEFCTEUgcHVibGljLnRhYjEoYSBpbnQpIik7CisKKyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRhYmxl cyBvbiBzdWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IkNSRUFURSBTQ0hFTUEgc2NoMSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJDUkVBVEUgVEFCTEUgc2NoMS50YWIxIChhIGludCkiKTsKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHB1YmxpYy50YWIxIChhIGlu dCkiKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5z dHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04g dGFwX3B1Yl9zY2hlbWEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHNjaDEudGFiMSIKKyk7 CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VC U0NSSVBUSU9OIHRhcF9zdWJfc2NoZW1hIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicg UFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEiCispOworCisjIFdhaXQgZm9yIGluaXRpYWwgdGFi bGUgc3luYyB0byBmaW5pc2gKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlv bl9zeW5jKCRub2RlX3B1Ymxpc2hlciwKKwkndGFwX3N1Yl9zY2hlbWEnKTsKKworIyBDaGVjayB0 aGUgdGFibGUgZGF0YSBkb2VzIG5vdCBzeW5jIGZvciBleGNsdWRlZCB0YWJsZQorbXkgJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291 bnQoKiksIG1pbihhKSwgbWF4KGEpIEZST00gc2NoMS50YWIxIik7CitpcygkcmVzdWx0LCBxcSgw fHwpLAorCSdjaGVjayB0aGVyZSBpcyBubyBpbml0aWFsIGRhdGEgY29waWVkIGZvciB0aGUgZXhj bHVkZWQgdGFibGUnKTsKKworIyBJbnNlcnQgc29tZSBkYXRhIGFuZCB2ZXJpZnkgdGhhdCBpbnNl cnRlZCBkYXRhIGlzIG5vdCByZXBsaWNhdGVkCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBzY2gxLnRhYjEgVkFMVUVTKGdlbmVyYXRlX3Nlcmll cygxMSwyMCkpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1 Yl9zY2hlbWEnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKiksIG1pbihhKSwgbWF4KGEpIEZST00gc2NoMS50YWIx Iik7CitpcygkcmVzdWx0LCBxcSgwfHwpLCAnY2hlY2sgcmVwbGljYXRlZCBpbnNlcnRzIG9uIHN1 YnNjcmliZXInKTsKKworIyBBbHRlciBwdWJsaWNhdGlvbiB0byBleGNsdWRlIGRhdGEgY2hhbmdl cyBpbiBwdWJsaWMudGFiMSBhbmQgdmVyaWZ5IHRoYXQKKyMgc3Vic2NyaWJlciBkb2VzIG5vdCBn ZXQgdGhlIGNoYW5nZWQgZGF0YSBmb3IgdGhpcyB0YWJsZS4KKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFBVQkxJQ0FUSU9OIHRhcF9wdWJfc2NoZW1hIFJF U0VUIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBQ VUJMSUNBVElPTiB0YXBfcHViX3NjaGVtYSBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgc2No MS50YWIxLCBwdWJsaWMudGFiMSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJJTlNFUlQgSU5UTyBwdWJsaWMudGFiMSBWQUxVRVMoZ2VuZXJhdGVfc2VyaWVz KDEsMTApKSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJf c2NoZW1hJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIGNvdW50KCopLCBtaW4oYSksIG1heChhKSBGUk9NIHB1YmxpYy50YWIx Iik7CitpcygkcmVzdWx0LCBxcSgwfHwpLCAnY2hlY2sgcm93cyBvbiBzdWJzY3JpYmVyIGNhdGNo dXAnKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnZmFzdCcpOworJG5vZGVfcHVibGlzaGVy LT5zdG9wKCdmYXN0Jyk7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi4zNC4xCgo= --000000000000cd798a06388ae6a1 Content-Type: application/octet-stream; name="v15-0003-Skip-publishing-the-columns-specified-in-FOR-TAB.patch" Content-Disposition: attachment; filename="v15-0003-Skip-publishing-the-columns-specified-in-FOR-TAB.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mceniljv2 RnJvbSBmYjgyMzlhZmQ1OGU0NjY0NjliM2UyOTBlMmRhZWYzMjljYzY5ZjA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMjcgSnVuIDIwMjUgMTI6MDE6MDIgKzA1MzAKU3ViamVjdDogW1BBVENIIHYx NSAzLzNdIFNraXAgcHVibGlzaGluZyB0aGUgY29sdW1ucyBzcGVjaWZpZWQgaW4gRk9SIFRBQkxF CiBFWENFUFQKCkEgbmV3ICJUQUJMRSB0YWJsZV9uYW1lIEVYQ0VQVCAoY29sdW1uX2xpc3QpIiBj bGF1c2UgZm9yIENSRUFURS9BTFRFUgpQVUJMSUNBVElPTiBhbGxvd3Mgb25lIG9yIG1vcmUgY29s dW1ucyB0byBiZSBleGNsdWRlZC4gVGhlIHB1Ymxpc2hlcgp3aWxsIG5vdCBzZW5kIHRoZSBkYXRh IG9mIGV4Y2x1ZGVkIGNvbHVtbnMgdG8gdGhlIHN1YnNjcmliZXIuCgpUaGUgbmV3IHN5bnRheCBh bGxvd3Mgc3BlY2lmeWluZyBleGNsdWRlZCBjb2x1bW4gbGlzdCB3aGVuIGNyZWF0aW5nIG9yCmFs dGVyaW5nIGEgcHVibGljYXRpb24uIEZvciBleGFtcGxlOgpDUkVBVEUgUFVCTElDQVRJT04gcHVi bmFtZSBGT1IgVEFCTEUgdGFibmFtZSBFWENFUFQgKGNvbDEsIGNvbDIsIGNvbDMpCm9yCkFMVEVS IFBVQkxJQ0FUSU9OIHB1Ym5hbWUgQUREIFRBQkxFIHRhYm5hbWUgRVhDRVBUIChjb2wxLCBjb2wy LCBjb2wzKQoKVGhlIGNvbHVtbiAicHJleGNlcHQiIG9mIHN5c3RlbSBjYXRhbG9nICJwZ19wdWJs aWNhdGlvbl9yZWwiIGlzIHNldCB0bwoidHJ1ZSIgd2hlbiBwdWJsaWNhdGlvbiBpcyBjcmVhdGVk IHdpdGggRVhDRVBUIHRhYmxlIG9yIEVYQ0VQVCBjb2x1bW4KbGlzdC4gSWYgY29sdW1uICJwcmF0 dHJzIiBvZiBzeXN0ZW0gY2F0YWxvZyAicGdfcHVibGljYXRpb25fcmVsIiBpcyBhbHNvCnNldCBv ciBjb2x1bW4gInB1YmFsbHRhYmxlcyIgb2Ygc3lzdGVtIGNhdGFsb2cgInBnX3B1YmxpY2F0aW9u IiBpcwoiZmFsc2UiLCBpdCBpbmRpY2F0ZXMgdGhlIGNvbHVtbiBsaXN0IGlzIHNwZWNpZmllZCB3 aXRoIEVYQ0VQVCBjbGF1c2UKYW5kIGNvbHVtbnMgaW4gInByYXR0cnMiIGFyZSBleGNsdWRlZCBm cm9tIGJlaW5nIHB1Ymxpc2hlZC4KCnBnX2R1bXAgaXMgdXBkYXRlZCB0byBpZGVudGlmeSBhbmQg ZHVtcCB0aGUgZXhjbHVkZWQgY29sdW1uIGxpc3Qgb2YgdGhlCnB1YmxpY2F0aW9uLgoKVGhlIHBz cWwgXGQgZmFtaWx5IG9mIGNvbW1hbmRzIGNhbiBub3cgZGlzcGxheSBleGNsdWRlZCBjb2x1bW4g bGlzdC4gZS5nLgpwc3FsIFxkUnArIHZhcmlhbnQgd2lsbCBub3cgZGlzcGxheSBhc3NvY2lhdGVk ICJFWENFUFQgKGNvbHVtbl9saXN0KSIgaWYKYW55LgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICA1ICstCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1y ZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCA4OSArKysrKysrKysrKystLS0tLQogZG9jL3NyYy9z Z21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sICAgICAgIHwgMTAgKy0KIGRvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgICAgICB8IDQwICsrKysrLS0tCiBzcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgICAgICAgICAgfCA2NCArKysrKysrKysrLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgICAgICB8IDMxICsrKyst LQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgNjUgKysr KysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICAg fCA2MSArKysrKysrKysrLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAg ICAgICAgICB8IDQ1ICsrKysrLS0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAg ICAgICAgICAgICAgIHwgIDEgKwogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAg ICAgICAgICAgIHwgODUgKysrKysrKysrKystLS0tLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5oICAgICAgICAgIHwgIDYgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVi bGljYXRpb25fcmVsLmggICAgICB8ICA1ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dCAgICAgfCA2MSArKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3B1YmxpY2F0aW9uLnNxbCAgICAgICAgICB8IDQyICsrKysrKysrCiAuLi4vdC8wMzZfcmVwX2No YW5nZXNfZXhjZXB0X3RhYmxlLnBsICAgICAgICAgfCA5OCArKysrKysrKysrKysrKysrKystCiAx NiBmaWxlcyBjaGFuZ2VkLCA2MDMgaW5zZXJ0aW9ucygrKSwgMTA1IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFs b2dzLnNnbWwKaW5kZXggNGUzN2M5MjhiNDQuLmZlZjFlODAzYjYwIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApA QCAtNjU3Myw3ICs2NTczLDEwIEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVy YXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICA8c3Ry dWN0ZmllbGQ+cHJleGNlcHQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgogICAgICAg PC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgVHJ1ZSBpZiB0aGUgcmVsYXRpb24gbXVzdCBi ZSBleGNsdWRlZAorICAgICAgIFRydWUgaWYgdGhlIGNvbHVtbiBsaXN0IG9yIHJlbGF0aW9uIG11 c3QgYmUgZXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlvbi4KKyAgICAgICBJZiBhIGNvbHVtbiBsaXN0 IGlzIHNwZWNpZmllZCBpbiA8bGl0ZXJhbD5wcmF0dHJzPC9saXRlcmFsPiwgdGhlbgorICAgICAg IGV4Y2x1ZGUgb25seSB0aG9zZSBjb2x1bW5zLiBJZiA8bGl0ZXJhbD5wcmF0dHJzPC9saXRlcmFs PiBpcyBOVUxMLAorICAgICAgIHRoZW4gZXhjbHVkZSB0aGUgZW50aXJlIHJlbGF0aW9uLgogICAg ICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGlj YXRpb24uc2dtbAppbmRleCAzZDBkMjljZjhiMS4uMGRkYzY1OGNmN2MgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xv Z2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTM0MCwxMCArMTM0MCwxMCBAQCBQdWJsaWNhdGlv bnM6CiAgIDx0aXRsZT5Db2x1bW4gTGlzdHM8L3RpdGxlPgogCiAgIDxwYXJhPgotICAgRWFjaCBw dWJsaWNhdGlvbiBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IHdoaWNoIGNvbHVtbnMgb2YgZWFjaCB0 YWJsZSBhcmUKLSAgIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcnMuIFRoZSB0YWJsZSBvbiB0aGUg c3Vic2NyaWJlciBzaWRlIG11c3QgaGF2ZSBhdAotICAgbGVhc3QgYWxsIHRoZSBjb2x1bW5zIHRo YXQgYXJlIHB1Ymxpc2hlZC4gSWYgbm8gY29sdW1uIGxpc3QgaXMgc3BlY2lmaWVkLAotICAgdGhl biBhbGwgY29sdW1ucyBvbiB0aGUgcHVibGlzaGVyIGFyZSByZXBsaWNhdGVkLgorICAgRWFjaCBw dWJsaWNhdGlvbiBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IHdoaWNoIGNvbHVtbnMgb2YgZWFjaCB0 YWJsZSBzaG91bGQgYmUKKyAgIHJlcGxpY2F0ZWQgb3IgZXhjbHVkZWQgZnJvbSByZXBsaWNhdGlv bi4gVGhlIHRhYmxlIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUKKyAgIG11c3QgaGF2ZSBhdCBsZWFz dCBhbGwgdGhlIGNvbHVtbnMgdGhhdCBhcmUgcHVibGlzaGVkLiBJZiBubyBjb2x1bW4gbGlzdCBp cworICAgc3BlY2lmaWVkLCB0aGVuIGFsbCBjb2x1bW5zIG9uIHRoZSBwdWJsaXNoZXIgYXJlIHJl cGxpY2F0ZWQuCiAgICBTZWUgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uIi8+ IGZvciBkZXRhaWxzIG9uIHRoZSBzeW50YXguCiAgIDwvcGFyYT4KIApAQCAtMTM1OCw3ICsxMzU4 LDkgQEAgUHVibGljYXRpb25zOgogICA8cGFyYT4KICAgIElmIG5vIGNvbHVtbiBsaXN0IGlzIHNw ZWNpZmllZCwgYW55IGNvbHVtbnMgYWRkZWQgdG8gdGhlIHRhYmxlIGxhdGVyIGFyZQogICAgYXV0 b21hdGljYWxseSByZXBsaWNhdGVkLiBUaGlzIG1lYW5zIHRoYXQgaGF2aW5nIGEgY29sdW1uIGxp c3Qgd2hpY2ggbmFtZXMKLSAgIGFsbCBjb2x1bW5zIGlzIG5vdCB0aGUgc2FtZSBhcyBoYXZpbmcg bm8gY29sdW1uIGxpc3QgYXQgYWxsLgorICAgYWxsIGNvbHVtbnMgaXMgbm90IHRoZSBzYW1lIGFz IGhhdmluZyBubyBjb2x1bW4gbGlzdCBhdCBhbGwuIFNpbWlsYXJseSwgaWYgYW4KKyAgIGNvbHVt biBsaXN0IGlzIHNwZWNpZmllZCB3aXRoIEVYQ0VQVCwgYW55IGNvbHVtbnMgYWRkZWQgdG8gdGhl IHRhYmxlIGxhdGVyCisgICBhcmUgYWxzbyByZXBsaWNhdGVkIGF1dG9tYXRpY2FsbHkuCiAgIDwv cGFyYT4KIAogICA8cGFyYT4KQEAgLTEzOTEsMTEgKzEzOTMsMTMgQEAgUHVibGljYXRpb25zOgog CiAgIDxwYXJhPgogICAgSWYgYSBwdWJsaWNhdGlvbiBwdWJsaXNoZXMgPGNvbW1hbmQ+VVBEQVRF PC9jb21tYW5kPiBvcgotICAgPGNvbW1hbmQ+REVMRVRFPC9jb21tYW5kPiBvcGVyYXRpb25zLCBh bnkgY29sdW1uIGxpc3QgbXVzdCBpbmNsdWRlIHRoZQotICAgdGFibGUncyByZXBsaWNhIGlkZW50 aXR5IGNvbHVtbnMgKHNlZQorICAgPGNvbW1hbmQ+REVMRVRFPC9jb21tYW5kPiBvcGVyYXRpb25z LCBhbnkgY29sdW1uIGxpc3QgbXVzdCBpbmNsdWRlIHRhYmxlJ3MKKyAgIHJlcGxpY2EgaWRlbnRp dHkgY29sdW1ucyBhbmQgYW55IGNvbHVtbiBsaXN0IHNwZWNpZmllZCB3aXRoIEVYQ0VQVCBjbGF1 c2UKKyAgIG11c3Qgbm90IGluY2x1ZGUgdGhlIHRhYmxlJ3MgcmVwbGljYSBpZGVudGl0eSBjb2x1 bW5zIChzZWUKICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1hbHRlcnRhYmxlLXJlcGxpY2EtaWRlbnRp dHkiLz4pLgogICAgSWYgYSBwdWJsaWNhdGlvbiBwdWJsaXNoZXMgb25seSA8Y29tbWFuZD5JTlNF UlQ8L2NvbW1hbmQ+IG9wZXJhdGlvbnMsIHRoZW4KLSAgIHRoZSBjb2x1bW4gbGlzdCBtYXkgb21p dCByZXBsaWNhIGlkZW50aXR5IGNvbHVtbnMuCisgICB0aGUgY29sdW1uIGxpc3QgbWF5IG9taXQg cmVwbGljYSBpZGVudGl0eSBjb2x1bW5zIGFuZCB0aGUgY29sdW1uIGxpc3QKKyAgIHNwZWNpZmll ZCB3aXRoIEVYQ0VQVCBjbGF1c2UgbWF5IGluY2x1ZGUgcmVwbGljYSBpZGVudGl0eSBjb2x1bW5z LgogICA8L3BhcmE+CiAKICAgPHBhcmE+CkBAIC0xNDQwLDE4ICsxNDQ0LDIxIEBAIFB1YmxpY2F0 aW9uczoKICAgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CiAKICAgIDxwYXJhPgotICAgIENyZWF0 ZSBhIHRhYmxlIDxsaXRlcmFsPnQxPC9saXRlcmFsPiB0byBiZSB1c2VkIGluIHRoZSBmb2xsb3dp bmcgZXhhbXBsZS4KKyAgICBDcmVhdGUgdGFibGVzIDxsaXRlcmFsPnQxPC9saXRlcmFsPiBhbmQg PGxpdGVyYWw+dDI8L2xpdGVyYWw+IHRvIGJlIHVzZWQgaW4KKyAgICB0aGUgZm9sbG93aW5nIGV4 YW1wbGUuCiA8cHJvZ3JhbWxpc3Rpbmc+CiAvKiBwdWIgIyAqLyBDUkVBVEUgVEFCTEUgdDEoaWQg aW50LCBhIHRleHQsIGIgdGV4dCwgYyB0ZXh0LCBkIHRleHQsIGUgdGV4dCwgUFJJTUFSWSBLRVko aWQpKTsKKy8qIHB1YiAjICovIENSRUFURSBUQUJMRSB0MihpZCBpbnQsIGEgdGV4dCwgYiB0ZXh0 LCBjIHRleHQsIGQgdGV4dCwgZSB0ZXh0LCBQUklNQVJZIEtFWShpZCkpOwogPC9wcm9ncmFtbGlz dGluZz48L3BhcmE+CiAKICAgIDxwYXJhPgogICAgIENyZWF0ZSBhIHB1YmxpY2F0aW9uIDxsaXRl cmFsPnAxPC9saXRlcmFsPi4gQSBjb2x1bW4gbGlzdCBpcyBkZWZpbmVkIGZvcgotICAgIHRhYmxl IDxsaXRlcmFsPnQxPC9saXRlcmFsPiB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBjb2x1bW5zIHRo YXQgd2lsbCBiZQotICAgIHJlcGxpY2F0ZWQuIE5vdGljZSB0aGF0IHRoZSBvcmRlciBvZiBjb2x1 bW4gbmFtZXMgaW4gdGhlIGNvbHVtbiBsaXN0IGRvZXMKLSAgICBub3QgbWF0dGVyLgorICAgIHRh YmxlIDxsaXRlcmFsPnQxPC9saXRlcmFsPiwgYW5kIGFub3RoZXIgY29sdW1uIGxpc3QgaXMgZGVm aW5lZCBmb3IgdGFibGUKKyAgICA8bGl0ZXJhbD50MjwvbGl0ZXJhbD4gdXNpbmcgdGhlIEVYQ0VQ VCBjbGF1c2UgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YKKyAgICBjb2x1bW5zIHRoYXQgd2lsbCBi ZSByZXBsaWNhdGVkLiBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIGNvbHVtbiBuYW1lcyBpbgorICAg IHRoZSBjb2x1bW4gbGlzdHMgZG9lcyBub3QgbWF0dGVyLgogPHByb2dyYW1saXN0aW5nPgotLyog cHViICMgKi8gQ1JFQVRFIFBVQkxJQ0FUSU9OIHAxIEZPUiBUQUJMRSB0MSAoaWQsIGIsIGEsIGQp OworLyogcHViICMgKi8gQ1JFQVRFIFBVQkxJQ0FUSU9OIHAxIEZPUiBUQUJMRSB0MSAoaWQsIGIs IGEsIGQpLCB0MiBFWENFUFQgKGQsIGEpOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKICAg ICA8cGFyYT4KQEAgLTE0NTksMTIgKzE0NjYsMTMgQEAgUHVibGljYXRpb25zOgogICAgICBmb3Ig ZWFjaCBwdWJsaWNhdGlvbi4KIDxwcm9ncmFtbGlzdGluZz4KIC8qIHB1YiAjICovIFxkUnArCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gcDEKLSAgT3duZXIgICB8 IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdAotLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHBvc3RncmVzIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiBwMQorIE93bmVyICB8IEFsbCB0 YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0 ZWQgY29sdW1ucyB8IFZpYSByb290CistLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCisgdWJ1bnR1IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMu dDEiIChpZCwgYSwgYiwgZCkKKyAgICAicHVibGljLnQyIiBFWENFUFQgKGEsIGQpCiA8L3Byb2dy YW1saXN0aW5nPjwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtMTQ4NSwyMyArMTQ5Myw0MSBAQCBJ bmRleGVzOgogICAgICJ0MV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGlkKQogUHVibGljYXRp b25zOgogICAgICJwMSIgKGlkLCBhLCBiLCBkKQorCisvKiBwdWIgIyAqLyBcZCB0MgorICAgICAg ICAgICAgICAgICBUYWJsZSAicHVibGljLnQyIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRp b24gfCBOdWxsYWJsZSB8IERlZmF1bHQKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3Qg bnVsbCB8CisgYSAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwKKyBiICAg ICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfAorIGMgICAgICB8IHRleHQgICAg fCAgICAgICAgICAgfCAgICAgICAgICB8CisgZCAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8 ICAgICAgICAgIHwKKyBlICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfAor SW5kZXhlczoKKyAgICAidDJfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChpZCkKK1B1YmxpY2F0 aW9uczoKKyAgICAicDEiIEVYQ0VQVCAoYSwgZCkKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgog CiAgICAgPHBhcmE+Ci0gICAgIE9uIHRoZSBzdWJzY3JpYmVyIG5vZGUsIGNyZWF0ZSBhIHRhYmxl IDxsaXRlcmFsPnQxPC9saXRlcmFsPiB3aGljaCBub3cKLSAgICAgb25seSBuZWVkcyBhIHN1YnNl dCBvZiB0aGUgY29sdW1ucyB0aGF0IHdlcmUgb24gdGhlIHB1Ymxpc2hlciB0YWJsZQotICAgICA8 bGl0ZXJhbD50MTwvbGl0ZXJhbD4sIGFuZCBhbHNvIGNyZWF0ZSB0aGUgc3Vic2NyaXB0aW9uCisg ICAgIE9uIHRoZSBzdWJzY3JpYmVyIG5vZGUsIGNyZWF0ZSB0YWJsZXMgPGxpdGVyYWw+dDE8L2xp dGVyYWw+IGFuZAorICAgICA8bGl0ZXJhbD50MjwvbGl0ZXJhbD4gd2hpY2ggbm93IG9ubHkgbmVl ZHMgYSBzdWJzZXQgb2YgdGhlIGNvbHVtbnMgdGhhdAorICAgICB3ZXJlIG9uIHRoZSBwdWJsaXNo ZXIgdGFibGVzIDxsaXRlcmFsPnQxPC9saXRlcmFsPiBhbmQKKyAgICAgPGxpdGVyYWw+dDI8L2xp dGVyYWw+LCBhbmQgYWxzbyBjcmVhdGUgdGhlIHN1YnNjcmlwdGlvbgogICAgICA8bGl0ZXJhbD5z MTwvbGl0ZXJhbD4gdGhhdCBzdWJzY3JpYmVzIHRvIHRoZSBwdWJsaWNhdGlvbgogICAgICA8bGl0 ZXJhbD5wMTwvbGl0ZXJhbD4uCiA8cHJvZ3JhbWxpc3Rpbmc+CiAvKiBzdWIgIyAqLyBDUkVBVEUg VEFCTEUgdDEoaWQgaW50LCBiIHRleHQsIGEgdGV4dCwgZCB0ZXh0LCBQUklNQVJZIEtFWShpZCkp OworLyogc3ViICMgKi8gQ1JFQVRFIFRBQkxFIHQyKGlkIGludCwgYiB0ZXh0LCBjIHRleHQsIGUg dGV4dCwgUFJJTUFSWSBLRVkoaWQpKTsKIC8qIHN1YiAjICovIENSRUFURSBTVUJTQ1JJUFRJT04g czEKIC8qIHN1YiAtICovIENPTk5FQ1RJT04gJ2hvc3Q9bG9jYWxob3N0IGRibmFtZT10ZXN0X3B1 YiBhcHBsaWNhdGlvbl9uYW1lPXMxJwogLyogc3ViIC0gKi8gUFVCTElDQVRJT04gcDE7CiA8L3By b2dyYW1saXN0aW5nPjwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICBPbiB0aGUgcHVibGlzaGVy IG5vZGUsIGluc2VydCBzb21lIHJvd3MgdG8gdGFibGUgPGxpdGVyYWw+dDE8L2xpdGVyYWw+Lgor ICAgICBPbiB0aGUgcHVibGlzaGVyIG5vZGUsIGluc2VydCBzb21lIHJvd3MgdG8gdGFibGVzIDxs aXRlcmFsPnQxPC9saXRlcmFsPgorICAgICBhbmQgPGxpdGVyYWw+dDI8L2xpdGVyYWw+CiA8cHJv Z3JhbWxpc3Rpbmc+CiAvKiBwdWIgIyAqLyBJTlNFUlQgSU5UTyB0MSBWQUxVRVMoMSwgJ2EtMScs ICdiLTEnLCAnYy0xJywgJ2QtMScsICdlLTEnKTsKIC8qIHB1YiAjICovIElOU0VSVCBJTlRPIHQx IFZBTFVFUygyLCAnYS0yJywgJ2ItMicsICdjLTInLCAnZC0yJywgJ2UtMicpOwpAQCAtMTUxMywx MSArMTUzOSwyMSBAQCBQdWJsaWNhdGlvbnM6CiAgIDIgfCBhLTIgfCBiLTIgfCBjLTIgfCBkLTIg fCBlLTIKICAgMyB8IGEtMyB8IGItMyB8IGMtMyB8IGQtMyB8IGUtMwogKDMgcm93cykKKy8qIHB1 YiAjICovIElOU0VSVCBJTlRPIHQyIFZBTFVFUygxLCAnYS0xJywgJ2ItMScsICdjLTEnLCAnZC0x JywgJ2UtMScpOworLyogcHViICMgKi8gSU5TRVJUIElOVE8gdDIgVkFMVUVTKDIsICdhLTInLCAn Yi0yJywgJ2MtMicsICdkLTInLCAnZS0yJyk7CisvKiBwdWIgIyAqLyBJTlNFUlQgSU5UTyB0MiBW QUxVRVMoMywgJ2EtMycsICdiLTMnLCAnYy0zJywgJ2QtMycsICdlLTMnKTsKKy8qIHB1YiAjICov IFNFTEVDVCAqIEZST00gdDIgT1JERVIgQlkgaWQ7CisgaWQgfCAgYSAgfCAgYiAgfCAgYyAgfCAg ZCAgfCAgZQorLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLQorICAxIHwgYS0xIHwg Yi0xIHwgYy0xIHwgZC0xIHwgZS0xCisgIDIgfCBhLTIgfCBiLTIgfCBjLTIgfCBkLTIgfCBlLTIK KyAgMyB8IGEtMyB8IGItMyB8IGMtMyB8IGQtMyB8IGUtMworKDMgcm93cykKIDwvcHJvZ3JhbWxp c3Rpbmc+PC9wYXJhPgogCiAgICAgPHBhcmE+Ci0gICAgIE9ubHkgZGF0YSBmcm9tIHRoZSBjb2x1 bW4gbGlzdCBvZiBwdWJsaWNhdGlvbiA8bGl0ZXJhbD5wMTwvbGl0ZXJhbD4gaXMKLSAgICAgcmVw bGljYXRlZC4KKyAgICAgT25seSBkYXRhIHNwZWNpZmllZCBieSB0aGUgY29sdW1uIGxpc3RzIG9m IHB1YmxpY2F0aW9uCisgICAgIDxsaXRlcmFsPnAxPC9saXRlcmFsPiBpcyByZXBsaWNhdGVkLgog PHByb2dyYW1saXN0aW5nPgogLyogc3ViICMgKi8gU0VMRUNUICogRlJPTSB0MSBPUkRFUiBCWSBp ZDsKICBpZCB8ICBiICB8ICBhICB8ICBkCkBAIC0xNTI2LDYgKzE1NjIsMTMgQEAgUHVibGljYXRp b25zOgogICAyIHwgYi0yIHwgYS0yIHwgZC0yCiAgIDMgfCBiLTMgfCBhLTMgfCBkLTMKICgzIHJv d3MpCisvKiBzdWIgIyAqLyBTRUxFQ1QgKiBGUk9NIHQyIE9SREVSIEJZIGlkOworIGlkIHwgIGIg IHwgIGMgIHwgIGUKKy0tLS0rLS0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8IGItMSB8IGMtMSB8IGUt MQorICAyIHwgYi0yIHwgYy0yIHwgZS0yCisgIDMgfCBiLTMgfCBjLTMgfCBlLTMKKygzIHJvd3Mp CiA8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KIAogICA8L3NlY3QyPgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IDYyMjczZWQyMGRkLi42OTY3YTRhYWRjNyAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbApAQCAtMzIsNyArMzIsNyBAQCBB TFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+IFJFU0VUCiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnB1YmxpY2F0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFz ZT4KIAotICAgIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50 YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXSBbIFdIRVJFICgg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiAp IF0gWywgLi4uIF0KKyAgICBUQUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgWyBFWENFUFQgXSAoIGNvbHVt bl9uYW1lIFssIC4uLiBdICkgXSBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0gWywgLi4uIF0KICAgICBUQUJMRVMgSU4g U0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBs YWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9IFssIC4uLiBdCiAKIDxwaHJhc2U+d2hlcmUgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxl PiBpczo8L3BocmFzZT4KQEAgLTI1OSw2ICsyNTksMTQgQEAgQUxURVIgUFVCTElDQVRJT04gcHJv ZHVjdGlvbl9wdWJsaWNhdGlvbiBBREQgQUxMIFRBQkxFUyBFWENFUFQgdXNlcnMsIGRlcGFydG1l bnQKICAgIDxzdHJ1Y3RuYW1lPnByb2R1Y3Rpb25fcHVibGljYXRpb248L3N0cnVjdG5hbWU+Ogog PHByb2dyYW1saXN0aW5nPgogQUxURVIgUFVCTElDQVRJT04gcHJvZHVjdGlvbl9wdWJsaWNhdGlv biBBREQgVEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzLCBUQUJMRVMgSU4gU0NIRU1BIHByb2R1Y3Rp b247Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKworICA8cGFyYT4KKyAgIEFsdGVyIHB1Ymxp Y2F0aW9uIDxzdHJ1Y3RuYW1lPm15cHVibGljYXRpb248L3N0cnVjdG5hbWU+IHRvIGFkZCB0YWJs ZQorICAgPHN0cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+IGV4Y2VwdCBjb2x1bW4KKyAgIDxz dHJ1Y3RuYW1lPnNlY3VyaXR5X3Bpbjwvc3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitB TFRFUiBQVUJMSUNBVElPTiBwcm9kdWN0aW9uX3B1YmxpY2F0aW9uIEFERCBUQUJMRSB1c2VycyBF WENFUFQgKHNlY3VyaXR5X3Bpbik7CiA8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KIAogICA8cGFy YT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IDdmZDg4NzJk YjVmLi5lMDU2ZTQwNTgyOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVi bGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5z Z21sCkBAIC0yOCw3ICsyOCw3IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+ IGlzIG9uZSBvZjo8L3BocmFzZT4KIAotICAgIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4u LiBdICkgXSBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Np b248L3JlcGxhY2VhYmxlPiApIF0gWywgLi4uIF0KKyAgICBUQUJMRSBbIE9OTFkgXSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsg WyBFWENFUFQgXSAoIGNvbHVtbl9uYW1lIFssIC4uLiBdICkgXSBbIFdIRVJFICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0gWywgLi4u IF0KICAgICBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9IFssIC4uLiBdCiAK IDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdGlvbl9v YmplY3Q8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KQEAgLTkyLDE3ICs5MiwyNCBAQCBDUkVB VEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxh Y2VhYmxlPgogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+Ci0gICAgICBXaGVuIGEgY29sdW1u IGxpc3QgaXMgc3BlY2lmaWVkLCBvbmx5IHRoZSBuYW1lZCBjb2x1bW5zIGFyZSByZXBsaWNhdGVk LgotICAgICAgVGhlIGNvbHVtbiBsaXN0IGNhbiBjb250YWluIHN0b3JlZCBnZW5lcmF0ZWQgY29s dW1ucyBhcyB3ZWxsLiBJZiB0aGUKLSAgICAgIGNvbHVtbiBsaXN0IGlzIG9taXR0ZWQsIHRoZSBw dWJsaWNhdGlvbiB3aWxsIHJlcGxpY2F0ZSBhbGwgbm9uLWdlbmVyYXRlZAotICAgICAgY29sdW1u cyAoaW5jbHVkaW5nIGFueSBhZGRlZCBpbiB0aGUgZnV0dXJlKSBieSBkZWZhdWx0LiBTdG9yZWQg Z2VuZXJhdGVkCi0gICAgICBjb2x1bW5zIGNhbiBhbHNvIGJlIHJlcGxpY2F0ZWQgaWYgPGxpdGVy YWw+cHVibGlzaF9nZW5lcmF0ZWRfY29sdW1uczwvbGl0ZXJhbD4KLSAgICAgIGlzIHNldCB0byA8 bGl0ZXJhbD5zdG9yZWQ8L2xpdGVyYWw+LiBTcGVjaWZ5aW5nIGEgY29sdW1uIGxpc3QgaGFzIG5v Ci0gICAgICBlZmZlY3Qgb24gPGxpdGVyYWw+VFJVTkNBVEU8L2xpdGVyYWw+IGNvbW1hbmRzLiBT ZWUKKyAgICAgIFdoZW4gYSBjb2x1bW4gbGlzdCB3aXRob3V0IEVYQ0VQVCBpcyBzcGVjaWZpZWQs IG9ubHkgdGhlIG5hbWVkIGNvbHVtbnMgYXJlCisgICAgICByZXBsaWNhdGVkLiBUaGUgY29sdW1u IGxpc3QgY2FuIGNvbnRhaW4gc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zIGFzIHdlbGwuCisgICAg ICBJZiB0aGUgY29sdW1uIGxpc3QgaXMgb21pdHRlZCwgdGhlIHB1YmxpY2F0aW9uIHdpbGwgcmVw bGljYXRlCisgICAgICBhbGwgbm9uLWdlbmVyYXRlZCBjb2x1bW5zIChpbmNsdWRpbmcgYW55IGFk ZGVkIGluIHRoZSBmdXR1cmUpIGJ5IGRlZmF1bHQuCisgICAgICBTdG9yZWQgZ2VuZXJhdGVkIGNv bHVtbnMgY2FuIGFsc28gYmUgcmVwbGljYXRlZCBpZgorICAgICAgPGxpdGVyYWw+cHVibGlzaF9n ZW5lcmF0ZWRfY29sdW1uczwvbGl0ZXJhbD4gaXMgc2V0IHRvCisgICAgICA8bGl0ZXJhbD5zdG9y ZWQ8L2xpdGVyYWw+LiBTcGVjaWZ5aW5nIGEgY29sdW1uIGxpc3QgaGFzIG5vIGVmZmVjdCBvbgor ICAgICAgPGxpdGVyYWw+VFJVTkNBVEU8L2xpdGVyYWw+IGNvbW1hbmRzLiBTZWUKICAgICAgIDx4 cmVmIGxpbmtlbmQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tY29sLWxpc3RzIi8+IGZvciBkZXRhaWxz IGFib3V0IGNvbHVtbgogICAgICAgbGlzdHMuCiAgICAgIDwvcGFyYT4KIAorICAgICA8cGFyYT4K KyAgICAgIFdoZW4gYSBjb2x1bW4gbGlzdCBpcyBzcGVjaWZpZWQgd2l0aCBFWENFUFQsIHRoZSBu YW1lZCBjb2x1bW5zIGFyZSBub3QKKyAgICAgIHJlcGxpY2F0ZWQuIFNwZWNpZnlpbmcgYSBjb2x1 bW4gbGlzdCBoYXMgbm8gZWZmZWN0IG9uCisgICAgICA8bGl0ZXJhbD5UUlVOQ0FURTwvbGl0ZXJh bD4gY29tbWFuZHMuCisgICAgIDwvcGFyYT4KKwogICAgICA8cGFyYT4KICAgICAgIE9ubHkgcGVy c2lzdGVudCBiYXNlIHRhYmxlcyBhbmQgcGFydGl0aW9uZWQgdGFibGVzIGNhbiBiZSBwYXJ0IG9m IGEKICAgICAgIHB1YmxpY2F0aW9uLiAgVGVtcG9yYXJ5IHRhYmxlcywgdW5sb2dnZWQgdGFibGVz LCBmb3JlaWduIHRhYmxlcywKQEAgLTMyOCw5ICszMzUsMTEgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KIAogICA8 cGFyYT4KICAgIEFueSBjb2x1bW4gbGlzdCBtdXN0IGluY2x1ZGUgdGhlIDxsaXRlcmFsPlJFUExJ Q0EgSURFTlRJVFk8L2xpdGVyYWw+IGNvbHVtbnMKLSAgIGluIG9yZGVyIGZvciA8Y29tbWFuZD5V UERBVEU8L2NvbW1hbmQ+IG9yIDxjb21tYW5kPkRFTEVURTwvY29tbWFuZD4KLSAgIG9wZXJhdGlv bnMgdG8gYmUgcHVibGlzaGVkLiBUaGVyZSBhcmUgbm8gY29sdW1uIGxpc3QgcmVzdHJpY3Rpb25z IGlmIHRoZQotICAgcHVibGljYXRpb24gcHVibGlzaGVzIG9ubHkgPGNvbW1hbmQ+SU5TRVJUPC9j b21tYW5kPiBvcGVyYXRpb25zLgorICAgYW5kIGFueSBjb2x1bW4gbGlzdCBzcGVjaWZpZWQgd2l0 aCBFWENFUFQgbXVzdCBub3QgaW5jbHVkZSB0aGUKKyAgIDxsaXRlcmFsPlJFUExJQ0EgSURFTlRJ VFk8L2xpdGVyYWw+IGNvbHVtbnMgaW4gb3JkZXIgZm9yCisgICA8Y29tbWFuZD5VUERBVEU8L2Nv bW1hbmQ+IG9yIDxjb21tYW5kPkRFTEVURTwvY29tbWFuZD4gb3BlcmF0aW9ucyB0byBiZQorICAg cHVibGlzaGVkLiBUaGVyZSBhcmUgbm8gY29sdW1uIGxpc3QgcmVzdHJpY3Rpb25zIGlmIHRoZSBw dWJsaWNhdGlvbiBwdWJsaXNoZXMKKyAgIG9ubHkgPGNvbW1hbmQ+SU5TRVJUPC9jb21tYW5kPiBv cGVyYXRpb25zLgogICA8L3BhcmE+CiAKICAgPHBhcmE+CkBAIC00NzQsNiArNDgzLDE1IEBAIENS RUFURSBQVUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCB1c2Vy cywgZGVwYXJ0bWVudHM7CiA8cHJvZ3JhbWxpc3Rpbmc+CiBDUkVBVEUgUFVCTElDQVRJT04gdXNl cnNfZmlsdGVyZWQgRk9SIFRBQkxFIHVzZXJzICh1c2VyX2lkLCBmaXJzdG5hbWUpOwogPC9wcm9n cmFtbGlzdGluZz48L3BhcmE+CisKKyAgPHBhcmE+CisgICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0 aGF0IHB1Ymxpc2hlcyBhbGwgY2hhbmdlcyBmb3IgdGFibGUKKyAgIDxzdHJ1Y3RuYW1lPnVzZXJz PC9zdHJ1Y3RuYW1lPiBleGNlcHQgY2hhbmdlcyBmb3IgY29sdW1uCisgICA8c3RydWN0bmFtZT5z ZWN1cml0eV9waW48L3N0cnVjdG5hbWU+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFBVQkxJ Q0FUSU9OIHVzZXJzX3NhZmUgRk9SIFRBQkxFIHVzZXJzIEVYQ0VQVCAoc2VjdXJpdHlfcGluKTsK KzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KICA8L3JlZnNlY3QxPgogCiAgPHJlZnNlY3Qx PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IGVjNTgwZTNiMDUwLi5mYjgx NzY2MTMyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtMjYzLDEwICsy NjMsMTMgQEAgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKE9pZCBwdWJpZCkKICAqIElmIGEgY29sdW1u IGxpc3QgaXMgZm91bmQsIHRoZSBjb3JyZXNwb25kaW5nIGJpdG1hcCBpcyByZXR1cm5lZCB0aHJv dWdoIHRoZQogICogY29scyBwYXJhbWV0ZXIsIGlmIHByb3ZpZGVkLiBUaGUgYml0bWFwIGlzIGNv bnN0cnVjdGVkIHdpdGhpbiB0aGUgZ2l2ZW4KICAqIG1lbW9yeSBjb250ZXh0IChtY3h0KS4KKyAq CisgKiBJZiBhIGNvbHVtbiBsaXN0IGlzIGZvdW5kIHNwZWNpZmllZCB3aXRoIEVYQ0VQVCBjbGF1 c2UsIGV4Y2VwdF9jb2x1bW5zIGlzIHNldAorICogdG8gdHJ1ZS4KICAqLwogYm9vbAogY2hlY2tf YW5kX2ZldGNoX2NvbHVtbl9saXN0KFB1YmxpY2F0aW9uICpwdWIsIE9pZCByZWxpZCwgTWVtb3J5 Q29udGV4dCBtY3h0LAotCQkJCQkJCUJpdG1hcHNldCAqKmNvbHMpCisJCQkJCQkJQml0bWFwc2V0 ICoqY29scywgYm9vbCAqZXhjZXB0X2NvbHVtbnMpCiB7CiAJSGVhcFR1cGxlCWNmdHVwbGU7CiAJ Ym9vbAkJZm91bmQgPSBmYWxzZTsKQEAgLTI5Niw2ICsyOTksMTYgQEAgY2hlY2tfYW5kX2ZldGNo X2NvbHVtbl9saXN0KFB1YmxpY2F0aW9uICpwdWIsIE9pZCByZWxpZCwgTWVtb3J5Q29udGV4dCBt Y3h0LAogCQkJZm91bmQgPSB0cnVlOwogCQl9CiAKKwkJLyogTG9va3VwIHRoZSBleGNlcHQgYXR0 cmlidXRlICovCisJCWNmZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoUFVCTElDQVRJT05SRUxNQVAs IGNmdHVwbGUsCisJCQkJCQkJCSAgQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJleGNlcHQsICZp c251bGwpOworCisJCWlmICghaXNudWxsKQorCQl7CisJCQlBc3NlcnQoIXB1Yi0+YWxsdGFibGVz KTsKKwkJCSpleGNlcHRfY29sdW1ucyA9IERhdHVtR2V0Qm9vbChjZmRhdHVtKTsKKwkJfQorCiAJ CVJlbGVhc2VTeXNDYWNoZShjZnR1cGxlKTsKIAl9CiAKQEAgLTY0NiwxMCArNjU5LDEyIEBAIHB1 Yl9jb2xsaXN0X3RvX2JpdG1hcHNldChCaXRtYXBzZXQgKmNvbHVtbnMsIERhdHVtIHB1YmNvbHMs IE1lbW9yeUNvbnRleHQgbWN4dCkKICAqIFJldHVybnMgYSBiaXRtYXAgcmVwcmVzZW50aW5nIHRo ZSBjb2x1bW5zIG9mIHRoZSBzcGVjaWZpZWQgdGFibGUuCiAgKgogICogR2VuZXJhdGVkIGNvbHVt bnMgYXJlIGluY2x1ZGVkIGlmIGluY2x1ZGVfZ2VuY29sc190eXBlIGlzCi0gKiBQVUJMSVNIX0dF TkNPTFNfU1RPUkVELgorICogUFVCTElTSF9HRU5DT0xTX1NUT1JFRC4gQ29sdW1ucyB0aGF0IGFy ZSBpbiB0aGUgZXhjZXB0Y29scyBhcmUgZXhjbHVkZWQgZnJvbQorICogdGhlIGNvbHVtbiBsaXN0 LgogICovCiBCaXRtYXBzZXQgKgotcHViX2Zvcm1fY29sc19tYXAoUmVsYXRpb24gcmVsYXRpb24s IFB1Ymxpc2hHZW5jb2xzVHlwZSBpbmNsdWRlX2dlbmNvbHNfdHlwZSkKK3B1Yl9mb3JtX2NvbHNf bWFwKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaXNoR2VuY29sc1R5cGUgaW5jbHVkZV9nZW5jb2xz X3R5cGUsCisJCQkJICBCaXRtYXBzZXQgKmV4Y2VwdGNvbHMpCiB7CiAJQml0bWFwc2V0ICAqcmVz dWx0ID0gTlVMTDsKIAlUdXBsZURlc2MJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24p OwpAQCAtNjcyLDYgKzY4Nyw5IEBAIHB1Yl9mb3JtX2NvbHNfbWFwKFJlbGF0aW9uIHJlbGF0aW9u LCBQdWJsaXNoR2VuY29sc1R5cGUgaW5jbHVkZV9nZW5jb2xzX3R5cGUpCiAJCQkJY29udGludWU7 CiAJCX0KIAorCQlpZiAoZXhjZXB0Y29scyAmJiBibXNfaXNfbWVtYmVyKGF0dC0+YXR0bnVtLCBl eGNlcHRjb2xzKSkKKwkJCWNvbnRpbnVlOworCiAJCXJlc3VsdCA9IGJtc19hZGRfbWVtYmVyKHJl c3VsdCwgYXR0LT5hdHRudW0pOwogCX0KIApAQCAtNzc2LDggKzc5NCwxMCBAQCBHZXRSZWxhdGlv blB1YmxpY2F0aW9ucyhPaWQgcmVsaWQsIGJvb2wgZXhjZXB0X2ZsYWcpCiAJewogCQlIZWFwVHVw bGUJdHVwID0gJnB1YnJlbGxpc3QtPm1lbWJlcnNbaV0tPnR1cGxlOwogCQlPaWQJCQlwdWJpZCA9 ICgoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApKS0+cHJwdWJpZDsKKwkJ Ym9vbAkJaXNfZXhjZXB0X3RhYmxlID0gKChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RS VUNUKHR1cCkpLT5wcmV4Y2VwdCAmJgorCQkJaGVhcF9hdHRpc251bGwodHVwLCBBbnVtX3BnX3B1 YmxpY2F0aW9uX3JlbF9wcmF0dHJzLCBOVUxMKTsKIAotCQlpZiAoZXhjZXB0X2ZsYWcgPT0gKChG b3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCkpLT5wcmV4Y2VwdCkKKwkJaWYg KGV4Y2VwdF9mbGFnID09IGlzX2V4Y2VwdF90YWJsZSkKIAkJCXJlc3VsdCA9IGxhcHBlbmRfb2lk KHJlc3VsdCwgcHViaWQpOwogCX0KIApAQCAtMTI2Myw2ICsxMjgzLDkgQEAgcGdfZ2V0X3B1Ymxp Y2F0aW9uX3RhYmxlcyhQR19GVU5DVElPTl9BUkdTKQogCQlPaWQJCQlzY2hlbWFpZCA9IGdldF9y ZWxfbmFtZXNwYWNlKHJlbGlkKTsKIAkJRGF0dW0JCXZhbHVlc1tOVU1fUFVCTElDQVRJT05fVEFC TEVTX0VMRU1dID0gezB9OwogCQlib29sCQludWxsc1tOVU1fUFVCTElDQVRJT05fVEFCTEVTX0VM RU1dID0gezB9OworCQlEYXR1bQkJZXhjZXB0RGF0dW07CisJCWJvb2wJCWlzbnVsbDsKKwkJYm9v bAkJZXhjZXB0X2NvbHVtbnMgPSBmYWxzZTsKIAogCQkvKgogCQkgKiBGb3JtIHR1cGxlIHdpdGgg YXBwcm9wcmlhdGUgZGF0YS4KQEAgLTEyODcsNyArMTMxMCwxOCBAQCBwZ19nZXRfcHVibGljYXRp b25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkJaWYgKEhlYXBUdXBsZUlzVmFsaWQocHVi dHVwbGUpKQogCQl7Ci0JCQkvKiBMb29rdXAgdGhlIGNvbHVtbiBsaXN0IGF0dHJpYnV0ZS4gKi8K KwkJCWV4Y2VwdERhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVMTUFQLCBwdWJ0 dXBsZSwKKwkJCQkJCQkJCQkgIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3ByZXhjZXB0LAorCQkJ CQkJCQkJCSAgJmlzbnVsbCk7CisKKwkJCS8qCisJCQkgKiBXZSBmZXRjaCBwdWJ0dXBsZSBpZiBw dWJsaWNhdGlvbiBpcyBub3QgRk9SIEFMTCBUQUJMRVMgYW5kIG5vdAorCQkJICogRk9SIFRBQkxF UyBJTiBTQ0hFTUEuIFNvIGlmIHByZXhjZXB0IGlzIHRydWUsIGl0IGluZGljYXRlIHRoYXQKKwkJ CSAqIHByYXR0cnMgY29udGFpbnMgY29sdW1ucyB0byBiZSBleGNsdWRlZCBmb3IgcmVwbGljYXRp b24uCisJCQkgKi8KKwkJCWlmICghaXNudWxsKQorCQkJCWV4Y2VwdF9jb2x1bW5zID0gRGF0dW1H ZXRCb29sKGV4Y2VwdERhdHVtKTsKKwogCQkJdmFsdWVzWzJdID0gU3lzQ2FjaGVHZXRBdHRyKFBV QkxJQ0FUSU9OUkVMTUFQLCBwdWJ0dXBsZSwKIAkJCQkJCQkJCQlBbnVtX3BnX3B1YmxpY2F0aW9u X3JlbF9wcmF0dHJzLAogCQkJCQkJCQkJCSYobnVsbHNbMl0pKTsKQEAgLTEzMDMsMTUgKzEzMzcs MjQgQEAgcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhQR19GVU5DVElPTl9BUkdTKQogCQkJbnVs bHNbM10gPSB0cnVlOwogCQl9CiAKLQkJLyogU2hvdyBhbGwgY29sdW1ucyB3aGVuIHRoZSBjb2x1 bW4gbGlzdCBpcyBub3Qgc3BlY2lmaWVkLiAqLwotCQlpZiAobnVsbHNbMl0pCisJCS8qCisJCSAq IENvbnN0cnVjdCBjb2x1bW4gbGlzdCB0byBzaG93IGFsbCBjb2x1bW5zIHdoZW4gbm8gY29sdW1u IGxpc3QgaXMKKwkJICogc3BlY2lmaWVkIG9yIHRvIHNob3cgcmVtYWluaW5nIGNvbHVtbnMgd2hl biBhIGNvbHVtbiBsaXN0IGlzCisJCSAqIHByb3ZpZGVkIHdpdGggRVhDRVBULgorCQkgKi8KKwkJ aWYgKGV4Y2VwdF9jb2x1bW5zIHx8IG51bGxzWzJdKQogCQl7CiAJCQlSZWxhdGlvbglyZWwgPSB0 YWJsZV9vcGVuKHJlbGlkLCBBY2Nlc3NTaGFyZUxvY2spOwogCQkJaW50CQkJbmF0dG51bXMgPSAw OwogCQkJaW50MTYJICAgKmF0dG51bXM7CiAJCQlUdXBsZURlc2MJZGVzYyA9IFJlbGF0aW9uR2V0 RGVzY3IocmVsKTsKKwkJCUJpdG1hcHNldCAgKmNvbHVtbnMgPSBOVUxMOwogCQkJaW50CQkJaTsK IAorCQkJLyogSWYgYSBjb2x1bW4gbGlzdCBpcyBzcGVjaWZpZWQgd2l0aCBFWENFUFQgKi8KKwkJ CWlmIChleGNlcHRfY29sdW1ucyAmJiAhbnVsbHNbMl0pCisJCQkJY29sdW1ucyA9IHB1Yl9jb2xs aXN0X3RvX2JpdG1hcHNldChOVUxMLCB2YWx1ZXNbMl0sIE5VTEwpOworCiAJCQlhdHRudW1zID0g KGludDE2ICopIHBhbGxvYyhkZXNjLT5uYXR0cyAqIHNpemVvZihpbnQxNikpOwogCiAJCQlmb3Ig KGkgPSAwOyBpIDwgZGVzYy0+bmF0dHM7IGkrKykKQEAgLTEzMzUsNiArMTM3OCwxMyBAQCBwZ19n ZXRfcHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCQljb250aW51ZTsK IAkJCQl9CiAKKwkJCQkvKgorCQkJCSAqIFNraXAgY29sdW1ucyB0aGF0IGFyZSBwYXJ0IG9mIGNv bHVtbiBsaXN0IHNwZWNpZmllZCB3aXRoCisJCQkJICogRVhDRVBULgorCQkJCSAqLworCQkJCWlm IChleGNlcHRfY29sdW1ucyAmJiBibXNfaXNfbWVtYmVyKGF0dC0+YXR0bnVtLCBjb2x1bW5zKSkK KwkJCQkJY29udGludWU7CisKIAkJCQlhdHRudW1zW25hdHRudW1zKytdID0gYXR0LT5hdHRudW07 CiAJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21k cy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKaW5kZXggODI1MDBj ZjlmZWYuLjJkYjMyZTFkMWE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJs aWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMu YwpAQCAtMjA0LDcgKzIwNCw2IEBAIE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1 Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQlzd2l0Y2ggKHB1Ym9iai0+cHVi b2JqdHlwZSkKIAkJewogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9UQUJMRToKLQkJCQlwdWJvYmot PnB1YnRhYmxlLT5leGNlcHQgPSBmYWxzZTsKIAkJCQkqcmVscyA9IGxhcHBlbmQoKnJlbHMsIHB1 Ym9iai0+cHVidGFibGUpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9FWENF UFRfVEFCTEU6CkBAIC0zNTgsNyArMzU3LDggQEAgcHViX3JmX2NvbnRhaW5zX2ludmFsaWRfY29s dW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKmFuY2VzdG9ycywKICAqIFRo aXMgZnVuY3Rpb24gZXZhbHVhdGVzIHR3byBjb25kaXRpb25zOgogICoKICAqIDEuIEVuc3VyZXMg dGhhdCBhbGwgY29sdW1ucyByZWZlcmVuY2VkIGluIHRoZSBSRVBMSUNBIElERU5USVRZIGFyZSBj b3ZlcmVkCi0gKiAgICBieSB0aGUgY29sdW1uIGxpc3QuIElmIGFueSBjb2x1bW4gaXMgbWlzc2lu ZywgKmludmFsaWRfY29sdW1uX2xpc3QgaXMgc2V0CisgKiAgICBieSB0aGUgY29sdW1uIGxpc3Qg YW5kIGFyZSBub3QgcGFydCBvZiBjb2x1bW4gbGlzdCBzcGVjaWZpZWQgd2l0aCBFWENFUFQuCisg KiAJICBJZiBhbnkgY29sdW1uIGlzIG1pc3NpbmcsICppbnZhbGlkX2NvbHVtbl9saXN0IGlzIHNl dAogICogICAgdG8gdHJ1ZS4KICAqIDIuIEVuc3VyZXMgdGhhdCBhbGwgdGhlIGdlbmVyYXRlZCBj b2x1bW5zIHJlZmVyZW5jZWQgaW4gdGhlIFJFUExJQ0EgSURFTlRJVFkKICAqICAgIGFyZSBwdWJs aXNoZWQsIGVpdGhlciBieSBiZWluZyBleHBsaWNpdGx5IG5hbWVkIGluIHRoZSBjb2x1bW4gbGlz dCBvciwgaWYKQEAgLTM4MSw2ICszODEsNyBAQCBwdWJfY29udGFpbnNfaW52YWxpZF9jb2x1bW4o T2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3JzLAogCVR1cGxlRGVz YwlkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbik7CiAJUHVibGljYXRpb24gKnB1YjsK IAlpbnQJCQl4OworCWJvb2wJCWV4Y2VwdF9jb2x1bW5zID0gZmFsc2U7CiAKIAkqaW52YWxpZF9j b2x1bW5fbGlzdCA9IGZhbHNlOwogCSppbnZhbGlkX2dlbl9jb2wgPSBmYWxzZTsKQEAgLTQwNCw3 ICs0MDUsOCBAQCBwdWJfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlv biByZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3JzLAogCiAJLyogRmV0Y2ggdGhlIGNvbHVtbiBsaXN0 ICovCiAJcHViID0gR2V0UHVibGljYXRpb24ocHViaWQpOwotCWNoZWNrX2FuZF9mZXRjaF9jb2x1 bW5fbGlzdChwdWIsIHB1Ymxpc2hfYXNfcmVsaWQsIE5VTEwsICZjb2x1bW5zKTsKKwljaGVja19h bmRfZmV0Y2hfY29sdW1uX2xpc3QocHViLCBwdWJsaXNoX2FzX3JlbGlkLCBOVUxMLCAmY29sdW1u cywKKwkJCQkJCQkJJmV4Y2VwdF9jb2x1bW5zKTsKIAogCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5y ZWxyZXBsaWRlbnQgPT0gUkVQTElDQV9JREVOVElUWV9GVUxMKQogCXsKQEAgLTQ5NCw4ICs0OTYs MTQgQEAgcHViX2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVs YXRpb24sIExpc3QgKmFuY2VzdG9ycywKIAkJCWF0dG51bSA9IGdldF9hdHRudW0ocHVibGlzaF9h c19yZWxpZCwgY29sbmFtZSk7CiAJCX0KIAotCQkvKiByZXBsaWNhIGlkZW50aXR5IGNvbHVtbiwg bm90IGNvdmVyZWQgYnkgdGhlIGNvbHVtbiBsaXN0ICovCi0JCSppbnZhbGlkX2NvbHVtbl9saXN0 IHw9ICFibXNfaXNfbWVtYmVyKGF0dG51bSwgY29sdW1ucyk7CisJCS8qCisJCSAqIFJlcGxpY2Eg aWRlbnRpdHkgY29sdW1uLCBub3QgY292ZXJlZCBieSB0aGUgY29sdW1uIGxpc3Qgb3IgaXMgcGFy dAorCQkgKiBvZiBjb2x1bW4gbGlzdCBzcGVjaWZpZWQgd2l0aCBFWENFUFQuCisJCSAqLworCQlp ZiAoZXhjZXB0X2NvbHVtbnMpCisJCQkqaW52YWxpZF9jb2x1bW5fbGlzdCB8PSBibXNfaXNfbWVt YmVyKGF0dG51bSwgY29sdW1ucyk7CisJCWVsc2UKKwkJCSppbnZhbGlkX2NvbHVtbl9saXN0IHw9 ICFibXNfaXNfbWVtYmVyKGF0dG51bSwgY29sdW1ucyk7CiAKIAkJaWYgKCppbnZhbGlkX2NvbHVt bl9saXN0ICYmICppbnZhbGlkX2dlbl9jb2wpCiAJCQlicmVhazsKQEAgLTE0NDEsNiArMTQ0OSw3 IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhl YXBUdXBsZSB0dXAsCiAJCQlIZWFwVHVwbGUJcmZ0dXBsZTsKIAkJCU5vZGUJICAgKm9sZHJlbHdo ZXJlY2xhdXNlID0gTlVMTDsKIAkJCUJpdG1hcHNldCAgKm9sZGNvbHVtbnMgPSBOVUxMOworCQkJ Ym9vbAkJb2xkZXhjZXB0ID0gZmFsc2U7CiAKIAkJCS8qIGxvb2sgdXAgdGhlIGNhY2hlIGZvciB0 aGUgb2xkIHJlbG1hcCAqLwogCQkJcmZ0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMihQVUJMSUNBVElP TlJFTE1BUCwKQEAgLTE0NTYsNiArMTQ2NSw3IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0 ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCQkJYm9vbAkJaXNudWxs ID0gdHJ1ZTsKIAkJCQlEYXR1bQkJd2hlcmVDbGF1c2VEYXR1bTsKIAkJCQlEYXR1bQkJY29sdW1u TGlzdERhdHVtOworCQkJCURhdHVtCQlleGNlcHREYXR1bTsKIAogCQkJCS8qIExvYWQgdGhlIFdI RVJFIGNsYXVzZSBmb3IgdGhpcyB0YWJsZS4gKi8KIAkJCQl3aGVyZUNsYXVzZURhdHVtID0gU3lz Q2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVMTUFQLCByZnR1cGxlLApAQCAtMTQ3Miw2ICsxNDgy LDEzIEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQs IEhlYXBUdXBsZSB0dXAsCiAJCQkJaWYgKCFpc251bGwpCiAJCQkJCW9sZGNvbHVtbnMgPSBwdWJf Y29sbGlzdF90b19iaXRtYXBzZXQoTlVMTCwgY29sdW1uTGlzdERhdHVtLCBOVUxMKTsKIAorCQkJ CWV4Y2VwdERhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVMTUFQLCByZnR1cGxl LAorCQkJCQkJCQkJCQkgIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3ByZXhjZXB0LAorCQkJCQkJ CQkJCQkgICZpc251bGwpOworCisJCQkJaWYgKCFpc251bGwpCisJCQkJCW9sZGV4Y2VwdCA9IERh dHVtR2V0Qm9vbChleGNlcHREYXR1bSk7CisKIAkJCQlSZWxlYXNlU3lzQ2FjaGUocmZ0dXBsZSk7 CiAJCQl9CiAKQEAgLTE1MDMsNyArMTUyMCw4IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0 ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCQkJaWYgKG5ld3JlbGlk ID09IG9sZHJlbGlkKQogCQkJCXsKIAkJCQkJaWYgKGVxdWFsKG9sZHJlbHdoZXJlY2xhdXNlLCBu ZXdwdWJyZWwtPndoZXJlQ2xhdXNlKSAmJgotCQkJCQkJYm1zX2VxdWFsKG9sZGNvbHVtbnMsIG5l d2NvbHVtbnMpKQorCQkJCQkJYm1zX2VxdWFsKG9sZGNvbHVtbnMsIG5ld2NvbHVtbnMpICYmCisJ CQkJCQlvbGRleGNlcHQgPT0gbmV3cHVicmVsLT5leGNlcHQpCiAJCQkJCXsKIAkJCQkJCWZvdW5k ID0gdHJ1ZTsKIAkJCQkJCWJyZWFrOwpAQCAtMTUyMCw2ICsxNTM4LDcgQEAgQWx0ZXJQdWJsaWNh dGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJ CQlvbGRyZWwgPSBwYWxsb2Moc2l6ZW9mKFB1YmxpY2F0aW9uUmVsSW5mbykpOwogCQkJCW9sZHJl bC0+d2hlcmVDbGF1c2UgPSBOVUxMOwogCQkJCW9sZHJlbC0+Y29sdW1ucyA9IE5JTDsKKwkJCQlv bGRyZWwtPmV4Y2VwdCA9IGZhbHNlOwogCQkJCW9sZHJlbC0+cmVsYXRpb24gPSB0YWJsZV9vcGVu KG9sZHJlbGlkLAogCQkJCQkJCQkJCQkgIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CiAJCQkJ ZGVscmVscyA9IGxhcHBlbmQoZGVscmVscywgb2xkcmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGQ3ZmU5 NWE4NDBmLi5iMDA0NWE1NmM2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC00NDYsNiArNDQ2LDcgQEAgc3Rh dGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFs aWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQlUcmlnZ2VyVHJhbnNpdGlvbnMgVHJpZ2dlclJlZmVy ZW5jaW5nCiAJCQkJdmFjdXVtX3JlbGF0aW9uX2xpc3Qgb3B0X3ZhY3V1bV9yZWxhdGlvbl9saXN0 CiAJCQkJZHJvcF9vcHRpb25fbGlzdCBwdWJfb2JqX2xpc3QgZXhjZXB0X3B1Yl9vYmpfbGlzdAor CQkJCW9wdF9leGNlcHRfY29sdW1uX2xpc3QKIAogJXR5cGUgPHJldGNsYXVzZT4gcmV0dXJuaW5n X2NsYXVzZQogJXR5cGUgPG5vZGU+CXJldHVybmluZ19vcHRpb24KQEAgLTQ0MTMsNiArNDQxNCwx MCBAQCBvcHRfY29sdW1uX2xpc3Q6CiAJCQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IE5JTDsg fQogCQk7CiAKK29wdF9leGNlcHRfY29sdW1uX2xpc3Q6CisJCQknKCcgY29sdW1uTGlzdCAnKScJ CQkJCQl7ICQkID0gJDI7IH0KKwkJOworCiBjb2x1bW5MaXN0OgogCQkJY29sdW1uRWxlbQkJCQkJ CQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CiAJCQl8IGNvbHVtbkxpc3QgJywnIGNvbHVtbkVs ZW0JCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQpAQCAtMTA2NzksNiArMTA2ODQsMTcgQEAg UHVibGljYXRpb25PYmpTcGVjOgogCQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0gJDQ7 CiAJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOwogCQkJCX0KKwkJCXwgVEFCTEUgcmVsYXRpb25fZXhw ciBFWENFUFQgb3B0X2V4Y2VwdF9jb2x1bW5fbGlzdCBPcHRXaGVyZUNsYXVzZQorCQkJCXsKKwkJ CQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOworCQkJCQkkJC0+cHVib2JqdHlw ZSA9IFBVQkxJQ0FUSU9OT0JKX1RBQkxFOworCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQ dWJsaWNhdGlvblRhYmxlKTsKKwkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQyOworCQkJ CQkkJC0+cHVidGFibGUtPmNvbHVtbnMgPSAkNDsKKwkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNs YXVzZSA9ICQ1OworCQkJCQkkJC0+cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7CisJCQkJCSQkLT5s b2NhdGlvbiA9IEAxOworCQkJCX0KIAkJCXwgVEFCTEVTIElOX1AgU0NIRU1BIENvbElkCiAJCQkJ ewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CkBAIC0xMDcxOSw2ICsx MDczNSwzNCBAQCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJCQkJCX0KIAkJCQkJJCQtPmxvY2F0aW9u ID0gQDE7CiAJCQkJfQorCQkJfCBDb2xJZCBFWENFUFQgb3B0X2V4Y2VwdF9jb2x1bW5fbGlzdCBP cHRXaGVyZUNsYXVzZQorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNw ZWMpOworCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTjsK KwkJCQkJLyoKKwkJCQkJICogSWYgZWl0aGVyIGEgcm93IGZpbHRlciBvciBleGNsdWRlIGNvbHVt biBsaXN0IGlzCisJCQkJCSAqIHNwZWNpZmllZCwgY3JlYXRlIGEgUHVibGljYXRpb25UYWJsZSBv YmplY3QuCisJCQkJCSAqLworCQkJCQlpZiAoJDMgfHwgJDQpCisJCQkJCXsKKwkJCQkJCS8qCisJ CQkJCQkgKiBUaGUgT3B0V2hlcmVDbGF1c2UgbXVzdCBiZSBzdG9yZWQgaGVyZSBidXQgaXQgaXMK KwkJCQkJCSAqIHZhbGlkIG9ubHkgZm9yIHRhYmxlcy4gRm9yIG5vbi10YWJsZSBvYmplY3RzLCBh bgorCQkJCQkJICogZXJyb3Igd2lsbCBiZSB0aHJvd24gbGF0ZXIgdmlhCisJCQkJCQkgKiBwcmVw cm9jZXNzX3B1Ym9ial9saXN0KCkuCisJCQkJCQkgKi8KKwkJCQkJCSQkLT5wdWJ0YWJsZSA9IG1h a2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOworCQkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9 IG1ha2VSYW5nZVZhcihOVUxMLCAkMSwgQDEpOworCQkJCQkJJCQtPnB1YnRhYmxlLT5jb2x1bW5z ID0gJDM7CisJCQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0gJDQ7CisJCQkJCQkkJC0+ cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJ CQkkJC0+bmFtZSA9ICQxOworCQkJCQl9CisJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOworCQkJCX0K IAkJCXwgQ29sSWQgaW5kaXJlY3Rpb24gb3B0X2NvbHVtbl9saXN0IE9wdFdoZXJlQ2xhdXNlCiAJ CQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CkBAIC0xMDcyOSw2 ICsxMDc3MywxNyBAQCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJCQkJCSQkLT5wdWJ0YWJsZS0+d2hl cmVDbGF1c2UgPSAkNDsKIAkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CiAJCQkJfQorCQkJfCBDb2xJ ZCBpbmRpcmVjdGlvbiBFWENFUFQgb3B0X2V4Y2VwdF9jb2x1bW5fbGlzdCBPcHRXaGVyZUNsYXVz ZQorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOworCQkJCQkk JC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTjsKKwkJCQkJJCQtPnB1 YnRhYmxlID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7CisJCQkJCSQkLT5wdWJ0YWJsZS0+ cmVsYXRpb24gPSBtYWtlUmFuZ2VWYXJGcm9tUXVhbGlmaWVkTmFtZSgkMSwgJDIsIEAxLCB5eXNj YW5uZXIpOworCQkJCQkkJC0+cHVidGFibGUtPmNvbHVtbnMgPSAkNDsKKwkJCQkJJCQtPnB1YnRh YmxlLT53aGVyZUNsYXVzZSA9ICQ1OworCQkJCQkkJC0+cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7 CisJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOworCQkJCX0KIAkJCS8qIGdyYW1tYXIgbGlrZSB0YWJs ZW5hbWUgKiAsIE9OTFkgdGFibGVuYW1lLCBPTkxZICggdGFibGVuYW1lICkgKi8KIAkJCXwgZXh0 ZW5kZWRfcmVsYXRpb25fZXhwciBvcHRfY29sdW1uX2xpc3QgT3B0V2hlcmVDbGF1c2UKIAkJCQl7 CkBAIC0xMDczOSw2ICsxMDc5NCwxNiBAQCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJCQkJCSQkLT5w dWJ0YWJsZS0+Y29sdW1ucyA9ICQyOwogCQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0g JDM7CiAJCQkJfQorCQkJfCBleHRlbmRlZF9yZWxhdGlvbl9leHByIEVYQ0VQVCBvcHRfZXhjZXB0 X2NvbHVtbl9saXN0IE9wdFdoZXJlQ2xhdXNlCisJCQkJeworCQkJCQkkJCA9IG1ha2VOb2RlKFB1 YmxpY2F0aW9uT2JqU3BlYyk7CisJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpf Q09OVElOVUFUSU9OOworCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlvblRh YmxlKTsKKwkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQxOworCQkJCQkkJC0+cHVidGFi bGUtPmNvbHVtbnMgPSAkMzsKKwkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQ0Owor CQkJCQkkJC0+cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7CisJCQkJfQogCQkJfCBDVVJSRU5UX1ND SEVNQQogCQkJCXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggNTUxMmI0Y2Jh N2YuLjdiY2ViMDljMmVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291 dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bn b3V0cHV0LmMKQEAgLTE4NSw2ICsxODUsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVsYXRpb25TeW5j RW50cnkKIAkgKiByb3cgZmlsdGVyIGV4cHJlc3Npb25zLCBjb2x1bW4gbGlzdCwgZXRjLgogCSAq LwogCU1lbW9yeUNvbnRleHQgZW50cnlfY3h0OworCisJLyoKKwkgKiBJbmRpY2F0ZXMgd2hldGhl ciBubyBjb2x1bW5zIGFyZSBwdWJsaXNoZWQgZm9yIGEgZ2l2ZW4gcmVsYXRpb24uIFdpdGgKKwkg KiB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBFWENFUFQgY2xhdXNlIGluIGNvbHVtbiBsaXN0cywg aXQgaXMgbm93CisJICogcG9zc2libGUgdG8gZGVmaW5lIGEgcHVibGljYXRpb24gdGhhdCBleGNs dWRlcyBhbGwgY29sdW1ucyBvZiBhIHRhYmxlLgorCSAqIEhvd2V2ZXIsIHRoZSAnY29sdW1ucycg YXR0cmlidXRlIGNhbm5vdCByZXByZXNlbnQgdGhpcyBjYXNlLCBzaW5jZSBhCisJICogTlVMTCB2 YWx1ZSBpbXBsaWVzIHRoYXQgYWxsIGNvbHVtbnMgYXJlIHB1Ymxpc2hlZC4gVG8gZGlzdGluZ3Vp c2ggdGhpcworCSAqIHNjZW5hcmlvLCB0aGUgJ25vX2NvbHNfcHVibGlzaGVkJyBmbGFnIGlzIGlu dHJvZHVjZWQuCisJICovCisJYm9vbAkJbm9fY29sc19wdWJsaXNoZWQ7CiB9IFJlbGF0aW9uU3lu Y0VudHJ5OwogCiAvKgpAQCAtMTA2NiwxMiArMTA3NiwyMSBAQCBjaGVja19hbmRfaW5pdF9nZW5j b2woUEdPdXRwdXREYXRhICpkYXRhLCBMaXN0ICpwdWJsaWNhdGlvbnMsCiAJICovCiAJZm9yZWFj aF9wdHIoUHVibGljYXRpb24sIHB1YiwgcHVibGljYXRpb25zKQogCXsKKwkJYm9vbAkJaGFzX2Nv bHVtbl9saXN0ID0gZmFsc2U7CisJCWJvb2wJCWV4Y2VwdF9jb2x1bW5zID0gZmFsc2U7CisKKwkJ aGFzX2NvbHVtbl9saXN0ID0gY2hlY2tfYW5kX2ZldGNoX2NvbHVtbl9saXN0KHB1YiwKKwkJCQkJ CQkJCQkJCQkgIGVudHJ5LT5wdWJsaXNoX2FzX3JlbGlkLAorCQkJCQkJCQkJCQkJCSAgTlVMTCwg TlVMTCwKKwkJCQkJCQkJCQkJCQkgICZleGNlcHRfY29sdW1ucyk7CisKIAkJLyoKIAkJICogVGhl IGNvbHVtbiBsaXN0IHRha2VzIHByZWNlZGVuY2Ugb3ZlciB0aGUKIAkJICogJ3B1Ymxpc2hfZ2Vu ZXJhdGVkX2NvbHVtbnMnIHBhcmFtZXRlci4gVGhvc2Ugd2lsbCBiZSBjaGVja2VkIGxhdGVyLAot CQkgKiBzZWUgcGdvdXRwdXRfY29sdW1uX2xpc3RfaW5pdC4KKwkJICogc2VlIHBnb3V0cHV0X2Nv bHVtbl9saXN0X2luaXQuIEJ1dCB3aGVuIGEgY29sdW1uIGxpc3QgaXMgc3BlY2lmaWVkCisJCSAq IHdpdGggRVhDRVBULCBpdCBzaG91bGQgYmUgY2hlY2tlZC4KIAkJICovCi0JCWlmIChjaGVja19h bmRfZmV0Y2hfY29sdW1uX2xpc3QocHViLCBlbnRyeS0+cHVibGlzaF9hc19yZWxpZCwgTlVMTCwg TlVMTCkpCisJCWlmIChoYXNfY29sdW1uX2xpc3QgJiYgIWV4Y2VwdF9jb2x1bW5zKQogCQkJY29u dGludWU7CiAKIAkJaWYgKGZpcnN0KQpAQCAtMTEyMCwxMSArMTEzOSwzMCBAQCBwZ291dHB1dF9j b2x1bW5fbGlzdF9pbml0KFBHT3V0cHV0RGF0YSAqZGF0YSwgTGlzdCAqcHVibGljYXRpb25zLAog CXsKIAkJUHVibGljYXRpb24gKnB1YiA9IGxmaXJzdChsYyk7CiAJCUJpdG1hcHNldCAgKmNvbHMg PSBOVUxMOworCQlib29sCQlleGNlcHRfY29sdW1ucyA9IGZhbHNlOworCQlib29sCQlub19jb2xf cHVibGlzaGVkID0gZmFsc2U7CiAKIAkJLyogUmV0cmlldmUgdGhlIGJpdG1hcCBvZiBjb2x1bW5z IGZvciBhIGNvbHVtbiBsaXN0IHB1YmxpY2F0aW9uLiAqLwogCQlmb3VuZF9wdWJfY29sbGlzdCB8 PSBjaGVja19hbmRfZmV0Y2hfY29sdW1uX2xpc3QocHViLAogCQkJCQkJCQkJCQkJCQkgZW50cnkt PnB1Ymxpc2hfYXNfcmVsaWQsCi0JCQkJCQkJCQkJCQkJCSBlbnRyeS0+ZW50cnlfY3h0LCAmY29s cyk7CisJCQkJCQkJCQkJCQkJCSBlbnRyeS0+ZW50cnlfY3h0LCAmY29scywKKwkJCQkJCQkJCQkJ CQkJICZleGNlcHRfY29sdW1ucyk7CisKKwkJLyoKKwkJICogSWYgY29sdW1uIGxpc3QgaXMgc3Bl Y2lmaWVkIHdpdGggRVhDRVBUIHJldHJpZXZlIGJpdG1hcCBvZiBjb2x1bW5zCisJCSAqIHdoaWNo IGFyZSBub3QgcGFydCBvZiB0aGlzIGNvbHVtbiBsaXN0LgorCQkgKi8KKwkJaWYgKGV4Y2VwdF9j b2x1bW5zKQorCQl7CisJCQlNZW1vcnlDb250ZXh0IG9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhlbnRyeS0+ZW50cnlfY3h0KTsKKworCQkJY29scyA9IHB1Yl9mb3JtX2NvbHNfbWFwKHJl bGF0aW9uLAorCQkJCQkJCQkJIGVudHJ5LT5pbmNsdWRlX2dlbmNvbHNfdHlwZSwgY29scyk7CisJ CQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKworCQkJaWYgKCFjb2xzKQorCQkJCW5v X2NvbF9wdWJsaXNoZWQgPSB0cnVlOworCQl9CiAKIAkJLyoKIAkJICogRm9yIG5vbi1jb2x1bW4g bGlzdCBwdWJsaWNhdGlvbnMg4oCUIGUuZy4gVEFCTEUgKHdpdGhvdXQgYSBjb2x1bW4KQEAgLTEx MzIsNyArMTE3MCw3IEBAIHBnb3V0cHV0X2NvbHVtbl9saXN0X2luaXQoUEdPdXRwdXREYXRhICpk YXRhLCBMaXN0ICpwdWJsaWNhdGlvbnMsCiAJCSAqIG9mIHRoZSB0YWJsZSAoaW5jbHVkaW5nIGdl bmVyYXRlZCBjb2x1bW5zIHdoZW4KIAkJICogJ3B1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMnIHBh cmFtZXRlciBpcyB0cnVlKS4KIAkJICovCi0JCWlmICghY29scykKKwkJaWYgKCFub19jb2xfcHVi bGlzaGVkICYmICFjb2xzKQogCQl7CiAJCQkvKgogCQkJICogQ2FjaGUgdGhlIHRhYmxlIGNvbHVt bnMgZm9yIHRoZSBmaXJzdCBwdWJsaWNhdGlvbiB3aXRoIG5vCkBAIC0xMTQ0LDcgKzExODIsNyBA QCBwZ291dHB1dF9jb2x1bW5fbGlzdF9pbml0KFBHT3V0cHV0RGF0YSAqZGF0YSwgTGlzdCAqcHVi bGljYXRpb25zLAogCQkJCU1lbW9yeUNvbnRleHQgb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKGVudHJ5LT5lbnRyeV9jeHQpOwogCiAJCQkJcmVsY29scyA9IHB1Yl9mb3JtX2NvbHNfbWFw KHJlbGF0aW9uLAotCQkJCQkJCQkJCQllbnRyeS0+aW5jbHVkZV9nZW5jb2xzX3R5cGUpOworCQkJ CQkJCQkJCQllbnRyeS0+aW5jbHVkZV9nZW5jb2xzX3R5cGUsIE5VTEwpOwogCQkJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCQkJfQogCkBAIC0xMTU0LDkgKzExOTIsMTEgQEAgcGdv dXRwdXRfY29sdW1uX2xpc3RfaW5pdChQR091dHB1dERhdGEgKmRhdGEsIExpc3QgKnB1YmxpY2F0 aW9ucywKIAkJaWYgKGZpcnN0KQogCQl7CiAJCQllbnRyeS0+Y29sdW1ucyA9IGNvbHM7CisJCQll bnRyeS0+bm9fY29sc19wdWJsaXNoZWQgPSBub19jb2xfcHVibGlzaGVkOwogCQkJZmlyc3QgPSBm YWxzZTsKIAkJfQotCQllbHNlIGlmICghYm1zX2VxdWFsKGVudHJ5LT5jb2x1bW5zLCBjb2xzKSkK KwkJZWxzZSBpZiAoKGVudHJ5LT5ub19jb2xzX3B1Ymxpc2hlZCAhPSBub19jb2xfcHVibGlzaGVk KSB8fAorCQkJCSAhYm1zX2VxdWFsKGVudHJ5LT5jb2x1bW5zLCBjb2xzKSkKIAkJCWVyZXBvcnQo RVJST1IsCiAJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJ CQllcnJtc2coImNhbm5vdCB1c2UgZGlmZmVyZW50IGNvbHVtbiBsaXN0cyBmb3IgdGFibGUgXCIl cy4lc1wiIGluIGRpZmZlcmVudCBwdWJsaWNhdGlvbnMiLApAQCAtMTQ4MCw2ICsxNTIwLDEzIEBA IHBnb3V0cHV0X2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZm ZXJUWE4gKnR4biwKIAogCXJlbGVudHJ5ID0gZ2V0X3JlbF9zeW5jX2VudHJ5KGRhdGEsIHJlbGF0 aW9uKTsKIAorCS8qCisJICogSWYgYWxsIGNvbHVtbnMgb2YgYSB0YWJsZSBhcmUgcHJlc2VudCBp biBjb2x1bW4gbGlzdCBzcGVjaWZpZWQgd2l0aAorCSAqIEVYQ0VQVCwgc2tpcCBwdWJsaXNoaW5n IHRoZSBjaGFuZ2VzLgorCSAqLworCWlmIChyZWxlbnRyeS0+bm9fY29sc19wdWJsaXNoZWQpCisJ CXJldHVybjsKKwogCS8qIEZpcnN0IGNoZWNrIHRoZSB0YWJsZSBmaWx0ZXIgKi8KIAlzd2l0Y2gg KGFjdGlvbikKIAl7CkBAIC0yMDU3LDYgKzIxMDQsNyBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdP dXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJZW50cnktPnB1Ymxpc2hfYXNf cmVsaWQgPSBJbnZhbGlkT2lkOwogCQllbnRyeS0+Y29sdW1ucyA9IE5VTEw7CiAJCWVudHJ5LT5h dHRybWFwID0gTlVMTDsKKwkJZW50cnktPm5vX2NvbHNfcHVibGlzaGVkID0gZmFsc2U7CiAJfQog CiAJLyogVmFsaWRhdGUgdGhlIGVudHJ5ICovCkBAIC0yMTA2LDYgKzIxNTQsNyBAQCBnZXRfcmVs X3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJZW50 cnktPnB1YmFjdGlvbnMucHVidXBkYXRlID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJhY3Rpb25zLnB1 YmRlbGV0ZSA9IGZhbHNlOwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSA9IGZhbHNl OworCQllbnRyeS0+bm9fY29sc19wdWJsaXNoZWQgPSBmYWxzZTsKIAogCQkvKgogCQkgKiBUdXBs ZSBzbG90cyBjbGVhbnVwcy4gKFdpbGwgYmUgcmVidWlsdCBsYXRlciBpZiBuZWVkZWQpLgpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMKaW5kZXggNTZjNzhiNzQ0MWYuLjRhYzlkODRiYjNiIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ3 ODEsMjQgKzQ3ODEsNyBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJs ZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQlpZiAodGJpbmZvID09IE5VTEwpCiAJ CQljb250aW51ZTsKIAotCQkvKiBPSywgbWFrZSBhIER1bXBhYmxlT2JqZWN0IGZvciB0aGlzIHJl bGF0aW9uc2hpcCAqLwotCQlpZiAoc3RyY21wKHByZXhjZXB0LCAiZiIpID09IDApCi0JCQlwdWJy aW5mb1tqXS5kb2JqLm9ialR5cGUgPSBET19QVUJMSUNBVElPTl9SRUw7Ci0JCWVsc2UKLQkJCXB1 YnJpbmZvW2pdLmRvYmoub2JqVHlwZSA9IERPX1BVQkxJQ0FUSU9OX0VYQ0VQVF9SRUw7Ci0KLQkJ cHVicmluZm9bal0uZG9iai5jYXRJZC50YWJsZW9pZCA9Ci0JCQlhdG9vaWQoUFFnZXR2YWx1ZShy ZXMsIGksIGlfdGFibGVvaWQpKTsKLQkJcHVicmluZm9bal0uZG9iai5jYXRJZC5vaWQgPSBhdG9v aWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfb2lkKSk7Ci0JCUFzc2lnbkR1bXBJZCgmcHVicmluZm9b al0uZG9iaik7Ci0JCXB1YnJpbmZvW2pdLmRvYmoubmFtZXNwYWNlID0gdGJpbmZvLT5kb2JqLm5h bWVzcGFjZTsKLQkJcHVicmluZm9bal0uZG9iai5uYW1lID0gdGJpbmZvLT5kb2JqLm5hbWU7Ci0J CXB1YnJpbmZvW2pdLnB1YmxpY2F0aW9uID0gcHViaW5mbzsKLQkJcHVicmluZm9bal0ucHVidGFi bGUgPSB0YmluZm87Ci0JCWlmIChQUWdldGlzbnVsbChyZXMsIGksIGlfcHJyZWxxdWFsKSkKLQkJ CXB1YnJpbmZvW2pdLnB1YnJlbHF1YWwgPSBOVUxMOwotCQllbHNlCi0JCQlwdWJyaW5mb1tqXS5w dWJyZWxxdWFsID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3BycmVscXVhbCkpOwor CQlwdWJyaW5mb1tqXS5wdWJleGNlcHQgPSAoc3RyY21wKHByZXhjZXB0LCAidCIpID09IDApOwog CiAJCWlmICghUFFnZXRpc251bGwocmVzLCBpLCBpX3ByYXR0cnMpKQogCQl7CkBAIC00ODI0LDEw ICs0ODA3LDI5IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5m byB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCWVsc2UKIAkJCXB1YnJpbmZvW2pdLnB1YnJh dHRycyA9IE5VTEw7CiAKKwkJLyogT0ssIG1ha2UgYSBEdW1wYWJsZU9iamVjdCBmb3IgdGhpcyBy ZWxhdGlvbnNoaXAgKi8KKwkJaWYgKHB1YnJpbmZvW2pdLnB1YmV4Y2VwdCAmJiAhcHVicmluZm9b al0ucHVicmF0dHJzKQorCQkJcHVicmluZm9bal0uZG9iai5vYmpUeXBlID0gRE9fUFVCTElDQVRJ T05fRVhDRVBUX1JFTDsKKwkJZWxzZQorCQkJcHVicmluZm9bal0uZG9iai5vYmpUeXBlID0gRE9f UFVCTElDQVRJT05fUkVMOworCisJCXB1YnJpbmZvW2pdLmRvYmouY2F0SWQudGFibGVvaWQgPQor CQkJYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3RhYmxlb2lkKSk7CisJCXB1YnJpbmZvW2pd LmRvYmouY2F0SWQub2lkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX29pZCkpOworCQlB c3NpZ25EdW1wSWQoJnB1YnJpbmZvW2pdLmRvYmopOworCQlwdWJyaW5mb1tqXS5kb2JqLm5hbWVz cGFjZSA9IHRiaW5mby0+ZG9iai5uYW1lc3BhY2U7CisJCXB1YnJpbmZvW2pdLmRvYmoubmFtZSA9 IHRiaW5mby0+ZG9iai5uYW1lOworCQlwdWJyaW5mb1tqXS5wdWJsaWNhdGlvbiA9IHB1YmluZm87 CisJCXB1YnJpbmZvW2pdLnB1YnRhYmxlID0gdGJpbmZvOworCQlpZiAoUFFnZXRpc251bGwocmVz LCBpLCBpX3BycmVscXVhbCkpCisJCQlwdWJyaW5mb1tqXS5wdWJyZWxxdWFsID0gTlVMTDsKKwkJ ZWxzZQorCQkJcHVicmluZm9bal0ucHVicmVscXVhbCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJl cywgaSwgaV9wcnJlbHF1YWwpKTsKKwogCQkvKiBEZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGR1 bXAgaXQgKi8KIAkJc2VsZWN0RHVtcGFibGVQdWJsaWNhdGlvbk9iamVjdCgmKHB1YnJpbmZvW2pd LmRvYmopLCBmb3V0KTsKIAotCQlpZiAoc3RyY21wKHByZXhjZXB0LCAidCIpID09IDApCisJCWlm IChwdWJyaW5mb1tqXS5wdWJleGNlcHQgJiYgIXB1YnJpbmZvW2pdLnB1YnJhdHRycykKIAkJCXNp bXBsZV9wdHJfbGlzdF9hcHBlbmQoJmV4Y2VwdGluZm8sICZwdWJyaW5mb1tqXSk7CiAKIAkJaisr OwpAQCAtNDkwNyw3ICs0OTA5LDEyIEBAIGR1bXBQdWJsaWNhdGlvblRhYmxlKEFyY2hpdmUgKmZv dXQsIGNvbnN0IFB1YmxpY2F0aW9uUmVsSW5mbyAqcHVicmluZm8pCiAJCQkJCSAgZm10UXVhbGlm aWVkRHVtcGFibGUodGJpbmZvKSk7CiAKIAlpZiAocHVicmluZm8tPnB1YnJhdHRycykKKwl7CisJ CWlmIChwdWJyaW5mby0+cHViZXhjZXB0KQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnks ICIgRVhDRVBUIik7CisKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIgKCVzKSIsIHB1YnJp bmZvLT5wdWJyYXR0cnMpOworCX0KIAogCWlmIChwdWJyaW5mby0+cHVicmVscXVhbCkKIAl7CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuaAppbmRleCBhOWNiZWQ4YzljZS4uM2IzZDg2N2RiNTggMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAt NjgyLDYgKzY4Miw3IEBAIHR5cGVkZWYgc3RydWN0IF9QdWJsaWNhdGlvblJlbEluZm8KIAlUYWJs ZUluZm8gICpwdWJ0YWJsZTsKIAljaGFyCSAgICpwdWJyZWxxdWFsOwogCWNoYXIJICAgKnB1YnJh dHRyczsKKwlib29sCQlwdWJleGNlcHQ7CiB9IFB1YmxpY2F0aW9uUmVsSW5mbzsKIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmMKaW5kZXggMTBiNWY3ZjI5Y2IuLmE1NWM0YzY1MDVkIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMzAxOSwxMiAr MzAxOSwxNCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1l LAogCQkvKiBwcmludCBhbnkgcHVibGljYXRpb25zICovCiAJCWlmIChwc2V0LnN2ZXJzaW9uID49 IDEwMDAwMCkKIAkJewotCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTUwMDAwKQorCQkJLyogRklY TUU6IDE4MDAwMCBzaG91bGQgYmUgY2hhbmdlZCB0byAxOTAwMDAgbGF0ZXIgZm9yIFBHMTkuICov CisJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxODAwMDApCiAJCQl7CiAJCQkJcHJpbnRmUFFFeHBC dWZmZXIoJmJ1ZiwKIAkJCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKIAkJCQkJCQkJICAiICAg ICAsIE5VTExcbiIKIAkJCQkJCQkJICAiICAgICAsIE5VTExcbiIKKwkJCQkJCQkJICAiCQksIE5V TExcbiIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKIAkJ CQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fbmFtZXNwYWNlIHBu IE9OIHAub2lkID0gcG4ucG5wdWJpZFxuIgogCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxv Zy5wZ19jbGFzcyBwYyBPTiBwYy5yZWxuYW1lc3BhY2UgPSBwbi5wbm5zcGlkXG4iCkBAIC0zMDM4 LDM3ICszMDQwLDYxIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVt YW5hbWUsCiAJCQkJCQkJCSAgIiAgICAgICAgICAgICAgICBwZ19jYXRhbG9nLnBnX2F0dHJpYnV0 ZVxuIgogCQkJCQkJCQkgICIgICAgICAgICAgV0hFUkUgYXR0cmVsaWQgPSBwci5wcnJlbGlkIEFO RCBhdHRudW0gPSBwcmF0dHJzW3NdKVxuIgogCQkJCQkJCQkgICIgICAgICAgIEVMU0UgTlVMTCBF TkQpICIKKwkJCQkJCQkJICAiCQksIHByZXhjZXB0ICIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRh bG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKIAkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdf cHVibGljYXRpb25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgogCQkJCQkJCQkgICIJ CUpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgotCQkJ CQkJCQkgICJXSEVSRSBwci5wcnJlbGlkID0gJyVzJ1xuIiwKLQkJCQkJCQkJICBvaWQsIG9pZCwg b2lkKTsKLQotCQkJCS8qIEZJWE1FOiAxODAwMDAgc2hvdWxkIGJlIGNoYW5nZWQgdG8gMTkwMDAw IGxhdGVyIGZvciBQRzE5LiAqLwotCQkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE4MDAwMCkKLQkJ CQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiBBTkQgTk9UIHByLnByZXhjZXB0XG4iKTsK LQotCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCSAgIldIRVJFIHByLnBycmVs aWQgPSAnJXMnICIKKwkJCQkJCQkJICAiQU5EICBjLnJlbG5hbWVzcGFjZSBOT1QgSU4gKFxuICIK KwkJCQkJCQkJICAiIAlTRUxFQ1QgcG5uc3BpZCBGUk9NXG4iCisJCQkJCQkJCSAgIiAJcGdfY2F0 YWxvZy5wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UpXG4iCiAJCQkJCQkJCSAgIlVOSU9OXG4iCiAJ CQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lXG4iCiAJCQkJCQkJCSAgIgkJLCBOVUxMXG4iCiAJCQkJ CQkJCSAgIgkJLCBOVUxMXG4iCisJCQkJCQkJCSAgIgkJLCBOVUxMXG4iCisJCQkJCQkJCSAgIkZS T00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCisJCQkJCQkJCSAgIldIRVJFIHAucHVi YWxsdGFibGVzIEFORCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycp XG4iCisJCQkJCQkJCSAgIiAgICAgQU5EIE5PVCBFWElTVFMgKFxuIgorCQkJCQkJCQkgICIJCVNF TEVDVCAxXG4iCisJCQkJCQkJCSAgIgkJRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3Jl bCBwclxuIgorCQkJCQkJCQkgICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBwY1xuIgorCQkJ CQkJCQkgICIJCU9OIHByLnBycmVsaWQgPSBwYy5vaWRcbiIKKwkJCQkJCQkJICAiCQlXSEVSRSBw ci5wcnJlbGlkID0gJyVzJyBBTkQgcHIucHJwdWJpZCA9IHAub2lkKVxuIgorCQkJCQkJCQkgICJP UkRFUiBCWSAxOyIsCisJCQkJCQkJCSAgb2lkLCBvaWQsIG9pZCwgb2lkLCBvaWQpOworCQkJfQor CQkJZWxzZSBpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDApCisJCQl7CisJCQkJcHJpbnRmUFFF eHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKKwkJCQkJCQkJICAi ICAgICAsIE5VTExcbiIKKwkJCQkJCQkJICAiICAgICAsIE5VTExcbiIKKwkJCQkJCQkJICAiRlJP TSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKKwkJCQkJCQkJICAiICAgICBKT0lOIHBn X2NhdGFsb2cucGdfcHVibGljYXRpb25fbmFtZXNwYWNlIHBuIE9OIHAub2lkID0gcG4ucG5wdWJp ZFxuIgorCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBwYyBPTiBwYy5y ZWxuYW1lc3BhY2UgPSBwbi5wbm5zcGlkXG4iCisJCQkJCQkJCSAgIldIRVJFIHBjLm9pZCA9JyVz JyBhbmQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSgnJXMnKVxuIgorCQkJ CQkJCQkgICJVTklPTlxuIgorCQkJCQkJCQkgICJTRUxFQ1QgcHVibmFtZVxuIgorCQkJCQkJCQkg ICIgICAgICwgcGdfZ2V0X2V4cHIocHIucHJxdWFsLCBjLm9pZClcbiIKKwkJCQkJCQkJICAiICAg ICAsIChDQVNFIFdIRU4gcHIucHJhdHRycyBJUyBOT1QgTlVMTCBUSEVOXG4iCisJCQkJCQkJCSAg IiAgICAgICAgIChTRUxFQ1Qgc3RyaW5nX2FnZyhhdHRuYW1lLCAnLCAnKVxuIgorCQkJCQkJCQkg ICIgICAgICAgICAgIEZST00gcGdfY2F0YWxvZy5nZW5lcmF0ZV9zZXJpZXMoMCwgcGdfY2F0YWxv Zy5hcnJheV91cHBlcihwci5wcmF0dHJzOjpwZ19jYXRhbG9nLmludDJbXSwgMSkpIHMsXG4iCisJ CQkJCQkJCSAgIiAgICAgICAgICAgICAgICBwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZVxuIgorCQkJ CQkJCQkgICIgICAgICAgICAgV0hFUkUgYXR0cmVsaWQgPSBwci5wcnJlbGlkIEFORCBhdHRudW0g PSBwcmF0dHJzW3NdKVxuIgorCQkJCQkJCQkgICIgICAgICAgIEVMU0UgTlVMTCBFTkQpICIKIAkJ CQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKLQkJCQkJCQkJICAi V0hFUkUgcC5wdWJhbGx0YWJsZXMgQU5EIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlz aGFibGUoJyVzJylcbiIsCi0JCQkJCQkJCSAgb2lkKTsKLQotCQkJCS8qIEZJWE1FOiAxODAwMDAg c2hvdWxkIGJlIGNoYW5nZWQgdG8gMTkwMDAwIGxhdGVyIGZvciBQRzE5LiAqLwotCQkJCWlmIChw c2V0LnN2ZXJzaW9uID49IDE4MDAwMCkKLQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKLQkJ CQkJCQkJCSAgIiAgICAgQU5EIE5PVCBFWElTVFMgKFxuIgotCQkJCQkJCQkJICAiCQlTRUxFQ1Qg MVxuIgotCQkJCQkJCQkJICAiCQlGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHBy XG4iCi0JCQkJCQkJCQkgICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBwY1xuIgotCQkJCQkJ CQkJICAiCQlPTiBwci5wcnJlbGlkID0gcGMub2lkXG4iCi0JCQkJCQkJCQkgICIJCVdIRVJFIHBy LnBycmVsaWQgPSAnJXMnIEFORCBwci5wcnB1YmlkID0gcC5vaWQpXG4iLAotCQkJCQkJCQkJICBv aWQpOwotCi0JCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIk9SREVSIEJZIDE7Iik7CisJ CQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBw Lm9pZCA9IHByLnBycHViaWRcbiIKKwkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdf Y2xhc3MgYyBPTiBjLm9pZCA9IHByLnBycmVsaWRcbiIKKwkJCQkJCQkJICAiV0hFUkUgcHIucHJy ZWxpZCA9ICclcydcbiIKKwkJCQkJCQkJICAiVU5JT05cbiIKKwkJCQkJCQkJICAiU0VMRUNUIHB1 Ym5hbWVcbiIKKwkJCQkJCQkJICAiICAgICAsIE5VTExcbiIKKwkJCQkJCQkJICAiICAgICAsIE5V TExcbiIKKwkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKKwkJ CQkJCQkJICAiV0hFUkUgcC5wdWJhbGx0YWJsZXMgQU5EIHBnX2NhdGFsb2cucGdfcmVsYXRpb25f aXNfcHVibGlzaGFibGUoJyVzJylcbiIKKwkJCQkJCQkJICAiT1JERVIgQlkgMTsiLAorCQkJCQkJ CQkgIG9pZCwgb2lkLCBvaWQsIG9pZCk7CiAJCQl9CiAJCQllbHNlCiAJCQl7CkBAIC0zMTA2LDgg KzMxMzIsMTUgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFt ZSwKIAogCQkJCS8qIGNvbHVtbiBsaXN0IChpZiBhbnkpICovCiAJCQkJaWYgKCFQUWdldGlzbnVs bChyZXN1bHQsIGksIDIpKQotCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiICglcykiLAot CQkJCQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMikpOworCQkJCXsKKwkJCQkJaWYgKCFQ UWdldGlzbnVsbChyZXN1bHQsIGksIDMpICYmCisJCQkJCQlzdHJjbXAoUFFnZXR2YWx1ZShyZXN1 bHQsIGksIDMpLCAidCIpID09IDApCisJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiIEVY Q0VQVCAoJXMpIiwKKwkJCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAyKSk7CisJCQkJ CWVsc2UKKwkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICIgKCVzKSIsCisJCQkJCQkJCQkJ ICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMikpOworCQkJCX0KIAogCQkJCS8qIHJvdyBmaWx0ZXIg KGlmIGFueSkgKi8KIAkJCQlpZiAoIVBRZ2V0aXNudWxsKHJlc3VsdCwgaSwgMSkpCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5kZXggMzNiNzcxOTkwYmQuLjQ5ODMyMGM3ZmFlIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCkBAIC0xODAsNyArMTgwLDggQEAgZXh0 ZXJuIE9pZAlHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3Qg KmFuY2VzdG9ycywKIGV4dGVybiBib29sIGlzX3B1Ymxpc2hhYmxlX3JlbGF0aW9uKFJlbGF0aW9u IHJlbCk7CiBleHRlcm4gYm9vbCBpc19zY2hlbWFfcHVibGljYXRpb24oT2lkIHB1YmlkKTsKIGV4 dGVybiBib29sIGNoZWNrX2FuZF9mZXRjaF9jb2x1bW5fbGlzdChQdWJsaWNhdGlvbiAqcHViLCBP aWQgcmVsaWQsCi0JCQkJCQkJCQkJTWVtb3J5Q29udGV4dCBtY3h0LCBCaXRtYXBzZXQgKipjb2xz KTsKKwkJCQkJCQkJCQlNZW1vcnlDb250ZXh0IG1jeHQsIEJpdG1hcHNldCAqKmNvbHMsCisJCQkJ CQkJCQkJYm9vbCAqZXhjZXB0X2NvbHVtbnMpOwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGlj YXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJ CQkJCQkJCQkJCSAgYm9vbCBpZl9ub3RfZXhpc3RzKTsKIGV4dGVybiBCaXRtYXBzZXQgKnB1Yl9j b2xsaXN0X3ZhbGlkYXRlKFJlbGF0aW9uIHRhcmdldHJlbCwgTGlzdCAqY29sdW1ucyk7CkBAIC0x OTAsNiArMTkxLDcgQEAgZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRkX3NjaGVt YShPaWQgcHViaWQsIE9pZCBzY2hlbWFpZCwKIGV4dGVybiBCaXRtYXBzZXQgKnB1Yl9jb2xsaXN0 X3RvX2JpdG1hcHNldChCaXRtYXBzZXQgKmNvbHVtbnMsIERhdHVtIHB1YmNvbHMsCiAJCQkJCQkJ CQkJICAgTWVtb3J5Q29udGV4dCBtY3h0KTsKIGV4dGVybiBCaXRtYXBzZXQgKnB1Yl9mb3JtX2Nv bHNfbWFwKFJlbGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJCQkJUHVibGlzaEdlbmNvbHNUeXBlIGlu Y2x1ZGVfZ2VuY29sc190eXBlKTsKKwkJCQkJCQkJCVB1Ymxpc2hHZW5jb2xzVHlwZSBpbmNsdWRl X2dlbmNvbHNfdHlwZSwKKwkJCQkJCQkJCUJpdG1hcHNldCAqZXhjZXB0Y29scyk7CiAKICNlbmRp ZgkJCQkJCQkvKiBQR19QVUJMSUNBVElPTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbl9yZWwuaAppbmRleCBlN2Q3ZjNiYTg1Yy4uNmEyMTY4ZmMzMmMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmgKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaApAQCAtMzEsMTEgKzMxLDEyIEBAIENBVEFM T0cocGdfcHVibGljYXRpb25fcmVsLDYxMDYsUHVibGljYXRpb25SZWxSZWxhdGlvbklkKQogCU9p ZAkJCW9pZDsJCQkvKiBvaWQgKi8KIAlPaWQJCQlwcnB1YmlkIEJLSV9MT09LVVAocGdfcHVibGlj YXRpb24pOyAvKiBPaWQgb2YgdGhlIHB1YmxpY2F0aW9uICovCiAJT2lkCQkJcHJyZWxpZCBCS0lf TE9PS1VQKHBnX2NsYXNzKTsJLyogT2lkIG9mIHRoZSByZWxhdGlvbiAqLwotCWJvb2wJCXByZXhj ZXB0IEJLSV9ERUZBVUxUKGYpOwkvKiBleGNsdWRlIHRoZSByZWxhdGlvbiAqLworCWJvb2wJCXBy ZXhjZXB0IEJLSV9ERUZBVUxUKGYpOwkvKiBleGNsdWRlIHRoZSByZWxhdGlvbiBvciBjb2x1bW5z ICovCiAKICNpZmRlZglDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMg c3RhcnQgaGVyZSAqLwogCXBnX25vZGVfdHJlZSBwcnF1YWw7CQkvKiBxdWFsaWZpY2F0aW9ucyAq LwotCWludDJ2ZWN0b3IJcHJhdHRyczsJCS8qIGNvbHVtbnMgdG8gcmVwbGljYXRlICovCisJaW50 MnZlY3RvcglwcmF0dHJzOwkJLyogY29sdW1ucyB0byByZXBsaWNhdGUgb3IgZXhjbHVkZSB0bwor CQkJCQkJCQkgKiByZXBsaWNhdGUgKi8KICNlbmRpZgogfSBGb3JtRGF0YV9wZ19wdWJsaWNhdGlv bl9yZWw7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRp b24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXgg MGJmNDU4MmRkMTcuLjIwZjI5Y2VjNzdiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dApAQCAtMjEzMSw2ICsyMTMxLDY3IEBAIFNFVCBST0xFIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlcjsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldDsKIERST1AgVEFC TEUgcHViX3NjaDEudGJsMTsKIERST1AgVEFCTEUgcHViX3NjaDEudGJsMjsKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdCBF WENFUFQgY29sdW1ucyBmb3IgQ1JFQVRFIFBVQkxJQ0FUSU9OCitTRVQgY2xpZW50X21pbl9tZXNz YWdlcyA9ICdFUlJPUic7CitDUkVBVEUgVEFCTEUgcHViX3Rlc3RfZXhjZXB0MSAoYSBpbnQgTk9U IE5VTEwsIGIgaW50LCBjIGludCBOT1QgTlVMTCwgZCBpbnQpOworQ1JFQVRFIFRBQkxFIHB1Yl9z Y2gxLnB1Yl90ZXN0X2V4Y2VwdDIgKGEgaW50LCBiIGludCwgYyBpbnQsIGQgaW50KTsKKy0tIFZl cmlmeSB0aGF0IHB1YmxpY2F0aW9uIGlzIGNyZWF0ZWQgd2l0aCBFWENFUFQKK0NSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViX2V4Y2VwdCBGT1IgVEFCTEUgcHViX3Rlc3RfZXhjZXB0MSwgcHViX3Nj aDEucHViX3Rlc3RfZXhjZXB0MiBFWENFUFQgKGIsIGMpOworU0VMRUNUICogRlJPTSBwZ19wdWJs aWNhdGlvbl90YWJsZXMgV0hFUkUgcHVibmFtZSA9ICd0ZXN0cHViX2V4Y2VwdCc7CisgICAgcHVi bmFtZSAgICAgfCBzY2hlbWFuYW1lIHwgICAgdGFibGVuYW1lICAgICB8IGF0dG5hbWVzICB8IHJv d2ZpbHRlciAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIHRlc3RwdWJfZXhjZXB0IHwgcHVibGljICAgICB8 IHB1Yl90ZXN0X2V4Y2VwdDEgfCB7YSxiLGMsZH0gfCAKKyB0ZXN0cHViX2V4Y2VwdCB8IHB1Yl9z Y2gxICAgfCBwdWJfdGVzdF9leGNlcHQyIHwge2EsZH0gICAgIHwgCisoMiByb3dzKQorCistLSBD aGVjayBmb3IgaW52YWxpZCBjYXNlcworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0 MiBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfc2NoMSwgVEFCTEUgcHViX3Rlc3RfZXhjZXB0MSBF WENFUFQgKGIsIGMpOworRVJST1I6ICBjYW5ub3QgdXNlIGNvbHVtbiBsaXN0IGZvciByZWxhdGlv biAicHVibGljLnB1Yl90ZXN0X2V4Y2VwdDEiIGluIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2V4Y2Vw dDIiCitERVRBSUw6ICBDb2x1bW4gbGlzdHMgY2Fubm90IGJlIHNwZWNpZmllZCBpbiBwdWJsaWNh dGlvbnMgY29udGFpbmluZyBGT1IgVEFCTEVTIElOIFNDSEVNQSBlbGVtZW50cy4KK0NSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdDIgRk9SIFRBQkxFIHB1Yl90ZXN0X2V4Y2VwdDEgRVhD RVBUOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiOyIKK0xJTkUgMTogLi4uQkxJ Q0FUSU9OIHRlc3RwdWJfZXhjZXB0MiBGT1IgVEFCTEUgcHViX3Rlc3RfZXhjZXB0MSBFWENFUFQ7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorLS0gVmVyaWZ5IHRoYXQgcHVibGljYXRpb24gY2FuIGJlIGFsdGVy ZWQgd2l0aCBFWENFUFQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0IFNFVCBUQUJM RSBwdWJfdGVzdF9leGNlcHQxIEVYQ0VQVCAoYSwgYiksIHB1Yl9zY2gxLnB1Yl90ZXN0X2V4Y2Vw dDI7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3RhYmxlcyBXSEVSRSBwdWJuYW1lID0g J3Rlc3RwdWJfZXhjZXB0JzsKKyAgICBwdWJuYW1lICAgICB8IHNjaGVtYW5hbWUgfCAgICB0YWJs ZW5hbWUgICAgIHwgYXR0bmFtZXMgIHwgcm93ZmlsdGVyIAorLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgdGVz dHB1Yl9leGNlcHQgfCBwdWJsaWMgICAgIHwgcHViX3Rlc3RfZXhjZXB0MSB8IHtjLGR9ICAgICB8 IAorIHRlc3RwdWJfZXhjZXB0IHwgcHViX3NjaDEgICB8IHB1Yl90ZXN0X2V4Y2VwdDIgfCB7YSxi LGMsZH0gfCAKKygyIHJvd3MpCisKKy0tIFZlcmlmeSBBTFRFUiBQVUJMSUNBVElPTiAuLi4gRFJP UAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHQgRFJPUCBUQUJMRSBwdWJfdGVzdF9l eGNlcHQxIEVYQ0VQVCAoYSwgYik7CitFUlJPUjogIGNvbHVtbiBsaXN0IG11c3Qgbm90IGJlIHNw ZWNpZmllZCBpbiBBTFRFUiBQVUJMSUNBVElPTiAuLi4gRFJPUAorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9leGNlcHQgRFJPUCBUQUJMRSBwdWJfdGVzdF9leGNlcHQxOworQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9leGNlcHQgQUREIFRBQkxFIHB1Yl90ZXN0X2V4Y2VwdDEgRVhDRVBUIChj LCBkKTsKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzIFdIRVJFIHB1Ym5hbWUg PSAndGVzdHB1Yl9leGNlcHQnOworICAgIHB1Ym5hbWUgICAgIHwgc2NoZW1hbmFtZSB8ICAgIHRh YmxlbmFtZSAgICAgfCBhdHRuYW1lcyAgfCByb3dmaWx0ZXIgCistLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyB0 ZXN0cHViX2V4Y2VwdCB8IHB1YmxpYyAgICAgfCBwdWJfdGVzdF9leGNlcHQxIHwge2EsYn0gICAg IHwgCisgdGVzdHB1Yl9leGNlcHQgfCBwdWJfc2NoMSAgIHwgcHViX3Rlc3RfZXhjZXB0MiB8IHth LGIsYyxkfSB8IAorKDIgcm93cykKKworLS0gVmVyaWZ5IGV4Y2x1ZGVkIGNvbHVtbnMgY2Fubm90 IGJlIHBhcnQgb2YgUkVQTElDQSBJREVOVElUWQorQUxURVIgVEFCTEUgcHViX3Rlc3RfZXhjZXB0 MSBSRVBMSUNBIElERU5USVRZIEZVTEw7CitVUERBVEUgcHViX3Rlc3RfZXhjZXB0MSBTRVQgYSA9 IDMgV0hFUkUgYSA9IDE7CitFUlJPUjogIGNhbm5vdCB1cGRhdGUgdGFibGUgInB1Yl90ZXN0X2V4 Y2VwdDEiCitERVRBSUw6ICBDb2x1bW4gbGlzdCB1c2VkIGJ5IHRoZSBwdWJsaWNhdGlvbiBkb2Vz IG5vdCBjb3ZlciB0aGUgcmVwbGljYSBpZGVudGl0eS4KK0NSRUFURSBVTklRVUUgSU5ERVggcHVi X3Rlc3RfZXhjZXB0MV9hX2lkeCBPTiBwdWJfdGVzdF9leGNlcHQxIChhLCBjKTsKK0FMVEVSIFRB QkxFIHB1Yl90ZXN0X2V4Y2VwdDEgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCBwdWJfdGVz dF9leGNlcHQxX2FfaWR4OworVVBEQVRFIHB1Yl90ZXN0X2V4Y2VwdDEgU0VUIGEgPSAzIFdIRVJF IGEgPSAxOworRVJST1I6ICBjYW5ub3QgdXBkYXRlIHRhYmxlICJwdWJfdGVzdF9leGNlcHQxIgor REVUQUlMOiAgQ29sdW1uIGxpc3QgdXNlZCBieSB0aGUgcHVibGljYXRpb24gZG9lcyBub3QgY292 ZXIgdGhlIHJlcGxpY2EgaWRlbnRpdHkuCitEUk9QIElOREVYIHB1Yl90ZXN0X2V4Y2VwdDFfYV9p ZHg7CitDUkVBVEUgVU5JUVVFIElOREVYIHB1Yl90ZXN0X2V4Y2VwdDFfYV9pZHggT04gcHViX3Rl c3RfZXhjZXB0MSAoYSk7CitBTFRFUiBUQUJMRSBwdWJfdGVzdF9leGNlcHQxIFJFUExJQ0EgSURF TlRJVFkgVVNJTkcgSU5ERVggcHViX3Rlc3RfZXhjZXB0MV9hX2lkeDsKK1VQREFURSBwdWJfdGVz dF9leGNlcHQxIFNFVCBhID0gMyBXSEVSRSBhID0gMTsKK0RST1AgSU5ERVggcHViX3Rlc3RfZXhj ZXB0MV9hX2lkeDsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHQ7CitEUk9QIFRBQkxF IHB1Yl90ZXN0X2V4Y2VwdDE7CitEUk9QIFRBQkxFIHB1Yl9zY2gxLnB1Yl90ZXN0X2V4Y2VwdDI7 CiBEUk9QIFNDSEVNQSBwdWJfc2NoMTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBSRVNF VCBTRVNTSU9OIEFVVEhPUklaQVRJT047CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwK aW5kZXggNmU4MTRlZGFjZTYuLmI4OTc5MThiY2MxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGlj YXRpb24uc3FsCkBAIC0xMzIyLDYgKzEzMjIsNDggQEAgU0VUIFJPTEUgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyOwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0OwogRFJPUCBUQUJMRSBw dWJfc2NoMS50YmwxOwogRFJPUCBUQUJMRSBwdWJfc2NoMS50YmwyOworCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3QgRVhD RVBUIGNvbHVtbnMgZm9yIENSRUFURSBQVUJMSUNBVElPTgorCitTRVQgY2xpZW50X21pbl9tZXNz YWdlcyA9ICdFUlJPUic7CitDUkVBVEUgVEFCTEUgcHViX3Rlc3RfZXhjZXB0MSAoYSBpbnQgTk9U IE5VTEwsIGIgaW50LCBjIGludCBOT1QgTlVMTCwgZCBpbnQpOworQ1JFQVRFIFRBQkxFIHB1Yl9z Y2gxLnB1Yl90ZXN0X2V4Y2VwdDIgKGEgaW50LCBiIGludCwgYyBpbnQsIGQgaW50KTsKKworLS0g VmVyaWZ5IHRoYXQgcHVibGljYXRpb24gaXMgY3JlYXRlZCB3aXRoIEVYQ0VQVAorQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0IEZPUiBUQUJMRSBwdWJfdGVzdF9leGNlcHQxLCBwdWJf c2NoMS5wdWJfdGVzdF9leGNlcHQyIEVYQ0VQVCAoYiwgYyk7CitTRUxFQ1QgKiBGUk9NIHBnX3B1 YmxpY2F0aW9uX3RhYmxlcyBXSEVSRSBwdWJuYW1lID0gJ3Rlc3RwdWJfZXhjZXB0JzsKKworLS0g Q2hlY2sgZm9yIGludmFsaWQgY2FzZXMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2Vw dDIgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3NjaDEsIFRBQkxFIHB1Yl90ZXN0X2V4Y2VwdDEg RVhDRVBUIChiLCBjKTsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdDIgRk9SIFRB QkxFIHB1Yl90ZXN0X2V4Y2VwdDEgRVhDRVBUOworCistLSBWZXJpZnkgdGhhdCBwdWJsaWNhdGlv biBjYW4gYmUgYWx0ZXJlZCB3aXRoIEVYQ0VQVAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9l eGNlcHQgU0VUIFRBQkxFIHB1Yl90ZXN0X2V4Y2VwdDEgRVhDRVBUIChhLCBiKSwgcHViX3NjaDEu cHViX3Rlc3RfZXhjZXB0MjsKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzIFdI RVJFIHB1Ym5hbWUgPSAndGVzdHB1Yl9leGNlcHQnOworCistLSBWZXJpZnkgQUxURVIgUFVCTElD QVRJT04gLi4uIERST1AKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0IERST1AgVEFC TEUgcHViX3Rlc3RfZXhjZXB0MSBFWENFUFQgKGEsIGIpOworQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9leGNlcHQgRFJPUCBUQUJMRSBwdWJfdGVzdF9leGNlcHQxOworCitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2V4Y2VwdCBBREQgVEFCTEUgcHViX3Rlc3RfZXhjZXB0MSBFWENFUFQgKGMs IGQpOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXMgV0hFUkUgcHVibmFtZSA9 ICd0ZXN0cHViX2V4Y2VwdCc7CisKKy0tIFZlcmlmeSBleGNsdWRlZCBjb2x1bW5zIGNhbm5vdCBi ZSBwYXJ0IG9mIFJFUExJQ0EgSURFTlRJVFkKK0FMVEVSIFRBQkxFIHB1Yl90ZXN0X2V4Y2VwdDEg UkVQTElDQSBJREVOVElUWSBGVUxMOworVVBEQVRFIHB1Yl90ZXN0X2V4Y2VwdDEgU0VUIGEgPSAz IFdIRVJFIGEgPSAxOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBwdWJfdGVzdF9leGNlcHQxX2FfaWR4 IE9OIHB1Yl90ZXN0X2V4Y2VwdDEgKGEsIGMpOworQUxURVIgVEFCTEUgcHViX3Rlc3RfZXhjZXB0 MSBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHB1Yl90ZXN0X2V4Y2VwdDFfYV9pZHg7CitV UERBVEUgcHViX3Rlc3RfZXhjZXB0MSBTRVQgYSA9IDMgV0hFUkUgYSA9IDE7CitEUk9QIElOREVY IHB1Yl90ZXN0X2V4Y2VwdDFfYV9pZHg7CitDUkVBVEUgVU5JUVVFIElOREVYIHB1Yl90ZXN0X2V4 Y2VwdDFfYV9pZHggT04gcHViX3Rlc3RfZXhjZXB0MSAoYSk7CitBTFRFUiBUQUJMRSBwdWJfdGVz dF9leGNlcHQxIFJFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5ERVggcHViX3Rlc3RfZXhjZXB0MV9h X2lkeDsKK1VQREFURSBwdWJfdGVzdF9leGNlcHQxIFNFVCBhID0gMyBXSEVSRSBhID0gMTsKKwor RFJPUCBJTkRFWCBwdWJfdGVzdF9leGNlcHQxX2FfaWR4OworRFJPUCBQVUJMSUNBVElPTiB0ZXN0 cHViX2V4Y2VwdDsKK0RST1AgVEFCTEUgcHViX3Rlc3RfZXhjZXB0MTsKK0RST1AgVEFCTEUgcHVi X3NjaDEucHViX3Rlc3RfZXhjZXB0MjsKIERST1AgU0NIRU1BIHB1Yl9zY2gxOwogCiBSRVNFVCBj bGllbnRfbWluX21lc3NhZ2VzOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDM2X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzNl9yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwKaW5kZXggMWQxMTUyODM4MDkuLjY1MzU5 NDVkMDY0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzZfcmVwX2NoYW5n ZXNfZXhjZXB0X3RhYmxlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9yZXBf Y2hhbmdlc19leGNlcHRfdGFibGUucGwKQEAgLTEsNyArMSw3IEBACiAKICMgQ29weXJpZ2h0IChj KSAyMDIxLTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAKLSMgTG9n aWNhbCByZXBsaWNhdGlvbiB0ZXN0cyBmb3IgZXhjZXB0IHRhYmxlIHB1YmxpY2F0aW9ucworIyBM b2dpY2FsIHJlcGxpY2F0aW9uIHRlc3RzIGZvciBleGNlcHQgdGFibGUgYW5kIGV4Y2VwdCBjb2x1 bW4gcHVibGljYXRpb25zCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwogdXNlIFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXI7CkBAIC03Nyw2ICs3NywxMDIgQEAgJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIG1pbihh KSwgbWF4KGEpIEZST00gcHVibGljLnRhYjEiKTsKIGlzKCRyZXN1bHQsIHFxKDB8fCksICdjaGVj ayByb3dzIG9uIHN1YnNjcmliZXIgY2F0Y2h1cCcpOwogCisjIFRlc3QgZm9yIGV4Y2VwdCBjb2x1 bW4gcHVibGljYXRpb25zCisjIEluaXRpYWwgc2V0dXAKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0YWIyIChhIGludCwgYiBpbnQgTk9UIE5V TEwsIGMgaW50KSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki Q1JFQVRFIFRBQkxFIHNjaDEudGFiMiAoYSBpbnQsIGIgaW50LCBjIGludCkiKTsKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0YWIzIChhIGlu dCwgYiBpbnQsIGMgaW50KSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQ1JFQVRFIFRBQkxFIHRhYjQgKGEgaW50LCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFT IChhICogMikgU1RPUkVELCBjIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMykgU1RPUkVE KSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElO VE8gdGFiMiBWQUxVRVMgKDEsIDIsIDMpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBzY2gxLnRhYjIgVkFMVUVTICgxLCAyLCAzKSIpOwor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FU SU9OIHRhcF9wdWJfY29sIEZPUiBUQUJMRSB0YWIyIEVYQ0VQVCAoYSksIHNjaDEudGFiMiBFWENF UFQgKGIsIGMpIgorKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJDUkVBVEUgVEFCTEUgdGFiMiAoYSBpbnQsIGIgaW50IE5PVCBOVUxMLCBjIGludCkiKTsKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgc2No MS50YWIyIChhIGludCwgYiBpbnQsIGMgaW50KSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0YWIzIChhIGludCwgYiBpbnQsIGMgaW50 KSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBU QUJMRSB0YWI0IChhIGludCwgYiBpbnQsIGMgaW50KSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9jb2wgQ09O TkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViX2NvbCIKKyk7 Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJs aXNoZXIsICd0YXBfc3ViX2NvbCcpOworCisjIFRlc3QgaW5pdGlhbCBzeW5jCiskcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHRh YjIiKTsKK2lzKCRyZXN1bHQsIHFxKHwyfDMpLAorCSdjaGVjayB0aGF0IGluaXRpYWwgc3luYyBm b3IgZXhjZXB0IGNvbHVtbiBwdWJsaWNhdGlvbicpOworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnRhYjIiKTsKK2lz KCRyZXN1bHQsIHFxKDF8fCksICdjaGVjayB0aGF0IGluaXRpYWwgc3luYyBmb3IgZXhjZXB0IGNv bHVtbiBwdWJsaWNhdGlvbicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIklOU0VSVCBJTlRPIHRhYjIgVkFMVUVTICg0LCA1LCA2KSIpOworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gc2NoMS50YWIyIFZBTFVFUyAo NCwgNSwgNikiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9j b2wnKTsKKworIyBUZXN0IGluY3JlbWVudGFsIGNoYW5nZXMKKyRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gdGFiMiIpOworaXMo ICRyZXN1bHQsIHFxKHwyfDMKK3w1fDYpLAorCSdjaGVjayBpbmNyZW1lbnRhbCBpbnNlcnQgZm9y IGV4Y2VwdCBjb2x1bW4gcHVibGljYXRpb24nKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS50YWIyIik7Citpcygg JHJlc3VsdCwgcXEoMXx8Cis0fHwpLCAnY2hlY2sgaW5jcmVtZW50YWwgaW5zZXJ0IGZvciBleGNl cHQgY29sdW1uIHB1YmxpY2F0aW9uJyk7CisKKyMgVGVzdCBmb3IgdXBkYXRlCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVU5JUVVFIElOREVYIGJfaWR4 IE9OIHRhYjIgKGIpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJBTFRFUiBUQUJMRSB0YWIyIFJFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5ERVggYl9pZHgiKTsK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVU5JUVVF IElOREVYIGJfaWR4IE9OIHRhYjIgKGIpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGFiMiBSRVBMSUNBIElERU5USVRZIFVTSU5HIElO REVYIGJfaWR4Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJV UERBVEUgdGFiMiBTRVQgYSA9IDMsIGIgPSA0LCBjID0gNSBXSEVSRSBhID0gMSIpOworJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX2NvbCcpOworJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSB0YWIy Iik7CitpcyggJHJlc3VsdCwgcXEofDV8NgorfDR8NSksCisJJ2NoZWNrIHVwZGF0ZSBmb3IgZXhj ZXB0IGNvbHVtbiBwdWJsaWNhdGlvbicpOworCisjIFRlc3QgQUxURVIgUFVCTElDQVRJT04gZm9y IEVYQ0VQVCAoY29sX2xpc3QpCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJBTFRFUiBQVUJMSUNBVElPTiB0YXBfcHViX2NvbCBBREQgVEFCTEUgdGFiMyBFWENFUFQo YikiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBT VUJTQ1JJUFRJT04gdGFwX3N1Yl9jb2wgUkVGUkVTSCBQVUJMSUNBVElPTiIpOworJG5vZGVfc3Vi c2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAndGFw X3N1Yl9jb2wnKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklO U0VSVCBJTlRPIHRhYjMgVkFMVUVTICgxLCAyLCAzKSIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX2NvbCcpOworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSB0YWIzIik7CitpcygkcmVzdWx0 LCBxcSgxfHwzKSwgJ2NoZWNrIGFsdGVyIHB1YmxpY2F0aW9uIHdpdGggRVhDRVBUJyk7CisKKyMg VGVzdCBmb3IgcHVibGljYXRpb24gY3JlYXRlZCBvbiB0YWJsZSB3aXRoIGdlbmVyYXRlZCBjb2x1 bW5zIGFuZCBjb2x1bW4gbGlzdAorIyBzcGVjaWZpZWQgd2l0aCBFWENFUFQKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0YWI0IFZBTFVFUyAoMSki KTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFBVQkxJ Q0FUSU9OIHRhcF9wdWJfY29sIFNFVCAocHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucykiKTsKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFBVQkxJQ0FUSU9O IHRhcF9wdWJfY29sIFNFVCBUQUJMRSB0YWI0IEVYQ0VQVChiKSIpOworJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX2Nv bCBSRUZSRVNIIFBVQkxJQ0FUSU9OIik7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJz Y3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViX2NvbCcpOworCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGFiNCBWQUxVRVMg KDIpIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfY29sJyk7 CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgKiBGUk9NIHRhYjQiKTsKK2lzKCAkcmVzdWx0LCBxcSgxfHwzCisyfHw2KSwgJ2NoZWNrIHB1 YmxpY2F0aW9uIHdpdGggZ2VuZXJhdGVkIGNvbHVtbnMgYW5kIEVYQ0VQVCcpOworCiAkbm9kZV9z dWJzY3JpYmVyLT5zdG9wKCdmYXN0Jyk7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2Zhc3QnKTsK IAotLSAKMi4zNC4xCgo= --000000000000cd798a06388ae6a1--