<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>30187</bug_id>
          
          <creation_ts>2009-10-07 15:14:47 -0700</creation_ts>
          <short_desc>Implicit AtomicString(char*) considered harmful</short_desc>
          <delta_ts>2024-08-05 18:43:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>EasyFix, GoodFirstBug</keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>31749</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jens Alfke">jens</reporter>
          <assigned_to name="Myles C. Maxfield">litherum</assigned_to>
          <cc>ap</cc>
    
    <cc>levin</cc>
    
    <cc>litherum</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>153198</commentid>
    <comment_count>0</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-10-07 15:14:47 -0700</bug_when>
    <thetext>The WebCore::AtomicString constructor that takes a const char* is not marked &apos;explicit&apos; -- this means that the compiler will allow clients to pass a string constant to functions that take an AtomicString, and construct the object on the fly. But this is expensive: it computes the hashcode of the string, does a hashtable lookup, and often allocates a new StringImpl.

Having instrumented StringImpl, I&apos;m seeing lots of AtomicString objects being created ephemerally this way, often in situations like loading resources and scanning CSS selectors. (The primary offender seems to be ResourceRequestBase, which has a bunch of convenience accessors for HTTP header fields that do this.) If there are AtomicStrings being used often, they should be allocated once and kept around as constants.

I think it would be a good idea to add the &apos;explicit&apos; keyword to this constructor, and fix the resulting compile errors, so people don&apos;t end up accidentally allocating AtomicStrings this way without knowing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165429</commentid>
    <comment_count>1</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-20 13:29:05 -0800</bug_when>
    <thetext>I&apos;ve been working on this since Wednesday. All the work is in fixing the resulting compile errors, of course.
* I added a few very common string constants to AtomicString itself (trueAtom, falseAtom).
* I&apos;ve used DEFINE_STATIC_LOCAL in some methods that might be performance-sensitive.
* In a few cases, I&apos;ve added variants of methods that take an AtomicString parameter, which take a char* instead.

I initially created global AtomicString constants for HTTP header names, since they&apos;ve very commonly passed to BaseResourceRequest/Response as C string constants. Unfortunately that isn&apos;t legal since AtomicString is not thread-safe but the resource classes are used on multiple threads (unlike the DOM classes.) Instead I&apos;ve enabled efficient access by char* to the underlying HashMap of headers -- this required adding some code to HashMap to allow lookup by alternate key types. I shamelessly plagiarized this from the existing support in HashSet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165472</commentid>
    <comment_count>2</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-20 15:10:20 -0800</bug_when>
    <thetext>I&apos;ve broken up the patch and put the more significant changes (HashMap, HTTPHeaderMap, etc.) into a new bug 31749 which I&apos;m sending out for review now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168091</commentid>
    <comment_count>3</comment_count>
      <attachid>44166</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-12-02 11:23:19 -0800</bug_when>
    <thetext>Created attachment 44166
patch

Here&apos;s the rest of the patch. This finally makes the AtomicString(const char*) constructor explicit.
It does two other nontrivial things to support this change:
1. Adds a HashMap::remove that takes an alternate key type, so HTTPHeaderMap can use it for char*.
2. Adds an HTTPHeaders namespace containing a bunch of string constants like ContentType, so we don&apos;t have to use literal C strings for these all over the code.

There are also little changes in lots of source files, to replace C string literals with either
a. AtomicString constants (like emptyAtom)
b. HTTPHeaders constants
c. New static AtomicString constants defined using DEFINE_STATIC_LOCAL
d. Explicit AtomicString(&quot;...&quot;) construction, in places where the time/space tradeoff didn&apos;t seem to make c. worthwhile
e. Calls to new method variants that explicitly take char*, such as Element::setCStringAttribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168093</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-02 11:26:56 -0800</bug_when>
    <thetext>Attachment 44166 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/loader/DocumentThreadableLoader.cpp:44:  wtf includes should be &lt;wtf/file.h&gt; instead of &quot;wtf/file.h&quot;.  [build/include] [4]
WebCore/platform/text/AtomicString.h:159:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/text/AtomicString.h:160:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/HTTPHeaderMap.cpp:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/HTTPHeaderMap.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/HTTPHeaderMap.cpp:44:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/HTTPHeaderMap.cpp:45:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/HTTPHeaderMap.cpp:46:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/HTTPHeaderMap.cpp:47:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/HTTPHeaderMap.cpp:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/HTTPHeaderMap.cpp:49:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/HTTPHeaderMap.cpp:50:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/HTTPHeaderMap.cpp:51:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/HTTPHeaderMap.cpp:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/HTTPHeaderMap.cpp:53:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/HTTPHeaderMap.cpp:54:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/HTTPHeaderMap.cpp:55:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/HTTPHeaderMap.cpp:56:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/HTTPHeaderMap.h:74:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/HTTPHeaderMap.h:74:  namespace should never be indented.  [whitespace/indent] [4]
JavaScriptCore/wtf/HashMap.h:302:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/platform/network/ResourceRequestBase.cpp:368:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/platform/network/ResourceRequestBase.cpp:369:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/platform/network/ResourceRequestBase.cpp:370:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/platform/network/ResourceRequestBase.cpp:371:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 25</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168098</commentid>
    <comment_count>5</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-12-02 11:28:28 -0800</bug_when>
    <thetext>Weird -- I just noticed that in that patch, the changes to JavaScriptCore/ChangeLog and WebCore/ChangeLog are reversed. I must have screwed this up somehow during some manual cut-and-pasting.
I&apos;ve fixed this in my source tree; doesn&apos;t seem worth it to upload another patch just for that. Consider it fixed.

The automated style warnings below appear to refer to pre-existing code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168168</commentid>
    <comment_count>6</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-12-02 14:28:26 -0800</bug_when>
    <thetext>This warning refers to newly added code:
    WebCore/loader/DocumentThreadableLoader.cpp:44:  wtf includes should be
    &lt;wtf/file.h&gt; instead of &quot;wtf/file.h&quot;.  [build/include] [4]

These warnings 
   WebCore/platform/network/ResourceRequestBase.cpp:368:  Boolean expressions that
   span multiple lines should have their operators on the left side of the line
   instead of the right side.  [whitespace/operators] [4]

Refer to lines that you changed, so it would be nice to fix the style since you are changing the lines anyway.

The namespace indent warnings are unfortunate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168215</commentid>
    <comment_count>7</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-12-02 16:56:28 -0800</bug_when>
    <thetext>I was looking at fixing the namespace indent warning, but it turns out that several of them are valid warnings for your patch like this one:

WebCore/platform/network/HTTPHeaderMap.cpp:42:  Code inside a namespace should
not be indented.  [whitespace/indent] [4]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168547</commentid>
    <comment_count>8</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-12-03 14:27:26 -0800</bug_when>
    <thetext>I understand the namespace guideline, but in this case it&apos;s a _nested_ namespace, and I don&apos;t think the guideline should apply to those ... especially since if HTTPHeaders had been made a class instead (an alternate way to group related constants) it would of course be indented.
I&apos;ve sent an email to webkit-dev asking for clarification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168557</commentid>
    <comment_count>9</comment_count>
      <attachid>44270</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-12-03 15:05:43 -0800</bug_when>
    <thetext>Created attachment 44270
patch 2 (stylistic fixes)

This patch fixes the style warnings about #include and ||-at-EOL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168558</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-03 15:09:37 -0800</bug_when>
    <thetext>Attachment 44270 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/network/HTTPHeaderMap.cpp:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168906</commentid>
    <comment_count>11</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-12-04 13:32:30 -0800</bug_when>
    <thetext>FYI, the amendment to the style guide allowing indentation of nested namespaces is bug 32137.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170807</commentid>
    <comment_count>12</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-12-11 10:11:50 -0800</bug_when>
    <thetext>*ping* This patch hasn&apos;t been reviewed in a week now. I&apos;d like to get this off my plate before Xmas =)
There are a lot of diffs in it, but almost all of them are just simple replacements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171503</commentid>
    <comment_count>13</comment_count>
      <attachid>44270</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-14 12:26:03 -0800</bug_when>
    <thetext>Comment on attachment 44270
patch 2 (stylistic fixes)

Most of this is a total no-brainer to review.  But the Hash* stuff I&apos;m not confident on.

I would be happy to r+ the changes to move all the callsites off of &quot;true&quot; and to use explicit AtomicString(), etc, but the Hash* stuff will either take some in-person explanation, or someone more used to that code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175355</commentid>
    <comment_count>14</comment_count>
      <attachid>44270</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-28 18:09:01 -0800</bug_when>
    <thetext>Comment on attachment 44270
patch 2 (stylistic fixes)

This patch is kind of large and combines multiple logically separate changes. I think it would be better to split it up into the following independent components:

1) The HashMap changes. (Yeah, it sucks that they are not unit tested but they seem pretty separate from the rest).
2) One or more patches removing dependence of various pieces of code on implicit conversion from char* to AtomicString.
3) Final patch to make AtomicString(char*) explicit.

r- to consider such a split. But if that&apos;s impractical, just go ahead and reflag this patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673965</commentid>
    <comment_count>15</comment_count>
    <who name="Myles C. Maxfield">litherum</who>
    <bug_when>2012-07-19 15:18:04 -0700</bug_when>
    <thetext>Since this bug hasn&apos;t been touched in 3 years, mind if I claim it?

Thanks,
Myles</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673996</commentid>
    <comment_count>16</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-07-19 15:42:27 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Since this bug hasn&apos;t been touched in 3 years, mind if I claim it?
&gt; 
&gt; Thanks,
&gt; Myles

Go for it. Make sure to consider comment #14.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44166</attachid>
            <date>2009-12-02 11:23:19 -0800</date>
            <delta_ts>2009-12-03 15:05:43 -0800</delta_ts>
            <desc>patch</desc>
            <filename>textmate stdin qvLbMa.txt</filename>
            <type>text/plain</type>
            <size>99213</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBjNmE4NmYxLi5jNWZiZmMzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMDktMTItMDIgIEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXF1aXJlIGV4cGxpY2l0
IGNvbnN0cnVjdGlvbiBvZiBBdG9taWNTdHJpbmcgZnJvbSBjaGFyKi4KKyAgICAgICAgQWRkIHN0
cmluZyBjb25zdGFudHMgZm9yIEhUVFAgaGVhZGVyIG5hbWVzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAxODcKKworICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVy
TWFwOjpyZW1vdmUpOiAgQWRkZWQgdmFyaWFudCB0aGF0IHRha2VzIGNoYXIqLgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oOiAgQWRkZWQgSFRUUEhlYWRlcnMgbmFt
ZXNwYWNlIGNvbnRhaW5pbmcgc3RyaW5nIGNvbnN0YW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkhU
VFBIZWFkZXJNYXA6OnJlbW92ZSk6ICBBZGRlZCB2YXJpYW50IHRoYXQgdGFrZXMgY2hhciouCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDogIFVzZSBI
VFRQSGVhZGVycyBjb25zdGFudHMgZm9yIGhlYWRlciBuYW1lcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaDogIFVzZSBIVFRQSGVhZGVycyBjb25zdGFu
dHMgZm9yIGhlYWRlciBuYW1lcy4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmlu
Zy5jcHA6ICBBZGQgbmV3IGNvbnN0YW50cyAidHJ1ZUF0b20iIGFuZCAiZmFsc2VBdG9tIi4KKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZy5oOiAgQWRkIG5ldyBjb25zdGFudHMg
InRydWVBdG9tIiBhbmQgImZhbHNlQXRvbSIuCisgICAgICAgIChXZWJDb3JlOjpBdG9taWNTdHJp
bmc6OkF0b21pY1N0cmluZyk6ICBQcmV2ZW50IGltcGxpY2l0IGNoYXIqIC0tPiBBdG9taWNTdHJp
bmcgY29udmVyc2lvbi4KKyAgICAgICAgCisgICAgICAgIC4uLm1hbnkgb3RoZXIgZmlsZXMgY2hh
bmdlZCB0byB1c2UgY29uc3RhbnRzIG9yIEF0b21pY1N0cmluZygiLi4uIikgaW5zdGVhZCBvZiBz
dHJpbmcgbGl0ZXJhbHMuLi4KKwogMjAwOS0xMi0wMSAgSmVucyBBbGZrZSAgPHNuZWpAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvd3RmL0hhc2hNYXAuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoTWFw
LmgKaW5kZXggZWNlMzgxMi4uYTg1ZDcwYyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3Rm
L0hhc2hNYXAuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaE1hcC5oCkBAIC04MywxNCAr
ODMsMTUgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgTWFwcGVkVHlwZSB0YWtlKGNvbnN0
IEtleVR5cGUmKTsgLy8gZWZmaWNpZW50IGNvbWJpbmF0aW9uIG9mIGdldCB3aXRoIHJlbW92ZQog
Ci0gICAgICAgIC8vIEFuIGFsdGVybmF0ZSB2ZXJzaW9uIG9mIGZpbmQoKSB0aGF0IGZpbmRzIHRo
ZSBvYmplY3QgYnkgaGFzaGluZyBhbmQgY29tcGFyaW5nCi0gICAgICAgIC8vIHdpdGggc29tZSBv
dGhlciB0eXBlLCB0byBhdm9pZCB0aGUgY29zdCBvZiB0eXBlIGNvbnZlcnNpb24uIEhhc2hUcmFu
c2xhdG9yCi0gICAgICAgIC8vIG11c3QgaGF2ZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uIG1lbWJl
cnM6CisgICAgICAgIC8vIEFsdGVybmF0ZSB2ZXJzaW9ucyBvZiBmaW5kKCksIGNvbnRhaW5zKCks
IGFuZCByZW1vdmUoKSB0aGF0IGZpbmQgdGhlIG9iamVjdAorICAgICAgICAvLyBieSBoYXNoaW5n
IGFuZCBjb21wYXJpbmcgd2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0IG9m
IHR5cGUgY29udmVyc2lvbi4KKyAgICAgICAgLy8gSGFzaFRyYW5zbGF0b3IgbXVzdCBoYXZlIHRo
ZSBmb2xsb3dpbmcgZnVuY3Rpb24gbWVtYmVyczoKICAgICAgICAgLy8gICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChjb25zdCBUJik7CiAgICAgICAgIC8vICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
VmFsdWVUeXBlJiwgY29uc3QgVCYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBIYXNoVHJhbnNsYXRvcj4gaXRlcmF0b3IgZmluZChjb25zdCBUJik7CiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPiBjb25zdF9pdGVyYXRv
ciBmaW5kKGNvbnN0IFQmKSBjb25zdDsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3I+IGJvb2wgY29udGFpbnMoY29uc3QgVCYpIGNvbnN0OworICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4gdm9pZCBy
ZW1vdmUoY29uc3QgVCYpOwogCiAgICAgICAgIC8vIEFuIGFsdGVybmF0ZSB2ZXJzaW9uIG9mIGFk
ZCgpIHRoYXQgZmluZHMgdGhlIG9iamVjdCBieSBoYXNoaW5nIGFuZCBjb21wYXJpbmcKICAgICAg
ICAgLy8gd2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0IG9mIHR5cGUgY29u
dmVyc2lvbiBpZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkKQEAgLTIwNCwzMCArMjA1LDMwIEBAIG5h
bWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVFlQRSwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQWx0S2V5VHlwZSwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CiAgICAgaW5saW5lIHR5cGVu
YW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yCi0gICAgSGFzaE1hcDxULCBVLCBW
LCBXLCBYPjo6ZmluZChjb25zdCBUWVBFJiB2YWx1ZSkKKyAgICBIYXNoTWFwPFQsIFUsIFYsIFcs
IFg+OjpmaW5kKGNvbnN0IEFsdEtleVR5cGUmIGtleSkKICAgICB7Ci0gICAgICAgIHR5cGVkZWYg
SGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyPFZhbHVlVHlwZSwgVmFsdWVUcmFpdHMsIFRZUEUsIEhh
c2hUcmFuc2xhdG9yPiBBZGFwdGVyOwotICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGZp
bmQ8VFlQRSwgQWRhcHRlcj4odmFsdWUpOworICAgICAgICB0eXBlZGVmIEhhc2hNYXBUcmFuc2xh
dG9yQWRhcHRlcjxWYWx1ZVR5cGUsIFZhbHVlVHJhaXRzLCBBbHRLZXlUeXBlLCBIYXNoVHJhbnNs
YXRvcj4gQWRhcHRlcjsKKyAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBmaW5kPEFsdEtl
eVR5cGUsIEFkYXB0ZXI+KGtleSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUWVBFLCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBBbHRLZXlUeXBlLCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KICAgICBpbmxp
bmUgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29uc3RfaXRlcmF0b3IgCi0gICAg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZmluZChjb25zdCBUWVBFJiB2YWx1ZSkgY29uc3QKKyAg
ICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5kKGNvbnN0IEFsdEtleVR5cGUmIGtleSkgY29u
c3QKICAgICB7Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyPFZhbHVl
VHlwZSwgVmFsdWVUcmFpdHMsIFRZUEUsIEhhc2hUcmFuc2xhdG9yPiBBZGFwdGVyOwotICAgICAg
ICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8VFlQRSwgQWRhcHRlcj4odmFsdWUpOworICAg
ICAgICB0eXBlZGVmIEhhc2hNYXBUcmFuc2xhdG9yQWRhcHRlcjxWYWx1ZVR5cGUsIFZhbHVlVHJh
aXRzLCBBbHRLZXlUeXBlLCBIYXNoVHJhbnNsYXRvcj4gQWRhcHRlcjsKKyAgICAgICAgcmV0dXJu
IG1faW1wbC50ZW1wbGF0ZSBmaW5kPEFsdEtleVR5cGUsIEFkYXB0ZXI+KGtleSk7CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgVywgdHlwZW5hbWUgWD4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUWVBFLCB0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvcj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbHRLZXlUeXBlLCB0eXBlbmFt
ZSBIYXNoVHJhbnNsYXRvcj4KICAgICBpbmxpbmUgYm9vbAotICAgIEhhc2hNYXA8VCwgVSwgViwg
VywgWD46OmNvbnRhaW5zKGNvbnN0IFRZUEUmIHZhbHVlKSBjb25zdAorICAgIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmNvbnRhaW5zKGNvbnN0IEFsdEtleVR5cGUmIGtleSkgY29uc3QKICAgICB7
Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyPFZhbHVlVHlwZSwgVmFs
dWVUcmFpdHMsIFRZUEUsIEhhc2hUcmFuc2xhdG9yPiBBZGFwdGVyOwotICAgICAgICByZXR1cm4g
bV9pbXBsLnRlbXBsYXRlIGNvbnRhaW5zPFRZUEUsIEFkYXB0ZXI+KHZhbHVlKTsKKyAgICAgICAg
dHlwZWRlZiBIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXI8VmFsdWVUeXBlLCBWYWx1ZVRyYWl0cywg
QWx0S2V5VHlwZSwgSGFzaFRyYW5zbGF0b3I+IEFkYXB0ZXI7CisgICAgICAgIHJldHVybiBtX2lt
cGwudGVtcGxhdGUgY29udGFpbnM8QWx0S2V5VHlwZSwgQWRhcHRlcj4oa2V5KTsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFt
ZSBXLCB0eXBlbmFtZSBYPgpAQCAtMjUxLDEyICsyNTIsMTIgQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
dHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUWVBFLCB0eXBl
bmFtZSBIYXNoVHJhbnNsYXRvcj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbHRLZXlUeXBlLCB0
eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KICAgICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwg
ViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgotICAgIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmFk
ZChjb25zdCBUWVBFJiBrZXksIGNvbnN0IE1hcHBlZFR5cGUmIHZhbHVlKQorICAgIEhhc2hNYXA8
VCwgVSwgViwgVywgWD46OmFkZChjb25zdCBBbHRLZXlUeXBlJiBrZXksIGNvbnN0IE1hcHBlZFR5
cGUmIHZhbHVlKQogICAgIHsKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwVHJhbnNsYXRvckFkYXB0
ZXI8VmFsdWVUeXBlLCBWYWx1ZVRyYWl0cywgVFlQRSwgSGFzaFRyYW5zbGF0b3I+IEFkYXB0ZXI7
Ci0gICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFzc2luZ0hhc2hDb2RlPFRZUEUs
IE1hcHBlZFR5cGUsIEFkYXB0ZXI+KGtleSwgdmFsdWUpOworICAgICAgICB0eXBlZGVmIEhhc2hN
YXBUcmFuc2xhdG9yQWRhcHRlcjxWYWx1ZVR5cGUsIFZhbHVlVHJhaXRzLCBBbHRLZXlUeXBlLCBI
YXNoVHJhbnNsYXRvcj4gQWRhcHRlcjsKKyAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBh
ZGRQYXNzaW5nSGFzaENvZGU8QWx0S2V5VHlwZSwgTWFwcGVkVHlwZSwgQWRhcHRlcj4oa2V5LCB2
YWx1ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KQEAgLTI5Miw2ICsyOTMsMTMgQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBBbHRLZXlUeXBlLCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KKyAgICBpbmxpbmUgdm9p
ZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpyZW1vdmUoY29uc3QgQWx0S2V5VHlwZSYga2V5KQor
ICAgIHsKKyAgICAgICAgcmVtb3ZlKHRoaXMtPmZpbmQ8QWx0S2V5VHlwZSwgSGFzaFRyYW5zbGF0
b3I+KGtleSkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CiAgICAgaW5saW5lIHZvaWQgSGFz
aE1hcDxULCBVLCBWLCBXLCBYPjo6Y2xlYXIoKQogICAgIHsKICAgICAgICAgbV9pbXBsLmNsZWFy
KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDExZTNmZDAuLjNkZGIzNjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMTItMDIgIEplbnMgQWxm
a2UgIDxzbmVqQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZXF1aXJlIGV4cGxpY2l0IGNvbnN0cnVjdGlvbiBvZiBBdG9taWNT
dHJpbmcgZnJvbSBjaGFyKi4KKyAgICAgICAgQWRkIHN0cmluZyBjb25zdGFudHMgZm9yIEhUVFAg
aGVhZGVyIG5hbWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzAxODcKKworICAgICAgICAqIHd0Zi9IYXNoTWFwLmg6ICBSZW5hbWVkIHRlbXBsYXRl
IHBhcmFtICJUWVBFIiB0byAiQWx0S2V5VHlwZSIgZm9yIGNsYXJpdHkuCisgICAgICAgIChXVEY6
Okhhc2hNYXA6OnJlbW92ZSk6ICBBZGRlZCB0ZW1wbGF0ZSB2YXJpYW50IHRoYXQgdGFrZXMgYWx0
ZXJuYXRlIGtleSB0eXBlLgorCiAyMDA5LTEyLTAxICBKZW5zIEFsZmtlICA8c25lakBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggNDFm
MTU1Zi4uYmEwMzFhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMzM1LDcgKzMzNSw3IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6aXNQcmVzc2VkKCkgY29uc3QKIAogICAgIC8vIElmIHRoaXMgaXMg
YW4gQVJJQSBidXR0b24sIGNoZWNrIHRoZSBhcmlhLXByZXNzZWQgYXR0cmlidXRlIHJhdGhlciB0
aGFuIG5vZGUoKS0+YWN0aXZlKCkKICAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBCdXR0
b25Sb2xlKSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJp
YV9wcmVzc2VkQXR0cikuc3RyaW5nKCksICJ0cnVlIikpCisgICAgICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9wcmVzc2VkQXR0cikuc3RyaW5nKCksIHRydWVBdG9t
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQpAQCAtODE0LDcgKzgxNCw3IEBAIGludCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbnRW
YWx1ZSgpIGNvbnN0CiAgICAgLy8gSWYgdGhpcyBpcyBhbiBBUklBIGNoZWNrYm94IG9yIHJhZGlv
LCBjaGVjayB0aGUgYXJpYS1jaGVja2VkIGF0dHJpYnV0ZSByYXRoZXIgdGhhbiBub2RlKCktPmNo
ZWNrZWQoKQogICAgIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlID0gYXJpYVJvbGVBdHRyaWJ1
dGUoKTsKICAgICBpZiAoYXJpYVJvbGUgPT0gUmFkaW9CdXR0b25Sb2xlIHx8IGFyaWFSb2xlID09
IENoZWNrQm94Um9sZSkgewotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmli
dXRlKGFyaWFfY2hlY2tlZEF0dHIpLnN0cmluZygpLCAidHJ1ZSIpKQorICAgICAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGFyaWFfY2hlY2tlZEF0dHIpLnN0cmluZygpLCB0
cnVlQXRvbSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KQEAgLTEzNDMsMTMgKzEzNDMsMTMgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGl0bGVVSUVsZW1lbnQoKSBjb25zdAogICAgIAogYm9v
bCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhSXNIaWRkZW4oKSBjb25zdAogewotICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9oaWRkZW5BdHRyKS5zdHJp
bmcoKSwgInRydWUiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGFy
aWFfaGlkZGVuQXR0cikuc3RyaW5nKCksIHRydWVBdG9tKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgCiAgICAgLy8gYXJpYS1oaWRkZW4gaGlkZXMgdGhpcyBvYmplY3QgYW5kIGFueSBjaGls
ZHJlbgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IHBhcmVudE9iamVjdCgpOwog
ICAgIHdoaWxlIChvYmplY3QpIHsKLSAgICAgICAgaWYgKG9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0KCkgJiYgZXF1YWxJZ25vcmluZ0Nhc2Uoc3RhdGljX2Nhc3Q8QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdCo+KG9iamVjdCktPmdldEF0dHJpYnV0ZShhcmlhX2hpZGRlbkF0dHIp
LnN0cmluZygpLCAidHJ1ZSIpKQorICAgICAgICBpZiAob2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QoKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShzdGF0aWNfY2FzdDxBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Kj4ob2JqZWN0KS0+Z2V0QXR0cmlidXRlKGFyaWFfaGlkZGVuQXR0ciku
c3RyaW5nKCksIHRydWVBdG9tKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBv
YmplY3QgPSBvYmplY3QtPnBhcmVudE9iamVjdCgpOwogICAgIH0KQEAgLTE2NDgsNyArMTY0OCw3
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNWaXNpdGVkKCkgY29uc3QKICAg
ICAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNFeHBhbmRlZCgpIGNvbnN0CiB7
Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShhcmlhX2V4cGFuZGVkQXR0
cikuc3RyaW5nKCksICJ0cnVlIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJp
YnV0ZShhcmlhX2V4cGFuZGVkQXR0cikuc3RyaW5nKCksIHRydWVBdG9tKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgCiAgICAgcmV0dXJuIGZhbHNlOyAgCkBAIC0xNjY0LDcgKzE2NjQsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldEVsZW1lbnRBdHRyaWJ1dGVWYWx1
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgRWxl
bWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKLSAgICBlbGVtZW50
LT5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgKHZhbHVlKSA/ICJ0cnVlIiA6ICJmYWxzZSIp
OyAgICAgICAgCisgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICh2YWx1
ZSkgPyB0cnVlQXRvbSA6IGZhbHNlQXRvbSk7ICAgICAgICAKIH0KICAgICAKIGJvb2wgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCkBAIC0xNjcyLDcgKzE2NzIsNyBAQCBib29sIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaQogICAgIGlmICghbV9yZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIAotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSkuc3RyaW5nKCksICJ0cnVlIik7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGdl
dEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKS5zdHJpbmcoKSwgdHJ1ZUF0b20pOwogfQogICAgIAog
dm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRJc0V4cGFuZGVkKGJvb2wgaXNFeHBh
bmRlZCkKQEAgLTE2ODgsNyArMTY4OCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6c2V0SXNFeHBhbmRlZChib29sIGlzRXhwYW5kZWQpCiAgICAgCiBib29sIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmlzUmVxdWlyZWQoKSBjb25zdAogewotICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9yZXF1aXJlZEF0dHIpLnN0cmluZygpLCAidHJ1ZSIp
KQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9yZXF1aXJlZEF0
dHIpLnN0cmluZygpLCB0cnVlQXRvbSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAg
IHJldHVybiBmYWxzZTsKQEAgLTE3MDQsMTEgKzE3MDQsMTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojppc1NlbGVjdGVkKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIAogICAgIFN0cmluZyBhcmlhU2VsZWN0ZWQgPSBnZXRBdHRyaWJ1dGUoYXJpYV9zZWxlY3Rl
ZEF0dHIpLnN0cmluZygpOwotICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhcmlhU2VsZWN0ZWQs
ICJ0cnVlIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFyaWFTZWxlY3RlZCwgdHJ1ZUF0
b20pKQogICAgICAgICByZXR1cm4gdHJ1ZTsgICAgCiAgICAgCiAgICAgLy8gQVJJQSBzYXlzIHRo
YXQgc2VsZWN0aW9uIHNob3VsZCBmb2xsb3cgZm9jdXMgdW5sZXNzIHNwZWNpZmljYWxseSBzZXQg
b3RoZXJ3aXNlLgotICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UoYXJpYVNlbGVjdGVkLCAiZmFs
c2UiKSAmJiBpc0ZvY3VzZWQoKSkKKyAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKGFyaWFTZWxl
Y3RlZCwgZmFsc2VBdG9tKSAmJiBpc0ZvY3VzZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgCiAgICAgaWYgKGlzVGFiSXRlbSgpICYmIGlzVGFiSXRlbVNlbGVjdGVkKCkpCkBAIC0xODcx
LDcgKzE4NzEsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzRW5hYmxlZCgp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fcmVuZGVyZXIpOwogICAgIAotICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9kaXNhYmxlZEF0dHIpLnN0cmluZygpLCAidHJ1
ZSIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9kaXNhYmxl
ZEF0dHIpLnN0cmluZygpLCB0cnVlQXRvbSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAK
ICAgICBOb2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwpAQCAtMjY1NCwxMiArMjY1NCwx
MiBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNhblNldEV4cGFuZGVkQXR0cmli
dXRlKCkgY29uc3QKIHsKICAgICAvLyBBbiBvYmplY3QgY2FuIGJlIGV4cGFuZGVkIGlmIGl0IGFy
aWEtZXhwYW5kZWQgaXMgdHJ1ZSBvciBmYWxzZS4KICAgICBTdHJpbmcgYXJpYUV4cGFuZGVkID0g
Z2V0QXR0cmlidXRlKGFyaWFfZXhwYW5kZWRBdHRyKS5zdHJpbmcoKTsKLSAgICByZXR1cm4gZXF1
YWxJZ25vcmluZ0Nhc2UoYXJpYUV4cGFuZGVkLCAidHJ1ZSIpIHx8IGVxdWFsSWdub3JpbmdDYXNl
KGFyaWFFeHBhbmRlZCwgImZhbHNlIik7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGFy
aWFFeHBhbmRlZCwgdHJ1ZUF0b20pIHx8IGVxdWFsSWdub3JpbmdDYXNlKGFyaWFFeHBhbmRlZCwg
ZmFsc2VBdG9tKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjYW5TZXRW
YWx1ZUF0dHJpYnV0ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdldEF0
dHJpYnV0ZShhcmlhX3JlYWRvbmx5QXR0cikuc3RyaW5nKCksICJ0cnVlIikpCisgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShhcmlhX3JlYWRvbmx5QXR0cikuc3RyaW5nKCks
IHRydWVBdG9tKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzV2ViQXJlYSgp
IHx8IGlzVGV4dENvbnRyb2woKSkgCkBAIC0yODEyLDcgKzI4MTIsNyBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXN0Ym94U2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmls
aXR5Q2hpbGRyZQogICAgICAgICAgICAgRWxlbWVudCogY2hpbGRFbGVtZW50ID0gc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KGNoaWxkUmVuZGVyZXItPm5vZGUoKSk7CiAgICAgICAgICAgICBpZiAoY2hp
bGRFbGVtZW50ICYmIGNoaWxkRWxlbWVudC0+aXNFbGVtZW50Tm9kZSgpKSB7IC8vIGRvIHRoaXMg
Y2hlY2sgdG8gZW5zdXJlIHNhZmV0eSBvZiBzdGF0aWNfY2FzdCBhYm92ZQogICAgICAgICAgICAg
ICAgIFN0cmluZyBzZWxlY3RlZEF0dHJTdHJpbmcgPSBjaGlsZEVsZW1lbnQtPmdldEF0dHJpYnV0
ZShhcmlhX3NlbGVjdGVkQXR0cikuc3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHNlbGVjdGVkQXR0clN0cmluZywgInRydWUiKSkgeworICAgICAgICAgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzZWxlY3RlZEF0dHJTdHJpbmcsIHRydWVBdG9tKSkg
ewogICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoaWxkKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzTXVsdGlzZWxlY3RhYmxlKQogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA4
MDE1YWNhLi41NDBlMzBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcApAQCAtNzkzLDcgKzc5Myw3IEBAIHN0YXRpYyBGcmFtZSogY3JlYXRlV2luZG93KEV4ZWNT
dGF0ZSogZXhlYywgRnJhbWUqIGxleGljYWxGcmFtZSwgRnJhbWUqIGR5bmFtaWNGCiBKU1ZhbHVl
IEpTRE9NV2luZG93OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykK
IHsKICAgICBTdHJpbmcgdXJsU3RyaW5nID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51
bGxDaGVjayhleGVjLCBhcmdzLmF0KDApKTsKLSAgICBBdG9taWNTdHJpbmcgZnJhbWVOYW1lID0g
YXJncy5hdCgxKS5pc1VuZGVmaW5lZE9yTnVsbCgpID8gIl9ibGFuayIgOiBBdG9taWNTdHJpbmco
YXJncy5hdCgxKS50b1N0cmluZyhleGVjKSk7CisgICAgQXRvbWljU3RyaW5nIGZyYW1lTmFtZSA9
IGFyZ3MuYXQoMSkuaXNVbmRlZmluZWRPck51bGwoKSA/IEF0b21pY1N0cmluZygiX2JsYW5rIikg
OiBBdG9taWNTdHJpbmcoYXJncy5hdCgxKS50b1N0cmluZyhleGVjKSk7CiAgICAgV2luZG93RmVh
dHVyZXMgd2luZG93RmVhdHVyZXModmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVj
ayhleGVjLCBhcmdzLmF0KDIpKSk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmZyYW1l
KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5j
cHAKaW5kZXggMzY3MmY3Yy4uYzcxNDdiOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNzAwLDcgKzcwMCw3IEBAIENBTExCQUNL
X0ZVTkNfREVDTChET01XaW5kb3dPcGVuKQogICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy5v
cGVuKCkiKTsKIAogICAgIFN0cmluZyB1cmxTdHJpbmcgPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVs
bE9yVW5kZWZpbmVkQ2hlY2soYXJnc1swXSk7Ci0gICAgQXRvbWljU3RyaW5nIGZyYW1lTmFtZSA9
IChhcmdzWzFdLT5Jc1VuZGVmaW5lZCgpIHx8IGFyZ3NbMV0tPklzTnVsbCgpKSA/ICJfYmxhbmsi
IDogQXRvbWljU3RyaW5nKHRvV2ViQ29yZVN0cmluZyhhcmdzWzFdKSk7CisgICAgQXRvbWljU3Ry
aW5nIGZyYW1lTmFtZSA9IEF0b21pY1N0cmluZygoYXJnc1sxXS0+SXNVbmRlZmluZWQoKSB8fCBh
cmdzWzFdLT5Jc051bGwoKSkgPyBTdHJpbmcoIl9ibGFuayIpIDogdG9XZWJDb3JlU3RyaW5nKGFy
Z3NbMV0pKTsKIAogICAgIERPTVdpbmRvdyogcGFyZW50ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0
VG9OYXRpdmVPYmplY3Q8RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgYXJncy5I
b2xkZXIoKSk7CiAgICAgRnJhbWUqIGZyYW1lID0gcGFyZW50LT5mcmFtZSgpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcAppbmRleCBjNDAyMjI2Li4xOWQwYjY4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcApAQCAtNDE3NywyMyArNDE3NywyOCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBmYWNlID0gc2V0dGluZ3MtPnN0YW5kYXJkRm9udEZhbWlseSgpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTZXJp
ZjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtpdC1zZXJpZiI7CisgICAg
ICAgICAgICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgV2Vi
S2l0U2VyaWYsICgiLXdlYmtpdC1zZXJpZiIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZh
Y2UgPSBXZWJLaXRTZXJpZjsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6U2VyaWZGYW1pbHkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVTYW5zU2VyaWY6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gIi13ZWJraXQtc2Fu
cy1zZXJpZiI7CisgICAgICAgICAgICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgV2ViS2l0U2Fuc1NlcmlmLCAoIi13ZWJraXQtc2Fucy1zZXJpZiIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSBXZWJLaXRTYW5zU2VyaWY7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3Jp
cHRpb246OlNhbnNTZXJpZkZhbWlseSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUN1cnNpdmU6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBmYWNlID0gIi13ZWJraXQtY3Vyc2l2ZSI7CisgICAgICAgICAgICAgICAgICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgV2ViS2l0Q3Vyc2l2ZSwgKCIt
d2Via2l0LWN1cnNpdmUiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gV2ViS2l0
Q3Vyc2l2ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5l
cmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6Q3Vyc2l2ZUZhbWlseSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUZhbnRh
c3k6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gIi13ZWJraXQtZmFudGFzeSI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
V2ViS2l0RmFudGFzeSwgKCItd2Via2l0LWZhbnRhc3kiKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBmYWNlID0gV2ViS2l0RmFudGFzeTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6RmFudGFzeUZhbWls
eSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBDU1NWYWx1ZU1vbm9zcGFjZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAi
LXdlYmtpdC1tb25vc3BhY2UiOworICAgICAgICAgICAgICAgICAgICAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIFdlYktpdE1vbm9zcGFjZSwgKCItd2Via2l0LW1vbm9zcGFj
ZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSBXZWJLaXRNb25vc3BhY2U7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShG
b250RGVzY3JpcHRpb246Ok1vbm9zcGFjZUZhbWlseSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZWRmNTBjMS4uOGIzMzRm
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtMzA5Miw3ICszMDkyLDcgQEAgU3RyaW5nIERvY3VtZW50OjpsYXN0
TW9kaWZpZWQoKSBjb25zdAogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmLT5sb2FkZXIo
KS0+ZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotICAgIHJldHVybiBsb2FkZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKCJM
YXN0LU1vZGlmaWVkIik7CisgICAgcmV0dXJuIGxvYWRlci0+cmVzcG9uc2UoKS5odHRwSGVhZGVy
RmllbGQoSFRUUEhlYWRlcnM6Okxhc3RNb2RpZmllZCk7CiB9CiAKIHN0YXRpYyBib29sIGlzVmFs
aWROYW1lTm9uQVNDSUkoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAgYi9XZWJDb3JlL2RvbS9Y
TUxUb2tlbml6ZXIuY3BwCmluZGV4IDMwZDM5ZTAuLjk2NDMzYzkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL1hNTFRva2VuaXplci5jcHAKKysrIGIvV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmNw
cApAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgWE1MVG9rZW5pemVyOjpmaW5pc2goKQogc3RhdGlj
IGlubGluZSBSZWZQdHI8RWxlbWVudD4gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhlYWRlcihEb2N1
bWVudCogZG9jLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZXMpIAogewogICAgIFJlZlB0cjxF
bGVtZW50PiByZXBvcnRFbGVtZW50ID0gZG9jLT5jcmVhdGVFbGVtZW50KFF1YWxpZmllZE5hbWUo
bnVsbEF0b20sICJwYXJzZXJlcnJvciIsIHhodG1sTmFtZXNwYWNlVVJJKSwgZmFsc2UpOwotICAg
IHJlcG9ydEVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICJkaXNwbGF5OiBibG9jazsg
d2hpdGUtc3BhY2U6IHByZTsgYm9yZGVyOiAycHggc29saWQgI2M3NzsgcGFkZGluZzogMCAxZW0g
MCAxZW07IG1hcmdpbjogMWVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRkOyBjb2xvcjogYmxhY2si
KTsKKyAgICByZXBvcnRFbGVtZW50LT5zZXRDU3RyaW5nQXR0cmlidXRlKHN0eWxlQXR0ciwgImRp
c3BsYXk6IGJsb2NrOyB3aGl0ZS1zcGFjZTogcHJlOyBib3JkZXI6IDJweCBzb2xpZCAjYzc3OyBw
YWRkaW5nOiAwIDFlbSAwIDFlbTsgbWFyZ2luOiAxZW07IGJhY2tncm91bmQtY29sb3I6ICNmZGQ7
IGNvbG9yOiBibGFjayIpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJl
ZlB0cjxFbGVtZW50PiBoMyA9IGRvYy0+Y3JlYXRlRWxlbWVudChoM1RhZywgZmFsc2UpOwpAQCAt
MjM4LDcgKzIzOCw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVhIVE1M
UGFyc2VyRXJyb3JIZWFkZXIoRG9jdW1lbnQqIGRvYywgY29uc3QKIAogICAgIFJlZlB0cjxFbGVt
ZW50PiBmaXhlZCA9IGRvYy0+Y3JlYXRlRWxlbWVudChkaXZUYWcsIGZhbHNlKTsKICAgICByZXBv
cnRFbGVtZW50LT5hcHBlbmRDaGlsZChmaXhlZC5nZXQoKSwgZWMpOwotICAgIGZpeGVkLT5zZXRB
dHRyaWJ1dGUoc3R5bGVBdHRyLCAiZm9udC1mYW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxMnB4
Iik7CisgICAgZml4ZWQtPnNldENTdHJpbmdBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiZm9udC1mYW1p
bHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxMnB4Iik7CiAgICAgZml4ZWQtPmFwcGVuZENoaWxkKGRv
Yy0+Y3JlYXRlVGV4dE5vZGUoZXJyb3JNZXNzYWdlcyksIGVjKTsKIAogICAgIGgzID0gZG9jLT5j
cmVhdGVFbGVtZW50KGgzVGFnLCBmYWxzZSk7CkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBYTUxU
b2tlbml6ZXI6Omluc2VydEVycm9yTWVzc2FnZUJsb2NrKCkKICAgICBpZiAoZG9jLT50cmFuc2Zv
cm1Tb3VyY2VEb2N1bWVudCgpKSB7CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBwYXIgPSBkb2Mt
PmNyZWF0ZUVsZW1lbnQocFRhZywgZmFsc2UpOwogICAgICAgICByZXBvcnRFbGVtZW50LT5hcHBl
bmRDaGlsZChwYXIsIGVjKTsKLSAgICAgICAgcGFyLT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAi
d2hpdGUtc3BhY2U6IG5vcm1hbCIpOworICAgICAgICBwYXItPnNldENTdHJpbmdBdHRyaWJ1dGUo
c3R5bGVBdHRyLCAid2hpdGUtc3BhY2U6IG5vcm1hbCIpOwogICAgICAgICBwYXItPmFwcGVuZENo
aWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoIlRoaXMgZG9jdW1lbnQgd2FzIGNyZWF0ZWQgYXMgdGhl
IHJlc3VsdCBvZiBhbiBYU0wgdHJhbnNmb3JtYXRpb24uIFRoZSBsaW5lIGFuZCBjb2x1bW4gbnVt
YmVycyBnaXZlbiBhcmUgZnJvbSB0aGUgdHJhbnNmb3JtZWQgcmVzdWx0LiIpLCBlYyk7CiAgICAg
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXJMaWJ4bWwyLmNw
cCBiL1dlYkNvcmUvZG9tL1hNTFRva2VuaXplckxpYnhtbDIuY3BwCmluZGV4IDlhYTA5NjEuLjhi
Y2QzMDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1hNTFRva2VuaXplckxpYnhtbDIuY3BwCisr
KyBiL1dlYkNvcmUvZG9tL1hNTFRva2VuaXplckxpYnhtbDIuY3BwCkBAIC02NzQsNyArNjc0LDcg
QEAgc3RhdGljIGlubGluZSB2b2lkIGhhbmRsZUVsZW1lbnROYW1lc3BhY2VzKEVsZW1lbnQqIG5l
d0VsZW1lbnQsIGNvbnN0IHhtbENoYXIqKgogICAgICAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0g
dG9TdHJpbmcobmFtZXNwYWNlc1tpXS51cmkpOwogICAgICAgICBpZiAobmFtZXNwYWNlc1tpXS5w
cmVmaXgpCiAgICAgICAgICAgICBuYW1lc3BhY2VRTmFtZSA9ICJ4bWxuczoiICsgdG9TdHJpbmco
bmFtZXNwYWNlc1tpXS5wcmVmaXgpOwotICAgICAgICBuZXdFbGVtZW50LT5zZXRBdHRyaWJ1dGVO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCBuYW1lc3BhY2VRTmFtZSwgbmFtZXNw
YWNlVVJJLCBlYyk7CisgICAgICAgIG5ld0VsZW1lbnQtPnNldEF0dHJpYnV0ZU5TKEF0b21pY1N0
cmluZygiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iKSwgbmFtZXNwYWNlUU5hbWUsIG5h
bWVzcGFjZVVSSSwgZWMpOwogICAgICAgICBpZiAoZWMpIC8vIGV4Y2VwdGlvbiBzZXR0aW5nIGF0
dHJpYnV0ZXMKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvRGVs
ZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKaW5kZXggYzE1NDQyNi4uY2YzMDdhMSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNv
cmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBA
IHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvCiB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmNy
ZWF0ZURlbGV0aW9uVUkoKQogewogICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gY29udGFpbmVy
ID0gbmV3IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgbV90YXJnZXQtPmRvY3VtZW50KCkpOwotICAg
IGNvbnRhaW5lci0+c2V0QXR0cmlidXRlKGlkQXR0ciwgY29udGFpbmVyRWxlbWVudElkZW50aWZp
ZXIpOworICAgIGNvbnRhaW5lci0+c2V0Q1N0cmluZ0F0dHJpYnV0ZShpZEF0dHIsIGNvbnRhaW5l
ckVsZW1lbnRJZGVudGlmaWVyKTsKIAogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBz
dHlsZSA9IGNvbnRhaW5lci0+Z2V0SW5saW5lU3R5bGVEZWNsKCk7CiAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsIENTU1ZhbHVlTm9uZSk7CkBAIC0yMDIs
NyArMjAyLDcgQEAgdm9pZCBEZWxldGVCdXR0b25Db250cm9sbGVyOjpjcmVhdGVEZWxldGlvblVJ
KCkKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCAiMCIpOwogCiAgICAg
UmVmUHRyPEhUTUxEaXZFbGVtZW50PiBvdXRsaW5lID0gbmV3IEhUTUxEaXZFbGVtZW50KGRpdlRh
ZywgbV90YXJnZXQtPmRvY3VtZW50KCkpOwotICAgIG91dGxpbmUtPnNldEF0dHJpYnV0ZShpZEF0
dHIsIG91dGxpbmVFbGVtZW50SWRlbnRpZmllcik7CisgICAgb3V0bGluZS0+c2V0Q1N0cmluZ0F0
dHJpYnV0ZShpZEF0dHIsIG91dGxpbmVFbGVtZW50SWRlbnRpZmllcik7CiAKICAgICBjb25zdCBp
bnQgYm9yZGVyV2lkdGggPSA0OwogICAgIGNvbnN0IGludCBib3JkZXJSYWRpdXMgPSA2OwpAQCAt
MjI1LDcgKzIyNSw3IEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6Y3JlYXRlRGVsZXRp
b25VSSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxEZWxldGVCdXR0b24+IGJ1dHRv
biA9IG5ldyBEZWxldGVCdXR0b24obV90YXJnZXQtPmRvY3VtZW50KCkpOwotICAgIGJ1dHRvbi0+
c2V0QXR0cmlidXRlKGlkQXR0ciwgYnV0dG9uRWxlbWVudElkZW50aWZpZXIpOworICAgIGJ1dHRv
bi0+c2V0Q1N0cmluZ0F0dHJpYnV0ZShpZEF0dHIsIGJ1dHRvbkVsZW1lbnRJZGVudGlmaWVyKTsK
IAogICAgIGNvbnN0IGludCBidXR0b25XaWR0aCA9IDMwOwogICAgIGNvbnN0IGludCBidXR0b25I
ZWlnaHQgPSAzMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNDBhZWQ2MC4uMDc2MDc0OCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKQEAgLTEzMTYsNyArMTMxNiw5IEBAIHZvaWQgRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0Rp
cmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4oZm9jdXNlZE5vZGUpLT5pbnB1dFR5cGUoKSA9PSBIVE1MSW5w
dXRFbGVtZW50OjpTRUFSQ0gpKSkpIHsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBOYXR1cmFs
V3JpdGluZ0RpcmVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc3RhdGljX2Nh
c3Q8SFRNTEVsZW1lbnQqPihmb2N1c2VkTm9kZSktPnNldEF0dHJpYnV0ZShkaXJBdHRyLCBkaXJl
Y3Rpb24gPT0gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uID8gImx0ciIgOiAicnRsIik7Cisg
ICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBsdHIsICgibHRyIikpOwor
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcnRsLCAoInJ0bCIpKTsK
KyAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihmb2N1c2VkTm9kZSktPnNldEF0dHJp
YnV0ZShkaXJBdHRyLCBkaXJlY3Rpb24gPT0gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uID8g
bHRyIDogcnRsKTsKICAgICAgICAgZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5l
ZWRlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjMzOCw5ICsyMzQwLDkgQEAgYm9v
bCBFZGl0b3I6OnNwZWxsQ2hlY2tpbmdFbmFibGVkSW5Gb2N1c2VkTm9kZSgpIGNvbnN0CiAgICAg
d2hpbGUgKG5vZGUpIHsKICAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSkgewogICAg
ICAgICAgICAgY29uc3QgV2ViQ29yZTo6QXRvbWljU3RyaW5nJiB2YWx1ZSA9IHN0YXRpY19jYXN0
PGNvbnN0IEVsZW1lbnQqPihub2RlKS0+Z2V0QXR0cmlidXRlKHNwZWxsY2hlY2tBdHRyKTsKLSAg
ICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgInRydWUiKSkKKyAgICAgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgdHJ1ZUF0b20pKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVl
LCAiZmFsc2UiKSkKKyAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgZmFs
c2VBdG9tKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAg
ICAgbm9kZSA9IG5vZGUtPnBhcmVudCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvckNvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4
IDMzNzliM2MuLmU2NmZhYmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21t
YW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTk2Nywx
MCArOTY3LDEwIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVTdHJpa2V0aHJvdWdoKEZyYW1lKiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjCiAKIHN0YXRpYyBib29sIGV4ZWN1
dGVTdHlsZVdpdGhDU1MoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlICE9ICJmYWxzZSIgJiYgdmFs
dWUgIT0gInRydWUiKQorICAgIGlmICh2YWx1ZSAhPSBmYWxzZUF0b20gJiYgdmFsdWUgIT0gdHJ1
ZUF0b20pCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBmcmFtZS0+ZWRpdG9yKCkt
PnNldFNob3VsZFN0eWxlV2l0aENTUyh2YWx1ZSA9PSAidHJ1ZSIgPyB0cnVlIDogZmFsc2UpOwor
ICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0U2hvdWxkU3R5bGVXaXRoQ1NTKHZhbHVlID09IHRydWVB
dG9tID8gdHJ1ZSA6IGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGlu
Zy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKaW5kZXggMTA5ODc5MS4uMjZmMjM3ZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAorKysgYi9XZWJD
b3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0
YXRpYyBQYXNzUmVmUHRyPEhUTUxCbG9ja3F1b3RlRWxlbWVudD4gY3JlYXRlSW5kZW50QmxvY2tx
dW90ZUVsZW1lbnQoRG9jdW1lbnQqCiB7CiAgICAgUmVmUHRyPEhUTUxCbG9ja3F1b3RlRWxlbWVu
dD4gZWxlbWVudCA9IG5ldyBIVE1MQmxvY2txdW90ZUVsZW1lbnQoYmxvY2txdW90ZVRhZywgZG9j
dW1lbnQpOwogICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIGluZGVudEJsb2Nr
cXVvdGVTdHJpbmcoKSk7Ci0gICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgIm1h
cmdpbjogMCAwIDAgNDBweDsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiAwcHg7Iik7CisgICAgZWxl
bWVudC0+c2V0Q1N0cmluZ0F0dHJpYnV0ZShzdHlsZUF0dHIsICJtYXJnaW46IDAgMCAwIDQwcHg7
IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMHB4OyIpOwogICAgIHJldHVybiBlbGVtZW50LnJlbGVh
c2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBi
L1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXggOGIxYzk4ZC4uMGM5NWNkOSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9XZWJDb3Jl
L2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC05MTYsOCArOTE2LDggQEAgUGFzc1JlZlB0cjxF
bGVtZW50PiBjcmVhdGVUYWJTcGFuRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIFBhc3NSZWZQ
dHI8Tm9kZT4gdGEKIHsKICAgICAvLyBNYWtlIHRoZSBzcGFuIHRvIGhvbGQgdGhlIHRhYi4KICAg
ICBSZWZQdHI8RWxlbWVudD4gc3BhbkVsZW1lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChz
cGFuVGFnLCBmYWxzZSk7Ci0gICAgc3BhbkVsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIs
IEFwcGxlVGFiU3BhbkNsYXNzKTsKLSAgICBzcGFuRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxl
QXR0ciwgIndoaXRlLXNwYWNlOnByZSIpOworICAgIHNwYW5FbGVtZW50LT5zZXRDU3RyaW5nQXR0
cmlidXRlKGNsYXNzQXR0ciwgQXBwbGVUYWJTcGFuQ2xhc3MpOworICAgIHNwYW5FbGVtZW50LT5z
ZXRDU3RyaW5nQXR0cmlidXRlKHN0eWxlQXR0ciwgIndoaXRlLXNwYWNlOnByZSIpOwogCiAgICAg
Ly8gQWRkIHRhYiB0ZXh0IHRvIHRoYXQgc3Bhbi4KICAgICBpZiAoIXRhYlRleHROb2RlKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmNwcAppbmRleCA0NzcxNGU3Li4xY2Y4N2NkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMzIyLDcg
KzMyMiw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFkZE5hbWVzcGFjZUF0dHIoY29uc3QgQXR0cmli
dXRlKiBhdHRyLCBIYXNoTWFwPEF0b21pY1N0cmluZ0ltCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgCi0gICAgUXVhbGlmaWVkTmFtZSB4bWxuc1ByZWZpeEF0dHIoInhtbG5zIiwg
YXR0ci0+bG9jYWxOYW1lKCksIHhtbG5zVVJJKTsKKyAgICBRdWFsaWZpZWROYW1lIHhtbG5zUHJl
Zml4QXR0cih4bWxuc0F0dHIubG9jYWxOYW1lKCksIGF0dHItPmxvY2FsTmFtZSgpLCB4bWxuc1VS
SSk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB4bWxuc1ByZWZpeEF0dHIpIHsKICAgICAgICAg
bmFtZXNwYWNlcy5zZXQoYXR0ci0+bG9jYWxOYW1lKCkuaW1wbCgpLCBhdHRyLT52YWx1ZSgpLmlt
cGwoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNTgsNyArMTE1OCw3IEBAIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChSYW5nZSogY29u
dGV4dCwgY29uc3QgU3RyaW5nCiAgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKICAgICAgICAgaWYg
KHN0cmluZy5lbmRzV2l0aCgiXG4iKSkgewogICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVs
ZW1lbnQgPSBjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQpOwotICAgICAgICAgICAgZWxlbWVu
dC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUpOyAgICAg
ICAgICAgIAorICAgICAgICAgICAgZWxlbWVudC0+c2V0Q1N0cmluZ0F0dHJpYnV0ZShjbGFzc0F0
dHIsIEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lKTsgICAgICAgICAgICAKICAgICAgICAgICAgIGZy
YWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50LnJlbGVhc2UoKSwgZWMpOwogICAgICAgICAgICAg
QVNTRVJUKGVjID09IDApOwogICAgICAgICB9CkBAIC0xMTkwLDcgKzExOTAsNyBAQCBQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoUmFuZ2UqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZwogICAgICAgICBpZiAocy5pc0VtcHR5KCkgJiYgaSArIDEgPT0gbnVt
TGluZXMpIHsKICAgICAgICAgICAgIC8vIEZvciBsYXN0IGxpbmUsIHVzZSB0aGUgIm1hZ2ljIEJS
IiByYXRoZXIgdGhhbiBhIFAuCiAgICAgICAgICAgICBlbGVtZW50ID0gY3JlYXRlQnJlYWtFbGVt
ZW50KGRvY3VtZW50KTsKLSAgICAgICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0
dHIsIEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lKTsgICAgICAgICAgICAKKyAgICAgICAgICAgIGVs
ZW1lbnQtPnNldENTdHJpbmdBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBcHBsZUludGVyY2hhbmdlTmV3
bGluZSk7ICAgICAgICAgICAgCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAodXNl
Q2xvbmVzT2ZFbmNsb3NpbmdCbG9jaykKICAgICAgICAgICAgICAgICBlbGVtZW50ID0gYmxvY2st
PmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHAKaW5kZXggNDQ2ZDRlMC4uODI0YTFlZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxB
bmNob3JFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3Bw
CkBAIC0zMTgsOSArMzE4LDkgQEAgYm9vbCBIVE1MQW5jaG9yRWxlbWVudDo6ZHJhZ2dhYmxlKCkg
Y29uc3QKIHsKICAgICAvLyBTaG91bGQgYmUgZHJhZ2dhYmxlIGlmIHdlIGhhdmUgYW4gaHJlZiBh
dHRyaWJ1dGUuCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGdldEF0dHJpYnV0ZShk
cmFnZ2FibGVBdHRyKTsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJ0cnVlIikp
CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCB0cnVlQXRvbSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZhbHNlIikpCisg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCBmYWxzZUF0b20pKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShocmVmQXR0cik7CiB9CkBAIC0zNDUs
NyArMzQ1LDggQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0UmVsKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiAgICAgbV9saW5rUmVsYXRpb25zID0gMDsKICAgICBDbGFzc05hbWVzIG5ld0xpbmtS
ZWxhdGlvbnModmFsdWUsIHRydWUpOwogICAgIC8vIEZJWE1FOiBBZGQgbGluayByZWxhdGlvbnMg
YXMgdGhleSBhcmUgaW1wbGVtZW50ZWQKLSAgICBpZiAobmV3TGlua1JlbGF0aW9ucy5jb250YWlu
cygibm9yZWZlcnJlciIpKQorICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBu
b3JlZmVycmVyLCAoIm5vcmVmZXJyZXIiKSk7CisgICAgaWYgKG5ld0xpbmtSZWxhdGlvbnMuY29u
dGFpbnMobm9yZWZlcnJlcikpCiAgICAgICAgIG1fbGlua1JlbGF0aW9ucyB8PSBSZWxhdGlvbk5v
UmVmZXJyZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQu
Y3BwIGIvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKaW5kZXggYjIwMmNhZS4uNTM0
NTQyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBib29s
IEhUTUxBcmVhRWxlbWVudDo6bm9IcmVmKCkgY29uc3QKIAogdm9pZCBIVE1MQXJlYUVsZW1lbnQ6
OnNldE5vSHJlZihib29sIG5vSHJlZikKIHsKLSAgICBzZXRBdHRyaWJ1dGUobm9ocmVmQXR0ciwg
bm9IcmVmID8gIiIgOiAwKTsKKyAgICBzZXRBdHRyaWJ1dGUobm9ocmVmQXR0ciwgbm9IcmVmID8g
ZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiBib29sIEhUTUxBcmVhRWxlbWVudDo6c3VwcG9y
dHNGb2N1cygpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVu
dC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVudC5jcHAKaW5kZXggODY4MTMzMi4u
MmY0YzU0MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxETGlzdEVsZW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MRExpc3RFbGVtZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCBi
b29sIEhUTUxETGlzdEVsZW1lbnQ6OmNvbXBhY3QoKSBjb25zdAogCiB2b2lkIEhUTUxETGlzdEVs
ZW1lbnQ6OnNldENvbXBhY3QoYm9vbCBiKQogewotICAgIHNldEF0dHJpYnV0ZShjb21wYWN0QXR0
ciwgYiA/ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRlKGNvbXBhY3RBdHRyLCBiID8gZW1wdHlB
dG9tIDogbnVsbEF0b20pOwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTERh
dGFHcmlkQ2VsbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZENlbGxFbGVt
ZW50LmNwcAppbmRleCBiYWQ4OTI5Li40MGE0OTA4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTERhdGFHcmlkQ2VsbEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUdy
aWRDZWxsRWxlbWVudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBIVE1MRGF0YUdyaWRDZWxs
RWxlbWVudDo6Zm9jdXNlZCgpIGNvbnN0CiAKIHZvaWQgSFRNTERhdGFHcmlkQ2VsbEVsZW1lbnQ6
OnNldEZvY3VzZWQoYm9vbCBmb2N1c2VkKQogewotICAgIHNldEF0dHJpYnV0ZShmb2N1c2VkQXR0
ciwgZm9jdXNlZCA/ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRlKGZvY3VzZWRBdHRyLCBmb2N1
c2VkID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiBib29sIEhUTUxEYXRhR3JpZENlbGxF
bGVtZW50OjpjaGVja2VkKCkgY29uc3QKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBIVE1MRGF0YUdy
aWRDZWxsRWxlbWVudDo6Y2hlY2tlZCgpIGNvbnN0CiAKIHZvaWQgSFRNTERhdGFHcmlkQ2VsbEVs
ZW1lbnQ6OnNldENoZWNrZWQoYm9vbCBjaGVja2VkKQogewotICAgIHNldEF0dHJpYnV0ZShjaGVj
a2VkQXR0ciwgY2hlY2tlZCA/ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRlKGNoZWNrZWRBdHRy
LCBjaGVja2VkID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiBib29sIEhUTUxEYXRhR3Jp
ZENlbGxFbGVtZW50OjppbmRldGVybWluYXRlKCkgY29uc3QKQEAgLTc4LDcgKzc4LDcgQEAgYm9v
bCBIVE1MRGF0YUdyaWRDZWxsRWxlbWVudDo6aW5kZXRlcm1pbmF0ZSgpIGNvbnN0CiAKIHZvaWQg
SFRNTERhdGFHcmlkQ2VsbEVsZW1lbnQ6OnNldEluZGV0ZXJtaW5hdGUoYm9vbCBpbmRldGVybWlu
YXRlKQogewotICAgIHNldEF0dHJpYnV0ZShpbmRldGVybWluYXRlQXR0ciwgaW5kZXRlcm1pbmF0
ZSA/ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRlKGluZGV0ZXJtaW5hdGVBdHRyLCBpbmRldGVy
bWluYXRlID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiBmbG9hdCBIVE1MRGF0YUdyaWRD
ZWxsRWxlbWVudDo6cHJvZ3Jlc3MoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxEYXRhR3JpZENvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZENvbEVs
ZW1lbnQuY3BwCmluZGV4IDgzOTg1NDUuLmEyODk4OWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MRGF0YUdyaWRDb2xFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERhdGFH
cmlkQ29sRWxlbWVudC5jcHAKQEAgLTEyOCwxMSArMTI4LDExIEBAIHZvaWQgSFRNTERhdGFHcmlk
Q29sRWxlbWVudDo6c2V0U29ydERpcmVjdGlvbih1bnNpZ25lZCBzaG9ydCBzb3J0RGlyZWN0aW9u
KQogewogICAgIC8vIEZJWE1FOiBDaGVjayBzb3J0YWJsZSBydWxlcy4KICAgICBpZiAoc29ydERp
cmVjdGlvbiA9PSAwKQotICAgICAgICBzZXRBdHRyaWJ1dGUoc29ydGRpcmVjdGlvbkF0dHIsICJu
YXR1cmFsIik7CisgICAgICAgIHNldENTdHJpbmdBdHRyaWJ1dGUoc29ydGRpcmVjdGlvbkF0dHIs
ICJuYXR1cmFsIik7CiAgICAgZWxzZSBpZiAoc29ydERpcmVjdGlvbiA9PSAxKQotICAgICAgICBz
ZXRBdHRyaWJ1dGUoc29ydGRpcmVjdGlvbkF0dHIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgc2V0
Q1N0cmluZ0F0dHJpYnV0ZShzb3J0ZGlyZWN0aW9uQXR0ciwgImFzY2VuZGluZyIpOwogICAgIGVs
c2UgaWYgKHNvcnREaXJlY3Rpb24gPT0gMikKLSAgICAgICAgc2V0QXR0cmlidXRlKHNvcnRkaXJl
Y3Rpb25BdHRyLCAiZGVzY2VuZGluZyIpOworICAgICAgICBzZXRDU3RyaW5nQXR0cmlidXRlKHNv
cnRkaXJlY3Rpb25BdHRyLCAiZGVzY2VuZGluZyIpOwogfQogCiBib29sIEhUTUxEYXRhR3JpZENv
bEVsZW1lbnQ6OnByaW1hcnkoKSBjb25zdApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgSFRNTERh
dGFHcmlkQ29sRWxlbWVudDo6cHJpbWFyeSgpIGNvbnN0CiAKIHZvaWQgSFRNTERhdGFHcmlkQ29s
RWxlbWVudDo6c2V0UHJpbWFyeShib29sIHByaW1hcnkpCiB7Ci0gICAgc2V0QXR0cmlidXRlKHBy
aW1hcnlBdHRyLCBwcmltYXJ5ID8gIiIgOiAwKTsKKyAgICBzZXRBdHRyaWJ1dGUocHJpbWFyeUF0
dHIsIHByaW1hcnkgPyBlbXB0eUF0b20gOiBudWxsQXRvbSk7CiB9CiAKIHZvaWQgSFRNTERhdGFH
cmlkQ29sRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRy
KSAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUdyaWRFbGVtZW50LmNwcCBiL1dl
YkNvcmUvaHRtbC9IVE1MRGF0YUdyaWRFbGVtZW50LmNwcAppbmRleCBiYjFmNGE2Li5mZDliMDFl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERhdGFHcmlkRWxlbWVudC5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZEVsZW1lbnQuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGJv
b2wgSFRNTERhdGFHcmlkRWxlbWVudDo6YXV0b2ZvY3VzKCkgY29uc3QKIAogdm9pZCBIVE1MRGF0
YUdyaWRFbGVtZW50OjpzZXRBdXRvZm9jdXMoYm9vbCBhdXRvZm9jdXMpCiB7Ci0gICAgc2V0QXR0
cmlidXRlKGF1dG9mb2N1c0F0dHIsIGF1dG9mb2N1cyA/ICIiIDogMCk7CisgICAgc2V0QXR0cmli
dXRlKGF1dG9mb2N1c0F0dHIsIGF1dG9mb2N1cyA/IGVtcHR5QXRvbSA6IG51bGxBdG9tKTsKIH0K
IAogYm9vbCBIVE1MRGF0YUdyaWRFbGVtZW50OjpkaXNhYmxlZCgpIGNvbnN0CkBAIC03OSw3ICs3
OSw3IEBAIGJvb2wgSFRNTERhdGFHcmlkRWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAogCiB2b2lk
IEhUTUxEYXRhR3JpZEVsZW1lbnQ6OnNldERpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiB7Ci0gICAg
c2V0QXR0cmlidXRlKGRpc2FibGVkQXR0ciwgZGlzYWJsZWQgPyAiIiA6IDApOworICAgIHNldEF0
dHJpYnV0ZShkaXNhYmxlZEF0dHIsIGRpc2FibGVkID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwog
fQogCiBib29sIEhUTUxEYXRhR3JpZEVsZW1lbnQ6Om11bHRpcGxlKCkgY29uc3QKQEAgLTg5LDcg
Kzg5LDcgQEAgYm9vbCBIVE1MRGF0YUdyaWRFbGVtZW50OjptdWx0aXBsZSgpIGNvbnN0CiAKIHZv
aWQgSFRNTERhdGFHcmlkRWxlbWVudDo6c2V0TXVsdGlwbGUoYm9vbCBtdWx0aXBsZSkKIHsKLSAg
ICBzZXRBdHRyaWJ1dGUobXVsdGlwbGVBdHRyLCBtdWx0aXBsZSA/ICIiIDogMCk7CisgICAgc2V0
QXR0cmlidXRlKG11bHRpcGxlQXR0ciwgbXVsdGlwbGUgPyBlbXB0eUF0b20gOiBudWxsQXRvbSk7
CiB9CiAKIHZvaWQgSFRNTERhdGFHcmlkRWxlbWVudDo6c2V0RGF0YVNvdXJjZShQYXNzUmVmUHRy
PERhdGFHcmlkRGF0YVNvdXJjZT4gZHMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTERh
dGFHcmlkUm93RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTERhdGFHcmlkUm93RWxlbWVu
dC5jcHAKaW5kZXggYzk1OGNiZC4uMDYzNjA4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxEYXRhR3JpZFJvd0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUdyaWRS
b3dFbGVtZW50LmNwcApAQCAtNTUsNyArNTUsNyBAQCBib29sIEhUTUxEYXRhR3JpZFJvd0VsZW1l
bnQ6OnNlbGVjdGVkKCkgY29uc3QKIAogdm9pZCBIVE1MRGF0YUdyaWRSb3dFbGVtZW50OjpzZXRT
ZWxlY3RlZChib29sIHNlbGVjdGVkKQogewotICAgIHNldEF0dHJpYnV0ZShzZWxlY3RlZEF0dHIs
IHNlbGVjdGVkID8gIiIgOiAwKTsKKyAgICBzZXRBdHRyaWJ1dGUoc2VsZWN0ZWRBdHRyLCBzZWxl
Y3RlZCA/IGVtcHR5QXRvbSA6IG51bGxBdG9tKTsKIH0KIAogYm9vbCBIVE1MRGF0YUdyaWRSb3dF
bGVtZW50Ojpmb2N1c2VkKCkgY29uc3QKQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBIVE1MRGF0YUdy
aWRSb3dFbGVtZW50Ojpmb2N1c2VkKCkgY29uc3QKIAogdm9pZCBIVE1MRGF0YUdyaWRSb3dFbGVt
ZW50OjpzZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkKIHsKLSAgICBzZXRBdHRyaWJ1dGUoZm9jdXNl
ZEF0dHIsIGZvY3VzZWQgPyAiIiA6IDApOworICAgIHNldEF0dHJpYnV0ZShmb2N1c2VkQXR0ciwg
Zm9jdXNlZCA/IGVtcHR5QXRvbSA6IG51bGxBdG9tKTsKIH0KIAogYm9vbCBIVE1MRGF0YUdyaWRS
b3dFbGVtZW50OjpleHBhbmRlZCgpIGNvbnN0CkBAIC03NSw3ICs3NSw3IEBAIGJvb2wgSFRNTERh
dGFHcmlkUm93RWxlbWVudDo6ZXhwYW5kZWQoKSBjb25zdAogCiB2b2lkIEhUTUxEYXRhR3JpZFJv
d0VsZW1lbnQ6OnNldEV4cGFuZGVkKGJvb2wgZXhwYW5kZWQpCiB7Ci0gICAgc2V0QXR0cmlidXRl
KGV4cGFuZGVkQXR0ciwgZXhwYW5kZWQgPyAiIiA6IDApOworICAgIHNldEF0dHJpYnV0ZShleHBh
bmRlZEF0dHIsIGV4cGFuZGVkID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTERpcmVjdG9yeUVs
ZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxEaXJlY3RvcnlFbGVtZW50LmNwcAppbmRleCAx
NzM5NjljLi44ODRjNjRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERpcmVjdG9yeUVs
ZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRGlyZWN0b3J5RWxlbWVudC5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAgYm9vbCBIVE1MRGlyZWN0b3J5RWxlbWVudDo6Y29tcGFjdCgpIGNvbnN0
CiAKIHZvaWQgSFRNTERpcmVjdG9yeUVsZW1lbnQ6OnNldENvbXBhY3QoYm9vbCBiKQogewotICAg
IHNldEF0dHJpYnV0ZShjb21wYWN0QXR0ciwgYiA/ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRl
KGNvbXBhY3RBdHRyLCBiID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcAppbmRleCBkZjNjYjdkLi4wZGE0MDQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTE0
MSwxMCArMTQxLDEwIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJv
cGVydHlVbmljb2RlQmlkaSwgaGFzTG9jYWxOYW1lKGJkb1RhZykgPyBDU1NWYWx1ZUJpZGlPdmVy
cmlkZSA6IENTU1ZhbHVlRW1iZWQpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRy
YWdnYWJsZUF0dHIpIHsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHIt
PnZhbHVlKCk7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgInRydWUiKSkg
eworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsIHRydWVBdG9tKSkgewogICAg
ICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywg
Q1NTVmFsdWVFbGVtZW50KTsKICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1By
b3BlcnR5V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgfSBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZhbHNlIikpCisgICAgICAgIH0gZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsIGZhbHNlQXRvbSkpCiAgICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBDU1NWYWx1ZU5vbmUpOwog
ICAgIH0KIC8vIHN0YW5kYXJkIGV2ZW50cwpAQCAtNjQ3LDEzICs2NDcsMTMgQEAgU3RyaW5nIEhU
TUxFbGVtZW50Ojpjb250ZW50RWRpdGFibGUoKSBjb25zdAogICAgIGRvY3VtZW50KCktPnVwZGF0
ZVN0eWxlSWZOZWVkZWQoKTsKIAogICAgIGlmICghcmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJu
ICJmYWxzZSI7CisgICAgICAgIHJldHVybiBmYWxzZUF0b207CiAgICAgCiAgICAgc3dpdGNoIChy
ZW5kZXJlcigpLT5zdHlsZSgpLT51c2VyTW9kaWZ5KCkpIHsKICAgICAgICAgY2FzZSBSRUFEX1dS
SVRFOgotICAgICAgICAgICAgcmV0dXJuICJ0cnVlIjsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
QXRvbTsKICAgICAgICAgY2FzZSBSRUFEX09OTFk6Ci0gICAgICAgICAgICByZXR1cm4gImZhbHNl
IjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZUF0b207CiAgICAgICAgIGNhc2UgUkVBRF9XUklU
RV9QTEFJTlRFWFRfT05MWToKICAgICAgICAgICAgIHJldHVybiAicGxhaW50ZXh0LW9ubHkiOwog
ICAgICAgICBkZWZhdWx0OgpAQCAtNjY0LDEyICs2NjQsMTIgQEAgU3RyaW5nIEhUTUxFbGVtZW50
Ojpjb250ZW50RWRpdGFibGUoKSBjb25zdAogdm9pZCBIVE1MRWxlbWVudDo6c2V0Q29udGVudEVk
aXRhYmxlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikgCiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBlbmFibGVkID0gYXR0ci0+dmFsdWUoKTsKLSAgICBpZiAoZW5hYmxlZC5pc0VtcHR5KCkgfHwg
ZXF1YWxJZ25vcmluZ0Nhc2UoZW5hYmxlZCwgInRydWUiKSkgeworICAgIGlmIChlbmFibGVkLmlz
RW1wdHkoKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShlbmFibGVkLCB0cnVlQXRvbSkpIHsKICAgICAg
ICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NW
YWx1ZVJlYWRXcml0ZSk7CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5
V29yZFdyYXAsIENTU1ZhbHVlQnJlYWtXb3JkKTsKICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0
ciwgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgQ1NTVmFsdWVTcGFjZSk7CiAgICAgICAgIGFk
ZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCBDU1NWYWx1ZUFm
dGVyV2hpdGVTcGFjZSk7Ci0gICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlbmFibGVk
LCAiZmFsc2UiKSkgeworICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZW5hYmxlZCwg
ZmFsc2VBdG9tKSkgewogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdl
YmtpdFVzZXJNb2RpZnksIENTU1ZhbHVlUmVhZE9ubHkpOwogICAgICAgICBhdHRyLT5kZWNsKCkt
PnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5V29yZFdyYXAsIGZhbHNlKTsKICAgICAgICAgYXR0
ci0+ZGVjbCgpLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBmYWxz
ZSk7CkBAIC02OTQsMTcgKzY5NCwxNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRp
dGFibGUoY29uc3QgU3RyaW5nICZlbmFibGVkKQogICAgICAgICByZW1vdmVBdHRyaWJ1dGUoY29u
dGVudGVkaXRhYmxlQXR0ciwgZWMpOwogICAgIH0KICAgICBlbHNlCi0gICAgICAgIHNldEF0dHJp
YnV0ZShjb250ZW50ZWRpdGFibGVBdHRyLCBlbmFibGVkLmlzRW1wdHkoKSA/ICJ0cnVlIiA6IGVu
YWJsZWQpOworICAgICAgICBzZXRBdHRyaWJ1dGUoY29udGVudGVkaXRhYmxlQXR0ciwgZW5hYmxl
ZC5pc0VtcHR5KCkgPyB0cnVlQXRvbSA6IEF0b21pY1N0cmluZyhlbmFibGVkKSk7CiB9CiAKIGJv
b2wgSFRNTEVsZW1lbnQ6OmRyYWdnYWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGVxdWFsSWdu
b3JpbmdDYXNlKGdldEF0dHJpYnV0ZShkcmFnZ2FibGVBdHRyKSwgInRydWUiKTsKKyAgICByZXR1
cm4gZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGRyYWdnYWJsZUF0dHIpLCB0cnVlQXRv
bSk7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldERyYWdnYWJsZShib29sIHZhbHVlKQogewot
ICAgIHNldEF0dHJpYnV0ZShkcmFnZ2FibGVBdHRyLCB2YWx1ZSA/ICJ0cnVlIiA6ICJmYWxzZSIp
OworICAgIHNldEF0dHJpYnV0ZShkcmFnZ2FibGVBdHRyLCB2YWx1ZSA/IHRydWVBdG9tIDogZmFs
c2VBdG9tKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudDo6Y2xpY2soKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVs
ZW1lbnQuY3BwCmluZGV4IDgxYjg4YTQuLjhmNTdkYjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVu
dC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgIG1faW1hZ2VM
b2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAgICAg
IH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoaWRkZW5BdHRyKSB7Ci0gICAgICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS5zdHJpbmcoKSwgInllcyIpIHx8IGVxdWFsSWdu
b3JpbmdDYXNlKHZhbHVlLnN0cmluZygpLCAidHJ1ZSIpKSB7CisgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSh2YWx1ZS5zdHJpbmcoKSwgInllcyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHZh
bHVlLnN0cmluZygpLCB0cnVlQXRvbSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBOb3QgZHlu
YW1pYywgc2luY2Ugd2UgYWRkIHRoaXMgYnV0IGRvbid0IHJlbW92ZSBpdCwgYnV0IGl0IG1heSBi
ZSBPSyBmb3Igbm93CiAgICAgICAgICAgICAvLyB0aGF0IHRoaXMgcmFyZWx5LXVzZWQgYXR0cmli
dXRlIHdvbid0IHdvcmsgcHJvcGVybHkgaWYgeW91IHJlbW92ZSBpdC4KICAgICAgICAgICAgIGFk
ZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eVdpZHRoLCAiMCIpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDI1MzFjNDguLjljMDZiMzggMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50Ojpmb3JtTm9WYWxpZGF0ZSgpIGNvbnN0CiAKIHZvaWQgSFRNTEZv
cm1Db250cm9sRWxlbWVudDo6c2V0Rm9ybU5vVmFsaWRhdGUoYm9vbCBmb3Jtbm92YWxpZGF0ZSkK
IHsKLSAgICBzZXRBdHRyaWJ1dGUoZm9ybW5vdmFsaWRhdGVBdHRyLCBmb3Jtbm92YWxpZGF0ZSA/
ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRlKGZvcm1ub3ZhbGlkYXRlQXR0ciwgZm9ybW5vdmFs
aWRhdGUgPyBlbXB0eUF0b20gOiBudWxsQXRvbSk7CiB9CiAKIFZhbGlkaXR5U3RhdGUqIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OnZhbGlkaXR5KCkKQEAgLTIwNSwxMiArMjA1LDEyIEBAIGJvb2wg
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAogCiB2b2lkIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OnNldERpc2FibGVkKGJvb2wgYikKIHsKLSAgICBzZXRBdHRyaWJ1dGUo
ZGlzYWJsZWRBdHRyLCBiID8gIiIgOiAwKTsKKyAgICBzZXRBdHRyaWJ1dGUoZGlzYWJsZWRBdHRy
LCBiID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OnNldFJlYWRPbmx5KGJvb2wgYikKIHsKLSAgICBzZXRBdHRyaWJ1dGUocmVhZG9ubHlB
dHRyLCBiID8gIiIgOiAwKTsKKyAgICBzZXRBdHRyaWJ1dGUocmVhZG9ubHlBdHRyLCBiID8gZW1w
dHlBdG9tIDogbnVsbEF0b20pOwogfQogCiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF1
dG9mb2N1cygpIGNvbnN0CkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50OjphdXRvZm9jdXMoKSBjb25zdAogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OnNldEF1dG9mb2N1cyhib29sIGIpCiB7Ci0gICAgc2V0QXR0cmlidXRlKGF1dG9mb2N1c0F0dHIs
IGIgPyAiYXV0b2ZvY3VzIiA6IDApOworICAgIHNldEF0dHJpYnV0ZShhdXRvZm9jdXNBdHRyLCBi
ID8gYXV0b2ZvY3VzQXR0ci5sb2NhbE5hbWUoKSA6IG51bGxBdG9tKTsKIH0KIAogYm9vbCBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZCgpIGNvbnN0CkBAIC0yMzAsNyArMjMwLDcgQEAg
Ym9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZCgpIGNvbnN0CiAKIHZvaWQgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6c2V0UmVxdWlyZWQoYm9vbCBiKQogewotICAgIHNldEF0dHJp
YnV0ZShyZXF1aXJlZEF0dHIsIGIgPyAicmVxdWlyZWQiIDogMCk7CisgICAgc2V0QXR0cmlidXRl
KHJlcXVpcmVkQXR0ciwgYiA/IHJlcXVpcmVkQXR0ci5sb2NhbE5hbWUoKSA6IG51bGxBdG9tKTsK
IH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5n
ZSBjaGFuZ2UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IGFjZTBmMmYuLmI0MGU3NmYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC01NDUsNyArNTQ1LDcgQEAgYm9vbCBIVE1M
Rm9ybUVsZW1lbnQ6Om5vVmFsaWRhdGUoKSBjb25zdAogCiB2b2lkIEhUTUxGb3JtRWxlbWVudDo6
c2V0Tm9WYWxpZGF0ZShib29sIG5vdmFsaWRhdGUpCiB7Ci0gICAgc2V0QXR0cmlidXRlKG5vdmFs
aWRhdGVBdHRyLCBub3ZhbGlkYXRlID8gIiIgOiAwKTsKKyAgICBzZXRBdHRyaWJ1dGUobm92YWxp
ZGF0ZUF0dHIsIG5vdmFsaWRhdGUgPyBlbXB0eUF0b20gOiBudWxsQXRvbSk7CiB9CiAKIHZvaWQg
SFRNTEZvcm1FbGVtZW50OjpzZXRBY2NlcHRDaGFyc2V0KGNvbnN0IFN0cmluZyAmdmFsdWUpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKaW5kZXggYjQ1NmFjMy4uMTlhYWQ2YiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50LmNwcApAQCAtOTksNyArOTksNyBAQCB2b2lkIEhUTUxGcmFtZUVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIAogdm9pZCBI
VE1MRnJhbWVFbGVtZW50OjpzZXROb1Jlc2l6ZShib29sIG5vUmVzaXplKQogewotICAgIHNldEF0
dHJpYnV0ZShub3Jlc2l6ZUF0dHIsIG5vUmVzaXplID8gIiIgOiAwKTsKKyAgICBzZXRBdHRyaWJ1
dGUobm9yZXNpemVBdHRyLCBub1Jlc2l6ZSA/IGVtcHR5QXRvbSA6IG51bGxBdG9tKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxIUkVs
ZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwCmluZGV4IDY4NThmNTYu
LjkxZjAzOGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBib29s
IEhUTUxIUkVsZW1lbnQ6Om5vU2hhZGUoKSBjb25zdAogCiB2b2lkIEhUTUxIUkVsZW1lbnQ6OnNl
dE5vU2hhZGUoYm9vbCBub1NoYWRlKQogewotICAgIHNldEF0dHJpYnV0ZShub3NoYWRlQXR0ciwg
bm9TaGFkZSA/ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRlKG5vc2hhZGVBdHRyLCBub1NoYWRl
ID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiBTdHJpbmcgSFRNTEhSRWxlbWVudDo6c2l6
ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAg
Yi9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggZDM1MzA3My4uMDcxMDE0
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtOTEsNyArOTEsOCBAQCB2b2lkIEhU
TUxJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0
cikKICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52
YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBib3JkZXJBdHRyKSB7CiAgICAgICAg
IC8vIGJvcmRlcj0ibm9ib3JkZXIiIC0+IGJvcmRlcj0iMCIKLSAgICAgICAgYWRkQ1NTTGVuZ3Ro
KGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIGF0dHItPnZhbHVlKCkudG9JbnQoKSA/IGF0
dHItPnZhbHVlKCkgOiAiMCIpOworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgemVyb0F0b20sICgiMCIpKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1By
b3BlcnR5Qm9yZGVyV2lkdGgsIGF0dHItPnZhbHVlKCkudG9JbnQoKSA/IGF0dHItPnZhbHVlKCkg
OiB6ZXJvQXRvbSk7CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5Qm9y
ZGVyVG9wU3R5bGUsIENTU1ZhbHVlU29saWQpOwogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRy
LCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1ZhbHVlU29saWQpOwogICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NWYWx1
ZVNvbGlkKTsKQEAgLTI4OSw3ICsyOTAsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxJbWFn
ZUVsZW1lbnQ6OmFsdCgpIGNvbnN0CiBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmRyYWdnYWJsZSgp
IGNvbnN0CiB7CiAgICAgLy8gSW1hZ2UgZWxlbWVudHMgYXJlIGRyYWdnYWJsZSBieSBkZWZhdWx0
LgotICAgIHJldHVybiAhZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGRyYWdnYWJsZUF0
dHIpLCAiZmFsc2UiKTsKKyAgICByZXR1cm4gIWVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0
ZShkcmFnZ2FibGVBdHRyKSwgZmFsc2VBdG9tKTsKIH0KIAogdm9pZCBIVE1MSW1hZ2VFbGVtZW50
OjpzZXRIZWlnaHQoaW50IHZhbHVlKQpAQCAtMzE1LDcgKzMxNiw3IEBAIGJvb2wgSFRNTEltYWdl
RWxlbWVudDo6aXNNYXAoKSBjb25zdAogCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnNldElzTWFw
KGJvb2wgaXNNYXApCiB7Ci0gICAgc2V0QXR0cmlidXRlKGlzbWFwQXR0ciwgaXNNYXAgPyAiIiA6
IDApOworICAgIHNldEF0dHJpYnV0ZShpc21hcEF0dHIsIGlzTWFwID8gZW1wdHlBdG9tIDogbnVs
bEF0b20pOwogfQogCiBLVVJMIEhUTUxJbWFnZUVsZW1lbnQ6OmxvbmdEZXNjKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBiYjhmZDI2Li41ZDE3ZTdiIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCkBAIC02MDEsMzAgKzYwMSwzMCBAQCBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nKiBjcmVhdGVGb3JtQ29udHJvbFR5cGVzKCkKICAgICBBdG9taWNTdHJpbmcqIHR5
cGVzID0gbmV3IEF0b21pY1N0cmluZ1tIVE1MSW5wdXRFbGVtZW50OjpudW1iZXJPZlR5cGVzXTsK
ICAgICAvLyBUaGUgdmFsdWVzIG11c3QgYmUgbG93ZXJjYXNlZCBiZWNhdXNlIHRoZXkgd2lsbCBi
ZSB0aGUgcmV0dXJuIHZhbHVlcyBvZgogICAgIC8vICBpbnB1dC50eXBlIGFuZCBpdCBtdXN0IGJl
IGxvd2VyY2FzZSBhY2NvcmRpbmcgdG8gRE9NIExldmVsIDIuCi0gICAgdHlwZXNbSFRNTElucHV0
RWxlbWVudDo6QlVUVE9OXSA9ICJidXR0b24iOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6
OkNIRUNLQk9YXSA9ICJjaGVja2JveCI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6Q09M
T1JdID0gImNvbG9yIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpEQVRFXSA9ICJkYXRl
IjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpEQVRFVElNRV0gPSAiZGF0ZXRpbWUiOwot
ICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OkRBVEVUSU1FTE9DQUxdID0gImRhdGV0aW1lLWxv
Y2FsIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpFTUFJTF0gPSAiZW1haWwiOwotICAg
IHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OkZJTEVdID0gImZpbGUiOwotICAgIHR5cGVzW0hUTUxJ
bnB1dEVsZW1lbnQ6OkhJRERFTl0gPSAiaGlkZGVuIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVt
ZW50OjpJTUFHRV0gPSAiaW1hZ2UiOworICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OkJVVFRP
Tl0gPSBBdG9taWNTdHJpbmcoImJ1dHRvbiIpOworICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6
OkNIRUNLQk9YXSA9IEF0b21pY1N0cmluZygiY2hlY2tib3giKTsKKyAgICB0eXBlc1tIVE1MSW5w
dXRFbGVtZW50OjpDT0xPUl0gPSBBdG9taWNTdHJpbmcoImNvbG9yIik7CisgICAgdHlwZXNbSFRN
TElucHV0RWxlbWVudDo6REFURV0gPSBBdG9taWNTdHJpbmcoImRhdGUiKTsKKyAgICB0eXBlc1tI
VE1MSW5wdXRFbGVtZW50OjpEQVRFVElNRV0gPSBBdG9taWNTdHJpbmcoImRhdGV0aW1lIik7Cisg
ICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6REFURVRJTUVMT0NBTF0gPSBBdG9taWNTdHJpbmco
ImRhdGV0aW1lLWxvY2FsIik7CisgICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6RU1BSUxdID0g
QXRvbWljU3RyaW5nKCJlbWFpbCIpOworICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OkZJTEVd
ID0gQXRvbWljU3RyaW5nKCJmaWxlIik7CisgICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6SElE
REVOXSA9IEF0b21pY1N0cmluZygiaGlkZGVuIik7CisgICAgdHlwZXNbSFRNTElucHV0RWxlbWVu
dDo6SU1BR0VdID0gQXRvbWljU3RyaW5nKCJpbWFnZSIpOwogICAgIHR5cGVzW0hUTUxJbnB1dEVs
ZW1lbnQ6OklTSU5ERVhdID0gZW1wdHlBdG9tOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6
Ok1PTlRIXSA9ICJtb250aCI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6TlVNQkVSXSA9
ICJudW1iZXIiOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OlBBU1NXT1JEXSA9ICJwYXNz
d29yZCI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6UkFESU9dID0gInJhZGlvIjsKLSAg
ICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpSQU5HRV0gPSAicmFuZ2UiOwotICAgIHR5cGVzW0hU
TUxJbnB1dEVsZW1lbnQ6OlJFU0VUXSA9ICJyZXNldCI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxl
bWVudDo6U0VBUkNIXSA9ICJzZWFyY2giOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OlNV
Qk1JVF0gPSAic3VibWl0IjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpURUxFUEhPTkVd
ID0gInRlbCI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6VEVYVF0gPSAidGV4dCI7Ci0g
ICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6VElNRV0gPSAidGltZSI7Ci0gICAgdHlwZXNbSFRN
TElucHV0RWxlbWVudDo6VVJMXSA9ICJ1cmwiOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6
OldFRUtdID0gIndlZWsiOworICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6Ok1PTlRIXSA9IEF0
b21pY1N0cmluZygibW9udGgiKTsKKyAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpOVU1CRVJd
ID0gQXRvbWljU3RyaW5nKCJudW1iZXIiKTsKKyAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpQ
QVNTV09SRF0gPSBBdG9taWNTdHJpbmcoInBhc3N3b3JkIik7CisgICAgdHlwZXNbSFRNTElucHV0
RWxlbWVudDo6UkFESU9dID0gQXRvbWljU3RyaW5nKCJyYWRpbyIpOworICAgIHR5cGVzW0hUTUxJ
bnB1dEVsZW1lbnQ6OlJBTkdFXSA9IEF0b21pY1N0cmluZygicmFuZ2UiKTsKKyAgICB0eXBlc1tI
VE1MSW5wdXRFbGVtZW50OjpSRVNFVF0gPSBBdG9taWNTdHJpbmcoInJlc2V0Iik7CisgICAgdHlw
ZXNbSFRNTElucHV0RWxlbWVudDo6U0VBUkNIXSA9IEF0b21pY1N0cmluZygic2VhcmNoIik7Cisg
ICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6U1VCTUlUXSA9IEF0b21pY1N0cmluZygic3VibWl0
Iik7CisgICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6VEVMRVBIT05FXSA9IEF0b21pY1N0cmlu
ZygidGVsIik7CisgICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6VEVYVF0gPSBBdG9taWNTdHJp
bmcoInRleHQiKTsKKyAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpUSU1FXSA9IEF0b21pY1N0
cmluZygidGltZSIpOworICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OlVSTF0gPSBBdG9taWNT
dHJpbmcoInVybCIpOworICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OldFRUtdID0gQXRvbWlj
U3RyaW5nKCJ3ZWVrIik7CiAgICAgcmV0dXJuIHR5cGVzOwogfQogCkBAIC0xNzUyLDcgKzE3NTIs
NyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRDaGVja2VkKCkgY29uc3QKIAogdm9p
ZCBIVE1MSW5wdXRFbGVtZW50OjpzZXREZWZhdWx0Q2hlY2tlZChib29sIGRlZmF1bHRDaGVja2Vk
KQogewotICAgIHNldEF0dHJpYnV0ZShjaGVja2VkQXR0ciwgZGVmYXVsdENoZWNrZWQgPyAiIiA6
IDApOworICAgIHNldEF0dHJpYnV0ZShjaGVja2VkQXR0ciwgZGVmYXVsdENoZWNrZWQgPyBlbXB0
eUF0b20gOiBudWxsQXRvbSk7CiB9CiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0RGVmYXVs
dE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQpAQCAtMTgyMCw3ICsxODIwLDcgQEAgYm9v
bCBIVE1MSW5wdXRFbGVtZW50OjptdWx0aXBsZSgpIGNvbnN0CiAKIHZvaWQgSFRNTElucHV0RWxl
bWVudDo6c2V0TXVsdGlwbGUoYm9vbCBtdWx0aXBsZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGUobXVs
dGlwbGVBdHRyLCBtdWx0aXBsZSA/ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRlKG11bHRpcGxl
QXR0ciwgbXVsdGlwbGUgPyBlbXB0eUF0b20gOiBudWxsQXRvbSk7CiB9CiAgICAgCiB2b2lkIEhU
TUxJbnB1dEVsZW1lbnQ6OnNldFNpemUodW5zaWduZWQgX3NpemUpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuY3BwCmluZGV4IDBhOGZkZTMuLmU4NjAyYzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
CkBAIC0zMjEsNyArMzIxLDcgQEAgYm9vbCBIVE1MTGlua0VsZW1lbnQ6OmRpc2FibGVkKCkgY29u
c3QKIAogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldERpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiB7
Ci0gICAgc2V0QXR0cmlidXRlKGRpc2FibGVkQXR0ciwgZGlzYWJsZWQgPyAiIiA6IDApOworICAg
IHNldEF0dHJpYnV0ZShkaXNhYmxlZEF0dHIsIGRpc2FibGVkID8gZW1wdHlBdG9tIDogbnVsbEF0
b20pOwogfQogCiBTdHJpbmcgSFRNTExpbmtFbGVtZW50OjpjaGFyc2V0KCkgY29uc3QKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxNZW51RWxlbWVudC5jcHAKaW5kZXggNjk0OTdlZi4uMmM2NWEwZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxNZW51
RWxlbWVudC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgYm9vbCBIVE1MTWVudUVsZW1lbnQ6OmNvbXBh
Y3QoKSBjb25zdAogCiB2b2lkIEhUTUxNZW51RWxlbWVudDo6c2V0Q29tcGFjdChib29sIGIpCiB7
Ci0gICAgc2V0QXR0cmlidXRlKGNvbXBhY3RBdHRyLCBiID8gIiIgOiAwKTsKKyAgICBzZXRBdHRy
aWJ1dGUoY29tcGFjdEF0dHIsIGIgPyBlbXB0eUF0b20gOiBudWxsQXRvbSk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRt
bC9IVE1MT0xpc3RFbGVtZW50LmNwcAppbmRleCAzNDRhMDY5Li5lZDQ1NjRjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUxPTGlzdEVsZW1lbnQuY3BwCkBAIC04NSw3ICs4NSw3IEBAIGJvb2wgSFRNTE9MaXN0RWxlbWVu
dDo6Y29tcGFjdCgpIGNvbnN0CiAKIHZvaWQgSFRNTE9MaXN0RWxlbWVudDo6c2V0Q29tcGFjdChi
b29sIGIpCiB7Ci0gICAgc2V0QXR0cmlidXRlKGNvbXBhY3RBdHRyLCBiID8gIiIgOiAwKTsKKyAg
ICBzZXRBdHRyaWJ1dGUoY29tcGFjdEF0dHIsIGIgPyBlbXB0eUF0b20gOiBudWxsQXRvbSk7CiB9
CiAKIHZvaWQgSFRNTE9MaXN0RWxlbWVudDo6c2V0U3RhcnQoaW50IHN0YXJ0KQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5jcHAKaW5kZXggZDNjY2ZhNC4uMjIxZTJjMSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCkBAIC0zMDcsNyArMzA3LDcgQEAgYm9vbCBIVE1MT2JqZWN0RWxlbWVu
dDo6ZGVjbGFyZSgpIGNvbnN0CiAKIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnNldERlY2xhcmUo
Ym9vbCBkZWNsYXJlKQogewotICAgIHNldEF0dHJpYnV0ZShkZWNsYXJlQXR0ciwgZGVjbGFyZSA/
ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRlKGRlY2xhcmVBdHRyLCBkZWNsYXJlID8gZW1wdHlB
dG9tIDogbnVsbEF0b20pOwogfQogCiBpbnQgSFRNTE9iamVjdEVsZW1lbnQ6OmhzcGFjZSgpIGNv
bnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAppbmRleCAzMTZiMTkyLi5mNTNhOTIzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCBib29sIEhU
TUxPcHRpb25FbGVtZW50OjpkZWZhdWx0U2VsZWN0ZWQoKSBjb25zdAogCiB2b2lkIEhUTUxPcHRp
b25FbGVtZW50OjpzZXREZWZhdWx0U2VsZWN0ZWQoYm9vbCBiKQogewotICAgIHNldEF0dHJpYnV0
ZShzZWxlY3RlZEF0dHIsIGIgPyAiIiA6IDApOworICAgIHNldEF0dHJpYnV0ZShzZWxlY3RlZEF0
dHIsIGIgPyBlbXB0eUF0b20gOiBudWxsQXRvbSk7CiB9CiAKIFN0cmluZyBIVE1MT3B0aW9uRWxl
bWVudDo6bGFiZWwoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIu
Y3BwIGIvV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuY3BwCmluZGV4IGYxM2MxOWIuLmY5ZDFmNjAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTFBhcnNlci5jcHAKQEAgLTc1Myw3ICs3NTMsNyBAQCBib29sIEhUTUxQYXJzZXI6OmZy
YW1lc2V0Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCiAgICAgICAgIC8v
IHJlZ3Jlc3Npb25zIGFuZCB0aGUgaGVhZGFjaGVzIGFyZSBub3Qgd29ydGggdGhlIHdvcmsgYXMg
bG9uZyBhcyB0aGVyZSBpcwogICAgICAgICAvLyBubyBzaXRlIGFjdHVhbGx5IHJlbHlpbmcgb24g
dGhhdCBkZXRhaWwgKERpcmspCiAgICAgICAgIGlmIChtX2RvY3VtZW50LT5ib2R5KCkpCi0gICAg
ICAgICAgICBtX2RvY3VtZW50LT5ib2R5KCktPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICJkaXNw
bGF5Om5vbmUiKTsKKyAgICAgICAgICAgIG1fZG9jdW1lbnQtPmJvZHkoKS0+c2V0Q1N0cmluZ0F0
dHJpYnV0ZShzdHlsZUF0dHIsICJkaXNwbGF5Om5vbmUiKTsKICAgICAgICAgbV9pbkJvZHkgPSBm
YWxzZTsKICAgICB9CiAgICAgaWYgKChtX2hhdmVDb250ZW50IHx8IG1faGF2ZUZyYW1lU2V0KSAm
JiBtX2N1cnJlbnQtPmxvY2FsTmFtZSgpID09IGh0bWxUYWcpCkBAIC0xNjA1LDcgKzE2MDUsNyBA
QCBQYXNzUmVmUHRyPE5vZGU+IEhUTUxQYXJzZXI6OmhhbmRsZUlzaW5kZXgoVG9rZW4qIHQpCiAK
ICAgICBSZWZQdHI8SFRNTElzSW5kZXhFbGVtZW50PiBpc0luZGV4ID0gbmV3IEhUTUxJc0luZGV4
RWxlbWVudChpc2luZGV4VGFnLCBtX2RvY3VtZW50LCBtX2N1cnJlbnRGb3JtRWxlbWVudC5nZXQo
KSk7CiAgICAgaXNJbmRleC0+c2V0QXR0cmlidXRlTWFwKGF0dHJzKTsKLSAgICBpc0luZGV4LT5z
ZXRBdHRyaWJ1dGUodHlwZUF0dHIsICJraHRtbF9pc2luZGV4Iik7CisgICAgaXNJbmRleC0+c2V0
Q1N0cmluZ0F0dHJpYnV0ZSh0eXBlQXR0ciwgImtodG1sX2lzaW5kZXgiKTsKIAogICAgIFN0cmlu
ZyB0ZXh0ID0gc2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9uKCk7CiAgICAgaWYgKGF0dHJzKSB7
CkBAIC0xNjU5LDggKzE2NTksOCBAQCB2b2lkIEhUTUxQYXJzZXI6OnJlcG9ydEVycm9yVG9Db25z
b2xlKEhUTUxQYXJzZXJFcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBBdG9taQogICAgIEhUTUxU
b2tlbml6ZXIqIGh0bWxUb2tlbml6ZXIgPSBzdGF0aWNfY2FzdDxIVE1MVG9rZW5pemVyKj4obV9k
b2N1bWVudC0+dG9rZW5pemVyKCkpOwogICAgIGludCBsaW5lTnVtYmVyID0gaHRtbFRva2VuaXpl
ci0+bGluZU51bWJlcigpICsgMTsKIAotICAgIEF0b21pY1N0cmluZyB0YWcxOwotICAgIEF0b21p
Y1N0cmluZyB0YWcyOworICAgIFN0cmluZyB0YWcxOworICAgIFN0cmluZyB0YWcyOwogICAgIGlm
ICh0YWdOYW1lMSkgewogICAgICAgICBpZiAoKnRhZ05hbWUxID09ICIjdGV4dCIpCiAgICAgICAg
ICAgICB0YWcxID0gIlRleHQiOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVt
ZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5jcHAKaW5kZXggMDMwNjYwZi4u
ZjU4MTlkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIGJvb2wg
SFRNTFByZUVsZW1lbnQ6OndyYXAoKSBjb25zdAogCiB2b2lkIEhUTUxQcmVFbGVtZW50OjpzZXRX
cmFwKGJvb2wgd3JhcCkKIHsKLSAgICBzZXRBdHRyaWJ1dGUod3JhcEF0dHIsIHdyYXAgPyAiIiA6
IDApOworICAgIHNldEF0dHJpYnV0ZSh3cmFwQXR0ciwgd3JhcCA/IGVtcHR5QXRvbSA6IG51bGxB
dG9tKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50
LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggNjM2YzU3OS4u
YjJlMjc3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCkBAIC0xNTUsNyArMTU1LDcg
QEAgYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6ZGVmZXIoKSBjb25zdAogCiB2b2lkIEhUTUxTY3Jp
cHRFbGVtZW50OjpzZXREZWZlcihib29sIGRlZmVyKQogewotICAgIHNldEF0dHJpYnV0ZShkZWZl
ckF0dHIsIGRlZmVyID8gIiIgOiAwKTsKKyAgICBzZXRBdHRyaWJ1dGUoZGVmZXJBdHRyLCBkZWZl
ciA/IGVtcHR5QXRvbSA6IG51bGxBdG9tKTsKIH0KIAogS1VSTCBIVE1MU2NyaXB0RWxlbWVudDo6
c3JjKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5j
cHAgYi9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDI0MDlmMzEuLmM1
NjU1YmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtMzQ2LDcgKzM0Niw3IEBA
IHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFjY2Vzc0tleVNldFNlbGVjdGVkSW5kZXgoaW50IGlu
ZGV4KQogICAgIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0TXVsdGlwbGUoYm9vbCBtdWx0
aXBsZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGUobXVsdGlwbGVBdHRyLCBtdWx0aXBsZSA/ICIiIDog
MCk7CisgICAgc2V0QXR0cmlidXRlKG11bHRpcGxlQXR0ciwgbXVsdGlwbGUgPyBlbXB0eUF0b20g
OiBudWxsQXRvbSk7CiB9CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNpemUoaW50IHNp
emUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAgYi9XZWJD
b3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKaW5kZXggMjA2YWVjNC4uMGU3ODA5NSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgSFRNTFN0
eWxlRWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAogCiB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnNl
dERpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiB7Ci0gICAgc2V0QXR0cmlidXRlKGRpc2FibGVkQXR0
ciwgZGlzYWJsZWQgPyAiIiA6IDApOworICAgIHNldEF0dHJpYnV0ZShkaXNhYmxlZEF0dHIsIGRp
c2FibGVkID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IEhUTUxTdHlsZUVsZW1lbnQ6Om1lZGlhKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQuY3BwCmluZGV4IDU5Mzk2ODUuLjEyNGFhMTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNl
bGxFbGVtZW50LmNwcApAQCAtMjIzLDcgKzIyMyw3IEBAIGJvb2wgSFRNTFRhYmxlQ2VsbEVsZW1l
bnQ6Om5vV3JhcCgpIGNvbnN0CiAKIHZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OnNldE5vV3Jh
cChib29sIGIpCiB7Ci0gICAgc2V0QXR0cmlidXRlKG5vd3JhcEF0dHIsIGIgPyAiIiA6IDApOwor
ICAgIHNldEF0dHJpYnV0ZShub3dyYXBBdHRyLCBiID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwog
fQogCiB2b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50OjpzZXRSb3dTcGFuKGludCBuKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IGFmMzU3NDAuLjE4YzEyYTUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5jcHAKQEAgLTQ2MiwxMCArNDYyLDEzIEBAIHZvaWQgSFRNTFRhYmxlRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogCiB2b2lkIEhU
TUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxBdHRyaWJ1dGVTdHlsZURlY2xzKFZlY3RvcjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbio+JiByZXN1bHRzKQogeworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBzb2xpZEF0b20sICgic29saWQiKSk7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG91dHNldEF0b20sICgib3V0c2V0IikpOworICAgIAog
ICAgIGlmICgoIW1fYm9yZGVyQXR0ciAmJiAhbV9ib3JkZXJDb2xvckF0dHIpIHx8IG1fZnJhbWVB
dHRyKQogICAgICAgICByZXR1cm47CiAKLSAgICBBdG9taWNTdHJpbmcgYm9yZGVyVmFsdWUgPSBt
X2JvcmRlckNvbG9yQXR0ciA/ICJzb2xpZCIgOiAib3V0c2V0IjsKKyAgICBBdG9taWNTdHJpbmcg
Ym9yZGVyVmFsdWUgPSBtX2JvcmRlckNvbG9yQXR0ciA/IHNvbGlkQXRvbSA6IG91dHNldEF0b207
CiAgICAgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIGRlY2wgPSBnZXRNYXBwZWRBdHRy
aWJ1dGVEZWNsKGVQZXJzaXN0ZW50LCB0YWJsZWJvcmRlckF0dHIsIGJvcmRlclZhbHVlKTsKICAg
ICBpZiAoIWRlY2wpIHsKICAgICAgICAgZGVjbCA9IENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0
aW9uOjpjcmVhdGUoKS5yZWxlYXNlUmVmKCk7IC8vIFRoaXMgc2luZ2xlIHJlZiBwaW5zIHVzIGlu
IHRoZSB0YWJsZSB1bnRpbCB0aGUgZG9jdW1lbnQgZGllcy4KQEAgLTYwNiwxMCArNjA5LDEzIEBA
IHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6YWRkU2hhcmVkQ2VsbFBhZGRpbmdEZWNsKFZlY3RvcjxD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvCiAKIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6YWRkU2hh
cmVkR3JvdXBEZWNscyhib29sIHJvd3MsIFZlY3RvcjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bio+JiByZXN1bHRzKQogeworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBy
b3dncm91cHNBdG9tLCAoInJvd2dyb3VwcyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgY29sZ3JvdXBzQXRvbSwgKCJjb2xncm91cHMiKSk7CisKICAgICBpZiAobV9y
dWxlc0F0dHIgIT0gR3JvdXBzUnVsZXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIEF0b21pY1N0
cmluZyBydWxlc1ZhbHVlID0gcm93cyA/ICJyb3dncm91cHMiIDogImNvbGdyb3VwcyI7CisgICAg
QXRvbWljU3RyaW5nIHJ1bGVzVmFsdWUgPSByb3dzID8gcm93Z3JvdXBzQXRvbSA6IGNvbGdyb3Vw
c0F0b207CiAgICAgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIGRlY2wgPSBnZXRNYXBw
ZWRBdHRyaWJ1dGVEZWNsKGVQZXJzaXN0ZW50LCBydWxlc0F0dHIsIHJ1bGVzVmFsdWUpOwogICAg
IGlmICghZGVjbCkgewogICAgICAgICBkZWNsID0gQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRp
b246OmNyZWF0ZSgpLnJlbGVhc2VSZWYoKTsgLy8gVGhpcyBzaW5nbGUgcmVmIHBpbnMgdXMgaW4g
dGhlIHRhYmxlIHVudGlsIHRoZSBkb2N1bWVudCBkaWVzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQu
Y3BwCmluZGV4IGYzNmNiNTcuLjNkNjcyNGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1M
VUxpc3RFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAK
QEAgLTYxLDcgKzYxLDcgQEAgYm9vbCBIVE1MVUxpc3RFbGVtZW50Ojpjb21wYWN0KCkgY29uc3QK
IAogdm9pZCBIVE1MVUxpc3RFbGVtZW50OjpzZXRDb21wYWN0KGJvb2wgYikKIHsKLSAgICBzZXRB
dHRyaWJ1dGUoY29tcGFjdEF0dHIsIGIgPyAiIiA6IDApOworICAgIHNldEF0dHJpYnV0ZShjb21w
YWN0QXR0ciwgYiA/IGVtcHR5QXRvbSA6IG51bGxBdG9tKTsKIH0KIAogU3RyaW5nIEhUTUxVTGlz
dEVsZW1lbnQ6OnR5cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxWaWV3
U291cmNlRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQu
Y3BwCmluZGV4IGJhNzE4ZDEuLjA4MTc4OTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1M
Vmlld1NvdXJjZURvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VE
b2N1bWVudC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50
OjpjcmVhdGVDb250YWluaW5nVGFibGUoKQogICAgIC8vIGRvY3VtZW50LgogICAgIFJlZlB0cjxI
VE1MRGl2RWxlbWVudD4gZGl2ID0gbmV3IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgdGhpcyk7CiAg
ICAgUmVmUHRyPE5hbWVkTWFwcGVkQXR0ck1hcD4gYXR0cnMgPSBOYW1lZE1hcHBlZEF0dHJNYXA6
OmNyZWF0ZSgpOwotICAgIGF0dHJzLT5hZGRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlOjpjcmVh
dGUoY2xhc3NBdHRyLCAid2Via2l0LWxpbmUtZ3V0dGVyLWJhY2tkcm9wIikpOworICAgIGF0dHJz
LT5hZGRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlOjpjcmVhdGUoY2xhc3NBdHRyLCBBdG9taWNT
dHJpbmcoIndlYmtpdC1saW5lLWd1dHRlci1iYWNrZHJvcCIpKSk7CiAgICAgZGl2LT5zZXRBdHRy
aWJ1dGVNYXAoYXR0cnMucmVsZWFzZSgpKTsKICAgICBib2R5LT5hZGRDaGlsZChkaXYpOwogICAg
IGRpdi0+YXR0YWNoKCk7CkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBIVE1MVmlld1NvdXJjZURv
Y3VtZW50OjphZGRMaW5lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lKQogICAgIC8vIENyZWF0ZSBh
IGNlbGwgdGhhdCB3aWxsIGhvbGQgdGhlIGxpbmUgbnVtYmVyIChpdCBpcyBnZW5lcmF0ZWQgaW4g
dGhlIHN0eWxlc2hlZXQgdXNpbmcgY291bnRlcnMpLgogICAgIFJlZlB0cjxIVE1MVGFibGVDZWxs
RWxlbWVudD4gdGQgPSBuZXcgSFRNTFRhYmxlQ2VsbEVsZW1lbnQodGRUYWcsIHRoaXMpOwogICAg
IFJlZlB0cjxOYW1lZE1hcHBlZEF0dHJNYXA+IGF0dHJzID0gTmFtZWRNYXBwZWRBdHRyTWFwOjpj
cmVhdGUoKTsKLSAgICBhdHRycy0+YWRkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZTo6Y3JlYXRl
KGNsYXNzQXR0ciwgIndlYmtpdC1saW5lLW51bWJlciIpKTsKKyAgICBhdHRycy0+YWRkQXR0cmli
dXRlKE1hcHBlZEF0dHJpYnV0ZTo6Y3JlYXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJ3ZWJr
aXQtbGluZS1udW1iZXIiKSkpOwogICAgIHRkLT5zZXRBdHRyaWJ1dGVNYXAoYXR0cnMucmVsZWFz
ZSgpKTsKICAgICB0cm93LT5hZGRDaGlsZCh0ZCk7CiAgICAgdGQtPmF0dGFjaCgpOwpAQCAtMjM2
LDcgKzIzNiw3IEBAIHZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkTGluZShjb25zdCBT
dHJpbmcmIGNsYXNzTmFtZSkKICAgICAvLyBDcmVhdGUgYSBzZWNvbmQgY2VsbCBmb3IgdGhlIGxp
bmUgY29udGVudHMKICAgICB0ZCA9IG5ldyBIVE1MVGFibGVDZWxsRWxlbWVudCh0ZFRhZywgdGhp
cyk7CiAgICAgYXR0cnMgPSBOYW1lZE1hcHBlZEF0dHJNYXA6OmNyZWF0ZSgpOwotICAgIGF0dHJz
LT5hZGRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlOjpjcmVhdGUoY2xhc3NBdHRyLCAid2Via2l0
LWxpbmUtY29udGVudCIpKTsKKyAgICBhdHRycy0+YWRkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZTo6Y3JlYXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJ3ZWJraXQtbGluZS1jb250ZW50Iikp
KTsKICAgICB0ZC0+c2V0QXR0cmlidXRlTWFwKGF0dHJzLnJlbGVhc2UoKSk7CiAgICAgdHJvdy0+
YWRkQ2hpbGQodGQpOwogICAgIHRkLT5hdHRhY2goKTsKQEAgLTI5OSw4ICsyOTksOCBAQCBQYXNz
UmVmUHRyPEVsZW1lbnQ+IEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZExpbmsoY29uc3QgU3Ry
aW5nJiB1cmwsIGJvb2wgaXNBbgogICAgICAgICBjbGFzc1ZhbHVlID0gIndlYmtpdC1odG1sLWF0
dHJpYnV0ZS12YWx1ZSB3ZWJraXQtaHRtbC1leHRlcm5hbC1saW5rIjsKICAgICBlbHNlCiAgICAg
ICAgIGNsYXNzVmFsdWUgPSAid2Via2l0LWh0bWwtYXR0cmlidXRlLXZhbHVlIHdlYmtpdC1odG1s
LXJlc291cmNlLWxpbmsiOwotICAgIGF0dHJzLT5hZGRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRl
OjpjcmVhdGUoY2xhc3NBdHRyLCBjbGFzc1ZhbHVlKSk7Ci0gICAgYXR0cnMtPmFkZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGU6OmNyZWF0ZSh0YXJnZXRBdHRyLCAiX2JsYW5rIikpOworICAgIGF0
dHJzLT5hZGRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlOjpjcmVhdGUoY2xhc3NBdHRyLCBBdG9t
aWNTdHJpbmcoY2xhc3NWYWx1ZSkpKTsKKyAgICBhdHRycy0+YWRkQXR0cmlidXRlKE1hcHBlZEF0
dHJpYnV0ZTo6Y3JlYXRlKHRhcmdldEF0dHIsIEF0b21pY1N0cmluZygiX2JsYW5rIikpKTsKICAg
ICBhdHRycy0+YWRkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZTo6Y3JlYXRlKGhyZWZBdHRyLCB1
cmwpKTsKICAgICBhbmNob3ItPnNldEF0dHJpYnV0ZU1hcChhdHRycy5yZWxlYXNlKCkpOwogICAg
IG1fY3VycmVudC0+YWRkQ2hpbGQoYW5jaG9yKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVy
L0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHAKaW5kZXggNGM0NjZmYS4uOTM0Y2E4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBib29sIENhY2hlZENTU1N0eWxlU2hl
ZXQ6OmNhblVzZVNoZWV0KGJvb2wgZW5mb3JjZU1JTUVUeXBlKSBjb25zdAogICAgIC8vCiAgICAg
Ly8gVGhpcyBjb2RlIGRlZmF1bHRzIHRvIGFsbG93aW5nIHRoZSBzdHlsZXNoZWV0IGZvciBub24t
SFRUUCBwcm90b2NvbHMgc28KICAgICAvLyBmb2xrcyBjYW4gdXNlIHN0YW5kYXJkcyBtb2RlIGZv
ciBsb2NhbCBIVE1MIGRvY3VtZW50cy4KLSAgICBTdHJpbmcgbWltZVR5cGUgPSBleHRyYWN0TUlN
RVR5cGVGcm9tTWVkaWFUeXBlKHJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKCJDb250ZW50LVR5
cGUiKSk7CisgICAgU3RyaW5nIG1pbWVUeXBlID0gZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlw
ZShyZXNwb25zZSgpLmNvbnRlbnRUeXBlKCkpOwogICAgIHJldHVybiBtaW1lVHlwZS5pc0VtcHR5
KCkgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobWltZVR5cGUsICJ0ZXh0L2NzcyIpIHx8IGVxdWFsSWdu
b3JpbmdDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24veC11bmtub3duLWNvbnRlbnQtdHlwZSIp
OwogfQogIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKaW5k
ZXggZjBmOGI2YS4uMDg0ZjlhNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2wuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgYm9vbCBwYXNzZXNBY2Nlc3NDb250cm9s
Q2hlY2soY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wgaW5jbHVkZUNyZWQK
IAogICAgIGlmIChpbmNsdWRlQ3JlZGVudGlhbHMpIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBh
Y2Nlc3NDb250cm9sQ3JlZGVudGlhbHNTdHJpbmcgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQo
IkFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzIik7Ci0gICAgICAgIGlmIChhY2Nlc3ND
b250cm9sQ3JlZGVudGlhbHNTdHJpbmcgIT0gInRydWUiKQorICAgICAgICBpZiAoYWNjZXNzQ29u
dHJvbENyZWRlbnRpYWxzU3RyaW5nICE9IHRydWVBdG9tKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAKaW5kZXggOGEyMjNmZC4uYTE4ZmQzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVh
ZGFibGVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJ3dGYvU3RkTGliRXh0cmFzLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTE3LDEyICsxMTgsMTUgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6Om1ha2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoY29uc3Qg
UmVzb3VyY2UKIAogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VDcm9zc09yaWdp
bkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKIHsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgYWNjZXNzQ29udHJv
bFJlcXVlc3RNZXRob2RBdG9tLCAoIkFjY2Vzcy1Db250cm9sLVJlcXVlc3QtTWV0aG9kIikpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhY2Nlc3NDb250cm9sUmVxdWVz
dEhlYWRlcnNBdG9tLCAoIkFjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVycyIpKTsKKyAgICAK
ICAgICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LnVybCgpKTsKICAg
ICBwcmVmbGlnaHRSZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgcHJlZmxpZ2h0UmVx
dWVzdC5zZXRIVFRQT3JpZ2luKG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5n
KCkpOwogICAgIHByZWZsaWdodFJlcXVlc3Quc2V0QWxsb3dDb29raWVzKG1fb3B0aW9ucy5hbGxv
d0NyZWRlbnRpYWxzKTsKICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEhUVFBNZXRob2QoIk9QVElP
TlMiKTsKLSAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiQWNjZXNzLUNv
bnRyb2wtUmVxdWVzdC1NZXRob2QiLCByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7CisgICAgcHJlZmxp
Z2h0UmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoYWNjZXNzQ29udHJvbFJlcXVlc3RNZXRob2RB
dG9tLCByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7CiAKICAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBy
ZXF1ZXN0SGVhZGVyRmllbGRzID0gcmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCk7CiAKQEAgLTEz
OSw3ICsxNDMsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bWFrZUNyb3NzT3Jp
Z2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoY29uc3QgUgogICAgICAgICAgICAgYXBwZW5k
KGhlYWRlckJ1ZmZlciwgaXQtPmZpcnN0KTsKICAgICAgICAgfQogCi0gICAgICAgIHByZWZsaWdo
dFJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LUhlYWRl
cnMiLCBTdHJpbmc6OmFkb3B0KGhlYWRlckJ1ZmZlcikpOworICAgICAgICBwcmVmbGlnaHRSZXF1
ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChhY2Nlc3NDb250cm9sUmVxdWVzdEhlYWRlcnNBdG9tLCBT
dHJpbmc6OmFkb3B0KGhlYWRlckJ1ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wgc2tpcENhbkxv
YWRDaGVjayA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmlu
ZGV4IGVlMGY0Y2EuLmM0MjQ1ZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVj
dG9yeURvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAKQEAgLTExNSwyOCArMTE1LDI4IEBAIHZvaWQgRlRQRGlyZWN0b3J5VG9rZW5pemVyOjph
cHBlbmRFbnRyeShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHNpCiAgICAg
RXhjZXB0aW9uQ29kZSBlYzsKIAogICAgIFJlZlB0cjxFbGVtZW50PiByb3dFbGVtZW50ID0gbV90
YWJsZUVsZW1lbnQtPmluc2VydFJvdygtMSwgZWMpOwotICAgIHJvd0VsZW1lbnQtPnNldEF0dHJp
YnV0ZSgiY2xhc3MiLCAiZnRwRGlyZWN0b3J5RW50cnlSb3ciLCBlYyk7CisgICAgcm93RWxlbWVu
dC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJmdHBEaXJlY3RvcnlFbnRy
eVJvdyIpLCBlYyk7CiAgICAKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IG1fZG9jLT5j
cmVhdGVFbGVtZW50KHRkVGFnLCBmYWxzZSk7CiAgICAgZWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4
dDo6Y3JlYXRlKG1fZG9jLCBTdHJpbmcoJm5vQnJlYWtTcGFjZSwgMSkpLCBlYyk7CiAgICAgaWYg
KGlzRGlyZWN0b3J5KQotICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgImZ0
cERpcmVjdG9yeUljb24gZnRwRGlyZWN0b3J5VHlwZURpcmVjdG9yeSIsIGVjKTsKKyAgICAgICAg
ZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJmdHBEaXJlY3Rv
cnlJY29uIGZ0cERpcmVjdG9yeVR5cGVEaXJlY3RvcnkiKSwgZWMpOwogICAgIGVsc2UKLSAgICAg
ICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKCJjbGFzcyIsICJmdHBEaXJlY3RvcnlJY29uIGZ0cERp
cmVjdG9yeVR5cGVGaWxlIiwgZWMpOworICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xh
c3NBdHRyLCBBdG9taWNTdHJpbmcoImZ0cERpcmVjdG9yeUljb24gZnRwRGlyZWN0b3J5VHlwZUZp
bGUiKSwgZWMpOwogICAgIHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQsIGVjKTsKICAg
ICAKICAgICBlbGVtZW50ID0gY3JlYXRlVERGb3JGaWxlbmFtZShmaWxlbmFtZSk7Ci0gICAgZWxl
bWVudC0+c2V0QXR0cmlidXRlKCJjbGFzcyIsICJmdHBEaXJlY3RvcnlGaWxlTmFtZSIsIGVjKTsK
KyAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoImZ0cERp
cmVjdG9yeUZpbGVOYW1lIiksIGVjKTsKICAgICByb3dFbGVtZW50LT5hcHBlbmRDaGlsZChlbGVt
ZW50LCBlYyk7CiAgICAgCiAgICAgZWxlbWVudCA9IG1fZG9jLT5jcmVhdGVFbGVtZW50KHRkVGFn
LCBmYWxzZSk7CiAgICAgZWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG1fZG9jLCBk
YXRlKSwgZWMpOwotICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAiZnRwRGlyZWN0
b3J5RmlsZURhdGUiLCBlYyk7CisgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwg
QXRvbWljU3RyaW5nKCJmdHBEaXJlY3RvcnlGaWxlRGF0ZSIpLCBlYyk7CiAgICAgcm93RWxlbWVu
dC0+YXBwZW5kQ2hpbGQoZWxlbWVudCwgZWMpOwogICAgIAogICAgIGVsZW1lbnQgPSBtX2RvYy0+
Y3JlYXRlRWxlbWVudCh0ZFRhZywgZmFsc2UpOwogICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKFRl
eHQ6OmNyZWF0ZShtX2RvYywgc2l6ZSksIGVjKTsKLSAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUo
ImNsYXNzIiwgImZ0cERpcmVjdG9yeUZpbGVTaXplIiwgZWMpOworICAgIGVsZW1lbnQtPnNldEF0
dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZygiZnRwRGlyZWN0b3J5RmlsZVNpemUiKSwg
ZWMpOwogICAgIHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQsIGVjKTsKIH0KIApAQCAt
MTUxLDcgKzE1MSw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gRlRQRGlyZWN0b3J5VG9rZW5pemVy
OjpjcmVhdGVUREZvckZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsCiAgICAgICAgIGZ1bGxVUkwu
YXBwZW5kKCIvIiArIGZpbGVuYW1lKTsKIAogICAgIFJlZlB0cjxFbGVtZW50PiBhbmNob3JFbGVt
ZW50ID0gbV9kb2MtPmNyZWF0ZUVsZW1lbnQoYVRhZywgZmFsc2UpOwotICAgIGFuY2hvckVsZW1l
bnQtPnNldEF0dHJpYnV0ZSgiaHJlZiIsIGZ1bGxVUkwsIGVjKTsKKyAgICBhbmNob3JFbGVtZW50
LT5zZXRBdHRyaWJ1dGUoaHJlZkF0dHIsIGZ1bGxVUkwsIGVjKTsKICAgICBhbmNob3JFbGVtZW50
LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUobV9kb2MsIGZpbGVuYW1lKSwgZWMpOwogICAgIAog
ICAgIFJlZlB0cjxFbGVtZW50PiB0ZEVsZW1lbnQgPSBtX2RvYy0+Y3JlYXRlRWxlbWVudCh0ZFRh
ZywgZmFsc2UpOwpAQCAtMzU2LDcgKzM1Niw3IEBAIGJvb2wgRlRQRGlyZWN0b3J5VG9rZW5pemVy
Ojpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiAgICAgSFRNTFRva2VuaXplcjo6d3JpdGUoU3RyaW5n
KHRlbXBsYXRlRG9jdW1lbnREYXRhLT5kYXRhKCksIHRlbXBsYXRlRG9jdW1lbnREYXRhLT5zaXpl
KCkpLCB0cnVlKTsKICAgICBzZXRGb3JjZVN5bmNocm9ub3VzKGZhbHNlKTsKICAgICAKLSAgICBS
ZWZQdHI8RWxlbWVudD4gdGFibGVFbGVtZW50ID0gbV9kb2MtPmdldEVsZW1lbnRCeUlkKCJmdHBE
aXJlY3RvcnlUYWJsZSIpOworICAgIFJlZlB0cjxFbGVtZW50PiB0YWJsZUVsZW1lbnQgPSBtX2Rv
Yy0+Z2V0RWxlbWVudEJ5SWQoQXRvbWljU3RyaW5nKCJmdHBEaXJlY3RvcnlUYWJsZSIpKTsKICAg
ICBpZiAoIXRhYmxlRWxlbWVudCkKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZmluZCBl
bGVtZW50IGJ5IGlkIFwiZnRwRGlyZWN0b3J5VGFibGVcIiBpbiB0aGUgdGVtcGxhdGUgZG9jdW1l
bnQuIik7CiAgICAgZWxzZSBpZiAoIXRhYmxlRWxlbWVudC0+aGFzVGFnTmFtZSh0YWJsZVRhZykp
CkBAIC0zNzIsNyArMzcyLDcgQEAgYm9vbCBGVFBEaXJlY3RvcnlUb2tlbml6ZXI6OmxvYWREb2N1
bWVudFRlbXBsYXRlKCkKICAgICB0YWJsZUVsZW1lbnQgPSBtX2RvYy0+Y3JlYXRlRWxlbWVudCh0
YWJsZVRhZywgZmFsc2UpOwogICAgIG1fdGFibGVFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFRh
YmxlRWxlbWVudCo+KHRhYmxlRWxlbWVudC5nZXQoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYzsg
ICAgICAgIAotICAgIG1fdGFibGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoImlkIiwgImZ0cERpcmVj
dG9yeVRhYmxlIiwgZWMpOworICAgIG1fdGFibGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoaWRBdHRy
LCBBdG9taWNTdHJpbmcoImZ0cERpcmVjdG9yeVRhYmxlIiksIGVjKTsKIAogICAgIC8vIElmIHdl
IGRpZG4ndCBmaW5kIHRoZSB0YWJsZSBlbGVtZW50LCBsZXRzIHRyeSB0byBhcHBlbmQgb3VyIG93
biB0byB0aGUgYm9keQogICAgIC8vIElmIHRoYXQgZmFpbHMgZm9yIHNvbWUgcmVhc29uLCBjcmFt
IGl0IG9uIHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50IGFzIGEgbGFzdApAQCAtMzk5LDcgKzM5OSw3
IEBAIHZvaWQgRlRQRGlyZWN0b3J5VG9rZW5pemVyOjpjcmVhdGVCYXNpY0RvY3VtZW50KCkKICAg
ICAKICAgICBSZWZQdHI8RWxlbWVudD4gdGFibGVFbGVtZW50ID0gbV9kb2MtPmNyZWF0ZUVsZW1l
bnQodGFibGVUYWcsIGZhbHNlKTsKICAgICBtX3RhYmxlRWxlbWVudCA9IHN0YXRpY19jYXN0PEhU
TUxUYWJsZUVsZW1lbnQqPih0YWJsZUVsZW1lbnQuZ2V0KCkpOwotICAgIG1fdGFibGVFbGVtZW50
LT5zZXRBdHRyaWJ1dGUoImlkIiwgImZ0cERpcmVjdG9yeVRhYmxlIiwgZWMpOworICAgIG1fdGFi
bGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoaWRBdHRyLCBBdG9taWNTdHJpbmcoImZ0cERpcmVjdG9y
eVRhYmxlIiksIGVjKTsKIAogICAgIGJvZHlFbGVtZW50LT5hcHBlbmRDaGlsZChtX3RhYmxlRWxl
bWVudCwgZWMpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
IGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDM3NDVjZDEuLjIyNjJjMjUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxNTcsMTEgKzMxNTcsMTEgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6YWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBGcmFtZUxvYWRUeXAKICAgICAKICAgICBpZiAobG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVJl
bG9hZCkgewogICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2Fj
aGVEYXRhKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIkNhY2hlLUNvbnRy
b2wiLCAibWF4LWFnZT0wIik7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJzOjpDYWNoZUNvbnRyb2wsICJtYXgtYWdlPTAiKTsKICAgICB9IGVsc2UgaWYgKGxv
YWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2luKSB7CiAgICAgICAgIHJlcXVl
c3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOwotICAgICAgICByZXF1
ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiQ2FjaGUtQ29udHJvbCIsICJuby1jYWNoZSIpOwotICAg
ICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiUHJhZ21hIiwgIm5vLWNhY2hlIik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJzOjpDYWNoZUNvbnRy
b2wsICJuby1jYWNoZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyczo6UHJhZ21hLCAibm8tY2FjaGUiKTsKICAgICB9CiAgICAgCiAgICAgaWYgKG1haW5S
ZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNw
cCBiL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCA1MDE2NDBhLi4w
OTU5NjU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAK
KysrIGIvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC00NzQsNyArNDc0
LDcgQEAgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0
ZW0oYm9vbCB1c2VPcmlnaW5hbCkKICAgICAgICAgb3JpZ2luYWxVUkwgPSBibGFua1VSTCgpOwog
ICAgIAogICAgIEZyYW1lKiBwYXJlbnRGcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7
Ci0gICAgU3RyaW5nIHBhcmVudCA9IHBhcmVudEZyYW1lID8gcGFyZW50RnJhbWUtPnRyZWUoKS0+
bmFtZSgpIDogIiI7CisgICAgU3RyaW5nIHBhcmVudCA9IHBhcmVudEZyYW1lID8gcGFyZW50RnJh
bWUtPnRyZWUoKS0+bmFtZSgpIDogZW1wdHlBdG9tOwogICAgIFN0cmluZyB0aXRsZSA9IGRvY0xv
YWRlciA/IGRvY0xvYWRlci0+dGl0bGUoKSA6ICIiOwogCiAgICAgUmVmUHRyPEhpc3RvcnlJdGVt
PiBpdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZSh1cmwsIG1fZnJhbWUtPnRyZWUoKS0+bmFtZSgp
LCBwYXJlbnQsIHRpdGxlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1l
bnQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggOWI1NTk4ZC4u
ZDljNjBiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAKKysr
IGIvV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTE4NiwxMyArMTg2LDEzIEBA
IHZvaWQgSW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgIGFwcGVu
ZENoaWxkKHJvb3RFbGVtZW50LCBlYyk7CiAgICAgCiAgICAgUmVmUHRyPEVsZW1lbnQ+IGJvZHkg
PSBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChib2R5VGFnLCBmYWxzZSk7Ci0gICAgYm9keS0+c2V0
QXR0cmlidXRlKHN0eWxlQXR0ciwgIm1hcmdpbjogMHB4OyIpOworICAgIGJvZHktPnNldENTdHJp
bmdBdHRyaWJ1dGUoc3R5bGVBdHRyLCAibWFyZ2luOiAwcHg7Iik7CiAgICAgCiAgICAgcm9vdEVs
ZW1lbnQtPmFwcGVuZENoaWxkKGJvZHksIGVjKTsKICAgICAKICAgICBSZWZQdHI8SW1hZ2VEb2N1
bWVudEVsZW1lbnQ+IGltYWdlRWxlbWVudCA9IG5ldyBJbWFnZURvY3VtZW50RWxlbWVudCh0aGlz
KTsKICAgICAKLSAgICBpbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICItd2Vi
a2l0LXVzZXItc2VsZWN0OiBub25lIik7ICAgICAgICAKKyAgICBpbWFnZUVsZW1lbnQtPnNldENT
dHJpbmdBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZSIpOyAg
ICAgICAgCiAgICAgaW1hZ2VFbGVtZW50LT5zZXRMb2FkTWFudWFsbHkodHJ1ZSk7CiAgICAgaW1h
Z2VFbGVtZW50LT5zZXRTcmModXJsKCkuc3RyaW5nKCkpOwogICAgIApAQCAtMjAyLDggKzIwMiw4
IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgICAg
ICAvLyBBZGQgZXZlbnQgbGlzdGVuZXJzCiAgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBs
aXN0ZW5lciA9IEltYWdlRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKHRoaXMpOwogICAgICAgICBpZiAo
RE9NV2luZG93KiBkb21XaW5kb3cgPSB0aGlzLT5kb21XaW5kb3coKSkKLSAgICAgICAgICAgIGRv
bVdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgbGlzdGVuZXIsIGZhbHNlKTsKLSAg
ICAgICAgaW1hZ2VFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGxpc3RlbmVyLnJl
bGVhc2UoKSwgZmFsc2UpOworICAgICAgICAgICAgZG9tV2luZG93LT5hZGRFdmVudExpc3RlbmVy
KEF0b21pY1N0cmluZygicmVzaXplIiksIGxpc3RlbmVyLCBmYWxzZSk7CisgICAgICAgIGltYWdl
RWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihBdG9taWNTdHJpbmcoImNsaWNrIiksIGxpc3RlbmVy
LnJlbGVhc2UoKSwgZmFsc2UpOwogICAgIH0KIAogICAgIG1faW1hZ2VFbGVtZW50ID0gaW1hZ2VF
bGVtZW50LmdldCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvTWVkaWFEb2N1bWVudC5j
cHAgYi9XZWJDb3JlL2xvYWRlci9NZWRpYURvY3VtZW50LmNwcAppbmRleCA2NTZkMGEwLi4xMDUx
NWJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9NZWRpYURvY3VtZW50LmNwcAorKysgYi9X
ZWJDb3JlL2xvYWRlci9NZWRpYURvY3VtZW50LmNwcApAQCAtODIsMTggKzgyLDE4IEBAIHZvaWQg
TWVkaWFUb2tlbml6ZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICBtX2RvYy0+YXBw
ZW5kQ2hpbGQocm9vdEVsZW1lbnQsIGVjKTsKICAgICAgICAgCiAgICAgUmVmUHRyPEVsZW1lbnQ+
IGJvZHkgPSBtX2RvYy0+Y3JlYXRlRWxlbWVudChib2R5VGFnLCBmYWxzZSk7Ci0gICAgYm9keS0+
c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgImJhY2tncm91bmQtY29sb3I6IHJnYigzOCwzOCwzOCk7
Iik7CisgICAgYm9keS0+c2V0Q1N0cmluZ0F0dHJpYnV0ZShzdHlsZUF0dHIsICJiYWNrZ3JvdW5k
LWNvbG9yOiByZ2IoMzgsMzgsMzgpOyIpOwogCiAgICAgcm9vdEVsZW1lbnQtPmFwcGVuZENoaWxk
KGJvZHksIGVjKTsKICAgICAgICAgCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1lZGlhRWxlbWVudCA9
IG1fZG9jLT5jcmVhdGVFbGVtZW50KHZpZGVvVGFnLCBmYWxzZSk7CiAgICAgICAgIAogICAgIG1f
bWVkaWFFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KG1lZGlhRWxlbWVu
dC5nZXQoKSk7Ci0gICAgbV9tZWRpYUVsZW1lbnQtPnNldEF0dHJpYnV0ZShjb250cm9sc0F0dHIs
ICIiKTsKLSAgICBtX21lZGlhRWxlbWVudC0+c2V0QXR0cmlidXRlKGF1dG9wbGF5QXR0ciwgIiIp
OwotICAgIG1fbWVkaWFFbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAibWFyZ2luOiBh
dXRvOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgbGVm
dDogMDsiKTsKKyAgICBtX21lZGlhRWxlbWVudC0+c2V0QXR0cmlidXRlKGNvbnRyb2xzQXR0ciwg
ZW1wdHlBdG9tKTsKKyAgICBtX21lZGlhRWxlbWVudC0+c2V0QXR0cmlidXRlKGF1dG9wbGF5QXR0
ciwgZW1wdHlBdG9tKTsKKyAgICBtX21lZGlhRWxlbWVudC0+c2V0Q1N0cmluZ0F0dHJpYnV0ZShz
dHlsZUF0dHIsICJtYXJnaW46IGF1dG87IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyByaWdo
dDogMDsgYm90dG9tOiAwOyBsZWZ0OiAwOyIpOwogCi0gICAgbV9tZWRpYUVsZW1lbnQtPnNldEF0
dHJpYnV0ZShuYW1lQXR0ciwgIm1lZGlhIik7CisgICAgbV9tZWRpYUVsZW1lbnQtPnNldENTdHJp
bmdBdHRyaWJ1dGUobmFtZUF0dHIsICJtZWRpYSIpOwogICAgIG1fbWVkaWFFbGVtZW50LT5zZXRT
cmMobV9kb2MtPnVybCgpKTsKICAgICAKICAgICBib2R5LT5hcHBlbmRDaGlsZChtZWRpYUVsZW1l
bnQsIGVjKTsKQEAgLTIxMiw4ICsyMTIsOCBAQCB2b2lkIE1lZGlhRG9jdW1lbnQ6OnJlcGxhY2VN
ZWRpYUVsZW1lbnRUaW1lckZpcmVkKFRpbWVyPE1lZGlhRG9jdW1lbnQ+KikKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gU2V0IGJvZHkgbWFyZ2luIHdpZHRoIGFuZCBoZWlnaHQgdG8gMCBhcyB0
aGF0IGlzIHdoYXQgYSBQbHVnaW5Eb2N1bWVudCB1c2VzLgotICAgIGh0bWxCb2R5LT5zZXRBdHRy
aWJ1dGUobWFyZ2lud2lkdGhBdHRyLCAiMCIpOwotICAgIGh0bWxCb2R5LT5zZXRBdHRyaWJ1dGUo
bWFyZ2luaGVpZ2h0QXR0ciwgIjAiKTsKKyAgICBodG1sQm9keS0+c2V0Q1N0cmluZ0F0dHJpYnV0
ZShtYXJnaW53aWR0aEF0dHIsICIwIik7CisgICAgaHRtbEJvZHktPnNldENTdHJpbmdBdHRyaWJ1
dGUobWFyZ2luaGVpZ2h0QXR0ciwgIjAiKTsKIAogICAgIFJlZlB0cjxOb2RlTGlzdD4gbm9kZUxp
c3QgPSBodG1sQm9keS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUoInZpZGVvIik7CiAKQEAgLTIyMyw5
ICsyMjMsOSBAQCB2b2lkIE1lZGlhRG9jdW1lbnQ6OnJlcGxhY2VNZWRpYUVsZW1lbnRUaW1lckZp
cmVkKFRpbWVyPE1lZGlhRG9jdW1lbnQ+KikKICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1l
bnQgPSBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChlbWJlZFRhZywgZmFsc2UpOwogICAgICAgICBI
VE1MRW1iZWRFbGVtZW50KiBlbWJlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRW1iZWRFbGVt
ZW50Kj4oZWxlbWVudC5nZXQoKSk7CiAKLSAgICAgICAgZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1
dGUod2lkdGhBdHRyLCAiMTAwJSIpOwotICAgICAgICBlbWJlZEVsZW1lbnQtPnNldEF0dHJpYnV0
ZShoZWlnaHRBdHRyLCAiMTAwJSIpOwotICAgICAgICBlbWJlZEVsZW1lbnQtPnNldEF0dHJpYnV0
ZShuYW1lQXR0ciwgInBsdWdpbiIpOworICAgICAgICBlbWJlZEVsZW1lbnQtPnNldENTdHJpbmdB
dHRyaWJ1dGUod2lkdGhBdHRyLCAiMTAwJSIpOworICAgICAgICBlbWJlZEVsZW1lbnQtPnNldENT
dHJpbmdBdHRyaWJ1dGUoaGVpZ2h0QXR0ciwgIjEwMCUiKTsKKyAgICAgICAgZW1iZWRFbGVtZW50
LT5zZXRDU3RyaW5nQXR0cmlidXRlKG5hbWVBdHRyLCAicGx1Z2luIik7CiAgICAgICAgIGVtYmVk
RWxlbWVudC0+c2V0QXR0cmlidXRlKHNyY0F0dHIsIHVybCgpLnN0cmluZygpKTsKICAgICAgICAg
ZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsIGZyYW1lKCktPmxvYWRlcigpLT5y
ZXNwb25zZU1JTUVUeXBlKCkpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9QbHVnaW5E
b2N1bWVudC5jcHAgYi9XZWJDb3JlL2xvYWRlci9QbHVnaW5Eb2N1bWVudC5jcHAKaW5kZXggNzg4
NjkxZi4uNzE2ZmE4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUGx1Z2luRG9jdW1lbnQu
Y3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL1BsdWdpbkRvY3VtZW50LmNwcApAQCAtNzUsMTkgKzc1
LDE5IEBAIHZvaWQgUGx1Z2luVG9rZW5pemVyOjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAg
ICAgbV9kb2MtPmFwcGVuZENoaWxkKHJvb3RFbGVtZW50LCBlYyk7CiAKICAgICBSZWZQdHI8RWxl
bWVudD4gYm9keSA9IG1fZG9jLT5jcmVhdGVFbGVtZW50KGJvZHlUYWcsIGZhbHNlKTsKLSAgICBi
b2R5LT5zZXRBdHRyaWJ1dGUobWFyZ2lud2lkdGhBdHRyLCAiMCIpOwotICAgIGJvZHktPnNldEF0
dHJpYnV0ZShtYXJnaW5oZWlnaHRBdHRyLCAiMCIpOwotICAgIGJvZHktPnNldEF0dHJpYnV0ZShi
Z2NvbG9yQXR0ciwgInJnYigzOCwzOCwzOCkiKTsKKyAgICBib2R5LT5zZXRDU3RyaW5nQXR0cmli
dXRlKG1hcmdpbndpZHRoQXR0ciwgIjAiKTsKKyAgICBib2R5LT5zZXRDU3RyaW5nQXR0cmlidXRl
KG1hcmdpbmhlaWdodEF0dHIsICIwIik7CisgICAgYm9keS0+c2V0Q1N0cmluZ0F0dHJpYnV0ZShi
Z2NvbG9yQXR0ciwgInJnYigzOCwzOCwzOCkiKTsKIAogICAgIHJvb3RFbGVtZW50LT5hcHBlbmRD
aGlsZChib2R5LCBlYyk7CiAgICAgICAgIAogICAgIFJlZlB0cjxFbGVtZW50PiBlbWJlZEVsZW1l
bnQgPSBtX2RvYy0+Y3JlYXRlRWxlbWVudChlbWJlZFRhZywgZmFsc2UpOwogICAgICAgICAKICAg
ICBtX2VtYmVkRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxFbWJlZEVsZW1lbnQqPihlbWJlZEVs
ZW1lbnQuZ2V0KCkpOwotICAgIG1fZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGUod2lkdGhBdHRy
LCAiMTAwJSIpOwotICAgIG1fZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGUoaGVpZ2h0QXR0ciwg
IjEwMCUiKTsKKyAgICBtX2VtYmVkRWxlbWVudC0+c2V0Q1N0cmluZ0F0dHJpYnV0ZSh3aWR0aEF0
dHIsICIxMDAlIik7CisgICAgbV9lbWJlZEVsZW1lbnQtPnNldENTdHJpbmdBdHRyaWJ1dGUoaGVp
Z2h0QXR0ciwgIjEwMCUiKTsKICAgICAKLSAgICBtX2VtYmVkRWxlbWVudC0+c2V0QXR0cmlidXRl
KG5hbWVBdHRyLCAicGx1Z2luIik7CisgICAgbV9lbWJlZEVsZW1lbnQtPnNldENTdHJpbmdBdHRy
aWJ1dGUobmFtZUF0dHIsICJwbHVnaW4iKTsKICAgICBtX2VtYmVkRWxlbWVudC0+c2V0QXR0cmli
dXRlKHNyY0F0dHIsIG1fZG9jLT51cmwoKS5zdHJpbmcoKSk7CiAgICAgbV9lbWJlZEVsZW1lbnQt
PnNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgbV9kb2MtPmZyYW1lKCktPmxvYWRlcigpLT5yZXNwb25z
ZU1JTUVUeXBlKCkpOwogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvVGV4dERvY3Vt
ZW50LmNwcCBiL1dlYkNvcmUvbG9hZGVyL1RleHREb2N1bWVudC5jcHAKaW5kZXggYTNkNzA2MS4u
YTRjZTYxYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvVGV4dERvY3VtZW50LmNwcAorKysg
Yi9XZWJDb3JlL2xvYWRlci9UZXh0RG9jdW1lbnQuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9p
ZCBUZXh0VG9rZW5pemVyOjp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHMsIGJvb2wpCiAg
ICAgICAgIHJvb3RFbGVtZW50LT5hcHBlbmRDaGlsZChib2R5LCBlYyk7CiAKICAgICAgICAgUmVm
UHRyPEVsZW1lbnQ+IHByZUVsZW1lbnQgPSBtX2RvYy0+Y3JlYXRlRWxlbWVudChwcmVUYWcsIGZh
bHNlKTsKLSAgICAgICAgcHJlRWxlbWVudC0+c2V0QXR0cmlidXRlKCJzdHlsZSIsICJ3b3JkLXdy
YXA6IGJyZWFrLXdvcmQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsiLCBlYyk7CisgICAgICAgIHBy
ZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsIEF0b21pY1N0cmluZygid29yZC13cmFw
OiBicmVhay13b3JkOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IiksIGVjKTsKIAogICAgICAgICBi
b2R5LT5hcHBlbmRDaGlsZChwcmVFbGVtZW50LCBlYyk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggNzM5OGVm
NC4uMThiZmU0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCkBAIC00MjksMTYgKzQyOSwxNiBAQCBQYXNzUmVmUHRyPFJlc291cmNl
SGFuZGxlPiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0
IEtVUgogewogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgbV9mcmFtZS0+
bG9hZGVyKCktPmFwcGx5VXNlckFnZW50KHJlcXVlc3QpOwotICAgIHJlcXVlc3Quc2V0SFRUUEhl
YWRlckZpZWxkKCJDYWNoZS1Db250cm9sIiwgIm1heC1hZ2U9MCIpOworICAgIHJlcXVlc3Quc2V0
SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJzOjpDYWNoZUNvbnRyb2wsICJtYXgtYWdlPTAiKTsK
IAogICAgIGlmIChuZXdlc3RDYWNoZWRSZXNvdXJjZSkgewotICAgICAgICBjb25zdCBTdHJpbmcm
IGxhc3RNb2RpZmllZCA9IG5ld2VzdENhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLmh0dHBIZWFk
ZXJGaWVsZCgiTGFzdC1Nb2RpZmllZCIpOwotICAgICAgICBjb25zdCBTdHJpbmcmIGVUYWcgPSBu
ZXdlc3RDYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoIkVUYWciKTsK
KyAgICAgICAgY29uc3QgU3RyaW5nJiBsYXN0TW9kaWZpZWQgPSBuZXdlc3RDYWNoZWRSZXNvdXJj
ZS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlcnM6Okxhc3RNb2RpZmllZCk7
CisgICAgICAgIGNvbnN0IFN0cmluZyYgZVRhZyA9IG5ld2VzdENhY2hlZFJlc291cmNlLT5yZXNw
b25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyczo6RVRhZyk7CiAgICAgICAgIGlmICgh
bGFzdE1vZGlmaWVkLmlzRW1wdHkoKSB8fCAhZVRhZy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IGlmICghbGFzdE1vZGlmaWVkLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXF1ZXN0LnNl
dEhUVFBIZWFkZXJGaWVsZCgiSWYtTW9kaWZpZWQtU2luY2UiLCBsYXN0TW9kaWZpZWQpOworICAg
ICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJzOjpJZk1v
ZGlmaWVkU2luY2UsIGxhc3RNb2RpZmllZCk7CiAgICAgICAgICAgICBpZiAoIWVUYWcuaXNFbXB0
eSgpKQotICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJJZi1Ob25l
LU1hdGNoIiwgZVRhZyk7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmll
bGQoSFRUUEhlYWRlcnM6OklmTm9uZU1hdGNoLCBlVGFnKTsKICAgICAgICAgfQogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRl
ci9sb2FkZXIuY3BwCmluZGV4IDY5NWEwMzQuLjUyM2FmNmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
bG9hZGVyL2xvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcApAQCAtMzA5
LDE2ICszMDksMTYgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKFJl
cXVlc3RRdWV1ZSYgcmVxdWVzdHNQZW5kaW5nLCBib29sJiBzZXIKICAgICAgICAgICAgIENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZVRvUmV2YWxpZGF0ZSA9IHJlcXVlc3QtPmNhY2hlZFJlc291cmNl
KCktPnJlc291cmNlVG9SZXZhbGlkYXRlKCk7CiAgICAgICAgICAgICBBU1NFUlQocmVzb3VyY2VU
b1JldmFsaWRhdGUtPmNhblVzZUNhY2hlVmFsaWRhdG9yKCkpOwogICAgICAgICAgICAgQVNTRVJU
KHJlc291cmNlVG9SZXZhbGlkYXRlLT5pc0xvYWRlZCgpKTsKLSAgICAgICAgICAgIGNvbnN0IFN0
cmluZyYgbGFzdE1vZGlmaWVkID0gcmVzb3VyY2VUb1JldmFsaWRhdGUtPnJlc3BvbnNlKCkuaHR0
cEhlYWRlckZpZWxkKCJMYXN0LU1vZGlmaWVkIik7Ci0gICAgICAgICAgICBjb25zdCBTdHJpbmcm
IGVUYWcgPSByZXNvdXJjZVRvUmV2YWxpZGF0ZS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQo
IkVUYWciKTsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgbGFzdE1vZGlmaWVkID0gcmVzb3Vy
Y2VUb1JldmFsaWRhdGUtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJzOjpM
YXN0TW9kaWZpZWQpOworICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBlVGFnID0gcmVzb3VyY2VU
b1JldmFsaWRhdGUtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJzOjpFVGFn
KTsKICAgICAgICAgICAgIGlmICghbGFzdE1vZGlmaWVkLmlzRW1wdHkoKSB8fCAhZVRhZy5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZG9jTG9hZGVyLT5jYWNoZVBvbGljeSgp
ICE9IENhY2hlUG9saWN5UmVsb2FkKTsKICAgICAgICAgICAgICAgICBpZiAoZG9jTG9hZGVyLT5j
YWNoZVBvbGljeSgpID09IENhY2hlUG9saWN5UmV2YWxpZGF0ZSkKLSAgICAgICAgICAgICAgICAg
ICAgcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiQ2FjaGUtQ29udHJvbCIsICJt
YXgtYWdlPTAiKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyczo6Q2FjaGVDb250cm9sLCAibWF4LWFnZT0wIik7CiAgICAg
ICAgICAgICAgICAgaWYgKCFsYXN0TW9kaWZpZWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAg
ICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJJZi1Nb2RpZmllZC1TaW5j
ZSIsIGxhc3RNb2RpZmllZCk7CisgICAgICAgICAgICAgICAgICAgIHJlc291cmNlUmVxdWVzdC5z
ZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlcnM6OklmTW9kaWZpZWRTaW5jZSwgbGFzdE1vZGlm
aWVkKTsKICAgICAgICAgICAgICAgICBpZiAoIWVUYWcuaXNFbXB0eSgpKQotICAgICAgICAgICAg
ICAgICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJJZi1Ob25lLU1hdGNo
IiwgZVRhZyk7CisgICAgICAgICAgICAgICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVh
ZGVyRmllbGQoSFRUUEhlYWRlcnM6OklmTm9uZU1hdGNoLCBlVGFnKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIv
V2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCAyYzlhMzQzLi5mMTFlMTQyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9F
dmVudFNvdXJjZS5jcHAKQEAgLTg2LDEwICs4NiwxMCBAQCB2b2lkIEV2ZW50U291cmNlOjpjb25u
ZWN0KCkKIHsKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3VybCk7CiAgICAgcmVxdWVz
dC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKLSAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgi
QWNjZXB0IiwgInRleHQvZXZlbnQtc3RyZWFtIik7Ci0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVy
RmllbGQoIkNhY2hlLUNvbnRyb2wiLCAibm8tY2FjaGUiKTsKKyAgICByZXF1ZXN0LnNldEhUVFBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyczo6QWNjZXB0LCAidGV4dC9ldmVudC1zdHJlYW0iKTsKKyAg
ICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyczo6Q2FjaGVDb250cm9sLCAi
bm8tY2FjaGUiKTsKICAgICBpZiAoIW1fbGFzdEV2ZW50SWQuaXNFbXB0eSgpKQotICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiTGFzdC1FdmVudC1JRCIsIG1fbGFzdEV2ZW50SWQp
OworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChBdG9taWNTdHJpbmcoIkxhc3Qt
RXZlbnQtSUQiKSwgbV9sYXN0RXZlbnRJZCk7CiAKICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9u
cyBvcHRpb25zOwogICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSB0cnVlOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDA2ZWE1NmIuLjc2MWJmYjUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTM5Niw3ICszOTYsOCBA
QCBjb25zdCBGb250RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0YShjb25zdCBGb250JiBmb250
LCBpbnQmIGZhbWlseUluZGV4LCBGb250UwogCiAgICAgICAgIGlmIChmb250U2VsZWN0b3IpIHsK
ICAgICAgICAgICAgIC8vIFRyeSB0aGUgdXNlcidzIHByZWZlcnJlZCBzdGFuZGFyZCBmb250Lgot
ICAgICAgICAgICAgaWYgKEZvbnREYXRhKiBkYXRhID0gZm9udFNlbGVjdG9yLT5nZXRGb250RGF0
YShmb250LmZvbnREZXNjcmlwdGlvbigpLCAiLXdlYmtpdC1zdGFuZGFyZCIpKQorICAgICAgICAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHdlYmtpdFN0YW5kYXJkQXRvbSwg
KCItd2Via2l0LXN0YW5kYXJkIikpOworICAgICAgICAgICAgaWYgKEZvbnREYXRhKiBkYXRhID0g
Zm9udFNlbGVjdG9yLT5nZXRGb250RGF0YShmb250LmZvbnREZXNjcmlwdGlvbigpLCB3ZWJraXRT
dGFuZGFyZEF0b20pKQogICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAppbmRleCA0MTNmYjdi
Li5iZTU5YjJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRl
ck1hcC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3Bw
CkBAIC0zOCw2ICszOCwyNCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK25hbWVzcGFjZSBIVFRQSGVhZGVycyB7CisgICAgY29uc3QgY2hhciogY29uc3Qg
QWNjZXB0ID0gIkFjY2VwdCI7CisgICAgY29uc3QgY2hhciogY29uc3QgQXV0aG9yaXphdGlvbiA9
ICJBdXRob3JpemF0aW9uIjsKKyAgICBjb25zdCBjaGFyKiBjb25zdCBDYWNoZUNvbnRyb2wgPSAi
Q2FjaGUtQ29udHJvbCI7CisgICAgY29uc3QgY2hhciogY29uc3QgQ29udGVudFR5cGUgPSAiQ29u
dGVudC1UeXBlIjsKKyAgICBjb25zdCBjaGFyKiBjb25zdCBFVGFnID0gIkVUYWciOworICAgIGNv
bnN0IGNoYXIqIGNvbnN0IElmTWF0Y2ggPSAiSWYtTWF0Y2giOworICAgIGNvbnN0IGNoYXIqIGNv
bnN0IElmTW9kaWZpZWRTaW5jZSA9ICJJZi1Nb2RpZmllZC1TaW5jZSI7CisgICAgY29uc3QgY2hh
ciogY29uc3QgSWZOb25lTWF0Y2ggPSAiSWYtTm9uZS1NYXRjaCI7CisgICAgY29uc3QgY2hhciog
Y29uc3QgSWZSYW5nZSA9ICJJZi1SYW5nZSI7CisgICAgY29uc3QgY2hhciogY29uc3QgSWZVbm1v
ZGlmaWVkU2luY2UgPSAiSWYtVW5tb2RpZmllZC1TaW5jZSI7CisgICAgY29uc3QgY2hhciogY29u
c3QgTGFzdE1vZGlmaWVkID0gIkxhc3QtTW9kaWZpZWQiOworICAgIGNvbnN0IGNoYXIqIGNvbnN0
IE9yaWdpbiA9ICJPcmlnaW4iOworICAgIGNvbnN0IGNoYXIqIGNvbnN0IFByYWdtYSA9ICJQcmFn
bWEiOworICAgIGNvbnN0IGNoYXIqIGNvbnN0IFJlZmVyZXIgPSAiUmVmZXJlciI7CisgICAgY29u
c3QgY2hhciogY29uc3QgVXNlckFnZW50ID0gIlVzZXItQWdlbnQiOworfQorCiBhdXRvX3B0cjxD
cm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBIVFRQSGVhZGVyTWFwOjpjb3B5RGF0YSgpIGNv
bnN0CiB7CiAgICAgYXV0b19wdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gZGF0YShu
ZXcgQ3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YSgpKTsKQEAgLTk2LDQgKzExNCw5IEBAIHBh
aXI8SFRUUEhlYWRlck1hcDo6aXRlcmF0b3IsIGJvb2w+IEhUVFBIZWFkZXJNYXA6OmFkZChjb25z
dCBjaGFyKiBuYW1lLCBjb25zdCBTCiAgICAgcmV0dXJuIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBT
dHJpbmcsIENhc2VGb2xkaW5nSGFzaD46OmFkZDxjb25zdCBjaGFyKiwgQ2FzZUZvbGRpbmdDU3Ry
aW5nVHJhbnNsYXRvcj4obmFtZSwgdmFsdWUpOwogfQogCit2b2lkIEhUVFBIZWFkZXJNYXA6OnJl
bW92ZShjb25zdCBjaGFyKiBuYW1lKQoreworICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJp
bmcsIENhc2VGb2xkaW5nSGFzaD46OnJlbW92ZTxjb25zdCBjaGFyKiwgQ2FzZUZvbGRpbmdDU3Ry
aW5nVHJhbnNsYXRvcj4obmFtZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmggYi9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCmluZGV4IGRmZGU5NzQuLmJhY2VhOTQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaApAQCAtNTUsMTQgKzU1
LDQwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD46OmFkZChuYW1l
LCB2YWx1ZSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjo6cmVtb3ZlKG5hbWUpOworICAgICAg
ICB9CiAKICAgICAgICAgLy8gQWx0ZXJuYXRlIGFjY2Vzc29ycyB0aGF0IGFyZSBmYXN0ZXIgdGhh
biBjb252ZXJ0aW5nIHRoZSBjaGFyKiB0byBBdG9taWNTdHJpbmcgZmlyc3QuCiAgICAgICAgIGJv
b2wgY29udGFpbnMoY29uc3QgY2hhciopIGNvbnN0OwogICAgICAgICBTdHJpbmcgZ2V0KGNvbnN0
IGNoYXIqKSBjb25zdDsKICAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IGNo
YXIqIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgICAgICAKKyAgICAgICAgdm9pZCBy
ZW1vdmUoY29uc3QgY2hhciopOwogICAgIH07CiAKKyAgICAvLyBDb21tb24gSFRUUCBoZWFkZXIg
bmFtZXMuCisgICAgLy8gKEl0IHdvdWxkIGJlIG1vcmUgY29udmVuaWVudCBpZiB0aGVzZSB3ZXJl
IEF0b21pY1N0cmluZ3MsIGJ1dCB0aGV5IGdldAorICAgIC8vIGFjY2Vzc2VkIG9uIG11bHRpcGxl
IHRocmVhZHMsIGFuZCBBdG9taWNTdHJpbmcgaXNuJ3QgdGhyZWFkLXNhZmUuKQorICAgIG5hbWVz
cGFjZSBIVFRQSGVhZGVycyB7CisgICAgICAgIGV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBBY2Nl
cHQ7CisgICAgICAgIGV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBBdXRob3JpemF0aW9uOworICAg
ICAgICBleHRlcm4gY29uc3QgY2hhciogY29uc3QgQ2FjaGVDb250cm9sOworICAgICAgICBleHRl
cm4gY29uc3QgY2hhciogY29uc3QgQ29udGVudFR5cGU7CisgICAgICAgIGV4dGVybiBjb25zdCBj
aGFyKiBjb25zdCBFVGFnOworICAgICAgICBleHRlcm4gY29uc3QgY2hhciogY29uc3QgSWZNYXRj
aDsKKyAgICAgICAgZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IElmTW9kaWZpZWRTaW5jZTsKKyAg
ICAgICAgZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IElmTm9uZU1hdGNoOworICAgICAgICBleHRl
cm4gY29uc3QgY2hhciogY29uc3QgSWZSYW5nZTsKKyAgICAgICAgZXh0ZXJuIGNvbnN0IGNoYXIq
IGNvbnN0IElmVW5tb2RpZmllZFNpbmNlOworICAgICAgICBleHRlcm4gY29uc3QgY2hhciogY29u
c3QgTGFzdE1vZGlmaWVkOworICAgICAgICBleHRlcm4gY29uc3QgY2hhciogY29uc3QgT3JpZ2lu
OworICAgICAgICBleHRlcm4gY29uc3QgY2hhciogY29uc3QgUHJhZ21hOworICAgICAgICBleHRl
cm4gY29uc3QgY2hhciogY29uc3QgUmVmZXJlcjsKKyAgICAgICAgZXh0ZXJuIGNvbnN0IGNoYXIq
IGNvbnN0IFVzZXJBZ2VudDsKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEhUVFBIZWFkZXJNYXBfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IDRkOWMxMDIuLjRjZjk2YTQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTIzNCw3
ICsyMzQsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OmNsZWFySFRUUFJlZmVycmVyKCkK
IHsKICAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCiAKLSAgICBtX2h0dHBIZWFkZXJGaWVs
ZHMucmVtb3ZlKCJSZWZlcmVyIik7CisgICAgbV9odHRwSGVhZGVyRmllbGRzLnJlbW92ZShIVFRQ
SGVhZGVyczo6UmVmZXJlcik7CiAKICAgICBpZiAodXJsKCkucHJvdG9jb2xJbkhUVFBGYW1pbHko
KSkKICAgICAgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7CkBAIC0yNDQsNyAr
MjQ0LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpjbGVhckhUVFBPcmlnaW4oKQogewog
ICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKIAotICAgIG1faHR0cEhlYWRlckZpZWxkcy5y
ZW1vdmUoIk9yaWdpbiIpOworICAgIG1faHR0cEhlYWRlckZpZWxkcy5yZW1vdmUoSFRUUEhlYWRl
cnM6Ok9yaWdpbik7CiAKICAgICBpZiAodXJsKCkucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkKICAg
ICAgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7CkBAIC0zNjUsMTEgKzM2NSwx
MSBAQCBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0QmFzZSYgYSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0QmFzZSYgYikKIAogYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjppc0Nv
bmRpdGlvbmFsKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKG1faHR0cEhlYWRlckZpZWxkcy5jb250
YWlucygiSWYtTWF0Y2giKSB8fAotICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLmNvbnRh
aW5zKCJJZi1Nb2RpZmllZC1TaW5jZSIpIHx8Ci0gICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVs
ZHMuY29udGFpbnMoIklmLU5vbmUtTWF0Y2giKSB8fAotICAgICAgICAgICAgbV9odHRwSGVhZGVy
RmllbGRzLmNvbnRhaW5zKCJJZi1SYW5nZSIpIHx8Ci0gICAgICAgICAgICBtX2h0dHBIZWFkZXJG
aWVsZHMuY29udGFpbnMoIklmLVVubW9kaWZpZWQtU2luY2UiKSk7CisgICAgcmV0dXJuIChtX2h0
dHBIZWFkZXJGaWVsZHMuY29udGFpbnMoSFRUUEhlYWRlcnM6OklmTWF0Y2gpIHx8CisgICAgICAg
ICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuY29udGFpbnMoSFRUUEhlYWRlcnM6OklmTW9kaWZpZWRT
aW5jZSkgfHwKKyAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5jb250YWlucyhIVFRQSGVh
ZGVyczo6SWZOb25lTWF0Y2gpIHx8CisgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuY29u
dGFpbnMoSFRUUEhlYWRlcnM6OklmUmFuZ2UpIHx8CisgICAgICAgICAgICBtX2h0dHBIZWFkZXJG
aWVsZHMuY29udGFpbnMoSFRUUEhlYWRlcnM6OklmVW5tb2RpZmllZFNpbmNlKSk7CiB9CiAKIHZv
aWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCmluZGV4IDQ2
NmI0ODcuLmYyZDk2MWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuaApAQCAtODUsMjIgKzg1LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCBhZGRIVFRQSGVhZGVyRmllbGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHZhbHVlKTsKICAgICAgICAgdm9pZCBhZGRIVFRQSGVhZGVyRmllbGRzKGNv
bnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlckZpZWxkcyk7CiAgICAgICAgIAotICAgICAgICBTdHJp
bmcgaHR0cENvbnRlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gaHR0cEhlYWRlckZpZWxkKCJDb250
ZW50LVR5cGUiKTsgIH0KLSAgICAgICAgdm9pZCBzZXRIVFRQQ29udGVudFR5cGUoY29uc3QgU3Ry
aW5nJiBodHRwQ29udGVudFR5cGUpIHsgc2V0SFRUUEhlYWRlckZpZWxkKCJDb250ZW50LVR5cGUi
LCBodHRwQ29udGVudFR5cGUpOyB9CisgICAgICAgIFN0cmluZyBodHRwQ29udGVudFR5cGUoKSBj
b25zdCB7IHJldHVybiBodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlcnM6OkNvbnRlbnRUeXBlKTsg
IH0KKyAgICAgICAgdm9pZCBzZXRIVFRQQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBodHRwQ29u
dGVudFR5cGUpIHsgc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJzOjpDb250ZW50VHlwZSwg
aHR0cENvbnRlbnRUeXBlKTsgfQogICAgICAgICAKLSAgICAgICAgU3RyaW5nIGh0dHBSZWZlcnJl
cigpIGNvbnN0IHsgcmV0dXJuIGh0dHBIZWFkZXJGaWVsZCgiUmVmZXJlciIpOyB9Ci0gICAgICAg
IHZvaWQgc2V0SFRUUFJlZmVycmVyKGNvbnN0IFN0cmluZyYgaHR0cFJlZmVycmVyKSB7IHNldEhU
VFBIZWFkZXJGaWVsZCgiUmVmZXJlciIsIGh0dHBSZWZlcnJlcik7IH0KKyAgICAgICAgU3RyaW5n
IGh0dHBSZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJuIGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
czo6UmVmZXJlcik7IH0KKyAgICAgICAgdm9pZCBzZXRIVFRQUmVmZXJyZXIoY29uc3QgU3RyaW5n
JiBodHRwUmVmZXJyZXIpIHsgc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJzOjpSZWZlcmVy
LCBodHRwUmVmZXJyZXIpOyB9CiAgICAgICAgIHZvaWQgY2xlYXJIVFRQUmVmZXJyZXIoKTsKICAg
ICAgICAgCi0gICAgICAgIFN0cmluZyBodHRwT3JpZ2luKCkgY29uc3QgeyByZXR1cm4gaHR0cEhl
YWRlckZpZWxkKCJPcmlnaW4iKTsgfQotICAgICAgICB2b2lkIHNldEhUVFBPcmlnaW4oY29uc3Qg
U3RyaW5nJiBodHRwT3JpZ2luKSB7IHNldEhUVFBIZWFkZXJGaWVsZCgiT3JpZ2luIiwgaHR0cE9y
aWdpbik7IH0KKyAgICAgICAgU3RyaW5nIGh0dHBPcmlnaW4oKSBjb25zdCB7IHJldHVybiBodHRw
SGVhZGVyRmllbGQoSFRUUEhlYWRlcnM6Ok9yaWdpbik7IH0KKyAgICAgICAgdm9pZCBzZXRIVFRQ
T3JpZ2luKGNvbnN0IFN0cmluZyYgaHR0cE9yaWdpbikgeyBzZXRIVFRQSGVhZGVyRmllbGQoSFRU
UEhlYWRlcnM6Ok9yaWdpbiwgaHR0cE9yaWdpbik7IH0KICAgICAgICAgdm9pZCBjbGVhckhUVFBP
cmlnaW4oKTsKIAotICAgICAgICBTdHJpbmcgaHR0cFVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJu
IGh0dHBIZWFkZXJGaWVsZCgiVXNlci1BZ2VudCIpOyB9Ci0gICAgICAgIHZvaWQgc2V0SFRUUFVz
ZXJBZ2VudChjb25zdCBTdHJpbmcmIGh0dHBVc2VyQWdlbnQpIHsgc2V0SFRUUEhlYWRlckZpZWxk
KCJVc2VyLUFnZW50IiwgaHR0cFVzZXJBZ2VudCk7IH0KKyAgICAgICAgU3RyaW5nIGh0dHBVc2Vy
QWdlbnQoKSBjb25zdCB7IHJldHVybiBodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlcnM6OlVzZXJB
Z2VudCk7IH0KKyAgICAgICAgdm9pZCBzZXRIVFRQVXNlckFnZW50KGNvbnN0IFN0cmluZyYgaHR0
cFVzZXJBZ2VudCkgeyBzZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlcnM6OlVzZXJBZ2VudCwg
aHR0cFVzZXJBZ2VudCk7IH0KIAotICAgICAgICBTdHJpbmcgaHR0cEFjY2VwdCgpIGNvbnN0IHsg
cmV0dXJuIGh0dHBIZWFkZXJGaWVsZCgiQWNjZXB0Iik7IH0KLSAgICAgICAgdm9pZCBzZXRIVFRQ
QWNjZXB0KGNvbnN0IFN0cmluZyYgaHR0cEFjY2VwdCkgeyBzZXRIVFRQSGVhZGVyRmllbGQoIkFj
Y2VwdCIsIGh0dHBBY2NlcHQpOyB9CisgICAgICAgIFN0cmluZyBodHRwQWNjZXB0KCkgY29uc3Qg
eyByZXR1cm4gaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJzOjpBY2NlcHQpOyB9CisgICAgICAg
IHZvaWQgc2V0SFRUUEFjY2VwdChjb25zdCBTdHJpbmcmIGh0dHBBY2NlcHQpIHsgc2V0SFRUUEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJzOjpBY2NlcHQsIGh0dHBBY2NlcHQpOyB9CiAKICAgICAgICAg
dm9pZCBzZXRSZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheShj
b25zdCBTdHJpbmcmIGVuY29kaW5nMSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZzIgPSBTdHJpbmco
KSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZzMgPSBTdHJpbmcoKSk7CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggZTA2YzZmOC4uYjU3
ZGJlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmgKQEAgLTc1LDYgKzc1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SFRUUEhlYWRlckZp
ZWxkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAg
Y29uc3QgSFRUUEhlYWRlck1hcCYgaHR0cEhlYWRlckZpZWxkcygpIGNvbnN0OwogCisgICAgU3Ry
aW5nIGNvbnRlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFk
ZXJzOjpDb250ZW50VHlwZSk7IH0KKwogICAgIGJvb2wgaXNNdWx0aXBhcnQoKSBjb25zdCB7IHJl
dHVybiBtaW1lVHlwZSgpID09ICJtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIjsgfQogCiAgICAg
Ym9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCmluZGV4IGQ4YTgxMmYuLmI2
YmRjYTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
SGFuZGxlTWFuYWdlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyLmNwcApAQCAtMjQ4LDEzICsyNDgsMTMgQEAgc3RhdGljIHNpemVf
dCBoZWFkZXJDYWxsYmFjayhjaGFyKiBwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZv
aWQqIGRhdGEpCiAgICAgICAgIGVyciA9IGN1cmxfZWFzeV9nZXRpbmZvKGgsIENVUkxJTkZPX1JF
U1BPTlNFX0NPREUsICZodHRwQ29kZSk7CiAgICAgICAgIGQtPm1fcmVzcG9uc2Uuc2V0SFRUUFN0
YXR1c0NvZGUoaHR0cENvZGUpOwogCi0gICAgICAgIGQtPm1fcmVzcG9uc2Uuc2V0TWltZVR5cGUo
ZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShkLT5tX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVs
ZCgiQ29udGVudC1UeXBlIikpKTsKLSAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRUZXh0RW5jb2Rp
bmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShkLT5tX3Jlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZCgiQ29udGVudC1UeXBlIikpKTsKLSAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRTdWdn
ZXN0ZWRGaWxlbmFtZShmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKGQtPm1fcmVz
cG9uc2UuaHR0cEhlYWRlckZpZWxkKCJDb250ZW50LURpc3Bvc2l0aW9uIikpKTsKKyAgICAgICAg
ZC0+bV9yZXNwb25zZS5zZXRNaW1lVHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGQt
Pm1fcmVzcG9uc2UuY29udGVudFR5cGUoKSkpOworICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFRl
eHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGQtPm1fcmVzcG9uc2Uu
Y29udGVudFR5cGUoKSkpOworICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFN1Z2dlc3RlZEZpbGVu
YW1lKGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oZC0+bV9yZXNwb25zZS5odHRw
SGVhZGVyRmllbGQoSFRUUEhlYWRlcnM6OkNvbnRlbnREaXNwb3NpdGlvbikpKTsKIAogICAgICAg
ICAvLyBIVFRQIHJlZGlyZWN0aW9uCiAgICAgICAgIGlmIChodHRwQ29kZSA+PSAzMDAgJiYgaHR0
cENvZGUgPCA0MDApIHsKLSAgICAgICAgICAgIFN0cmluZyBsb2NhdGlvbiA9IGQtPm1fcmVzcG9u
c2UuaHR0cEhlYWRlckZpZWxkKCJsb2NhdGlvbiIpOworICAgICAgICAgICAgU3RyaW5nIGxvY2F0
aW9uID0gZC0+bV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlcnM6OkxvY2F0aW9u
KTsKICAgICAgICAgICAgIGlmICghbG9jYXRpb24uaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgS1VSTCBuZXdVUkwgPSBLVVJMKGpvYi0+cmVxdWVzdCgpLnVybCgpLCBsb2NhdGlvbik7CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVN
YWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1t
CmluZGV4IDM2MDQyNWUuLjQwYTAyYTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtMjA3LDcgKzIwNyw3IEBAIGJvb2wgUmVz
b3VyY2VIYW5kbGU6OnN0YXJ0KEZyYW1lKiBmcmFtZSkKICAgICBpZiAoIWQtPm1faW5pdGlhbENy
ZWRlbnRpYWwuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IERpZ2VzdCBh
dXRoZW50aWNhdGlvbiwgYW5kIFByb3h5LUF1dGhvcml6YXRpb24uCiAgICAgICAgIFN0cmluZyBh
dXRoSGVhZGVyID0gIkJhc2ljICIgKyBlbmNvZGVCYXNpY0F1dGhvcml6YXRpb24oZC0+bV9pbml0
aWFsQ3JlZGVudGlhbC51c2VyKCksIGQtPm1faW5pdGlhbENyZWRlbnRpYWwucGFzc3dvcmQoKSk7
Ci0gICAgICAgIGQtPm1fcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGQoIkF1dGhvcml6YXRpb24i
LCBhdXRoSGVhZGVyKTsKKyAgICAgICAgZC0+bV9yZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZChB
dG9taWNTdHJpbmcoSFRUUEhlYWRlcnM6OkF1dGhvcml6YXRpb24pLCBhdXRoSGVhZGVyKTsKICAg
ICB9CiAjZW5kaWYKIApAQCAtMTA1Niw3ICsxMDU2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6
cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxs
ZW4KICAgICAgICAgICAgIAogICAgICAgICBpZiAoIWRlbGVnYXRlLT5tX2luaXRpYWxDcmVkZW50
aWFsLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgU3RyaW5nIGF1dGhIZWFkZXIgPSAiQmFzaWMg
IiArIGVuY29kZUJhc2ljQXV0aG9yaXphdGlvbihkZWxlZ2F0ZS0+bV9pbml0aWFsQ3JlZGVudGlh
bC51c2VyKCksIGRlbGVnYXRlLT5tX2luaXRpYWxDcmVkZW50aWFsLnBhc3N3b3JkKCkpOwotICAg
ICAgICAgICAgcmVxdWVzdFdpdGhJbml0aWFsQ3JlZGVudGlhbHMuYWRkSFRUUEhlYWRlckZpZWxk
KCJBdXRob3JpemF0aW9uIiwgYXV0aEhlYWRlcik7CisgICAgICAgICAgICByZXF1ZXN0V2l0aElu
aXRpYWxDcmVkZW50aWFscy5hZGRIVFRQSGVhZGVyRmllbGQoQXRvbWljU3RyaW5nKEhUVFBIZWFk
ZXJzOjpBdXRob3JpemF0aW9uKSwgYXV0aEhlYWRlcik7CiAgICAgICAgIH0KICAgICAgICAgY29u
bmVjdGlvbiA9IFtbTlNVUkxDb25uZWN0aW9uIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6cmVxdWVz
dFdpdGhJbml0aWFsQ3JlZGVudGlhbHMubnNVUkxSZXF1ZXN0KCkgZGVsZWdhdGU6ZGVsZWdhdGUg
c3RhcnRJbW1lZGlhdGVseTpOT107CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0F0b21pY1N0cmluZy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRvbWljU3Ry
aW5nLmNwcAppbmRleCAxN2Q3ODMyLi43MjQ1OWMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRv
bWljU3RyaW5nLmNwcApAQCAtMzAyLDYgKzMwMiw4IEBAIERFRklORV9HTE9CQUwoQXRvbWljU3Ry
aW5nLCBlbXB0eUF0b20sICIiKQogREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIHRleHRBdG9t
LCAiI3RleHQiKQogREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIGNvbW1lbnRBdG9tLCAiI2Nv
bW1lbnQiKQogREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIHN0YXJBdG9tLCAiKiIpCitERUZJ
TkVfR0xPQkFMKEF0b21pY1N0cmluZywgdHJ1ZUF0b20sICJ0cnVlIikKK0RFRklORV9HTE9CQUwo
QXRvbWljU3RyaW5nLCBmYWxzZUF0b20sICJmYWxzZSIpCiAKIHZvaWQgQXRvbWljU3RyaW5nOjpp
bml0KCkKIHsKQEAgLTMxNiw2ICszMTgsOCBAQCB2b2lkIEF0b21pY1N0cmluZzo6aW5pdCgpCiAg
ICAgICAgIG5ldyAoKHZvaWQqKSZ0ZXh0QXRvbSkgQXRvbWljU3RyaW5nKCIjdGV4dCIpOwogICAg
ICAgICBuZXcgKCh2b2lkKikmY29tbWVudEF0b20pIEF0b21pY1N0cmluZygiI2NvbW1lbnQiKTsK
ICAgICAgICAgbmV3ICgodm9pZCopJnN0YXJBdG9tKSBBdG9taWNTdHJpbmcoIioiKTsKKyAgICAg
ICAgbmV3ICgodm9pZCopJnRydWVBdG9tKSBBdG9taWNTdHJpbmcoInRydWUiKTsKKyAgICAgICAg
bmV3ICgodm9pZCopJmZhbHNlQXRvbSkgQXRvbWljU3RyaW5nKCJmYWxzZSIpOwogCiAgICAgICAg
IGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvQXRvbWljU3RyaW5nLmggYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5n
LmgKaW5kZXggNDdkMDdjNS4uMTliOWM0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0F0b21pY1N0cmluZy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJp
bmcuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdCgpOwog
CiAgICAgQXRvbWljU3RyaW5nKCkgeyB9Ci0gICAgQXRvbWljU3RyaW5nKGNvbnN0IGNoYXIqIHMp
IDogbV9zdHJpbmcoYWRkKHMpKSB7IH0KKyAgICBleHBsaWNpdCBBdG9taWNTdHJpbmcoY29uc3Qg
Y2hhciogcykgOiBtX3N0cmluZyhhZGQocykpIHsgfQogICAgIEF0b21pY1N0cmluZyhjb25zdCBV
Q2hhciogcywgaW50IGxlbmd0aCkgOiBtX3N0cmluZyhhZGQocywgbGVuZ3RoKSkgeyB9CiAgICAg
QXRvbWljU3RyaW5nKGNvbnN0IFVDaGFyKiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CiAjaWYg
VVNFKEpTQykKQEAgLTE1Niw2ICsxNTYsOCBAQCBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2Fz
ZShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4gZQogICAg
IGV4dGVybiBjb25zdCBBdG9taWNTdHJpbmcgdGV4dEF0b207CiAgICAgZXh0ZXJuIGNvbnN0IEF0
b21pY1N0cmluZyBjb21tZW50QXRvbTsKICAgICBleHRlcm4gY29uc3QgQXRvbWljU3RyaW5nIHN0
YXJBdG9tOworICAgIGV4dGVybiBjb25zdCBBdG9taWNTdHJpbmcgdHJ1ZUF0b207CisgICAgZXh0
ZXJuIGNvbnN0IEF0b21pY1N0cmluZyBmYWxzZUF0b207CiAjZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCmluZGV4IDJmZjUwZGYuLmEyYWIw
ZmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lk
IFJlbmRlck1lZGlhOjpjcmVhdGVUaW1lbGluZSgpCiB7CiAgICAgQVNTRVJUKCFtX3RpbWVsaW5l
KTsKICAgICBtX3RpbWVsaW5lID0gbmV3IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudChkb2N1
bWVudCgpLCBtZWRpYUVsZW1lbnQoKSk7Ci0gICAgbV90aW1lbGluZS0+c2V0QXR0cmlidXRlKHBy
ZWNpc2lvbkF0dHIsICJmbG9hdCIpOworICAgIG1fdGltZWxpbmUtPnNldENTdHJpbmdBdHRyaWJ1
dGUocHJlY2lzaW9uQXR0ciwgImZsb2F0Iik7CiAgICAgbV90aW1lbGluZS0+YXR0YWNoVG9QYXJl
bnQobV90aW1lbGluZUNvbnRhaW5lci5nZXQoKSk7CiB9CiAKQEAgLTI2NSw4ICsyNjUsOCBAQCB2
b2lkIFJlbmRlck1lZGlhOjpjcmVhdGVWb2x1bWVTbGlkZXIoKQogewogICAgIEFTU0VSVCghbV92
b2x1bWVTbGlkZXIpOwogICAgIG1fdm9sdW1lU2xpZGVyID0gbmV3IE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckVsZW1lbnQoZG9jdW1lbnQoKSwgbWVkaWFFbGVtZW50KCkpOwotICAgIG1fdm9sdW1l
U2xpZGVyLT5zZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciwgImZsb2F0Iik7Ci0gICAgbV92b2x1
bWVTbGlkZXItPnNldEF0dHJpYnV0ZShtYXhBdHRyLCAiMSIpOworICAgIG1fdm9sdW1lU2xpZGVy
LT5zZXRDU3RyaW5nQXR0cmlidXRlKHByZWNpc2lvbkF0dHIsICJmbG9hdCIpOworICAgIG1fdm9s
dW1lU2xpZGVyLT5zZXRDU3RyaW5nQXR0cmlidXRlKG1heEF0dHIsICIxIik7CiAgICAgbV92b2x1
bWVTbGlkZXItPnNldEF0dHJpYnV0ZSh2YWx1ZUF0dHIsIFN0cmluZzo6bnVtYmVyKG1lZGlhRWxl
bWVudCgpLT52b2x1bWUoKSkpOwogICAgIG1fdm9sdW1lU2xpZGVyLT5hdHRhY2hUb1BhcmVudCht
X3ZvbHVtZVNsaWRlckNvbnRhaW5lci5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFByb3BlcnR5LmggYi9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5
LmgKaW5kZXggOTg0MDQ2Zi4uOTlmN2E3YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eS5oCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHkuaApA
QCAtNDgxLDcgKzQ4MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIGlmIChv
bGQgJiYgdmFsdWUuaXNOdWxsKCkpIAogICAgICAgICAgICAgICAgIG5hbWVkQXR0ck1hcC0+cmVt
b3ZlQXR0cmlidXRlKG9sZC0+bmFtZSgpKTsgCiAgICAgICAgICAgICBlbHNlIGlmICghb2xkICYm
ICF2YWx1ZS5pc051bGwoKSkgCi0gICAgICAgICAgICAgICAgbmFtZWRBdHRyTWFwLT5hZGRBdHRy
aWJ1dGUoY29uc3RfY2FzdDxPd25lckVsZW1lbnQqPihvd25lckVsZW1lbnQpLT5jcmVhdGVBdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSwgdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBuYW1lZEF0dHJN
YXAtPmFkZEF0dHJpYnV0ZShjb25zdF9jYXN0PE93bmVyRWxlbWVudCo+KG93bmVyRWxlbWVudCkt
PmNyZWF0ZUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBBdG9taWNTdHJpbmcodmFsdWUpKSk7CiAg
ICAgICAgICAgICBlbHNlIGlmIChvbGQgJiYgIXZhbHVlLmlzTnVsbCgpKSAKICAgICAgICAgICAg
ICAgICBvbGQtPnNldFZhbHVlKHZhbHVlKTsgCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUuaCBiL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVt
cGxhdGUuaAppbmRleCBkNjVmZTBiLi4wYzBmYjgyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFRlbXBsYXRlLmgKKysrIGIvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0
ZS5oCkBAIC0xODEsNyArMTgxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB0eXBl
ZGVmIGJvb2wgRGVjb3JhdGVkVHlwZTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBudWxsKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhib29sIHR5cGUp
IHsgcmV0dXJuIHR5cGUgPyAidHJ1ZSIgOiAiZmFsc2UiOyB9CisgICAgICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmcoYm9vbCB0eXBlKSB7IHJldHVybiB0eXBlID8gdHJ1ZUF0b20gOiBmYWxzZUF0
b207IH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcv
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLmNwcAppbmRleCBiNmI2MmQxLi44NzdlZmZmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmNwcAorKysgYi9XZWJD
b3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjp+U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCgpCiBib29sIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09
IFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0cikgewotICAgICAgICBzZXRF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQmFzZVZhbHVlKGF0dHItPnZhbHVlKCkgPT0gInRydWUi
KTsKKyAgICAgICAgc2V0RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEJhc2VWYWx1ZShhdHRyLT52
YWx1ZSgpID09IHRydWVBdG9tKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9z
dmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAppbmRleCAwOTZmMGMyLi5lNWRjMTgzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUGFzc1Jl
ZlB0cjxDU1NGb250RmFjZVNyY1ZhbHVlPiBTVkdGb250RmFjZVVyaUVsZW1lbnQ6OnNyY1ZhbHVl
KCkgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTRm9udEZhY2VTcmNWYWx1ZT4gc3JjID0gQ1NTRm9u
dEZhY2VTcmNWYWx1ZTo6Y3JlYXRlKGdldEF0dHJpYnV0ZShYTGlua05hbWVzOjpocmVmQXR0cikp
OwogICAgIEF0b21pY1N0cmluZyB2YWx1ZShnZXRBdHRyaWJ1dGUoZm9ybWF0QXR0cikpOwotICAg
IHNyYy0+c2V0Rm9ybWF0KHZhbHVlLmlzRW1wdHkoKSA/ICJzdmciIDogdmFsdWUpOyAvLyBEZWZh
dWx0IGZvcm1hdAorICAgIHNyYy0+c2V0Rm9ybWF0KHZhbHVlLmlzRW1wdHkoKSA/IEF0b21pY1N0
cmluZygic3ZnIikgOiB2YWx1ZSk7IC8vIERlZmF1bHQgZm9ybWF0CiAgICAgcmV0dXJuIHNyYy5y
ZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cCBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhYzJlMGMxLi5jYzgxZDEx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0zODYsMTUgKzM4NiwxNSBAQCB2b2lkIFhNTEh0
dHBSZXF1ZXN0OjpzZW5kKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX21ldGhvZCAhPSAiR0VUIiAmJiBtX21ldGhvZCAh
PSAiSEVBRCIgJiYgbV91cmwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkgewotICAgICAgICBTdHJp
bmcgY29udGVudFR5cGUgPSBnZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiKTsKKyAgICAg
ICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gZ2V0UmVxdWVzdEhlYWRlcihIVFRQSGVhZGVyczo6Q29u
dGVudFR5cGUpOwogICAgICAgICBpZiAoY29udGVudFR5cGUuaXNFbXB0eSgpKSB7CiAjaWYgRU5B
QkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICAgICAgICAgaWYgKHVzZXNEYXNoYm9hcmRCYWNr
d2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCi0gICAgICAgICAgICAgICAgc2V0UmVxdWVzdEhlYWRl
ckludGVybmFsKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNv
ZGVkIik7CisgICAgICAgICAgICAgICAgc2V0UmVxdWVzdEhlYWRlckludGVybmFsKEF0b21pY1N0
cmluZyhIVFRQSGVhZGVyczo6Q29udGVudFR5cGUpLCAiYXBwbGljYXRpb24veC13d3ctZm9ybS11
cmxlbmNvZGVkIik7CiAgICAgICAgICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogdGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgY2hhcnNldCB1c2VkIGZvciBlbmNvZGlu
Zy4KLSAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoIkNvbnRlbnQtVHlw
ZSIsICJhcHBsaWNhdGlvbi94bWwiKTsKKyAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVy
SW50ZXJuYWwoQXRvbWljU3RyaW5nKEhUVFBIZWFkZXJzOjpDb250ZW50VHlwZSksICJhcHBsaWNh
dGlvbi94bWwiKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FOiBBY2NvcmRpbmcgdG8g
WE1MSHR0cFJlcXVlc3QgTGV2ZWwgMiwgdGhpcyBzaG91bGQgdXNlIHRoZSBEb2N1bWVudC5pbm5l
ckhUTUwgYWxnb3JpdGhtCkBAIC00MTcsMTQgKzQxNywxNCBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpzZW5kKGNvbnN0IFN0cmluZyYgYm9keSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghYm9keS5pc051bGwoKSAmJiBtX21ldGhvZCAhPSAiR0VUIiAmJiBt
X21ldGhvZCAhPSAiSEVBRCIgJiYgbV91cmwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkgewotICAg
ICAgICBTdHJpbmcgY29udGVudFR5cGUgPSBnZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUi
KTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gZ2V0UmVxdWVzdEhlYWRlcihIVFRQSGVh
ZGVyczo6Q29udGVudFR5cGUpOwogICAgICAgICBpZiAoY29udGVudFR5cGUuaXNFbXB0eSgpKSB7
CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICAgICAgICAgaWYgKHVzZXNEYXNo
Ym9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCi0gICAgICAgICAgICAgICAgc2V0UmVx
dWVzdEhlYWRlckludGVybmFsKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veC13d3ctZm9y
bS11cmxlbmNvZGVkIik7CisgICAgICAgICAgICAgICAgc2V0UmVxdWVzdEhlYWRlckludGVybmFs
KEF0b21pY1N0cmluZyhIVFRQSGVhZGVyczo6Q29udGVudFR5cGUpLCAiYXBwbGljYXRpb24veC13
d3ctZm9ybS11cmxlbmNvZGVkIik7CiAgICAgICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAg
ICAgICAgICBzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNh
dGlvbi94bWwiKTsKKyAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoQXRv
bWljU3RyaW5nKEhUVFBIZWFkZXJzOjpDb250ZW50VHlwZSksICJhcHBsaWNhdGlvbi94bWwiKTsK
ICAgICAgICAgfQogCiAgICAgICAgIG1fcmVxdWVzdEVudGl0eUJvZHkgPSBGb3JtRGF0YTo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZShib2R5LmNoYXJhY3RlcnMoKSwgYm9keS5sZW5ndGgo
KSwgRW50aXRpZXNGb3JVbmVuY29kYWJsZXMpKTsKQEAgLTY5OCw2ICs2OTgsMTEgQEAgU3RyaW5n
IFhNTEh0dHBSZXF1ZXN0OjpnZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkgY29uc3QKICAgICByZXR1cm4gbV9yZXF1ZXN0SGVhZGVycy5nZXQobmFtZSk7CiB9CiAKK1N0
cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0UmVxdWVzdEhlYWRlcihjb25zdCBjaGFyKiBuYW1lKSBj
b25zdAoreworICAgIHJldHVybiBtX3JlcXVlc3RIZWFkZXJzLmdldChuYW1lKTsKK30KKwogU3Ry
aW5nIFhNTEh0dHBSZXF1ZXN0OjpnZXRBbGxSZXNwb25zZUhlYWRlcnMoRXhjZXB0aW9uQ29kZSYg
ZWMpIGNvbnN0CiB7CiAgICAgaWYgKG1fc3RhdGUgPCBIRUFERVJTX1JFQ0VJVkVEKSB7CkBAIC03
NTcsNyArNzYyLDcgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZU1JTUVUeXBlKCkg
Y29uc3QKICAgICBTdHJpbmcgbWltZVR5cGUgPSBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBl
KG1fbWltZVR5cGVPdmVycmlkZSk7CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkgewogICAg
ICAgICBpZiAobV9yZXNwb25zZS5pc0hUVFAoKSkKLSAgICAgICAgICAgIG1pbWVUeXBlID0gZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiQ29u
dGVudC1UeXBlIikpOworICAgICAgICAgICAgbWltZVR5cGUgPSBleHRyYWN0TUlNRVR5cGVGcm9t
TWVkaWFUeXBlKG1fcmVzcG9uc2UuY29udGVudFR5cGUoKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG1pbWVUeXBlID0gbV9yZXNwb25zZS5taW1lVHlwZSgpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5oCmluZGV4IDY5MDE5YTUuLjlmNjI4MjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmgKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMTI0
LDYgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbml0U2VuZChFeGNlcHRpb25Db2RlJik7
CiAKICAgICBTdHJpbmcgZ2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
IGNvbnN0OworICAgIFN0cmluZyBnZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IGNoYXIqIG5hbWUpIGNv
bnN0OwogICAgIHZvaWQgc2V0UmVxdWVzdEhlYWRlckludGVybmFsKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgYm9vbCBpc1NhZmVSZXF1ZXN0SGVh
ZGVyKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YUGF0
aFZhbHVlLmNwcCBiL1dlYkNvcmUveG1sL1hQYXRoVmFsdWUuY3BwCmluZGV4IDI5ZTIxMWUuLmM5
MTg0MTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hQYXRoVmFsdWUuY3BwCisrKyBiL1dlYkNv
cmUveG1sL1hQYXRoVmFsdWUuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgU3RyaW5nIFZhbHVlOjp0
b1N0cmluZygpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNpZ25iaXQobV9udW1iZXIp
ID8gIi1JbmZpbml0eSIgOiAiSW5maW5pdHkiOwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6
bnVtYmVyKG1fbnVtYmVyKTsKICAgICAgICAgY2FzZSBCb29sZWFuVmFsdWU6Ci0gICAgICAgICAg
ICByZXR1cm4gbV9ib29sID8gInRydWUiIDogImZhbHNlIjsKKyAgICAgICAgICAgIHJldHVybiBt
X2Jvb2wgPyB0cnVlQXRvbSA6IGZhbHNlQXRvbTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMGI1MjM5YS4uMjIy
ZWNmYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTEtMjAgIEplbnMgQWxm
a2UgIDxzbmVqQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9P
UFMhKQorCisgICAgICAgICogc3JjL1dlYk5vdGlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYk5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hEaXNwbGF5RXZlbnQpOgorCisKIDIwMDktMTIt
MDEgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Tm90aWZpY2F0aW9uLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm90aWZpY2F0aW9uLmNw
cAppbmRleCAxZjY5MTZlLi41N2QwZTAzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYk5vdGlmaWNhdGlvbi5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb3RpZmlj
YXRpb24uY3BwCkBAIC05Niw3ICs5Niw3IEBAIFdlYlN0cmluZyBXZWJOb3RpZmljYXRpb246OmJv
ZHkoKSBjb25zdAogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hEaXNwbGF5RXZlbnQo
KQogewotICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKCJkaXNwbGF5Iiwg
ZmFsc2UsIHRydWUpOworICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKEF0
b21pY1N0cmluZygiZGlzcGxheSIpLCBmYWxzZSwgdHJ1ZSk7CiAgICAgbV9wcml2YXRlLT5kaXNw
YXRjaEV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44270</attachid>
            <date>2009-12-03 15:05:43 -0800</date>
            <delta_ts>2010-06-10 19:58:19 -0700</delta_ts>
            <desc>patch 2 (stylistic fixes)</desc>
            <filename>textmate stdin drIZ81.txt</filename>
            <type>text/plain</type>
            <size>99332</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlMjQ3YzE3Li4xYTkyNTRjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMDktMTItMDIgIEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXF1aXJlIGV4cGxpY2l0
IGNvbnN0cnVjdGlvbiBvZiBBdG9taWNTdHJpbmcgZnJvbSBjaGFyKi4KKyAgICAgICAgQWRkIHN0
cmluZyBjb25zdGFudHMgZm9yIEhUVFAgaGVhZGVyIG5hbWVzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAxODcKKworICAgICAgICAqIHd0Zi9IYXNo
TWFwLmg6ICBSZW5hbWVkIHRlbXBsYXRlIHBhcmFtICJUWVBFIiB0byAiQWx0S2V5VHlwZSIgZm9y
IGNsYXJpdHkuCisgICAgICAgIChXVEY6Okhhc2hNYXA6OnJlbW92ZSk6ICBBZGRlZCB0ZW1wbGF0
ZSB2YXJpYW50IHRoYXQgdGFrZXMgYWx0ZXJuYXRlIGtleSB0eXBlLgorCiAyMDA5LTExLTIzICBK
ZXJlbXkgTW9za292aWNoICA8amVyZW15QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoTWFw
LmggYi9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaE1hcC5oCmluZGV4IGVjZTM4MTIuLmE4NWQ3MGMg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoTWFwLmgKKysrIGIvSmF2YVNjcmlw
dENvcmUvd3RmL0hhc2hNYXAuaApAQCAtODMsMTQgKzgzLDE1IEBAIG5hbWVzcGFjZSBXVEYgewog
CiAgICAgICAgIE1hcHBlZFR5cGUgdGFrZShjb25zdCBLZXlUeXBlJik7IC8vIGVmZmljaWVudCBj
b21iaW5hdGlvbiBvZiBnZXQgd2l0aCByZW1vdmUKIAotICAgICAgICAvLyBBbiBhbHRlcm5hdGUg
dmVyc2lvbiBvZiBmaW5kKCkgdGhhdCBmaW5kcyB0aGUgb2JqZWN0IGJ5IGhhc2hpbmcgYW5kIGNv
bXBhcmluZwotICAgICAgICAvLyB3aXRoIHNvbWUgb3RoZXIgdHlwZSwgdG8gYXZvaWQgdGhlIGNv
c3Qgb2YgdHlwZSBjb252ZXJzaW9uLiBIYXNoVHJhbnNsYXRvcgotICAgICAgICAvLyBtdXN0IGhh
dmUgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiBtZW1iZXJzOgorICAgICAgICAvLyBBbHRlcm5hdGUg
dmVyc2lvbnMgb2YgZmluZCgpLCBjb250YWlucygpLCBhbmQgcmVtb3ZlKCkgdGhhdCBmaW5kIHRo
ZSBvYmplY3QKKyAgICAgICAgLy8gYnkgaGFzaGluZyBhbmQgY29tcGFyaW5nIHdpdGggc29tZSBv
dGhlciB0eXBlLCB0byBhdm9pZCB0aGUgY29zdCBvZiB0eXBlIGNvbnZlcnNpb24uCisgICAgICAg
IC8vIEhhc2hUcmFuc2xhdG9yIG11c3QgaGF2ZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uIG1lbWJl
cnM6CiAgICAgICAgIC8vICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVCYpOwogICAgICAg
ICAvLyAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFZhbHVlVHlwZSYsIGNvbnN0IFQmKTsKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+IGl0ZXJh
dG9yIGZpbmQoY29uc3QgVCYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBIYXNoVHJhbnNsYXRvcj4gY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBUJikgY29uc3Q7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPiBib29s
IGNvbnRhaW5zKGNvbnN0IFQmKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+IHZvaWQgcmVtb3ZlKGNvbnN0IFQmKTsKIAogICAgICAg
ICAvLyBBbiBhbHRlcm5hdGUgdmVyc2lvbiBvZiBhZGQoKSB0aGF0IGZpbmRzIHRoZSBvYmplY3Qg
YnkgaGFzaGluZyBhbmQgY29tcGFyaW5nCiAgICAgICAgIC8vIHdpdGggc29tZSBvdGhlciB0eXBl
LCB0byBhdm9pZCB0aGUgY29zdCBvZiB0eXBlIGNvbnZlcnNpb24gaWYgdGhlIG9iamVjdCBpcyBh
bHJlYWR5CkBAIC0yMDQsMzAgKzIwNSwzMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBX
LCB0eXBlbmFtZSBYPgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRZUEUsIHR5cGVuYW1lIEhhc2hU
cmFuc2xhdG9yPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFsdEtleVR5cGUsIHR5cGVuYW1lIEhh
c2hUcmFuc2xhdG9yPgogICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjppdGVyYXRvcgotICAgIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmZpbmQoY29uc3QgVFlQRSYg
dmFsdWUpCisgICAgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZmluZChjb25zdCBBbHRLZXlUeXBl
JiBrZXkpCiAgICAgewotICAgICAgICB0eXBlZGVmIEhhc2hNYXBUcmFuc2xhdG9yQWRhcHRlcjxW
YWx1ZVR5cGUsIFZhbHVlVHJhaXRzLCBUWVBFLCBIYXNoVHJhbnNsYXRvcj4gQWRhcHRlcjsKLSAg
ICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBmaW5kPFRZUEUsIEFkYXB0ZXI+KHZhbHVlKTsK
KyAgICAgICAgdHlwZWRlZiBIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXI8VmFsdWVUeXBlLCBWYWx1
ZVRyYWl0cywgQWx0S2V5VHlwZSwgSGFzaFRyYW5zbGF0b3I+IEFkYXB0ZXI7CisgICAgICAgIHJl
dHVybiBtX2ltcGwudGVtcGxhdGUgZmluZDxBbHRLZXlUeXBlLCBBZGFwdGVyPihrZXkpOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVFlQRSwgdHlwZW5h
bWUgSGFzaFRyYW5zbGF0b3I+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQWx0S2V5VHlwZSwgdHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3I+CiAgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwg
ViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yIAotICAgIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmZp
bmQoY29uc3QgVFlQRSYgdmFsdWUpIGNvbnN0CisgICAgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6
ZmluZChjb25zdCBBbHRLZXlUeXBlJiBrZXkpIGNvbnN0CiAgICAgewotICAgICAgICB0eXBlZGVm
IEhhc2hNYXBUcmFuc2xhdG9yQWRhcHRlcjxWYWx1ZVR5cGUsIFZhbHVlVHJhaXRzLCBUWVBFLCBI
YXNoVHJhbnNsYXRvcj4gQWRhcHRlcjsKLSAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBm
aW5kPFRZUEUsIEFkYXB0ZXI+KHZhbHVlKTsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwVHJhbnNs
YXRvckFkYXB0ZXI8VmFsdWVUeXBlLCBWYWx1ZVRyYWl0cywgQWx0S2V5VHlwZSwgSGFzaFRyYW5z
bGF0b3I+IEFkYXB0ZXI7CisgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmluZDxBbHRL
ZXlUeXBlLCBBZGFwdGVyPihrZXkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVFlQRSwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQWx0S2V5VHlwZSwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CiAgICAgaW5s
aW5lIGJvb2wKLSAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpjb250YWlucyhjb25zdCBUWVBF
JiB2YWx1ZSkgY29uc3QKKyAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpjb250YWlucyhjb25z
dCBBbHRLZXlUeXBlJiBrZXkpIGNvbnN0CiAgICAgewotICAgICAgICB0eXBlZGVmIEhhc2hNYXBU
cmFuc2xhdG9yQWRhcHRlcjxWYWx1ZVR5cGUsIFZhbHVlVHJhaXRzLCBUWVBFLCBIYXNoVHJhbnNs
YXRvcj4gQWRhcHRlcjsKLSAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBjb250YWluczxU
WVBFLCBBZGFwdGVyPih2YWx1ZSk7CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcFRyYW5zbGF0b3JB
ZGFwdGVyPFZhbHVlVHlwZSwgVmFsdWVUcmFpdHMsIEFsdEtleVR5cGUsIEhhc2hUcmFuc2xhdG9y
PiBBZGFwdGVyOworICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGNvbnRhaW5zPEFsdEtl
eVR5cGUsIEFkYXB0ZXI+KGtleSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KQEAgLTI1MSwx
MiArMjUyLDEyIEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVFlQRSwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQWx0S2V5VHlwZSwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CiAg
ICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4K
LSAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjphZGQoY29uc3QgVFlQRSYga2V5LCBjb25zdCBN
YXBwZWRUeXBlJiB2YWx1ZSkKKyAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjphZGQoY29uc3Qg
QWx0S2V5VHlwZSYga2V5LCBjb25zdCBNYXBwZWRUeXBlJiB2YWx1ZSkKICAgICB7Ci0gICAgICAg
IHR5cGVkZWYgSGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyPFZhbHVlVHlwZSwgVmFsdWVUcmFpdHMs
IFRZUEUsIEhhc2hUcmFuc2xhdG9yPiBBZGFwdGVyOwotICAgICAgICByZXR1cm4gbV9pbXBsLnRl
bXBsYXRlIGFkZFBhc3NpbmdIYXNoQ29kZTxUWVBFLCBNYXBwZWRUeXBlLCBBZGFwdGVyPihrZXks
IHZhbHVlKTsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXI8VmFsdWVU
eXBlLCBWYWx1ZVRyYWl0cywgQWx0S2V5VHlwZSwgSGFzaFRyYW5zbGF0b3I+IEFkYXB0ZXI7Cisg
ICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFzc2luZ0hhc2hDb2RlPEFsdEtleVR5
cGUsIE1hcHBlZFR5cGUsIEFkYXB0ZXI+KGtleSwgdmFsdWUpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVu
YW1lIFg+CkBAIC0yOTIsNiArMjkzLDEzIEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcs
IHR5cGVuYW1lIFg+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQWx0S2V5VHlwZSwgdHlwZW5hbWUg
SGFzaFRyYW5zbGF0b3I+CisgICAgaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6
cmVtb3ZlKGNvbnN0IEFsdEtleVR5cGUmIGtleSkKKyAgICB7CisgICAgICAgIHJlbW92ZSh0aGlz
LT5maW5kPEFsdEtleVR5cGUsIEhhc2hUcmFuc2xhdG9yPihrZXkpKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0
eXBlbmFtZSBYPgogICAgIGlubGluZSB2b2lkIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNsZWFy
KCkKICAgICB7CiAgICAgICAgIG1faW1wbC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNTVjYjkyLi4xOTRiMzA3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtOTkw
LDYgKzk5MCwyNiBAQAogICAgICAgICAoV2ViQ29yZTo6U01JTFRpbWVDb250YWluZXI6OnVwZGF0
ZUFuaW1hdGlvbnMpOgogICAgICAgICAqIHN2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIu
aDoKIAorMjAwOS0xMi0wMiAgSmVucyBBbGZrZSAgPHNuZWpAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcXVpcmUgZXhwbGlj
aXQgY29uc3RydWN0aW9uIG9mIEF0b21pY1N0cmluZyBmcm9tIGNoYXIqLgorICAgICAgICBBZGQg
c3RyaW5nIGNvbnN0YW50cyBmb3IgSFRUUCBoZWFkZXIgbmFtZXMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDE4NworCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFk
ZXJNYXA6OnJlbW92ZSk6ICBBZGRlZCB2YXJpYW50IHRoYXQgdGFrZXMgY2hhciouCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmg6ICBBZGRlZCBIVFRQSGVhZGVycyBu
YW1lc3BhY2UgY29udGFpbmluZyBzdHJpbmcgY29uc3RhbnRzLgorICAgICAgICAoV2ViQ29yZTo6
SFRUUEhlYWRlck1hcDo6cmVtb3ZlKTogIEFkZGVkIHZhcmlhbnQgdGhhdCB0YWtlcyBjaGFyKi4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOiAgVXNl
IEhUVFBIZWFkZXJzIGNvbnN0YW50cyBmb3IgaGVhZGVyIG5hbWVzLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOiAgVXNlIEhUVFBIZWFkZXJzIGNvbnN0
YW50cyBmb3IgaGVhZGVyIG5hbWVzLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvQXRvbWljU3Ry
aW5nLmNwcDogIEFkZCBuZXcgY29uc3RhbnRzICJ0cnVlQXRvbSIgYW5kICJmYWxzZUF0b20iLgor
ICAgICAgICAqIHBsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nLmg6ICBBZGQgbmV3IGNvbnN0YW50
cyAidHJ1ZUF0b20iIGFuZCAiZmFsc2VBdG9tIi4KKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY1N0
cmluZzo6QXRvbWljU3RyaW5nKTogIFByZXZlbnQgaW1wbGljaXQgY2hhciogLS0+IEF0b21pY1N0
cmluZyBjb252ZXJzaW9uLgorICAgICAgICAKKyAgICAgICAgLi4ubWFueSBvdGhlciBmaWxlcyBj
aGFuZ2VkIHRvIHVzZSBjb25zdGFudHMgb3IgQXRvbWljU3RyaW5nKCIuLi4iKSBpbnN0ZWFkIG9m
IHN0cmluZyBsaXRlcmFscy4uLgorCiAyMDA5LTEyLTAxICBKZW5zIEFsZmtlICA8c25lakBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXgg
OGI0MDc3Mi4uOWNiMjVmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMzM1LDcgKzMzNSw3IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6aXNQcmVzc2VkKCkgY29uc3QKIAogICAgIC8vIElmIHRoaXMg
aXMgYW4gQVJJQSBidXR0b24sIGNoZWNrIHRoZSBhcmlhLXByZXNzZWQgYXR0cmlidXRlIHJhdGhl
ciB0aGFuIG5vZGUoKS0+YWN0aXZlKCkKICAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBC
dXR0b25Sb2xlKSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUo
YXJpYV9wcmVzc2VkQXR0cikuc3RyaW5nKCksICJ0cnVlIikpCisgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9wcmVzc2VkQXR0cikuc3RyaW5nKCksIHRydWVB
dG9tKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQpAQCAtODE0LDcgKzgxNCw3IEBAIGludCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpp
bnRWYWx1ZSgpIGNvbnN0CiAgICAgLy8gSWYgdGhpcyBpcyBhbiBBUklBIGNoZWNrYm94IG9yIHJh
ZGlvLCBjaGVjayB0aGUgYXJpYS1jaGVja2VkIGF0dHJpYnV0ZSByYXRoZXIgdGhhbiBub2RlKCkt
PmNoZWNrZWQoKQogICAgIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlID0gYXJpYVJvbGVBdHRy
aWJ1dGUoKTsKICAgICBpZiAoYXJpYVJvbGUgPT0gUmFkaW9CdXR0b25Sb2xlIHx8IGFyaWFSb2xl
ID09IENoZWNrQm94Um9sZSkgewotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0
cmlidXRlKGFyaWFfY2hlY2tlZEF0dHIpLnN0cmluZygpLCAidHJ1ZSIpKQorICAgICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGFyaWFfY2hlY2tlZEF0dHIpLnN0cmluZygp
LCB0cnVlQXRvbSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KQEAgLTEzODAsMTMgKzEzODAsMTMgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGl0bGVVSUVsZW1lbnQoKSBjb25zdAogICAgIAog
Ym9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhSXNIaWRkZW4oKSBjb25zdAogewot
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9oaWRkZW5BdHRyKS5z
dHJpbmcoKSwgInRydWUiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRl
KGFyaWFfaGlkZGVuQXR0cikuc3RyaW5nKCksIHRydWVBdG9tKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgCiAgICAgLy8gYXJpYS1oaWRkZW4gaGlkZXMgdGhpcyBvYmplY3QgYW5kIGFueSBj
aGlsZHJlbgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IHBhcmVudE9iamVjdCgp
OwogICAgIHdoaWxlIChvYmplY3QpIHsKLSAgICAgICAgaWYgKG9iamVjdC0+aXNBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0KCkgJiYgZXF1YWxJZ25vcmluZ0Nhc2Uoc3RhdGljX2Nhc3Q8QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdCo+KG9iamVjdCktPmdldEF0dHJpYnV0ZShhcmlhX2hpZGRlbkF0
dHIpLnN0cmluZygpLCAidHJ1ZSIpKQorICAgICAgICBpZiAob2JqZWN0LT5pc0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QoKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShzdGF0aWNfY2FzdDxBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Kj4ob2JqZWN0KS0+Z2V0QXR0cmlidXRlKGFyaWFfaGlkZGVuQXR0
cikuc3RyaW5nKCksIHRydWVBdG9tKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBvYmplY3QgPSBvYmplY3QtPnBhcmVudE9iamVjdCgpOwogICAgIH0KQEAgLTE3MDMsNyArMTcw
Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNWaXNpdGVkKCkgY29uc3QK
ICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNFeHBhbmRlZCgpIGNvbnN0
CiB7Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShhcmlhX2V4cGFuZGVk
QXR0cikuc3RyaW5nKCksICJ0cnVlIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdldEF0
dHJpYnV0ZShhcmlhX2V4cGFuZGVkQXR0cikuc3RyaW5nKCksIHRydWVBdG9tKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgCiAgICAgcmV0dXJuIGZhbHNlOyAgCkBAIC0xNzE5LDcgKzE3MTks
NyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldEVsZW1lbnRBdHRyaWJ1dGVW
YWx1ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAg
RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKLSAgICBlbGVt
ZW50LT5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgKHZhbHVlKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOyAgICAgICAgCisgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICh2
YWx1ZSkgPyB0cnVlQXRvbSA6IGZhbHNlQXRvbSk7ICAgICAgICAKIH0KICAgICAKIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCkBAIC0xNzI3LDcgKzE3MjcsNyBAQCBib29sIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaQogICAgIGlmICghbV9yZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXR0cmli
dXRlTmFtZSkuc3RyaW5nKCksICJ0cnVlIik7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNl
KGdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKS5zdHJpbmcoKSwgdHJ1ZUF0b20pOwogfQogICAg
IAogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRJc0V4cGFuZGVkKGJvb2wgaXNF
eHBhbmRlZCkKQEAgLTE3NDMsNyArMTc0Myw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6c2V0SXNFeHBhbmRlZChib29sIGlzRXhwYW5kZWQpCiAgICAgCiBib29sIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmlzUmVxdWlyZWQoKSBjb25zdAogewotICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9yZXF1aXJlZEF0dHIpLnN0cmluZygpLCAidHJ1
ZSIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9yZXF1aXJl
ZEF0dHIpLnN0cmluZygpLCB0cnVlQXRvbSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAog
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE3NTksMTEgKzE3NTksMTEgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojppc1NlbGVjdGVkKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAogICAgIFN0cmluZyBhcmlhU2VsZWN0ZWQgPSBnZXRBdHRyaWJ1dGUoYXJpYV9zZWxl
Y3RlZEF0dHIpLnN0cmluZygpOwotICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhcmlhU2VsZWN0
ZWQsICJ0cnVlIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFyaWFTZWxlY3RlZCwgdHJ1
ZUF0b20pKQogICAgICAgICByZXR1cm4gdHJ1ZTsgICAgCiAgICAgCiAgICAgLy8gQVJJQSBzYXlz
IHRoYXQgc2VsZWN0aW9uIHNob3VsZCBmb2xsb3cgZm9jdXMgdW5sZXNzIHNwZWNpZmljYWxseSBz
ZXQgb3RoZXJ3aXNlLgotICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UoYXJpYVNlbGVjdGVkLCAi
ZmFsc2UiKSAmJiBpc0ZvY3VzZWQoKSkKKyAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKGFyaWFT
ZWxlY3RlZCwgZmFsc2VBdG9tKSAmJiBpc0ZvY3VzZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgCiAgICAgaWYgKGlzVGFiSXRlbSgpICYmIGlzVGFiSXRlbVNlbGVjdGVkKCkpCkBAIC0x
OTI2LDcgKzE5MjYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzRW5hYmxl
ZCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fcmVuZGVyZXIpOwogICAgIAotICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9kaXNhYmxlZEF0dHIpLnN0cmluZygpLCAi
dHJ1ZSIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9kaXNh
YmxlZEF0dHIpLnN0cmluZygpLCB0cnVlQXRvbSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKICAgICBOb2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwpAQCAtMjcwOSwxMiArMjcw
OSwxMiBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNhblNldEV4cGFuZGVkQXR0
cmlidXRlKCkgY29uc3QKIHsKICAgICAvLyBBbiBvYmplY3QgY2FuIGJlIGV4cGFuZGVkIGlmIGl0
IGFyaWEtZXhwYW5kZWQgaXMgdHJ1ZSBvciBmYWxzZS4KICAgICBTdHJpbmcgYXJpYUV4cGFuZGVk
ID0gZ2V0QXR0cmlidXRlKGFyaWFfZXhwYW5kZWRBdHRyKS5zdHJpbmcoKTsKLSAgICByZXR1cm4g
ZXF1YWxJZ25vcmluZ0Nhc2UoYXJpYUV4cGFuZGVkLCAidHJ1ZSIpIHx8IGVxdWFsSWdub3JpbmdD
YXNlKGFyaWFFeHBhbmRlZCwgImZhbHNlIik7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNl
KGFyaWFFeHBhbmRlZCwgdHJ1ZUF0b20pIHx8IGVxdWFsSWdub3JpbmdDYXNlKGFyaWFFeHBhbmRl
ZCwgZmFsc2VBdG9tKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjYW5T
ZXRWYWx1ZUF0dHJpYnV0ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdl
dEF0dHJpYnV0ZShhcmlhX3JlYWRvbmx5QXR0cikuc3RyaW5nKCksICJ0cnVlIikpCisgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShhcmlhX3JlYWRvbmx5QXR0cikuc3RyaW5n
KCksIHRydWVBdG9tKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzV2ViQXJl
YSgpIHx8IGlzVGV4dENvbnRyb2woKSkgCkBAIC0yODY3LDcgKzI4NjcsNyBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXN0Ym94U2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3Np
YmlsaXR5Q2hpbGRyZQogICAgICAgICAgICAgRWxlbWVudCogY2hpbGRFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KGNoaWxkUmVuZGVyZXItPm5vZGUoKSk7CiAgICAgICAgICAgICBpZiAo
Y2hpbGRFbGVtZW50ICYmIGNoaWxkRWxlbWVudC0+aXNFbGVtZW50Tm9kZSgpKSB7IC8vIGRvIHRo
aXMgY2hlY2sgdG8gZW5zdXJlIHNhZmV0eSBvZiBzdGF0aWNfY2FzdCBhYm92ZQogICAgICAgICAg
ICAgICAgIFN0cmluZyBzZWxlY3RlZEF0dHJTdHJpbmcgPSBjaGlsZEVsZW1lbnQtPmdldEF0dHJp
YnV0ZShhcmlhX3NlbGVjdGVkQXR0cikuc3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKHNlbGVjdGVkQXR0clN0cmluZywgInRydWUiKSkgeworICAgICAgICAg
ICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzZWxlY3RlZEF0dHJTdHJpbmcsIHRydWVBdG9t
KSkgewogICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoaWxkKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGlzTXVsdGlzZWxlY3RhYmxlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRl
eCA4YmE3YjkxLi40NmVkNWFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcApAQCAtNzk3LDcgKzc5Nyw3IEBAIHN0YXRpYyBGcmFtZSogY3JlYXRlV2luZG93KEV4
ZWNTdGF0ZSogZXhlYywgRnJhbWUqIGxleGljYWxGcmFtZSwgRnJhbWUqIGR5bmFtaWNGCiBKU1Zh
bHVlIEpTRE9NV2luZG93OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJn
cykKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRP
ck51bGxDaGVjayhleGVjLCBhcmdzLmF0KDApKTsKLSAgICBBdG9taWNTdHJpbmcgZnJhbWVOYW1l
ID0gYXJncy5hdCgxKS5pc1VuZGVmaW5lZE9yTnVsbCgpID8gIl9ibGFuayIgOiBBdG9taWNTdHJp
bmcoYXJncy5hdCgxKS50b1N0cmluZyhleGVjKSk7CisgICAgQXRvbWljU3RyaW5nIGZyYW1lTmFt
ZSA9IGFyZ3MuYXQoMSkuaXNVbmRlZmluZWRPck51bGwoKSA/IEF0b21pY1N0cmluZygiX2JsYW5r
IikgOiBBdG9taWNTdHJpbmcoYXJncy5hdCgxKS50b1N0cmluZyhleGVjKSk7CiAgICAgV2luZG93
RmVhdHVyZXMgd2luZG93RmVhdHVyZXModmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxD
aGVjayhleGVjLCBhcmdzLmF0KDIpKSk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmZy
YW1lKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRv
d0N1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3Rv
bS5jcHAKaW5kZXggNDZjMzNiOS4uYTg2ZjU0MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNzA0LDcgKzcwNCw3IEBAIENBTExC
QUNLX0ZVTkNfREVDTChET01XaW5kb3dPcGVuKQogICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRv
dy5vcGVuKCkiKTsKIAogICAgIFN0cmluZyB1cmxTdHJpbmcgPSB0b1dlYkNvcmVTdHJpbmdXaXRo
TnVsbE9yVW5kZWZpbmVkQ2hlY2soYXJnc1swXSk7Ci0gICAgQXRvbWljU3RyaW5nIGZyYW1lTmFt
ZSA9IChhcmdzWzFdLT5Jc1VuZGVmaW5lZCgpIHx8IGFyZ3NbMV0tPklzTnVsbCgpKSA/ICJfYmxh
bmsiIDogQXRvbWljU3RyaW5nKHRvV2ViQ29yZVN0cmluZyhhcmdzWzFdKSk7CisgICAgQXRvbWlj
U3RyaW5nIGZyYW1lTmFtZSA9IEF0b21pY1N0cmluZygoYXJnc1sxXS0+SXNVbmRlZmluZWQoKSB8
fCBhcmdzWzFdLT5Jc051bGwoKSkgPyBTdHJpbmcoIl9ibGFuayIpIDogdG9XZWJDb3JlU3RyaW5n
KGFyZ3NbMV0pKTsKIAogICAgIERPTVdpbmRvdyogcGFyZW50ID0gVjhET01XcmFwcGVyOjpjb252
ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgYXJn
cy5Ib2xkZXIoKSk7CiAgICAgRnJhbWUqIGZyYW1lID0gcGFyZW50LT5mcmFtZSgpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAppbmRleCBjNDAyMjI2Li4xOWQwYjY4IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcApAQCAtNDE3NywyMyArNDE3NywyOCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBmYWNlID0gc2V0dGluZ3MtPnN0YW5kYXJkRm9udEZhbWlseSgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVT
ZXJpZjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtpdC1zZXJpZiI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
V2ViS2l0U2VyaWYsICgiLXdlYmtpdC1zZXJpZiIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZhY2UgPSBXZWJLaXRTZXJpZjsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6U2VyaWZGYW1pbHkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NT
VmFsdWVTYW5zU2VyaWY6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gIi13ZWJraXQt
c2Fucy1zZXJpZiI7CisgICAgICAgICAgICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgV2ViS2l0U2Fuc1NlcmlmLCAoIi13ZWJraXQtc2Fucy1zZXJpZiIpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSBXZWJLaXRTYW5zU2VyaWY7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVz
Y3JpcHRpb246OlNhbnNTZXJpZkZhbWlseSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUN1cnNpdmU6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBmYWNlID0gIi13ZWJraXQtY3Vyc2l2ZSI7CisgICAgICAgICAgICAgICAg
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgV2ViS2l0Q3Vyc2l2ZSwg
KCItd2Via2l0LWN1cnNpdmUiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gV2Vi
S2l0Q3Vyc2l2ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRH
ZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6Q3Vyc2l2ZUZhbWlseSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUZh
bnRhc3k6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gIi13ZWJraXQtZmFudGFzeSI7
CisgICAgICAgICAgICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgV2ViS2l0RmFudGFzeSwgKCItd2Via2l0LWZhbnRhc3kiKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBmYWNlID0gV2ViS2l0RmFudGFzeTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6RmFudGFzeUZh
bWlseSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBDU1NWYWx1ZU1vbm9zcGFjZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhY2Ug
PSAiLXdlYmtpdC1tb25vc3BhY2UiOworICAgICAgICAgICAgICAgICAgICAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIFdlYktpdE1vbm9zcGFjZSwgKCItd2Via2l0LW1vbm9z
cGFjZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSBXZWJLaXRNb25vc3BhY2U7
CiAgICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWls
eShGb250RGVzY3JpcHRpb246Ok1vbm9zcGFjZUZhbWlseSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOTIzZWZhMi4uMDk4
NjgzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMzEyMiw3ICszMTIyLDcgQEAgU3RyaW5nIERvY3VtZW50Ojps
YXN0TW9kaWZpZWQoKSBjb25zdAogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmLT5sb2Fk
ZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgIHJldHVybiBsb2FkZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxk
KCJMYXN0LU1vZGlmaWVkIik7CisgICAgcmV0dXJuIGxvYWRlci0+cmVzcG9uc2UoKS5odHRwSGVh
ZGVyRmllbGQoSFRUUEhlYWRlcnM6Okxhc3RNb2RpZmllZCk7CiB9CiAKIHN0YXRpYyBib29sIGlz
VmFsaWROYW1lTm9uQVNDSUkoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0
aCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAgYi9XZWJDb3JlL2Rv
bS9YTUxUb2tlbml6ZXIuY3BwCmluZGV4IDMwZDM5ZTAuLjk2NDMzYzkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAKKysrIGIvV2ViQ29yZS9kb20vWE1MVG9rZW5pemVy
LmNwcApAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgWE1MVG9rZW5pemVyOjpmaW5pc2goKQogc3Rh
dGljIGlubGluZSBSZWZQdHI8RWxlbWVudD4gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhlYWRlcihE
b2N1bWVudCogZG9jLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZXMpIAogewogICAgIFJlZlB0
cjxFbGVtZW50PiByZXBvcnRFbGVtZW50ID0gZG9jLT5jcmVhdGVFbGVtZW50KFF1YWxpZmllZE5h
bWUobnVsbEF0b20sICJwYXJzZXJlcnJvciIsIHhodG1sTmFtZXNwYWNlVVJJKSwgZmFsc2UpOwot
ICAgIHJlcG9ydEVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICJkaXNwbGF5OiBibG9j
azsgd2hpdGUtc3BhY2U6IHByZTsgYm9yZGVyOiAycHggc29saWQgI2M3NzsgcGFkZGluZzogMCAx
ZW0gMCAxZW07IG1hcmdpbjogMWVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRkOyBjb2xvcjogYmxh
Y2siKTsKKyAgICByZXBvcnRFbGVtZW50LT5zZXRDU3RyaW5nQXR0cmlidXRlKHN0eWxlQXR0ciwg
ImRpc3BsYXk6IGJsb2NrOyB3aGl0ZS1zcGFjZTogcHJlOyBib3JkZXI6IDJweCBzb2xpZCAjYzc3
OyBwYWRkaW5nOiAwIDFlbSAwIDFlbTsgbWFyZ2luOiAxZW07IGJhY2tncm91bmQtY29sb3I6ICNm
ZGQ7IGNvbG9yOiBibGFjayIpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IFJlZlB0cjxFbGVtZW50PiBoMyA9IGRvYy0+Y3JlYXRlRWxlbWVudChoM1RhZywgZmFsc2UpOwpA
QCAtMjM4LDcgKzIzOCw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVhI
VE1MUGFyc2VyRXJyb3JIZWFkZXIoRG9jdW1lbnQqIGRvYywgY29uc3QKIAogICAgIFJlZlB0cjxF
bGVtZW50PiBmaXhlZCA9IGRvYy0+Y3JlYXRlRWxlbWVudChkaXZUYWcsIGZhbHNlKTsKICAgICBy
ZXBvcnRFbGVtZW50LT5hcHBlbmRDaGlsZChmaXhlZC5nZXQoKSwgZWMpOwotICAgIGZpeGVkLT5z
ZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiZm9udC1mYW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZTox
MnB4Iik7CisgICAgZml4ZWQtPnNldENTdHJpbmdBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiZm9udC1m
YW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxMnB4Iik7CiAgICAgZml4ZWQtPmFwcGVuZENoaWxk
KGRvYy0+Y3JlYXRlVGV4dE5vZGUoZXJyb3JNZXNzYWdlcyksIGVjKTsKIAogICAgIGgzID0gZG9j
LT5jcmVhdGVFbGVtZW50KGgzVGFnLCBmYWxzZSk7CkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBY
TUxUb2tlbml6ZXI6Omluc2VydEVycm9yTWVzc2FnZUJsb2NrKCkKICAgICBpZiAoZG9jLT50cmFu
c2Zvcm1Tb3VyY2VEb2N1bWVudCgpKSB7CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBwYXIgPSBk
b2MtPmNyZWF0ZUVsZW1lbnQocFRhZywgZmFsc2UpOwogICAgICAgICByZXBvcnRFbGVtZW50LT5h
cHBlbmRDaGlsZChwYXIsIGVjKTsKLSAgICAgICAgcGFyLT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRy
LCAid2hpdGUtc3BhY2U6IG5vcm1hbCIpOworICAgICAgICBwYXItPnNldENTdHJpbmdBdHRyaWJ1
dGUoc3R5bGVBdHRyLCAid2hpdGUtc3BhY2U6IG5vcm1hbCIpOwogICAgICAgICBwYXItPmFwcGVu
ZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoIlRoaXMgZG9jdW1lbnQgd2FzIGNyZWF0ZWQgYXMg
dGhlIHJlc3VsdCBvZiBhbiBYU0wgdHJhbnNmb3JtYXRpb24uIFRoZSBsaW5lIGFuZCBjb2x1bW4g
bnVtYmVycyBnaXZlbiBhcmUgZnJvbSB0aGUgdHJhbnNmb3JtZWQgcmVzdWx0LiIpLCBlYyk7CiAg
ICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXJMaWJ4bWwy
LmNwcCBiL1dlYkNvcmUvZG9tL1hNTFRva2VuaXplckxpYnhtbDIuY3BwCmluZGV4IDlhYTA5NjEu
LjhiY2QzMDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1hNTFRva2VuaXplckxpYnhtbDIuY3Bw
CisrKyBiL1dlYkNvcmUvZG9tL1hNTFRva2VuaXplckxpYnhtbDIuY3BwCkBAIC02NzQsNyArNjc0
LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGhhbmRsZUVsZW1lbnROYW1lc3BhY2VzKEVsZW1lbnQq
IG5ld0VsZW1lbnQsIGNvbnN0IHhtbENoYXIqKgogICAgICAgICBTdHJpbmcgbmFtZXNwYWNlVVJJ
ID0gdG9TdHJpbmcobmFtZXNwYWNlc1tpXS51cmkpOwogICAgICAgICBpZiAobmFtZXNwYWNlc1tp
XS5wcmVmaXgpCiAgICAgICAgICAgICBuYW1lc3BhY2VRTmFtZSA9ICJ4bWxuczoiICsgdG9TdHJp
bmcobmFtZXNwYWNlc1tpXS5wcmVmaXgpOwotICAgICAgICBuZXdFbGVtZW50LT5zZXRBdHRyaWJ1
dGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCBuYW1lc3BhY2VRTmFtZSwgbmFt
ZXNwYWNlVVJJLCBlYyk7CisgICAgICAgIG5ld0VsZW1lbnQtPnNldEF0dHJpYnV0ZU5TKEF0b21p
Y1N0cmluZygiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iKSwgbmFtZXNwYWNlUU5hbWUs
IG5hbWVzcGFjZVVSSSwgZWMpOwogICAgICAgICBpZiAoZWMpIC8vIGV4Y2VwdGlvbiBzZXR0aW5n
IGF0dHJpYnV0ZXMKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcv
RGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKaW5kZXggYzE1NDQyNi4uY2YzMDdhMSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1dl
YkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3
IEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlv
bihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvCiB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6
OmNyZWF0ZURlbGV0aW9uVUkoKQogewogICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gY29udGFp
bmVyID0gbmV3IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgbV90YXJnZXQtPmRvY3VtZW50KCkpOwot
ICAgIGNvbnRhaW5lci0+c2V0QXR0cmlidXRlKGlkQXR0ciwgY29udGFpbmVyRWxlbWVudElkZW50
aWZpZXIpOworICAgIGNvbnRhaW5lci0+c2V0Q1N0cmluZ0F0dHJpYnV0ZShpZEF0dHIsIGNvbnRh
aW5lckVsZW1lbnRJZGVudGlmaWVyKTsKIAogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
KiBzdHlsZSA9IGNvbnRhaW5lci0+Z2V0SW5saW5lU3R5bGVEZWNsKCk7CiAgICAgc3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsIENTU1ZhbHVlTm9uZSk7CkBAIC0y
MDIsNyArMjAyLDcgQEAgdm9pZCBEZWxldGVCdXR0b25Db250cm9sbGVyOjpjcmVhdGVEZWxldGlv
blVJKCkKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCAiMCIpOwogCiAg
ICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBvdXRsaW5lID0gbmV3IEhUTUxEaXZFbGVtZW50KGRp
dlRhZywgbV90YXJnZXQtPmRvY3VtZW50KCkpOwotICAgIG91dGxpbmUtPnNldEF0dHJpYnV0ZShp
ZEF0dHIsIG91dGxpbmVFbGVtZW50SWRlbnRpZmllcik7CisgICAgb3V0bGluZS0+c2V0Q1N0cmlu
Z0F0dHJpYnV0ZShpZEF0dHIsIG91dGxpbmVFbGVtZW50SWRlbnRpZmllcik7CiAKICAgICBjb25z
dCBpbnQgYm9yZGVyV2lkdGggPSA0OwogICAgIGNvbnN0IGludCBib3JkZXJSYWRpdXMgPSA2OwpA
QCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6Y3JlYXRlRGVs
ZXRpb25VSSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxEZWxldGVCdXR0b24+IGJ1
dHRvbiA9IG5ldyBEZWxldGVCdXR0b24obV90YXJnZXQtPmRvY3VtZW50KCkpOwotICAgIGJ1dHRv
bi0+c2V0QXR0cmlidXRlKGlkQXR0ciwgYnV0dG9uRWxlbWVudElkZW50aWZpZXIpOworICAgIGJ1
dHRvbi0+c2V0Q1N0cmluZ0F0dHJpYnV0ZShpZEF0dHIsIGJ1dHRvbkVsZW1lbnRJZGVudGlmaWVy
KTsKIAogICAgIGNvbnN0IGludCBidXR0b25XaWR0aCA9IDMwOwogICAgIGNvbnN0IGludCBidXR0
b25IZWlnaHQgPSAzMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTJjYTk1OC4uYWM4OTEyYSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKQEAgLTEzMTYsNyArMTMxNiw5IEBAIHZvaWQgRWRpdG9yOjpzZXRCYXNlV3JpdGlu
Z0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBzdGF0aWNf
Y2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZm9jdXNlZE5vZGUpLT5pbnB1dFR5cGUoKSA9PSBIVE1M
SW5wdXRFbGVtZW50OjpTRUFSQ0gpKSkpIHsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBOYXR1
cmFsV3JpdGluZ0RpcmVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8SFRNTEVsZW1lbnQqPihmb2N1c2VkTm9kZSktPnNldEF0dHJpYnV0ZShkaXJBdHRyLCBk
aXJlY3Rpb24gPT0gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uID8gImx0ciIgOiAicnRsIik7
CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBsdHIsICgibHRyIikp
OworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcnRsLCAoInJ0bCIp
KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihmb2N1c2VkTm9kZSktPnNldEF0
dHJpYnV0ZShkaXJBdHRyLCBkaXJlY3Rpb24gPT0gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9u
ID8gbHRyIDogcnRsKTsKICAgICAgICAgZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJ
Zk5lZWRlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjMzOSw5ICsyMzQxLDkgQEAg
Ym9vbCBFZGl0b3I6OnNwZWxsQ2hlY2tpbmdFbmFibGVkSW5Gb2N1c2VkTm9kZSgpIGNvbnN0CiAg
ICAgd2hpbGUgKG5vZGUpIHsKICAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSkgewog
ICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6QXRvbWljU3RyaW5nJiB2YWx1ZSA9IHN0YXRpY19j
YXN0PGNvbnN0IEVsZW1lbnQqPihub2RlKS0+Z2V0QXR0cmlidXRlKHNwZWxsY2hlY2tBdHRyKTsK
LSAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgInRydWUiKSkKKyAgICAg
ICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgdHJ1ZUF0b20pKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZh
bHVlLCAiZmFsc2UiKSkKKyAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwg
ZmFsc2VBdG9tKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAg
ICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmlu
ZGV4IDMzNzliM2MuLmU2NmZhYmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTk2
NywxMCArOTY3LDEwIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVTdHJpa2V0aHJvdWdoKEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjCiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVTdHlsZVdpdGhDU1MoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlICE9ICJmYWxzZSIgJiYg
dmFsdWUgIT0gInRydWUiKQorICAgIGlmICh2YWx1ZSAhPSBmYWxzZUF0b20gJiYgdmFsdWUgIT0g
dHJ1ZUF0b20pCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPnNldFNob3VsZFN0eWxlV2l0aENTUyh2YWx1ZSA9PSAidHJ1ZSIgPyB0cnVlIDogZmFsc2Up
OworICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0U2hvdWxkU3R5bGVXaXRoQ1NTKHZhbHVlID09IHRy
dWVBdG9tID8gdHJ1ZSA6IGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRp
dGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKaW5kZXggMTA5ODc5MS4uMjZmMjM3ZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAorKysgYi9X
ZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCkBAIC01Myw3ICs1Myw3IEBA
IHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxCbG9ja3F1b3RlRWxlbWVudD4gY3JlYXRlSW5kZW50Qmxv
Y2txdW90ZUVsZW1lbnQoRG9jdW1lbnQqCiB7CiAgICAgUmVmUHRyPEhUTUxCbG9ja3F1b3RlRWxl
bWVudD4gZWxlbWVudCA9IG5ldyBIVE1MQmxvY2txdW90ZUVsZW1lbnQoYmxvY2txdW90ZVRhZywg
ZG9jdW1lbnQpOwogICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIGluZGVudEJs
b2NrcXVvdGVTdHJpbmcoKSk7Ci0gICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwg
Im1hcmdpbjogMCAwIDAgNDBweDsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiAwcHg7Iik7CisgICAg
ZWxlbWVudC0+c2V0Q1N0cmluZ0F0dHJpYnV0ZShzdHlsZUF0dHIsICJtYXJnaW46IDAgMCAwIDQw
cHg7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMHB4OyIpOwogICAgIHJldHVybiBlbGVtZW50LnJl
bGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cCBiL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXggOGIxYzk4ZC4uMGM5NWNk
OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9XZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC05MTYsOCArOTE2LDggQEAgUGFzc1JlZlB0
cjxFbGVtZW50PiBjcmVhdGVUYWJTcGFuRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIFBhc3NS
ZWZQdHI8Tm9kZT4gdGEKIHsKICAgICAvLyBNYWtlIHRoZSBzcGFuIHRvIGhvbGQgdGhlIHRhYi4K
ICAgICBSZWZQdHI8RWxlbWVudD4gc3BhbkVsZW1lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVu
dChzcGFuVGFnLCBmYWxzZSk7Ci0gICAgc3BhbkVsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0
dHIsIEFwcGxlVGFiU3BhbkNsYXNzKTsKLSAgICBzcGFuRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0
eWxlQXR0ciwgIndoaXRlLXNwYWNlOnByZSIpOworICAgIHNwYW5FbGVtZW50LT5zZXRDU3RyaW5n
QXR0cmlidXRlKGNsYXNzQXR0ciwgQXBwbGVUYWJTcGFuQ2xhc3MpOworICAgIHNwYW5FbGVtZW50
LT5zZXRDU3RyaW5nQXR0cmlidXRlKHN0eWxlQXR0ciwgIndoaXRlLXNwYWNlOnByZSIpOwogCiAg
ICAgLy8gQWRkIHRhYiB0ZXh0IHRvIHRoYXQgc3Bhbi4KICAgICBpZiAoIXRhYlRleHROb2RlKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcAppbmRleCA0NzcxNGU3Li4xY2Y4N2NkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMzIy
LDcgKzMyMiw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFkZE5hbWVzcGFjZUF0dHIoY29uc3QgQXR0
cmlidXRlKiBhdHRyLCBIYXNoTWFwPEF0b21pY1N0cmluZ0ltCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgCi0gICAgUXVhbGlmaWVkTmFtZSB4bWxuc1ByZWZpeEF0dHIoInhtbG5z
IiwgYXR0ci0+bG9jYWxOYW1lKCksIHhtbG5zVVJJKTsKKyAgICBRdWFsaWZpZWROYW1lIHhtbG5z
UHJlZml4QXR0cih4bWxuc0F0dHIubG9jYWxOYW1lKCksIGF0dHItPmxvY2FsTmFtZSgpLCB4bWxu
c1VSSSk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB4bWxuc1ByZWZpeEF0dHIpIHsKICAgICAg
ICAgbmFtZXNwYWNlcy5zZXQoYXR0ci0+bG9jYWxOYW1lKCkuaW1wbCgpLCBhdHRyLT52YWx1ZSgp
LmltcGwoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNTgsNyArMTE1OCw3IEBAIFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChSYW5nZSog
Y29udGV4dCwgY29uc3QgU3RyaW5nCiAgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKICAgICAgICAg
aWYgKHN0cmluZy5lbmRzV2l0aCgiXG4iKSkgewogICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+
IGVsZW1lbnQgPSBjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQpOwotICAgICAgICAgICAgZWxl
bWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUpOyAg
ICAgICAgICAgIAorICAgICAgICAgICAgZWxlbWVudC0+c2V0Q1N0cmluZ0F0dHJpYnV0ZShjbGFz
c0F0dHIsIEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lKTsgICAgICAgICAgICAKICAgICAgICAgICAg
IGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50LnJlbGVhc2UoKSwgZWMpOwogICAgICAgICAg
ICAgQVNTRVJUKGVjID09IDApOwogICAgICAgICB9CkBAIC0xMTkwLDcgKzExOTAsNyBAQCBQYXNz
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoUmFuZ2UqIGNv
bnRleHQsIGNvbnN0IFN0cmluZwogICAgICAgICBpZiAocy5pc0VtcHR5KCkgJiYgaSArIDEgPT0g
bnVtTGluZXMpIHsKICAgICAgICAgICAgIC8vIEZvciBsYXN0IGxpbmUsIHVzZSB0aGUgIm1hZ2lj
IEJSIiByYXRoZXIgdGhhbiBhIFAuCiAgICAgICAgICAgICBlbGVtZW50ID0gY3JlYXRlQnJlYWtF
bGVtZW50KGRvY3VtZW50KTsKLSAgICAgICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFz
c0F0dHIsIEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lKTsgICAgICAgICAgICAKKyAgICAgICAgICAg
IGVsZW1lbnQtPnNldENTdHJpbmdBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBcHBsZUludGVyY2hhbmdl
TmV3bGluZSk7ICAgICAgICAgICAgCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAo
dXNlQ2xvbmVzT2ZFbmNsb3NpbmdCbG9jaykKICAgICAgICAgICAgICAgICBlbGVtZW50ID0gYmxv
Y2stPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAKaW5kZXggNDQ2ZDRlMC4uODI0YTFlZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQu
Y3BwCkBAIC0zMTgsOSArMzE4LDkgQEAgYm9vbCBIVE1MQW5jaG9yRWxlbWVudDo6ZHJhZ2dhYmxl
KCkgY29uc3QKIHsKICAgICAvLyBTaG91bGQgYmUgZHJhZ2dhYmxlIGlmIHdlIGhhdmUgYW4gaHJl
ZiBhdHRyaWJ1dGUuCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGdldEF0dHJpYnV0
ZShkcmFnZ2FibGVBdHRyKTsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJ0cnVl
IikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCB0cnVlQXRvbSkpCiAgICAgICAg
IHJldHVybiB0cnVlOwotICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZhbHNlIikp
CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCBmYWxzZUF0b20pKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShocmVmQXR0cik7CiB9CkBAIC0z
NDUsNyArMzQ1LDggQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0UmVsKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiAgICAgbV9saW5rUmVsYXRpb25zID0gMDsKICAgICBDbGFzc05hbWVzIG5ld0xp
bmtSZWxhdGlvbnModmFsdWUsIHRydWUpOwogICAgIC8vIEZJWE1FOiBBZGQgbGluayByZWxhdGlv
bnMgYXMgdGhleSBhcmUgaW1wbGVtZW50ZWQKLSAgICBpZiAobmV3TGlua1JlbGF0aW9ucy5jb250
YWlucygibm9yZWZlcnJlciIpKQorICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBub3JlZmVycmVyLCAoIm5vcmVmZXJyZXIiKSk7CisgICAgaWYgKG5ld0xpbmtSZWxhdGlvbnMu
Y29udGFpbnMobm9yZWZlcnJlcikpCiAgICAgICAgIG1fbGlua1JlbGF0aW9ucyB8PSBSZWxhdGlv
bk5vUmVmZXJyZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1l
bnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKaW5kZXggYjIwMmNhZS4u
NTM0NTQyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBi
b29sIEhUTUxBcmVhRWxlbWVudDo6bm9IcmVmKCkgY29uc3QKIAogdm9pZCBIVE1MQXJlYUVsZW1l
bnQ6OnNldE5vSHJlZihib29sIG5vSHJlZikKIHsKLSAgICBzZXRBdHRyaWJ1dGUobm9ocmVmQXR0
ciwgbm9IcmVmID8gIiIgOiAwKTsKKyAgICBzZXRBdHRyaWJ1dGUobm9ocmVmQXR0ciwgbm9IcmVm
ID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiBib29sIEhUTUxBcmVhRWxlbWVudDo6c3Vw
cG9ydHNGb2N1cygpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxl
bWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVudC5jcHAKaW5kZXggODY4MTMz
Mi4uMmY0YzU0MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxETGlzdEVsZW1lbnQuY3Bw
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRExpc3RFbGVtZW50LmNwcApAQCAtNDAsNyArNDAsNyBA
QCBib29sIEhUTUxETGlzdEVsZW1lbnQ6OmNvbXBhY3QoKSBjb25zdAogCiB2b2lkIEhUTUxETGlz
dEVsZW1lbnQ6OnNldENvbXBhY3QoYm9vbCBiKQogewotICAgIHNldEF0dHJpYnV0ZShjb21wYWN0
QXR0ciwgYiA/ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRlKGNvbXBhY3RBdHRyLCBiID8gZW1w
dHlBdG9tIDogbnVsbEF0b20pOwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRN
TERhdGFHcmlkQ2VsbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZENlbGxF
bGVtZW50LmNwcAppbmRleCBiYWQ4OTI5Li40MGE0OTA4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTERhdGFHcmlkQ2VsbEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRGF0
YUdyaWRDZWxsRWxlbWVudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBIVE1MRGF0YUdyaWRD
ZWxsRWxlbWVudDo6Zm9jdXNlZCgpIGNvbnN0CiAKIHZvaWQgSFRNTERhdGFHcmlkQ2VsbEVsZW1l
bnQ6OnNldEZvY3VzZWQoYm9vbCBmb2N1c2VkKQogewotICAgIHNldEF0dHJpYnV0ZShmb2N1c2Vk
QXR0ciwgZm9jdXNlZCA/ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRlKGZvY3VzZWRBdHRyLCBm
b2N1c2VkID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiBib29sIEhUTUxEYXRhR3JpZENl
bGxFbGVtZW50OjpjaGVja2VkKCkgY29uc3QKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBIVE1MRGF0
YUdyaWRDZWxsRWxlbWVudDo6Y2hlY2tlZCgpIGNvbnN0CiAKIHZvaWQgSFRNTERhdGFHcmlkQ2Vs
bEVsZW1lbnQ6OnNldENoZWNrZWQoYm9vbCBjaGVja2VkKQogewotICAgIHNldEF0dHJpYnV0ZShj
aGVja2VkQXR0ciwgY2hlY2tlZCA/ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRlKGNoZWNrZWRB
dHRyLCBjaGVja2VkID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiBib29sIEhUTUxEYXRh
R3JpZENlbGxFbGVtZW50OjppbmRldGVybWluYXRlKCkgY29uc3QKQEAgLTc4LDcgKzc4LDcgQEAg
Ym9vbCBIVE1MRGF0YUdyaWRDZWxsRWxlbWVudDo6aW5kZXRlcm1pbmF0ZSgpIGNvbnN0CiAKIHZv
aWQgSFRNTERhdGFHcmlkQ2VsbEVsZW1lbnQ6OnNldEluZGV0ZXJtaW5hdGUoYm9vbCBpbmRldGVy
bWluYXRlKQogewotICAgIHNldEF0dHJpYnV0ZShpbmRldGVybWluYXRlQXR0ciwgaW5kZXRlcm1p
bmF0ZSA/ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRlKGluZGV0ZXJtaW5hdGVBdHRyLCBpbmRl
dGVybWluYXRlID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiBmbG9hdCBIVE1MRGF0YUdy
aWRDZWxsRWxlbWVudDo6cHJvZ3Jlc3MoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUxEYXRhR3JpZENvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZENv
bEVsZW1lbnQuY3BwCmluZGV4IDgzOTg1NDUuLmEyODk4OWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MRGF0YUdyaWRDb2xFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERh
dGFHcmlkQ29sRWxlbWVudC5jcHAKQEAgLTEyOCwxMSArMTI4LDExIEBAIHZvaWQgSFRNTERhdGFH
cmlkQ29sRWxlbWVudDo6c2V0U29ydERpcmVjdGlvbih1bnNpZ25lZCBzaG9ydCBzb3J0RGlyZWN0
aW9uKQogewogICAgIC8vIEZJWE1FOiBDaGVjayBzb3J0YWJsZSBydWxlcy4KICAgICBpZiAoc29y
dERpcmVjdGlvbiA9PSAwKQotICAgICAgICBzZXRBdHRyaWJ1dGUoc29ydGRpcmVjdGlvbkF0dHIs
ICJuYXR1cmFsIik7CisgICAgICAgIHNldENTdHJpbmdBdHRyaWJ1dGUoc29ydGRpcmVjdGlvbkF0
dHIsICJuYXR1cmFsIik7CiAgICAgZWxzZSBpZiAoc29ydERpcmVjdGlvbiA9PSAxKQotICAgICAg
ICBzZXRBdHRyaWJ1dGUoc29ydGRpcmVjdGlvbkF0dHIsICJhc2NlbmRpbmciKTsKKyAgICAgICAg
c2V0Q1N0cmluZ0F0dHJpYnV0ZShzb3J0ZGlyZWN0aW9uQXR0ciwgImFzY2VuZGluZyIpOwogICAg
IGVsc2UgaWYgKHNvcnREaXJlY3Rpb24gPT0gMikKLSAgICAgICAgc2V0QXR0cmlidXRlKHNvcnRk
aXJlY3Rpb25BdHRyLCAiZGVzY2VuZGluZyIpOworICAgICAgICBzZXRDU3RyaW5nQXR0cmlidXRl
KHNvcnRkaXJlY3Rpb25BdHRyLCAiZGVzY2VuZGluZyIpOwogfQogCiBib29sIEhUTUxEYXRhR3Jp
ZENvbEVsZW1lbnQ6OnByaW1hcnkoKSBjb25zdApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgSFRN
TERhdGFHcmlkQ29sRWxlbWVudDo6cHJpbWFyeSgpIGNvbnN0CiAKIHZvaWQgSFRNTERhdGFHcmlk
Q29sRWxlbWVudDo6c2V0UHJpbWFyeShib29sIHByaW1hcnkpCiB7Ci0gICAgc2V0QXR0cmlidXRl
KHByaW1hcnlBdHRyLCBwcmltYXJ5ID8gIiIgOiAwKTsKKyAgICBzZXRBdHRyaWJ1dGUocHJpbWFy
eUF0dHIsIHByaW1hcnkgPyBlbXB0eUF0b20gOiBudWxsQXRvbSk7CiB9CiAKIHZvaWQgSFRNTERh
dGFHcmlkQ29sRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBh
dHRyKSAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUdyaWRFbGVtZW50LmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MRGF0YUdyaWRFbGVtZW50LmNwcAppbmRleCBiYjFmNGE2Li5mZDli
MDFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERhdGFHcmlkRWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZEVsZW1lbnQuY3BwCkBAIC02OSw3ICs2OSw3IEBA
IGJvb2wgSFRNTERhdGFHcmlkRWxlbWVudDo6YXV0b2ZvY3VzKCkgY29uc3QKIAogdm9pZCBIVE1M
RGF0YUdyaWRFbGVtZW50OjpzZXRBdXRvZm9jdXMoYm9vbCBhdXRvZm9jdXMpCiB7Ci0gICAgc2V0
QXR0cmlidXRlKGF1dG9mb2N1c0F0dHIsIGF1dG9mb2N1cyA/ICIiIDogMCk7CisgICAgc2V0QXR0
cmlidXRlKGF1dG9mb2N1c0F0dHIsIGF1dG9mb2N1cyA/IGVtcHR5QXRvbSA6IG51bGxBdG9tKTsK
IH0KIAogYm9vbCBIVE1MRGF0YUdyaWRFbGVtZW50OjpkaXNhYmxlZCgpIGNvbnN0CkBAIC03OSw3
ICs3OSw3IEBAIGJvb2wgSFRNTERhdGFHcmlkRWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAogCiB2
b2lkIEhUTUxEYXRhR3JpZEVsZW1lbnQ6OnNldERpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiB7Ci0g
ICAgc2V0QXR0cmlidXRlKGRpc2FibGVkQXR0ciwgZGlzYWJsZWQgPyAiIiA6IDApOworICAgIHNl
dEF0dHJpYnV0ZShkaXNhYmxlZEF0dHIsIGRpc2FibGVkID8gZW1wdHlBdG9tIDogbnVsbEF0b20p
OwogfQogCiBib29sIEhUTUxEYXRhR3JpZEVsZW1lbnQ6Om11bHRpcGxlKCkgY29uc3QKQEAgLTg5
LDcgKzg5LDcgQEAgYm9vbCBIVE1MRGF0YUdyaWRFbGVtZW50OjptdWx0aXBsZSgpIGNvbnN0CiAK
IHZvaWQgSFRNTERhdGFHcmlkRWxlbWVudDo6c2V0TXVsdGlwbGUoYm9vbCBtdWx0aXBsZSkKIHsK
LSAgICBzZXRBdHRyaWJ1dGUobXVsdGlwbGVBdHRyLCBtdWx0aXBsZSA/ICIiIDogMCk7CisgICAg
c2V0QXR0cmlidXRlKG11bHRpcGxlQXR0ciwgbXVsdGlwbGUgPyBlbXB0eUF0b20gOiBudWxsQXRv
bSk7CiB9CiAKIHZvaWQgSFRNTERhdGFHcmlkRWxlbWVudDo6c2V0RGF0YVNvdXJjZShQYXNzUmVm
UHRyPERhdGFHcmlkRGF0YVNvdXJjZT4gZHMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRN
TERhdGFHcmlkUm93RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTERhdGFHcmlkUm93RWxl
bWVudC5jcHAKaW5kZXggYzk1OGNiZC4uMDYzNjA4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0hUTUxEYXRhR3JpZFJvd0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUdy
aWRSb3dFbGVtZW50LmNwcApAQCAtNTUsNyArNTUsNyBAQCBib29sIEhUTUxEYXRhR3JpZFJvd0Vs
ZW1lbnQ6OnNlbGVjdGVkKCkgY29uc3QKIAogdm9pZCBIVE1MRGF0YUdyaWRSb3dFbGVtZW50Ojpz
ZXRTZWxlY3RlZChib29sIHNlbGVjdGVkKQogewotICAgIHNldEF0dHJpYnV0ZShzZWxlY3RlZEF0
dHIsIHNlbGVjdGVkID8gIiIgOiAwKTsKKyAgICBzZXRBdHRyaWJ1dGUoc2VsZWN0ZWRBdHRyLCBz
ZWxlY3RlZCA/IGVtcHR5QXRvbSA6IG51bGxBdG9tKTsKIH0KIAogYm9vbCBIVE1MRGF0YUdyaWRS
b3dFbGVtZW50Ojpmb2N1c2VkKCkgY29uc3QKQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBIVE1MRGF0
YUdyaWRSb3dFbGVtZW50Ojpmb2N1c2VkKCkgY29uc3QKIAogdm9pZCBIVE1MRGF0YUdyaWRSb3dF
bGVtZW50OjpzZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkKIHsKLSAgICBzZXRBdHRyaWJ1dGUoZm9j
dXNlZEF0dHIsIGZvY3VzZWQgPyAiIiA6IDApOworICAgIHNldEF0dHJpYnV0ZShmb2N1c2VkQXR0
ciwgZm9jdXNlZCA/IGVtcHR5QXRvbSA6IG51bGxBdG9tKTsKIH0KIAogYm9vbCBIVE1MRGF0YUdy
aWRSb3dFbGVtZW50OjpleHBhbmRlZCgpIGNvbnN0CkBAIC03NSw3ICs3NSw3IEBAIGJvb2wgSFRN
TERhdGFHcmlkUm93RWxlbWVudDo6ZXhwYW5kZWQoKSBjb25zdAogCiB2b2lkIEhUTUxEYXRhR3Jp
ZFJvd0VsZW1lbnQ6OnNldEV4cGFuZGVkKGJvb2wgZXhwYW5kZWQpCiB7Ci0gICAgc2V0QXR0cmli
dXRlKGV4cGFuZGVkQXR0ciwgZXhwYW5kZWQgPyAiIiA6IDApOworICAgIHNldEF0dHJpYnV0ZShl
eHBhbmRlZEF0dHIsIGV4cGFuZGVkID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTERpcmVjdG9y
eUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxEaXJlY3RvcnlFbGVtZW50LmNwcAppbmRl
eCAxNzM5NjljLi44ODRjNjRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERpcmVjdG9y
eUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRGlyZWN0b3J5RWxlbWVudC5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAgYm9vbCBIVE1MRGlyZWN0b3J5RWxlbWVudDo6Y29tcGFjdCgpIGNv
bnN0CiAKIHZvaWQgSFRNTERpcmVjdG9yeUVsZW1lbnQ6OnNldENvbXBhY3QoYm9vbCBiKQogewot
ICAgIHNldEF0dHJpYnV0ZShjb21wYWN0QXR0ciwgYiA/ICIiIDogMCk7CisgICAgc2V0QXR0cmli
dXRlKGNvbXBhY3RBdHRyLCBiID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAppbmRleCBkZjNjYjdkLi4wZGE0MDQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAg
LTE0MSwxMCArMTQxLDEwIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NT
UHJvcGVydHlVbmljb2RlQmlkaSwgaGFzTG9jYWxOYW1lKGJkb1RhZykgPyBDU1NWYWx1ZUJpZGlP
dmVycmlkZSA6IENTU1ZhbHVlRW1iZWQpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IGRyYWdnYWJsZUF0dHIpIHsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0
dHItPnZhbHVlKCk7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgInRydWUi
KSkgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsIHRydWVBdG9tKSkgewog
ICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJh
ZywgQ1NTVmFsdWVFbGVtZW50KTsKICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENT
U1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgfSBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZhbHNlIikpCisgICAgICAgIH0gZWxzZSBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsIGZhbHNlQXRvbSkpCiAgICAgICAgICAgICBhZGRD
U1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBDU1NWYWx1ZU5vbmUp
OwogICAgIH0KIC8vIHN0YW5kYXJkIGV2ZW50cwpAQCAtNjQ3LDEzICs2NDcsMTMgQEAgU3RyaW5n
IEhUTUxFbGVtZW50Ojpjb250ZW50RWRpdGFibGUoKSBjb25zdAogICAgIGRvY3VtZW50KCktPnVw
ZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAogICAgIGlmICghcmVuZGVyZXIoKSkKLSAgICAgICAgcmV0
dXJuICJmYWxzZSI7CisgICAgICAgIHJldHVybiBmYWxzZUF0b207CiAgICAgCiAgICAgc3dpdGNo
IChyZW5kZXJlcigpLT5zdHlsZSgpLT51c2VyTW9kaWZ5KCkpIHsKICAgICAgICAgY2FzZSBSRUFE
X1dSSVRFOgotICAgICAgICAgICAgcmV0dXJuICJ0cnVlIjsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlQXRvbTsKICAgICAgICAgY2FzZSBSRUFEX09OTFk6Ci0gICAgICAgICAgICByZXR1cm4gImZh
bHNlIjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZUF0b207CiAgICAgICAgIGNhc2UgUkVBRF9X
UklURV9QTEFJTlRFWFRfT05MWToKICAgICAgICAgICAgIHJldHVybiAicGxhaW50ZXh0LW9ubHki
OwogICAgICAgICBkZWZhdWx0OgpAQCAtNjY0LDEyICs2NjQsMTIgQEAgU3RyaW5nIEhUTUxFbGVt
ZW50Ojpjb250ZW50RWRpdGFibGUoKSBjb25zdAogdm9pZCBIVE1MRWxlbWVudDo6c2V0Q29udGVu
dEVkaXRhYmxlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikgCiB7CiAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBlbmFibGVkID0gYXR0ci0+dmFsdWUoKTsKLSAgICBpZiAoZW5hYmxlZC5pc0VtcHR5KCkg
fHwgZXF1YWxJZ25vcmluZ0Nhc2UoZW5hYmxlZCwgInRydWUiKSkgeworICAgIGlmIChlbmFibGVk
LmlzRW1wdHkoKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShlbmFibGVkLCB0cnVlQXRvbSkpIHsKICAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBD
U1NWYWx1ZVJlYWRXcml0ZSk7CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3Bl
cnR5V29yZFdyYXAsIENTU1ZhbHVlQnJlYWtXb3JkKTsKICAgICAgICAgYWRkQ1NTUHJvcGVydHko
YXR0ciwgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgQ1NTVmFsdWVTcGFjZSk7CiAgICAgICAg
IGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCBDU1NWYWx1
ZUFmdGVyV2hpdGVTcGFjZSk7Ci0gICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlbmFi
bGVkLCAiZmFsc2UiKSkgeworICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZW5hYmxl
ZCwgZmFsc2VBdG9tKSkgewogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0
eVdlYmtpdFVzZXJNb2RpZnksIENTU1ZhbHVlUmVhZE9ubHkpOwogICAgICAgICBhdHRyLT5kZWNs
KCktPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5V29yZFdyYXAsIGZhbHNlKTsKICAgICAgICAg
YXR0ci0+ZGVjbCgpLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBm
YWxzZSk7CkBAIC02OTQsMTcgKzY5NCwxNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRDb250ZW50
RWRpdGFibGUoY29uc3QgU3RyaW5nICZlbmFibGVkKQogICAgICAgICByZW1vdmVBdHRyaWJ1dGUo
Y29udGVudGVkaXRhYmxlQXR0ciwgZWMpOwogICAgIH0KICAgICBlbHNlCi0gICAgICAgIHNldEF0
dHJpYnV0ZShjb250ZW50ZWRpdGFibGVBdHRyLCBlbmFibGVkLmlzRW1wdHkoKSA/ICJ0cnVlIiA6
IGVuYWJsZWQpOworICAgICAgICBzZXRBdHRyaWJ1dGUoY29udGVudGVkaXRhYmxlQXR0ciwgZW5h
YmxlZC5pc0VtcHR5KCkgPyB0cnVlQXRvbSA6IEF0b21pY1N0cmluZyhlbmFibGVkKSk7CiB9CiAK
IGJvb2wgSFRNTEVsZW1lbnQ6OmRyYWdnYWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGVxdWFs
SWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShkcmFnZ2FibGVBdHRyKSwgInRydWUiKTsKKyAgICBy
ZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGRyYWdnYWJsZUF0dHIpLCB0cnVl
QXRvbSk7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldERyYWdnYWJsZShib29sIHZhbHVlKQog
ewotICAgIHNldEF0dHJpYnV0ZShkcmFnZ2FibGVBdHRyLCB2YWx1ZSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgIHNldEF0dHJpYnV0ZShkcmFnZ2FibGVBdHRyLCB2YWx1ZSA/IHRydWVBdG9tIDog
ZmFsc2VBdG9tKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudDo6Y2xpY2soKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxFbWJl
ZEVsZW1lbnQuY3BwCmluZGV4IDgxYjg4YTQuLjhmNTdkYjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgIG1faW1h
Z2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoaWRkZW5BdHRyKSB7Ci0gICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS5zdHJpbmcoKSwgInllcyIpIHx8IGVxdWFs
SWdub3JpbmdDYXNlKHZhbHVlLnN0cmluZygpLCAidHJ1ZSIpKSB7CisgICAgICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZSh2YWx1ZS5zdHJpbmcoKSwgInllcyIpIHx8IGVxdWFsSWdub3JpbmdDYXNl
KHZhbHVlLnN0cmluZygpLCB0cnVlQXRvbSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBOb3Qg
ZHluYW1pYywgc2luY2Ugd2UgYWRkIHRoaXMgYnV0IGRvbid0IHJlbW92ZSBpdCwgYnV0IGl0IG1h
eSBiZSBPSyBmb3Igbm93CiAgICAgICAgICAgICAvLyB0aGF0IHRoaXMgcmFyZWx5LXVzZWQgYXR0
cmlidXRlIHdvbid0IHdvcmsgcHJvcGVybHkgaWYgeW91IHJlbW92ZSBpdC4KICAgICAgICAgICAg
IGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eVdpZHRoLCAiMCIpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDI1MzFjNDguLjljMDZiMzggMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpmb3JtTm9WYWxpZGF0ZSgpIGNvbnN0CiAKIHZvaWQgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6c2V0Rm9ybU5vVmFsaWRhdGUoYm9vbCBmb3Jtbm92YWxpZGF0
ZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGUoZm9ybW5vdmFsaWRhdGVBdHRyLCBmb3Jtbm92YWxpZGF0
ZSA/ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRlKGZvcm1ub3ZhbGlkYXRlQXR0ciwgZm9ybW5v
dmFsaWRhdGUgPyBlbXB0eUF0b20gOiBudWxsQXRvbSk7CiB9CiAKIFZhbGlkaXR5U3RhdGUqIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnZhbGlkaXR5KCkKQEAgLTIwNSwxMiArMjA1LDEyIEBAIGJv
b2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAogCiB2b2lkIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OnNldERpc2FibGVkKGJvb2wgYikKIHsKLSAgICBzZXRBdHRyaWJ1
dGUoZGlzYWJsZWRBdHRyLCBiID8gIiIgOiAwKTsKKyAgICBzZXRBdHRyaWJ1dGUoZGlzYWJsZWRB
dHRyLCBiID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OnNldFJlYWRPbmx5KGJvb2wgYikKIHsKLSAgICBzZXRBdHRyaWJ1dGUocmVhZG9u
bHlBdHRyLCBiID8gIiIgOiAwKTsKKyAgICBzZXRBdHRyaWJ1dGUocmVhZG9ubHlBdHRyLCBiID8g
ZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OmF1dG9mb2N1cygpIGNvbnN0CkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjphdXRvZm9jdXMoKSBjb25zdAogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OnNldEF1dG9mb2N1cyhib29sIGIpCiB7Ci0gICAgc2V0QXR0cmlidXRlKGF1dG9mb2N1c0F0
dHIsIGIgPyAiYXV0b2ZvY3VzIiA6IDApOworICAgIHNldEF0dHJpYnV0ZShhdXRvZm9jdXNBdHRy
LCBiID8gYXV0b2ZvY3VzQXR0ci5sb2NhbE5hbWUoKSA6IG51bGxBdG9tKTsKIH0KIAogYm9vbCBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZCgpIGNvbnN0CkBAIC0yMzAsNyArMjMwLDcg
QEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZCgpIGNvbnN0CiAKIHZvaWQg
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0UmVxdWlyZWQoYm9vbCBiKQogewotICAgIHNldEF0
dHJpYnV0ZShyZXF1aXJlZEF0dHIsIGIgPyAicmVxdWlyZWQiIDogMCk7CisgICAgc2V0QXR0cmli
dXRlKHJlcXVpcmVkQXR0ciwgYiA/IHJlcXVpcmVkQXR0ci5sb2NhbE5hbWUoKSA6IG51bGxBdG9t
KTsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNo
YW5nZSBjaGFuZ2UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNw
cCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IGFjZTBmMmYuLmI0MGU3
NmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC01NDUsNyArNTQ1LDcgQEAgYm9vbCBI
VE1MRm9ybUVsZW1lbnQ6Om5vVmFsaWRhdGUoKSBjb25zdAogCiB2b2lkIEhUTUxGb3JtRWxlbWVu
dDo6c2V0Tm9WYWxpZGF0ZShib29sIG5vdmFsaWRhdGUpCiB7Ci0gICAgc2V0QXR0cmlidXRlKG5v
dmFsaWRhdGVBdHRyLCBub3ZhbGlkYXRlID8gIiIgOiAwKTsKKyAgICBzZXRBdHRyaWJ1dGUobm92
YWxpZGF0ZUF0dHIsIG5vdmFsaWRhdGUgPyBlbXB0eUF0b20gOiBudWxsQXRvbSk7CiB9CiAKIHZv
aWQgSFRNTEZvcm1FbGVtZW50OjpzZXRBY2NlcHRDaGFyc2V0KGNvbnN0IFN0cmluZyAmdmFsdWUp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAgYi9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKaW5kZXggYjQ1NmFjMy4uMTlhYWQ2YiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVFbGVtZW50LmNwcApAQCAtOTksNyArOTksNyBAQCB2b2lkIEhUTUxGcmFtZUVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIAogdm9p
ZCBIVE1MRnJhbWVFbGVtZW50OjpzZXROb1Jlc2l6ZShib29sIG5vUmVzaXplKQogewotICAgIHNl
dEF0dHJpYnV0ZShub3Jlc2l6ZUF0dHIsIG5vUmVzaXplID8gIiIgOiAwKTsKKyAgICBzZXRBdHRy
aWJ1dGUobm9yZXNpemVBdHRyLCBub1Jlc2l6ZSA/IGVtcHR5QXRvbSA6IG51bGxBdG9tKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxI
UkVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwCmluZGV4IDY4NThm
NTYuLjkxZjAzOGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBi
b29sIEhUTUxIUkVsZW1lbnQ6Om5vU2hhZGUoKSBjb25zdAogCiB2b2lkIEhUTUxIUkVsZW1lbnQ6
OnNldE5vU2hhZGUoYm9vbCBub1NoYWRlKQogewotICAgIHNldEF0dHJpYnV0ZShub3NoYWRlQXR0
ciwgbm9TaGFkZSA/ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRlKG5vc2hhZGVBdHRyLCBub1No
YWRlID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiBTdHJpbmcgSFRNTEhSRWxlbWVudDo6
c2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHAgYi9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggZDM1MzA3My4uMDcx
MDE0YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtOTEsNyArOTEsOCBAQCB2b2lk
IEhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSog
YXR0cikKICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRy
LT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBib3JkZXJBdHRyKSB7CiAgICAg
ICAgIC8vIGJvcmRlcj0ibm9ib3JkZXIiIC0+IGJvcmRlcj0iMCIKLSAgICAgICAgYWRkQ1NTTGVu
Z3RoKGF0dHIsIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIGF0dHItPnZhbHVlKCkudG9JbnQoKSA/
IGF0dHItPnZhbHVlKCkgOiAiMCIpOworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgemVyb0F0b20sICgiMCIpKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENT
U1Byb3BlcnR5Qm9yZGVyV2lkdGgsIGF0dHItPnZhbHVlKCkudG9JbnQoKSA/IGF0dHItPnZhbHVl
KCkgOiB6ZXJvQXRvbSk7CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5
Qm9yZGVyVG9wU3R5bGUsIENTU1ZhbHVlU29saWQpOwogICAgICAgICBhZGRDU1NQcm9wZXJ0eShh
dHRyLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1ZhbHVlU29saWQpOwogICAgICAg
ICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NW
YWx1ZVNvbGlkKTsKQEAgLTI4OSw3ICsyOTAsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxJ
bWFnZUVsZW1lbnQ6OmFsdCgpIGNvbnN0CiBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmRyYWdnYWJs
ZSgpIGNvbnN0CiB7CiAgICAgLy8gSW1hZ2UgZWxlbWVudHMgYXJlIGRyYWdnYWJsZSBieSBkZWZh
dWx0LgotICAgIHJldHVybiAhZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGRyYWdnYWJs
ZUF0dHIpLCAiZmFsc2UiKTsKKyAgICByZXR1cm4gIWVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJp
YnV0ZShkcmFnZ2FibGVBdHRyKSwgZmFsc2VBdG9tKTsKIH0KIAogdm9pZCBIVE1MSW1hZ2VFbGVt
ZW50OjpzZXRIZWlnaHQoaW50IHZhbHVlKQpAQCAtMzE1LDcgKzMxNiw3IEBAIGJvb2wgSFRNTElt
YWdlRWxlbWVudDo6aXNNYXAoKSBjb25zdAogCiB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnNldElz
TWFwKGJvb2wgaXNNYXApCiB7Ci0gICAgc2V0QXR0cmlidXRlKGlzbWFwQXR0ciwgaXNNYXAgPyAi
IiA6IDApOworICAgIHNldEF0dHJpYnV0ZShpc21hcEF0dHIsIGlzTWFwID8gZW1wdHlBdG9tIDog
bnVsbEF0b20pOwogfQogCiBLVVJMIEhUTUxJbWFnZUVsZW1lbnQ6OmxvbmdEZXNjKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAxNTc4YzZlLi5lMzM2ZDQzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC02MDEsMzAgKzYwMSwzMCBAQCBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nKiBjcmVhdGVGb3JtQ29udHJvbFR5cGVzKCkKICAgICBBdG9taWNTdHJpbmcq
IHR5cGVzID0gbmV3IEF0b21pY1N0cmluZ1tIVE1MSW5wdXRFbGVtZW50OjpudW1iZXJPZlR5cGVz
XTsKICAgICAvLyBUaGUgdmFsdWVzIG11c3QgYmUgbG93ZXJjYXNlZCBiZWNhdXNlIHRoZXkgd2ls
bCBiZSB0aGUgcmV0dXJuIHZhbHVlcyBvZgogICAgIC8vICBpbnB1dC50eXBlIGFuZCBpdCBtdXN0
IGJlIGxvd2VyY2FzZSBhY2NvcmRpbmcgdG8gRE9NIExldmVsIDIuCi0gICAgdHlwZXNbSFRNTElu
cHV0RWxlbWVudDo6QlVUVE9OXSA9ICJidXR0b24iOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1l
bnQ6OkNIRUNLQk9YXSA9ICJjaGVja2JveCI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6
Q09MT1JdID0gImNvbG9yIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpEQVRFXSA9ICJk
YXRlIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpEQVRFVElNRV0gPSAiZGF0ZXRpbWUi
OwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OkRBVEVUSU1FTE9DQUxdID0gImRhdGV0aW1l
LWxvY2FsIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpFTUFJTF0gPSAiZW1haWwiOwot
ICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OkZJTEVdID0gImZpbGUiOwotICAgIHR5cGVzW0hU
TUxJbnB1dEVsZW1lbnQ6OkhJRERFTl0gPSAiaGlkZGVuIjsKLSAgICB0eXBlc1tIVE1MSW5wdXRF
bGVtZW50OjpJTUFHRV0gPSAiaW1hZ2UiOworICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OkJV
VFRPTl0gPSBBdG9taWNTdHJpbmcoImJ1dHRvbiIpOworICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1l
bnQ6OkNIRUNLQk9YXSA9IEF0b21pY1N0cmluZygiY2hlY2tib3giKTsKKyAgICB0eXBlc1tIVE1M
SW5wdXRFbGVtZW50OjpDT0xPUl0gPSBBdG9taWNTdHJpbmcoImNvbG9yIik7CisgICAgdHlwZXNb
SFRNTElucHV0RWxlbWVudDo6REFURV0gPSBBdG9taWNTdHJpbmcoImRhdGUiKTsKKyAgICB0eXBl
c1tIVE1MSW5wdXRFbGVtZW50OjpEQVRFVElNRV0gPSBBdG9taWNTdHJpbmcoImRhdGV0aW1lIik7
CisgICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6REFURVRJTUVMT0NBTF0gPSBBdG9taWNTdHJp
bmcoImRhdGV0aW1lLWxvY2FsIik7CisgICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6RU1BSUxd
ID0gQXRvbWljU3RyaW5nKCJlbWFpbCIpOworICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OkZJ
TEVdID0gQXRvbWljU3RyaW5nKCJmaWxlIik7CisgICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6
SElEREVOXSA9IEF0b21pY1N0cmluZygiaGlkZGVuIik7CisgICAgdHlwZXNbSFRNTElucHV0RWxl
bWVudDo6SU1BR0VdID0gQXRvbWljU3RyaW5nKCJpbWFnZSIpOwogICAgIHR5cGVzW0hUTUxJbnB1
dEVsZW1lbnQ6OklTSU5ERVhdID0gZW1wdHlBdG9tOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1l
bnQ6Ok1PTlRIXSA9ICJtb250aCI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6TlVNQkVS
XSA9ICJudW1iZXIiOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OlBBU1NXT1JEXSA9ICJw
YXNzd29yZCI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6UkFESU9dID0gInJhZGlvIjsK
LSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpSQU5HRV0gPSAicmFuZ2UiOwotICAgIHR5cGVz
W0hUTUxJbnB1dEVsZW1lbnQ6OlJFU0VUXSA9ICJyZXNldCI7Ci0gICAgdHlwZXNbSFRNTElucHV0
RWxlbWVudDo6U0VBUkNIXSA9ICJzZWFyY2giOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6
OlNVQk1JVF0gPSAic3VibWl0IjsKLSAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpURUxFUEhP
TkVdID0gInRlbCI7Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6VEVYVF0gPSAidGV4dCI7
Ci0gICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6VElNRV0gPSAidGltZSI7Ci0gICAgdHlwZXNb
SFRNTElucHV0RWxlbWVudDo6VVJMXSA9ICJ1cmwiOwotICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1l
bnQ6OldFRUtdID0gIndlZWsiOworICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6Ok1PTlRIXSA9
IEF0b21pY1N0cmluZygibW9udGgiKTsKKyAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpOVU1C
RVJdID0gQXRvbWljU3RyaW5nKCJudW1iZXIiKTsKKyAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50
OjpQQVNTV09SRF0gPSBBdG9taWNTdHJpbmcoInBhc3N3b3JkIik7CisgICAgdHlwZXNbSFRNTElu
cHV0RWxlbWVudDo6UkFESU9dID0gQXRvbWljU3RyaW5nKCJyYWRpbyIpOworICAgIHR5cGVzW0hU
TUxJbnB1dEVsZW1lbnQ6OlJBTkdFXSA9IEF0b21pY1N0cmluZygicmFuZ2UiKTsKKyAgICB0eXBl
c1tIVE1MSW5wdXRFbGVtZW50OjpSRVNFVF0gPSBBdG9taWNTdHJpbmcoInJlc2V0Iik7CisgICAg
dHlwZXNbSFRNTElucHV0RWxlbWVudDo6U0VBUkNIXSA9IEF0b21pY1N0cmluZygic2VhcmNoIik7
CisgICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6U1VCTUlUXSA9IEF0b21pY1N0cmluZygic3Vi
bWl0Iik7CisgICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6VEVMRVBIT05FXSA9IEF0b21pY1N0
cmluZygidGVsIik7CisgICAgdHlwZXNbSFRNTElucHV0RWxlbWVudDo6VEVYVF0gPSBBdG9taWNT
dHJpbmcoInRleHQiKTsKKyAgICB0eXBlc1tIVE1MSW5wdXRFbGVtZW50OjpUSU1FXSA9IEF0b21p
Y1N0cmluZygidGltZSIpOworICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OlVSTF0gPSBBdG9t
aWNTdHJpbmcoInVybCIpOworICAgIHR5cGVzW0hUTUxJbnB1dEVsZW1lbnQ6OldFRUtdID0gQXRv
bWljU3RyaW5nKCJ3ZWVrIik7CiAgICAgcmV0dXJuIHR5cGVzOwogfQogCkBAIC0xNzY0LDcgKzE3
NjQsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRDaGVja2VkKCkgY29uc3QKIAog
dm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXREZWZhdWx0Q2hlY2tlZChib29sIGRlZmF1bHRDaGVj
a2VkKQogewotICAgIHNldEF0dHJpYnV0ZShjaGVja2VkQXR0ciwgZGVmYXVsdENoZWNrZWQgPyAi
IiA6IDApOworICAgIHNldEF0dHJpYnV0ZShjaGVja2VkQXR0ciwgZGVmYXVsdENoZWNrZWQgPyBl
bXB0eUF0b20gOiBudWxsQXRvbSk7CiB9CiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0RGVm
YXVsdE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQpAQCAtMTgzMiw3ICsxODMyLDcgQEAg
Ym9vbCBIVE1MSW5wdXRFbGVtZW50OjptdWx0aXBsZSgpIGNvbnN0CiAKIHZvaWQgSFRNTElucHV0
RWxlbWVudDo6c2V0TXVsdGlwbGUoYm9vbCBtdWx0aXBsZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGUo
bXVsdGlwbGVBdHRyLCBtdWx0aXBsZSA/ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRlKG11bHRp
cGxlQXR0ciwgbXVsdGlwbGUgPyBlbXB0eUF0b20gOiBudWxsQXRvbSk7CiB9CiAgICAgCiB2b2lk
IEhUTUxJbnB1dEVsZW1lbnQ6OnNldFNpemUodW5zaWduZWQgX3NpemUpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwCmluZGV4IDBhOGZkZTMuLmU4NjAyYzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgYm9vbCBIVE1MTGlua0VsZW1lbnQ6OmRpc2FibGVkKCkg
Y29uc3QKIAogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldERpc2FibGVkKGJvb2wgZGlzYWJsZWQp
CiB7Ci0gICAgc2V0QXR0cmlidXRlKGRpc2FibGVkQXR0ciwgZGlzYWJsZWQgPyAiIiA6IDApOwor
ICAgIHNldEF0dHJpYnV0ZShkaXNhYmxlZEF0dHIsIGRpc2FibGVkID8gZW1wdHlBdG9tIDogbnVs
bEF0b20pOwogfQogCiBTdHJpbmcgSFRNTExpbmtFbGVtZW50OjpjaGFyc2V0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1s
L0hUTUxNZW51RWxlbWVudC5jcHAKaW5kZXggNjk0OTdlZi4uMmM2NWEwZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxN
ZW51RWxlbWVudC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgYm9vbCBIVE1MTWVudUVsZW1lbnQ6OmNv
bXBhY3QoKSBjb25zdAogCiB2b2lkIEhUTUxNZW51RWxlbWVudDo6c2V0Q29tcGFjdChib29sIGIp
CiB7Ci0gICAgc2V0QXR0cmlidXRlKGNvbXBhY3RBdHRyLCBiID8gIiIgOiAwKTsKKyAgICBzZXRB
dHRyaWJ1dGUoY29tcGFjdEF0dHIsIGIgPyBlbXB0eUF0b20gOiBudWxsQXRvbSk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcCBiL1dlYkNvcmUv
aHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcAppbmRleCAzNDRhMDY5Li5lZDQ1NjRjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxPTGlzdEVsZW1lbnQuY3BwCkBAIC04NSw3ICs4NSw3IEBAIGJvb2wgSFRNTE9MaXN0RWxl
bWVudDo6Y29tcGFjdCgpIGNvbnN0CiAKIHZvaWQgSFRNTE9MaXN0RWxlbWVudDo6c2V0Q29tcGFj
dChib29sIGIpCiB7Ci0gICAgc2V0QXR0cmlidXRlKGNvbXBhY3RBdHRyLCBiID8gIiIgOiAwKTsK
KyAgICBzZXRBdHRyaWJ1dGUoY29tcGFjdEF0dHIsIGIgPyBlbXB0eUF0b20gOiBudWxsQXRvbSk7
CiB9CiAKIHZvaWQgSFRNTE9MaXN0RWxlbWVudDo6c2V0U3RhcnQoaW50IHN0YXJ0KQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggZDNjY2ZhNC4uMjIxZTJjMSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwCkBAIC0zMDcsNyArMzA3LDcgQEAgYm9vbCBIVE1MT2JqZWN0RWxl
bWVudDo6ZGVjbGFyZSgpIGNvbnN0CiAKIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnNldERlY2xh
cmUoYm9vbCBkZWNsYXJlKQogewotICAgIHNldEF0dHJpYnV0ZShkZWNsYXJlQXR0ciwgZGVjbGFy
ZSA/ICIiIDogMCk7CisgICAgc2V0QXR0cmlidXRlKGRlY2xhcmVBdHRyLCBkZWNsYXJlID8gZW1w
dHlBdG9tIDogbnVsbEF0b20pOwogfQogCiBpbnQgSFRNTE9iamVjdEVsZW1lbnQ6OmhzcGFjZSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAppbmRleCAzMTZiMTkyLi5mNTNhOTIz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCBib29s
IEhUTUxPcHRpb25FbGVtZW50OjpkZWZhdWx0U2VsZWN0ZWQoKSBjb25zdAogCiB2b2lkIEhUTUxP
cHRpb25FbGVtZW50OjpzZXREZWZhdWx0U2VsZWN0ZWQoYm9vbCBiKQogewotICAgIHNldEF0dHJp
YnV0ZShzZWxlY3RlZEF0dHIsIGIgPyAiIiA6IDApOworICAgIHNldEF0dHJpYnV0ZShzZWxlY3Rl
ZEF0dHIsIGIgPyBlbXB0eUF0b20gOiBudWxsQXRvbSk7CiB9CiAKIFN0cmluZyBIVE1MT3B0aW9u
RWxlbWVudDo6bGFiZWwoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxQYXJz
ZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuY3BwCmluZGV4IGYxM2MxOWIuLmY5ZDFm
NjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTFBhcnNlci5jcHAKQEAgLTc1Myw3ICs3NTMsNyBAQCBib29sIEhUTUxQYXJzZXI6
OmZyYW1lc2V0Q3JlYXRlRXJyb3JDaGVjayhUb2tlbiosIFJlZlB0cjxOb2RlPiYpCiAgICAgICAg
IC8vIHJlZ3Jlc3Npb25zIGFuZCB0aGUgaGVhZGFjaGVzIGFyZSBub3Qgd29ydGggdGhlIHdvcmsg
YXMgbG9uZyBhcyB0aGVyZSBpcwogICAgICAgICAvLyBubyBzaXRlIGFjdHVhbGx5IHJlbHlpbmcg
b24gdGhhdCBkZXRhaWwgKERpcmspCiAgICAgICAgIGlmIChtX2RvY3VtZW50LT5ib2R5KCkpCi0g
ICAgICAgICAgICBtX2RvY3VtZW50LT5ib2R5KCktPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICJk
aXNwbGF5Om5vbmUiKTsKKyAgICAgICAgICAgIG1fZG9jdW1lbnQtPmJvZHkoKS0+c2V0Q1N0cmlu
Z0F0dHJpYnV0ZShzdHlsZUF0dHIsICJkaXNwbGF5Om5vbmUiKTsKICAgICAgICAgbV9pbkJvZHkg
PSBmYWxzZTsKICAgICB9CiAgICAgaWYgKChtX2hhdmVDb250ZW50IHx8IG1faGF2ZUZyYW1lU2V0
KSAmJiBtX2N1cnJlbnQtPmxvY2FsTmFtZSgpID09IGh0bWxUYWcpCkBAIC0xNjA1LDcgKzE2MDUs
NyBAQCBQYXNzUmVmUHRyPE5vZGU+IEhUTUxQYXJzZXI6OmhhbmRsZUlzaW5kZXgoVG9rZW4qIHQp
CiAKICAgICBSZWZQdHI8SFRNTElzSW5kZXhFbGVtZW50PiBpc0luZGV4ID0gbmV3IEhUTUxJc0lu
ZGV4RWxlbWVudChpc2luZGV4VGFnLCBtX2RvY3VtZW50LCBtX2N1cnJlbnRGb3JtRWxlbWVudC5n
ZXQoKSk7CiAgICAgaXNJbmRleC0+c2V0QXR0cmlidXRlTWFwKGF0dHJzKTsKLSAgICBpc0luZGV4
LT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsICJraHRtbF9pc2luZGV4Iik7CisgICAgaXNJbmRleC0+
c2V0Q1N0cmluZ0F0dHJpYnV0ZSh0eXBlQXR0ciwgImtodG1sX2lzaW5kZXgiKTsKIAogICAgIFN0
cmluZyB0ZXh0ID0gc2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9uKCk7CiAgICAgaWYgKGF0dHJz
KSB7CkBAIC0xNjU5LDggKzE2NTksOCBAQCB2b2lkIEhUTUxQYXJzZXI6OnJlcG9ydEVycm9yVG9D
b25zb2xlKEhUTUxQYXJzZXJFcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBBdG9taQogICAgIEhU
TUxUb2tlbml6ZXIqIGh0bWxUb2tlbml6ZXIgPSBzdGF0aWNfY2FzdDxIVE1MVG9rZW5pemVyKj4o
bV9kb2N1bWVudC0+dG9rZW5pemVyKCkpOwogICAgIGludCBsaW5lTnVtYmVyID0gaHRtbFRva2Vu
aXplci0+bGluZU51bWJlcigpICsgMTsKIAotICAgIEF0b21pY1N0cmluZyB0YWcxOwotICAgIEF0
b21pY1N0cmluZyB0YWcyOworICAgIFN0cmluZyB0YWcxOworICAgIFN0cmluZyB0YWcyOwogICAg
IGlmICh0YWdOYW1lMSkgewogICAgICAgICBpZiAoKnRhZ05hbWUxID09ICIjdGV4dCIpCiAgICAg
ICAgICAgICB0YWcxID0gIlRleHQiOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxQcmVF
bGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5jcHAKaW5kZXggMDMwNjYw
Zi4uZjU4MTlkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIGJv
b2wgSFRNTFByZUVsZW1lbnQ6OndyYXAoKSBjb25zdAogCiB2b2lkIEhUTUxQcmVFbGVtZW50Ojpz
ZXRXcmFwKGJvb2wgd3JhcCkKIHsKLSAgICBzZXRBdHRyaWJ1dGUod3JhcEF0dHIsIHdyYXAgPyAi
IiA6IDApOworICAgIHNldEF0dHJpYnV0ZSh3cmFwQXR0ciwgd3JhcCA/IGVtcHR5QXRvbSA6IG51
bGxBdG9tKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVt
ZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggNjM2YzU3
OS4uYjJlMjc3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNw
cAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCkBAIC0xNTUsNyArMTU1
LDcgQEAgYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6ZGVmZXIoKSBjb25zdAogCiB2b2lkIEhUTUxT
Y3JpcHRFbGVtZW50OjpzZXREZWZlcihib29sIGRlZmVyKQogewotICAgIHNldEF0dHJpYnV0ZShk
ZWZlckF0dHIsIGRlZmVyID8gIiIgOiAwKTsKKyAgICBzZXRBdHRyaWJ1dGUoZGVmZXJBdHRyLCBk
ZWZlciA/IGVtcHR5QXRvbSA6IG51bGxBdG9tKTsKIH0KIAogS1VSTCBIVE1MU2NyaXB0RWxlbWVu
dDo6c3JjKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDI0MDlmMzEu
LmM1NjU1YmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtMzQ2LDcgKzM0Niw3
IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFjY2Vzc0tleVNldFNlbGVjdGVkSW5kZXgoaW50
IGluZGV4KQogICAgIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0TXVsdGlwbGUoYm9vbCBt
dWx0aXBsZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGUobXVsdGlwbGVBdHRyLCBtdWx0aXBsZSA/ICIi
IDogMCk7CisgICAgc2V0QXR0cmlidXRlKG11bHRpcGxlQXR0ciwgbXVsdGlwbGUgPyBlbXB0eUF0
b20gOiBudWxsQXRvbSk7CiB9CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNpemUoaW50
IHNpemUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAgYi9X
ZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKaW5kZXggMjA2YWVjNC4uMGU3ODA5NSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgSFRN
TFN0eWxlRWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAogCiB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6
OnNldERpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiB7Ci0gICAgc2V0QXR0cmlidXRlKGRpc2FibGVk
QXR0ciwgZGlzYWJsZWQgPyAiIiA6IDApOworICAgIHNldEF0dHJpYnV0ZShkaXNhYmxlZEF0dHIs
IGRpc2FibGVkID8gZW1wdHlBdG9tIDogbnVsbEF0b20pOwogfQogCiBjb25zdCBBdG9taWNTdHJp
bmcmIEhUTUxTdHlsZUVsZW1lbnQ6Om1lZGlhKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQuY3BwCmluZGV4IDU5Mzk2ODUuLjEyNGFhMTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUNlbGxFbGVtZW50LmNwcApAQCAtMjIzLDcgKzIyMyw3IEBAIGJvb2wgSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQ6Om5vV3JhcCgpIGNvbnN0CiAKIHZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OnNldE5v
V3JhcChib29sIGIpCiB7Ci0gICAgc2V0QXR0cmlidXRlKG5vd3JhcEF0dHIsIGIgPyAiIiA6IDAp
OworICAgIHNldEF0dHJpYnV0ZShub3dyYXBBdHRyLCBiID8gZW1wdHlBdG9tIDogbnVsbEF0b20p
OwogfQogCiB2b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50OjpzZXRSb3dTcGFuKGludCBuKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IGFmMzU3NDAuLjE4YzEyYTUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlRWxlbWVudC5jcHAKQEAgLTQ2MiwxMCArNDYyLDEzIEBAIHZvaWQgSFRNTFRhYmxlRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogCiB2b2lk
IEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxBdHRyaWJ1dGVTdHlsZURlY2xzKFZlY3RvcjxD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbio+JiByZXN1bHRzKQogeworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzb2xpZEF0b20sICgic29saWQiKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG91dHNldEF0b20sICgib3V0c2V0IikpOworICAg
IAogICAgIGlmICgoIW1fYm9yZGVyQXR0ciAmJiAhbV9ib3JkZXJDb2xvckF0dHIpIHx8IG1fZnJh
bWVBdHRyKQogICAgICAgICByZXR1cm47CiAKLSAgICBBdG9taWNTdHJpbmcgYm9yZGVyVmFsdWUg
PSBtX2JvcmRlckNvbG9yQXR0ciA/ICJzb2xpZCIgOiAib3V0c2V0IjsKKyAgICBBdG9taWNTdHJp
bmcgYm9yZGVyVmFsdWUgPSBtX2JvcmRlckNvbG9yQXR0ciA/IHNvbGlkQXRvbSA6IG91dHNldEF0
b207CiAgICAgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIGRlY2wgPSBnZXRNYXBwZWRB
dHRyaWJ1dGVEZWNsKGVQZXJzaXN0ZW50LCB0YWJsZWJvcmRlckF0dHIsIGJvcmRlclZhbHVlKTsK
ICAgICBpZiAoIWRlY2wpIHsKICAgICAgICAgZGVjbCA9IENTU01hcHBlZEF0dHJpYnV0ZURlY2xh
cmF0aW9uOjpjcmVhdGUoKS5yZWxlYXNlUmVmKCk7IC8vIFRoaXMgc2luZ2xlIHJlZiBwaW5zIHVz
IGluIHRoZSB0YWJsZSB1bnRpbCB0aGUgZG9jdW1lbnQgZGllcy4KQEAgLTYwNiwxMCArNjA5LDEz
IEBAIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6YWRkU2hhcmVkQ2VsbFBhZGRpbmdEZWNsKFZlY3Rv
cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvCiAKIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6YWRk
U2hhcmVkR3JvdXBEZWNscyhib29sIHJvd3MsIFZlY3RvcjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbio+JiByZXN1bHRzKQogeworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCByb3dncm91cHNBdG9tLCAoInJvd2dyb3VwcyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgY29sZ3JvdXBzQXRvbSwgKCJjb2xncm91cHMiKSk7CisKICAgICBpZiAo
bV9ydWxlc0F0dHIgIT0gR3JvdXBzUnVsZXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIEF0b21p
Y1N0cmluZyBydWxlc1ZhbHVlID0gcm93cyA/ICJyb3dncm91cHMiIDogImNvbGdyb3VwcyI7Cisg
ICAgQXRvbWljU3RyaW5nIHJ1bGVzVmFsdWUgPSByb3dzID8gcm93Z3JvdXBzQXRvbSA6IGNvbGdy
b3Vwc0F0b207CiAgICAgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIGRlY2wgPSBnZXRN
YXBwZWRBdHRyaWJ1dGVEZWNsKGVQZXJzaXN0ZW50LCBydWxlc0F0dHIsIHJ1bGVzVmFsdWUpOwog
ICAgIGlmICghZGVjbCkgewogICAgICAgICBkZWNsID0gQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFy
YXRpb246OmNyZWF0ZSgpLnJlbGVhc2VSZWYoKTsgLy8gVGhpcyBzaW5nbGUgcmVmIHBpbnMgdXMg
aW4gdGhlIHRhYmxlIHVudGlsIHRoZSBkb2N1bWVudCBkaWVzLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1l
bnQuY3BwCmluZGV4IGYzNmNiNTcuLjNkNjcyNGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MVUxpc3RFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5j
cHAKQEAgLTYxLDcgKzYxLDcgQEAgYm9vbCBIVE1MVUxpc3RFbGVtZW50Ojpjb21wYWN0KCkgY29u
c3QKIAogdm9pZCBIVE1MVUxpc3RFbGVtZW50OjpzZXRDb21wYWN0KGJvb2wgYikKIHsKLSAgICBz
ZXRBdHRyaWJ1dGUoY29tcGFjdEF0dHIsIGIgPyAiIiA6IDApOworICAgIHNldEF0dHJpYnV0ZShj
b21wYWN0QXR0ciwgYiA/IGVtcHR5QXRvbSA6IG51bGxBdG9tKTsKIH0KIAogU3RyaW5nIEhUTUxV
TGlzdEVsZW1lbnQ6OnR5cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxW
aWV3U291cmNlRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1l
bnQuY3BwCmluZGV4IGJhNzE4ZDEuLjA4MTc4OTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3Vy
Y2VEb2N1bWVudC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBIVE1MVmlld1NvdXJjZURvY3Vt
ZW50OjpjcmVhdGVDb250YWluaW5nVGFibGUoKQogICAgIC8vIGRvY3VtZW50LgogICAgIFJlZlB0
cjxIVE1MRGl2RWxlbWVudD4gZGl2ID0gbmV3IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgdGhpcyk7
CiAgICAgUmVmUHRyPE5hbWVkTWFwcGVkQXR0ck1hcD4gYXR0cnMgPSBOYW1lZE1hcHBlZEF0dHJN
YXA6OmNyZWF0ZSgpOwotICAgIGF0dHJzLT5hZGRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlOjpj
cmVhdGUoY2xhc3NBdHRyLCAid2Via2l0LWxpbmUtZ3V0dGVyLWJhY2tkcm9wIikpOworICAgIGF0
dHJzLT5hZGRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlOjpjcmVhdGUoY2xhc3NBdHRyLCBBdG9t
aWNTdHJpbmcoIndlYmtpdC1saW5lLWd1dHRlci1iYWNrZHJvcCIpKSk7CiAgICAgZGl2LT5zZXRB
dHRyaWJ1dGVNYXAoYXR0cnMucmVsZWFzZSgpKTsKICAgICBib2R5LT5hZGRDaGlsZChkaXYpOwog
ICAgIGRpdi0+YXR0YWNoKCk7CkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBIVE1MVmlld1NvdXJj
ZURvY3VtZW50OjphZGRMaW5lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lKQogICAgIC8vIENyZWF0
ZSBhIGNlbGwgdGhhdCB3aWxsIGhvbGQgdGhlIGxpbmUgbnVtYmVyIChpdCBpcyBnZW5lcmF0ZWQg
aW4gdGhlIHN0eWxlc2hlZXQgdXNpbmcgY291bnRlcnMpLgogICAgIFJlZlB0cjxIVE1MVGFibGVD
ZWxsRWxlbWVudD4gdGQgPSBuZXcgSFRNTFRhYmxlQ2VsbEVsZW1lbnQodGRUYWcsIHRoaXMpOwog
ICAgIFJlZlB0cjxOYW1lZE1hcHBlZEF0dHJNYXA+IGF0dHJzID0gTmFtZWRNYXBwZWRBdHRyTWFw
OjpjcmVhdGUoKTsKLSAgICBhdHRycy0+YWRkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZTo6Y3Jl
YXRlKGNsYXNzQXR0ciwgIndlYmtpdC1saW5lLW51bWJlciIpKTsKKyAgICBhdHRycy0+YWRkQXR0
cmlidXRlKE1hcHBlZEF0dHJpYnV0ZTo6Y3JlYXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJ3
ZWJraXQtbGluZS1udW1iZXIiKSkpOwogICAgIHRkLT5zZXRBdHRyaWJ1dGVNYXAoYXR0cnMucmVs
ZWFzZSgpKTsKICAgICB0cm93LT5hZGRDaGlsZCh0ZCk7CiAgICAgdGQtPmF0dGFjaCgpOwpAQCAt
MjM2LDcgKzIzNiw3IEBAIHZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkTGluZShjb25z
dCBTdHJpbmcmIGNsYXNzTmFtZSkKICAgICAvLyBDcmVhdGUgYSBzZWNvbmQgY2VsbCBmb3IgdGhl
IGxpbmUgY29udGVudHMKICAgICB0ZCA9IG5ldyBIVE1MVGFibGVDZWxsRWxlbWVudCh0ZFRhZywg
dGhpcyk7CiAgICAgYXR0cnMgPSBOYW1lZE1hcHBlZEF0dHJNYXA6OmNyZWF0ZSgpOwotICAgIGF0
dHJzLT5hZGRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlOjpjcmVhdGUoY2xhc3NBdHRyLCAid2Vi
a2l0LWxpbmUtY29udGVudCIpKTsKKyAgICBhdHRycy0+YWRkQXR0cmlidXRlKE1hcHBlZEF0dHJp
YnV0ZTo6Y3JlYXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJ3ZWJraXQtbGluZS1jb250ZW50
IikpKTsKICAgICB0ZC0+c2V0QXR0cmlidXRlTWFwKGF0dHJzLnJlbGVhc2UoKSk7CiAgICAgdHJv
dy0+YWRkQ2hpbGQodGQpOwogICAgIHRkLT5hdHRhY2goKTsKQEAgLTI5OSw4ICsyOTksOCBAQCBQ
YXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZExpbmsoY29uc3Qg
U3RyaW5nJiB1cmwsIGJvb2wgaXNBbgogICAgICAgICBjbGFzc1ZhbHVlID0gIndlYmtpdC1odG1s
LWF0dHJpYnV0ZS12YWx1ZSB3ZWJraXQtaHRtbC1leHRlcm5hbC1saW5rIjsKICAgICBlbHNlCiAg
ICAgICAgIGNsYXNzVmFsdWUgPSAid2Via2l0LWh0bWwtYXR0cmlidXRlLXZhbHVlIHdlYmtpdC1o
dG1sLXJlc291cmNlLWxpbmsiOwotICAgIGF0dHJzLT5hZGRBdHRyaWJ1dGUoTWFwcGVkQXR0cmli
dXRlOjpjcmVhdGUoY2xhc3NBdHRyLCBjbGFzc1ZhbHVlKSk7Ci0gICAgYXR0cnMtPmFkZEF0dHJp
YnV0ZShNYXBwZWRBdHRyaWJ1dGU6OmNyZWF0ZSh0YXJnZXRBdHRyLCAiX2JsYW5rIikpOworICAg
IGF0dHJzLT5hZGRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlOjpjcmVhdGUoY2xhc3NBdHRyLCBB
dG9taWNTdHJpbmcoY2xhc3NWYWx1ZSkpKTsKKyAgICBhdHRycy0+YWRkQXR0cmlidXRlKE1hcHBl
ZEF0dHJpYnV0ZTo6Y3JlYXRlKHRhcmdldEF0dHIsIEF0b21pY1N0cmluZygiX2JsYW5rIikpKTsK
ICAgICBhdHRycy0+YWRkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZTo6Y3JlYXRlKGhyZWZBdHRy
LCB1cmwpKTsKICAgICBhbmNob3ItPnNldEF0dHJpYnV0ZU1hcChhdHRycy5yZWxlYXNlKCkpOwog
ICAgIG1fY3VycmVudC0+YWRkQ2hpbGQoYW5jaG9yKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9h
ZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAKaW5kZXggNGM0NjZmYS4uOTM0Y2E4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9s
b2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBib29sIENhY2hlZENTU1N0eWxl
U2hlZXQ6OmNhblVzZVNoZWV0KGJvb2wgZW5mb3JjZU1JTUVUeXBlKSBjb25zdAogICAgIC8vCiAg
ICAgLy8gVGhpcyBjb2RlIGRlZmF1bHRzIHRvIGFsbG93aW5nIHRoZSBzdHlsZXNoZWV0IGZvciBu
b24tSFRUUCBwcm90b2NvbHMgc28KICAgICAvLyBmb2xrcyBjYW4gdXNlIHN0YW5kYXJkcyBtb2Rl
IGZvciBsb2NhbCBIVE1MIGRvY3VtZW50cy4KLSAgICBTdHJpbmcgbWltZVR5cGUgPSBleHRyYWN0
TUlNRVR5cGVGcm9tTWVkaWFUeXBlKHJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKCJDb250ZW50
LVR5cGUiKSk7CisgICAgU3RyaW5nIG1pbWVUeXBlID0gZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlh
VHlwZShyZXNwb25zZSgpLmNvbnRlbnRUeXBlKCkpOwogICAgIHJldHVybiBtaW1lVHlwZS5pc0Vt
cHR5KCkgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobWltZVR5cGUsICJ0ZXh0L2NzcyIpIHx8IGVxdWFs
SWdub3JpbmdDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24veC11bmtub3duLWNvbnRlbnQtdHlw
ZSIpOwogfQogIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAK
aW5kZXggN2EyMTI4MC4uN2JiM2EzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2wuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgYm9vbCBwYXNzZXNBY2Nlc3NDb250
cm9sQ2hlY2soY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wgaW5jbHVkZUNy
ZWQKIAogICAgIGlmIChpbmNsdWRlQ3JlZGVudGlhbHMpIHsKICAgICAgICAgY29uc3QgU3RyaW5n
JiBhY2Nlc3NDb250cm9sQ3JlZGVudGlhbHNTdHJpbmcgPSByZXNwb25zZS5odHRwSGVhZGVyRmll
bGQoIkFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzIik7Ci0gICAgICAgIGlmIChhY2Nl
c3NDb250cm9sQ3JlZGVudGlhbHNTdHJpbmcgIT0gInRydWUiKQorICAgICAgICBpZiAoYWNjZXNz
Q29udHJvbENyZWRlbnRpYWxzU3RyaW5nICE9IHRydWVBdG9tKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKaW5kZXggOGEyMjNmZC4uZWM0ZTA5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRo
cmVhZGFibGVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTE3LDEyICsxMTgsMTUgQEAgdm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6Om1ha2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoY29u
c3QgUmVzb3VyY2UKIAogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VDcm9zc09y
aWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgYWNjZXNzQ29u
dHJvbFJlcXVlc3RNZXRob2RBdG9tLCAoIkFjY2Vzcy1Db250cm9sLVJlcXVlc3QtTWV0aG9kIikp
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhY2Nlc3NDb250cm9sUmVx
dWVzdEhlYWRlcnNBdG9tLCAoIkFjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVycyIpKTsKKyAg
ICAKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LnVybCgpKTsK
ICAgICBwcmVmbGlnaHRSZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgcHJlZmxpZ2h0
UmVxdWVzdC5zZXRIVFRQT3JpZ2luKG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3Ry
aW5nKCkpOwogICAgIHByZWZsaWdodFJlcXVlc3Quc2V0QWxsb3dDb29raWVzKG1fb3B0aW9ucy5h
bGxvd0NyZWRlbnRpYWxzKTsKICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEhUVFBNZXRob2QoIk9Q
VElPTlMiKTsKLSAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiQWNjZXNz
LUNvbnRyb2wtUmVxdWVzdC1NZXRob2QiLCByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7CisgICAgcHJl
ZmxpZ2h0UmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoYWNjZXNzQ29udHJvbFJlcXVlc3RNZXRo
b2RBdG9tLCByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7CiAKICAgICBjb25zdCBIVFRQSGVhZGVyTWFw
JiByZXF1ZXN0SGVhZGVyRmllbGRzID0gcmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCk7CiAKQEAg
LTEzOSw3ICsxNDMsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bWFrZUNyb3Nz
T3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoY29uc3QgUgogICAgICAgICAgICAgYXBw
ZW5kKGhlYWRlckJ1ZmZlciwgaXQtPmZpcnN0KTsKICAgICAgICAgfQogCi0gICAgICAgIHByZWZs
aWdodFJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LUhl
YWRlcnMiLCBTdHJpbmc6OmFkb3B0KGhlYWRlckJ1ZmZlcikpOworICAgICAgICBwcmVmbGlnaHRS
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChhY2Nlc3NDb250cm9sUmVxdWVzdEhlYWRlcnNBdG9t
LCBTdHJpbmc6OmFkb3B0KGhlYWRlckJ1ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wgc2tpcENh
bkxvYWRDaGVjayA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
CmluZGV4IGVlMGY0Y2EuLmM0MjQ1ZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHAKQEAgLTExNSwyOCArMTE1LDI4IEBAIHZvaWQgRlRQRGlyZWN0b3J5VG9rZW5pemVy
OjphcHBlbmRFbnRyeShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHNpCiAg
ICAgRXhjZXB0aW9uQ29kZSBlYzsKIAogICAgIFJlZlB0cjxFbGVtZW50PiByb3dFbGVtZW50ID0g
bV90YWJsZUVsZW1lbnQtPmluc2VydFJvdygtMSwgZWMpOwotICAgIHJvd0VsZW1lbnQtPnNldEF0
dHJpYnV0ZSgiY2xhc3MiLCAiZnRwRGlyZWN0b3J5RW50cnlSb3ciLCBlYyk7CisgICAgcm93RWxl
bWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJmdHBEaXJlY3RvcnlF
bnRyeVJvdyIpLCBlYyk7CiAgICAKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IG1fZG9j
LT5jcmVhdGVFbGVtZW50KHRkVGFnLCBmYWxzZSk7CiAgICAgZWxlbWVudC0+YXBwZW5kQ2hpbGQo
VGV4dDo6Y3JlYXRlKG1fZG9jLCBTdHJpbmcoJm5vQnJlYWtTcGFjZSwgMSkpLCBlYyk7CiAgICAg
aWYgKGlzRGlyZWN0b3J5KQotICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoImNsYXNzIiwg
ImZ0cERpcmVjdG9yeUljb24gZnRwRGlyZWN0b3J5VHlwZURpcmVjdG9yeSIsIGVjKTsKKyAgICAg
ICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJmdHBEaXJl
Y3RvcnlJY29uIGZ0cERpcmVjdG9yeVR5cGVEaXJlY3RvcnkiKSwgZWMpOwogICAgIGVsc2UKLSAg
ICAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKCJjbGFzcyIsICJmdHBEaXJlY3RvcnlJY29uIGZ0
cERpcmVjdG9yeVR5cGVGaWxlIiwgZWMpOworICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUo
Y2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoImZ0cERpcmVjdG9yeUljb24gZnRwRGlyZWN0b3J5VHlw
ZUZpbGUiKSwgZWMpOwogICAgIHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQsIGVjKTsK
ICAgICAKICAgICBlbGVtZW50ID0gY3JlYXRlVERGb3JGaWxlbmFtZShmaWxlbmFtZSk7Ci0gICAg
ZWxlbWVudC0+c2V0QXR0cmlidXRlKCJjbGFzcyIsICJmdHBEaXJlY3RvcnlGaWxlTmFtZSIsIGVj
KTsKKyAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoImZ0
cERpcmVjdG9yeUZpbGVOYW1lIiksIGVjKTsKICAgICByb3dFbGVtZW50LT5hcHBlbmRDaGlsZChl
bGVtZW50LCBlYyk7CiAgICAgCiAgICAgZWxlbWVudCA9IG1fZG9jLT5jcmVhdGVFbGVtZW50KHRk
VGFnLCBmYWxzZSk7CiAgICAgZWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKG1fZG9j
LCBkYXRlKSwgZWMpOwotICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAiZnRwRGly
ZWN0b3J5RmlsZURhdGUiLCBlYyk7CisgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0
ciwgQXRvbWljU3RyaW5nKCJmdHBEaXJlY3RvcnlGaWxlRGF0ZSIpLCBlYyk7CiAgICAgcm93RWxl
bWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudCwgZWMpOwogICAgIAogICAgIGVsZW1lbnQgPSBtX2Rv
Yy0+Y3JlYXRlRWxlbWVudCh0ZFRhZywgZmFsc2UpOwogICAgIGVsZW1lbnQtPmFwcGVuZENoaWxk
KFRleHQ6OmNyZWF0ZShtX2RvYywgc2l6ZSksIGVjKTsKLSAgICBlbGVtZW50LT5zZXRBdHRyaWJ1
dGUoImNsYXNzIiwgImZ0cERpcmVjdG9yeUZpbGVTaXplIiwgZWMpOworICAgIGVsZW1lbnQtPnNl
dEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZygiZnRwRGlyZWN0b3J5RmlsZVNpemUi
KSwgZWMpOwogICAgIHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQsIGVjKTsKIH0KIApA
QCAtMTUxLDcgKzE1MSw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gRlRQRGlyZWN0b3J5VG9rZW5p
emVyOjpjcmVhdGVUREZvckZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsCiAgICAgICAgIGZ1bGxV
UkwuYXBwZW5kKCIvIiArIGZpbGVuYW1lKTsKIAogICAgIFJlZlB0cjxFbGVtZW50PiBhbmNob3JF
bGVtZW50ID0gbV9kb2MtPmNyZWF0ZUVsZW1lbnQoYVRhZywgZmFsc2UpOwotICAgIGFuY2hvckVs
ZW1lbnQtPnNldEF0dHJpYnV0ZSgiaHJlZiIsIGZ1bGxVUkwsIGVjKTsKKyAgICBhbmNob3JFbGVt
ZW50LT5zZXRBdHRyaWJ1dGUoaHJlZkF0dHIsIGZ1bGxVUkwsIGVjKTsKICAgICBhbmNob3JFbGVt
ZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUobV9kb2MsIGZpbGVuYW1lKSwgZWMpOwogICAg
IAogICAgIFJlZlB0cjxFbGVtZW50PiB0ZEVsZW1lbnQgPSBtX2RvYy0+Y3JlYXRlRWxlbWVudCh0
ZFRhZywgZmFsc2UpOwpAQCAtMzU2LDcgKzM1Niw3IEBAIGJvb2wgRlRQRGlyZWN0b3J5VG9rZW5p
emVyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiAgICAgSFRNTFRva2VuaXplcjo6d3JpdGUoU3Ry
aW5nKHRlbXBsYXRlRG9jdW1lbnREYXRhLT5kYXRhKCksIHRlbXBsYXRlRG9jdW1lbnREYXRhLT5z
aXplKCkpLCB0cnVlKTsKICAgICBzZXRGb3JjZVN5bmNocm9ub3VzKGZhbHNlKTsKICAgICAKLSAg
ICBSZWZQdHI8RWxlbWVudD4gdGFibGVFbGVtZW50ID0gbV9kb2MtPmdldEVsZW1lbnRCeUlkKCJm
dHBEaXJlY3RvcnlUYWJsZSIpOworICAgIFJlZlB0cjxFbGVtZW50PiB0YWJsZUVsZW1lbnQgPSBt
X2RvYy0+Z2V0RWxlbWVudEJ5SWQoQXRvbWljU3RyaW5nKCJmdHBEaXJlY3RvcnlUYWJsZSIpKTsK
ICAgICBpZiAoIXRhYmxlRWxlbWVudCkKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZmlu
ZCBlbGVtZW50IGJ5IGlkIFwiZnRwRGlyZWN0b3J5VGFibGVcIiBpbiB0aGUgdGVtcGxhdGUgZG9j
dW1lbnQuIik7CiAgICAgZWxzZSBpZiAoIXRhYmxlRWxlbWVudC0+aGFzVGFnTmFtZSh0YWJsZVRh
ZykpCkBAIC0zNzIsNyArMzcyLDcgQEAgYm9vbCBGVFBEaXJlY3RvcnlUb2tlbml6ZXI6OmxvYWRE
b2N1bWVudFRlbXBsYXRlKCkKICAgICB0YWJsZUVsZW1lbnQgPSBtX2RvYy0+Y3JlYXRlRWxlbWVu
dCh0YWJsZVRhZywgZmFsc2UpOwogICAgIG1fdGFibGVFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRN
TFRhYmxlRWxlbWVudCo+KHRhYmxlRWxlbWVudC5nZXQoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YzsgICAgICAgIAotICAgIG1fdGFibGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoImlkIiwgImZ0cERp
cmVjdG9yeVRhYmxlIiwgZWMpOworICAgIG1fdGFibGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoaWRB
dHRyLCBBdG9taWNTdHJpbmcoImZ0cERpcmVjdG9yeVRhYmxlIiksIGVjKTsKIAogICAgIC8vIElm
IHdlIGRpZG4ndCBmaW5kIHRoZSB0YWJsZSBlbGVtZW50LCBsZXRzIHRyeSB0byBhcHBlbmQgb3Vy
IG93biB0byB0aGUgYm9keQogICAgIC8vIElmIHRoYXQgZmFpbHMgZm9yIHNvbWUgcmVhc29uLCBj
cmFtIGl0IG9uIHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50IGFzIGEgbGFzdApAQCAtMzk5LDcgKzM5
OSw3IEBAIHZvaWQgRlRQRGlyZWN0b3J5VG9rZW5pemVyOjpjcmVhdGVCYXNpY0RvY3VtZW50KCkK
ICAgICAKICAgICBSZWZQdHI8RWxlbWVudD4gdGFibGVFbGVtZW50ID0gbV9kb2MtPmNyZWF0ZUVs
ZW1lbnQodGFibGVUYWcsIGZhbHNlKTsKICAgICBtX3RhYmxlRWxlbWVudCA9IHN0YXRpY19jYXN0
PEhUTUxUYWJsZUVsZW1lbnQqPih0YWJsZUVsZW1lbnQuZ2V0KCkpOwotICAgIG1fdGFibGVFbGVt
ZW50LT5zZXRBdHRyaWJ1dGUoImlkIiwgImZ0cERpcmVjdG9yeVRhYmxlIiwgZWMpOworICAgIG1f
dGFibGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoaWRBdHRyLCBBdG9taWNTdHJpbmcoImZ0cERpcmVj
dG9yeVRhYmxlIiksIGVjKTsKIAogICAgIGJvZHlFbGVtZW50LT5hcHBlbmRDaGlsZChtX3RhYmxl
RWxlbWVudCwgZWMpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDIwNDdjOGQuLmY5MTJh
YmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxODgsMTEgKzMxODgsMTEgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6YWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBGcmFtZUxvYWRUeXAKICAgICAKICAgICBpZiAobG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlw
ZVJlbG9hZCkgewogICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9yaW5n
Q2FjaGVEYXRhKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIkNhY2hlLUNv
bnRyb2wiLCAibWF4LWFnZT0wIik7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJzOjpDYWNoZUNvbnRyb2wsICJtYXgtYWdlPTAiKTsKICAgICB9IGVsc2UgaWYg
KGxvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2luKSB7CiAgICAgICAgIHJl
cXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOwotICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiQ2FjaGUtQ29udHJvbCIsICJuby1jYWNoZSIpOwot
ICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiUHJhZ21hIiwgIm5vLWNhY2hlIik7
CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJzOjpDYWNoZUNv
bnRyb2wsICJuby1jYWNoZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyczo6UHJhZ21hLCAibm8tY2FjaGUiKTsKICAgICB9CiAgICAgCiAgICAgaWYgKG1h
aW5SZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVy
LmNwcCBiL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCBkMzBiMjMx
Li4yMTM2NjE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5j
cHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC00NzQsNyAr
NDc0LDcgQEAgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZXI6OmNyZWF0
ZUl0ZW0oYm9vbCB1c2VPcmlnaW5hbCkKICAgICAgICAgb3JpZ2luYWxVUkwgPSBibGFua1VSTCgp
OwogICAgIAogICAgIEZyYW1lKiBwYXJlbnRGcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50
KCk7Ci0gICAgU3RyaW5nIHBhcmVudCA9IHBhcmVudEZyYW1lID8gcGFyZW50RnJhbWUtPnRyZWUo
KS0+bmFtZSgpIDogIiI7CisgICAgU3RyaW5nIHBhcmVudCA9IHBhcmVudEZyYW1lID8gcGFyZW50
RnJhbWUtPnRyZWUoKS0+bmFtZSgpIDogZW1wdHlBdG9tOwogICAgIFN0cmluZyB0aXRsZSA9IGRv
Y0xvYWRlciA/IGRvY0xvYWRlci0+dGl0bGUoKSA6ICIiOwogCiAgICAgUmVmUHRyPEhpc3RvcnlJ
dGVtPiBpdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZSh1cmwsIG1fZnJhbWUtPnRyZWUoKS0+bmFt
ZSgpLCBwYXJlbnQsIHRpdGxlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ltYWdlRG9j
dW1lbnQuY3BwIGIvV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggOWI1NTk4
ZC4uZDljNjBiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAK
KysrIGIvV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTE4NiwxMyArMTg2LDEz
IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgIGFw
cGVuZENoaWxkKHJvb3RFbGVtZW50LCBlYyk7CiAgICAgCiAgICAgUmVmUHRyPEVsZW1lbnQ+IGJv
ZHkgPSBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChib2R5VGFnLCBmYWxzZSk7Ci0gICAgYm9keS0+
c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgIm1hcmdpbjogMHB4OyIpOworICAgIGJvZHktPnNldENT
dHJpbmdBdHRyaWJ1dGUoc3R5bGVBdHRyLCAibWFyZ2luOiAwcHg7Iik7CiAgICAgCiAgICAgcm9v
dEVsZW1lbnQtPmFwcGVuZENoaWxkKGJvZHksIGVjKTsKICAgICAKICAgICBSZWZQdHI8SW1hZ2VE
b2N1bWVudEVsZW1lbnQ+IGltYWdlRWxlbWVudCA9IG5ldyBJbWFnZURvY3VtZW50RWxlbWVudCh0
aGlzKTsKICAgICAKLSAgICBpbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICIt
d2Via2l0LXVzZXItc2VsZWN0OiBub25lIik7ICAgICAgICAKKyAgICBpbWFnZUVsZW1lbnQtPnNl
dENTdHJpbmdBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZSIp
OyAgICAgICAgCiAgICAgaW1hZ2VFbGVtZW50LT5zZXRMb2FkTWFudWFsbHkodHJ1ZSk7CiAgICAg
aW1hZ2VFbGVtZW50LT5zZXRTcmModXJsKCkuc3RyaW5nKCkpOwogICAgIApAQCAtMjAyLDggKzIw
Miw4IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAg
ICAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXJzCiAgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lciA9IEltYWdlRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKHRoaXMpOwogICAgICAgICBp
ZiAoRE9NV2luZG93KiBkb21XaW5kb3cgPSB0aGlzLT5kb21XaW5kb3coKSkKLSAgICAgICAgICAg
IGRvbVdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgbGlzdGVuZXIsIGZhbHNlKTsK
LSAgICAgICAgaW1hZ2VFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGxpc3RlbmVy
LnJlbGVhc2UoKSwgZmFsc2UpOworICAgICAgICAgICAgZG9tV2luZG93LT5hZGRFdmVudExpc3Rl
bmVyKEF0b21pY1N0cmluZygicmVzaXplIiksIGxpc3RlbmVyLCBmYWxzZSk7CisgICAgICAgIGlt
YWdlRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihBdG9taWNTdHJpbmcoImNsaWNrIiksIGxpc3Rl
bmVyLnJlbGVhc2UoKSwgZmFsc2UpOwogICAgIH0KIAogICAgIG1faW1hZ2VFbGVtZW50ID0gaW1h
Z2VFbGVtZW50LmdldCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvTWVkaWFEb2N1bWVu
dC5jcHAgYi9XZWJDb3JlL2xvYWRlci9NZWRpYURvY3VtZW50LmNwcAppbmRleCA2NTZkMGEwLi4x
MDUxNWJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9NZWRpYURvY3VtZW50LmNwcAorKysg
Yi9XZWJDb3JlL2xvYWRlci9NZWRpYURvY3VtZW50LmNwcApAQCAtODIsMTggKzgyLDE4IEBAIHZv
aWQgTWVkaWFUb2tlbml6ZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICBtX2RvYy0+
YXBwZW5kQ2hpbGQocm9vdEVsZW1lbnQsIGVjKTsKICAgICAgICAgCiAgICAgUmVmUHRyPEVsZW1l
bnQ+IGJvZHkgPSBtX2RvYy0+Y3JlYXRlRWxlbWVudChib2R5VGFnLCBmYWxzZSk7Ci0gICAgYm9k
eS0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgImJhY2tncm91bmQtY29sb3I6IHJnYigzOCwzOCwz
OCk7Iik7CisgICAgYm9keS0+c2V0Q1N0cmluZ0F0dHJpYnV0ZShzdHlsZUF0dHIsICJiYWNrZ3Jv
dW5kLWNvbG9yOiByZ2IoMzgsMzgsMzgpOyIpOwogCiAgICAgcm9vdEVsZW1lbnQtPmFwcGVuZENo
aWxkKGJvZHksIGVjKTsKICAgICAgICAgCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1lZGlhRWxlbWVu
dCA9IG1fZG9jLT5jcmVhdGVFbGVtZW50KHZpZGVvVGFnLCBmYWxzZSk7CiAgICAgICAgIAogICAg
IG1fbWVkaWFFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KG1lZGlhRWxl
bWVudC5nZXQoKSk7Ci0gICAgbV9tZWRpYUVsZW1lbnQtPnNldEF0dHJpYnV0ZShjb250cm9sc0F0
dHIsICIiKTsKLSAgICBtX21lZGlhRWxlbWVudC0+c2V0QXR0cmlidXRlKGF1dG9wbGF5QXR0ciwg
IiIpOwotICAgIG1fbWVkaWFFbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAibWFyZ2lu
OiBhdXRvOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsg
bGVmdDogMDsiKTsKKyAgICBtX21lZGlhRWxlbWVudC0+c2V0QXR0cmlidXRlKGNvbnRyb2xzQXR0
ciwgZW1wdHlBdG9tKTsKKyAgICBtX21lZGlhRWxlbWVudC0+c2V0QXR0cmlidXRlKGF1dG9wbGF5
QXR0ciwgZW1wdHlBdG9tKTsKKyAgICBtX21lZGlhRWxlbWVudC0+c2V0Q1N0cmluZ0F0dHJpYnV0
ZShzdHlsZUF0dHIsICJtYXJnaW46IGF1dG87IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBy
aWdodDogMDsgYm90dG9tOiAwOyBsZWZ0OiAwOyIpOwogCi0gICAgbV9tZWRpYUVsZW1lbnQtPnNl
dEF0dHJpYnV0ZShuYW1lQXR0ciwgIm1lZGlhIik7CisgICAgbV9tZWRpYUVsZW1lbnQtPnNldENT
dHJpbmdBdHRyaWJ1dGUobmFtZUF0dHIsICJtZWRpYSIpOwogICAgIG1fbWVkaWFFbGVtZW50LT5z
ZXRTcmMobV9kb2MtPnVybCgpKTsKICAgICAKICAgICBib2R5LT5hcHBlbmRDaGlsZChtZWRpYUVs
ZW1lbnQsIGVjKTsKQEAgLTIxMiw4ICsyMTIsOCBAQCB2b2lkIE1lZGlhRG9jdW1lbnQ6OnJlcGxh
Y2VNZWRpYUVsZW1lbnRUaW1lckZpcmVkKFRpbWVyPE1lZGlhRG9jdW1lbnQ+KikKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gU2V0IGJvZHkgbWFyZ2luIHdpZHRoIGFuZCBoZWlnaHQgdG8gMCBh
cyB0aGF0IGlzIHdoYXQgYSBQbHVnaW5Eb2N1bWVudCB1c2VzLgotICAgIGh0bWxCb2R5LT5zZXRB
dHRyaWJ1dGUobWFyZ2lud2lkdGhBdHRyLCAiMCIpOwotICAgIGh0bWxCb2R5LT5zZXRBdHRyaWJ1
dGUobWFyZ2luaGVpZ2h0QXR0ciwgIjAiKTsKKyAgICBodG1sQm9keS0+c2V0Q1N0cmluZ0F0dHJp
YnV0ZShtYXJnaW53aWR0aEF0dHIsICIwIik7CisgICAgaHRtbEJvZHktPnNldENTdHJpbmdBdHRy
aWJ1dGUobWFyZ2luaGVpZ2h0QXR0ciwgIjAiKTsKIAogICAgIFJlZlB0cjxOb2RlTGlzdD4gbm9k
ZUxpc3QgPSBodG1sQm9keS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUoInZpZGVvIik7CiAKQEAgLTIy
Myw5ICsyMjMsOSBAQCB2b2lkIE1lZGlhRG9jdW1lbnQ6OnJlcGxhY2VNZWRpYUVsZW1lbnRUaW1l
ckZpcmVkKFRpbWVyPE1lZGlhRG9jdW1lbnQ+KikKICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVs
ZW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChlbWJlZFRhZywgZmFsc2UpOwogICAgICAg
ICBIVE1MRW1iZWRFbGVtZW50KiBlbWJlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRW1iZWRF
bGVtZW50Kj4oZWxlbWVudC5nZXQoKSk7CiAKLSAgICAgICAgZW1iZWRFbGVtZW50LT5zZXRBdHRy
aWJ1dGUod2lkdGhBdHRyLCAiMTAwJSIpOwotICAgICAgICBlbWJlZEVsZW1lbnQtPnNldEF0dHJp
YnV0ZShoZWlnaHRBdHRyLCAiMTAwJSIpOwotICAgICAgICBlbWJlZEVsZW1lbnQtPnNldEF0dHJp
YnV0ZShuYW1lQXR0ciwgInBsdWdpbiIpOworICAgICAgICBlbWJlZEVsZW1lbnQtPnNldENTdHJp
bmdBdHRyaWJ1dGUod2lkdGhBdHRyLCAiMTAwJSIpOworICAgICAgICBlbWJlZEVsZW1lbnQtPnNl
dENTdHJpbmdBdHRyaWJ1dGUoaGVpZ2h0QXR0ciwgIjEwMCUiKTsKKyAgICAgICAgZW1iZWRFbGVt
ZW50LT5zZXRDU3RyaW5nQXR0cmlidXRlKG5hbWVBdHRyLCAicGx1Z2luIik7CiAgICAgICAgIGVt
YmVkRWxlbWVudC0+c2V0QXR0cmlidXRlKHNyY0F0dHIsIHVybCgpLnN0cmluZygpKTsKICAgICAg
ICAgZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsIGZyYW1lKCktPmxvYWRlcigp
LT5yZXNwb25zZU1JTUVUeXBlKCkpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9QbHVn
aW5Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2xvYWRlci9QbHVnaW5Eb2N1bWVudC5jcHAKaW5kZXgg
Nzg4NjkxZi4uNzE2ZmE4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUGx1Z2luRG9jdW1l
bnQuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL1BsdWdpbkRvY3VtZW50LmNwcApAQCAtNzUsMTkg
Kzc1LDE5IEBAIHZvaWQgUGx1Z2luVG9rZW5pemVyOjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgp
CiAgICAgbV9kb2MtPmFwcGVuZENoaWxkKHJvb3RFbGVtZW50LCBlYyk7CiAKICAgICBSZWZQdHI8
RWxlbWVudD4gYm9keSA9IG1fZG9jLT5jcmVhdGVFbGVtZW50KGJvZHlUYWcsIGZhbHNlKTsKLSAg
ICBib2R5LT5zZXRBdHRyaWJ1dGUobWFyZ2lud2lkdGhBdHRyLCAiMCIpOwotICAgIGJvZHktPnNl
dEF0dHJpYnV0ZShtYXJnaW5oZWlnaHRBdHRyLCAiMCIpOwotICAgIGJvZHktPnNldEF0dHJpYnV0
ZShiZ2NvbG9yQXR0ciwgInJnYigzOCwzOCwzOCkiKTsKKyAgICBib2R5LT5zZXRDU3RyaW5nQXR0
cmlidXRlKG1hcmdpbndpZHRoQXR0ciwgIjAiKTsKKyAgICBib2R5LT5zZXRDU3RyaW5nQXR0cmli
dXRlKG1hcmdpbmhlaWdodEF0dHIsICIwIik7CisgICAgYm9keS0+c2V0Q1N0cmluZ0F0dHJpYnV0
ZShiZ2NvbG9yQXR0ciwgInJnYigzOCwzOCwzOCkiKTsKIAogICAgIHJvb3RFbGVtZW50LT5hcHBl
bmRDaGlsZChib2R5LCBlYyk7CiAgICAgICAgIAogICAgIFJlZlB0cjxFbGVtZW50PiBlbWJlZEVs
ZW1lbnQgPSBtX2RvYy0+Y3JlYXRlRWxlbWVudChlbWJlZFRhZywgZmFsc2UpOwogICAgICAgICAK
ICAgICBtX2VtYmVkRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxFbWJlZEVsZW1lbnQqPihlbWJl
ZEVsZW1lbnQuZ2V0KCkpOwotICAgIG1fZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGUod2lkdGhB
dHRyLCAiMTAwJSIpOwotICAgIG1fZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGUoaGVpZ2h0QXR0
ciwgIjEwMCUiKTsKKyAgICBtX2VtYmVkRWxlbWVudC0+c2V0Q1N0cmluZ0F0dHJpYnV0ZSh3aWR0
aEF0dHIsICIxMDAlIik7CisgICAgbV9lbWJlZEVsZW1lbnQtPnNldENTdHJpbmdBdHRyaWJ1dGUo
aGVpZ2h0QXR0ciwgIjEwMCUiKTsKICAgICAKLSAgICBtX2VtYmVkRWxlbWVudC0+c2V0QXR0cmli
dXRlKG5hbWVBdHRyLCAicGx1Z2luIik7CisgICAgbV9lbWJlZEVsZW1lbnQtPnNldENTdHJpbmdB
dHRyaWJ1dGUobmFtZUF0dHIsICJwbHVnaW4iKTsKICAgICBtX2VtYmVkRWxlbWVudC0+c2V0QXR0
cmlidXRlKHNyY0F0dHIsIG1fZG9jLT51cmwoKS5zdHJpbmcoKSk7CiAgICAgbV9lbWJlZEVsZW1l
bnQtPnNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgbV9kb2MtPmZyYW1lKCktPmxvYWRlcigpLT5yZXNw
b25zZU1JTUVUeXBlKCkpOwogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvVGV4dERv
Y3VtZW50LmNwcCBiL1dlYkNvcmUvbG9hZGVyL1RleHREb2N1bWVudC5jcHAKaW5kZXggYTNkNzA2
MS4uYTRjZTYxYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvVGV4dERvY3VtZW50LmNwcAor
KysgYi9XZWJDb3JlL2xvYWRlci9UZXh0RG9jdW1lbnQuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAg
dm9pZCBUZXh0VG9rZW5pemVyOjp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHMsIGJvb2wp
CiAgICAgICAgIHJvb3RFbGVtZW50LT5hcHBlbmRDaGlsZChib2R5LCBlYyk7CiAKICAgICAgICAg
UmVmUHRyPEVsZW1lbnQ+IHByZUVsZW1lbnQgPSBtX2RvYy0+Y3JlYXRlRWxlbWVudChwcmVUYWcs
IGZhbHNlKTsKLSAgICAgICAgcHJlRWxlbWVudC0+c2V0QXR0cmlidXRlKCJzdHlsZSIsICJ3b3Jk
LXdyYXA6IGJyZWFrLXdvcmQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsiLCBlYyk7CisgICAgICAg
IHByZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsIEF0b21pY1N0cmluZygid29yZC13
cmFwOiBicmVhay13b3JkOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IiksIGVjKTsKIAogICAgICAg
ICBib2R5LT5hcHBlbmRDaGlsZChwcmVFbGVtZW50LCBlYyk7CiAgICAgICAgIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggNzM5
OGVmNC4uMThiZmU0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCkBAIC00MjksMTYgKzQyOSwxNiBAQCBQYXNzUmVmUHRyPFJlc291
cmNlSGFuZGxlPiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNyZWF0ZVJlc291cmNlSGFuZGxlKGNv
bnN0IEtVUgogewogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgbV9mcmFt
ZS0+bG9hZGVyKCktPmFwcGx5VXNlckFnZW50KHJlcXVlc3QpOwotICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKCJDYWNoZS1Db250cm9sIiwgIm1heC1hZ2U9MCIpOworICAgIHJlcXVlc3Qu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJzOjpDYWNoZUNvbnRyb2wsICJtYXgtYWdlPTAi
KTsKIAogICAgIGlmIChuZXdlc3RDYWNoZWRSZXNvdXJjZSkgewotICAgICAgICBjb25zdCBTdHJp
bmcmIGxhc3RNb2RpZmllZCA9IG5ld2VzdENhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLmh0dHBI
ZWFkZXJGaWVsZCgiTGFzdC1Nb2RpZmllZCIpOwotICAgICAgICBjb25zdCBTdHJpbmcmIGVUYWcg
PSBuZXdlc3RDYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoIkVUYWci
KTsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBsYXN0TW9kaWZpZWQgPSBuZXdlc3RDYWNoZWRSZXNv
dXJjZS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlcnM6Okxhc3RNb2RpZmll
ZCk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgZVRhZyA9IG5ld2VzdENhY2hlZFJlc291cmNlLT5y
ZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyczo6RVRhZyk7CiAgICAgICAgIGlm
ICghbGFzdE1vZGlmaWVkLmlzRW1wdHkoKSB8fCAhZVRhZy5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIGlmICghbGFzdE1vZGlmaWVkLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXF1ZXN0
LnNldEhUVFBIZWFkZXJGaWVsZCgiSWYtTW9kaWZpZWQtU2luY2UiLCBsYXN0TW9kaWZpZWQpOwor
ICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJzOjpJ
Zk1vZGlmaWVkU2luY2UsIGxhc3RNb2RpZmllZCk7CiAgICAgICAgICAgICBpZiAoIWVUYWcuaXNF
bXB0eSgpKQotICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJJZi1O
b25lLU1hdGNoIiwgZVRhZyk7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVy
RmllbGQoSFRUUEhlYWRlcnM6OklmTm9uZU1hdGNoLCBlVGFnKTsKICAgICAgICAgfQogICAgIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAgYi9XZWJDb3JlL2xv
YWRlci9sb2FkZXIuY3BwCmluZGV4IDY5NWEwMzQuLjUyM2FmNmEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvbG9hZGVyL2xvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcApAQCAt
MzA5LDE2ICszMDksMTYgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVlc3Rz
KFJlcXVlc3RRdWV1ZSYgcmVxdWVzdHNQZW5kaW5nLCBib29sJiBzZXIKICAgICAgICAgICAgIENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZVRvUmV2YWxpZGF0ZSA9IHJlcXVlc3QtPmNhY2hlZFJlc291
cmNlKCktPnJlc291cmNlVG9SZXZhbGlkYXRlKCk7CiAgICAgICAgICAgICBBU1NFUlQocmVzb3Vy
Y2VUb1JldmFsaWRhdGUtPmNhblVzZUNhY2hlVmFsaWRhdG9yKCkpOwogICAgICAgICAgICAgQVNT
RVJUKHJlc291cmNlVG9SZXZhbGlkYXRlLT5pc0xvYWRlZCgpKTsKLSAgICAgICAgICAgIGNvbnN0
IFN0cmluZyYgbGFzdE1vZGlmaWVkID0gcmVzb3VyY2VUb1JldmFsaWRhdGUtPnJlc3BvbnNlKCku
aHR0cEhlYWRlckZpZWxkKCJMYXN0LU1vZGlmaWVkIik7Ci0gICAgICAgICAgICBjb25zdCBTdHJp
bmcmIGVUYWcgPSByZXNvdXJjZVRvUmV2YWxpZGF0ZS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmll
bGQoIkVUYWciKTsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgbGFzdE1vZGlmaWVkID0gcmVz
b3VyY2VUb1JldmFsaWRhdGUtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJz
OjpMYXN0TW9kaWZpZWQpOworICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBlVGFnID0gcmVzb3Vy
Y2VUb1JldmFsaWRhdGUtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJzOjpF
VGFnKTsKICAgICAgICAgICAgIGlmICghbGFzdE1vZGlmaWVkLmlzRW1wdHkoKSB8fCAhZVRhZy5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZG9jTG9hZGVyLT5jYWNoZVBvbGlj
eSgpICE9IENhY2hlUG9saWN5UmVsb2FkKTsKICAgICAgICAgICAgICAgICBpZiAoZG9jTG9hZGVy
LT5jYWNoZVBvbGljeSgpID09IENhY2hlUG9saWN5UmV2YWxpZGF0ZSkKLSAgICAgICAgICAgICAg
ICAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiQ2FjaGUtQ29udHJvbCIs
ICJtYXgtYWdlPTAiKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldEhU
VFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyczo6Q2FjaGVDb250cm9sLCAibWF4LWFnZT0wIik7CiAg
ICAgICAgICAgICAgICAgaWYgKCFsYXN0TW9kaWZpZWQuaXNFbXB0eSgpKQotICAgICAgICAgICAg
ICAgICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJJZi1Nb2RpZmllZC1T
aW5jZSIsIGxhc3RNb2RpZmllZCk7CisgICAgICAgICAgICAgICAgICAgIHJlc291cmNlUmVxdWVz
dC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlcnM6OklmTW9kaWZpZWRTaW5jZSwgbGFzdE1v
ZGlmaWVkKTsKICAgICAgICAgICAgICAgICBpZiAoIWVUYWcuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgICAgICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJJZi1Ob25lLU1h
dGNoIiwgZVRhZyk7CisgICAgICAgICAgICAgICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRIVFRQ
SGVhZGVyRmllbGQoSFRUUEhlYWRlcnM6OklmTm9uZU1hdGNoLCBlVGFnKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3Bw
IGIvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCAyYzlhMzQzLi5mMTFlMTQyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUvcGFn
ZS9FdmVudFNvdXJjZS5jcHAKQEAgLTg2LDEwICs4NiwxMCBAQCB2b2lkIEV2ZW50U291cmNlOjpj
b25uZWN0KCkKIHsKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3VybCk7CiAgICAgcmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKLSAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVs
ZCgiQWNjZXB0IiwgInRleHQvZXZlbnQtc3RyZWFtIik7Ci0gICAgcmVxdWVzdC5zZXRIVFRQSGVh
ZGVyRmllbGQoIkNhY2hlLUNvbnRyb2wiLCAibm8tY2FjaGUiKTsKKyAgICByZXF1ZXN0LnNldEhU
VFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyczo6QWNjZXB0LCAidGV4dC9ldmVudC1zdHJlYW0iKTsK
KyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyczo6Q2FjaGVDb250cm9s
LCAibm8tY2FjaGUiKTsKICAgICBpZiAoIW1fbGFzdEV2ZW50SWQuaXNFbXB0eSgpKQotICAgICAg
ICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiTGFzdC1FdmVudC1JRCIsIG1fbGFzdEV2ZW50
SWQpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChBdG9taWNTdHJpbmcoIkxh
c3QtRXZlbnQtSUQiKSwgbV9sYXN0RXZlbnRJZCk7CiAKICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDA2ZWE1NmIuLjc2MWJmYjUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTM5Niw3ICszOTYs
OCBAQCBjb25zdCBGb250RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0YShjb25zdCBGb250JiBm
b250LCBpbnQmIGZhbWlseUluZGV4LCBGb250UwogCiAgICAgICAgIGlmIChmb250U2VsZWN0b3Ip
IHsKICAgICAgICAgICAgIC8vIFRyeSB0aGUgdXNlcidzIHByZWZlcnJlZCBzdGFuZGFyZCBmb250
LgotICAgICAgICAgICAgaWYgKEZvbnREYXRhKiBkYXRhID0gZm9udFNlbGVjdG9yLT5nZXRGb250
RGF0YShmb250LmZvbnREZXNjcmlwdGlvbigpLCAiLXdlYmtpdC1zdGFuZGFyZCIpKQorICAgICAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHdlYmtpdFN0YW5kYXJkQXRv
bSwgKCItd2Via2l0LXN0YW5kYXJkIikpOworICAgICAgICAgICAgaWYgKEZvbnREYXRhKiBkYXRh
ID0gZm9udFNlbGVjdG9yLT5nZXRGb250RGF0YShmb250LmZvbnREZXNjcmlwdGlvbigpLCB3ZWJr
aXRTdGFuZGFyZEF0b20pKQogICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOwogICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAppbmRleCA0MTNm
YjdiLi5iZTU5YjJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhl
YWRlck1hcC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAu
Y3BwCkBAIC0zOCw2ICszOCwyNCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK25hbWVzcGFjZSBIVFRQSGVhZGVycyB7CisgICAgY29uc3QgY2hhciogY29u
c3QgQWNjZXB0ID0gIkFjY2VwdCI7CisgICAgY29uc3QgY2hhciogY29uc3QgQXV0aG9yaXphdGlv
biA9ICJBdXRob3JpemF0aW9uIjsKKyAgICBjb25zdCBjaGFyKiBjb25zdCBDYWNoZUNvbnRyb2wg
PSAiQ2FjaGUtQ29udHJvbCI7CisgICAgY29uc3QgY2hhciogY29uc3QgQ29udGVudFR5cGUgPSAi
Q29udGVudC1UeXBlIjsKKyAgICBjb25zdCBjaGFyKiBjb25zdCBFVGFnID0gIkVUYWciOworICAg
IGNvbnN0IGNoYXIqIGNvbnN0IElmTWF0Y2ggPSAiSWYtTWF0Y2giOworICAgIGNvbnN0IGNoYXIq
IGNvbnN0IElmTW9kaWZpZWRTaW5jZSA9ICJJZi1Nb2RpZmllZC1TaW5jZSI7CisgICAgY29uc3Qg
Y2hhciogY29uc3QgSWZOb25lTWF0Y2ggPSAiSWYtTm9uZS1NYXRjaCI7CisgICAgY29uc3QgY2hh
ciogY29uc3QgSWZSYW5nZSA9ICJJZi1SYW5nZSI7CisgICAgY29uc3QgY2hhciogY29uc3QgSWZV
bm1vZGlmaWVkU2luY2UgPSAiSWYtVW5tb2RpZmllZC1TaW5jZSI7CisgICAgY29uc3QgY2hhciog
Y29uc3QgTGFzdE1vZGlmaWVkID0gIkxhc3QtTW9kaWZpZWQiOworICAgIGNvbnN0IGNoYXIqIGNv
bnN0IE9yaWdpbiA9ICJPcmlnaW4iOworICAgIGNvbnN0IGNoYXIqIGNvbnN0IFByYWdtYSA9ICJQ
cmFnbWEiOworICAgIGNvbnN0IGNoYXIqIGNvbnN0IFJlZmVyZXIgPSAiUmVmZXJlciI7CisgICAg
Y29uc3QgY2hhciogY29uc3QgVXNlckFnZW50ID0gIlVzZXItQWdlbnQiOworfQorCiBhdXRvX3B0
cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBIVFRQSGVhZGVyTWFwOjpjb3B5RGF0YSgp
IGNvbnN0CiB7CiAgICAgYXV0b19wdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gZGF0
YShuZXcgQ3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YSgpKTsKQEAgLTk2LDQgKzExNCw5IEBA
IHBhaXI8SFRUUEhlYWRlck1hcDo6aXRlcmF0b3IsIGJvb2w+IEhUVFBIZWFkZXJNYXA6OmFkZChj
b25zdCBjaGFyKiBuYW1lLCBjb25zdCBTCiAgICAgcmV0dXJuIEhhc2hNYXA8QXRvbWljU3RyaW5n
LCBTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD46OmFkZDxjb25zdCBjaGFyKiwgQ2FzZUZvbGRpbmdD
U3RyaW5nVHJhbnNsYXRvcj4obmFtZSwgdmFsdWUpOwogfQogCit2b2lkIEhUVFBIZWFkZXJNYXA6
OnJlbW92ZShjb25zdCBjaGFyKiBuYW1lKQoreworICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBT
dHJpbmcsIENhc2VGb2xkaW5nSGFzaD46OnJlbW92ZTxjb25zdCBjaGFyKiwgQ2FzZUZvbGRpbmdD
U3RyaW5nVHJhbnNsYXRvcj4obmFtZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmggYi9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCmluZGV4IGRmZGU5NzQuLmJhY2Vh
OTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmgK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaApAQCAtNTUsMTQg
KzU1LDQwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD46OmFkZChu
YW1lLCB2YWx1ZSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgcmVtb3ZlKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgSGFzaE1hcDxB
dG9taWNTdHJpbmcsIFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjo6cmVtb3ZlKG5hbWUpOworICAg
ICAgICB9CiAKICAgICAgICAgLy8gQWx0ZXJuYXRlIGFjY2Vzc29ycyB0aGF0IGFyZSBmYXN0ZXIg
dGhhbiBjb252ZXJ0aW5nIHRoZSBjaGFyKiB0byBBdG9taWNTdHJpbmcgZmlyc3QuCiAgICAgICAg
IGJvb2wgY29udGFpbnMoY29uc3QgY2hhciopIGNvbnN0OwogICAgICAgICBTdHJpbmcgZ2V0KGNv
bnN0IGNoYXIqKSBjb25zdDsKICAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0
IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgICAgICAKKyAgICAgICAgdm9p
ZCByZW1vdmUoY29uc3QgY2hhciopOwogICAgIH07CiAKKyAgICAvLyBDb21tb24gSFRUUCBoZWFk
ZXIgbmFtZXMuCisgICAgLy8gKEl0IHdvdWxkIGJlIG1vcmUgY29udmVuaWVudCBpZiB0aGVzZSB3
ZXJlIEF0b21pY1N0cmluZ3MsIGJ1dCB0aGV5IGdldAorICAgIC8vIGFjY2Vzc2VkIG9uIG11bHRp
cGxlIHRocmVhZHMsIGFuZCBBdG9taWNTdHJpbmcgaXNuJ3QgdGhyZWFkLXNhZmUuKQorICAgIG5h
bWVzcGFjZSBIVFRQSGVhZGVycyB7CisgICAgICAgIGV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBB
Y2NlcHQ7CisgICAgICAgIGV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBBdXRob3JpemF0aW9uOwor
ICAgICAgICBleHRlcm4gY29uc3QgY2hhciogY29uc3QgQ2FjaGVDb250cm9sOworICAgICAgICBl
eHRlcm4gY29uc3QgY2hhciogY29uc3QgQ29udGVudFR5cGU7CisgICAgICAgIGV4dGVybiBjb25z
dCBjaGFyKiBjb25zdCBFVGFnOworICAgICAgICBleHRlcm4gY29uc3QgY2hhciogY29uc3QgSWZN
YXRjaDsKKyAgICAgICAgZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IElmTW9kaWZpZWRTaW5jZTsK
KyAgICAgICAgZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IElmTm9uZU1hdGNoOworICAgICAgICBl
eHRlcm4gY29uc3QgY2hhciogY29uc3QgSWZSYW5nZTsKKyAgICAgICAgZXh0ZXJuIGNvbnN0IGNo
YXIqIGNvbnN0IElmVW5tb2RpZmllZFNpbmNlOworICAgICAgICBleHRlcm4gY29uc3QgY2hhciog
Y29uc3QgTGFzdE1vZGlmaWVkOworICAgICAgICBleHRlcm4gY29uc3QgY2hhciogY29uc3QgT3Jp
Z2luOworICAgICAgICBleHRlcm4gY29uc3QgY2hhciogY29uc3QgUHJhZ21hOworICAgICAgICBl
eHRlcm4gY29uc3QgY2hhciogY29uc3QgUmVmZXJlcjsKKyAgICAgICAgZXh0ZXJuIGNvbnN0IGNo
YXIqIGNvbnN0IFVzZXJBZ2VudDsKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEhUVFBIZWFkZXJNYXBfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IDRkOWMxMDIuLjVjMmQxYTQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTIz
NCw3ICsyMzQsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OmNsZWFySFRUUFJlZmVycmVy
KCkKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCiAKLSAgICBtX2h0dHBIZWFkZXJG
aWVsZHMucmVtb3ZlKCJSZWZlcmVyIik7CisgICAgbV9odHRwSGVhZGVyRmllbGRzLnJlbW92ZShI
VFRQSGVhZGVyczo6UmVmZXJlcik7CiAKICAgICBpZiAodXJsKCkucHJvdG9jb2xJbkhUVFBGYW1p
bHkoKSkKICAgICAgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7CkBAIC0yNDQs
NyArMjQ0LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpjbGVhckhUVFBPcmlnaW4oKQog
ewogICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKIAotICAgIG1faHR0cEhlYWRlckZpZWxk
cy5yZW1vdmUoIk9yaWdpbiIpOworICAgIG1faHR0cEhlYWRlckZpZWxkcy5yZW1vdmUoSFRUUEhl
YWRlcnM6Ok9yaWdpbik7CiAKICAgICBpZiAodXJsKCkucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkK
ICAgICAgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7CkBAIC0zNjUsMTEgKzM2
NSwxMSBAQCBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0QmFzZSYgYSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0QmFzZSYgYikKIAogYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpp
c0NvbmRpdGlvbmFsKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKG1faHR0cEhlYWRlckZpZWxkcy5j
b250YWlucygiSWYtTWF0Y2giKSB8fAotICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLmNv
bnRhaW5zKCJJZi1Nb2RpZmllZC1TaW5jZSIpIHx8Ci0gICAgICAgICAgICBtX2h0dHBIZWFkZXJG
aWVsZHMuY29udGFpbnMoIklmLU5vbmUtTWF0Y2giKSB8fAotICAgICAgICAgICAgbV9odHRwSGVh
ZGVyRmllbGRzLmNvbnRhaW5zKCJJZi1SYW5nZSIpIHx8Ci0gICAgICAgICAgICBtX2h0dHBIZWFk
ZXJGaWVsZHMuY29udGFpbnMoIklmLVVubW9kaWZpZWQtU2luY2UiKSk7CisgICAgcmV0dXJuICht
X2h0dHBIZWFkZXJGaWVsZHMuY29udGFpbnMoSFRUUEhlYWRlcnM6OklmTWF0Y2gpCisgICAgICAg
ICAgICB8fCBtX2h0dHBIZWFkZXJGaWVsZHMuY29udGFpbnMoSFRUUEhlYWRlcnM6OklmTW9kaWZp
ZWRTaW5jZSkKKyAgICAgICAgICAgIHx8IG1faHR0cEhlYWRlckZpZWxkcy5jb250YWlucyhIVFRQ
SGVhZGVyczo6SWZOb25lTWF0Y2gpCisgICAgICAgICAgICB8fCBtX2h0dHBIZWFkZXJGaWVsZHMu
Y29udGFpbnMoSFRUUEhlYWRlcnM6OklmUmFuZ2UpCisgICAgICAgICAgICB8fCBtX2h0dHBIZWFk
ZXJGaWVsZHMuY29udGFpbnMoSFRUUEhlYWRlcnM6OklmVW5tb2RpZmllZFNpbmNlKSk7CiB9CiAK
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCmluZGV4
IDQ2NmI0ODcuLmYyZDk2MWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuaApAQCAtODUsMjIgKzg1LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCBhZGRIVFRQSGVhZGVyRmllbGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAgICAgICAgdm9pZCBhZGRIVFRQSGVhZGVyRmllbGRz
KGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlckZpZWxkcyk7CiAgICAgICAgIAotICAgICAgICBT
dHJpbmcgaHR0cENvbnRlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gaHR0cEhlYWRlckZpZWxkKCJD
b250ZW50LVR5cGUiKTsgIH0KLSAgICAgICAgdm9pZCBzZXRIVFRQQ29udGVudFR5cGUoY29uc3Qg
U3RyaW5nJiBodHRwQ29udGVudFR5cGUpIHsgc2V0SFRUUEhlYWRlckZpZWxkKCJDb250ZW50LVR5
cGUiLCBodHRwQ29udGVudFR5cGUpOyB9CisgICAgICAgIFN0cmluZyBodHRwQ29udGVudFR5cGUo
KSBjb25zdCB7IHJldHVybiBodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlcnM6OkNvbnRlbnRUeXBl
KTsgIH0KKyAgICAgICAgdm9pZCBzZXRIVFRQQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBodHRw
Q29udGVudFR5cGUpIHsgc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJzOjpDb250ZW50VHlw
ZSwgaHR0cENvbnRlbnRUeXBlKTsgfQogICAgICAgICAKLSAgICAgICAgU3RyaW5nIGh0dHBSZWZl
cnJlcigpIGNvbnN0IHsgcmV0dXJuIGh0dHBIZWFkZXJGaWVsZCgiUmVmZXJlciIpOyB9Ci0gICAg
ICAgIHZvaWQgc2V0SFRUUFJlZmVycmVyKGNvbnN0IFN0cmluZyYgaHR0cFJlZmVycmVyKSB7IHNl
dEhUVFBIZWFkZXJGaWVsZCgiUmVmZXJlciIsIGh0dHBSZWZlcnJlcik7IH0KKyAgICAgICAgU3Ry
aW5nIGh0dHBSZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJuIGh0dHBIZWFkZXJGaWVsZChIVFRQSGVh
ZGVyczo6UmVmZXJlcik7IH0KKyAgICAgICAgdm9pZCBzZXRIVFRQUmVmZXJyZXIoY29uc3QgU3Ry
aW5nJiBodHRwUmVmZXJyZXIpIHsgc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJzOjpSZWZl
cmVyLCBodHRwUmVmZXJyZXIpOyB9CiAgICAgICAgIHZvaWQgY2xlYXJIVFRQUmVmZXJyZXIoKTsK
ICAgICAgICAgCi0gICAgICAgIFN0cmluZyBodHRwT3JpZ2luKCkgY29uc3QgeyByZXR1cm4gaHR0
cEhlYWRlckZpZWxkKCJPcmlnaW4iKTsgfQotICAgICAgICB2b2lkIHNldEhUVFBPcmlnaW4oY29u
c3QgU3RyaW5nJiBodHRwT3JpZ2luKSB7IHNldEhUVFBIZWFkZXJGaWVsZCgiT3JpZ2luIiwgaHR0
cE9yaWdpbik7IH0KKyAgICAgICAgU3RyaW5nIGh0dHBPcmlnaW4oKSBjb25zdCB7IHJldHVybiBo
dHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlcnM6Ok9yaWdpbik7IH0KKyAgICAgICAgdm9pZCBzZXRI
VFRQT3JpZ2luKGNvbnN0IFN0cmluZyYgaHR0cE9yaWdpbikgeyBzZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlcnM6Ok9yaWdpbiwgaHR0cE9yaWdpbik7IH0KICAgICAgICAgdm9pZCBjbGVhckhU
VFBPcmlnaW4oKTsKIAotICAgICAgICBTdHJpbmcgaHR0cFVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0
dXJuIGh0dHBIZWFkZXJGaWVsZCgiVXNlci1BZ2VudCIpOyB9Ci0gICAgICAgIHZvaWQgc2V0SFRU
UFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGh0dHBVc2VyQWdlbnQpIHsgc2V0SFRUUEhlYWRlckZp
ZWxkKCJVc2VyLUFnZW50IiwgaHR0cFVzZXJBZ2VudCk7IH0KKyAgICAgICAgU3RyaW5nIGh0dHBV
c2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlcnM6OlVz
ZXJBZ2VudCk7IH0KKyAgICAgICAgdm9pZCBzZXRIVFRQVXNlckFnZW50KGNvbnN0IFN0cmluZyYg
aHR0cFVzZXJBZ2VudCkgeyBzZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlcnM6OlVzZXJBZ2Vu
dCwgaHR0cFVzZXJBZ2VudCk7IH0KIAotICAgICAgICBTdHJpbmcgaHR0cEFjY2VwdCgpIGNvbnN0
IHsgcmV0dXJuIGh0dHBIZWFkZXJGaWVsZCgiQWNjZXB0Iik7IH0KLSAgICAgICAgdm9pZCBzZXRI
VFRQQWNjZXB0KGNvbnN0IFN0cmluZyYgaHR0cEFjY2VwdCkgeyBzZXRIVFRQSGVhZGVyRmllbGQo
IkFjY2VwdCIsIGh0dHBBY2NlcHQpOyB9CisgICAgICAgIFN0cmluZyBodHRwQWNjZXB0KCkgY29u
c3QgeyByZXR1cm4gaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJzOjpBY2NlcHQpOyB9CisgICAg
ICAgIHZvaWQgc2V0SFRUUEFjY2VwdChjb25zdCBTdHJpbmcmIGh0dHBBY2NlcHQpIHsgc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJzOjpBY2NlcHQsIGh0dHBBY2NlcHQpOyB9CiAKICAgICAg
ICAgdm9pZCBzZXRSZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eShjb25zdCBTdHJpbmcmIGVuY29kaW5nMSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZzIgPSBTdHJp
bmcoKSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZzMgPSBTdHJpbmcoKSk7CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggZTA2YzZmOC4u
YjU3ZGJlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmgKQEAgLTc1LDYgKzc1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SFRUUEhlYWRl
ckZpZWxkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAg
ICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaHR0cEhlYWRlckZpZWxkcygpIGNvbnN0OwogCisgICAg
U3RyaW5nIGNvbnRlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gaHR0cEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJzOjpDb250ZW50VHlwZSk7IH0KKwogICAgIGJvb2wgaXNNdWx0aXBhcnQoKSBjb25zdCB7
IHJldHVybiBtaW1lVHlwZSgpID09ICJtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIjsgfQogCiAg
ICAgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCmluZGV4IGQ4YTgxMmYu
LmI2YmRjYTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlSGFuZGxlTWFuYWdlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcApAQCAtMjQ4LDEzICsyNDgsMTMgQEAgc3RhdGljIHNp
emVfdCBoZWFkZXJDYWxsYmFjayhjaGFyKiBwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIs
IHZvaWQqIGRhdGEpCiAgICAgICAgIGVyciA9IGN1cmxfZWFzeV9nZXRpbmZvKGgsIENVUkxJTkZP
X1JFU1BPTlNFX0NPREUsICZodHRwQ29kZSk7CiAgICAgICAgIGQtPm1fcmVzcG9uc2Uuc2V0SFRU
UFN0YXR1c0NvZGUoaHR0cENvZGUpOwogCi0gICAgICAgIGQtPm1fcmVzcG9uc2Uuc2V0TWltZVR5
cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShkLT5tX3Jlc3BvbnNlLmh0dHBIZWFkZXJG
aWVsZCgiQ29udGVudC1UeXBlIikpKTsKLSAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRUZXh0RW5j
b2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShkLT5tX3Jlc3BvbnNlLmh0dHBI
ZWFkZXJGaWVsZCgiQ29udGVudC1UeXBlIikpKTsKLSAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRT
dWdnZXN0ZWRGaWxlbmFtZShmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKGQtPm1f
cmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJDb250ZW50LURpc3Bvc2l0aW9uIikpKTsKKyAgICAg
ICAgZC0+bV9yZXNwb25zZS5zZXRNaW1lVHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBl
KGQtPm1fcmVzcG9uc2UuY29udGVudFR5cGUoKSkpOworICAgICAgICBkLT5tX3Jlc3BvbnNlLnNl
dFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGQtPm1fcmVzcG9u
c2UuY29udGVudFR5cGUoKSkpOworICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFN1Z2dlc3RlZEZp
bGVuYW1lKGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oZC0+bV9yZXNwb25zZS5o
dHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlcnM6OkNvbnRlbnREaXNwb3NpdGlvbikpKTsKIAogICAg
ICAgICAvLyBIVFRQIHJlZGlyZWN0aW9uCiAgICAgICAgIGlmIChodHRwQ29kZSA+PSAzMDAgJiYg
aHR0cENvZGUgPCA0MDApIHsKLSAgICAgICAgICAgIFN0cmluZyBsb2NhdGlvbiA9IGQtPm1fcmVz
cG9uc2UuaHR0cEhlYWRlckZpZWxkKCJsb2NhdGlvbiIpOworICAgICAgICAgICAgU3RyaW5nIGxv
Y2F0aW9uID0gZC0+bV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlcnM6OkxvY2F0
aW9uKTsKICAgICAgICAgICAgIGlmICghbG9jYXRpb24uaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICAgICAgS1VSTCBuZXdVUkwgPSBLVVJMKGpvYi0+cmVxdWVzdCgpLnVybCgpLCBsb2NhdGlvbik7
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFj
Lm1tCmluZGV4IDM2MDQyNWUuLjQwYTAyYTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtMjA3LDcgKzIwNyw3IEBAIGJvb2wg
UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KEZyYW1lKiBmcmFtZSkKICAgICBpZiAoIWQtPm1faW5pdGlh
bENyZWRlbnRpYWwuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IERpZ2Vz
dCBhdXRoZW50aWNhdGlvbiwgYW5kIFByb3h5LUF1dGhvcml6YXRpb24uCiAgICAgICAgIFN0cmlu
ZyBhdXRoSGVhZGVyID0gIkJhc2ljICIgKyBlbmNvZGVCYXNpY0F1dGhvcml6YXRpb24oZC0+bV9p
bml0aWFsQ3JlZGVudGlhbC51c2VyKCksIGQtPm1faW5pdGlhbENyZWRlbnRpYWwucGFzc3dvcmQo
KSk7Ci0gICAgICAgIGQtPm1fcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGQoIkF1dGhvcml6YXRp
b24iLCBhdXRoSGVhZGVyKTsKKyAgICAgICAgZC0+bV9yZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVs
ZChBdG9taWNTdHJpbmcoSFRUUEhlYWRlcnM6OkF1dGhvcml6YXRpb24pLCBhdXRoSGVhZGVyKTsK
ICAgICB9CiAjZW5kaWYKIApAQCAtMTA1Niw3ICsxMDU2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNo
YWxsZW4KICAgICAgICAgICAgIAogICAgICAgICBpZiAoIWRlbGVnYXRlLT5tX2luaXRpYWxDcmVk
ZW50aWFsLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgU3RyaW5nIGF1dGhIZWFkZXIgPSAiQmFz
aWMgIiArIGVuY29kZUJhc2ljQXV0aG9yaXphdGlvbihkZWxlZ2F0ZS0+bV9pbml0aWFsQ3JlZGVu
dGlhbC51c2VyKCksIGRlbGVnYXRlLT5tX2luaXRpYWxDcmVkZW50aWFsLnBhc3N3b3JkKCkpOwot
ICAgICAgICAgICAgcmVxdWVzdFdpdGhJbml0aWFsQ3JlZGVudGlhbHMuYWRkSFRUUEhlYWRlckZp
ZWxkKCJBdXRob3JpemF0aW9uIiwgYXV0aEhlYWRlcik7CisgICAgICAgICAgICByZXF1ZXN0V2l0
aEluaXRpYWxDcmVkZW50aWFscy5hZGRIVFRQSGVhZGVyRmllbGQoQXRvbWljU3RyaW5nKEhUVFBI
ZWFkZXJzOjpBdXRob3JpemF0aW9uKSwgYXV0aEhlYWRlcik7CiAgICAgICAgIH0KICAgICAgICAg
Y29ubmVjdGlvbiA9IFtbTlNVUkxDb25uZWN0aW9uIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6cmVx
dWVzdFdpdGhJbml0aWFsQ3JlZGVudGlhbHMubnNVUkxSZXF1ZXN0KCkgZGVsZWdhdGU6ZGVsZWdh
dGUgc3RhcnRJbW1lZGlhdGVseTpOT107CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0F0b21pY1N0cmluZy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRvbWlj
U3RyaW5nLmNwcAppbmRleCAxN2Q3ODMyLi43MjQ1OWMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
QXRvbWljU3RyaW5nLmNwcApAQCAtMzAyLDYgKzMwMiw4IEBAIERFRklORV9HTE9CQUwoQXRvbWlj
U3RyaW5nLCBlbXB0eUF0b20sICIiKQogREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIHRleHRB
dG9tLCAiI3RleHQiKQogREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIGNvbW1lbnRBdG9tLCAi
I2NvbW1lbnQiKQogREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIHN0YXJBdG9tLCAiKiIpCitE
RUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgdHJ1ZUF0b20sICJ0cnVlIikKK0RFRklORV9HTE9C
QUwoQXRvbWljU3RyaW5nLCBmYWxzZUF0b20sICJmYWxzZSIpCiAKIHZvaWQgQXRvbWljU3RyaW5n
Ojppbml0KCkKIHsKQEAgLTMxNiw2ICszMTgsOCBAQCB2b2lkIEF0b21pY1N0cmluZzo6aW5pdCgp
CiAgICAgICAgIG5ldyAoKHZvaWQqKSZ0ZXh0QXRvbSkgQXRvbWljU3RyaW5nKCIjdGV4dCIpOwog
ICAgICAgICBuZXcgKCh2b2lkKikmY29tbWVudEF0b20pIEF0b21pY1N0cmluZygiI2NvbW1lbnQi
KTsKICAgICAgICAgbmV3ICgodm9pZCopJnN0YXJBdG9tKSBBdG9taWNTdHJpbmcoIioiKTsKKyAg
ICAgICAgbmV3ICgodm9pZCopJnRydWVBdG9tKSBBdG9taWNTdHJpbmcoInRydWUiKTsKKyAgICAg
ICAgbmV3ICgodm9pZCopJmZhbHNlQXRvbSkgQXRvbWljU3RyaW5nKCJmYWxzZSIpOwogCiAgICAg
ICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvQXRvbWljU3RyaW5nLmggYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRvbWljU3Ry
aW5nLmgKaW5kZXggNDdkMDdjNS4uMTliOWM0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0F0b21pY1N0cmluZy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNT
dHJpbmcuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdCgp
OwogCiAgICAgQXRvbWljU3RyaW5nKCkgeyB9Ci0gICAgQXRvbWljU3RyaW5nKGNvbnN0IGNoYXIq
IHMpIDogbV9zdHJpbmcoYWRkKHMpKSB7IH0KKyAgICBleHBsaWNpdCBBdG9taWNTdHJpbmcoY29u
c3QgY2hhciogcykgOiBtX3N0cmluZyhhZGQocykpIHsgfQogICAgIEF0b21pY1N0cmluZyhjb25z
dCBVQ2hhciogcywgaW50IGxlbmd0aCkgOiBtX3N0cmluZyhhZGQocywgbGVuZ3RoKSkgeyB9CiAg
ICAgQXRvbWljU3RyaW5nKGNvbnN0IFVDaGFyKiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CiAj
aWYgVVNFKEpTQykKQEAgLTE1Niw2ICsxNTYsOCBAQCBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5n
Q2FzZShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4gZQog
ICAgIGV4dGVybiBjb25zdCBBdG9taWNTdHJpbmcgdGV4dEF0b207CiAgICAgZXh0ZXJuIGNvbnN0
IEF0b21pY1N0cmluZyBjb21tZW50QXRvbTsKICAgICBleHRlcm4gY29uc3QgQXRvbWljU3RyaW5n
IHN0YXJBdG9tOworICAgIGV4dGVybiBjb25zdCBBdG9taWNTdHJpbmcgdHJ1ZUF0b207CisgICAg
ZXh0ZXJuIGNvbnN0IEF0b21pY1N0cmluZyBmYWxzZUF0b207CiAjZW5kaWYKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCmluZGV4IDJmZjUwZGYuLmEy
YWIwZmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKQEAgLTI1MCw3ICsyNTAsNyBAQCB2
b2lkIFJlbmRlck1lZGlhOjpjcmVhdGVUaW1lbGluZSgpCiB7CiAgICAgQVNTRVJUKCFtX3RpbWVs
aW5lKTsKICAgICBtX3RpbWVsaW5lID0gbmV3IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudChk
b2N1bWVudCgpLCBtZWRpYUVsZW1lbnQoKSk7Ci0gICAgbV90aW1lbGluZS0+c2V0QXR0cmlidXRl
KHByZWNpc2lvbkF0dHIsICJmbG9hdCIpOworICAgIG1fdGltZWxpbmUtPnNldENTdHJpbmdBdHRy
aWJ1dGUocHJlY2lzaW9uQXR0ciwgImZsb2F0Iik7CiAgICAgbV90aW1lbGluZS0+YXR0YWNoVG9Q
YXJlbnQobV90aW1lbGluZUNvbnRhaW5lci5nZXQoKSk7CiB9CiAKQEAgLTI2NSw4ICsyNjUsOCBA
QCB2b2lkIFJlbmRlck1lZGlhOjpjcmVhdGVWb2x1bWVTbGlkZXIoKQogewogICAgIEFTU0VSVCgh
bV92b2x1bWVTbGlkZXIpOwogICAgIG1fdm9sdW1lU2xpZGVyID0gbmV3IE1lZGlhQ29udHJvbFZv
bHVtZVNsaWRlckVsZW1lbnQoZG9jdW1lbnQoKSwgbWVkaWFFbGVtZW50KCkpOwotICAgIG1fdm9s
dW1lU2xpZGVyLT5zZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciwgImZsb2F0Iik7Ci0gICAgbV92
b2x1bWVTbGlkZXItPnNldEF0dHJpYnV0ZShtYXhBdHRyLCAiMSIpOworICAgIG1fdm9sdW1lU2xp
ZGVyLT5zZXRDU3RyaW5nQXR0cmlidXRlKHByZWNpc2lvbkF0dHIsICJmbG9hdCIpOworICAgIG1f
dm9sdW1lU2xpZGVyLT5zZXRDU3RyaW5nQXR0cmlidXRlKG1heEF0dHIsICIxIik7CiAgICAgbV92
b2x1bWVTbGlkZXItPnNldEF0dHJpYnV0ZSh2YWx1ZUF0dHIsIFN0cmluZzo6bnVtYmVyKG1lZGlh
RWxlbWVudCgpLT52b2x1bWUoKSkpOwogICAgIG1fdm9sdW1lU2xpZGVyLT5hdHRhY2hUb1BhcmVu
dChtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5LmggYi9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByb3Bl
cnR5LmgKaW5kZXggOTg0MDQ2Zi4uOTlmN2E3YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eS5oCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHku
aApAQCAtNDgxLDcgKzQ4MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIGlm
IChvbGQgJiYgdmFsdWUuaXNOdWxsKCkpIAogICAgICAgICAgICAgICAgIG5hbWVkQXR0ck1hcC0+
cmVtb3ZlQXR0cmlidXRlKG9sZC0+bmFtZSgpKTsgCiAgICAgICAgICAgICBlbHNlIGlmICghb2xk
ICYmICF2YWx1ZS5pc051bGwoKSkgCi0gICAgICAgICAgICAgICAgbmFtZWRBdHRyTWFwLT5hZGRB
dHRyaWJ1dGUoY29uc3RfY2FzdDxPd25lckVsZW1lbnQqPihvd25lckVsZW1lbnQpLT5jcmVhdGVB
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBuYW1lZEF0
dHJNYXAtPmFkZEF0dHJpYnV0ZShjb25zdF9jYXN0PE93bmVyRWxlbWVudCo+KG93bmVyRWxlbWVu
dCktPmNyZWF0ZUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBBdG9taWNTdHJpbmcodmFsdWUpKSk7
CiAgICAgICAgICAgICBlbHNlIGlmIChvbGQgJiYgIXZhbHVlLmlzTnVsbCgpKSAKICAgICAgICAg
ICAgICAgICBvbGQtPnNldFZhbHVlKHZhbHVlKTsgCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUuaCBiL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
VGVtcGxhdGUuaAppbmRleCBkNjVmZTBiLi4wYzBmYjgyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmgKKysrIGIvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUZW1w
bGF0ZS5oCkBAIC0xODEsNyArMTgxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB0
eXBlZGVmIGJvb2wgRGVjb3JhdGVkVHlwZTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBudWxsKCkg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhib29sIHR5
cGUpIHsgcmV0dXJuIHR5cGUgPyAidHJ1ZSIgOiAiZmFsc2UiOyB9CisgICAgICAgIHN0YXRpYyBT
dHJpbmcgdG9TdHJpbmcoYm9vbCB0eXBlKSB7IHJldHVybiB0eXBlID8gdHJ1ZUF0b20gOiBmYWxz
ZUF0b207IH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9z
dmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLmNwcAppbmRleCBiNmI2MmQxLi44NzdlZmZmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmNwcAorKysgYi9X
ZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmNwcApAQCAtNDMsNyArNDMs
NyBAQCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjp+U1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCgpCiBib29sIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0cikgewotICAgICAgICBz
ZXRFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQmFzZVZhbHVlKGF0dHItPnZhbHVlKCkgPT0gInRy
dWUiKTsKKyAgICAgICAgc2V0RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEJhc2VWYWx1ZShhdHRy
LT52YWx1ZSgpID09IHRydWVBdG9tKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwIGIvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAppbmRleCAwOTZmMGMyLi5lNWRjMTgzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCisrKyBiL1dl
YkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUGFz
c1JlZlB0cjxDU1NGb250RmFjZVNyY1ZhbHVlPiBTVkdGb250RmFjZVVyaUVsZW1lbnQ6OnNyY1Zh
bHVlKCkgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTRm9udEZhY2VTcmNWYWx1ZT4gc3JjID0gQ1NT
Rm9udEZhY2VTcmNWYWx1ZTo6Y3JlYXRlKGdldEF0dHJpYnV0ZShYTGlua05hbWVzOjpocmVmQXR0
cikpOwogICAgIEF0b21pY1N0cmluZyB2YWx1ZShnZXRBdHRyaWJ1dGUoZm9ybWF0QXR0cikpOwot
ICAgIHNyYy0+c2V0Rm9ybWF0KHZhbHVlLmlzRW1wdHkoKSA/ICJzdmciIDogdmFsdWUpOyAvLyBE
ZWZhdWx0IGZvcm1hdAorICAgIHNyYy0+c2V0Rm9ybWF0KHZhbHVlLmlzRW1wdHkoKSA/IEF0b21p
Y1N0cmluZygic3ZnIikgOiB2YWx1ZSk7IC8vIERlZmF1bHQgZm9ybWF0CiAgICAgcmV0dXJuIHNy
Yy5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcCBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhYzJlMGMxLi5jYzgx
ZDExIDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0zODYsMTUgKzM4NiwxNSBAQCB2b2lkIFhN
TEh0dHBSZXF1ZXN0OjpzZW5kKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX21ldGhvZCAhPSAiR0VUIiAmJiBtX21ldGhv
ZCAhPSAiSEVBRCIgJiYgbV91cmwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkgewotICAgICAgICBT
dHJpbmcgY29udGVudFR5cGUgPSBnZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiKTsKKyAg
ICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gZ2V0UmVxdWVzdEhlYWRlcihIVFRQSGVhZGVyczo6
Q29udGVudFR5cGUpOwogICAgICAgICBpZiAoY29udGVudFR5cGUuaXNFbXB0eSgpKSB7CiAjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICAgICAgICAgaWYgKHVzZXNEYXNoYm9hcmRC
YWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCi0gICAgICAgICAgICAgICAgc2V0UmVxdWVzdEhl
YWRlckludGVybmFsKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxl
bmNvZGVkIik7CisgICAgICAgICAgICAgICAgc2V0UmVxdWVzdEhlYWRlckludGVybmFsKEF0b21p
Y1N0cmluZyhIVFRQSGVhZGVyczo6Q29udGVudFR5cGUpLCAiYXBwbGljYXRpb24veC13d3ctZm9y
bS11cmxlbmNvZGVkIik7CiAgICAgICAgICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogdGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgY2hhcnNldCB1c2VkIGZvciBlbmNv
ZGluZy4KLSAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi94bWwiKTsKKyAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0SGVh
ZGVySW50ZXJuYWwoQXRvbWljU3RyaW5nKEhUVFBIZWFkZXJzOjpDb250ZW50VHlwZSksICJhcHBs
aWNhdGlvbi94bWwiKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FOiBBY2NvcmRpbmcg
dG8gWE1MSHR0cFJlcXVlc3QgTGV2ZWwgMiwgdGhpcyBzaG91bGQgdXNlIHRoZSBEb2N1bWVudC5p
bm5lckhUTUwgYWxnb3JpdGhtCkBAIC00MTcsMTQgKzQxNywxNCBAQCB2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpzZW5kKGNvbnN0IFN0cmluZyYgYm9keSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICghYm9keS5pc051bGwoKSAmJiBtX21ldGhvZCAhPSAiR0VUIiAm
JiBtX21ldGhvZCAhPSAiSEVBRCIgJiYgbV91cmwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkgewot
ICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgPSBnZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5
cGUiKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gZ2V0UmVxdWVzdEhlYWRlcihIVFRQ
SGVhZGVyczo6Q29udGVudFR5cGUpOwogICAgICAgICBpZiAoY29udGVudFR5cGUuaXNFbXB0eSgp
KSB7CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICAgICAgICAgaWYgKHVzZXNE
YXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCi0gICAgICAgICAgICAgICAgc2V0
UmVxdWVzdEhlYWRlckludGVybmFsKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veC13d3ct
Zm9ybS11cmxlbmNvZGVkIik7CisgICAgICAgICAgICAgICAgc2V0UmVxdWVzdEhlYWRlckludGVy
bmFsKEF0b21pY1N0cmluZyhIVFRQSGVhZGVyczo6Q29udGVudFR5cGUpLCAiYXBwbGljYXRpb24v
eC13d3ctZm9ybS11cmxlbmNvZGVkIik7CiAgICAgICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAg
ICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoIkNvbnRlbnQtVHlwZSIsICJhcHBs
aWNhdGlvbi94bWwiKTsKKyAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwo
QXRvbWljU3RyaW5nKEhUVFBIZWFkZXJzOjpDb250ZW50VHlwZSksICJhcHBsaWNhdGlvbi94bWwi
KTsKICAgICAgICAgfQogCiAgICAgICAgIG1fcmVxdWVzdEVudGl0eUJvZHkgPSBGb3JtRGF0YTo6
Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZShib2R5LmNoYXJhY3RlcnMoKSwgYm9keS5sZW5n
dGgoKSwgRW50aXRpZXNGb3JVbmVuY29kYWJsZXMpKTsKQEAgLTY5OCw2ICs2OTgsMTEgQEAgU3Ry
aW5nIFhNTEh0dHBSZXF1ZXN0OjpnZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSkgY29uc3QKICAgICByZXR1cm4gbV9yZXF1ZXN0SGVhZGVycy5nZXQobmFtZSk7CiB9CiAK
K1N0cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0UmVxdWVzdEhlYWRlcihjb25zdCBjaGFyKiBuYW1l
KSBjb25zdAoreworICAgIHJldHVybiBtX3JlcXVlc3RIZWFkZXJzLmdldChuYW1lKTsKK30KKwog
U3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpnZXRBbGxSZXNwb25zZUhlYWRlcnMoRXhjZXB0aW9uQ29k
ZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYgKG1fc3RhdGUgPCBIRUFERVJTX1JFQ0VJVkVEKSB7CkBA
IC03NTcsNyArNzYyLDcgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZU1JTUVUeXBl
KCkgY29uc3QKICAgICBTdHJpbmcgbWltZVR5cGUgPSBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKG1fbWltZVR5cGVPdmVycmlkZSk7CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkgewog
ICAgICAgICBpZiAobV9yZXNwb25zZS5pc0hUVFAoKSkKLSAgICAgICAgICAgIG1pbWVUeXBlID0g
ZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgi
Q29udGVudC1UeXBlIikpOworICAgICAgICAgICAgbWltZVR5cGUgPSBleHRyYWN0TUlNRVR5cGVG
cm9tTWVkaWFUeXBlKG1fcmVzcG9uc2UuY29udGVudFR5cGUoKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1pbWVUeXBlID0gbV9yZXNwb25zZS5taW1lVHlwZSgpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oCmluZGV4IDY5MDE5YTUuLjlmNjI4MjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAt
MTI0LDYgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbml0U2VuZChFeGNlcHRpb25Db2Rl
Jik7CiAKICAgICBTdHJpbmcgZ2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpIGNvbnN0OworICAgIFN0cmluZyBnZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IGNoYXIqIG5hbWUp
IGNvbnN0OwogICAgIHZvaWQgc2V0UmVxdWVzdEhlYWRlckludGVybmFsKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgYm9vbCBpc1NhZmVSZXF1ZXN0
SGVhZGVyKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9Y
UGF0aFZhbHVlLmNwcCBiL1dlYkNvcmUveG1sL1hQYXRoVmFsdWUuY3BwCmluZGV4IDI5ZTIxMWUu
LmM5MTg0MTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hQYXRoVmFsdWUuY3BwCisrKyBiL1dl
YkNvcmUveG1sL1hQYXRoVmFsdWUuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgU3RyaW5nIFZhbHVl
Ojp0b1N0cmluZygpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNpZ25iaXQobV9udW1i
ZXIpID8gIi1JbmZpbml0eSIgOiAiSW5maW5pdHkiOwogICAgICAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6bnVtYmVyKG1fbnVtYmVyKTsKICAgICAgICAgY2FzZSBCb29sZWFuVmFsdWU6Ci0gICAgICAg
ICAgICByZXR1cm4gbV9ib29sID8gInRydWUiIDogImZhbHNlIjsKKyAgICAgICAgICAgIHJldHVy
biBtX2Jvb2wgPyB0cnVlQXRvbSA6IGZhbHNlQXRvbTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNDNlNjM0ZC4u
NDAwODU5MiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTEtMjAgIEplbnMg
QWxma2UgIDxzbmVqQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwg
KE9PUFMhKQorCisgICAgICAgICogc3JjL1dlYk5vdGlmaWNhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYk5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hEaXNwbGF5RXZlbnQpOgorCisKIDIwMDkt
MTItMDMgIEpvbmF0aGFuIERpeG9uICA8am90aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJOb3RpZmljYXRpb24uY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb3RpZmljYXRp
b24uY3BwCmluZGV4IDFmNjkxNmUuLjU3ZDBlMDMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTm90aWZpY2F0aW9uLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk5v
dGlmaWNhdGlvbi5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgV2ViU3RyaW5nIFdlYk5vdGlmaWNhdGlv
bjo6Ym9keSgpIGNvbnN0CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uOjpkaXNwYXRjaERpc3BsYXlF
dmVudCgpCiB7Ci0gICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVhdGUoImRpc3Bs
YXkiLCBmYWxzZSwgdHJ1ZSk7CisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2ZW50OjpjcmVh
dGUoQXRvbWljU3RyaW5nKCJkaXNwbGF5IiksIGZhbHNlLCB0cnVlKTsKICAgICBtX3ByaXZhdGUt
PmRpc3BhdGNoRXZlbnQoZXZlbnQucmVsZWFzZSgpKTsKIH0KIAo=
</data>
<flag name="review"
          id="26078"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>