<?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>163564</bug_id>
          
          <creation_ts>2016-10-17 13:56:17 -0700</creation_ts>
          <short_desc>AX: &quot;(inverted-colors)&quot; media query only matches on page reload; should match on change</short_desc>
          <delta_ts>2025-07-15 11:42:08 -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>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>168491</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Craig">jcraig</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>dino</cc>
    
    <cc>jcraig</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1241143</commentid>
    <comment_count>0</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2016-10-17 13:56:17 -0700</bug_when>
    <thetext>Given the following CSS, the media query only matches on page reload if colors are inverted. It does not match when the setting changes.

```
html, body {
  color: #000;
  background-color: #fff;
}
@media (inverted-colors) {
  html, body {
    color: #006;
    background-color: #ffa;
  }
  img, video {
    filter: invert(100%);
  }
}
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241144</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-10-17 13:56:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/28807350&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241148</commentid>
    <comment_count>2</comment_count>
      <attachid>291870</attachid>
    <who name="James Craig">jcraig</who>
    <bug_when>2016-10-17 14:02:49 -0700</bug_when>
    <thetext>Created attachment 291870
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241298</commentid>
    <comment_count>3</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-10-17 18:41:12 -0700</bug_when>
    <thetext>I commented in radar, but I&apos;ll get to this in a couple of weeks. I&apos;ll fix this, monochrome, and prefers-reduced-motion at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252911</commentid>
    <comment_count>4</comment_count>
      <attachid>295203</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-11-18 15:47:41 -0800</bug_when>
    <thetext>Created attachment 295203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252941</commentid>
    <comment_count>5</comment_count>
      <attachid>295215</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-11-18 16:31:01 -0800</bug_when>
    <thetext>Created attachment 295215
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252976</commentid>
    <comment_count>6</comment_count>
      <attachid>295215</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-18 17:26:07 -0800</bug_when>
    <thetext>Comment on attachment 295215
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=295215&amp;action=review

&gt; Source/WebCore/page/Page.cpp:2072
&gt; +    auto* styleResolver = document-&gt;styleScope().resolverIfExists();
&gt; +    if (styleResolver &amp;&amp; styleResolver-&gt;hasMediaQueriesAffectedByAccessibilitySettingsChange()) {
&gt; +        LOG(Layout, &quot;hasMediaQueriesAffectedByAccessibilitySettingsChange, enqueueing style recalc&quot;);
&gt; +        document-&gt;styleScope().didChangeStyleSheetEnvironment();
&gt; +        // FIXME: This instrumentation event is not strictly accurate since cached media query results do not persist across StyleResolver rebuilds.
&gt; +        InspectorInstrumentation::mediaQueryResultChanged(*document);

Don&apos;t you need to do this for all subframes?

&gt; Tools/TestRunnerShared/UIScriptContext/UIScriptController.h:55
&gt; +    void simulateAccessibilitySettingsChangeNotification(JSValueRef callback);

Do you want to make it possible to test individual settings?

&gt; Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:78
&gt; +    [webView _doAfterNextPresentationUpdate: ^ {

Ignore the style checker.  ^{

&gt; Tools/WebKitTestRunner/mac/UIScriptControllerMac.mm:101
&gt; +    [webView _doAfterNextPresentationUpdate: ^ {

Ignore the style checker.  ^{</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252992</commentid>
    <comment_count>7</comment_count>
      <attachid>295215</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-11-18 17:47:10 -0800</bug_when>
    <thetext>Comment on attachment 295215
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=295215&amp;action=review

&gt;&gt; Source/WebCore/page/Page.cpp:2072
&gt;&gt; +        InspectorInstrumentation::mediaQueryResultChanged(*document);
&gt; 
&gt; Don&apos;t you need to do this for all subframes?

Fixed.

&gt;&gt; Tools/TestRunnerShared/UIScriptContext/UIScriptController.h:55
&gt;&gt; +    void simulateAccessibilitySettingsChangeNotification(JSValueRef callback);
&gt; 
&gt; Do you want to make it possible to test individual settings?

I can do that on iOS, but macOS has a single notification for all Accessibility changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253006</commentid>
    <comment_count>8</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-11-18 18:52:36 -0800</bug_when>
    <thetext>Committed r208915: &lt;http://trac.webkit.org/changeset/208915&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2130214</commentid>
    <comment_count>9</comment_count>
    <who name="Kiet Ho">kiet.ho</who>
    <bug_when>2025-07-15 11:42:08 -0700</bug_when>
    <thetext>*** Bug 137868 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>291870</attachid>
            <date>2016-10-17 14:02:49 -0700</date>
            <delta_ts>2016-10-17 14:02:49 -0700</delta_ts>
            <desc>test case</desc>
            <filename>wktc163564.htm</filename>
            <type>text/html</type>
            <size>475</size>
            <attacher name="James Craig">jcraig</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KCTx0aXRsZT5pbnZlcnRlZC1jb2xvcnM8L3Rp
dGxlPgoJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCQlodG1sLCBib2R5IHsKCQkJY29sb3I6ICMw
MDA7CgkJCWJhY2tncm91bmQtY29sb3I6ICNmZmY7CgkJfQoJCUBtZWRpYSAoaW52ZXJ0ZWQtY29s
b3JzKSB7CgkJCWh0bWwsIGJvZHkgewoJCQkJY29sb3I6ICMwMDY7CgkJCQliYWNrZ3JvdW5kLWNv
bG9yOiAjZmZhOwoJCQl9CgkJCWltZywgdmlkZW8gewoJCQkJZmlsdGVyOiBpbnZlcnQoMTAwJSk7
CgkJCX0KCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8cD5Mb3JlbSBpcHN1bSBkb2xvciBz
aXQgYW1ldC48L3A+CjxpbWcgc3JjPSJodHRwczovL3dlYmtpdC5vcmcvd3AtY29udGVudC90aGVt
ZXMvd2Via2l0L2ltYWdlcy93ZWJraXQuc3ZnIiBhbHQ9IldlYktpdCBsb2dvIiB3aWR0aD0iMTAw
Ij4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295203</attachid>
            <date>2016-11-18 15:47:41 -0800</date>
            <delta_ts>2017-09-15 12:37:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163564-20161119104732.patch</filename>
            <type>text/plain</type>
            <size>39960</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4ODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY4ZWIwZTlkYWUxNTAz
ZDY4OWFlMDg5YTE5ODYwNDBhOWY0YjVjZS4uZDk5ZTczZGRhMzQ2NWY2MjFmMWI4OGVmOTVjZTMw
MjNhMGZkMTc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMzIEBACiAyMDE2LTExLTE4ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAorICAgICAgICBBWDogIihpbnZlcnRlZC1jb2xv
cnMpIiBtZWRpYSBxdWVyeSBvbmx5IG1hdGNoZXMgb24gcGFnZSByZWxvYWQ7IHNob3VsZCBtYXRj
aCBvbiBjaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzU2NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg4MDczNTA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFyayBzb21lIG1lZGlhIHF1
ZXJpZXMgYXMgcmVzcG9uZGluZyB0byBub3RpZmljYXRpb25zIHRoYXQKKyAgICAgICAgc3lzdGVt
IGFjY2Vzc2liaWxpdHkgc2V0dGluZ3MgaGF2ZSBjaGFuZ2VkLiBXaGVuIFBhZ2UgZ2V0cyB0b2xk
CisgICAgICAgIHRoYXQgaGFzIGhhcHBlbmVkLCBjaGVjayBpZiBhbnkgb2YgdGhlIHJlc3VsdHMg
aGF2ZSBjaGFuZ2VkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L21lZGlhL21xLWludmVydGVkLWNv
bG9ycy1saXZlLXVwZGF0ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L21lZGlhL21xLW1vbm9j
aHJvbWUtbGl2ZS11cGRhdGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9tZWRpYS9tcS1wcmVm
ZXJzLXJlZHVjZWQtbW90aW9uLWxpdmUtdXBkYXRlLmh0bWwKKworICAgICAgICAqIGNzcy9NZWRp
YVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0eVNl
dHRpbmdzRGVwZW5kZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFdmFsdWF0b3I6
OmV2YWx1YXRlKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphZGRBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEZXBlbmRlbnRN
ZWRpYVF1ZXJ5UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Omhhc01l
ZGlhUXVlcmllc0FmZmVjdGVkQnlBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2UpOgorICAgICAg
ICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjpoYXNBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEZXBlbmRlbnRNZWRpYVF1ZXJpZXMpOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphY2Nlc3NpYmlsaXR5
U2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCisyMDE2LTExLTE4
ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKwogICAgICAgICBCZXR0ZXIgdGVzdGlu
ZyBmb3IgYWNjZXNzaWJpbGl0eSBtZWRpYSBxdWVyaWVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5NTQKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzI5MzM4MjkyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDNhZjIxNzkyYzZhNmYzOWVkMjZhZDliOTkyZDM4YWQ1
MzExZDZjMjMuLmMyNWI1MzZjN2NkZTIzOTk0NjY3YjY0MDExZTVlZDdjNzM3N2E4NTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxNi0xMS0xOCAgRGVhbiBKYWNrc29uICA8ZGlub0Bh
cHBsZS5jb20+CisKKyAgICAgICAgQVg6ICIoaW52ZXJ0ZWQtY29sb3JzKSIgbWVkaWEgcXVlcnkg
b25seSBtYXRjaGVzIG9uIHBhZ2UgcmVsb2FkOyBzaG91bGQgbWF0Y2ggb24gY2hhbmdlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM1NjQKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzI4ODA3MzUwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIExpc3RlbiBmb3IgdGhlIGFwcHJvcHJpYXRlIG5vdGlmaWNh
dGlvbnMgdGhhdCBhY2Nlc3NpYmlsaXR5IHNldHRpbmdzCisgICAgICAgIGhhdmUgY2hhbmdlZC4g
VGhpcyBpcyBhIHNpbmdsZSBub3RpZmljYXRpb24gb24gbWFjT1MsIHdoaWNoIHVzZXMgV2ViVmll
d0ltcGwsCisgICAgICAgIGFuZCBtb3JlIGZpbmUtZ3JhaW5lZCBub3RpZmljYXRpb25zIG9uIGlP
UywgdXNpbmcgV0tXZWJWaWV3LgorCisgICAgICAgIFdoZW4gd2Ugc2VlIHRoZSBub3RpZmljYXRp
b24sIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSBXZWJQcm9jZXNzIHdoaWNoIHdpbGwKKyAgICAgICAg
dGhlbiB0ZWxsIHRoZSBXZWJDb3JlOjpQYWdlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2FjY2Vzc2liaWxpdHlTZXR0
aW5nc0RpZENoYW5nZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZUFjY2Vzc2li
aWxpdHlTZXR0aW5nc0NoYW5nZU5vdGlmaWNhdGlvbl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToK
KyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5U2V0dGluZ3NPYnNlcnZlciBpbml0V2l0aEltcGw6
XSk6CisgICAgICAgICgtW1dLQWNjZXNzaWJpbGl0eVNldHRpbmdzT2JzZXJ2ZXIgZGVhbGxvY10p
OgorICAgICAgICAoLVtXS0FjY2Vzc2liaWxpdHlTZXR0aW5nc09ic2VydmVyIF9zZXR0aW5nc0Rp
ZENoYW5nZTpdKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENo
YW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmls
aXR5U2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisKIDIwMTYtMTEtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIERvd25sb2FkcyBzdGFydGVkIGJ5IGNvbnRleHQgbWVudSBhY3Rpb25zIHNo
b3VsZCBhbHNvIGhhdmUgYSB3ZWIgdmlldyBhc3NvY2lhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggMmU3MTkwMWUwYmRiMmY2MGYxNmJkZmM0YWZl
YmM2MWE3MDA5NWNhNy4uYTg2MDExN2UzNjg1YTlhNTJiYzgzNzJlMmUyNzZmNjlkNmVjMmE1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtNjMsNiAr
NjMsMTUgQEAgZW51bSBNZWRpYUZlYXR1cmVQcmVmaXggeyBNaW5QcmVmaXgsIE1heFByZWZpeCwg
Tm9QcmVmaXggfTsKIHR5cGVkZWYgYm9vbCAoKk1lZGlhUXVlcnlGdW5jdGlvbikoQ1NTVmFsdWUq
LCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmLCBNZWRpYUZlYXR1cmVQ
cmVmaXgpOwogdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBNZWRpYVF1ZXJ5RnVu
Y3Rpb24+IE1lZGlhUXVlcnlGdW5jdGlvbk1hcDsKIAorc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmls
aXR5U2V0dGluZ3NEZXBlbmRlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYUZlYXR1cmUpCit7
CisgICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6aW52ZXJ0ZWRD
b2xvcnMKKyAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhN
b25vY2hyb21lCisgICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6
bWluTW9ub2Nocm9tZQorICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFt
ZXM6Om1vbm9jaHJvbWUKKyAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5h
bWVzOjpwcmVmZXJzUmVkdWNlZE1vdGlvbjsKK30KKwogc3RhdGljIGJvb2wgaXNWaWV3cG9ydERl
cGVuZGVudChjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZSkKIHsKICAgICByZXR1cm4g
bWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjp3aWR0aApAQCAtMTIwLDkgKzEyOSw5
IEBAIGJvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeVNl
dCYgcXVlcnlTZXQsIFN0eWxlUmVzb2x2ZXIqCiB7CiAgICAgYXV0byYgcXVlcmllcyA9IHF1ZXJ5
U2V0LnF1ZXJ5VmVjdG9yKCk7CiAgICAgaWYgKCFxdWVyaWVzLnNpemUoKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7IC8vIGVtcHR5IHF1ZXJ5IGxpc3QgZXZhbHVhdGVzIHRvIHRydWUKKyAgICAgICAg
cmV0dXJuIHRydWU7IC8vIEVtcHR5IHF1ZXJ5IGxpc3QgZXZhbHVhdGVzIHRvIHRydWUuCiAKLSAg
ICAvLyBpdGVyYXRlIG92ZXIgcXVlcmllcywgc3RvcCBpZiBhbnkgb2YgdGhlbSBldmFsIHRvIHRy
dWUgKE9SIHNlbWFudGljcykKKyAgICAvLyBJdGVyYXRlIG92ZXIgcXVlcmllcywgc3RvcCBpZiBh
bnkgb2YgdGhlbSBldmFsIHRvIHRydWUgKE9SIHNlbWFudGljcykuCiAgICAgYm9vbCByZXN1bHQg
PSBmYWxzZTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1ZXJpZXMuc2l6ZSgpICYmICFy
ZXN1bHQ7ICsraSkgewogICAgICAgICBhdXRvJiBxdWVyeSA9IHF1ZXJpZXNbaV07CkBAIC0xMzIs
MTggKzE0MSwxOSBAQCBib29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlKGNvbnN0IE1l
ZGlhUXVlcnlTZXQmIHF1ZXJ5U2V0LCBTdHlsZVJlc29sdmVyKgogCiAgICAgICAgIGlmIChtZWRp
YVR5cGVNYXRjaChxdWVyeS5tZWRpYVR5cGUoKSkpIHsKICAgICAgICAgICAgIGF1dG8mIGV4cHJl
c3Npb25zID0gcXVlcnkuZXhwcmVzc2lvbnMoKTsKLSAgICAgICAgICAgIC8vIGl0ZXJhdGUgdGhy
b3VnaCBleHByZXNzaW9ucywgc3RvcCBpZiBhbnkgb2YgdGhlbSBldmFsIHRvIGZhbHNlIChBTkQg
c2VtYW50aWNzKQorICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGV4cHJlc3Npb25zLCBz
dG9wIGlmIGFueSBvZiB0aGVtIGV2YWwgdG8gZmFsc2UgKEFORCBzZW1hbnRpY3MpLgogICAgICAg
ICAgICAgc2l6ZV90IGogPSAwOwogICAgICAgICAgICAgZm9yICg7IGogPCBleHByZXNzaW9ucy5z
aXplKCk7ICsraikgewogICAgICAgICAgICAgICAgIGJvb2wgZXhwcmVzc2lvblJlc3VsdCA9IGV2
YWx1YXRlKGV4cHJlc3Npb25zW2pdKTsKICAgICAgICAgICAgICAgICBpZiAoc3R5bGVSZXNvbHZl
ciAmJiBpc1ZpZXdwb3J0RGVwZW5kZW50KGV4cHJlc3Npb25zW2pdLm1lZGlhRmVhdHVyZSgpKSkK
ICAgICAgICAgICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+YWRkVmlld3BvcnREZXBlbmRlbnRN
ZWRpYVF1ZXJ5UmVzdWx0KGV4cHJlc3Npb25zW2pdLCBleHByZXNzaW9uUmVzdWx0KTsKKyAgICAg
ICAgICAgICAgICBpZiAoc3R5bGVSZXNvbHZlciAmJiBpc0FjY2Vzc2liaWxpdHlTZXR0aW5nc0Rl
cGVuZGVudChleHByZXNzaW9uc1tqXS5tZWRpYUZlYXR1cmUoKSkpCisgICAgICAgICAgICAgICAg
ICAgIHN0eWxlUmVzb2x2ZXItPmFkZEFjY2Vzc2liaWxpdHlTZXR0aW5nc0RlcGVuZGVudE1lZGlh
UXVlcnlSZXN1bHQoZXhwcmVzc2lvbnNbal0sIGV4cHJlc3Npb25SZXN1bHQpOwogICAgICAgICAg
ICAgICAgIGlmICghZXhwcmVzc2lvblJlc3VsdCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIGFzc3VtZSB0cnVlIGlmIHdlIGFyZSBh
dCB0aGUgZW5kIG9mIHRoZSBsaXN0LAotICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGFzc3VtZSBm
YWxzZQorICAgICAgICAgICAgLy8gQXNzdW1lIHRydWUgaWYgd2UgYXJlIGF0IHRoZSBlbmQgb2Yg
dGhlIGxpc3QsIG90aGVyd2lzZSBhc3N1bWUgZmFsc2UuCiAgICAgICAgICAgICByZXN1bHQgPSBh
cHBseVJlc3RyaWN0b3IocXVlcnkucmVzdHJpY3RvcigpLCBleHByZXNzaW9ucy5zaXplKCkgPT0g
aik7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gYXBwbHlSZXN0cmljdG9y
KHF1ZXJ5LnJlc3RyaWN0b3IoKSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCmluZGV4IDE5YTcwMzc1ZWFlNGEyYTY2OTI1OTJlMDc3YzZhNjdiZDk0NzZlZmUuLjkxMzYz
YzE0M2IyNmNhNDE5YWZlNGU0YmUyMjE3MzdlMTUxMWYwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKQEAgLTE4NTAsNiArMTg1MCwyMCBAQCBib29sIFN0eWxlUmVzb2x2ZXI6
Omhhc01lZGlhUXVlcmllc0FmZmVjdGVkQnlWaWV3cG9ydENoYW5nZSgpIGNvbnN0CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZEFjY2Vzc2liaWxpdHlTZXR0
aW5nc0RlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHQoY29uc3QgTWVkaWFRdWVyeUV4cHJlc3Npb24m
IGV4cHJlc3Npb24sIGJvb2wgcmVzdWx0KQoreworICAgIG1fYWNjZXNzaWJpbGl0eVNldHRpbmdz
RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHMuYXBwZW5kKE1lZGlhUXVlcnlSZXN1bHQgeyBleHBy
ZXNzaW9uLCByZXN1bHQgfSk7Cit9CisKK2Jvb2wgU3R5bGVSZXNvbHZlcjo6aGFzTWVkaWFRdWVy
aWVzQWZmZWN0ZWRCeUFjY2Vzc2liaWxpdHlTZXR0aW5nc0NoYW5nZSgpIGNvbnN0Cit7CisgICAg
Zm9yIChhdXRvJiByZXN1bHQgOiBtX2FjY2Vzc2liaWxpdHlTZXR0aW5nc0RlcGVuZGVudE1lZGlh
UXVlcnlSZXN1bHRzKSB7CisgICAgICAgIGlmIChtX21lZGlhUXVlcnlFdmFsdWF0b3IuZXZhbHVh
dGUocmVzdWx0LmV4cHJlc3Npb24pICE9IHJlc3VsdC5yZXN1bHQpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBzdGF0aWMgRmlsdGVyT3Bl
cmF0aW9uOjpPcGVyYXRpb25UeXBlIGZpbHRlck9wZXJhdGlvbkZvclR5cGUoQ1NTVmFsdWVJRCB0
eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgK
aW5kZXggZTkxYjU2MTE2YzZhYTNhZGFjY2U2NTU3MGRmYTEyNWNmZmUwNTM2Yy4uZTBkMTM2Mjhj
MGI4ZDJjY2JjNDkyOTMwYmEyMzc5ZDg3ZWY0MTc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5oCkBAIC0yMDcsNiArMjA3LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1ZpZXdwb3J0
RGVwZW5kZW50TWVkaWFRdWVyaWVzKCkgY29uc3QgeyByZXR1cm4gIW1fdmlld3BvcnREZXBlbmRl
bnRNZWRpYVF1ZXJ5UmVzdWx0cy5pc0VtcHR5KCk7IH0KICAgICBib29sIGhhc01lZGlhUXVlcmll
c0FmZmVjdGVkQnlWaWV3cG9ydENoYW5nZSgpIGNvbnN0OwogCisgICAgdm9pZCBhZGRBY2Nlc3Np
YmlsaXR5U2V0dGluZ3NEZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0KGNvbnN0IE1lZGlhUXVlcnlF
eHByZXNzaW9uJiwgYm9vbCByZXN1bHQpOworICAgIGJvb2wgaGFzQWNjZXNzaWJpbGl0eVNldHRp
bmdzRGVwZW5kZW50TWVkaWFRdWVyaWVzKCkgY29uc3QgeyByZXR1cm4gIW1fYWNjZXNzaWJpbGl0
eVNldHRpbmdzRGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHMuaXNFbXB0eSgpOyB9CisgICAgYm9v
bCBoYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5QWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlKCkg
Y29uc3Q7CisKICAgICB2b2lkIGFkZEtleWZyYW1lU3R5bGUoUmVmPFN0eWxlUnVsZUtleWZyYW1l
cz4mJik7CiAKICAgICBib29sIGNoZWNrUmVnaW9uU3R5bGUoY29uc3QgRWxlbWVudCogcmVnaW9u
RWxlbWVudCk7CkBAIC01MDMsNiArNTA3LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJTdHlsZSog
bV9vdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlIHsgbnVsbHB0ciB9OwogCiAgICAgVmVjdG9y
PE1lZGlhUXVlcnlSZXN1bHQ+IG1fdmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0czsK
KyAgICBWZWN0b3I8TWVkaWFRdWVyeVJlc3VsdD4gbV9hY2Nlc3NpYmlsaXR5U2V0dGluZ3NEZXBl
bmRlbnRNZWRpYVF1ZXJ5UmVzdWx0czsKIAogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJ
T04pCiAgICAgUmVmUHRyPFZpZXdwb3J0U3R5bGVSZXNvbHZlcj4gbV92aWV3cG9ydFN0eWxlUmVz
b2x2ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmNmQ5MTQ5Yjk4MGVlNDkwZmY5Y2UwYzEyMWNj
YmVhZGVjODNhYzE3Li5jYmNhYmRjOTY3NDVjZGJjMTUyNmZjZDg4OTQ2ZTY3OTlmNjQ2YTY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTIwNTgsNCArMjA1OCwxOSBAQCB2b2lkIFBhZ2U6OnNldENh
cHRpb25Vc2VyUHJlZmVyZW5jZXNTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldCkK
ICAgICBpbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygpOwogfQog
Cit2b2lkIFBhZ2U6OmFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENoYW5nZSgpIGNvbnN0Cit7Cisg
ICAgYXV0byBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9j
dW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHN0eWxlUmVzb2x2ZXIgPSBkb2N1
bWVudC0+c3R5bGVTY29wZSgpLnJlc29sdmVySWZFeGlzdHMoKTsKKyAgICBpZiAoc3R5bGVSZXNv
bHZlciAmJiBzdHlsZVJlc29sdmVyLT5oYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5QWNjZXNzaWJp
bGl0eVNldHRpbmdzQ2hhbmdlKCkpIHsKKyAgICAgICAgTE9HKExheW91dCwgImhhc01lZGlhUXVl
cmllc0FmZmVjdGVkQnlBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2UsIGVucXVldWVpbmcgc3R5
bGUgcmVjYWxjIik7CisgICAgICAgIGRvY3VtZW50LT5zdHlsZVNjb3BlKCkuZGlkQ2hhbmdlU3R5
bGVTaGVldEVudmlyb25tZW50KCk7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGluc3RydW1lbnRh
dGlvbiBldmVudCBpcyBub3Qgc3RyaWN0bHkgYWNjdXJhdGUgc2luY2UgY2FjaGVkIG1lZGlhIHF1
ZXJ5IHJlc3VsdHMgZG8gbm90IHBlcnNpc3QgYWNyb3NzIFN0eWxlUmVzb2x2ZXIgcmVidWlsZHMu
CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWVkaWFRdWVyeVJlc3VsdENoYW5n
ZWQoKmRvY3VtZW50KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKaW5kZXggMjNhMzU5ZTUzMTY0MWFmOTFlYzljMGEzMWM4NzNlMDJjNDE5NDBjYi4uZGM1
NmM4MGM3ODU2MjI4ZThiNDdlZjUwYzkwYjJhN2IyODA1Y2NlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAg
LTMxNyw3ICszMTcsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhv
cml6b250YWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0aWNpdHkpOwogICAgIFNjcm9sbEVs
YXN0aWNpdHkgaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxTY3JvbGxFbGFzdGljaXR5PihtX2hvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KTsg
fQotICAgIAorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhY2Nlc3NpYmlsaXR5U2V0dGluZ3NE
aWRDaGFuZ2UoKSBjb25zdDsKKwogICAgIC8vIFBhZ2UgYW5kIEZyYW1lVmlldyBib3RoIHN0b3Jl
IGEgUGFnaW5hdGlvbiB2YWx1ZS4gUGFnZTo6cGFnaW5hdGlvbigpIGlzIHNldCBvbmx5IGJ5IEFQ
SSwKICAgICAvLyBhbmQgRnJhbWVWaWV3OjpwYWdpbmF0aW9uKCkgaXMgc2V0IG9ubHkgYnkgQ1NT
LiBQYWdlOjpwYWdpbmF0aW9uKCkgd2lsbCBhZmZlY3QgYWxsCiAgICAgLy8gRnJhbWVWaWV3cyBp
biB0aGUgcGFnZSBjYWNoZSwgYnV0IEZyYW1lVmlldzo6cGFnaW5hdGlvbigpIG9ubHkgYWZmZWN0
cyB0aGUgY3VycmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQppbmRleCA3Zjk3NmZiYmIxYjEyZDViNzQyZTI5OGFiMTY4MTkxM2YyNmIzYWQw
Li4zYjFmYmUxNjE0MGNkNDZjYWQwMmZiZjQ4MTdmMjUwNDQ4ZmM1OTUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNTQwLDYgKzU0
MCwxMCBAQCBzdGF0aWMgdWludDMyX3QgY29udmVydFN5c3RlbUxheW91dERpcmVjdGlvbihOU1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gZGlyZQogICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6
c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2NvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2U6KSBu
YW1lOlVJQ29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmls
XTsKICAgICBfcGFnZS0+Y29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShbc2VsZiBfY29udGVu
dFNpemVDYXRlZ29yeV0pOwogCisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9y
OkBzZWxlY3RvcihfYWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlOikgbmFtZTpVSUFjY2Vz
c2liaWxpdHlHcmF5c2NhbGVTdGF0dXNEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07
CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfYWNjZXNz
aWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlOikgbmFtZTpVSUFjY2Vzc2liaWxpdHlJbnZlcnRDb2xv
cnNTdGF0dXNEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAgW2NlbnRlciBh
ZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfYWNjZXNzaWJpbGl0eVNldHRpbmdz
RGlkQ2hhbmdlOikgbmFtZTpVSUFjY2Vzc2liaWxpdHlSZWR1Y2VNb3Rpb25TdGF0dXNEaWRDaGFu
Z2VOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisKICAgICBbW19jb25maWd1cmF0aW9uIF9jb250
ZW50UHJvdmlkZXJSZWdpc3RyeV0gYWRkUGFnZToqX3BhZ2VdOwogICAgIF9wYWdlLT5zZXRGb3Jj
ZUFsd2F5c1VzZXJTY2FsYWJsZShbX2NvbmZpZ3VyYXRpb24gaWdub3Jlc1ZpZXdwb3J0U2NhbGVM
aW1pdHNdKTsKICNlbmRpZgpAQCAtMjI0OCw2ICsyMjUyLDExIEBAIHN0YXRpYyBib29sIHNjcm9s
bFZpZXdDYW5TY3JvbGwoVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3KQogICAgIHJldHVybiBbW1VJ
QXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dIHByZWZlcnJlZENvbnRlbnRTaXplQ2F0ZWdv
cnldOwogfQogCistICh2b2lkKV9hY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2U6KE5TTm90
aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAgX3BhZ2UtPmFjY2Vzc2liaWxpdHlTZXR0
aW5nc0RpZENoYW5nZSgpOworfQorCiAtICh2b2lkKXNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdh
dGlvbkdlc3R1cmVzOihCT09MKWFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzCiB7
CiAgICAgaWYgKF9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyA9PSBhbGxvd3NC
YWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcykKQEAgLTQ3OTUsNiArNDgwNCwxMSBAQCBzdGF0
aWMgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB0b1VzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24oVUlTZQogICAgIHJldHVybiBfcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7
CiB9CiAKKy0gKHZvaWQpX3NpbXVsYXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlTm90aWZp
Y2F0aW9uCit7CisgICAgX3BhZ2UtPmFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENoYW5nZSgpOwor
fQorCiAvLyBFeGVjdXRlIHRoZSBzdXBwbGllZCBibG9jayBhZnRlciB0aGUgbmV4dCB0cmFuc2Fj
dGlvbiBmcm9tIHRoZSBXZWJQcm9jZXNzLgogLSAodm9pZClfZG9BZnRlck5leHRQcmVzZW50YXRp
b25VcGRhdGU6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGFi
ZWM0ZDAxOGIyZWNiNjdiYWNmZWM4MTcwMzQ4Nzc2ZDYwN2QyYmMuLjBhZTU2NjljMzYyNmM4OGIy
ZmEwNzA4NDUwMjRmZjliMWZiMGNlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zMTAsNiArMzEwLDggQEAg
dHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLSW1tZWRpYXRlQWN0aW9uVHlwZSkgewogLSAo
dm9pZClfc2V0UGFnZVNjYWxlOihDR0Zsb2F0KXNjYWxlIHdpdGhPcmlnaW46KENHUG9pbnQpb3Jp
Z2luIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKIC0gKENHRmxvYXQpX3BhZ2VT
Y2FsZSBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpX3NpbXVs
YXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlTm90aWZpY2F0aW9uIFdLX0FQSV9BVkFJTEFC
TEUoaW9zKFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfZG9BZnRlck5leHRQcmVzZW50YXRpb25V
cGRhdGU6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLSAodm9pZClfZGlzYWJsZUJhY2tGb3J3YXJkU25hcHNo
b3RWb2xhdGlsaXR5Rm9yVGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLmgKaW5kZXggYmE3OTkzNmVhM2VlMDdlNGVlYTY2ZTEyYTZiNGU2ZWQxYzhiOWJi
Yy4uZjc3NDRjZmFhY2I3MmZkZTNjN2Y4NmUyOTgwYTRhNmJkZjNjM2ZiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAgLTQzLDYgKzQzLDcgQEAK
IE9CSkNfQ0xBU1MgTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplcjsKIE9CSkNfQ0xB
U1MgTlNUZXh0SW5wdXRDb250ZXh0OwogT0JKQ19DTEFTUyBOU1ZpZXc7CitPQkpDX0NMQVNTIFdL
QWNjZXNzaWJpbGl0eVNldHRpbmdzT2JzZXJ2ZXI7CiBPQkpDX0NMQVNTIFdLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1MgV0tFZGl0b3JVbmRvVGFyZ2V0T2JqQzsKIE9CSkNf
Q0xBU1MgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcjsKQEAgLTIwOCw2ICsyMDksOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRm9yRXZlbnQoTlNFdmVu
dCAqKTsKICAgICBib29sIHdpbmRvd1Jlc2l6ZU1vdXNlTG9jYXRpb25Jc0luVmlzaWJsZVNjcm9s
bGVyVGh1bWIoQ0dQb2ludCk7CiAKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENo
YW5nZSgpOworCiAgICAgLy8gLVtOU1ZpZXcgbW91c2VEb3duQ2FuTW92ZVdpbmRvd10gcmV0dXJu
cyBZRVMgd2hlbiB0aGUgTlNWaWV3IGlzIHRyYW5zcGFyZW50LAogICAgIC8vIGJ1dCB3ZSBkb24n
dCB3YW50IGEgZHJhZyBpbiB0aGUgTlNWaWV3IHRvIG1vdmUgdGhlIHdpbmRvdywgZXZlbiBpZiBp
dCdzIHRyYW5zcGFyZW50LgogICAgIHN0YXRpYyBib29sIG1vdXNlRG93bkNhbk1vdmVXaW5kb3co
KSB7IHJldHVybiBmYWxzZTsgfQpAQCAtNjMxLDYgKzYzNCw3IEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogICAgIFJldGFpblB0cjxXS1dpbmRvd1Zpc2liaWxpdHlPYnNlcnZlcj4gbV93aW5kb3dWaXNp
YmlsaXR5T2JzZXJ2ZXI7CisgICAgUmV0YWluUHRyPFdLQWNjZXNzaWJpbGl0eVNldHRpbmdzT2Jz
ZXJ2ZXI+IG1fYWNjZXNzaWJpbGl0eVNldHRpbmdzT2JzZXJ2ZXI7CiAKICAgICBib29sIG1fc2hv
dWxkRGVmZXJWaWV3SW5XaW5kb3dDaGFuZ2VzIHsgZmFsc2UgfTsKICAgICBib29sIG1fdmlld0lu
V2luZG93Q2hhbmdlV2FzRGVmZXJyZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDgyMDJlMzJhODFkNDgzMGZmZTlkZjlm
NWI2Y2U3NWIyM2JhN2FhZGUuLmE4MDlhNjQ0MWE4YmE4MzQ3MGE3ZWEzZGNmZTFkNzI0NGUyMDU0
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
QEAgLTEyMiw2ICsxMjIsNDQgQEAgU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKExvb2t1cCwg
TFVOb3RpZmljYXRpb25Qb3BvdmVyV2lsbENsb3NlLCBOU1N0cmluZyAqKQogLSAoQk9PTCloYW5k
bGVFdmVudEJ5S2V5Ym9hcmRMYXlvdXQ6KE5TRXZlbnQgKilldmVudDsKIEBlbmQKIAorQGludGVy
ZmFjZSBXS0FjY2Vzc2liaWxpdHlTZXR0aW5nc09ic2VydmVyIDogTlNPYmplY3QgeworICAgIFdl
YktpdDo6V2ViVmlld0ltcGwgKl9pbXBsOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJ
bXBsOihXZWJLaXQ6OldlYlZpZXdJbXBsJilpbXBsOworQGVuZAorCitAaW1wbGVtZW50YXRpb24g
V0tBY2Nlc3NpYmlsaXR5U2V0dGluZ3NPYnNlcnZlcgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhJbXBsOihXZWJLaXQ6OldlYlZpZXdJbXBsJilpbXBsCit7CisgICAgc2VsZiA9IFtzdXBlciBp
bml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfaW1wbCA9
ICZpbXBsOworCisgICAgTlNOb3RpZmljYXRpb25DZW50ZXIqIHdvcmtzcGFjZU5vdGlmaWNhdGlv
bkNlbnRlciA9IFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBub3RpZmljYXRpb25DZW50
ZXJdOworICAgIFt3b3Jrc3BhY2VOb3RpZmljYXRpb25DZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoX3NldHRpbmdzRGlkQ2hhbmdlOikgbmFtZTpOU1dvcmtzcGFjZUFj
Y2Vzc2liaWxpdHlEaXNwbGF5T3B0aW9uc0RpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmls
XTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBOU05v
dGlmaWNhdGlvbkNlbnRlciAqd29ya3NwYWNlTm90aWZpY2F0aW9uQ2VudGVyID0gW1tOU1dvcmtz
cGFjZSBzaGFyZWRXb3Jrc3BhY2VdIG5vdGlmaWNhdGlvbkNlbnRlcl07CisgICAgW3dvcmtzcGFj
ZU5vdGlmaWNhdGlvbkNlbnRlciByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6TlNXb3Jrc3BhY2VB
Y2Nlc3NpYmlsaXR5RGlzcGxheU9wdGlvbnNEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Om5p
bF07CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpX3NldHRpbmdzRGlkQ2hh
bmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIF9pbXBsLT5hY2Nlc3Np
YmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKTsKK30KKworQGVuZAorCiBAaW50ZXJmYWNlIFdLV2lu
ZG93VmlzaWJpbGl0eU9ic2VydmVyIDogTlNPYmplY3QgewogICAgIE5TVmlldyAqX3ZpZXc7CiAg
ICAgV2ViS2l0OjpXZWJWaWV3SW1wbCAqX2ltcGw7CkBAIC0xMzQsNyArMTcyLDYgQEAgU09GVF9M
SU5LX0NPTlNUQU5UX01BWV9GQUlMKExvb2t1cCwgTFVOb3RpZmljYXRpb25Qb3BvdmVyV2lsbENs
b3NlLCBOU1N0cmluZyAqKQogLSAodm9pZClzdGFydE9ic2VydmluZ0xvb2t1cERpc21pc3NhbDsK
IEBlbmQKIAotCiBAaW1wbGVtZW50YXRpb24gV0tXaW5kb3dWaXNpYmlsaXR5T2JzZXJ2ZXIKIAog
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooTlNWaWV3ICopdmlldyBpbXBsOihXZWJLaXQ6
OldlYlZpZXdJbXBsJilpbXBsCkBAIC0xMTgwLDYgKzEyMTcsNyBAQCBXZWJWaWV3SW1wbDo6V2Vi
Vmlld0ltcGwoTlNWaWV3IDxXZWJWaWV3SW1wbERlbGVnYXRlPiAqdmlldywgV0tXZWJWaWV3ICpv
dXRlcldlYgogICAgICwgbV9sYXlvdXRTdHJhdGVneShbV0tWaWV3TGF5b3V0U3RyYXRlZ3kgbGF5
b3V0U3RyYXRlZ3lXaXRoUGFnZTptX3BhZ2UgdmlldzptX3ZpZXcgdmlld0ltcGw6KnRoaXMgbW9k
ZTprV0tMYXlvdXRNb2RlVmlld1NpemVdKQogICAgICwgbV91bmRvVGFyZ2V0KGFkb3B0TlMoW1tX
S0VkaXRvclVuZG9UYXJnZXRPYmpDIGFsbG9jXSBpbml0XSkpCiAgICAgLCBtX3dpbmRvd1Zpc2li
aWxpdHlPYnNlcnZlcihhZG9wdE5TKFtbV0tXaW5kb3dWaXNpYmlsaXR5T2JzZXJ2ZXIgYWxsb2Nd
IGluaXRXaXRoVmlldzp2aWV3IGltcGw6KnRoaXNdKSkKKyAgICAsIG1fYWNjZXNzaWJpbGl0eVNl
dHRpbmdzT2JzZXJ2ZXIoYWRvcHROUyhbW1dLQWNjZXNzaWJpbGl0eVNldHRpbmdzT2JzZXJ2ZXIg
YWxsb2NdIGluaXRXaXRoSW1wbDoqdGhpc10pKQogICAgICwgbV9wcmltYXJ5VHJhY2tpbmdBcmVh
KGFkb3B0TlMoW1tOU1RyYWNraW5nQXJlYSBhbGxvY10gaW5pdFdpdGhSZWN0Om1fdmlldy5mcmFt
ZSBvcHRpb25zOnRyYWNraW5nQXJlYU9wdGlvbnMoKSBvd25lcjptX3ZpZXcgdXNlckluZm86bmls
XSkpCiB7CiAgICAgc3RhdGljX2Nhc3Q8UGFnZUNsaWVudEltcGwmPigqbV9wYWdlQ2xpZW50KS5z
ZXRJbXBsKCp0aGlzKTsKQEAgLTE4MzksNiArMTg3NywxMSBAQCBib29sIFdlYlZpZXdJbXBsOjpt
aWdodEJlZ2luU2Nyb2xsV2hpbGVJbmFjdGl2ZSgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2
b2lkIFdlYlZpZXdJbXBsOjphY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKQoreworICAg
IG1fcGFnZS0+YWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKCk7Cit9CisKIGJvb2wgV2Vi
Vmlld0ltcGw6OmFjY2VwdHNGaXJzdE1vdXNlKE5TRXZlbnQgKmV2ZW50KQogewogICAgIGlmICgh
bWlnaHRCZWdpbkRyYWdXaGlsZUluYWN0aXZlKCkgJiYgIW1pZ2h0QmVnaW5TY3JvbGxXaGlsZUlu
YWN0aXZlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IDE1YmQwNzc2Yjc5ZjM4Yzk0ZGEzMjRkYTQ5YzI3YTQ5NzI1NmZlMmYuLmFkZTJmYzc0YmJkOTBj
ZTg3OTc1ZmExNDcxMGQ0YTNjOTA1OGE3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC0yNjAzLDYgKzI2MDMsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldEN1c3RvbURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGN1c3RvbVNjYWxlRmFjdG9yKQogICAg
ICAgICBtX2RyYXdpbmdBcmVhLT5kZXZpY2VTY2FsZUZhY3RvckRpZENoYW5nZSgpOwogfQogCit2
b2lkIFdlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKCkKK3sKKyAg
ICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKSwgbV9w
YWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlRml4ZWRMYXlvdXQoYm9vbCBm
aXhlZCkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCBhOGRmY2Q3NTM5MDM2YWQ2ZjEwOGViNzJjM2IwOWI2MGIyMDRjNTI2
Li40ZGIzNzlhOGNlOWQ3NzMzMDIzMTFhMGU1NDJjOTA1YTU4N2NhOTFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02ODQsNiArNjg0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOwogICAgIHZvaWQg
c2V0Q3VzdG9tRGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOwogICAgIHZvaWQgd2luZG93U2NyZWVu
RGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKTsKKyAgICB2b2lkIGFjY2Vzc2li
aWxpdHlTZXR0aW5nc0RpZENoYW5nZSgpOwogCiAgICAgdm9pZCBzZXRVc2VGaXhlZExheW91dChi
b29sKTsKICAgICB2b2lkIHNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggMDY5MGU5MGYwNzEzZjQxNGIyM2U2MDM0NWM0NjI4YzZmNjAwYjZlZi4uNmUyZjk1NzYzNWRh
NGVlNzVlYjk0ZTdhMzc4ZGRjMGY2NjA1YjRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTY3MSw2ICsxNjcxLDExIEBAIGZsb2F0IFdl
YlBhZ2U6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlLT5kZXZp
Y2VTY2FsZUZhY3RvcigpOwogfQogCit2b2lkIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlTZXR0aW5n
c0RpZENoYW5nZSgpCit7CisgICAgbV9wYWdlLT5hY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFu
Z2UoKTsKK30KKwogdm9pZCBXZWJQYWdlOjpzZXRVc2VGaXhlZExheW91dChib29sIGZpeGVkKQog
ewogICAgIC8vIERvIG5vdCBvdmVyd3JpdGUgY3VycmVudCBzZXR0aW5ncyBpZiBpbml0aWFsbHkg
c2V0dGluZyBpdCB0byBmYWxzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IDJiNTYwZTI1NzllOTZhZTQyMDU3NmNlNWQ4MmZiZGVlNmJjNDM0NDgu
LmU3ZTUxYzk1MzU3NDk2NGNmYmIzYzA3ODczNTU1Y2ZmYTc3M2ZiOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzkxLDYgKzM5MSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZG91YmxlIHBhZ2Vab29t
RmFjdG9yLCBkb3VibGUgdGV4dFpvb21GYWN0b3IpOwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlk
Q2hhbmdlKHVpbnQzMl90KTsKIAorICAgIHZvaWQgYWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hh
bmdlKCk7CisKICAgICB2b2lkIHNjYWxlUGFnZShkb3VibGUgc2NhbGUsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBvcmlnaW4pOwogICAgIHZvaWQgc2NhbGVQYWdlSW5WaWV3Q29vcmRpbmF0ZXMo
ZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpJbnRQb2ludCBjZW50ZXJJblZpZXdDb29yZGluYXRlcyk7
CiAgICAgZG91YmxlIHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA2MmY1
NWQ1NDU5YWFmNDI3NTMxOTlmMTAzODI1NmUzZTk4ZTE0NjhmLi45NmRjYmM5MjI2NTI1NzM4MTlj
NGMzYTkxZWM2YTYxYmFjZWMwOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjAxLDYgKzIwMSw4IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFRleHRab29tRmFjdG9y
KGRvdWJsZSB6b29tRmFjdG9yKQogICAgIFdpbmRvd1NjcmVlbkRpZENoYW5nZSh1aW50MzJfdCBk
aXNwbGF5SUQpCiAKKyAgICBBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKQorCiAgICAg
U2NhbGVQYWdlKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6SW50UG9pbnQgb3JpZ2luKQogICAgIFNj
YWxlUGFnZUluVmlld0Nvb3JkaW5hdGVzKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6SW50UG9pbnQg
Y2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpCiAgICAgU2NhbGVWaWV3KGRvdWJsZSBzY2FsZSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmYjQ0ZjBj
OGQzNmM0MjZjN2Y4ZWNiODAxYWZhZDIzMTU1YmUxYjM2Li45NjRlYWEzZDZlZDk5ODJiOTc4NGY5
YTBhZjMxZmI1YWZhMTgxY2Q4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTYtMTEtMTggIERlYW4gSmFja3NvbiAg
PGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIEFYOiAiKGludmVydGVkLWNvbG9ycykiIG1lZGlh
IHF1ZXJ5IG9ubHkgbWF0Y2hlcyBvbiBwYWdlIHJlbG9hZDsgc2hvdWxkIG1hdGNoIG9uIGNoYW5n
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNTY0
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODgwNzM1MD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBVSVNjcmlwdENvbnRyb2xsZXIgbWV0
aG9kIHRoYXQgdHJpY2tzIFdlYktpdCBpbnRvIHRoaW5raW5nCisgICAgICAgIGl0IGhhcyByZWNl
aXZlZCBhIG5vdGlmaWNhdGlvbiB0aGF0IGFjY2Vzc2liaWxpdHkgc2V0dGluZ3MgaGF2ZQorICAg
ICAgICBjaGFuZ2VkLiBDb21iaW5lZCB3aXRoIG91ciBmb3JjZWQgb3ZlcnJpZGVzLCB0aGlzIGFs
bG93cyB1cyB0bworICAgICAgICB0ZXN0IGlmIGEgcGFnZSB3b3VsZCByZWFjdCB0byB0aGUgbm90
aWZpY2F0aW9ucy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRy
b2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6c2ltdWxhdGVB
Y2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3RpZmljYXRpb24pOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlcjo6c2ltdWxhdGVBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3Rp
ZmljYXRpb24pOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0Jp
bmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6
c2ltdWxhdGVBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3RpZmljYXRpb24pOgorICAgICAg
ICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzaW11bGF0ZUFjY2Vzc2liaWxp
dHlTZXR0aW5nc0NoYW5nZU5vdGlmaWNhdGlvbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXI6OnNpbXVsYXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlTm90aWZpY2F0aW9u
KToKKwogMjAxNi0xMS0xNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgRG93bmxvYWRzIHN0YXJ0ZWQgYnkgY29udGV4dCBtZW51IGFjdGlvbnMg
c2hvdWxkIGFsc28gaGF2ZSBhIHdlYiB2aWV3IGFzc29jaWF0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IGRmZDg3ZDJkYzBj
ZTA3OTU1YmU0MGEyYzgyNTc5M2E0N2RmOTRjYTguLjNmY2ZlNDkyMmQ2MGYxZjFiMTdlY2M2Yzg4
M2UzM2JhMWNlNzE5MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNj
cmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2Ny
aXB0Q29udHJvbGxlcklPUy5tbQpAQCAtNjMsNiArNjMsMTAgQEAgdm9pZCBVSVNjcmlwdENvbnRy
b2xsZXI6Onpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAg
ICB9KTsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNpbXVsYXRlQWNjZXNzaWJpbGl0
eVNldHRpbmdzQ2hhbmdlTm90aWZpY2F0aW9uKEpTVmFsdWVSZWYpCit7Cit9CisKIGRvdWJsZSBV
SVNjcmlwdENvbnRyb2xsZXI6Onpvb21TY2FsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdXZWJT
Y3JvbGxWaWV3Lnpvb21TY2FsZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlT
Y3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IGI3ODI4ZTEzOWFjYzc3Y2QxZTY0ZGQ0MzVhODRk
ZTUxOTgwYmI4OTUuLjU1ZGI0ZWViN2U4MjQ0NDE2NzIwNDMyOGE2N2Q0Y2M1MDk4ZTA5ODkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMu
bW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5t
bQpAQCAtNjQsNiArNjQsMTAgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Onpvb21Ub1NjYWxl
KGRvdWJsZSBzY2FsZSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAgICB9KTsKIH0KIAordm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OnNpbXVsYXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlTm90
aWZpY2F0aW9uKEpTVmFsdWVSZWYpCit7Cit9CisKIEpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJv
bGxlcjo6Y29udGVudHNPZlVzZXJJbnRlcmZhY2VJdGVtKEpTU3RyaW5nUmVmIGludGVyZmFjZUl0
ZW0pIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIu
aWRsIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlT
Y3JpcHRDb250cm9sbGVyLmlkbAppbmRleCA1MTA2OTI0ZWJlMWQzZmExNWIwZjZjYWYyOTZmZDMy
MmMzNDQzZmM5Li4wZWQ0MGMwMmUzMzM5YTQwNDQ5ZGIxMTVkMDQ5Nzc5YjhhMmEyZWZiIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9V
SVNjcmlwdENvbnRyb2xsZXIuaWRsCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKQEAgLTI5LDYgKzI5LDgg
QEAgaW50ZXJmYWNlIFVJU2NyaXB0Q29udHJvbGxlciB7CiAKICAgICB2b2lkIHpvb21Ub1NjYWxl
KGRvdWJsZSBzY2FsZSwgb2JqZWN0IGNhbGxiYWNrKTsKIAorICAgIHZvaWQgc2ltdWxhdGVBY2Nl
c3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3RpZmljYXRpb24ob2JqZWN0IGNhbGxiYWNrKTsKKwog
ICAgIC8vIEludGVyYWN0aW9uLgogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBwb3N0IGV2ZW50cyBh
c3luY2hyb25vdXNseS4gVGhlIGNhbGxiYWNrIGlzIGZpcmVkIHdoZW4gdGhlIGV2ZW50cyBoYXZl
IGJlZW4gZGlzcGF0Y2hlZCwgYnV0IGFueQogICAgIC8vIHJlc3VsdGluZyBiZWhhdmlvciBtYXkg
YWxzbyBiZSBhc3luY2hyb25vdXMuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBkYzk0
MmIxOThiNDg1NWRmYzUzZmU3YTE4MDAxNGNlZDYxOGU3OWM3Li44ZjM5OTJkNDM1YjIyY2VjOWQ2
YThiYzI5YjU1YzU2Zjk4NDgyNmE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2
LDYgKzU2LDEwIEBAIEpTQ2xhc3NSZWYgVUlTY3JpcHRDb250cm9sbGVyOjp3cmFwcGVyQ2xhc3Mo
KQogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYpCiB7CiB9
CisKK3ZvaWQgc2ltdWxhdGVBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3RpZmljYXRpb24o
SlNWYWx1ZVJlZikKK3sKK30KICNlbmRpZgogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2V0
RGlkU3RhcnRGb3JtQ29udHJvbEludGVyYWN0aW9uQ2FsbGJhY2soSlNWYWx1ZVJlZiBjYWxsYmFj
aykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJ
U2NyaXB0Q29udHJvbGxlci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvVUlTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggODIwYmNjMmU2OWZhZWExMTZiNTIxYmUzNDZk
NmY2YjU2NDk3NWEyYy4uZThkMGY4YzFjMWM3ZmU2MDQ0ZDZiZDlmNTA1OTI5NmRkOWRlNTM0OCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3Jp
cHRDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvVUlTY3JpcHRDb250cm9sbGVyLmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGljOgogICAgIHZv
aWQgZG9Bc3luY1Rhc2soSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCB6b29tVG9TY2Fs
ZShkb3VibGUgc2NhbGUsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwogCisgICAgdm9pZCBzaW11bGF0
ZUFjY2Vzc2liaWxpdHlTZXR0aW5nc0NoYW5nZU5vdGlmaWNhdGlvbihKU1ZhbHVlUmVmIGNhbGxi
YWNrKTsKKwogICAgIHZvaWQgdG91Y2hEb3duQXRQb2ludChsb25nIHgsIGxvbmcgeSwgbG9uZyB0
b3VjaENvdW50LCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2b2lkIGxpZnRVcEF0UG9pbnQo
bG9uZyB4LCBsb25nIHksIGxvbmcgdG91Y2hDb3VudCwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAg
ICAgdm9pZCBzaW5nbGVUYXBBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBKU1ZhbHVlUmVmIGNhbGxi
YWNrKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29u
dHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJv
bGxlcklPUy5tbQppbmRleCA4MTg0YjZkODBhMTBkZWI3NjRkMDM0NTBiNWIxODgyZGUzMzkzNjA4
Li5mNWM3NThiMDdkZTkxN2M2MDRkZGVjMjE3Y2NkYmUxZmYwNTUzZTYzIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC02
OCw2ICs2OCwyMCBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6em9vbVRvU2NhbGUoZG91Ymxl
IHNjYWxlLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQogICAgIH1dOwogfQogCit2b2lkIFVJU2NyaXB0
Q29udHJvbGxlcjo6c2ltdWxhdGVBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3RpZmljYXRp
b24oSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9j
b250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJz
aXN0ZW50KTsKKworICAgIGF1dG8qIHdlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgW3dlYlZpZXcgX3NpbXVsYXRl
QWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlTm90aWZpY2F0aW9uXTsKKworICAgIFt3ZWJWaWV3
IF9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTogXiB7CisgICAgICAgIGlmICghbV9jb250
ZXh0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0Nv
bXBsZXRlKGNhbGxiYWNrSUQpOworICAgIH1dOworfQorCiBkb3VibGUgVUlTY3JpcHRDb250cm9s
bGVyOjp6b29tU2NhbGUoKSBjb25zdAogewogICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZp
ZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1W
aWV3KCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENv
bnRyb2xsZXJNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRy
b2xsZXJNYWMubW0KaW5kZXggYTIzYjI3MGQ5M2UxN2RjMjkxODliODgzOWNlMGVkMmJjZDE3YmEy
NC4uZWQ0NGQ4OGY4MWM5MTk3MTE5MWVlZTBlOTY5OWM4ZGJjYzA0YTVmMiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQpAQCAt
OTAsNiArOTAsMjQgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Onpvb21Ub1NjYWxlKGRvdWJs
ZSBzY2FsZSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKICNlbmRpZgogfQogCit2b2lkIFVJU2NyaXB0
Q29udHJvbGxlcjo6c2ltdWxhdGVBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3RpZmljYXRp
b24oSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyNpZiBXS19BUElfRU5BQkxFRAorICAgIHVuc2ln
bmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ss
IENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOworCisgICAgYXV0byogd2ViVmlldyA9IFRlc3RD
b250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKKyAg
ICBbd2ViVmlldyBfc2ltdWxhdGVBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3RpZmljYXRp
b25dOworCisgICAgW3dlYlZpZXcgX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOiBeIHsK
KyAgICAgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
Y29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CisgICAgfV07CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CisjZW5kaWYKK30KKwogSlNPYmplY3RSZWYgVUlT
Y3JpcHRDb250cm9sbGVyOjpjb250ZW50c09mVXNlckludGVyZmFjZUl0ZW0oSlNTdHJpbmdSZWYg
aW50ZXJmYWNlSXRlbSkgY29uc3QKIHsKICNpZiBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg2OWU5
ODAyNzc4NWUyNTU0Y2RhYWZjNGFmNjJmMTQ1ZjMwZjVkNTYuLjNjY2I1ZmIwODU4NmVkODg2Yzdm
OGY5YzdlNmU0NmNiYTIxOWVkOWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMCBAQAogMjAxNi0xMS0xOCAg
RGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKKyAgICAgICAgQVg6ICIoaW52ZXJ0ZWQt
Y29sb3JzKSIgbWVkaWEgcXVlcnkgb25seSBtYXRjaGVzIG9uIHBhZ2UgcmVsb2FkOyBzaG91bGQg
bWF0Y2ggb24gY2hhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjM1NjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4ODA3MzUwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYS9t
cS1pbnZlcnRlZC1jb2xvcnMtbGl2ZS11cGRhdGUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9tZWRpYS9tcS1pbnZlcnRlZC1jb2xvcnMtbGl2ZS11cGRhdGUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1tb25vY2hyb21lLWxpdmUtdXBkYXRlLWV4cGVj
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtbW9ub2Nocm9tZS1saXZl
LXVwZGF0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXByZWZlcnMtcmVk
dWNlZC1tb3Rpb24tbGl2ZS11cGRhdGUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9tZWRpYS9tcS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLWxpdmUtdXBkYXRlLmh0bWw6IEFk
ZGVkLgorCisyMDE2LTExLTE4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKwogICAg
ICAgICBCZXR0ZXIgdGVzdGluZyBmb3IgYWNjZXNzaWJpbGl0eSBtZWRpYSBxdWVyaWVzCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5NTQKICAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzI5MzM4MjkyPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYWIzZDUx
YmY0MmNiNjRiOTM5YmIzNzQ4NjM1YTQ5NWUxMzgzZjYwYS4uYWJjN2RkMTc1N2U1YmU4ZDE2OTYw
ZTUwOTQwZGIwZTcxOTg4YmNlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC03MCw2ICs3MCwxMSBA
QCBlZGl0aW5nL3NlbGVjdGlvbi9jaGFyYWN0ZXItZ3JhbnVsYXJpdHktcmVjdC5odG1sIFsgU2tp
cCBdCiAjIFRoaXMgdGVzdCBpcyBmb3IgaW9zLXNpbXVsYXRvci13azEKIGVkaXRpbmcvaW5wdXQv
Zm9jdXMtY2hhbmdlLXdpdGgtbWFya2VkLXRleHQuaHRtbCBbIFNraXAgXQogCisjIFRoZXNlIG9u
bHkgcnVuIG9uIE1hYyBhbmQgaU9TIFdLMgorZmFzdC9tZWRpYS9tcS1pbnZlcnRlZC1jb2xvcnMt
bGl2ZS11cGRhdGUuaHRtbCBbIFNraXAgXQorZmFzdC9tZWRpYS9tcS1tb25vY2hyb21lLWxpdmUt
dXBkYXRlLmh0bWwgWyBTa2lwIF0KK2Zhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlv
bi1saXZlLXVwZGF0ZS5odG1sIFsgU2tpcCBdCisKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KICMgRW5kIHBsYXRmb3JtLXNwZWNpZmljIHRlc3RzLgogIy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9t
cS1pbnZlcnRlZC1jb2xvcnMtbGl2ZS11cGRhdGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvbXEtaW52ZXJ0ZWQtY29sb3JzLWxpdmUtdXBkYXRlLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGJhMDU1NGE1OTEwOTM4MzFhZmZhNzAzY2FhNDk4ZDk5MWQyMjRjMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52ZXJ0ZWQtY29sb3Jz
LWxpdmUtdXBkYXRlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPGh0bWw+Cis8aGVh
ZD4KKzx0aXRsZT5DU1M0IG1lZGlhIHF1ZXJ5IHRlc3Q6IGludmVydGVkLWNvbG9ycy48L3RpdGxl
PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK3AgeyBjb2xvcjogYmxhY2s7IH0KKyNhIHsgY29s
b3I6IGdyZWVuOyB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlkPSJhIj48L3A+
CisgIDxwPkJlZm9yZSB3YXM6IHJnYigwLCAwLCAwKSAtIHNob3VsZCBiZSByZ2IoMCwgMCwgMCk8
L3A+CisgIDxwPkFmdGVyIHdhczogcmdiKDAsIDEyOCwgMCkgLSBzaG91bGQgYmUgcmdiKDAsIDEy
OCwgMCk8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhL21xLWludmVydGVkLWNvbG9ycy1saXZlLXVwZGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tcS1pbnZlcnRlZC1jb2xvcnMtbGl2ZS11cGRhdGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NWRjYmUxZGU4ZDJkNDY2MjJkMmRiOGI5ODMxZDgzZTQ2YmVhNTNjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZlcnRlZC1jb2xvcnMtbGl2ZS11cGRh
dGUuaHRtbApAQCAtMCwwICsxLDUwIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzQgbWVk
aWEgcXVlcnkgdGVzdDogaW52ZXJ0ZWQtY29sb3JzLjwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4
dC9jc3MiPgorcCB7IGNvbG9yOiBibGFjazsgfQorCitAbWVkaWEgKGludmVydGVkLWNvbG9ycykg
eworICAgICNhIHsgY29sb3I6IGdyZWVuOyB9Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworZnVu
Y3Rpb24gZ2V0VUlTY3JpcHQoKQoreworICAgIHJldHVybiBgCisgICAgKGZ1bmN0aW9uKCkgewor
ICAgICAgICB1aUNvbnRyb2xsZXIuc2ltdWxhdGVBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VO
b3RpZmljYXRpb24oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3Jp
cHRDb21wbGV0ZSgiRG9uZSIpOworICAgICAgICB9KTsKKyAgICB9KSgpO2AKK30KKworZnVuY3Rp
b24gcnVuVGVzdCgpCit7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXR1
cm47CisKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhIik7CisK
KyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLmZvcmNlZENvbG9yc0FyZUludmVydGVkQWNj
ZXNzaWJpbGl0eVZhbHVlID0gIm9uIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYmVm
b3JlIikudGV4dENvbnRlbnQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5jb2xv
cjsKKyAgICBpZiAodGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkgeworICAgICAgICB0ZXN0UnVubmVy
LnJ1blVJU2NyaXB0KGdldFVJU2NyaXB0KCksIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFmdGVyIikudGV4dENvbnRlbnQgPSB3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5jb2xvcjsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKK3dpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgcnVuVGVzdCwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKyAgPHAgaWQ9ImEiPjwvcD4KKyAgPHA+QmVmb3JlIHdhczogPHNwYW4gaWQ9ImJlZm9yZSI+
PC9zcGFuPiAtIHNob3VsZCBiZSByZ2IoMCwgMCwgMCk8L3A+CisgIDxwPkFmdGVyIHdhczogPHNw
YW4gaWQ9ImFmdGVyIj48L3NwYW4+IC0gc2hvdWxkIGJlIHJnYigwLCAxMjgsIDApPC9wPgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1tb25v
Y2hyb21lLWxpdmUtdXBkYXRlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
L21xLW1vbm9jaHJvbWUtbGl2ZS11cGRhdGUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTM0
MzAyYTdkOTBjNTI0ZTkxYWFmMTcyMjM0YmU1YWJlMmM4MDMxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1tb25vY2hyb21lLWxpdmUtdXBkYXRlLWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1M0IG1lZGlh
IHF1ZXJ5IHRlc3Q6IG1vbm9jaHJvbWUuPC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+
CitwIHsgY29sb3I6IGJsYWNrOyB9CisjYSB7IGNvbG9yOiBncmVlbjsgfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorICA8cCBpZD0iYSI+PC9wPgorICA8cD5CZWZvcmUgd2FzOiByZ2IoMCwg
MCwgMCkgLSBzaG91bGQgYmUgcmdiKDAsIDAsIDApPC9wPgorICA8cD5BZnRlciB3YXM6IHJnYigw
LCAxMjgsIDApIC0gc2hvdWxkIGJlIHJnYigwLCAxMjgsIDApPC9wPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1tb25vY2hyb21lLWxpdmUt
dXBkYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLW1vbm9jaHJvbWUtbGl2ZS11
cGRhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzVhNzI4NjM1Mzg4YWE5MmI3NjkzZjEwZmI3YmMwZDc3
NWZkZTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1tb25v
Y2hyb21lLWxpdmUtdXBkYXRlLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPGh0bWw+Cis8aGVhZD4K
Kzx0aXRsZT5DU1M0IG1lZGlhIHF1ZXJ5IHRlc3Q6IG1vbm9jaHJvbWUuPC90aXRsZT4KKzxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsgY29sb3I6IGJsYWNrOyB9CisKK0BtZWRpYSAobW9ub2No
cm9tZSkgeworICAgICNhIHsgY29sb3I6IGdyZWVuOyB9Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KworZnVuY3Rpb24gZ2V0VUlTY3JpcHQoKQoreworICAgIHJldHVybiBgCisgICAgKGZ1bmN0aW9u
KCkgeworICAgICAgICB1aUNvbnRyb2xsZXIuc2ltdWxhdGVBY2Nlc3NpYmlsaXR5U2V0dGluZ3ND
aGFuZ2VOb3RpZmljYXRpb24oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB1aUNvbnRyb2xsZXIu
dWlTY3JpcHRDb21wbGV0ZSgiRG9uZSIpOworICAgICAgICB9KTsKKyAgICB9KSgpO2AKK30KKwor
ZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAg
ICByZXR1cm47CisKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJh
Iik7CisKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLmZvcmNlZERpc3BsYXlJc01vbm9j
aHJvbWVBY2Nlc3NpYmlsaXR5VmFsdWUgPSAib24iOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJiZWZvcmUiKS50ZXh0Q29udGVudCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1l
bnQpLmNvbG9yOworICAgIGlmICh0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KSB7CisgICAgICAgIHRl
c3RSdW5uZXIucnVuVUlTY3JpcHQoZ2V0VUlTY3JpcHQoKSwgZnVuY3Rpb24ocmVzdWx0KSB7Cisg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWZ0ZXIiKS50ZXh0Q29udGVudCA9
IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmNvbG9yOworICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0pOworICAgIH0KK30KKword2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBydW5UZXN0LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorICA8cCBpZD0iYSI+PC9wPgorICA8cD5CZWZvcmUgd2FzOiA8c3BhbiBpZD0i
YmVmb3JlIj48L3NwYW4+IC0gc2hvdWxkIGJlIHJnYigwLCAwLCAwKTwvcD4KKyAgPHA+QWZ0ZXIg
d2FzOiA8c3BhbiBpZD0iYWZ0ZXIiPjwvc3Bhbj4gLSBzaG91bGQgYmUgcmdiKDAsIDEyOCwgMCk8
L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
L21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tbGl2ZS11cGRhdGUtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1saXZlLXVwZGF0
ZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExNDRmZTdjODhhNWM4YWQ3Mjc3NTkzYTA1Y2Fj
OTFiNjgxMjA0MmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21x
LXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tbGl2ZS11cGRhdGUtZXhwZWN0ZWQuaHRtbApAQCAtMCww
ICsxLDE0IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzQgbWVkaWEgcXVlcnkgdGVzdDog
cHJlZmVycy1yZWR1Y2VkLW1vdGlvbi48L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4K
K3AgeyBjb2xvcjogYmxhY2s7IH0KKyNhIHsgY29sb3I6IGdyZWVuOyB9Cis8L3N0eWxlPgorPC9o
ZWFkPgorPGJvZHk+CisgIDxwIGlkPSJhIj48L3A+CisgIDxwPkJlZm9yZSB3YXM6IHJnYigwLCAw
LCAwKSAtIHNob3VsZCBiZSByZ2IoMCwgMCwgMCk8L3A+CisgIDxwPkFmdGVyIHdhczogcmdiKDAs
IDEyOCwgMCkgLSBzaG91bGQgYmUgcmdiKDAsIDEyOCwgMCk8L3A+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1t
b3Rpb24tbGl2ZS11cGRhdGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcHJlZmVy
cy1yZWR1Y2VkLW1vdGlvbi1saXZlLXVwZGF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhZGQxZGM4NmEw
ZDdjZGJkOTdhMWM2M2EyOWQ0MWNiOGVhZWNlNWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tbGl2ZS11cGRhdGUuaHRt
bApAQCAtMCwwICsxLDUwIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzQgbWVkaWEgcXVl
cnkgdGVzdDogcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi48L3RpdGxlPgorPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj4KK3AgeyBjb2xvcjogYmxhY2s7IH0KKworQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQt
bW90aW9uKSB7CisgICAgI2EgeyBjb2xvcjogZ3JlZW47IH0KK30KKzwvc3R5bGU+Cis8c2NyaXB0
PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworCitmdW5jdGlvbiBnZXRVSVNjcmlwdCgpCit7CisgICAgcmV0dXJuIGAKKyAgICAoZnVuY3Rp
b24oKSB7CisgICAgICAgIHVpQ29udHJvbGxlci5zaW11bGF0ZUFjY2Vzc2liaWxpdHlTZXR0aW5n
c0NoYW5nZU5vdGlmaWNhdGlvbihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHVpQ29udHJvbGxl
ci51aVNjcmlwdENvbXBsZXRlKCJEb25lIik7CisgICAgICAgIH0pOworICAgIH0pKCk7YAorfQor
CitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgIHJldHVybjsKKworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImEiKTsKKworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3MuZm9yY2VkUHJlZmVyc1JlZHVj
ZWRNb3Rpb25BY2Nlc3NpYmlsaXR5VmFsdWUgPSAib24iOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJiZWZvcmUiKS50ZXh0Q29udGVudCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVs
ZW1lbnQpLmNvbG9yOworICAgIGlmICh0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KSB7CisgICAgICAg
IHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoZ2V0VUlTY3JpcHQoKSwgZnVuY3Rpb24ocmVzdWx0KSB7
CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWZ0ZXIiKS50ZXh0Q29udGVu
dCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmNvbG9yOworICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0pOworICAgIH0KK30KKword2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBydW5UZXN0LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorICA8cCBpZD0iYSI+PC9wPgorICA8cD5CZWZvcmUgd2FzOiA8c3BhbiBp
ZD0iYmVmb3JlIj48L3NwYW4+IC0gc2hvdWxkIGJlIHJnYigwLCAwLCAwKTwvcD4KKyAgPHA+QWZ0
ZXIgd2FzOiA8c3BhbiBpZD0iYWZ0ZXIiPjwvc3Bhbj4gLSBzaG91bGQgYmUgcmdiKDAsIDEyOCwg
MCk8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiNzcxZTkyM2NhODY3
OTI0MGFmZWZmMDMxZDhlYWEzZjNkOWNkYjIwLi45ZGI4OTIwYjYyYWNiN2I3YmQ5MTExMjJhNWZm
YzYzZWNmMmIwYTM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxh
dG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1z
aW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTExLDYgKzExLDEwIEBAIGZhc3Qvdmll
d3BvcnQvaW9zIFsgUGFzcyBdCiBzY3JvbGxpbmdjb29yZGluYXRvci9pb3MgWyBQYXNzIF0KIGVk
aXRpbmcvc2VsZWN0aW9uL2NoYXJhY3Rlci1ncmFudWxhcml0eS1yZWN0Lmh0bWwgWyBQYXNzIF0K
IAorZmFzdC9tZWRpYS9tcS1pbnZlcnRlZC1jb2xvcnMtbGl2ZS11cGRhdGUuaHRtbCBbIFBhc3Mg
XQorZmFzdC9tZWRpYS9tcS1tb25vY2hyb21lLWxpdmUtdXBkYXRlLmh0bWwgWyBQYXNzIF0KK2Zh
c3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1saXZlLXVwZGF0ZS5odG1sIFsgUGFz
cyBdCisKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3Jt
LXNwZWNpZmljIGRpcmVjdG9yaWVzLgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDNhN2ZiMjJlM2UxNWJlNzY5ZDY1OWY2OTJkYTdiMzk5NzI3Y2NjMTIuLjdkYzEzYjQ5ZDgzMjAw
NTljOTIwYjc0MzFkNWYxYzgzZTg2MjBkNWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0LDYgKzE0LDEwIEBAIGZhc3QvZXZlbnRzL2Zv
cmNlLWNsaWNrLWxpbmstc2VsZWN0aW9uLWJlaGF2aW9yLmh0bWwgWyBQYXNzIF0KIGZhc3QvZXZl
bnRzL2ZvcmNlLWNsaWNrLW9uLWxpbmstbmF2aWdhdGlvbi5odG1sIFsgUGFzcyBdCiBmYXN0L2V2
ZW50cy9mb3JjZS1jbGljay10ZXh0LXNlbGVjdGlvbi1iZWhhdmlvci5odG1sIFsgRmFpbHVyZSBd
CiAKK2Zhc3QvbWVkaWEvbXEtaW52ZXJ0ZWQtY29sb3JzLWxpdmUtdXBkYXRlLmh0bWwgWyBQYXNz
IF0KK2Zhc3QvbWVkaWEvbXEtbW9ub2Nocm9tZS1saXZlLXVwZGF0ZS5odG1sIFsgUGFzcyBdCitm
YXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tbGl2ZS11cGRhdGUuaHRtbCBbIFBh
c3MgXQorCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9y
bS1zcGVjaWZpYyBkaXJlY3Rvcmllcy4KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295215</attachid>
            <date>2016-11-18 16:31:01 -0800</date>
            <delta_ts>2016-11-18 17:26:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163564-20161119113051.patch</filename>
            <type>text/plain</type>
            <size>40258</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4ODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY4ZWIwZTlkYWUxNTAz
ZDY4OWFlMDg5YTE5ODYwNDBhOWY0YjVjZS4uZDk5ZTczZGRhMzQ2NWY2MjFmMWI4OGVmOTVjZTMw
MjNhMGZkMTc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMzIEBACiAyMDE2LTExLTE4ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAorICAgICAgICBBWDogIihpbnZlcnRlZC1jb2xv
cnMpIiBtZWRpYSBxdWVyeSBvbmx5IG1hdGNoZXMgb24gcGFnZSByZWxvYWQ7IHNob3VsZCBtYXRj
aCBvbiBjaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzU2NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg4MDczNTA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFyayBzb21lIG1lZGlhIHF1
ZXJpZXMgYXMgcmVzcG9uZGluZyB0byBub3RpZmljYXRpb25zIHRoYXQKKyAgICAgICAgc3lzdGVt
IGFjY2Vzc2liaWxpdHkgc2V0dGluZ3MgaGF2ZSBjaGFuZ2VkLiBXaGVuIFBhZ2UgZ2V0cyB0b2xk
CisgICAgICAgIHRoYXQgaGFzIGhhcHBlbmVkLCBjaGVjayBpZiBhbnkgb2YgdGhlIHJlc3VsdHMg
aGF2ZSBjaGFuZ2VkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L21lZGlhL21xLWludmVydGVkLWNv
bG9ycy1saXZlLXVwZGF0ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L21lZGlhL21xLW1vbm9j
aHJvbWUtbGl2ZS11cGRhdGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9tZWRpYS9tcS1wcmVm
ZXJzLXJlZHVjZWQtbW90aW9uLWxpdmUtdXBkYXRlLmh0bWwKKworICAgICAgICAqIGNzcy9NZWRp
YVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0eVNl
dHRpbmdzRGVwZW5kZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFdmFsdWF0b3I6
OmV2YWx1YXRlKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphZGRBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEZXBlbmRlbnRN
ZWRpYVF1ZXJ5UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Omhhc01l
ZGlhUXVlcmllc0FmZmVjdGVkQnlBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2UpOgorICAgICAg
ICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjpoYXNBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEZXBlbmRlbnRNZWRpYVF1ZXJpZXMpOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphY2Nlc3NpYmlsaXR5
U2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCisyMDE2LTExLTE4
ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKwogICAgICAgICBCZXR0ZXIgdGVzdGlu
ZyBmb3IgYWNjZXNzaWJpbGl0eSBtZWRpYSBxdWVyaWVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5NTQKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzI5MzM4MjkyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDNhZjIxNzkyYzZhNmYzOWVkMjZhZDliOTkyZDM4YWQ1
MzExZDZjMjMuLmMyNWI1MzZjN2NkZTIzOTk0NjY3YjY0MDExZTVlZDdjNzM3N2E4NTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxNi0xMS0xOCAgRGVhbiBKYWNrc29uICA8ZGlub0Bh
cHBsZS5jb20+CisKKyAgICAgICAgQVg6ICIoaW52ZXJ0ZWQtY29sb3JzKSIgbWVkaWEgcXVlcnkg
b25seSBtYXRjaGVzIG9uIHBhZ2UgcmVsb2FkOyBzaG91bGQgbWF0Y2ggb24gY2hhbmdlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM1NjQKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzI4ODA3MzUwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIExpc3RlbiBmb3IgdGhlIGFwcHJvcHJpYXRlIG5vdGlmaWNh
dGlvbnMgdGhhdCBhY2Nlc3NpYmlsaXR5IHNldHRpbmdzCisgICAgICAgIGhhdmUgY2hhbmdlZC4g
VGhpcyBpcyBhIHNpbmdsZSBub3RpZmljYXRpb24gb24gbWFjT1MsIHdoaWNoIHVzZXMgV2ViVmll
d0ltcGwsCisgICAgICAgIGFuZCBtb3JlIGZpbmUtZ3JhaW5lZCBub3RpZmljYXRpb25zIG9uIGlP
UywgdXNpbmcgV0tXZWJWaWV3LgorCisgICAgICAgIFdoZW4gd2Ugc2VlIHRoZSBub3RpZmljYXRp
b24sIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSBXZWJQcm9jZXNzIHdoaWNoIHdpbGwKKyAgICAgICAg
dGhlbiB0ZWxsIHRoZSBXZWJDb3JlOjpQYWdlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2FjY2Vzc2liaWxpdHlTZXR0
aW5nc0RpZENoYW5nZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZUFjY2Vzc2li
aWxpdHlTZXR0aW5nc0NoYW5nZU5vdGlmaWNhdGlvbl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToK
KyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5U2V0dGluZ3NPYnNlcnZlciBpbml0V2l0aEltcGw6
XSk6CisgICAgICAgICgtW1dLQWNjZXNzaWJpbGl0eVNldHRpbmdzT2JzZXJ2ZXIgZGVhbGxvY10p
OgorICAgICAgICAoLVtXS0FjY2Vzc2liaWxpdHlTZXR0aW5nc09ic2VydmVyIF9zZXR0aW5nc0Rp
ZENoYW5nZTpdKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENo
YW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphY2Nlc3NpYmls
aXR5U2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisKIDIwMTYtMTEtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIERvd25sb2FkcyBzdGFydGVkIGJ5IGNvbnRleHQgbWVudSBhY3Rpb25zIHNo
b3VsZCBhbHNvIGhhdmUgYSB3ZWIgdmlldyBhc3NvY2lhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggMmU3MTkwMWUwYmRiMmY2MGYxNmJkZmM0YWZl
YmM2MWE3MDA5NWNhNy4uYTg2MDExN2UzNjg1YTlhNTJiYzgzNzJlMmUyNzZmNjlkNmVjMmE1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtNjMsNiAr
NjMsMTUgQEAgZW51bSBNZWRpYUZlYXR1cmVQcmVmaXggeyBNaW5QcmVmaXgsIE1heFByZWZpeCwg
Tm9QcmVmaXggfTsKIHR5cGVkZWYgYm9vbCAoKk1lZGlhUXVlcnlGdW5jdGlvbikoQ1NTVmFsdWUq
LCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmLCBNZWRpYUZlYXR1cmVQ
cmVmaXgpOwogdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBNZWRpYVF1ZXJ5RnVu
Y3Rpb24+IE1lZGlhUXVlcnlGdW5jdGlvbk1hcDsKIAorc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmls
aXR5U2V0dGluZ3NEZXBlbmRlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYUZlYXR1cmUpCit7
CisgICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6aW52ZXJ0ZWRD
b2xvcnMKKyAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhN
b25vY2hyb21lCisgICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6
bWluTW9ub2Nocm9tZQorICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFt
ZXM6Om1vbm9jaHJvbWUKKyAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5h
bWVzOjpwcmVmZXJzUmVkdWNlZE1vdGlvbjsKK30KKwogc3RhdGljIGJvb2wgaXNWaWV3cG9ydERl
cGVuZGVudChjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZSkKIHsKICAgICByZXR1cm4g
bWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjp3aWR0aApAQCAtMTIwLDkgKzEyOSw5
IEBAIGJvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeVNl
dCYgcXVlcnlTZXQsIFN0eWxlUmVzb2x2ZXIqCiB7CiAgICAgYXV0byYgcXVlcmllcyA9IHF1ZXJ5
U2V0LnF1ZXJ5VmVjdG9yKCk7CiAgICAgaWYgKCFxdWVyaWVzLnNpemUoKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7IC8vIGVtcHR5IHF1ZXJ5IGxpc3QgZXZhbHVhdGVzIHRvIHRydWUKKyAgICAgICAg
cmV0dXJuIHRydWU7IC8vIEVtcHR5IHF1ZXJ5IGxpc3QgZXZhbHVhdGVzIHRvIHRydWUuCiAKLSAg
ICAvLyBpdGVyYXRlIG92ZXIgcXVlcmllcywgc3RvcCBpZiBhbnkgb2YgdGhlbSBldmFsIHRvIHRy
dWUgKE9SIHNlbWFudGljcykKKyAgICAvLyBJdGVyYXRlIG92ZXIgcXVlcmllcywgc3RvcCBpZiBh
bnkgb2YgdGhlbSBldmFsIHRvIHRydWUgKE9SIHNlbWFudGljcykuCiAgICAgYm9vbCByZXN1bHQg
PSBmYWxzZTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1ZXJpZXMuc2l6ZSgpICYmICFy
ZXN1bHQ7ICsraSkgewogICAgICAgICBhdXRvJiBxdWVyeSA9IHF1ZXJpZXNbaV07CkBAIC0xMzIs
MTggKzE0MSwxOSBAQCBib29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlKGNvbnN0IE1l
ZGlhUXVlcnlTZXQmIHF1ZXJ5U2V0LCBTdHlsZVJlc29sdmVyKgogCiAgICAgICAgIGlmIChtZWRp
YVR5cGVNYXRjaChxdWVyeS5tZWRpYVR5cGUoKSkpIHsKICAgICAgICAgICAgIGF1dG8mIGV4cHJl
c3Npb25zID0gcXVlcnkuZXhwcmVzc2lvbnMoKTsKLSAgICAgICAgICAgIC8vIGl0ZXJhdGUgdGhy
b3VnaCBleHByZXNzaW9ucywgc3RvcCBpZiBhbnkgb2YgdGhlbSBldmFsIHRvIGZhbHNlIChBTkQg
c2VtYW50aWNzKQorICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGV4cHJlc3Npb25zLCBz
dG9wIGlmIGFueSBvZiB0aGVtIGV2YWwgdG8gZmFsc2UgKEFORCBzZW1hbnRpY3MpLgogICAgICAg
ICAgICAgc2l6ZV90IGogPSAwOwogICAgICAgICAgICAgZm9yICg7IGogPCBleHByZXNzaW9ucy5z
aXplKCk7ICsraikgewogICAgICAgICAgICAgICAgIGJvb2wgZXhwcmVzc2lvblJlc3VsdCA9IGV2
YWx1YXRlKGV4cHJlc3Npb25zW2pdKTsKICAgICAgICAgICAgICAgICBpZiAoc3R5bGVSZXNvbHZl
ciAmJiBpc1ZpZXdwb3J0RGVwZW5kZW50KGV4cHJlc3Npb25zW2pdLm1lZGlhRmVhdHVyZSgpKSkK
ICAgICAgICAgICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+YWRkVmlld3BvcnREZXBlbmRlbnRN
ZWRpYVF1ZXJ5UmVzdWx0KGV4cHJlc3Npb25zW2pdLCBleHByZXNzaW9uUmVzdWx0KTsKKyAgICAg
ICAgICAgICAgICBpZiAoc3R5bGVSZXNvbHZlciAmJiBpc0FjY2Vzc2liaWxpdHlTZXR0aW5nc0Rl
cGVuZGVudChleHByZXNzaW9uc1tqXS5tZWRpYUZlYXR1cmUoKSkpCisgICAgICAgICAgICAgICAg
ICAgIHN0eWxlUmVzb2x2ZXItPmFkZEFjY2Vzc2liaWxpdHlTZXR0aW5nc0RlcGVuZGVudE1lZGlh
UXVlcnlSZXN1bHQoZXhwcmVzc2lvbnNbal0sIGV4cHJlc3Npb25SZXN1bHQpOwogICAgICAgICAg
ICAgICAgIGlmICghZXhwcmVzc2lvblJlc3VsdCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIGFzc3VtZSB0cnVlIGlmIHdlIGFyZSBh
dCB0aGUgZW5kIG9mIHRoZSBsaXN0LAotICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGFzc3VtZSBm
YWxzZQorICAgICAgICAgICAgLy8gQXNzdW1lIHRydWUgaWYgd2UgYXJlIGF0IHRoZSBlbmQgb2Yg
dGhlIGxpc3QsIG90aGVyd2lzZSBhc3N1bWUgZmFsc2UuCiAgICAgICAgICAgICByZXN1bHQgPSBh
cHBseVJlc3RyaWN0b3IocXVlcnkucmVzdHJpY3RvcigpLCBleHByZXNzaW9ucy5zaXplKCkgPT0g
aik7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gYXBwbHlSZXN0cmljdG9y
KHF1ZXJ5LnJlc3RyaWN0b3IoKSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCmluZGV4IDE5YTcwMzc1ZWFlNGEyYTY2OTI1OTJlMDc3YzZhNjdiZDk0NzZlZmUuLjkxMzYz
YzE0M2IyNmNhNDE5YWZlNGU0YmUyMjE3MzdlMTUxMWYwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKQEAgLTE4NTAsNiArMTg1MCwyMCBAQCBib29sIFN0eWxlUmVzb2x2ZXI6
Omhhc01lZGlhUXVlcmllc0FmZmVjdGVkQnlWaWV3cG9ydENoYW5nZSgpIGNvbnN0CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZEFjY2Vzc2liaWxpdHlTZXR0
aW5nc0RlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHQoY29uc3QgTWVkaWFRdWVyeUV4cHJlc3Npb24m
IGV4cHJlc3Npb24sIGJvb2wgcmVzdWx0KQoreworICAgIG1fYWNjZXNzaWJpbGl0eVNldHRpbmdz
RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHMuYXBwZW5kKE1lZGlhUXVlcnlSZXN1bHQgeyBleHBy
ZXNzaW9uLCByZXN1bHQgfSk7Cit9CisKK2Jvb2wgU3R5bGVSZXNvbHZlcjo6aGFzTWVkaWFRdWVy
aWVzQWZmZWN0ZWRCeUFjY2Vzc2liaWxpdHlTZXR0aW5nc0NoYW5nZSgpIGNvbnN0Cit7CisgICAg
Zm9yIChhdXRvJiByZXN1bHQgOiBtX2FjY2Vzc2liaWxpdHlTZXR0aW5nc0RlcGVuZGVudE1lZGlh
UXVlcnlSZXN1bHRzKSB7CisgICAgICAgIGlmIChtX21lZGlhUXVlcnlFdmFsdWF0b3IuZXZhbHVh
dGUocmVzdWx0LmV4cHJlc3Npb24pICE9IHJlc3VsdC5yZXN1bHQpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBzdGF0aWMgRmlsdGVyT3Bl
cmF0aW9uOjpPcGVyYXRpb25UeXBlIGZpbHRlck9wZXJhdGlvbkZvclR5cGUoQ1NTVmFsdWVJRCB0
eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgK
aW5kZXggZTkxYjU2MTE2YzZhYTNhZGFjY2U2NTU3MGRmYTEyNWNmZmUwNTM2Yy4uZTBkMTM2Mjhj
MGI4ZDJjY2JjNDkyOTMwYmEyMzc5ZDg3ZWY0MTc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5oCkBAIC0yMDcsNiArMjA3LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1ZpZXdwb3J0
RGVwZW5kZW50TWVkaWFRdWVyaWVzKCkgY29uc3QgeyByZXR1cm4gIW1fdmlld3BvcnREZXBlbmRl
bnRNZWRpYVF1ZXJ5UmVzdWx0cy5pc0VtcHR5KCk7IH0KICAgICBib29sIGhhc01lZGlhUXVlcmll
c0FmZmVjdGVkQnlWaWV3cG9ydENoYW5nZSgpIGNvbnN0OwogCisgICAgdm9pZCBhZGRBY2Nlc3Np
YmlsaXR5U2V0dGluZ3NEZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0KGNvbnN0IE1lZGlhUXVlcnlF
eHByZXNzaW9uJiwgYm9vbCByZXN1bHQpOworICAgIGJvb2wgaGFzQWNjZXNzaWJpbGl0eVNldHRp
bmdzRGVwZW5kZW50TWVkaWFRdWVyaWVzKCkgY29uc3QgeyByZXR1cm4gIW1fYWNjZXNzaWJpbGl0
eVNldHRpbmdzRGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHMuaXNFbXB0eSgpOyB9CisgICAgYm9v
bCBoYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5QWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlKCkg
Y29uc3Q7CisKICAgICB2b2lkIGFkZEtleWZyYW1lU3R5bGUoUmVmPFN0eWxlUnVsZUtleWZyYW1l
cz4mJik7CiAKICAgICBib29sIGNoZWNrUmVnaW9uU3R5bGUoY29uc3QgRWxlbWVudCogcmVnaW9u
RWxlbWVudCk7CkBAIC01MDMsNiArNTA3LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJTdHlsZSog
bV9vdmVycmlkZURvY3VtZW50RWxlbWVudFN0eWxlIHsgbnVsbHB0ciB9OwogCiAgICAgVmVjdG9y
PE1lZGlhUXVlcnlSZXN1bHQ+IG1fdmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0czsK
KyAgICBWZWN0b3I8TWVkaWFRdWVyeVJlc3VsdD4gbV9hY2Nlc3NpYmlsaXR5U2V0dGluZ3NEZXBl
bmRlbnRNZWRpYVF1ZXJ5UmVzdWx0czsKIAogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJ
T04pCiAgICAgUmVmUHRyPFZpZXdwb3J0U3R5bGVSZXNvbHZlcj4gbV92aWV3cG9ydFN0eWxlUmVz
b2x2ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmNmQ5MTQ5Yjk4MGVlNDkwZmY5Y2UwYzEyMWNj
YmVhZGVjODNhYzE3Li5jYmNhYmRjOTY3NDVjZGJjMTUyNmZjZDg4OTQ2ZTY3OTlmNjQ2YTY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTIwNTgsNCArMjA1OCwxOSBAQCB2b2lkIFBhZ2U6OnNldENh
cHRpb25Vc2VyUHJlZmVyZW5jZXNTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldCkK
ICAgICBpbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygpOwogfQog
Cit2b2lkIFBhZ2U6OmFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENoYW5nZSgpIGNvbnN0Cit7Cisg
ICAgYXV0byBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9j
dW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHN0eWxlUmVzb2x2ZXIgPSBkb2N1
bWVudC0+c3R5bGVTY29wZSgpLnJlc29sdmVySWZFeGlzdHMoKTsKKyAgICBpZiAoc3R5bGVSZXNv
bHZlciAmJiBzdHlsZVJlc29sdmVyLT5oYXNNZWRpYVF1ZXJpZXNBZmZlY3RlZEJ5QWNjZXNzaWJp
bGl0eVNldHRpbmdzQ2hhbmdlKCkpIHsKKyAgICAgICAgTE9HKExheW91dCwgImhhc01lZGlhUXVl
cmllc0FmZmVjdGVkQnlBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2UsIGVucXVldWVpbmcgc3R5
bGUgcmVjYWxjIik7CisgICAgICAgIGRvY3VtZW50LT5zdHlsZVNjb3BlKCkuZGlkQ2hhbmdlU3R5
bGVTaGVldEVudmlyb25tZW50KCk7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGluc3RydW1lbnRh
dGlvbiBldmVudCBpcyBub3Qgc3RyaWN0bHkgYWNjdXJhdGUgc2luY2UgY2FjaGVkIG1lZGlhIHF1
ZXJ5IHJlc3VsdHMgZG8gbm90IHBlcnNpc3QgYWNyb3NzIFN0eWxlUmVzb2x2ZXIgcmVidWlsZHMu
CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWVkaWFRdWVyeVJlc3VsdENoYW5n
ZWQoKmRvY3VtZW50KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKaW5kZXggMjNhMzU5ZTUzMTY0MWFmOTFlYzljMGEzMWM4NzNlMDJjNDE5NDBjYi4uZGM1
NmM4MGM3ODU2MjI4ZThiNDdlZjUwYzkwYjJhN2IyODA1Y2NlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAg
LTMxNyw3ICszMTcsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhv
cml6b250YWxTY3JvbGxFbGFzdGljaXR5KFNjcm9sbEVsYXN0aWNpdHkpOwogICAgIFNjcm9sbEVs
YXN0aWNpdHkgaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxTY3JvbGxFbGFzdGljaXR5PihtX2hvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KTsg
fQotICAgIAorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhY2Nlc3NpYmlsaXR5U2V0dGluZ3NE
aWRDaGFuZ2UoKSBjb25zdDsKKwogICAgIC8vIFBhZ2UgYW5kIEZyYW1lVmlldyBib3RoIHN0b3Jl
IGEgUGFnaW5hdGlvbiB2YWx1ZS4gUGFnZTo6cGFnaW5hdGlvbigpIGlzIHNldCBvbmx5IGJ5IEFQ
SSwKICAgICAvLyBhbmQgRnJhbWVWaWV3OjpwYWdpbmF0aW9uKCkgaXMgc2V0IG9ubHkgYnkgQ1NT
LiBQYWdlOjpwYWdpbmF0aW9uKCkgd2lsbCBhZmZlY3QgYWxsCiAgICAgLy8gRnJhbWVWaWV3cyBp
biB0aGUgcGFnZSBjYWNoZSwgYnV0IEZyYW1lVmlldzo6cGFnaW5hdGlvbigpIG9ubHkgYWZmZWN0
cyB0aGUgY3VycmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQppbmRleCA3Zjk3NmZiYmIxYjEyZDViNzQyZTI5OGFiMTY4MTkxM2YyNmIzYWQw
Li4zYjFmYmUxNjE0MGNkNDZjYWQwMmZiZjQ4MTdmMjUwNDQ4ZmM1OTUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNTQwLDYgKzU0
MCwxMCBAQCBzdGF0aWMgdWludDMyX3QgY29udmVydFN5c3RlbUxheW91dERpcmVjdGlvbihOU1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gZGlyZQogICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6
c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2NvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2U6KSBu
YW1lOlVJQ29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmls
XTsKICAgICBfcGFnZS0+Y29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShbc2VsZiBfY29udGVu
dFNpemVDYXRlZ29yeV0pOwogCisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9y
OkBzZWxlY3RvcihfYWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlOikgbmFtZTpVSUFjY2Vz
c2liaWxpdHlHcmF5c2NhbGVTdGF0dXNEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07
CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfYWNjZXNz
aWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlOikgbmFtZTpVSUFjY2Vzc2liaWxpdHlJbnZlcnRDb2xv
cnNTdGF0dXNEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAgW2NlbnRlciBh
ZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfYWNjZXNzaWJpbGl0eVNldHRpbmdz
RGlkQ2hhbmdlOikgbmFtZTpVSUFjY2Vzc2liaWxpdHlSZWR1Y2VNb3Rpb25TdGF0dXNEaWRDaGFu
Z2VOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisKICAgICBbW19jb25maWd1cmF0aW9uIF9jb250
ZW50UHJvdmlkZXJSZWdpc3RyeV0gYWRkUGFnZToqX3BhZ2VdOwogICAgIF9wYWdlLT5zZXRGb3Jj
ZUFsd2F5c1VzZXJTY2FsYWJsZShbX2NvbmZpZ3VyYXRpb24gaWdub3Jlc1ZpZXdwb3J0U2NhbGVM
aW1pdHNdKTsKICNlbmRpZgpAQCAtMjI0OCw2ICsyMjUyLDExIEBAIHN0YXRpYyBib29sIHNjcm9s
bFZpZXdDYW5TY3JvbGwoVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3KQogICAgIHJldHVybiBbW1VJ
QXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dIHByZWZlcnJlZENvbnRlbnRTaXplQ2F0ZWdv
cnldOwogfQogCistICh2b2lkKV9hY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2U6KE5TTm90
aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAgX3BhZ2UtPmFjY2Vzc2liaWxpdHlTZXR0
aW5nc0RpZENoYW5nZSgpOworfQorCiAtICh2b2lkKXNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdh
dGlvbkdlc3R1cmVzOihCT09MKWFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzCiB7
CiAgICAgaWYgKF9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyA9PSBhbGxvd3NC
YWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcykKQEAgLTQ3OTUsNiArNDgwNCwxMSBAQCBzdGF0
aWMgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB0b1VzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24oVUlTZQogICAgIHJldHVybiBfcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7
CiB9CiAKKy0gKHZvaWQpX3NpbXVsYXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlTm90aWZp
Y2F0aW9uCit7CisgICAgX3BhZ2UtPmFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENoYW5nZSgpOwor
fQorCiAvLyBFeGVjdXRlIHRoZSBzdXBwbGllZCBibG9jayBhZnRlciB0aGUgbmV4dCB0cmFuc2Fj
dGlvbiBmcm9tIHRoZSBXZWJQcm9jZXNzLgogLSAodm9pZClfZG9BZnRlck5leHRQcmVzZW50YXRp
b25VcGRhdGU6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGFi
ZWM0ZDAxOGIyZWNiNjdiYWNmZWM4MTcwMzQ4Nzc2ZDYwN2QyYmMuLjBhZTU2NjljMzYyNmM4OGIy
ZmEwNzA4NDUwMjRmZjliMWZiMGNlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zMTAsNiArMzEwLDggQEAg
dHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLSW1tZWRpYXRlQWN0aW9uVHlwZSkgewogLSAo
dm9pZClfc2V0UGFnZVNjYWxlOihDR0Zsb2F0KXNjYWxlIHdpdGhPcmlnaW46KENHUG9pbnQpb3Jp
Z2luIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKIC0gKENHRmxvYXQpX3BhZ2VT
Y2FsZSBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpX3NpbXVs
YXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlTm90aWZpY2F0aW9uIFdLX0FQSV9BVkFJTEFC
TEUoaW9zKFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfZG9BZnRlck5leHRQcmVzZW50YXRpb25V
cGRhdGU6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogLSAodm9pZClfZGlzYWJsZUJhY2tGb3J3YXJkU25hcHNo
b3RWb2xhdGlsaXR5Rm9yVGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLmgKaW5kZXggYmE3OTkzNmVhM2VlMDdlNGVlYTY2ZTEyYTZiNGU2ZWQxYzhiOWJi
Yy4uZjc3NDRjZmFhY2I3MmZkZTNjN2Y4NmUyOTgwYTRhNmJkZjNjM2ZiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAgLTQzLDYgKzQzLDcgQEAK
IE9CSkNfQ0xBU1MgTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplcjsKIE9CSkNfQ0xB
U1MgTlNUZXh0SW5wdXRDb250ZXh0OwogT0JKQ19DTEFTUyBOU1ZpZXc7CitPQkpDX0NMQVNTIFdL
QWNjZXNzaWJpbGl0eVNldHRpbmdzT2JzZXJ2ZXI7CiBPQkpDX0NMQVNTIFdLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1MgV0tFZGl0b3JVbmRvVGFyZ2V0T2JqQzsKIE9CSkNf
Q0xBU1MgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcjsKQEAgLTIwOCw2ICsyMDksOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRm9yRXZlbnQoTlNFdmVu
dCAqKTsKICAgICBib29sIHdpbmRvd1Jlc2l6ZU1vdXNlTG9jYXRpb25Jc0luVmlzaWJsZVNjcm9s
bGVyVGh1bWIoQ0dQb2ludCk7CiAKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENo
YW5nZSgpOworCiAgICAgLy8gLVtOU1ZpZXcgbW91c2VEb3duQ2FuTW92ZVdpbmRvd10gcmV0dXJu
cyBZRVMgd2hlbiB0aGUgTlNWaWV3IGlzIHRyYW5zcGFyZW50LAogICAgIC8vIGJ1dCB3ZSBkb24n
dCB3YW50IGEgZHJhZyBpbiB0aGUgTlNWaWV3IHRvIG1vdmUgdGhlIHdpbmRvdywgZXZlbiBpZiBp
dCdzIHRyYW5zcGFyZW50LgogICAgIHN0YXRpYyBib29sIG1vdXNlRG93bkNhbk1vdmVXaW5kb3co
KSB7IHJldHVybiBmYWxzZTsgfQpAQCAtNjMxLDYgKzYzNCw3IEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogICAgIFJldGFpblB0cjxXS1dpbmRvd1Zpc2liaWxpdHlPYnNlcnZlcj4gbV93aW5kb3dWaXNp
YmlsaXR5T2JzZXJ2ZXI7CisgICAgUmV0YWluUHRyPFdLQWNjZXNzaWJpbGl0eVNldHRpbmdzT2Jz
ZXJ2ZXI+IG1fYWNjZXNzaWJpbGl0eVNldHRpbmdzT2JzZXJ2ZXI7CiAKICAgICBib29sIG1fc2hv
dWxkRGVmZXJWaWV3SW5XaW5kb3dDaGFuZ2VzIHsgZmFsc2UgfTsKICAgICBib29sIG1fdmlld0lu
V2luZG93Q2hhbmdlV2FzRGVmZXJyZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDgyMDJlMzJhODFkNDgzMGZmZTlkZjlm
NWI2Y2U3NWIyM2JhN2FhZGUuLmE4MDlhNjQ0MWE4YmE4MzQ3MGE3ZWEzZGNmZTFkNzI0NGUyMDU0
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
QEAgLTEyMiw2ICsxMjIsNDQgQEAgU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKExvb2t1cCwg
TFVOb3RpZmljYXRpb25Qb3BvdmVyV2lsbENsb3NlLCBOU1N0cmluZyAqKQogLSAoQk9PTCloYW5k
bGVFdmVudEJ5S2V5Ym9hcmRMYXlvdXQ6KE5TRXZlbnQgKilldmVudDsKIEBlbmQKIAorQGludGVy
ZmFjZSBXS0FjY2Vzc2liaWxpdHlTZXR0aW5nc09ic2VydmVyIDogTlNPYmplY3QgeworICAgIFdl
YktpdDo6V2ViVmlld0ltcGwgKl9pbXBsOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJ
bXBsOihXZWJLaXQ6OldlYlZpZXdJbXBsJilpbXBsOworQGVuZAorCitAaW1wbGVtZW50YXRpb24g
V0tBY2Nlc3NpYmlsaXR5U2V0dGluZ3NPYnNlcnZlcgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhJbXBsOihXZWJLaXQ6OldlYlZpZXdJbXBsJilpbXBsCit7CisgICAgc2VsZiA9IFtzdXBlciBp
bml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfaW1wbCA9
ICZpbXBsOworCisgICAgTlNOb3RpZmljYXRpb25DZW50ZXIqIHdvcmtzcGFjZU5vdGlmaWNhdGlv
bkNlbnRlciA9IFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBub3RpZmljYXRpb25DZW50
ZXJdOworICAgIFt3b3Jrc3BhY2VOb3RpZmljYXRpb25DZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoX3NldHRpbmdzRGlkQ2hhbmdlOikgbmFtZTpOU1dvcmtzcGFjZUFj
Y2Vzc2liaWxpdHlEaXNwbGF5T3B0aW9uc0RpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmls
XTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBOU05v
dGlmaWNhdGlvbkNlbnRlciAqd29ya3NwYWNlTm90aWZpY2F0aW9uQ2VudGVyID0gW1tOU1dvcmtz
cGFjZSBzaGFyZWRXb3Jrc3BhY2VdIG5vdGlmaWNhdGlvbkNlbnRlcl07CisgICAgW3dvcmtzcGFj
ZU5vdGlmaWNhdGlvbkNlbnRlciByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6TlNXb3Jrc3BhY2VB
Y2Nlc3NpYmlsaXR5RGlzcGxheU9wdGlvbnNEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Om5p
bF07CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpX3NldHRpbmdzRGlkQ2hh
bmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIF9pbXBsLT5hY2Nlc3Np
YmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKTsKK30KKworQGVuZAorCiBAaW50ZXJmYWNlIFdLV2lu
ZG93VmlzaWJpbGl0eU9ic2VydmVyIDogTlNPYmplY3QgewogICAgIE5TVmlldyAqX3ZpZXc7CiAg
ICAgV2ViS2l0OjpXZWJWaWV3SW1wbCAqX2ltcGw7CkBAIC0xMzQsNyArMTcyLDYgQEAgU09GVF9M
SU5LX0NPTlNUQU5UX01BWV9GQUlMKExvb2t1cCwgTFVOb3RpZmljYXRpb25Qb3BvdmVyV2lsbENs
b3NlLCBOU1N0cmluZyAqKQogLSAodm9pZClzdGFydE9ic2VydmluZ0xvb2t1cERpc21pc3NhbDsK
IEBlbmQKIAotCiBAaW1wbGVtZW50YXRpb24gV0tXaW5kb3dWaXNpYmlsaXR5T2JzZXJ2ZXIKIAog
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooTlNWaWV3ICopdmlldyBpbXBsOihXZWJLaXQ6
OldlYlZpZXdJbXBsJilpbXBsCkBAIC0xMTgwLDYgKzEyMTcsNyBAQCBXZWJWaWV3SW1wbDo6V2Vi
Vmlld0ltcGwoTlNWaWV3IDxXZWJWaWV3SW1wbERlbGVnYXRlPiAqdmlldywgV0tXZWJWaWV3ICpv
dXRlcldlYgogICAgICwgbV9sYXlvdXRTdHJhdGVneShbV0tWaWV3TGF5b3V0U3RyYXRlZ3kgbGF5
b3V0U3RyYXRlZ3lXaXRoUGFnZTptX3BhZ2UgdmlldzptX3ZpZXcgdmlld0ltcGw6KnRoaXMgbW9k
ZTprV0tMYXlvdXRNb2RlVmlld1NpemVdKQogICAgICwgbV91bmRvVGFyZ2V0KGFkb3B0TlMoW1tX
S0VkaXRvclVuZG9UYXJnZXRPYmpDIGFsbG9jXSBpbml0XSkpCiAgICAgLCBtX3dpbmRvd1Zpc2li
aWxpdHlPYnNlcnZlcihhZG9wdE5TKFtbV0tXaW5kb3dWaXNpYmlsaXR5T2JzZXJ2ZXIgYWxsb2Nd
IGluaXRXaXRoVmlldzp2aWV3IGltcGw6KnRoaXNdKSkKKyAgICAsIG1fYWNjZXNzaWJpbGl0eVNl
dHRpbmdzT2JzZXJ2ZXIoYWRvcHROUyhbW1dLQWNjZXNzaWJpbGl0eVNldHRpbmdzT2JzZXJ2ZXIg
YWxsb2NdIGluaXRXaXRoSW1wbDoqdGhpc10pKQogICAgICwgbV9wcmltYXJ5VHJhY2tpbmdBcmVh
KGFkb3B0TlMoW1tOU1RyYWNraW5nQXJlYSBhbGxvY10gaW5pdFdpdGhSZWN0Om1fdmlldy5mcmFt
ZSBvcHRpb25zOnRyYWNraW5nQXJlYU9wdGlvbnMoKSBvd25lcjptX3ZpZXcgdXNlckluZm86bmls
XSkpCiB7CiAgICAgc3RhdGljX2Nhc3Q8UGFnZUNsaWVudEltcGwmPigqbV9wYWdlQ2xpZW50KS5z
ZXRJbXBsKCp0aGlzKTsKQEAgLTE4MzksNiArMTg3NywxMSBAQCBib29sIFdlYlZpZXdJbXBsOjpt
aWdodEJlZ2luU2Nyb2xsV2hpbGVJbmFjdGl2ZSgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2
b2lkIFdlYlZpZXdJbXBsOjphY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKQoreworICAg
IG1fcGFnZS0+YWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKCk7Cit9CisKIGJvb2wgV2Vi
Vmlld0ltcGw6OmFjY2VwdHNGaXJzdE1vdXNlKE5TRXZlbnQgKmV2ZW50KQogewogICAgIGlmICgh
bWlnaHRCZWdpbkRyYWdXaGlsZUluYWN0aXZlKCkgJiYgIW1pZ2h0QmVnaW5TY3JvbGxXaGlsZUlu
YWN0aXZlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IDE1YmQwNzc2Yjc5ZjM4Yzk0ZGEzMjRkYTQ5YzI3YTQ5NzI1NmZlMmYuLmFkZTJmYzc0YmJkOTBj
ZTg3OTc1ZmExNDcxMGQ0YTNjOTA1OGE3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC0yNjAzLDYgKzI2MDMsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldEN1c3RvbURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGN1c3RvbVNjYWxlRmFjdG9yKQogICAg
ICAgICBtX2RyYXdpbmdBcmVhLT5kZXZpY2VTY2FsZUZhY3RvckRpZENoYW5nZSgpOwogfQogCit2
b2lkIFdlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKCkKK3sKKyAg
ICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKSwgbV9w
YWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlRml4ZWRMYXlvdXQoYm9vbCBm
aXhlZCkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCBhOGRmY2Q3NTM5MDM2YWQ2ZjEwOGViNzJjM2IwOWI2MGIyMDRjNTI2
Li40ZGIzNzlhOGNlOWQ3NzMzMDIzMTFhMGU1NDJjOTA1YTU4N2NhOTFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02ODQsNiArNjg0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOwogICAgIHZvaWQg
c2V0Q3VzdG9tRGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOwogICAgIHZvaWQgd2luZG93U2NyZWVu
RGlkQ2hhbmdlKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKTsKKyAgICB2b2lkIGFjY2Vzc2li
aWxpdHlTZXR0aW5nc0RpZENoYW5nZSgpOwogCiAgICAgdm9pZCBzZXRVc2VGaXhlZExheW91dChi
b29sKTsKICAgICB2b2lkIHNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggMDY5MGU5MGYwNzEzZjQxNGIyM2U2MDM0NWM0NjI4YzZmNjAwYjZlZi4uNmUyZjk1NzYzNWRh
NGVlNzVlYjk0ZTdhMzc4ZGRjMGY2NjA1YjRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTY3MSw2ICsxNjcxLDExIEBAIGZsb2F0IFdl
YlBhZ2U6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlLT5kZXZp
Y2VTY2FsZUZhY3RvcigpOwogfQogCit2b2lkIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlTZXR0aW5n
c0RpZENoYW5nZSgpCit7CisgICAgbV9wYWdlLT5hY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFu
Z2UoKTsKK30KKwogdm9pZCBXZWJQYWdlOjpzZXRVc2VGaXhlZExheW91dChib29sIGZpeGVkKQog
ewogICAgIC8vIERvIG5vdCBvdmVyd3JpdGUgY3VycmVudCBzZXR0aW5ncyBpZiBpbml0aWFsbHkg
c2V0dGluZyBpdCB0byBmYWxzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IDJiNTYwZTI1NzllOTZhZTQyMDU3NmNlNWQ4MmZiZGVlNmJjNDM0NDgu
LmU3ZTUxYzk1MzU3NDk2NGNmYmIzYzA3ODczNTU1Y2ZmYTc3M2ZiOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzkxLDYgKzM5MSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZG91YmxlIHBhZ2Vab29t
RmFjdG9yLCBkb3VibGUgdGV4dFpvb21GYWN0b3IpOwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlk
Q2hhbmdlKHVpbnQzMl90KTsKIAorICAgIHZvaWQgYWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hh
bmdlKCk7CisKICAgICB2b2lkIHNjYWxlUGFnZShkb3VibGUgc2NhbGUsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBvcmlnaW4pOwogICAgIHZvaWQgc2NhbGVQYWdlSW5WaWV3Q29vcmRpbmF0ZXMo
ZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpJbnRQb2ludCBjZW50ZXJJblZpZXdDb29yZGluYXRlcyk7
CiAgICAgZG91YmxlIHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA2MmY1
NWQ1NDU5YWFmNDI3NTMxOTlmMTAzODI1NmUzZTk4ZTE0NjhmLi45NmRjYmM5MjI2NTI1NzM4MTlj
NGMzYTkxZWM2YTYxYmFjZWMwOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjAxLDYgKzIwMSw4IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFRleHRab29tRmFjdG9y
KGRvdWJsZSB6b29tRmFjdG9yKQogICAgIFdpbmRvd1NjcmVlbkRpZENoYW5nZSh1aW50MzJfdCBk
aXNwbGF5SUQpCiAKKyAgICBBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKQorCiAgICAg
U2NhbGVQYWdlKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6SW50UG9pbnQgb3JpZ2luKQogICAgIFNj
YWxlUGFnZUluVmlld0Nvb3JkaW5hdGVzKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6SW50UG9pbnQg
Y2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpCiAgICAgU2NhbGVWaWV3KGRvdWJsZSBzY2FsZSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmYjQ0ZjBj
OGQzNmM0MjZjN2Y4ZWNiODAxYWZhZDIzMTU1YmUxYjM2Li45NjRlYWEzZDZlZDk5ODJiOTc4NGY5
YTBhZjMxZmI1YWZhMTgxY2Q4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTYtMTEtMTggIERlYW4gSmFja3NvbiAg
PGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIEFYOiAiKGludmVydGVkLWNvbG9ycykiIG1lZGlh
IHF1ZXJ5IG9ubHkgbWF0Y2hlcyBvbiBwYWdlIHJlbG9hZDsgc2hvdWxkIG1hdGNoIG9uIGNoYW5n
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNTY0
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODgwNzM1MD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBVSVNjcmlwdENvbnRyb2xsZXIgbWV0
aG9kIHRoYXQgdHJpY2tzIFdlYktpdCBpbnRvIHRoaW5raW5nCisgICAgICAgIGl0IGhhcyByZWNl
aXZlZCBhIG5vdGlmaWNhdGlvbiB0aGF0IGFjY2Vzc2liaWxpdHkgc2V0dGluZ3MgaGF2ZQorICAg
ICAgICBjaGFuZ2VkLiBDb21iaW5lZCB3aXRoIG91ciBmb3JjZWQgb3ZlcnJpZGVzLCB0aGlzIGFs
bG93cyB1cyB0bworICAgICAgICB0ZXN0IGlmIGEgcGFnZSB3b3VsZCByZWFjdCB0byB0aGUgbm90
aWZpY2F0aW9ucy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRy
b2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6c2ltdWxhdGVB
Y2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3RpZmljYXRpb24pOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlcjo6c2ltdWxhdGVBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3Rp
ZmljYXRpb24pOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0Jp
bmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6
c2ltdWxhdGVBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3RpZmljYXRpb24pOgorICAgICAg
ICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzaW11bGF0ZUFjY2Vzc2liaWxp
dHlTZXR0aW5nc0NoYW5nZU5vdGlmaWNhdGlvbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXI6OnNpbXVsYXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlTm90aWZpY2F0aW9u
KToKKwogMjAxNi0xMS0xNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgRG93bmxvYWRzIHN0YXJ0ZWQgYnkgY29udGV4dCBtZW51IGFjdGlvbnMg
c2hvdWxkIGFsc28gaGF2ZSBhIHdlYiB2aWV3IGFzc29jaWF0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IGRmZDg3ZDJkYzBj
ZTA3OTU1YmU0MGEyYzgyNTc5M2E0N2RmOTRjYTguLjNmY2ZlNDkyMmQ2MGYxZjFiMTdlY2M2Yzg4
M2UzM2JhMWNlNzE5MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNj
cmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2Ny
aXB0Q29udHJvbGxlcklPUy5tbQpAQCAtNjMsNiArNjMsMTAgQEAgdm9pZCBVSVNjcmlwdENvbnRy
b2xsZXI6Onpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAg
ICB9KTsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNpbXVsYXRlQWNjZXNzaWJpbGl0
eVNldHRpbmdzQ2hhbmdlTm90aWZpY2F0aW9uKEpTVmFsdWVSZWYpCit7Cit9CisKIGRvdWJsZSBV
SVNjcmlwdENvbnRyb2xsZXI6Onpvb21TY2FsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdXZWJT
Y3JvbGxWaWV3Lnpvb21TY2FsZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlT
Y3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IGI3ODI4ZTEzOWFjYzc3Y2QxZTY0ZGQ0MzVhODRk
ZTUxOTgwYmI4OTUuLjU1ZGI0ZWViN2U4MjQ0NDE2NzIwNDMyOGE2N2Q0Y2M1MDk4ZTA5ODkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMu
bW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5t
bQpAQCAtNjQsNiArNjQsMTAgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Onpvb21Ub1NjYWxl
KGRvdWJsZSBzY2FsZSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAgICB9KTsKIH0KIAordm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OnNpbXVsYXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlTm90
aWZpY2F0aW9uKEpTVmFsdWVSZWYpCit7Cit9CisKIEpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJv
bGxlcjo6Y29udGVudHNPZlVzZXJJbnRlcmZhY2VJdGVtKEpTU3RyaW5nUmVmIGludGVyZmFjZUl0
ZW0pIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIu
aWRsIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlT
Y3JpcHRDb250cm9sbGVyLmlkbAppbmRleCA1MTA2OTI0ZWJlMWQzZmExNWIwZjZjYWYyOTZmZDMy
MmMzNDQzZmM5Li4wZWQ0MGMwMmUzMzM5YTQwNDQ5ZGIxMTVkMDQ5Nzc5YjhhMmEyZWZiIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9V
SVNjcmlwdENvbnRyb2xsZXIuaWRsCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKQEAgLTI5LDYgKzI5LDgg
QEAgaW50ZXJmYWNlIFVJU2NyaXB0Q29udHJvbGxlciB7CiAKICAgICB2b2lkIHpvb21Ub1NjYWxl
KGRvdWJsZSBzY2FsZSwgb2JqZWN0IGNhbGxiYWNrKTsKIAorICAgIHZvaWQgc2ltdWxhdGVBY2Nl
c3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3RpZmljYXRpb24ob2JqZWN0IGNhbGxiYWNrKTsKKwog
ICAgIC8vIEludGVyYWN0aW9uLgogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBwb3N0IGV2ZW50cyBh
c3luY2hyb25vdXNseS4gVGhlIGNhbGxiYWNrIGlzIGZpcmVkIHdoZW4gdGhlIGV2ZW50cyBoYXZl
IGJlZW4gZGlzcGF0Y2hlZCwgYnV0IGFueQogICAgIC8vIHJlc3VsdGluZyBiZWhhdmlvciBtYXkg
YWxzbyBiZSBhc3luY2hyb25vdXMuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBkYzk0
MmIxOThiNDg1NWRmYzUzZmU3YTE4MDAxNGNlZDYxOGU3OWM3Li4yN2RmNTllNjM1ZWRkYWU3NTFh
YzhjMDZhOTUzOWVlZmU1ZjEwMDc4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2
LDYgKzU2LDEwIEBAIEpTQ2xhc3NSZWYgVUlTY3JpcHRDb250cm9sbGVyOjp3cmFwcGVyQ2xhc3Mo
KQogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYpCiB7CiB9
CisKK3ZvaWQgc2ltdWxhdGVBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3RpZmljYXRpb24o
SlNWYWx1ZVJlZikKK3sKK30KICNlbmRpZgogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2V0
RGlkU3RhcnRGb3JtQ29udHJvbEludGVyYWN0aW9uQ2FsbGJhY2soSlNWYWx1ZVJlZiBjYWxsYmFj
aykKQEAgLTE2Miw2ICsxNjYsMTAgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Onpvb21Ub1Nj
YWxlKGRvdWJsZSwgSlNWYWx1ZVJlZikKIHsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6
OnNpbXVsYXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlTm90aWZpY2F0aW9uKEpTVmFsdWVS
ZWYpCit7Cit9CisKIEpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVudHNPZlVz
ZXJJbnRlcmZhY2VJdGVtKEpTU3RyaW5nUmVmIGludGVyZmFjZUl0ZW0pIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDgyMGJjYzJlNjlmYWVh
MTE2YjUyMWJlMzQ2ZDZmNmI1NjQ5NzVhMmMuLmU4ZDBmOGMxYzFjN2ZlNjA0NGQ2YmQ5ZjUwNTky
OTZkZDlkZTUzNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC01Miw2ICs1Miw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRvQXN5bmNUYXNrKEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZv
aWQgem9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKIAorICAg
IHZvaWQgc2ltdWxhdGVBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3RpZmljYXRpb24oSlNW
YWx1ZVJlZiBjYWxsYmFjayk7CisKICAgICB2b2lkIHRvdWNoRG93bkF0UG9pbnQobG9uZyB4LCBs
b25nIHksIGxvbmcgdG91Y2hDb3VudCwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBs
aWZ0VXBBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBsb25nIHRvdWNoQ291bnQsIEpTVmFsdWVSZWYg
Y2FsbGJhY2spOwogICAgIHZvaWQgc2luZ2xlVGFwQXRQb2ludChsb25nIHgsIGxvbmcgeSwgSlNW
YWx1ZVJlZiBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lv
cy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9V
SVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggODE4NGI2ZDgwYTEwZGViNzY0ZDAzNDUwYjVi
MTg4MmRlMzM5MzYwOC4uZjVjNzU4YjA3ZGU5MTdjNjA0ZGRlYzIxN2NjZGJlMWZmMDU1M2U2MyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVy
SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbQpAQCAtNjgsNiArNjgsMjAgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Onpvb21U
b1NjYWxlKGRvdWJsZSBzY2FsZSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAgICB9XTsKIH0KIAor
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNpbXVsYXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hh
bmdlTm90aWZpY2F0aW9uKEpTVmFsdWVSZWYgY2FsbGJhY2spCit7CisgICAgdW5zaWduZWQgY2Fs
bGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2FsbGJh
Y2tUeXBlTm9uUGVyc2lzdGVudCk7CisKKyAgICBhdXRvKiB3ZWJWaWV3ID0gVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIFt3ZWJW
aWV3IF9zaW11bGF0ZUFjY2Vzc2liaWxpdHlTZXR0aW5nc0NoYW5nZU5vdGlmaWNhdGlvbl07CisK
KyAgICBbd2ViVmlldyBfZG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6IF4geworICAgICAg
ICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jb250ZXh0
LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKKyAgICB9XTsKK30KKwogZG91YmxlIFVJ
U2NyaXB0Q29udHJvbGxlcjo6em9vbVNjYWxlKCkgY29uc3QKIHsKICAgICBUZXN0UnVubmVyV0tX
ZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3
KCktPnBsYXRmb3JtVmlldygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMv
VUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IGEyM2IyNzBkOTNlMTdkYzI5MTg5Yjg4Mzlj
ZTBlZDJiY2QxN2JhMjQuLmVkNDRkODhmODFjOTE5NzExOTFlZWUwZTk2OTljOGRiY2MwNGE1ZjIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxl
ck1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xs
ZXJNYWMubW0KQEAgLTkwLDYgKzkwLDI0IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjp6b29t
VG9TY2FsZShkb3VibGUgc2NhbGUsIEpTVmFsdWVSZWYgY2FsbGJhY2spCiAjZW5kaWYKIH0KIAor
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNpbXVsYXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hh
bmdlTm90aWZpY2F0aW9uKEpTVmFsdWVSZWYgY2FsbGJhY2spCit7CisjaWYgV0tfQVBJX0VOQUJM
RUQKKyAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNU
YXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKKworICAgIGF1dG8qIHdl
YlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZv
cm1WaWV3KCk7CisgICAgW3dlYlZpZXcgX3NpbXVsYXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hh
bmdlTm90aWZpY2F0aW9uXTsKKworICAgIFt3ZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNlbnRhdGlv
blVwZGF0ZTogXiB7CisgICAgICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOworICAg
IH1dOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworI2VuZGlmCit9CisKIEpT
T2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVudHNPZlVzZXJJbnRlcmZhY2VJdGVt
KEpTU3RyaW5nUmVmIGludGVyZmFjZUl0ZW0pIGNvbnN0CiB7CiAjaWYgV0tfQVBJX0VOQUJMRUQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4NjllOTgwMjc3ODVlMjU1NGNkYWFmYzRhZjYyZjE0NWYzMGY1ZDU2Li4zY2NiNWZi
MDg1ODZlZDg4NmM3ZjhmOWM3ZTZlNDZjYmEyMTllZDlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjAgQEAK
IDIwMTYtMTEtMTggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCisgICAgICAgIEFY
OiAiKGludmVydGVkLWNvbG9ycykiIG1lZGlhIHF1ZXJ5IG9ubHkgbWF0Y2hlcyBvbiBwYWdlIHJl
bG9hZDsgc2hvdWxkIG1hdGNoIG9uIGNoYW5nZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNTY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODgw
NzM1MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvbWVkaWEvbXEtaW52ZXJ0ZWQtY29sb3JzLWxpdmUtdXBkYXRlLWV4cGVjdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtaW52ZXJ0ZWQtY29sb3JzLWxpdmUtdXBk
YXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtbW9ub2Nocm9tZS1saXZl
LXVwZGF0ZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLW1v
bm9jaHJvbWUtbGl2ZS11cGRhdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9t
cS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLWxpdmUtdXBkYXRlLWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1saXZlLXVw
ZGF0ZS5odG1sOiBBZGRlZC4KKworMjAxNi0xMS0xOCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBs
ZS5jb20+CisKICAgICAgICAgQmV0dGVyIHRlc3RpbmcgZm9yIGFjY2Vzc2liaWxpdHkgbWVkaWEg
cXVlcmllcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY0OTU0CiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTMzODI5Mj4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IGFiM2Q1MWJmNDJjYjY0YjkzOWJiMzc0ODYzNWE0OTVlMTM4M2Y2MGEuLmFiYzdkZDE3
NTdlNWJlOGQxNjk2MGU1MDk0MGRiMGU3MTk4OGJjZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
NzAsNiArNzAsMTEgQEAgZWRpdGluZy9zZWxlY3Rpb24vY2hhcmFjdGVyLWdyYW51bGFyaXR5LXJl
Y3QuaHRtbCBbIFNraXAgXQogIyBUaGlzIHRlc3QgaXMgZm9yIGlvcy1zaW11bGF0b3Itd2sxCiBl
ZGl0aW5nL2lucHV0L2ZvY3VzLWNoYW5nZS13aXRoLW1hcmtlZC10ZXh0Lmh0bWwgWyBTa2lwIF0K
IAorIyBUaGVzZSBvbmx5IHJ1biBvbiBNYWMgYW5kIGlPUyBXSzIKK2Zhc3QvbWVkaWEvbXEtaW52
ZXJ0ZWQtY29sb3JzLWxpdmUtdXBkYXRlLmh0bWwgWyBTa2lwIF0KK2Zhc3QvbWVkaWEvbXEtbW9u
b2Nocm9tZS1saXZlLXVwZGF0ZS5odG1sIFsgU2tpcCBdCitmYXN0L21lZGlhL21xLXByZWZlcnMt
cmVkdWNlZC1tb3Rpb24tbGl2ZS11cGRhdGUuaHRtbCBbIFNraXAgXQorCiAjLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyB0ZXN0cy4KICMv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvbXEtaW52ZXJ0ZWQtY29sb3JzLWxpdmUtdXBkYXRlLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmVydGVkLWNvbG9ycy1saXZlLXVwZGF0ZS1l
eHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiYTA1NTRhNTkxMDkzODMxYWZmYTcwM2NhYTQ5OGQ5
OTFkMjI0YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWlu
dmVydGVkLWNvbG9ycy1saXZlLXVwZGF0ZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTQgQEAK
KzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTNCBtZWRpYSBxdWVyeSB0ZXN0OiBpbnZlcnRlZC1j
b2xvcnMuPC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsgY29sb3I6IGJsYWNr
OyB9CisjYSB7IGNvbG9yOiBncmVlbjsgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8
cCBpZD0iYSI+PC9wPgorICA8cD5CZWZvcmUgd2FzOiByZ2IoMCwgMCwgMCkgLSBzaG91bGQgYmUg
cmdiKDAsIDAsIDApPC9wPgorICA8cD5BZnRlciB3YXM6IHJnYigwLCAxMjgsIDApIC0gc2hvdWxk
IGJlIHJnYigwLCAxMjgsIDApPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZlcnRlZC1jb2xvcnMtbGl2ZS11cGRhdGUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52ZXJ0ZWQtY29sb3JzLWxpdmUtdXBkYXRlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDVkY2JlMWRlOGQyZDQ2NjIyZDJkYjhiOTgzMWQ4M2U0NmJlYTUzYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52ZXJ0ZWQtY29s
b3JzLWxpdmUtdXBkYXRlLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5DU1M0IG1lZGlhIHF1ZXJ5IHRlc3Q6IGludmVydGVkLWNvbG9ycy48L3RpdGxlPgorPHN0
eWxlIHR5cGU9InRleHQvY3NzIj4KK3AgeyBjb2xvcjogYmxhY2s7IH0KKworQG1lZGlhIChpbnZl
cnRlZC1jb2xvcnMpIHsKKyAgICAjYSB7IGNvbG9yOiBncmVlbjsgfQorfQorPC9zdHlsZT4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisKK2Z1bmN0aW9uIGdldFVJU2NyaXB0KCkKK3sKKyAgICByZXR1cm4gYAorICAgIChm
dW5jdGlvbigpIHsKKyAgICAgICAgdWlDb250cm9sbGVyLnNpbXVsYXRlQWNjZXNzaWJpbGl0eVNl
dHRpbmdzQ2hhbmdlTm90aWZpY2F0aW9uKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdWlDb250
cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoIkRvbmUiKTsKKyAgICAgICAgfSk7CisgICAgfSkoKTtg
Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICghd2luZG93LmludGVybmFscykK
KyAgICAgICAgcmV0dXJuOworCisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiYSIpOworCisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5mb3JjZWRDb2xvcnNB
cmVJbnZlcnRlZEFjY2Vzc2liaWxpdHlWYWx1ZSA9ICJvbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImJlZm9yZSIpLnRleHRDb250ZW50ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUo
ZWxlbWVudCkuY29sb3I7CisgICAgaWYgKHRlc3RSdW5uZXIucnVuVUlTY3JpcHQpIHsKKyAgICAg
ICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChnZXRVSVNjcmlwdCgpLCBmdW5jdGlvbihyZXN1bHQp
IHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhZnRlciIpLnRleHRDb250
ZW50ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuY29sb3I7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHJ1blRlc3QsIGZhbHNlKTsKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+CisgIDxwIGlkPSJhIj48L3A+CisgIDxwPkJlZm9yZSB3YXM6IDxzcGFu
IGlkPSJiZWZvcmUiPjwvc3Bhbj4gLSBzaG91bGQgYmUgcmdiKDAsIDAsIDApPC9wPgorICA8cD5B
ZnRlciB3YXM6IDxzcGFuIGlkPSJhZnRlciI+PC9zcGFuPiAtIHNob3VsZCBiZSByZ2IoMCwgMTI4
LCAwKTwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvbXEtbW9ub2Nocm9tZS1saXZlLXVwZGF0ZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS9tcS1tb25vY2hyb21lLWxpdmUtdXBkYXRlLWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTUzNDMwMmE3ZDkwYzUyNGU5MWFhZjE3MjIzNGJlNWFiZTJjODAzMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtbW9ub2Nocm9tZS1saXZlLXVw
ZGF0ZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0
bGU+Q1NTNCBtZWRpYSBxdWVyeSB0ZXN0OiBtb25vY2hyb21lLjwvdGl0bGU+Cis8c3R5bGUgdHlw
ZT0idGV4dC9jc3MiPgorcCB7IGNvbG9yOiBibGFjazsgfQorI2EgeyBjb2xvcjogZ3JlZW47IH0K
Kzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImEiPjwvcD4KKyAgPHA+QmVmb3Jl
IHdhczogcmdiKDAsIDAsIDApIC0gc2hvdWxkIGJlIHJnYigwLCAwLCAwKTwvcD4KKyAgPHA+QWZ0
ZXIgd2FzOiByZ2IoMCwgMTI4LCAwKSAtIHNob3VsZCBiZSByZ2IoMCwgMTI4LCAwKTwvcD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtbW9u
b2Nocm9tZS1saXZlLXVwZGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1tb25v
Y2hyb21lLWxpdmUtdXBkYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM1YTcyODYzNTM4OGFhOTJiNzY5
M2YxMGZiN2JjMGQ3NzVmZGU0NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvbXEtbW9ub2Nocm9tZS1saXZlLXVwZGF0ZS5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTNCBtZWRpYSBxdWVyeSB0ZXN0OiBtb25vY2hyb21lLjwv
dGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorcCB7IGNvbG9yOiBibGFjazsgfQorCitA
bWVkaWEgKG1vbm9jaHJvbWUpIHsKKyAgICAjYSB7IGNvbG9yOiBncmVlbjsgfQorfQorPC9zdHls
ZT4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIGdldFVJU2NyaXB0KCkKK3sKKyAgICByZXR1cm4gYAor
ICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgdWlDb250cm9sbGVyLnNpbXVsYXRlQWNjZXNzaWJp
bGl0eVNldHRpbmdzQ2hhbmdlTm90aWZpY2F0aW9uKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
dWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoIkRvbmUiKTsKKyAgICAgICAgfSk7CisgICAg
fSkoKTtgCit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICghd2luZG93LmludGVy
bmFscykKKyAgICAgICAgcmV0dXJuOworCisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiYSIpOworCisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5mb3JjZWRE
aXNwbGF5SXNNb25vY2hyb21lQWNjZXNzaWJpbGl0eVZhbHVlID0gIm9uIjsKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiYmVmb3JlIikudGV4dENvbnRlbnQgPSB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZShlbGVtZW50KS5jb2xvcjsKKyAgICBpZiAodGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkg
eworICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGdldFVJU2NyaXB0KCksIGZ1bmN0aW9u
KHJlc3VsdCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFmdGVyIiku
dGV4dENvbnRlbnQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5jb2xvcjsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9KTsKKyAgICB9Cit9
CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgcnVuVGVzdCwgZmFsc2UpOworPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImEiPjwvcD4KKyAgPHA+QmVmb3JlIHdh
czogPHNwYW4gaWQ9ImJlZm9yZSI+PC9zcGFuPiAtIHNob3VsZCBiZSByZ2IoMCwgMCwgMCk8L3A+
CisgIDxwPkFmdGVyIHdhczogPHNwYW4gaWQ9ImFmdGVyIj48L3NwYW4+IC0gc2hvdWxkIGJlIHJn
YigwLCAxMjgsIDApPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS9tcS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLWxpdmUtdXBkYXRlLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rp
b24tbGl2ZS11cGRhdGUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTQ0ZmU3Yzg4YTVjOGFk
NzI3NzU5M2EwNWNhYzkxYjY4MTIwNDJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tcS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLWxpdmUtdXBkYXRlLWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1M0IG1lZGlh
IHF1ZXJ5IHRlc3Q6IHByZWZlcnMtcmVkdWNlZC1tb3Rpb24uPC90aXRsZT4KKzxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyI+CitwIHsgY29sb3I6IGJsYWNrOyB9CisjYSB7IGNvbG9yOiBncmVlbjsgfQor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8cCBpZD0iYSI+PC9wPgorICA8cD5CZWZvcmUg
d2FzOiByZ2IoMCwgMCwgMCkgLSBzaG91bGQgYmUgcmdiKDAsIDAsIDApPC9wPgorICA8cD5BZnRl
ciB3YXM6IHJnYigwLCAxMjgsIDApIC0gc2hvdWxkIGJlIHJnYigwLCAxMjgsIDApPC9wPgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1wcmVm
ZXJzLXJlZHVjZWQtbW90aW9uLWxpdmUtdXBkYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tbGl2ZS11cGRhdGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42YWRkMWRjODZhMGQ3Y2RiZDk3YTFjNjNhMjlkNDFjYjhlYWVjZTVmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLWxp
dmUtdXBkYXRlLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5D
U1M0IG1lZGlhIHF1ZXJ5IHRlc3Q6IHByZWZlcnMtcmVkdWNlZC1tb3Rpb24uPC90aXRsZT4KKzxz
dHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsgY29sb3I6IGJsYWNrOyB9CisKK0BtZWRpYSAocHJl
ZmVycy1yZWR1Y2VkLW1vdGlvbikgeworICAgICNhIHsgY29sb3I6IGdyZWVuOyB9Cit9Cis8L3N0
eWxlPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gZ2V0VUlTY3JpcHQoKQoreworICAgIHJldHVybiBg
CisgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICB1aUNvbnRyb2xsZXIuc2ltdWxhdGVBY2Nlc3Np
YmlsaXR5U2V0dGluZ3NDaGFuZ2VOb3RpZmljYXRpb24oZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgiRG9uZSIpOworICAgICAgICB9KTsKKyAg
ICB9KSgpO2AKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYgKCF3aW5kb3cuaW50
ZXJuYWxzKQorICAgICAgICByZXR1cm47CisKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJhIik7CisKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLmZvcmNl
ZFByZWZlcnNSZWR1Y2VkTW90aW9uQWNjZXNzaWJpbGl0eVZhbHVlID0gIm9uIjsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiYmVmb3JlIikudGV4dENvbnRlbnQgPSB3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZShlbGVtZW50KS5jb2xvcjsKKyAgICBpZiAodGVzdFJ1bm5lci5ydW5VSVNjcmlw
dCkgeworICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGdldFVJU2NyaXB0KCksIGZ1bmN0
aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFmdGVy
IikudGV4dENvbnRlbnQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5jb2xvcjsK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9KTsKKyAgICB9
Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgcnVuVGVzdCwgZmFsc2UpOwor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImEiPjwvcD4KKyAgPHA+QmVmb3Jl
IHdhczogPHNwYW4gaWQ9ImJlZm9yZSI+PC9zcGFuPiAtIHNob3VsZCBiZSByZ2IoMCwgMCwgMCk8
L3A+CisgIDxwPkFmdGVyIHdhczogPHNwYW4gaWQ9ImFmdGVyIj48L3NwYW4+IC0gc2hvdWxkIGJl
IHJnYigwLCAxMjgsIDApPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
Yjc3MWU5MjNjYTg2NzkyNDBhZmVmZjAzMWQ4ZWFhM2YzZDljZGIyMC4uOWRiODkyMGI2MmFjYjdi
N2JkOTExMTIyYTVmZmM2M2VjZjJiMGEzOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMSw2ICsxMSwx
MCBAQCBmYXN0L3ZpZXdwb3J0L2lvcyBbIFBhc3MgXQogc2Nyb2xsaW5nY29vcmRpbmF0b3IvaW9z
IFsgUGFzcyBdCiBlZGl0aW5nL3NlbGVjdGlvbi9jaGFyYWN0ZXItZ3JhbnVsYXJpdHktcmVjdC5o
dG1sIFsgUGFzcyBdCiAKK2Zhc3QvbWVkaWEvbXEtaW52ZXJ0ZWQtY29sb3JzLWxpdmUtdXBkYXRl
Lmh0bWwgWyBQYXNzIF0KK2Zhc3QvbWVkaWEvbXEtbW9ub2Nocm9tZS1saXZlLXVwZGF0ZS5odG1s
IFsgUGFzcyBdCitmYXN0L21lZGlhL21xLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tbGl2ZS11cGRh
dGUuaHRtbCBbIFBhc3MgXQorCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAj
IEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmllcy4KICMvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCAzYTdmYjIyZTNlMTViZTc2OWQ2NTlmNjkyZGE3YjM5OTcyN2NjYzEyLi43
ZGMxM2I0OWQ4MzIwMDU5YzkyMGI3NDMxZDVmMWM4M2U4NjIwZDVmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNCw2ICsxNCwxMCBAQCBm
YXN0L2V2ZW50cy9mb3JjZS1jbGljay1saW5rLXNlbGVjdGlvbi1iZWhhdmlvci5odG1sIFsgUGFz
cyBdCiBmYXN0L2V2ZW50cy9mb3JjZS1jbGljay1vbi1saW5rLW5hdmlnYXRpb24uaHRtbCBbIFBh
c3MgXQogZmFzdC9ldmVudHMvZm9yY2UtY2xpY2stdGV4dC1zZWxlY3Rpb24tYmVoYXZpb3IuaHRt
bCBbIEZhaWx1cmUgXQogCitmYXN0L21lZGlhL21xLWludmVydGVkLWNvbG9ycy1saXZlLXVwZGF0
ZS5odG1sIFsgUGFzcyBdCitmYXN0L21lZGlhL21xLW1vbm9jaHJvbWUtbGl2ZS11cGRhdGUuaHRt
bCBbIFBhc3MgXQorZmFzdC9tZWRpYS9tcS1wcmVmZXJzLXJlZHVjZWQtbW90aW9uLWxpdmUtdXBk
YXRlLmh0bWwgWyBQYXNzIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwog
IyBFbmQgcGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMuCiAjLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCg==
</data>
<flag name="review"
          id="317846"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>