<?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>170862</bug_id>
          
          <creation_ts>2017-04-14 15:29:41 -0700</creation_ts>
          <short_desc>Fix basic WKURLSchemeHandler bugs</short_desc>
          <delta_ts>2017-04-14 17:52:15 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>aestes</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1297531</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-04-14 15:29:41 -0700</bug_when>
    <thetext>Fix basic WKURLSchemeHandler bugs

For a couple of tiny little different reasons, the API doesn&apos;t really work.

Make it work, and add tests to verify that it does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297532</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-04-14 15:30:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/30647559&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297536</commentid>
    <comment_count>2</comment_count>
      <attachid>307157</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-04-14 15:35:12 -0700</bug_when>
    <thetext>Created attachment 307157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297542</commentid>
    <comment_count>3</comment_count>
      <attachid>307157</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-04-14 15:46:52 -0700</bug_when>
    <thetext>Comment on attachment 307157
Patch

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

&gt; Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:314
&gt; -        tryAppLink(WTFMove(localNavigationAction), mainFrameURLString, [localListener, localNavigationAction = RefPtr&lt;API::NavigationAction&gt;(&amp;navigationAction)] (bool followedLinkToApp) {
&gt; +        tryAppLink(WTFMove(localNavigationAction), mainFrameURLString, [webPage = RefPtr&lt;WebPageProxy&gt;(&amp;webPageProxy), localListener, localNavigationAction = RefPtr&lt;API::NavigationAction&gt;(&amp;navigationAction)] (bool followedLinkToApp) {

Can webPage not be a Ref? I slightly prefer using makeRef(Ptr) since it&apos;s less wordy.

&gt; Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:326
&gt; -            if ([NSURLConnection canHandleRequest:nsURLRequest.get()]) {
&gt; +            if ([NSURLConnection canHandleRequest:nsURLRequest.get()] || webPage-&gt;urlSchemeHandlerForScheme(nsURLRequest.get().URL.scheme)) {

I slightly prefer [nsURLRequest URL].scheme to avoid the .get().

&gt; Source/WebKit2/WebProcess/WebPage/WebURLSchemeHandlerTaskProxy.cpp:97
&gt; +    if (m_coreLoader &amp;&amp; m_coreLoader-&gt;reachedTerminalState())
&gt; +        m_coreLoader = nullptr;

Seems weird that this function mutates the object.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKURLSchemeHandler-1.mm:38
&gt; +static bool receivedScriptMessage = false;

You don&apos;t need to explicitly initialize this to false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297543</commentid>
    <comment_count>4</comment_count>
      <attachid>307159</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-04-14 15:49:12 -0700</bug_when>
    <thetext>Created attachment 307159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297548</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-04-14 15:52:33 -0700</bug_when>
    <thetext>(In reply to Andy Estes from comment #3)
&gt; Comment on attachment 307157 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=307157&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:314
&gt; &gt; -        tryAppLink(WTFMove(localNavigationAction), mainFrameURLString, [localListener, localNavigationAction = RefPtr&lt;API::NavigationAction&gt;(&amp;navigationAction)] (bool followedLinkToApp) {
&gt; &gt; +        tryAppLink(WTFMove(localNavigationAction), mainFrameURLString, [webPage = RefPtr&lt;WebPageProxy&gt;(&amp;webPageProxy), localListener, localNavigationAction = RefPtr&lt;API::NavigationAction&gt;(&amp;navigationAction)] (bool followedLinkToApp) {
&gt; 
&gt; Can webPage not be a Ref? I slightly prefer using makeRef(Ptr) since it&apos;s
&gt; less wordy.

Nope, because this particular lambda must be copyable, and Ref&lt;&gt;s are not copyable.

&gt; &gt; Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:326
&gt; &gt; -            if ([NSURLConnection canHandleRequest:nsURLRequest.get()]) {
&gt; &gt; +            if ([NSURLConnection canHandleRequest:nsURLRequest.get()] || webPage-&gt;urlSchemeHandlerForScheme(nsURLRequest.get().URL.scheme)) {
&gt; 
&gt; I slightly prefer [nsURLRequest URL].scheme to avoid the .get().

Done.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebURLSchemeHandlerTaskProxy.cpp:97
&gt; &gt; +    if (m_coreLoader &amp;&amp; m_coreLoader-&gt;reachedTerminalState())
&gt; &gt; +        m_coreLoader = nullptr;
&gt; 
&gt; Seems weird that this function mutates the object.

Indeed. (I did not change this)

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKURLSchemeHandler-1.mm:38
&gt; &gt; +static bool receivedScriptMessage = false;
&gt; 
&gt; You don&apos;t need to explicitly initialize this to false.

Indeed. (I changed this)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297549</commentid>
    <comment_count>6</comment_count>
      <attachid>307161</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-04-14 15:56:40 -0700</bug_when>
    <thetext>Created attachment 307161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297585</commentid>
    <comment_count>7</comment_count>
      <attachid>307161</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-14 17:17:15 -0700</bug_when>
    <thetext>Comment on attachment 307161
Patch

Rejecting attachment 307161 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 307161, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
.webkit.org/git/WebKit
   7f37bac..c86e411  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 215380 = 7f37bacfa28a61a81a6c4e1498a6e357de83bba6
r215381 = c86e41118bce64523a2092fa5bbfcba2d6c24bc9
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: http://webkit-queues.webkit.org/results/3536570</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297597</commentid>
    <comment_count>8</comment_count>
      <attachid>307161</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-14 17:52:14 -0700</bug_when>
    <thetext>Comment on attachment 307161
Patch

Clearing flags on attachment: 307161

Committed r215384: &lt;http://trac.webkit.org/changeset/215384&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297598</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-14 17:52:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307157</attachid>
            <date>2017-04-14 15:35:12 -0700</date>
            <delta_ts>2017-04-14 15:49:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170862-20170414153512.patch</filename>
            <type>text/plain</type>
            <size>25476</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY4MWEwOTMwNTgzZTdm
ZmY4ODkxNmQ3MjYwMGY5OTI1ZTZlNjJjNC4uYjUyYWRhZTQ3ZjU4N2IwYzg3YzI5M2YxODcwYjAz
YmVhM2RiMDY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA0LTE0ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggYmFzaWMgV0tVUkxT
Y2hlbWVIYW5kbGVyIGJ1Z3MuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY0NzU1OT4gYW5k
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA4NjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBB
UEkgdGVzdHMuCisKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIp
OgorCiAyMDE3LTA0LTEzICBSb21haW4gQmVsbGVzc29ydCAgPHJvbWFpbi5iZWxsZXNzb3J0QGNy
Zi5jYW5vbi5mcj4KIAogICAgICAgICBbUmVhZGFibGUgU3RyZWFtcyBBUEldIEltcGxlbWVudCBj
bG9uZUFycmF5QnVmZmVyIGluIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkNmM1OTk5M2YxNmUxZTY3
NjExZThlOTljMDI0YjRhYzVjMjI0YWQ1Li5lNzRhYmFiNTMzYTI2OGZhYWIyZDRhOWU5MjE5YjA5
Yzk5OWE4M2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTctMDQtMTQgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBiYXNpYyBXS1VSTFNj
aGVtZUhhbmRsZXIgYnVncy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwNjQ3NTU5PiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDg2MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmFkZFVSTFNjaGVtZUhhbmRsZXJUYXNrUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6cmVtb3ZlVVJMU2NoZW1l
SGFuZGxlclRhc2tQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpy
ZW1vdmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5o
OgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6c3RhcnRO
ZXdUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNr
RGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6
OnRhc2tEaWRTdG9wTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZUhhbmRsZXJQcm94eS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFza1Byb3h5OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6c3RvcExvYWRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpkaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1By
b3h5OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrUHJveHk6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1l
SGFuZGxlclRhc2tQcm94eTo6aGFzTG9hZGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJV
UkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjppZGVudGlmaWVyKToKKwogMjAxNy0wNC0xMiAgRGFu
IEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIEZ1dHVyZS1wcm9v
ZiAueGNjb25maWcgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDhiYTU2MWM2ZjIzN2ZlMTVhZDg5Y2I3MjgxZGFjMjg0YmE2ZGMxOWMuLjI3
NWIwNmE1NDIyN2UyNGMwODQ3ZjE5OTYwYTNjZmI2MDQ2ZWEyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMzkwLDYgKzM5MCw4IEBAIHZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGxvbmcgbG9uZyBlCiAKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKKyAgICBBU1NFUlQobV9yZXNvdXJjZSk7CisKICAgICBp
ZiAobV9yZXNvdXJjZS0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCAmJiAhbV9y
ZXNvdXJjZS0+c2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIEFTU0VSVCghbV9yZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRl
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpp
bmRleCA5NmI5NjAyMGRjODkzM2I4NDkzNmUxZjFkY2FkYTJjOWRlODZkNGJiLi5hOGZlYWI2YWFm
MzMwODM1MTMzYmRiMTM2N2NmZDA5MDhlN2RkMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTMxMSw3ICszMTEsNyBAQCB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihXZWJQYWdlUAogICAgICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uQWN0
aW9uPiBsb2NhbE5hdmlnYXRpb25BY3Rpb24gPSAmbmF2aWdhdGlvbkFjdGlvbjsKICAgICAgICAg
UmVmUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4gbG9jYWxMaXN0ZW5lciA9IFdURk1v
dmUobGlzdGVuZXIpOwogCi0gICAgICAgIHRyeUFwcExpbmsoV1RGTW92ZShsb2NhbE5hdmlnYXRp
b25BY3Rpb24pLCBtYWluRnJhbWVVUkxTdHJpbmcsIFtsb2NhbExpc3RlbmVyLCBsb2NhbE5hdmln
YXRpb25BY3Rpb24gPSBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPigmbmF2aWdhdGlvbkFj
dGlvbildIChib29sIGZvbGxvd2VkTGlua1RvQXBwKSB7CisgICAgICAgIHRyeUFwcExpbmsoV1RG
TW92ZShsb2NhbE5hdmlnYXRpb25BY3Rpb24pLCBtYWluRnJhbWVVUkxTdHJpbmcsIFt3ZWJQYWdl
ID0gUmVmUHRyPFdlYlBhZ2VQcm94eT4oJndlYlBhZ2VQcm94eSksIGxvY2FsTGlzdGVuZXIsIGxv
Y2FsTmF2aWdhdGlvbkFjdGlvbiA9IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+KCZuYXZp
Z2F0aW9uQWN0aW9uKV0gKGJvb2wgZm9sbG93ZWRMaW5rVG9BcHApIHsKICAgICAgICAgICAgIGlm
IChmb2xsb3dlZExpbmtUb0FwcCkgewogICAgICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmln
bm9yZSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihXZWJQYWdlUAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBSZXRhaW5Q
dHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3QgPSBhZG9wdE5TKHdyYXBwZXIoQVBJOjpVUkxS
ZXF1ZXN0OjpjcmVhdGUobG9jYWxOYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkpLmxlYWtSZWYo
KSkpOwotICAgICAgICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2FuSGFuZGxlUmVxdWVzdDpu
c1VSTFJlcXVlc3QuZ2V0KCldKSB7CisgICAgICAgICAgICBpZiAoW05TVVJMQ29ubmVjdGlvbiBj
YW5IYW5kbGVSZXF1ZXN0Om5zVVJMUmVxdWVzdC5nZXQoKV0gfHwgd2ViUGFnZS0+dXJsU2NoZW1l
SGFuZGxlckZvclNjaGVtZShuc1VSTFJlcXVlc3QuZ2V0KCkuVVJMLnNjaGVtZSkpIHsKICAgICAg
ICAgICAgICAgICBpZiAobG9jYWxOYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRQZXJmb3JtRG93bmxv
YWQoKSkKICAgICAgICAgICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+ZG93bmxvYWQoKTsKICAg
ICAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcAppbmRleCAxMjBhYjNmOTU1MTk4NWQ4MGVjODIyYzU0
NzgwOTQzZjI5NzlkZTYxLi4wZGVhYjNlNTc3ODUyNjE2OTZjMGY5MWNlMDE5MGU2NTRlOWE4NjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxl
clRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5k
bGVyVGFzay5jcHAKQEAgLTYwLDYgKzYwLDggQEAgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4
Y2VwdGlvblR5cGUgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OmRpZFJlY2VpdmVSZXNwb24KICAg
ICAgICAgcmV0dXJuIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlOjpEYXRh
QWxyZWFkeVNlbnQ7CiAKICAgICBtX3Jlc3BvbnNlU2VudCA9IHRydWU7CisKKyAgICByZXNwb25z
ZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCk7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpVUkxTY2hlbWVIYW5kbGVyVGFza0RpZFJlY2VpdmVSZXNwb25zZShtX3VybFNjaGVt
ZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCByZXNwb25zZSkpOwogICAgIHJl
dHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwCmluZGV4IDdhOWI2ZjA4OWFjNzEyNmZmN2FmNzk2OGFlYjVjZWMyYmIwZWJjOWQu
LmZiZDNkYzg2YjQ4Y2M4ZmI1ZjMxZjc0ZTQxMzEzODE0YzkxYTUwYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cApAQCAtMjY0LDE4ICsyNjQsMzAgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRMb2Nh
bExvYWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyKQogICAgIG1fd2Vi
UmVzb3VyY2VMb2FkZXJzLnNldChyZXNvdXJjZUxvYWRlci5pZGVudGlmaWVyKCksIFdlYlJlc291
cmNlTG9hZGVyOjpjcmVhdGUocmVzb3VyY2VMb2FkZXIsIHsgfSkpOwogfQogCit2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjphZGRVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5KFdlYlVSTFNjaGVtZUhh
bmRsZXJUYXNrUHJveHkmIHRhc2spCit7CisgICAgYXV0byByZXN1bHQgPSBtX3VybFNjaGVtZUhh
bmRsZXJUYXNrcy5hZGQodGFzay5pZGVudGlmaWVyKCksICZ0YXNrKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIFdlYkxvYWRlclN0cmF0
ZWd5OjpyZW1vdmVVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJU
YXNrUHJveHkmIHRhc2spCit7CisgICAgbV91cmxTY2hlbWVIYW5kbGVyVGFza3MucmVtb3ZlKHRh
c2suaWRlbnRpZmllcigpKTsKK30KKwogdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cmVtb3ZlKFJl
c291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKIHsKICAgICBBU1NFUlQocmVzb3VyY2VMb2Fk
ZXIpOwogICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJT
dHJhdGVneTo6cmVtb3ZlLCB1cmwgJyVzJyIsIHJlc291cmNlTG9hZGVyLT51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIAotICAgIGlmIChtX2ludGVybmFsbHlGYWlsZWRSZXNvdXJjZUxv
YWRlcnMuY29udGFpbnMocmVzb3VyY2VMb2FkZXIpKSB7Ci0gICAgICAgIG1faW50ZXJuYWxseUZh
aWxlZFJlc291cmNlTG9hZGVycy5yZW1vdmUocmVzb3VyY2VMb2FkZXIpOworICAgIGlmIChhdXRv
IHRhc2sgPSBtX3VybFNjaGVtZUhhbmRsZXJUYXNrcy50YWtlKHJlc291cmNlTG9hZGVyLT5pZGVu
dGlmaWVyKCkpKSB7CisgICAgICAgIEFTU0VSVCghbV9pbnRlcm5hbGx5RmFpbGVkUmVzb3VyY2VM
b2FkZXJzLmNvbnRhaW5zKHJlc291cmNlTG9hZGVyKSk7CisgICAgICAgIHRhc2stPnN0b3BMb2Fk
aW5nKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoYXV0byB0YXNrID0gbV91
cmxTY2hlbWVIYW5kbGVyVGFza3MudGFrZShyZXNvdXJjZUxvYWRlci0+aWRlbnRpZmllcigpKSkg
ewotICAgICAgICB0YXNrLT5zdG9wTG9hZGluZygpOworICAgIGlmIChtX2ludGVybmFsbHlGYWls
ZWRSZXNvdXJjZUxvYWRlcnMuY29udGFpbnMocmVzb3VyY2VMb2FkZXIpKSB7CisgICAgICAgIG1f
aW50ZXJuYWxseUZhaWxlZFJlc291cmNlTG9hZGVycy5yZW1vdmUocmVzb3VyY2VMb2FkZXIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA1MzNlNGRmNjk3N2Rl
MmYxZjViYTJiYTM0MDNiNGExMzMxYTAxYWEwLi41MWIyYTgyZjU1OGI1Y2MwZjY2NGYyY2RiMmI4
MzE0MmUyM2Q0N2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtNjYsNiArNjYsOSBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpOwogCisgICAgdm9pZCBhZGRVUkxTY2hlbWVI
YW5kbGVyVGFza1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkmKTsKKyAgICB2b2lk
IHJlbW92ZVVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkoV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQ
cm94eSYpOworCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVMb2FkKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyJiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBib29sIHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpOwogICAgIHZvaWQgc2NoZWR1bGVJbnRlcm5hbGx5
RmFpbGVkTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOwpAQCAtNzYsNyArNzksNyBAQCBw
cml2YXRlOgogICAgIFJ1bkxvb3A6OlRpbWVyPFdlYkxvYWRlclN0cmF0ZWd5PiBtX2ludGVybmFs
bHlGYWlsZWRMb2FkVGltZXI7CiAgICAgCiAgICAgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBSZWZQ
dHI8V2ViUmVzb3VyY2VMb2FkZXI+PiBtX3dlYlJlc291cmNlTG9hZGVyczsKLSAgICBIYXNoTWFw
PHVuc2lnbmVkIGxvbmcsIHN0ZDo6dW5pcXVlX3B0cjxXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1By
b3h5Pj4gbV91cmxTY2hlbWVIYW5kbGVyVGFza3M7CisgICAgSGFzaE1hcDx1bnNpZ25lZCBsb25n
LCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5Kj4gbV91cmxTY2hlbWVIYW5kbGVyVGFza3M7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAK
aW5kZXggN2UwYThkMTJjNTVmNzJmYTZjZWM1NWE3NzU1MDE0ODg0ODQ4MjVjNi4uOTQxYjc5NzNm
ZWViMDhlYTM4MTNiY2M0MzA3ZDQ1MGU0YmQ1YWJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eS5jcHAKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyUHJv
eHkuaCIKIAogI2luY2x1ZGUgIldlYkVycm9ycy5oIgorI2luY2x1ZGUgIldlYkxvYWRlclN0cmF0
ZWd5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VMb2FkZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00OSw2ICs1MSw3IEBA
IHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5OjpzdGFydE5ld1Rhc2soUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlcikKICAgICBhdXRvIHJlc3VsdCA9IG1fdGFza3MuYWRkKGxvYWRlci5pZGVudGlm
aWVyKCksIHN0ZDo6bWFrZV91bmlxdWU8V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eT4oKnRo
aXMsIGxvYWRlcikpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7CiAKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLmFkZFVSTFNjaGVtZUhhbmRs
ZXJUYXNrUHJveHkoKnJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUtPnN0YXJ0TG9hZGluZygpOwogfQogCkBAIC03Nyw3ICs4MCwxNCBAQCB2b2lkIFdl
YlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IHRhc2tJZGVu
dGlmaWVyLCBjb25zdCBSZQogICAgIGlmICghdGFzaykKICAgICAgICAgcmV0dXJuOwogCisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5yZW1vdmVVUkxTY2hl
bWVIYW5kbGVyVGFza1Byb3h5KCp0YXNrKTsKICAgICB0YXNrLT5kaWRDb21wbGV0ZShlcnJvcik7
CiB9CiAKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkU3RvcExvYWRpbmco
V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eSYgdGFzaykKK3sKKyAgICBBU1NFUlQobV90YXNr
cy5nZXQodGFzay5pZGVudGlmaWVyKCkpID09ICZ0YXNrKTsKKyAgICBtX3Rhc2tzLnJlbW92ZSh0
YXNrLmlkZW50aWZpZXIoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhh
bmRsZXJQcm94eS5oCmluZGV4IGNlZmMzYWYxYTUzZWUxZjliODM4NzZiOGMwOWY2YzQxOTVmMDYw
NWQuLmYyOTczMDAzMGJkN2IxMWQyMTM0MTRiYWFlODAwOGNjOWYyMWI1MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1l
SGFuZGxlclByb3h5LmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGFza0Rp
ZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgdGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90
IHRhc2tJZGVudGlmaWVyLCBzaXplX3QsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpOwogICAgIHZvaWQg
dGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCB0YXNrRGlkU3RvcExvYWRpbmcoV2ViVVJMU2NoZW1l
SGFuZGxlclRhc2tQcm94eSYpOwogCiBwcml2YXRlOgogICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hl
bWVIYW5kbGVyVGFza1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmNwcAppbmRleCBjOGU2MzZkOGNkNGU5YTY0
MmI4MzM5YTk2MDc5M2E5ZWM1ZjE4ZmU4Li4xODFiYTE2YjgzYWM4MDRlNzhlMDY4Mjg3OTZhOWY5
NDYwMjg2OTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3BwCkBAIC00Miw2
ICs0Miw3IEBAIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OldlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrUHJveHkoV2ViVVJMU2NoZW1lSGFuZGxlclByCiAgICAgOiBtX3VybFNjaGVtZUhhbmRs
ZXIoaGFuZGxlcikKICAgICAsIG1fY29yZUxvYWRlcigmbG9hZGVyKQogICAgICwgbV9yZXF1ZXN0
KGxvYWRlci5yZXF1ZXN0KCkpCisgICAgLCBtX2lkZW50aWZpZXIobG9hZGVyLmlkZW50aWZpZXIo
KSkKIHsKIH0KIApAQCAtNTMsMTYgKzU0LDE3IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclRh
c2tQcm94eTo6c3RhcnRMb2FkaW5nKCkKIAogdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1By
b3h5OjpzdG9wTG9hZGluZygpCiB7Ci0gICAgaWYgKCFtX2NvcmVMb2FkZXIpCi0gICAgICAgIHJl
dHVybjsKLQorICAgIEFTU0VSVChtX2NvcmVMb2FkZXIpOwogICAgIG1fdXJsU2NoZW1lSGFuZGxl
ci5wYWdlKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdG9wVVJMU2NoZW1lSGFuZGxl
clRhc2sobV91cmxTY2hlbWVIYW5kbGVyLmlkZW50aWZpZXIoKSwgbV9jb3JlTG9hZGVyLT5pZGVu
dGlmaWVyKCkpKTsKICAgICBtX2NvcmVMb2FkZXIgPSBudWxscHRyOworCisgICAgLy8gVGhpcyBs
aW5lIHdpbGwgcmVzdWx0IGluIHRoaXMgYmVpbmcgZGVsZXRlZC4KKyAgICBtX3VybFNjaGVtZUhh
bmRsZXIudGFza0RpZFN0b3BMb2FkaW5nKCp0aGlzKTsKIH0KIAogdm9pZCBXZWJVUkxTY2hlbWVI
YW5kbGVyVGFza1Byb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiB7Ci0gICAgaWYgKCFtX2NvcmVMb2FkZXIpCisgICAgaWYgKCFoYXNMb2Fk
ZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UpOwpAQCAtNzAsNyArNzIsNyBAQCB2b2lkIFdlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrUHJveHk6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZQogCiB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKHNp
emVfdCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQogewotICAgIGlmICghbV9jb3JlTG9hZGVy
KQorICAgIGlmICghaGFzTG9hZGVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29yZUxv
YWRlci0+ZGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSks
IHNpemUsIDAsIERhdGFQYXlsb2FkVHlwZTo6RGF0YVBheWxvYWRCeXRlcyk7CkBAIC03OCw3ICs4
MCw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6ZGlkUmVjZWl2ZURhdGEo
c2l6ZV90IHNpemUsIGNvbnN0IHVpbnQ4X3QqIGRhCiAKIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxl
clRhc2tQcm94eTo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0g
ICAgaWYgKCFtX2NvcmVMb2FkZXIpCisgICAgaWYgKCFoYXNMb2FkZXIoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQpAQCAtODksNCArOTEsMTIgQEAgdm9pZCBX
ZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKICAgICBtX2NvcmVMb2FkZXIgPSBudWxscHRyOwogfQogCitib29sIFdlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6Omhhc0xvYWRlcigpCit7CisgICAgaWYgKG1fY29yZUxv
YWRlciAmJiBtX2NvcmVMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgICAgIG1f
Y29yZUxvYWRlciA9IG51bGxwdHI7CisKKyAgICByZXR1cm4gbV9jb3JlTG9hZGVyOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5oCmluZGV4
IGY5N2YyNjM2NWViYzc4OWMwN2QzMDU4OGQyYjIzMTQ3NzY1NGFhODcuLjE5ZTlmMTUxMmVhNzA5
OWZhYzIzYTk4MTBjNjAwM2QyZjg4MTk3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJv
eHkuaApAQCAtNTEsMTEgKzUxLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KHNpemVfdCwgY29uc3QgdWludDhfdCogZGF0YSk7CiAgICAgdm9pZCBkaWRDb21wbGV0ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKKyAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKwogcHJpdmF0ZToKKyAgICBib29s
IGhhc0xvYWRlcigpOworCiAgICAgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5JiBtX3VybFNjaGVt
ZUhhbmRsZXI7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiBtX2NvcmVMb2Fk
ZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKLQorICAgIHVuc2ln
bmVkIGxvbmcgbV9pZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODBjY2JmMzRm
ZWRmZWIwMjYwN2E4ODkzMDkwYThiODRmOTE1YWE3NC4uMWY0M2ZiOWNjODg0MzkwMjFiYzA3MmM2
MDE2OGE1NzkwNjdiODgwYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA0LTE0ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggYmFzaWMgV0tVUkxTY2hlbWVIYW5kbGVy
IGJ1Z3MuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY0NzU1OT4gYW5kIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA4NjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0MkNvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tOiBBZGRlZC4KKyAgICAgICAg
KC1bU2NoZW1lSGFuZGxlciBpbml0V2l0aERhdGE6bWltZVR5cGU6XSk6CisgICAgICAgICgtW1Nj
aGVtZUhhbmRsZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtTY2hlbWVIYW5kbGVyIHdlYlZpZXc6
c3RhcnRUYXNrOl0pOgorICAgICAgICAoLVtTY2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RvcFRhc2s6
XSk6CisgICAgICAgIChURVNUKToKKwogMjAxNy0wNC0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIENsZWFuIHVwIFNoYXJlZEJ1ZmZlciBw
dWJsaWMgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZjMGRhNzlmMmRmMDU2
ZDUzZmE0MjA0MzM2YjY1MWZjMjM1MWY3ZDcuLmM0MjhhY2JkYTMyNjRlM2ZjMDAzYTcxYjgwYzJj
ODQ3YWIxMmFkNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTIsNiArMTUyLDcgQEAK
IAkJNTFCMUVFOTcxQzgwRkFFRjAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUIxRUU5NTFDODBGQUREMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sICov
OyB9OwogCQk1MUJDRUU0RTFDODRGNTNCMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNz
LTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUJDRUU0QzFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEu
aHRtbCAqLzsgfTsKIAkJNTFCQ0VFNEYxQzg0RjUzQjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRp
UHJvY2Vzcy0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFCQ0VFNEQxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJv
Y2Vzcy0yLmh0bWwgKi87IH07CisJCTUxQzY4M0RFMUVBMTM0RTgwMDY1MDE4MyAvKiBXS1VSTFNj
aGVtZUhhbmRsZXItMS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQzY4M0REMUVBMTM0REIwMDY1MDE4MyAvKiBXS1VSTFNjaGVtZUhhbmRsZXItMS5t
bSAqLzsgfTsKIAkJNTFDRDFDNkMxQjM4Q0U0MzAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDRDFDNkExQjM4
Q0UzNjAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1tICovOyB9OwogCQk1MUNEMUM3MjFCMzhENDg0
MDAxNDJDQTUgLyogbW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13aW5kb3cuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNE
MUM3MTFCMzhENDg0MDAxNDJDQTUgLyogbW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13
aW5kb3cuaHRtbCAqLzsgfTsKIAkJNTFEMTI0OTgxRTc2M0IwMjAwMkIyODIwIC8qIFdLSFRUUENv
b2tpZVN0b3JlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFEMTI0OTcxRTc2M0FGODAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLm1tICovOyB9
OwpAQCAtMTA3MSw2ICsxMDcyLDcgQEAKIAkJNTFCQ0VFNDkxQzg0RjRBRjAwNDJDODJFIC8qIElu
ZGV4ZWREQk11bHRpUHJvY2Vzcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFCQ0VFNEMxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0x
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERCTXVsdGlQcm9jZXNz
LTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkNFRTREMUM4NEY1MkMw
MDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gIkluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MUM2ODNERDFFQTEzNERCMDA2NTAxODMgLyogV0tVUkxTY2hlbWVI
YW5kbGVyLTEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSAiV0tV
UkxTY2hlbWVIYW5kbGVyLTEubW0iOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUNC
NEFENzFCM0EwNzlDMDBDMUIxQzYgLyogTW9kYWxBbGVydHNTUEkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kYWxBbGVydHNTUEkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MUNEMUM2QTFCMzhDRTM2MDAxNDJDQTUgLyogTW9kYWxBbGVydHMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNb2RhbEFsZXJ0cy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDRDFDNzExQjM4RDQ4NDAwMTQyQ0E1
IC8qIG1vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAibW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13aW5kb3cuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzA1LDYgKzE3MDcsNyBAQAogCQkJCUExNEFBQjYxMUU3
OEQ3REUwMEMxQURDMiAvKiBXS1BERlZpZXcubW0gKi8sCiAJCQkJMkQwMDA2NUQxQzFGNTg5NDAw
ODhFNkE3IC8qIFdLUERGVmlld1Jlc2l6ZUNyYXNoLm1tICovLAogCQkJCTVFNEIxRDJDMUQ0MDRD
NjEwMDA1MzYyMSAvKiBXS1Njcm9sbFZpZXdEZWxlZ2F0ZUNyYXNoLm1tICovLAorCQkJCTUxQzY4
M0REMUVBMTM0REIwMDY1MDE4MyAvKiBXS1VSTFNjaGVtZUhhbmRsZXItMS5tbSAqLywKIAkJCQk1
Q0UzNTREODFFNzBEOUMzMDBCRUZFM0IgLyogV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1t
ICovLAogCQkJCTJFRkYwNkQ2MUQ4QUYzNEEwMDA0QkIzMCAvKiBXS1dlYlZpZXdDYW5kaWRhdGVU
ZXN0cy5tbSAqLywKIAkJCQk3QzQxN0YzMTFEMTlFMTQ4MDBCOEVGNTMgLyogV0tXZWJWaWV3RGVm
YXVsdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbSAqLywKQEAgLTI5MTEsNiArMjkxNCw3IEBACiAJCQkJ
Q0UwNkRGOUIxRTE4NTFGMjAwRTU3MEM5IC8qIFNlY3VyaXR5T3JpZ2luLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTU3NjlDNTBCMUQ5QjAwMDIwMDA4NDdGQiAvKiBTZXJpYWxpemVkQ3J5cHRvS2V5
V3JhcC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUNCMUE0MTFBN0UwMDQ0N0M0QyAvKiBT
ZXRBbmRVcGRhdGVDYWNoZU1vZGVsLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFDNjgzREUxRUEx
MzRFODAwNjUwMTgzIC8qIFdLVVJMU2NoZW1lSGFuZGxlci0xLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdFQ0MxQTQxMUE3RTAwNDQ3QzRDIC8qIFNldERvY3VtZW50VVJJLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M4M0UwNTIxRDBBNjQxODAwRkVCQ0YzIC8qIFNoYXJlZEJ1ZmZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBMTc5OTE4ODFFMUM5OTRFMDBBNTA1RUQgLyogU2hhcmVkQnVm
ZmVyLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYwOTZmN2UxZTQ3YTNhNTNhODEyZjkxZDI1YjU0MmJkMTNkZjRiODgKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS1VSTFNjaGVt
ZUhhbmRsZXItMS5tbQpAQCAtMCwwICsxLDE1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5o
IgorI2ltcG9ydCA8V2ViS2l0L1dLVVJMU2NoZW1lSGFuZGxlci5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLVVJMU2NoZW1lSGFuZGxlclRhc2suaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworc3RhdGljIGJvb2wgcmVj
ZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisKK0BpbnRlcmZhY2UgU2NoZW1lSGFuZGxlciA6
IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+CitAcHJvcGVydHkgKHJlYWRvbmx5KSBOU011
dGFibGVBcnJheTxOU1VSTCAqPiAqc3RhcnRlZFVSTHM7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBO
U011dGFibGVBcnJheTxOU1VSTCAqPiAqc3RvcHBlZFVSTHM7CistIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhEYXRhOihOU0RhdGEgKilkYXRhIG1pbWVUeXBlOihOU1N0cmluZyAqKWluTUlNRVR5cGU7
CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTY2hlbWVIYW5kbGVyIHsKKyAgICBSZXRhaW5QdHI8
TlNEYXRhPiByZXNvdXJjZURhdGE7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtaW1lVHlwZTsK
K30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YTooTlNEYXRhICopZGF0YSBtaW1lVHlw
ZTooTlNTdHJpbmcgKilpbk1JTUVUeXBlCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAg
ICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXNvdXJjZURhdGEgPSBk
YXRhOworICAgIG1pbWVUeXBlID0gaW5NSU1FVHlwZTsKKyAgICBfc3RhcnRlZFVSTHMgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICBfc3RvcHBlZFVSTHMgPSBbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRl
YWxsb2MKK3sKKyAgICBbX3N0YXJ0ZWRVUkxzIHJlbGVhc2VdOworICAgIFtfc3RvcHBlZFVSTHMg
cmVsZWFzZV07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKXdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgc3RhcnRUYXNrOihpZCA8V0tVUkxTY2hlbWVIYW5kbGVyVGFzaz4p
dGFzaworeworICAgIFtfc3RhcnRlZFVSTHMgYWRkT2JqZWN0OnRhc2sucmVxdWVzdC5VUkxdOwor
CisgICAgLy8gQWx3YXlzIGZhaWwgdGhlIGltYWdlIGxvYWQuCisgICAgaWYgKFt0YXNrLnJlcXVl
c3QuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAInRlc3Rpbmc6aW1hZ2UiXSkg
eworICAgICAgICBbdGFzayBkaWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVycm9yV2l0aERvbWFp
bjpAIlRlc3RXZWJLaXRBUEkiIGNvZGU6MSB1c2VySW5mbzpuaWxdXTsKKyAgICAgICAgcmVjZWl2
ZWRTY3JpcHRNZXNzYWdlID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJl
dGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNl
IGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOm1pbWVUeXBlLmdl
dCgpIGV4cGVjdGVkQ29udGVudExlbmd0aDoxIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAg
W3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpXTsKKyAgICBbdGFzayBkaWRS
ZWNlaXZlRGF0YTpyZXNvdXJjZURhdGEuZ2V0KCldOworICAgIFt0YXNrIGRpZEZpbmlzaF07Cit9
CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG9wVGFzazooaWQgPFdL
VVJMU2NoZW1lSGFuZGxlclRhc2s+KXRhc2sKK3sKKyAgICBbX3N0b3BwZWRVUkxzIGFkZE9iamVj
dDp0YXNrLnJlcXVlc3QuVVJMXTsKKworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IHRydWU7
Cit9CisKK0BlbmQKKworc3RhdGljIGNvbnN0IGNoYXIgbWFpbkJ5dGVzW10gPQorIjxodG1sPiIg
XAorIjxpbWcgc3JjPSd0ZXN0aW5nOmltYWdlJz4iIFwKKyI8L2h0bWw+IjsKKworVEVTVChVUkxT
Y2hlbWVIYW5kbGVyLCBCYXNpYykKK3sKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxz
ZTsKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAg
IFJldGFpblB0cjxTY2hlbWVIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1NjaGVtZUhhbmRs
ZXIgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6KHZvaWQq
KW1haW5CeXRlcyBsZW5ndGg6c2l6ZW9mKG1haW5CeXRlcyldIG1pbWVUeXBlOkAidGV4dC9odG1s
Il0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQo
KSBmb3JVUkxTY2hlbWU6QCJ0ZXN0aW5nIl07CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0aW5nOm1haW4iXV07CisgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJl
Y2VpdmVkU2NyaXB0TWVzc2FnZSk7CisKKyAgICBFWFBFQ1RfRVEoW2hhbmRsZXIuZ2V0KCkuc3Rh
cnRlZFVSTHMgY291bnRdLCAydSk7CisgICAgRVhQRUNUX1RSVUUoW1toYW5kbGVyLmdldCgpLnN0
YXJ0ZWRVUkxzIG9iamVjdEF0SW5kZXg6MF0gaXNFcXVhbDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
InRlc3Rpbmc6bWFpbiJdXSk7CisgICAgRVhQRUNUX1RSVUUoW1toYW5kbGVyLmdldCgpLnN0YXJ0
ZWRVUkxzIG9iamVjdEF0SW5kZXg6MV0gaXNFcXVhbDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRl
c3Rpbmc6aW1hZ2UiXV0pOworICAgIEVYUEVDVF9FUShbaGFuZGxlci5nZXQoKS5zdG9wcGVkVVJM
cyBjb3VudF0sIDB1KTsKK30KKworVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBOb01JTUVUeXBlKQor
eworICAgIC8vIFNpbmNlIHRoZXJlJ3Mgbm8gTUlNRVR5cGUsIGFuZCBubyBOYXZpZ2F0aW9uRGVs
ZWdhdGUgdG8gdGVsbCBXZWJLaXQgdG8gZG8gdGhlIGxvYWQgYW55d2F5cywgV2ViS2l0IHdpbGwg
aWdub3JlIChzaWxlbnRseSBmYWlsKSB0aGUgbG9hZC4KKyAgICAvLyBUaGlzIHRlc3QgbWFrZXMg
c3VyZSB0aGF0IGlzIGNvbW11bmljYXRlZCBiYWNrIHRvIHRoZSBVUkxTY2hlbWVIYW5kbGVyLgor
CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisKKyAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBSZXRhaW5QdHI8U2NoZW1lSGFuZGxl
cj4gaGFuZGxlciA9IGFkb3B0TlMoW1tTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0V2l0aERhdGE6
W05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5Oih2b2lkKiltYWluQnl0ZXMgbGVuZ3RoOnNpemVv
ZihtYWluQnl0ZXMpXSBtaW1lVHlwZTpuaWxdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxT
Y2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGVzdGluZyJdOworCisg
ICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdGlu
ZzptYWluIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworCisgICAgRVhQ
RUNUX0VRKFtoYW5kbGVyLmdldCgpLnN0YXJ0ZWRVUkxzIGNvdW50XSwgMXUpOworICAgIEVYUEVD
VF9UUlVFKFtbaGFuZGxlci5nZXQoKS5zdGFydGVkVVJMcyBvYmplY3RBdEluZGV4OjBdIGlzRXF1
YWw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0aW5nOm1haW4iXV0pOworICAgIEVYUEVDVF9F
UShbaGFuZGxlci5nZXQoKS5zdG9wcGVkVVJMcyBjb3VudF0sIDF1KTsKKyAgICBFWFBFQ1RfVFJV
RShbW2hhbmRsZXIuZ2V0KCkuc3RvcHBlZFVSTHMgb2JqZWN0QXRJbmRleDowXSBpc0VxdWFsOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdGluZzptYWluIl1dKTsKK30KKworCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307159</attachid>
            <date>2017-04-14 15:49:12 -0700</date>
            <delta_ts>2017-04-14 15:50:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170862-20170414154911.patch</filename>
            <type>text/plain</type>
            <size>25438</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY4MWEwOTMwNTgzZTdm
ZmY4ODkxNmQ3MjYwMGY5OTI1ZTZlNjJjNC4uNTE4M2RiYjgxNmJlYTg0MjdhNzhiNzQyYTU4MjRi
ZGE3NjdmYWM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA0LTE0ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggYmFzaWMgV0tVUkxT
Y2hlbWVIYW5kbGVyIGJ1Z3MuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY0NzU1OT4gYW5k
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA4NjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0
ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisK
IDIwMTctMDQtMTMgIFJvbWFpbiBCZWxsZXNzb3J0ICA8cm9tYWluLmJlbGxlc3NvcnRAY3JmLmNh
bm9uLmZyPgogCiAgICAgICAgIFtSZWFkYWJsZSBTdHJlYW1zIEFQSV0gSW1wbGVtZW50IGNsb25l
QXJyYXlCdWZmZXIgaW4gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQ2YzU5OTkzZjE2ZTFlNjc2MTFl
OGU5OWMwMjRiNGFjNWMyMjRhZDUuLjc0MWFjZDUxZmE0MjcwZDQ0YmEzNTMzNmNmNWRiNWEwZmFl
NTk3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxNy0wNC0xNCAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IGJhc2ljIFdLVVJMU2NoZW1l
SGFuZGxlciBidWdzLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA2NDc1NTk+IGFuZCBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwODYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKworICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkxvYWRlclN0cmF0ZWd5OjphZGRVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnJlbW92ZVVSTFNjaGVtZUhhbmRsZXJU
YXNrUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6cmVtb3ZlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaDoKKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnN0YXJ0TmV3VGFzayk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlk
U3RvcExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVI
YW5kbGVyUHJveHkuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hl
bWVIYW5kbGVyVGFza1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFu
ZGxlclRhc2tQcm94eTo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OnN0b3BMb2FkaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1By
b3h5OjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJU
YXNrUHJveHk6Omhhc0xvYWRlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1l
SGFuZGxlclRhc2tQcm94eTo6aWRlbnRpZmllcik6CisKIDIwMTctMDQtMTIgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBGdXR1cmUtcHJvb2YgLnhjY29u
ZmlnIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApp
bmRleCA4YmE1NjFjNmYyMzdmZTE1YWQ4OWNiNzI4MWRhYzI4NGJhNmRjMTljLi4yNzViMDZhNTQy
MjdlMjRjMDg0N2YxOTk2MGEzY2ZiNjA0NmVhMjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTM5MCw2ICszOTAsOCBAQCB2b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBs
b25nIGxvbmcgZQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRh
UGF5bG9hZFR5cGUpCiB7CisgICAgQVNTRVJUKG1fcmVzb3VyY2UpOworCiAgICAgaWYgKG1fcmVz
b3VyY2UtPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDAgJiYgIW1fcmVzb3VyY2Ut
PnNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBBU1NFUlQoIW1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggOTZi
OTYwMjBkYzg5MzNiODQ5MzZlMWYxZGNhZGEyYzlkZTg2ZDRiYi4uNzdiNzYxNzZhYjIyZmZjMDkx
NmYzOTI5Mzg3NGZjMjU2N2E1YWFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oV2ViUGFnZVAKICAgICAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4gbG9j
YWxOYXZpZ2F0aW9uQWN0aW9uID0gJm5hdmlnYXRpb25BY3Rpb247CiAgICAgICAgIFJlZlB0cjxX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxvY2FsTGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3Rl
bmVyKTsKIAotICAgICAgICB0cnlBcHBMaW5rKFdURk1vdmUobG9jYWxOYXZpZ2F0aW9uQWN0aW9u
KSwgbWFpbkZyYW1lVVJMU3RyaW5nLCBbbG9jYWxMaXN0ZW5lciwgbG9jYWxOYXZpZ2F0aW9uQWN0
aW9uID0gUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4oJm5hdmlnYXRpb25BY3Rpb24pXSAo
Ym9vbCBmb2xsb3dlZExpbmtUb0FwcCkgeworICAgICAgICB0cnlBcHBMaW5rKFdURk1vdmUobG9j
YWxOYXZpZ2F0aW9uQWN0aW9uKSwgbWFpbkZyYW1lVVJMU3RyaW5nLCBbd2ViUGFnZSA9IG1ha2VS
ZWYod2ViUGFnZVByb3h5KSwgbG9jYWxMaXN0ZW5lciwgbG9jYWxOYXZpZ2F0aW9uQWN0aW9uID0g
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4oJm5hdmlnYXRpb25BY3Rpb24pXSAoYm9vbCBm
b2xsb3dlZExpbmtUb0FwcCkgewogICAgICAgICAgICAgaWYgKGZvbGxvd2VkTGlua1RvQXBwKSB7
CiAgICAgICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+aWdub3JlKCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMzIzLDcgKzMyMyw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQCiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zVVJM
UmVxdWVzdCA9IGFkb3B0TlMod3JhcHBlcihBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShsb2NhbE5h
dmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKSkubGVha1JlZigpKSk7Ci0gICAgICAgICAgICBpZiAo
W05TVVJMQ29ubmVjdGlvbiBjYW5IYW5kbGVSZXF1ZXN0Om5zVVJMUmVxdWVzdC5nZXQoKV0pIHsK
KyAgICAgICAgICAgIGlmIChbTlNVUkxDb25uZWN0aW9uIGNhbkhhbmRsZVJlcXVlc3Q6bnNVUkxS
ZXF1ZXN0LmdldCgpXSB8fCB3ZWJQYWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFtuc1VS
TFJlcXVlc3QgVVJMXS5zY2hlbWUpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGxvY2FsTmF2aWdh
dGlvbkFjdGlvbi0+c2hvdWxkUGVyZm9ybURvd25sb2FkKCkpCiAgICAgICAgICAgICAgICAgICAg
IGxvY2FsTGlzdGVuZXItPmRvd25sb2FkKCk7CiAgICAgICAgICAgICAgICAgZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAK
aW5kZXggMTIwYWIzZjk1NTE5ODVkODBlYzgyMmM1NDc4MDk0M2YyOTc5ZGU2MS4uMGRlYWIzZTU3
Nzg1MjYxNjk2YzBmOTFjZTAxOTBlNjU0ZTlhODYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwCkBAIC02MCw2ICs2MCw4
IEBAIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlIFdlYlVSTFNjaGVtZUhh
bmRsZXJUYXNrOjpkaWRSZWNlaXZlUmVzcG9uCiAgICAgICAgIHJldHVybiBXZWJVUkxTY2hlbWVI
YW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6RGF0YUFscmVhZHlTZW50OwogCiAgICAgbV9yZXNw
b25zZVNlbnQgPSB0cnVlOworCisgICAgcmVzcG9uc2UuaW5jbHVkZUNlcnRpZmljYXRlSW5mbygp
OwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lSGFuZGxlclRh
c2tEaWRSZWNlaXZlUmVzcG9uc2UobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1f
aWRlbnRpZmllciwgcmVzcG9uc2UpKTsKICAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRh
c2s6OkV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCA3YTliNmYwODlh
YzcxMjZmZjdhZjc5NjhhZWI1Y2VjMmJiMGViYzlkLi5mYmQzZGM4NmI0OGNjOGZiNWYzMWY3NGU0
MTMxMzgxNGM5MWE1MGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTI2NCwxOCArMjY0LDMwIEBAIHZv
aWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0TG9jYWxMb2FkKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyJiByZXNvdXJjZUxvYWRlcikKICAgICBtX3dlYlJlc291cmNlTG9hZGVycy5zZXQocmVzb3Vy
Y2VMb2FkZXIuaWRlbnRpZmllcigpLCBXZWJSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHJlc291cmNl
TG9hZGVyLCB7IH0pKTsKIH0KIAordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6YWRkVVJMU2NoZW1l
SGFuZGxlclRhc2tQcm94eShXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5JiB0YXNrKQorewor
ICAgIGF1dG8gcmVzdWx0ID0gbV91cmxTY2hlbWVIYW5kbGVyVGFza3MuYWRkKHRhc2suaWRlbnRp
ZmllcigpLCAmdGFzayk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKK30KKwordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cmVtb3ZlVVJMU2NoZW1lSGFuZGxl
clRhc2tQcm94eShXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5JiB0YXNrKQoreworICAgIG1f
dXJsU2NoZW1lSGFuZGxlclRhc2tzLnJlbW92ZSh0YXNrLmlkZW50aWZpZXIoKSk7Cit9CisKIHZv
aWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2Fk
ZXIpCiB7CiAgICAgQVNTRVJUKHJlc291cmNlTG9hZGVyKTsKICAgICBMT0coTmV0d29ya1NjaGVk
dWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnJlbW92ZSwgdXJsICclcyci
LCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBp
ZiAobV9pbnRlcm5hbGx5RmFpbGVkUmVzb3VyY2VMb2FkZXJzLmNvbnRhaW5zKHJlc291cmNlTG9h
ZGVyKSkgewotICAgICAgICBtX2ludGVybmFsbHlGYWlsZWRSZXNvdXJjZUxvYWRlcnMucmVtb3Zl
KHJlc291cmNlTG9hZGVyKTsKKyAgICBpZiAoYXV0byB0YXNrID0gbV91cmxTY2hlbWVIYW5kbGVy
VGFza3MudGFrZShyZXNvdXJjZUxvYWRlci0+aWRlbnRpZmllcigpKSkgeworICAgICAgICBBU1NF
UlQoIW1faW50ZXJuYWxseUZhaWxlZFJlc291cmNlTG9hZGVycy5jb250YWlucyhyZXNvdXJjZUxv
YWRlcikpOworICAgICAgICB0YXNrLT5zdG9wTG9hZGluZygpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKGF1dG8gdGFzayA9IG1fdXJsU2NoZW1lSGFuZGxlclRhc2tzLnRha2Uo
cmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXIoKSkpIHsKLSAgICAgICAgdGFzay0+c3RvcExvYWRp
bmcoKTsKKyAgICBpZiAobV9pbnRlcm5hbGx5RmFpbGVkUmVzb3VyY2VMb2FkZXJzLmNvbnRhaW5z
KHJlc291cmNlTG9hZGVyKSkgeworICAgICAgICBtX2ludGVybmFsbHlGYWlsZWRSZXNvdXJjZUxv
YWRlcnMucmVtb3ZlKHJlc291cmNlTG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmgKaW5kZXggNTMzZTRkZjY5NzdkZTJmMWY1YmEyYmEzNDAzYjRhMTMzMWEwMWFh
MC4uNTFiMmE4MmY1NThiNWNjMGY2NjRmMmNkYjJiODMxNDJlMjNkNDdmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgK
QEAgLTY2LDYgKzY2LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNo
ZWQoKTsKIAorICAgIHZvaWQgYWRkVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eShXZWJVUkxTY2hl
bWVIYW5kbGVyVGFza1Byb3h5Jik7CisgICAgdm9pZCByZW1vdmVVUkxTY2hlbWVIYW5kbGVyVGFz
a1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkmKTsKKwogcHJpdmF0ZToKICAgICB2
b2lkIHNjaGVkdWxlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlKiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
KTsKICAgICB2b2lkIHNjaGVkdWxlSW50ZXJuYWxseUZhaWxlZExvYWQoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXImKTsKQEAgLTc2LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBSdW5Mb29wOjpUaW1l
cjxXZWJMb2FkZXJTdHJhdGVneT4gbV9pbnRlcm5hbGx5RmFpbGVkTG9hZFRpbWVyOwogICAgIAog
ICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUmVmUHRyPFdlYlJlc291cmNlTG9hZGVyPj4gbV93
ZWJSZXNvdXJjZUxvYWRlcnM7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eT4+IG1fdXJsU2NoZW1lSGFuZGxlclRh
c2tzOworICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQ
cm94eSo+IG1fdXJsU2NoZW1lSGFuZGxlclRhc2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCmluZGV4IDdlMGE4ZDEyYzU1ZjcyZmE2Y2Vj
NTVhNzc1NTAxNDg4NDg0ODI1YzYuLjk0MWI3OTczZmVlYjA4ZWEzODEzYmNjNDMwN2Q0NTBlNGJk
NWFiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJV
UkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAj
aW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgiCiAKICNpbmNsdWRlICJXZWJFcnJv
cnMuaCIKKyNpbmNsdWRlICJXZWJMb2FkZXJTdHJhdGVneS5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpAQCAtNDksNiArNTEsNyBAQCB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eTo6c3RhcnROZXdUYXNrKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiAgICAgYXV0byByZXN1
bHQgPSBtX3Rhc2tzLmFkZChsb2FkZXIuaWRlbnRpZmllcigpLCBzdGQ6Om1ha2VfdW5pcXVlPFdl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk+KCp0aGlzLCBsb2FkZXIpKTsKICAgICBBU1NFUlQo
cmVzdWx0LmlzTmV3RW50cnkpOwogCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9h
ZGVyU3RyYXRlZ3koKS5hZGRVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5KCpyZXN1bHQuaXRlcmF0
b3ItPnZhbHVlKTsKICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zdGFydExvYWRpbmcoKTsK
IH0KIApAQCAtNzcsNyArODAsMTQgQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRh
c2tEaWRDb21wbGV0ZSh1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgUmUKICAgICBpZiAo
IXRhc2spCiAgICAgICAgIHJldHVybjsKIAorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YkxvYWRlclN0cmF0ZWd5KCkucmVtb3ZlVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eSgqdGFzayk7
CiAgICAgdGFzay0+ZGlkQ29tcGxldGUoZXJyb3IpOwogfQogCit2b2lkIFdlYlVSTFNjaGVtZUhh
bmRsZXJQcm94eTo6dGFza0RpZFN0b3BMb2FkaW5nKFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJv
eHkmIHRhc2spCit7CisgICAgQVNTRVJUKG1fdGFza3MuZ2V0KHRhc2suaWRlbnRpZmllcigpKSA9
PSAmdGFzayk7CisgICAgbV90YXNrcy5yZW1vdmUodGFzay5pZGVudGlmaWVyKCkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaAppbmRleCBjZWZjM2Fm
MWE1M2VlMWY5YjgzODc2YjhjMDlmNmM0MTk1ZjA2MDVkLi5mMjk3MzAwMzBiZDdiMTFkMjEzNDE0
YmFhZTgwMDhjYzlmMjFiNTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCkBAIC01Miw2ICs1
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qg
dGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2
b2lkIHRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgc2l6ZV90LCBj
b25zdCB1aW50OF90KiBkYXRhKTsKICAgICB2b2lkIHRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCB0
YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQg
dGFza0RpZFN0b3BMb2FkaW5nKFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkmKTsKIAogcHJp
dmF0ZToKICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQ
cm94eS5jcHAKaW5kZXggYzhlNjM2ZDhjZDRlOWE2NDJiODMzOWE5NjA3OTNhOWVjNWYxOGZlOC4u
MTgxYmExNmI4M2FjODA0ZTc4ZTA2ODI4Nzk2YTlmOTQ2MDI4Njk0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hl
bWVIYW5kbGVyVGFza1Byb3h5LmNwcApAQCAtNDIsNiArNDIsNyBAQCBXZWJVUkxTY2hlbWVIYW5k
bGVyVGFza1Byb3h5OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5KFdlYlVSTFNjaGVtZUhh
bmRsZXJQcgogICAgIDogbV91cmxTY2hlbWVIYW5kbGVyKGhhbmRsZXIpCiAgICAgLCBtX2NvcmVM
b2FkZXIoJmxvYWRlcikKICAgICAsIG1fcmVxdWVzdChsb2FkZXIucmVxdWVzdCgpKQorICAgICwg
bV9pZGVudGlmaWVyKGxvYWRlci5pZGVudGlmaWVyKCkpCiB7CiB9CiAKQEAgLTUzLDE2ICs1NCwx
NyBAQCB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OnN0YXJ0TG9hZGluZygpCiAK
IHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6c3RvcExvYWRpbmcoKQogewotICAg
IGlmICghbV9jb3JlTG9hZGVyKQotICAgICAgICByZXR1cm47Ci0KKyAgICBBU1NFUlQobV9jb3Jl
TG9hZGVyKTsKICAgICBtX3VybFNjaGVtZUhhbmRsZXIucGFnZSgpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U3RvcFVSTFNjaGVtZUhhbmRsZXJUYXNrKG1fdXJsU2NoZW1lSGFuZGxlci5p
ZGVudGlmaWVyKCksIG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSk7CiAgICAgbV9jb3JlTG9h
ZGVyID0gbnVsbHB0cjsKKworICAgIC8vIFRoaXMgbGluZSB3aWxsIHJlc3VsdCBpbiB0aGlzIGJl
aW5nIGRlbGV0ZWQuCisgICAgbV91cmxTY2hlbWVIYW5kbGVyLnRhc2tEaWRTdG9wTG9hZGluZygq
dGhpcyk7CiB9CiAKIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIGlmICgh
bV9jb3JlTG9hZGVyKQorICAgIGlmICghaGFzTG9hZGVyKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKQEAgLTcwLDcg
KzcyLDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmUKIAogdm9pZCBXZWJVUkxTY2hlbWVIYW5k
bGVyVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YShzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCog
ZGF0YSkKIHsKLSAgICBpZiAoIW1fY29yZUxvYWRlcikKKyAgICBpZiAoIWhhc0xvYWRlcigpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplLCAwLCBEYXRhUGF5bG9hZFR5cGU6
OkRhdGFQYXlsb2FkQnl0ZXMpOwpAQCAtNzgsNyArODAsNyBAQCB2b2lkIFdlYlVSTFNjaGVtZUhh
bmRsZXJUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90
KiBkYQogCiB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OmRpZENvbXBsZXRlKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGlmICghbV9jb3JlTG9hZGVyKQorICAg
IGlmICghaGFzTG9hZGVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChlcnJvci5pc051
bGwoKSkKQEAgLTg5LDQgKzkxLDEyIEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94
eTo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgbV9jb3JlTG9h
ZGVyID0gbnVsbHB0cjsKIH0KIAorYm9vbCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5Ojpo
YXNMb2FkZXIoKQoreworICAgIGlmIChtX2NvcmVMb2FkZXIgJiYgbV9jb3JlTG9hZGVyLT5yZWFj
aGVkVGVybWluYWxTdGF0ZSgpKQorICAgICAgICBtX2NvcmVMb2FkZXIgPSBudWxscHRyOworCisg
ICAgcmV0dXJuIG1fY29yZUxvYWRlcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFu
ZGxlclRhc2tQcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuaAppbmRleCBmOTdmMjYzNjVlYmM3ODljMDdkMzA1ODhk
MmIyMzE0Nzc2NTRhYTg3Li4xOWU5ZjE1MTJlYTcwOTlmYWMyM2E5ODEwYzYwMDNkMmY4ODE5Nzg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2No
ZW1lSGFuZGxlclRhc2tQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmgKQEAgLTUxLDExICs1MSwxNSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShzaXplX3QsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEpOwogICAgIHZvaWQgZGlkQ29tcGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
OwogCisgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CisKIHByaXZhdGU6CisgICAgYm9vbCBoYXNMb2FkZXIoKTsKKwogICAgIFdlYlVS
TFNjaGVtZUhhbmRsZXJQcm94eSYgbV91cmxTY2hlbWVIYW5kbGVyOwogICAgIFJlZlB0cjxXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcj4gbV9jb3JlTG9hZGVyOwogICAgIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCBtX3JlcXVlc3Q7Ci0KKyAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDgwY2NiZjM0ZmVkZmViMDI2MDdhODg5MzA5MGE4Yjg0Zjkx
NWFhNzQuLmYzMzFlZjRlNTVkMDRkNzNhN2NlMDllNDg2ZTRkY2Y4NjFkNTE1MDMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAxNy0wNC0xNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgRml4IGJhc2ljIFdLVVJMU2NoZW1lSGFuZGxlciBidWdzLgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzA2NDc1NTk+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcwODYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLVVJMU2NoZW1lSGFu
ZGxlci0xLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bU2NoZW1lSGFuZGxlciBpbml0V2l0aERhdGE6
bWltZVR5cGU6XSk6CisgICAgICAgICgtW1NjaGVtZUhhbmRsZXIgZGVhbGxvY10pOgorICAgICAg
ICAoLVtTY2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRUYXNrOl0pOgorICAgICAgICAoLVtTY2hl
bWVIYW5kbGVyIHdlYlZpZXc6c3RvcFRhc2s6XSk6CisgICAgICAgIChURVNUKToKKwogMjAxNy0w
NC0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIENsZWFuIHVwIFNoYXJlZEJ1ZmZlciBwdWJsaWMgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDZjMGRhNzlmMmRmMDU2ZDUzZmE0MjA0MzM2YjY1MWZjMjM1MWY3ZDcuLmM0
MjhhY2JkYTMyNjRlM2ZjMDAzYTcxYjgwYzJjODQ3YWIxMmFkNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNTIsNiArMTUyLDcgQEAKIAkJNTFCMUVFOTcxQzgwRkFFRjAwNjRGQjk4IC8q
IEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIxRUU5NTFDODBGQUREMDA2NEZCOTggLyogSW5k
ZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sICovOyB9OwogCQk1MUJDRUU0RTFDODRGNTNCMDA0MkM4
MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJDRUU0QzFDODRGNTJDMDA0MkM4MkUg
LyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLzsgfTsKIAkJNTFCQ0VFNEYxQzg0RjUz
QjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VFNEQxQzg0RjUyQzAw
NDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgKi87IH07CisJCTUxQzY4M0RF
MUVBMTM0RTgwMDY1MDE4MyAvKiBXS1VSTFNjaGVtZUhhbmRsZXItMS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzY4M0REMUVBMTM0REIwMDY1MDE4
MyAvKiBXS1VSTFNjaGVtZUhhbmRsZXItMS5tbSAqLzsgfTsKIAkJNTFDRDFDNkMxQjM4Q0U0MzAw
MTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFDRDFDNkExQjM4Q0UzNjAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1t
ICovOyB9OwogCQk1MUNEMUM3MjFCMzhENDg0MDAxNDJDQTUgLyogbW9kYWwtYWxlcnRzLWluLW5l
dy1hYm91dC1ibGFuay13aW5kb3cuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM3MTFCMzhENDg0MDAxNDJDQTUgLyogbW9kYWwt
YWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13aW5kb3cuaHRtbCAqLzsgfTsKIAkJNTFEMTI0OTgx
RTc2M0IwMjAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0OTcxRTc2M0FGODAwMkIyODIwIC8q
IFdLSFRUUENvb2tpZVN0b3JlLm1tICovOyB9OwpAQCAtMTA3MSw2ICsxMDcyLDcgQEAKIAkJNTFC
Q0VFNDkxQzg0RjRBRjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQk11bHRpUHJvY2Vzcy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNEMxQzg0RjUyQzAwNDJDODJF
IC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAiSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxQkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nl
c3MtMi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkluZGV4ZWREQk11bHRpUHJv
Y2Vzcy0yLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUM2ODNERDFFQTEz
NERCMDA2NTAxODMgLyogV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSAiV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0iOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUNCNEFENzFCM0EwNzlDMDBDMUIxQzYgLyogTW9kYWxB
bGVydHNTUEkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kYWxB
bGVydHNTUEkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUNEMUM2QTFCMzhD
RTM2MDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBNb2RhbEFsZXJ0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFDRDFDNzExQjM4RDQ4NDAwMTQyQ0E1IC8qIG1vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQt
Ymxhbmstd2luZG93Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1i
bGFuay13aW5kb3cuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzA1LDYg
KzE3MDcsNyBAQAogCQkJCUExNEFBQjYxMUU3OEQ3REUwMEMxQURDMiAvKiBXS1BERlZpZXcubW0g
Ki8sCiAJCQkJMkQwMDA2NUQxQzFGNTg5NDAwODhFNkE3IC8qIFdLUERGVmlld1Jlc2l6ZUNyYXNo
Lm1tICovLAogCQkJCTVFNEIxRDJDMUQ0MDRDNjEwMDA1MzYyMSAvKiBXS1Njcm9sbFZpZXdEZWxl
Z2F0ZUNyYXNoLm1tICovLAorCQkJCTUxQzY4M0REMUVBMTM0REIwMDY1MDE4MyAvKiBXS1VSTFNj
aGVtZUhhbmRsZXItMS5tbSAqLywKIAkJCQk1Q0UzNTREODFFNzBEOUMzMDBCRUZFM0IgLyogV0tV
c2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tICovLAogCQkJCTJFRkYwNkQ2MUQ4QUYzNEEwMDA0
QkIzMCAvKiBXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5tbSAqLywKIAkJCQk3QzQxN0YzMTFEMTlF
MTQ4MDBCOEVGNTMgLyogV0tXZWJWaWV3RGVmYXVsdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbSAqLywK
QEAgLTI5MTEsNiArMjkxNCw3IEBACiAJCQkJQ0UwNkRGOUIxRTE4NTFGMjAwRTU3MEM5IC8qIFNl
Y3VyaXR5T3JpZ2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3NjlDNTBCMUQ5QjAwMDIwMDA4
NDdGQiAvKiBTZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdD
Q0U3RUNCMUE0MTFBN0UwMDQ0N0M0QyAvKiBTZXRBbmRVcGRhdGVDYWNoZU1vZGVsLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJNTFDNjgzREUxRUExMzRFODAwNjUwMTgzIC8qIFdLVVJMU2NoZW1lSGFu
ZGxlci0xLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQ0MxQTQxMUE3RTAwNDQ3QzRDIC8q
IFNldERvY3VtZW50VVJJLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwNTIxRDBBNjQxODAw
RkVCQ0YzIC8qIFNoYXJlZEJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTc5OTE4ODFF
MUM5OTRFMDBBNTA1RUQgLyogU2hhcmVkQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXItMS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLVVJM
U2NoZW1lSGFuZGxlci0xLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2Y2NmOWYwMjUxNWE0YWRiNzk2MDRlYTY2
Mjk1NmFlOWUzMTI3YTIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQpAQCAtMCwwICsxLDE1MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCA8V2ViS2l0L1dLVVJMU2NoZW1l
SGFuZGxlci5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVVJMU2NoZW1lSGFuZGxlclRhc2suaD4KKyNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8
V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgV0tfQVBJ
X0VOQUJMRUQKKworc3RhdGljIGJvb2wgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlOworCitAaW50ZXJm
YWNlIFNjaGVtZUhhbmRsZXIgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPgorQHByb3Bl
cnR5IChyZWFkb25seSkgTlNNdXRhYmxlQXJyYXk8TlNVUkwgKj4gKnN0YXJ0ZWRVUkxzOworQHBy
b3BlcnR5IChyZWFkb25seSkgTlNNdXRhYmxlQXJyYXk8TlNVUkwgKj4gKnN0b3BwZWRVUkxzOwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YTooTlNEYXRhICopZGF0YSBtaW1lVHlwZTooTlNT
dHJpbmcgKilpbk1JTUVUeXBlOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gU2NoZW1lSGFuZGxl
ciB7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gcmVzb3VyY2VEYXRhOworICAgIFJldGFpblB0cjxO
U1N0cmluZz4gbWltZVR5cGU7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGE6KE5T
RGF0YSAqKWRhdGEgbWltZVR5cGU6KE5TU3RyaW5nICopaW5NSU1FVHlwZQoreworICAgIHNlbGYg
PSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgcmVzb3VyY2VEYXRhID0gZGF0YTsKKyAgICBtaW1lVHlwZSA9IGluTUlNRVR5cGU7CisgICAg
X3N0YXJ0ZWRVUkxzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisgICAgX3N0b3Bw
ZWRVUkxzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisKKyAgICByZXR1cm4gc2Vs
ZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgW19zdGFydGVkVVJMcyByZWxlYXNlXTsK
KyAgICBbX3N0b3BwZWRVUkxzIHJlbGVhc2VdOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKwor
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VGFzazooaWQgPFdLVVJM
U2NoZW1lSGFuZGxlclRhc2s+KXRhc2sKK3sKKyAgICBbX3N0YXJ0ZWRVUkxzIGFkZE9iamVjdDp0
YXNrLnJlcXVlc3QuVVJMXTsKKworICAgIC8vIEFsd2F5cyBmYWlsIHRoZSBpbWFnZSBsb2FkLgor
ICAgIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6
QCJ0ZXN0aW5nOmltYWdlIl0pIHsKKyAgICAgICAgW3Rhc2sgZGlkRmFpbFdpdGhFcnJvcjpbTlNF
cnJvciBlcnJvcldpdGhEb21haW46QCJUZXN0V2ViS2l0QVBJIiBjb2RlOjEgdXNlckluZm86bmls
XV07CisgICAgICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IHRydWU7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9w
dE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBN
SU1FVHlwZTptaW1lVHlwZS5nZXQoKSBleHBlY3RlZENvbnRlbnRMZW5ndGg6MSB0ZXh0RW5jb2Rp
bmdOYW1lOm5pbF0pOworICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQo
KV07CisgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6cmVzb3VyY2VEYXRhLmdldCgpXTsKKyAgICBb
dGFzayBkaWRGaW5pc2hdOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgc3RvcFRhc2s6KGlkIDxXS1VSTFNjaGVtZUhhbmRsZXJUYXNrPil0YXNrCit7CisgICAgW19z
dG9wcGVkVVJMcyBhZGRPYmplY3Q6dGFzay5yZXF1ZXN0LlVSTF07CisKKyAgICByZWNlaXZlZFNj
cmlwdE1lc3NhZ2UgPSB0cnVlOworfQorCitAZW5kCisKK3N0YXRpYyBjb25zdCBjaGFyIG1haW5C
eXRlc1tdID0KKyI8aHRtbD4iIFwKKyI8aW1nIHNyYz0ndGVzdGluZzppbWFnZSc+IiBcCisiPC9o
dG1sPiI7CisKK1RFU1QoVVJMU2NoZW1lSGFuZGxlciwgQmFzaWMpCit7CisgICAgcmVjZWl2ZWRT
Y3JpcHRNZXNzYWdlID0gZmFsc2U7CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJh
dGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisKKyAgICBSZXRhaW5QdHI8U2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IGFk
b3B0TlMoW1tTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0
aEJ5dGVzTm9Db3B5Oih2b2lkKiltYWluQnl0ZXMgbGVuZ3RoOnNpemVvZihtYWluQnl0ZXMpXSBt
aW1lVHlwZTpAInRleHQvaHRtbCJdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVI
YW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGVzdGluZyJdOworCisgICAgUmV0
YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdGluZzptYWlu
Il1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworCisgICAgRVhQRUNUX0VR
KFtoYW5kbGVyLmdldCgpLnN0YXJ0ZWRVUkxzIGNvdW50XSwgMnUpOworICAgIEVYUEVDVF9UUlVF
KFtbaGFuZGxlci5nZXQoKS5zdGFydGVkVVJMcyBvYmplY3RBdEluZGV4OjBdIGlzRXF1YWw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0aW5nOm1haW4iXV0pOworICAgIEVYUEVDVF9UUlVFKFtb
aGFuZGxlci5nZXQoKS5zdGFydGVkVVJMcyBvYmplY3RBdEluZGV4OjFdIGlzRXF1YWw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJ0ZXN0aW5nOmltYWdlIl1dKTsKKyAgICBFWFBFQ1RfRVEoW2hhbmRs
ZXIuZ2V0KCkuc3RvcHBlZFVSTHMgY291bnRdLCAwdSk7Cit9CisKK1RFU1QoVVJMU2NoZW1lSGFu
ZGxlciwgTm9NSU1FVHlwZSkKK3sKKyAgICAvLyBTaW5jZSB0aGVyZSdzIG5vIE1JTUVUeXBlLCBh
bmQgbm8gTmF2aWdhdGlvbkRlbGVnYXRlIHRvIHRlbGwgV2ViS2l0IHRvIGRvIHRoZSBsb2FkIGFu
eXdheXMsIFdlYktpdCB3aWxsIGlnbm9yZSAoc2lsZW50bHkgZmFpbCkgdGhlIGxvYWQuCisgICAg
Ly8gVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBpcyBjb21tdW5pY2F0ZWQgYmFjayB0byB0aGUg
VVJMU2NoZW1lSGFuZGxlci4KKworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwor
CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgUmV0
YWluUHRyPFNjaGVtZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbU2NoZW1lSGFuZGxlciBh
bGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCopbWFp
bkJ5dGVzIGxlbmd0aDpzaXplb2YobWFpbkJ5dGVzKV0gbWltZVR5cGU6bmlsXSk7CisgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVt
ZTpAInRlc3RpbmciXTsKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgTlNVUkxS
ZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAInRlc3Rpbmc6bWFpbiJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpy
ZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRN
ZXNzYWdlKTsKKworICAgIEVYUEVDVF9FUShbaGFuZGxlci5nZXQoKS5zdGFydGVkVVJMcyBjb3Vu
dF0sIDF1KTsKKyAgICBFWFBFQ1RfVFJVRShbW2hhbmRsZXIuZ2V0KCkuc3RhcnRlZFVSTHMgb2Jq
ZWN0QXRJbmRleDowXSBpc0VxdWFsOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdGluZzptYWlu
Il1dKTsKKyAgICBFWFBFQ1RfRVEoW2hhbmRsZXIuZ2V0KCkuc3RvcHBlZFVSTHMgY291bnRdLCAx
dSk7CisgICAgRVhQRUNUX1RSVUUoW1toYW5kbGVyLmdldCgpLnN0b3BwZWRVUkxzIG9iamVjdEF0
SW5kZXg6MF0gaXNFcXVhbDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Rpbmc6bWFpbiJdXSk7
Cit9CisKKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307161</attachid>
            <date>2017-04-14 15:56:40 -0700</date>
            <delta_ts>2017-04-14 17:52:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170862-20170414155639.patch</filename>
            <type>text/plain</type>
            <size>25452</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY4MWEwOTMwNTgzZTdm
ZmY4ODkxNmQ3MjYwMGY5OTI1ZTZlNjJjNC4uNTE4M2RiYjgxNmJlYTg0MjdhNzhiNzQyYTU4MjRi
ZGE3NjdmYWM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA0LTE0ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggYmFzaWMgV0tVUkxT
Y2hlbWVIYW5kbGVyIGJ1Z3MuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY0NzU1OT4gYW5k
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA4NjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0
ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisK
IDIwMTctMDQtMTMgIFJvbWFpbiBCZWxsZXNzb3J0ICA8cm9tYWluLmJlbGxlc3NvcnRAY3JmLmNh
bm9uLmZyPgogCiAgICAgICAgIFtSZWFkYWJsZSBTdHJlYW1zIEFQSV0gSW1wbGVtZW50IGNsb25l
QXJyYXlCdWZmZXIgaW4gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQ2YzU5OTkzZjE2ZTFlNjc2MTFl
OGU5OWMwMjRiNGFjNWMyMjRhZDUuLjc0MWFjZDUxZmE0MjcwZDQ0YmEzNTMzNmNmNWRiNWEwZmFl
NTk3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxNy0wNC0xNCAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IGJhc2ljIFdLVVJMU2NoZW1l
SGFuZGxlciBidWdzLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA2NDc1NTk+IGFuZCBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwODYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKworICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkxvYWRlclN0cmF0ZWd5OjphZGRVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnJlbW92ZVVSTFNjaGVtZUhhbmRsZXJU
YXNrUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6cmVtb3ZlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaDoKKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnN0YXJ0TmV3VGFzayk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZENvbXBs
ZXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlk
U3RvcExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVI
YW5kbGVyUHJveHkuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hl
bWVIYW5kbGVyVGFza1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFu
ZGxlclRhc2tQcm94eTo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OnN0b3BMb2FkaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1By
b3h5OjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJU
YXNrUHJveHk6Omhhc0xvYWRlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1l
SGFuZGxlclRhc2tQcm94eTo6aWRlbnRpZmllcik6CisKIDIwMTctMDQtMTIgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBGdXR1cmUtcHJvb2YgLnhjY29u
ZmlnIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApp
bmRleCA4YmE1NjFjNmYyMzdmZTE1YWQ4OWNiNzI4MWRhYzI4NGJhNmRjMTljLi4yNzViMDZhNTQy
MjdlMjRjMDg0N2YxOTk2MGEzY2ZiNjA0NmVhMjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTM5MCw2ICszOTAsOCBAQCB2b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBs
b25nIGxvbmcgZQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRh
UGF5bG9hZFR5cGUpCiB7CisgICAgQVNTRVJUKG1fcmVzb3VyY2UpOworCiAgICAgaWYgKG1fcmVz
b3VyY2UtPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDAgJiYgIW1fcmVzb3VyY2Ut
PnNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBBU1NFUlQoIW1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggOTZi
OTYwMjBkYzg5MzNiODQ5MzZlMWYxZGNhZGEyYzlkZTg2ZDRiYi4uYjY2ZTFhMWM3ZDQxYzhlMTg0
YTdjNTdkNDAyMTFkOTE3YTU5MGY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oV2ViUGFnZVAKICAgICAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4gbG9j
YWxOYXZpZ2F0aW9uQWN0aW9uID0gJm5hdmlnYXRpb25BY3Rpb247CiAgICAgICAgIFJlZlB0cjxX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxvY2FsTGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3Rl
bmVyKTsKIAotICAgICAgICB0cnlBcHBMaW5rKFdURk1vdmUobG9jYWxOYXZpZ2F0aW9uQWN0aW9u
KSwgbWFpbkZyYW1lVVJMU3RyaW5nLCBbbG9jYWxMaXN0ZW5lciwgbG9jYWxOYXZpZ2F0aW9uQWN0
aW9uID0gUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4oJm5hdmlnYXRpb25BY3Rpb24pXSAo
Ym9vbCBmb2xsb3dlZExpbmtUb0FwcCkgeworICAgICAgICB0cnlBcHBMaW5rKFdURk1vdmUobG9j
YWxOYXZpZ2F0aW9uQWN0aW9uKSwgbWFpbkZyYW1lVVJMU3RyaW5nLCBbd2ViUGFnZSA9IFJlZlB0
cjxXZWJQYWdlUHJveHk+KCZ3ZWJQYWdlUHJveHkpLCBsb2NhbExpc3RlbmVyLCBsb2NhbE5hdmln
YXRpb25BY3Rpb24gPSBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPigmbmF2aWdhdGlvbkFj
dGlvbildIChib29sIGZvbGxvd2VkTGlua1RvQXBwKSB7CiAgICAgICAgICAgICBpZiAoZm9sbG93
ZWRMaW5rVG9BcHApIHsKICAgICAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5pZ25vcmUoKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oV2ViUGFnZVAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgUmV0YWluUHRyPE5TVVJM
UmVxdWVzdD4gbnNVUkxSZXF1ZXN0ID0gYWRvcHROUyh3cmFwcGVyKEFQSTo6VVJMUmVxdWVzdDo6
Y3JlYXRlKGxvY2FsTmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpKS5sZWFrUmVmKCkpKTsKLSAg
ICAgICAgICAgIGlmIChbTlNVUkxDb25uZWN0aW9uIGNhbkhhbmRsZVJlcXVlc3Q6bnNVUkxSZXF1
ZXN0LmdldCgpXSkgeworICAgICAgICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2FuSGFuZGxl
UmVxdWVzdDpuc1VSTFJlcXVlc3QuZ2V0KCldIHx8IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJG
b3JTY2hlbWUoW25zVVJMUmVxdWVzdCBVUkxdLnNjaGVtZSkpIHsKICAgICAgICAgICAgICAgICBp
ZiAobG9jYWxOYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRQZXJmb3JtRG93bmxvYWQoKSkKICAgICAg
ICAgICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+ZG93bmxvYWQoKTsKICAgICAgICAgICAgICAg
ICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
SGFuZGxlclRhc2suY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhh
bmRsZXJUYXNrLmNwcAppbmRleCAxMjBhYjNmOTU1MTk4NWQ4MGVjODIyYzU0NzgwOTQzZjI5Nzlk
ZTYxLi4wZGVhYjNlNTc3ODUyNjE2OTZjMGY5MWNlMDE5MGU2NTRlOWE4NjFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAK
QEAgLTYwLDYgKzYwLDggQEAgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGUg
V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OmRpZFJlY2VpdmVSZXNwb24KICAgICAgICAgcmV0dXJu
IFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlOjpEYXRhQWxyZWFkeVNlbnQ7
CiAKICAgICBtX3Jlc3BvbnNlU2VudCA9IHRydWU7CisKKyAgICByZXNwb25zZS5pbmNsdWRlQ2Vy
dGlmaWNhdGVJbmZvKCk7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxT
Y2hlbWVIYW5kbGVyVGFza0RpZFJlY2VpdmVSZXNwb25zZShtX3VybFNjaGVtZUhhbmRsZXItPmlk
ZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCByZXNwb25zZSkpOwogICAgIHJldHVybiBXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmlu
ZGV4IDdhOWI2ZjA4OWFjNzEyNmZmN2FmNzk2OGFlYjVjZWMyYmIwZWJjOWQuLmZiZDNkYzg2YjQ4
Y2M4ZmI1ZjMxZjc0ZTQxMzEzODE0YzkxYTUwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMjY0LDE4
ICsyNjQsMzAgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRMb2NhbExvYWQoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyKQogICAgIG1fd2ViUmVzb3VyY2VMb2Fk
ZXJzLnNldChyZXNvdXJjZUxvYWRlci5pZGVudGlmaWVyKCksIFdlYlJlc291cmNlTG9hZGVyOjpj
cmVhdGUocmVzb3VyY2VMb2FkZXIsIHsgfSkpOwogfQogCit2b2lkIFdlYkxvYWRlclN0cmF0ZWd5
OjphZGRVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJv
eHkmIHRhc2spCit7CisgICAgYXV0byByZXN1bHQgPSBtX3VybFNjaGVtZUhhbmRsZXJUYXNrcy5h
ZGQodGFzay5pZGVudGlmaWVyKCksICZ0YXNrKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpyZW1vdmVV
UkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkmIHRh
c2spCit7CisgICAgbV91cmxTY2hlbWVIYW5kbGVyVGFza3MucmVtb3ZlKHRhc2suaWRlbnRpZmll
cigpKTsKK30KKwogdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cmVtb3ZlKFJlc291cmNlTG9hZGVy
KiByZXNvdXJjZUxvYWRlcikKIHsKICAgICBBU1NFUlQocmVzb3VyY2VMb2FkZXIpOwogICAgIExP
RyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6cmVt
b3ZlLCB1cmwgJyVzJyIsIHJlc291cmNlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKIAotICAgIGlmIChtX2ludGVybmFsbHlGYWlsZWRSZXNvdXJjZUxvYWRlcnMuY29udGFp
bnMocmVzb3VyY2VMb2FkZXIpKSB7Ci0gICAgICAgIG1faW50ZXJuYWxseUZhaWxlZFJlc291cmNl
TG9hZGVycy5yZW1vdmUocmVzb3VyY2VMb2FkZXIpOworICAgIGlmIChhdXRvIHRhc2sgPSBtX3Vy
bFNjaGVtZUhhbmRsZXJUYXNrcy50YWtlKHJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSB7
CisgICAgICAgIEFTU0VSVCghbV9pbnRlcm5hbGx5RmFpbGVkUmVzb3VyY2VMb2FkZXJzLmNvbnRh
aW5zKHJlc291cmNlTG9hZGVyKSk7CisgICAgICAgIHRhc2stPnN0b3BMb2FkaW5nKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoYXV0byB0YXNrID0gbV91cmxTY2hlbWVIYW5k
bGVyVGFza3MudGFrZShyZXNvdXJjZUxvYWRlci0+aWRlbnRpZmllcigpKSkgewotICAgICAgICB0
YXNrLT5zdG9wTG9hZGluZygpOworICAgIGlmIChtX2ludGVybmFsbHlGYWlsZWRSZXNvdXJjZUxv
YWRlcnMuY29udGFpbnMocmVzb3VyY2VMb2FkZXIpKSB7CisgICAgICAgIG1faW50ZXJuYWxseUZh
aWxlZFJlc291cmNlTG9hZGVycy5yZW1vdmUocmVzb3VyY2VMb2FkZXIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA1MzNlNGRmNjk3N2RlMmYxZjViYTJiYTM0
MDNiNGExMzMxYTAxYWEwLi41MWIyYTgyZjU1OGI1Y2MwZjY2NGYyY2RiMmI4MzE0MmUyM2Q0N2Zh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuaApAQCAtNjYsNiArNjYsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG5ldHdv
cmtQcm9jZXNzQ3Jhc2hlZCgpOwogCisgICAgdm9pZCBhZGRVUkxTY2hlbWVIYW5kbGVyVGFza1By
b3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkmKTsKKyAgICB2b2lkIHJlbW92ZVVSTFNj
aGVtZUhhbmRsZXJUYXNrUHJveHkoV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eSYpOworCiBw
cml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVMb2FkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwg
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QpOwogICAgIHZvaWQgc2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOwpAQCAtNzYsNyArNzksNyBAQCBwcml2YXRlOgogICAg
IFJ1bkxvb3A6OlRpbWVyPFdlYkxvYWRlclN0cmF0ZWd5PiBtX2ludGVybmFsbHlGYWlsZWRMb2Fk
VGltZXI7CiAgICAgCiAgICAgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBSZWZQdHI8V2ViUmVzb3Vy
Y2VMb2FkZXI+PiBtX3dlYlJlc291cmNlTG9hZGVyczsKLSAgICBIYXNoTWFwPHVuc2lnbmVkIGxv
bmcsIHN0ZDo6dW5pcXVlX3B0cjxXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5Pj4gbV91cmxT
Y2hlbWVIYW5kbGVyVGFza3M7CisgICAgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBXZWJVUkxTY2hl
bWVIYW5kbGVyVGFza1Byb3h5Kj4gbV91cmxTY2hlbWVIYW5kbGVyVGFza3M7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKaW5kZXggN2UwYThk
MTJjNTVmNzJmYTZjZWM1NWE3NzU1MDE0ODg0ODQ4MjVjNi4uOTQxYjc5NzNmZWViMDhlYTM4MTNi
Y2M0MzA3ZDQ1MGU0YmQ1YWJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKQEAgLTI3
LDYgKzI3LDggQEAKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaCIKIAogI2lu
Y2x1ZGUgIldlYkVycm9ycy5oIgorI2luY2x1ZGUgIldlYkxvYWRlclN0cmF0ZWd5LmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00OSw2ICs1MSw3IEBAIHZvaWQgV2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5OjpzdGFydE5ld1Rhc2soUmVzb3VyY2VMb2FkZXImIGxvYWRlcikK
ICAgICBhdXRvIHJlc3VsdCA9IG1fdGFza3MuYWRkKGxvYWRlci5pZGVudGlmaWVyKCksIHN0ZDo6
bWFrZV91bmlxdWU8V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eT4oKnRoaXMsIGxvYWRlcikp
OwogICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7CiAKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLmFkZFVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHko
KnJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnN0
YXJ0TG9hZGluZygpOwogfQogCkBAIC03Nyw3ICs4MCwxNCBAQCB2b2lkIFdlYlVSTFNjaGVtZUhh
bmRsZXJQcm94eTo6dGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25z
dCBSZQogICAgIGlmICghdGFzaykKICAgICAgICAgcmV0dXJuOwogCisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5yZW1vdmVVUkxTY2hlbWVIYW5kbGVyVGFz
a1Byb3h5KCp0YXNrKTsKICAgICB0YXNrLT5kaWRDb21wbGV0ZShlcnJvcik7CiB9CiAKK3ZvaWQg
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkU3RvcExvYWRpbmcoV2ViVVJMU2NoZW1l
SGFuZGxlclRhc2tQcm94eSYgdGFzaykKK3sKKyAgICBBU1NFUlQobV90YXNrcy5nZXQodGFzay5p
ZGVudGlmaWVyKCkpID09ICZ0YXNrKTsKKyAgICBtX3Rhc2tzLnJlbW92ZSh0YXNrLmlkZW50aWZp
ZXIoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5o
CmluZGV4IGNlZmMzYWYxYTUzZWUxZjliODM4NzZiOGMwOWY2YzQxOTVmMDYwNWQuLmYyOTczMDAz
MGJkN2IxMWQyMTM0MTRiYWFlODAwOGNjOWYyMWI1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5
LmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGFza0RpZFJlY2VpdmVSZXNw
b25zZSh1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpOwogICAgIHZvaWQgdGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHRhc2tJZGVudGlm
aWVyLCBzaXplX3QsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpOwogICAgIHZvaWQgdGFza0RpZENvbXBs
ZXRlKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CisgICAgdm9pZCB0YXNrRGlkU3RvcExvYWRpbmcoV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQ
cm94eSYpOwogCiBwcml2YXRlOgogICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFz
a1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hl
bWVIYW5kbGVyVGFza1Byb3h5LmNwcAppbmRleCBjOGU2MzZkOGNkNGU5YTY0MmI4MzM5YTk2MDc5
M2E5ZWM1ZjE4ZmU4Li4xODFiYTE2YjgzYWM4MDRlNzhlMDY4Mjg3OTZhOWY5NDYwMjg2OTQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1l
SGFuZGxlclRhc2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3BwCkBAIC00Miw2ICs0Miw3IEBAIFdl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHko
V2ViVVJMU2NoZW1lSGFuZGxlclByCiAgICAgOiBtX3VybFNjaGVtZUhhbmRsZXIoaGFuZGxlcikK
ICAgICAsIG1fY29yZUxvYWRlcigmbG9hZGVyKQogICAgICwgbV9yZXF1ZXN0KGxvYWRlci5yZXF1
ZXN0KCkpCisgICAgLCBtX2lkZW50aWZpZXIobG9hZGVyLmlkZW50aWZpZXIoKSkKIHsKIH0KIApA
QCAtNTMsMTYgKzU0LDE3IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6c3Rh
cnRMb2FkaW5nKCkKIAogdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpzdG9wTG9h
ZGluZygpCiB7Ci0gICAgaWYgKCFtX2NvcmVMb2FkZXIpCi0gICAgICAgIHJldHVybjsKLQorICAg
IEFTU0VSVChtX2NvcmVMb2FkZXIpOwogICAgIG1fdXJsU2NoZW1lSGFuZGxlci5wYWdlKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdG9wVVJMU2NoZW1lSGFuZGxlclRhc2sobV91cmxT
Y2hlbWVIYW5kbGVyLmlkZW50aWZpZXIoKSwgbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKTsK
ICAgICBtX2NvcmVMb2FkZXIgPSBudWxscHRyOworCisgICAgLy8gVGhpcyBsaW5lIHdpbGwgcmVz
dWx0IGluIHRoaXMgYmVpbmcgZGVsZXRlZC4KKyAgICBtX3VybFNjaGVtZUhhbmRsZXIudGFza0Rp
ZFN0b3BMb2FkaW5nKCp0aGlzKTsKIH0KIAogdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1By
b3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7Ci0gICAgaWYgKCFtX2NvcmVMb2FkZXIpCisgICAgaWYgKCFoYXNMb2FkZXIoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9u
c2UpOwpAQCAtNzAsNyArNzIsNyBAQCB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6
OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZQogCiB2b2lkIFdl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBj
b25zdCB1aW50OF90KiBkYXRhKQogewotICAgIGlmICghbV9jb3JlTG9hZGVyKQorICAgIGlmICgh
aGFzTG9hZGVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29yZUxvYWRlci0+ZGlkUmVj
ZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUsIDAsIERh
dGFQYXlsb2FkVHlwZTo6RGF0YVBheWxvYWRCeXRlcyk7CkBAIC03OCw3ICs4MCw3IEBAIHZvaWQg
V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6ZGlkUmVjZWl2ZURhdGEoc2l6ZV90IHNpemUs
IGNvbnN0IHVpbnQ4X3QqIGRhCiAKIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6
ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgaWYgKCFtX2Nv
cmVMb2FkZXIpCisgICAgaWYgKCFoYXNMb2FkZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKGVycm9yLmlzTnVsbCgpKQpAQCAtODksNCArOTEsMTIgQEAgdm9pZCBXZWJVUkxTY2hlbWVI
YW5kbGVyVGFza1Byb3h5OjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
ICAgICBtX2NvcmVMb2FkZXIgPSBudWxscHRyOwogfQogCitib29sIFdlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrUHJveHk6Omhhc0xvYWRlcigpCit7CisgICAgaWYgKG1fY29yZUxvYWRlciAmJiBtX2Nv
cmVMb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgICAgIG1fY29yZUxvYWRlciA9
IG51bGxwdHI7CisKKyAgICByZXR1cm4gbV9jb3JlTG9hZGVyOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5oCmluZGV4IGY5N2YyNjM2NWVi
Yzc4OWMwN2QzMDU4OGQyYjIzMTQ3NzY1NGFhODcuLjE5ZTlmMTUxMmVhNzA5OWZhYzIzYTk4MTBj
NjAwM2QyZjg4MTk3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuaApAQCAtNTEs
MTEgKzUxLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHNpemVfdCwgY29u
c3QgdWludDhfdCogZGF0YSk7CiAgICAgdm9pZCBkaWRDb21wbGV0ZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CiAKKyAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKwogcHJpdmF0ZToKKyAgICBib29sIGhhc0xvYWRlcigp
OworCiAgICAgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5JiBtX3VybFNjaGVtZUhhbmRsZXI7CiAg
ICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiBtX2NvcmVMb2FkZXI7CiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKLQorICAgIHVuc2lnbmVkIGxvbmcgbV9p
ZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODBjY2JmMzRmZWRmZWIwMjYwN2E4
ODkzMDkwYThiODRmOTE1YWE3NC4uZjMzMWVmNGU1NWQwNGQ3M2E3Y2UwOWU0ODZlNGRjZjg2MWQ1
MTUwMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDE3LTA0LTE0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBGaXggYmFzaWMgV0tVUkxTY2hlbWVIYW5kbGVyIGJ1Z3MuCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY0NzU1OT4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzA4NjIKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVz
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
V0tVUkxTY2hlbWVIYW5kbGVyLTEubW06IEFkZGVkLgorICAgICAgICAoLVtTY2hlbWVIYW5kbGVy
IGluaXRXaXRoRGF0YTptaW1lVHlwZTpdKToKKyAgICAgICAgKC1bU2NoZW1lSGFuZGxlciBkZWFs
bG9jXSk6CisgICAgICAgICgtW1NjaGVtZUhhbmRsZXIgd2ViVmlldzpzdGFydFRhc2s6XSk6Cisg
ICAgICAgICgtW1NjaGVtZUhhbmRsZXIgd2ViVmlldzpzdG9wVGFzazpdKToKKyAgICAgICAgKFRF
U1QpOgorCiAyMDE3LTA0LTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQ2xlYW4gdXAgU2hhcmVkQnVmZmVyIHB1YmxpYyBmdW5jdGlvbnMK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmMwZGE3OWYyZGYwNTZkNTNmYTQyMDQzMzZiNjUx
ZmMyMzUxZjdkNy4uYzQyOGFjYmRhMzI2NGUzZmMwMDNhNzFiODBjMmM4NDdhYjEyYWQ0NCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1Miw2ICsxNTIsNyBAQAogCQk1MUIxRUU5NzFDODBG
QUVGMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjFFRTk1MUM4MEZBREQw
MDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgKi87IH07CiAJCTUxQkNFRTRF
MUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkNFRTRDMUM4
NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sICovOyB9OwogCQk1
MUJDRUU0RjFDODRGNTNCMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJD
RUU0RDFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCAqLzsg
fTsKKwkJNTFDNjgzREUxRUExMzRFODAwNjUwMTgzIC8qIFdLVVJMU2NoZW1lSGFuZGxlci0xLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDNjgzREQx
RUExMzREQjAwNjUwMTgzIC8qIFdLVVJMU2NoZW1lSGFuZGxlci0xLm1tICovOyB9OwogCQk1MUNE
MUM2QzFCMzhDRTQzMDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM2QTFCMzhDRTM2MDAxNDJDQTUgLyog
TW9kYWxBbGVydHMubW0gKi87IH07CiAJCTUxQ0QxQzcyMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2Rh
bC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0QxQzcxMUIzOEQ0ODQwMDE0
MkNBNSAvKiBtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sICovOyB9
OwogCQk1MUQxMjQ5ODFFNzYzQjAyMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ5NzFFNzYz
QUY4MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gKi87IH07CkBAIC0xMDcxLDYgKzEw
NzIsNyBAQAogCQk1MUJDRUU0OTFDODRGNEFGMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9j
ZXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5kZXhlZERC
TXVsdGlQcm9jZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJDRUU0QzFD
ODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNEQxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4
ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5k
ZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxQzY4M0REMUVBMTM0REIwMDY1MDE4MyAvKiBXS1VSTFNjaGVtZUhhbmRsZXItMS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9ICJXS1VSTFNjaGVtZUhhbmRsZXIt
MS5tbSI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0I0QUQ3MUIzQTA3OUMwMEMx
QjFDNiAvKiBNb2RhbEFsZXJ0c1NQSS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNb2RhbEFsZXJ0c1NQSS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxQ0QxQzZBMUIzOENFMzYwMDE0MkNBNSAvKiBNb2RhbEFsZXJ0cy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1vZGFsQWxlcnRzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MUNEMUM3MTFCMzhENDg0MDAxNDJDQTUgLyogbW9kYWwtYWxlcnRz
LWluLW5ldy1hYm91dC1ibGFuay13aW5kb3cuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJtb2RhbC1hbGVydHMt
aW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE3MDUsNiArMTcwNyw3IEBACiAJCQkJQTE0QUFCNjExRTc4RDdERTAwQzFBREMyIC8q
IFdLUERGVmlldy5tbSAqLywKIAkJCQkyRDAwMDY1RDFDMUY1ODk0MDA4OEU2QTcgLyogV0tQREZW
aWV3UmVzaXplQ3Jhc2gubW0gKi8sCiAJCQkJNUU0QjFEMkMxRDQwNEM2MTAwMDUzNjIxIC8qIFdL
U2Nyb2xsVmlld0RlbGVnYXRlQ3Jhc2gubW0gKi8sCisJCQkJNTFDNjgzREQxRUExMzREQjAwNjUw
MTgzIC8qIFdLVVJMU2NoZW1lSGFuZGxlci0xLm1tICovLAogCQkJCTVDRTM1NEQ4MUU3MEQ5QzMw
MEJFRkUzQiAvKiBXS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0gKi8sCiAJCQkJMkVGRjA2
RDYxRDhBRjM0QTAwMDRCQjMwIC8qIFdLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLm1tICovLAogCQkJ
CTdDNDE3RjMxMUQxOUUxNDgwMEI4RUY1MyAvKiBXS1dlYlZpZXdEZWZhdWx0TmF2aWdhdGlvbkRl
bGVnYXRlLm1tICovLApAQCAtMjkxMSw2ICsyOTE0LDcgQEAKIAkJCQlDRTA2REY5QjFFMTg1MUYy
MDBFNTcwQzkgLyogU2VjdXJpdHlPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTc2OUM1
MEIxRDlCMDAwMjAwMDg0N0ZCIC8qIFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdFQ0IxQTQxMUE3RTAwNDQ3QzRDIC8qIFNldEFuZFVwZGF0ZUNhY2hl
TW9kZWwubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MUM2ODNERTFFQTEzNEU4MDA2NTAxODMgLyog
V0tVUkxTY2hlbWVIYW5kbGVyLTEubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VDQzFBNDEx
QTdFMDA0NDdDNEMgLyogU2V0RG9jdW1lbnRVUkkubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Qzgz
RTA1MjFEMEE2NDE4MDBGRUJDRjMgLyogU2hhcmVkQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUExNzk5MTg4MUUxQzk5NEUwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXIubW0gaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZjY2Y5ZjAyNTE1
YTRhZGI3OTYwNGVhNjYyOTU2YWU5ZTMxMjdhMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCkBA
IC0wLDAgKzEsMTUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0IDxXZWJL
aXQvV0tVUkxTY2hlbWVIYW5kbGVyLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVUkxTY2hlbWVIYW5k
bGVyVGFzay5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisKKyNpZiBXS19BUElfRU5BQkxFRAorCitzdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3Nh
Z2U7CisKK0BpbnRlcmZhY2UgU2NoZW1lSGFuZGxlciA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhh
bmRsZXI+CitAcHJvcGVydHkgKHJlYWRvbmx5KSBOU011dGFibGVBcnJheTxOU1VSTCAqPiAqc3Rh
cnRlZFVSTHM7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBOU011dGFibGVBcnJheTxOU1VSTCAqPiAq
c3RvcHBlZFVSTHM7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRh
IG1pbWVUeXBlOihOU1N0cmluZyAqKWluTUlNRVR5cGU7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBTY2hlbWVIYW5kbGVyIHsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiByZXNvdXJjZURhdGE7Cisg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtaW1lVHlwZTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRGF0YTooTlNEYXRhICopZGF0YSBtaW1lVHlwZTooTlNTdHJpbmcgKilpbk1JTUVUeXBl
Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICByZXNvdXJjZURhdGEgPSBkYXRhOworICAgIG1pbWVUeXBlID0gaW5N
SU1FVHlwZTsKKyAgICBfc3RhcnRlZFVSTHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XTsKKyAgICBfc3RvcHBlZFVSTHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKwor
ICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX3N0YXJ0ZWRV
UkxzIHJlbGVhc2VdOworICAgIFtfc3RvcHBlZFVSTHMgcmVsZWFzZV07CisgICAgW3N1cGVyIGRl
YWxsb2NdOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRU
YXNrOihpZCA8V0tVUkxTY2hlbWVIYW5kbGVyVGFzaz4pdGFzaworeworICAgIFtfc3RhcnRlZFVS
THMgYWRkT2JqZWN0OnRhc2sucmVxdWVzdC5VUkxdOworCisgICAgLy8gQWx3YXlzIGZhaWwgdGhl
IGltYWdlIGxvYWQuCisgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nIGlz
RXF1YWxUb1N0cmluZzpAInRlc3Rpbmc6aW1hZ2UiXSkgeworICAgICAgICBbdGFzayBkaWRGYWls
V2l0aEVycm9yOltOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpAIlRlc3RXZWJLaXRBUEkiIGNvZGU6
MSB1c2VySW5mbzpuaWxdXTsKKyAgICAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiBy
ZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNr
LnJlcXVlc3QuVVJMIE1JTUVUeXBlOm1pbWVUeXBlLmdldCgpIGV4cGVjdGVkQ29udGVudExlbmd0
aDoxIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNl
OnJlc3BvbnNlLmdldCgpXTsKKyAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpyZXNvdXJjZURhdGEu
Z2V0KCldOworICAgIFt0YXNrIGRpZEZpbmlzaF07Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBzdG9wVGFzazooaWQgPFdLVVJMU2NoZW1lSGFuZGxlclRhc2s+KXRh
c2sKK3sKKyAgICBbX3N0b3BwZWRVUkxzIGFkZE9iamVjdDp0YXNrLnJlcXVlc3QuVVJMXTsKKwor
ICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IHRydWU7Cit9CisKK0BlbmQKKworc3RhdGljIGNv
bnN0IGNoYXIgbWFpbkJ5dGVzW10gPQorIjxodG1sPiIgXAorIjxpbWcgc3JjPSd0ZXN0aW5nOmlt
YWdlJz4iIFwKKyI8L2h0bWw+IjsKKworVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBCYXNpYykKK3sK
KyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKworICAgIFJldGFpblB0cjxXS1dl
YlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIFJldGFpblB0cjxTY2hlbWVIYW5kbGVy
PiBoYW5kbGVyID0gYWRvcHROUyhbW1NjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoRGF0YTpb
TlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKW1haW5CeXRlcyBsZW5ndGg6c2l6ZW9m
KG1haW5CeXRlcyldIG1pbWVUeXBlOkAidGV4dC9odG1sIl0pOworICAgIFtjb25maWd1cmF0aW9u
IHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0aW5n
Il07CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJ0ZXN0aW5nOm1haW4iXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisK
KyAgICBFWFBFQ1RfRVEoW2hhbmRsZXIuZ2V0KCkuc3RhcnRlZFVSTHMgY291bnRdLCAydSk7Cisg
ICAgRVhQRUNUX1RSVUUoW1toYW5kbGVyLmdldCgpLnN0YXJ0ZWRVUkxzIG9iamVjdEF0SW5kZXg6
MF0gaXNFcXVhbDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Rpbmc6bWFpbiJdXSk7CisgICAg
RVhQRUNUX1RSVUUoW1toYW5kbGVyLmdldCgpLnN0YXJ0ZWRVUkxzIG9iamVjdEF0SW5kZXg6MV0g
aXNFcXVhbDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Rpbmc6aW1hZ2UiXV0pOworICAgIEVY
UEVDVF9FUShbaGFuZGxlci5nZXQoKS5zdG9wcGVkVVJMcyBjb3VudF0sIDB1KTsKK30KKworVEVT
VChVUkxTY2hlbWVIYW5kbGVyLCBOb01JTUVUeXBlKQoreworICAgIC8vIFNpbmNlIHRoZXJlJ3Mg
bm8gTUlNRVR5cGUsIGFuZCBubyBOYXZpZ2F0aW9uRGVsZWdhdGUgdG8gdGVsbCBXZWJLaXQgdG8g
ZG8gdGhlIGxvYWQgYW55d2F5cywgV2ViS2l0IHdpbGwgaWdub3JlIChzaWxlbnRseSBmYWlsKSB0
aGUgbG9hZC4KKyAgICAvLyBUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGlzIGNvbW11bmljYXRl
ZCBiYWNrIHRvIHRoZSBVUkxTY2hlbWVIYW5kbGVyLgorCisgICAgcmVjZWl2ZWRTY3JpcHRNZXNz
YWdlID0gZmFsc2U7CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisKKyAgICBSZXRhaW5QdHI8U2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tT
Y2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9D
b3B5Oih2b2lkKiltYWluQnl0ZXMgbGVuZ3RoOnNpemVvZihtYWluQnl0ZXMpXSBtaW1lVHlwZTpu
aWxdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0
KCkgZm9yVVJMU2NoZW1lOkAidGVzdGluZyJdOworCisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdGluZzptYWluIl1dOworICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworCisgICAgRVhQRUNUX0VRKFtoYW5kbGVyLmdldCgpLnN0
YXJ0ZWRVUkxzIGNvdW50XSwgMXUpOworICAgIEVYUEVDVF9UUlVFKFtbaGFuZGxlci5nZXQoKS5z
dGFydGVkVVJMcyBvYmplY3RBdEluZGV4OjBdIGlzRXF1YWw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJ0ZXN0aW5nOm1haW4iXV0pOworICAgIEVYUEVDVF9FUShbaGFuZGxlci5nZXQoKS5zdG9wcGVk
VVJMcyBjb3VudF0sIDF1KTsKKyAgICBFWFBFQ1RfVFJVRShbW2hhbmRsZXIuZ2V0KCkuc3RvcHBl
ZFVSTHMgb2JqZWN0QXRJbmRleDowXSBpc0VxdWFsOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVz
dGluZzptYWluIl1dKTsKK30KKworCisjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>