<?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>146294</bug_id>
          
          <creation_ts>2015-06-24 15:45:28 -0700</creation_ts>
          <short_desc>Use CoreAnimation fences instead of synchronous IPC to synchronize resize</short_desc>
          <delta_ts>2015-07-17 18:45:32 -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>New Bugs</component>
          <version>528+ (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="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1104518</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-06-24 15:45:28 -0700</bug_when>
    <thetext>Use CoreAnimation fences instead of synchronous IPC to synchronize resize</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104520</commentid>
    <comment_count>1</comment_count>
      <attachid>255521</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-06-24 15:46:15 -0700</bug_when>
    <thetext>Created attachment 255521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105206</commentid>
    <comment_count>2</comment_count>
      <attachid>255521</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-27 14:42:03 -0700</bug_when>
    <thetext>Comment on attachment 255521
Patch

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

Looks OK. Some problems that need to be fixed before landing.

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:4438
&gt; +    // This SPI is only used on 10.9 and below, and is incompatible with the fence-based drawing area size synchronization in 10.10+.

Maybe ASSERT_NOT_REACHED?

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:4439
&gt; +#if __MAC_OS_X_VERSION_MIN_REQUIRED &lt;= 1090

Given the comment above, maybe #if !HAVE(COREANIMATION_FENCES) is a better thing to write here?

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:4454
&gt; +    // This SPI is only used on 10.9 and below, and is incompatible with the fence-based drawing area size synchronization in 10.10+.

Maybe ASSERT_NOT_REACHED?

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:4455
&gt; +#if __MAC_OS_X_VERSION_MIN_REQUIRED &lt;= 1090

Given the comment above, maybe #if !HAVE(COREANIMATION_FENCES) is a better thing to write here?

&gt; Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:168
&gt; +    m_webPageProxy.process().send(Messages::DrawingArea::UpdateGeometry(m_size, m_layerPosition, true, fencePort), m_webPageProxy.pageID());
&gt; +
&gt;  }

Stray blank line here. I suggest omitting it.

&gt; Source/WebKit2/WebProcess/WebPage/DrawingArea.h:35
&gt; +#include &lt;WebCore/MachSendRight.h&gt;

This needs to be inside PLATFORM(COCOA) to avoid breaking GTK and EFL builds.

I think it would be better just to forward declare as &quot;class MachSendRight&quot;, since we only need to compile &quot;const WebCore::MachSendRight&amp;&quot;, and a forward declaration is sufficient for that. And those don’t necessarily need to be guarded with PLATFORM(COCOA). I don’t mind leaving the #if out, although some prefer that because they think it’s worth the extra complexity and ugliness to guarantee a compile time error if we try to use the type name at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108152</commentid>
    <comment_count>3</comment_count>
      <attachid>256467</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-07-09 00:38:54 -0700</bug_when>
    <thetext>Created attachment 256467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108153</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-07-09 00:41:15 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:4439
&gt; &gt; +#if __MAC_OS_X_VERSION_MIN_REQUIRED &lt;= 1090
&gt; 
&gt; Given the comment above, maybe #if !HAVE(COREANIMATION_FENCES) is a better
&gt; thing to write here?

I didn&apos;t do this because the code is really not used on 10.10, and leaving it this way means we&apos;ll get to delete it sooner :)

I made all your other changes, and added a lot more code re: the invalidation of the fences if a sync message arrives.

I think this needs an andersca review because of the IPC changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108154</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-09 00:42:09 -0700</bug_when>
    <thetext>Attachment 256467 did not pass style-queue:


ERROR: Source/WebKit2/Platform/IPC/Connection.h:203:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.h:310:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.cpp:708:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108158</commentid>
    <comment_count>6</comment_count>
      <attachid>256468</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-07-09 00:56:04 -0700</bug_when>
    <thetext>Created attachment 256468
fix the build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108160</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-09 00:57:36 -0700</bug_when>
    <thetext>Attachment 256468 did not pass style-queue:


ERROR: Source/WebKit2/Platform/IPC/Connection.h:203:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.h:310:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.cpp:708:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108166</commentid>
    <comment_count>8</comment_count>
      <attachid>256471</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-07-09 01:41:47 -0700</bug_when>
    <thetext>Created attachment 256471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108167</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-09 01:44:17 -0700</bug_when>
    <thetext>Attachment 256471 did not pass style-queue:


ERROR: Source/WebKit2/Platform/IPC/Connection.h:203:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.h:310:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.cpp:708:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108516</commentid>
    <comment_count>10</comment_count>
      <attachid>256471</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-07-09 19:51:30 -0700</bug_when>
    <thetext>Comment on attachment 256471
Patch

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

&gt; Source/WebCore/platform/cocoa/MachSendRight.h:38
&gt; +    WEBCORE_EXPORT MachSendRight() = default;

This doesn&apos;t need WEBCORE_EXPORT.

&gt; Source/WebKit2/Platform/IPC/Connection.cpp:221
&gt; +    , m_incomingSyncMessageCallbackQueue(WorkQueue::create(&quot;com.apple.WebKit.IPC.IncomingSyncMessageCallbackQueue&quot;))

This should be made on demand, there&apos;s no point in creating it for all the various connections that don&apos;t use this feature.

&gt; Source/WebKit2/Platform/IPC/Connection.cpp:713
&gt; +    std::lock_guard&lt;std::mutex&gt; lock(m_incomingSyncMessageCallbackMutex);
&gt; +    m_incomingSyncMessageCallbacks.add(m_nextIncomingSyncMessageCallbackID, callback);
&gt; +
&gt; +    return m_nextIncomingSyncMessageCallbackID++;

Please change this to get the callback ID before incrementing it so you can make it start at 0.

&gt; Source/WebKit2/Platform/IPC/Connection.cpp:732
&gt; +    for (auto it = m_incomingMessages.begin(), end = m_incomingMessages.end(); it != end; ++it) {
&gt; +        std::unique_ptr&lt;MessageDecoder&gt;&amp; message = *it;
&gt; +        if (message-&gt;isSyncMessage())
&gt; +            hasIncomingSyncMessage = true;
&gt; +    }

Modern for-loop please!

&gt; Source/WebKit2/Platform/IPC/Connection.h:312
&gt; +    uint64_t m_nextIncomingSyncMessageCallbackID { 1 };

Should start at zero here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108523</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-07-09 20:46:52 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/186662</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108778</commentid>
    <comment_count>12</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-07-10 15:02:30 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108779</commentid>
    <comment_count>13</comment_count>
      <attachid>256617</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-07-10 15:02:33 -0700</bug_when>
    <thetext>Created attachment 256617
tiny followup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108786</commentid>
    <comment_count>14</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-07-10 15:30:47 -0700</bug_when>
    <thetext>And http://trac.webkit.org/changeset/186693</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255521</attachid>
            <date>2015-06-24 15:46:15 -0700</date>
            <delta_ts>2015-07-09 00:38:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146294-20150624154531.patch</filename>
            <type>text/plain</type>
            <size>17025</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1ODg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVlN2M1MzVmOTY3Mzc3NzI3ZjljYzI3
ZTg5NTRmYWY0Y2YzNGU0NTcuLmZlMzkzNWI3NjY0ZmIxNDZlMDVhOGYyMjY3MTJkM2I0NDQxZDNh
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDYtMjQgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENvcmVBbmltYXRpb24gZmVuY2VzIGlu
c3RlYWQgb2Ygc3luY2hyb25vdXMgSVBDIHRvIHN5bmNocm9uaXplIHJlc2l6ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2Mjk0CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yMTA5MDE5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICBBZGQgSEFWRShDT1JF
QU5JTUFUSU9OX0ZFTkNFUykKKwogMjAxNS0wNi0yMiAgWXVuUWlhbmcgU3UgIDx3enNzeXFhQGdt
YWlsLmNvbT4KIAogICAgICAgICBbV1RGXSBQbGF0Zm9ybS5oOiB1c2UgX0FCSTY0IGluc3RlYWQg
b2YgX01JUFNfU0lNX0FCSTY0IHRvIGRldGVybWluZSBNSVBTIE42NApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQx
ODEzODA4NmU5NjgzYTNkMzdjNGFiZjEyZWM5OGI2YTg0OTNkZWIuLjhjYzJjN2M4ZTI3ZGYzNTQ0
YzA4MWExNDVkNzQ3OGVlNTJhZDI0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAx
NS0wNi0yNCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAg
ICBVc2UgQ29yZUFuaW1hdGlvbiBmZW5jZXMgaW5zdGVhZCBvZiBzeW5jaHJvbm91cyBJUEMgdG8g
c3luY2hyb25pemUgcmVzaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDYyOTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIxMDkwMTkzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlY2F1c2Ugb2Yg
Y2hhbmdlcyBpbiB1bmRlcmx5aW5nIGZyYW1ld29ya3MsIHdlIGNhbiBubyBsb25nZXIgZGVwZW5k
IG9uCisgICAgICAgIGJsb2NraW5nIHRoZSBVSSBwcm9jZXNzIG1haW4gdGhyZWFkIHRvIGJlIHN1
ZmZpY2llbnQgdG8gc3luY2hyb25pemUKKyAgICAgICAgVUkgcHJvY2VzcyBDQSBjb21taXRzIHdp
dGggY29tbWl0cyBjb21pbmcgZnJvbSB0aGUgV2ViIHByb2Nlc3MuCisKKyAgICAgICAgSW5zdGVh
ZCwgd2UgaGF2ZSB0byB1c2UgQ29yZUFuaW1hdGlvbiBmZW5jZXMgdG8gcGVyZm9ybSB0aGlzIHN5
bmNocm9uaXphdGlvbi4KKyAgICAgICAgSW5zdGVhZCBvZiBibG9ja2luZyBpbnNpZGUgd2FpdEZv
ckFuZERpc3BhdGNoSW1tZWRpYXRlbHksIHdlJ2xsIGVuZCB1cAorICAgICAgICBibG9ja2luZyBk
dXJpbmcgdGhlIENBIGNvbW1pdC4KKworICAgICAgICAqIFBsYXRmb3JtL21hYy9MYXllckhvc3Rp
bmdDb250ZXh0Lm1tOgorICAgICAgICBVc2UgSEFWRShDT1JFQU5JTUFUSU9OX0ZFTkNFUykuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmll
dyBmb3JjZUFzeW5jRHJhd2luZ0FyZWFTaXplVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1ZpZXcg
d2FpdEZvckFzeW5jRHJhd2luZ0FyZWFTaXplVXBkYXRlXSk6CisgICAgICAgIFRoZXNlIGFyZSBu
byBsb25nZXIgdXNlZDsgZG8gbm90aGluZyBvbiAxMC4xMCsuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW06CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OnNlbmRVcGRhdGVHZW9tZXRyeSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChX
ZWJLaXQ6OkRyYXdpbmdBcmVhOjp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2NhbGVWaWV3
QW5kVXBkYXRlR2VvbWV0cnlGZW5jZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlR2VvbWV0cnkpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoK
KyAgICAgICAgQWRkIGEgTWFjaFNlbmRSaWdodCBwYXJhbWV0ZXIgdG8gVXBkYXRlR2VvbWV0cnks
IHNvIHRoYXQgd2UgY2FuIHNlbmQgYWxvbmcKKyAgICAgICAgYSBmZW5jZSBwb3J0IHdpdGggdGhl
IGdlb21ldHJ5IHVwZGF0ZSBpZiBuZWVkZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0
OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlR2VvbWV0cnkpOgorICAgICAg
ICBBcHBseSB0aGUgaW5jb21pbmcgZmVuY2Ugc28gdGhhdCBnZW9tZXRyeSBjaGFuZ2VzIHdpbGwg
YmUgc3luY2hyb25pemVkIGJldHdlZW4gcHJvY2Vzc2VzLgorCisgICAgICAgICogVUlQcm9jZXNz
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yUG9zc2libGVH
ZW9tZXRyeVVwZGF0ZSk6CisgICAgICAgIERvbid0IHdhaXQgZm9yIERpZFVwZGF0ZUdlb21ldHJ5
IHRvIGNvbWUgaW4gaWYgd2UncmUgdXNpbmcgZmVuY2VzIHRvIGFjaGlldmUgdGhlIHNhbWUgdGhp
bmcuCisKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94
eTo6c2VuZFVwZGF0ZUdlb21ldHJ5KToKKyAgICAgICAgQ3JlYXRlIGFuZCBibG9jayB1cyBvbiBh
IGZlbmNlIGFuZCBzZW5kIGl0IGFsb25nIHdpdGggdGhlIGdlb21ldHJ5IHVwZGF0ZS4KKwogMjAx
NS0wNi0yMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBvcGVyYXRvciEgYW5kIGNvcHkvbW92ZSBjb25zdHJ1Y3RvcnMgdG8gV2Vha09iakNQdHIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCmluZGV4IGI1ZTk4NTljYzQ1OTg2Mjg3MmEzMWJkNDE1YmU0NGVjNWMyNzQ4MzAu
Ljk0YTNhMGUxODk1YzY5ZDM5N2ZmOWJlYWI2MjE1YWRlZTVlYjFhOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApA
QCAtMTE1MSw0ICsxMTUxLDggQEAKICNkZWZpbmUgRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9N
T0RFIDEKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMCkKKyNkZWZpbmUgSEFWRV9D
T1JFQU5JTUFUSU9OX0ZFTkNFUyAxCisjZW5kaWYKKwogI2VuZGlmIC8qIFdURl9QbGF0Zm9ybV9o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5n
Q29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250
ZXh0Lm1tCmluZGV4IDgyODZjZjcwYjBhYmIwNmMwYjNjMzFkZjk2ZTA5ODQ1OWNlY2Q4YzYuLmI2
ZGNmNjQyZGM4YjgxZDNiOGEwOGQ2ZGRiMTRiMGIyZWJiMTk5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCkBAIC0xMDIsNyAr
MTAyLDcgQEAgQ0dDb2xvclNwYWNlUmVmIExheWVySG9zdGluZ0NvbnRleHQ6OmNvbG9yU3BhY2Uo
KSBjb25zdAogICAgIHJldHVybiBbbV9jb250ZXh0IGNvbG9yU3BhY2VdOwogfQogCi0jaWYgUExB
VEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMAor
I2lmIEhBVkUoQ09SRUFOSU1BVElPTl9GRU5DRVMpCiB2b2lkIExheWVySG9zdGluZ0NvbnRleHQ6
OnNldEZlbmNlUG9ydChtYWNoX3BvcnRfdCBmZW5jZVBvcnQpCiB7CiAgICAgW21fY29udGV4dCBz
ZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlldy5tbQppbmRleCBhYWIzOTg4NWM0ZjlmNjNmYzBhMjNlZWYxOTA0MDRiMzg1ZmY5Y2Ix
Li41OTM1ODNiNzNhYTAwZDk3ZGY4ZDU1MjM4ZjI3Y2RmNGQ1ZWM1MTM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC00NDM1LDYgKzQ0MzUsOCBAQCBz
dGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpw
YXRoKQogLy8gZnJhbWUgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGNvbnRlbnRBbmNob3IuCiAt
ICh2b2lkKWZvcmNlQXN5bmNEcmF3aW5nQXJlYVNpemVVcGRhdGU6KE5TU2l6ZSlzaXplCiB7Cisg
ICAgLy8gVGhpcyBTUEkgaXMgb25seSB1c2VkIG9uIDEwLjkgYW5kIGJlbG93LCBhbmQgaXMgaW5j
b21wYXRpYmxlIHdpdGggdGhlIGZlbmNlLWJhc2VkIGRyYXdpbmcgYXJlYSBzaXplIHN5bmNocm9u
aXphdGlvbiBpbiAxMC4xMCsuCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8
PSAxMDkwCiAgICAgaWYgKF9kYXRhLT5fY2xpcHNUb1Zpc2libGVSZWN0KQogICAgICAgICBbc2Vs
ZiBfdXBkYXRlVmlld0V4cG9zZWRSZWN0XTsKICAgICBbc2VsZiBfc2V0RHJhd2luZ0FyZWFTaXpl
OnNpemVdOwpAQCAtNDQ0NCwxMCArNDQ0NiwxMyBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRo
VW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQogICAgIC8vIHRoZSBkcmF3aW5n
IGFyZWEgc2l6ZSBzdWNoIHRoYXQgdGhlIGxhdGVzdCB1cGRhdGUgaXMgc2VudC4KICAgICBpZiAo
RHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0FyZWEgPSBfZGF0YS0+X3BhZ2UtPmRyYXdpbmdBcmVh
KCkpCiAgICAgICAgIGRyYXdpbmdBcmVhLT53YWl0Rm9yUG9zc2libGVHZW9tZXRyeVVwZGF0ZShz
dGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzOjp6ZXJvKCkpOworI2VuZGlmCiB9CiAKIC0gKHZvaWQp
d2FpdEZvckFzeW5jRHJhd2luZ0FyZWFTaXplVXBkYXRlCiB7CisgICAgLy8gVGhpcyBTUEkgaXMg
b25seSB1c2VkIG9uIDEwLjkgYW5kIGJlbG93LCBhbmQgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhl
IGZlbmNlLWJhc2VkIGRyYXdpbmcgYXJlYSBzaXplIHN5bmNocm9uaXphdGlvbiBpbiAxMC4xMCsu
CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAxMDkwCiAgICAgaWYgKERy
YXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gX2RhdGEtPl9wYWdlLT5kcmF3aW5nQXJlYSgp
KSB7CiAgICAgICAgIC8vIElmIGEgZ2VvbWV0cnkgdXBkYXRlIGlzIHN0aWxsIHBlbmRpbmcgdGhl
biB0aGUgYWN0aW9uIG9mIHJlY2VpdmluZyB0aGUKICAgICAgICAgLy8gZmlyc3QgZ2VvbWV0cnkg
dXBkYXRlIG1heSByZXN1bHQgaW4gYW5vdGhlciB1cGRhdGUgYmVpbmcgc2NoZWR1bGVkIC0KQEAg
LTQ0NTUsNiArNDQ2MCw3IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFt
ZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgICAgIGRyYXdpbmdBcmVhLT53YWl0Rm9yUG9z
c2libGVHZW9tZXRyeVVwZGF0ZShEcmF3aW5nQXJlYVByb3h5OjpkaWRVcGRhdGVCYWNraW5nU3Rv
cmVTdGF0ZVRpbWVvdXQoKSAvIDIpOwogICAgICAgICBkcmF3aW5nQXJlYS0+d2FpdEZvclBvc3Np
YmxlR2VvbWV0cnlVcGRhdGUoRHJhd2luZ0FyZWFQcm94eTo6ZGlkVXBkYXRlQmFja2luZ1N0b3Jl
U3RhdGVUaW1lb3V0KCkgLyAyKTsKICAgICB9CisjZW5kaWYKIH0KIAogLSAoQk9PTClpc1VzaW5n
VUlTaWRlQ29tcG9zaXRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCA0YWNk
YzA5MjcxNjIyYTUxMTJlMjZmOTFmN2UxMzE4Njg3MTM4NTM4Li41ODg0NTU4MmM1MGZlYTZmODM3
NTVhOTAxMjM0NDIwYzg2ZDkxODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBA
IC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgPFF1
YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2VQb29sLmg+
CisjaW1wb3J0IDxXZWJDb3JlL01hY2hTZW5kUmlnaHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJUEM7
CkBAIC0xNzQsNyArMTc1LDcgQEAgRmxvYXRSZWN0IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk6OnNjYWxlZEV4cG9zZWRSZWN0KCkgY29uc3QKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eTo6c2VuZFVwZGF0ZUdlb21ldHJ5KCkKIHsKICAgICBtX2xhc3RTZW50U2l6
ZSA9IG1fc2l6ZTsKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
RHJhd2luZ0FyZWE6OlVwZGF0ZUdlb21ldHJ5KG1fc2l6ZSwgSW50U2l6ZSgpLCBmYWxzZSksIG1f
d2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OlVwZGF0ZUdlb21ldHJ5KG1fc2l6ZSwgSW50U2l6ZSgp
LCBmYWxzZSwgTWFjaFNlbmRSaWdodCgpKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOwogICAg
IG1faXNXYWl0aW5nRm9yRGlkVXBkYXRlR2VvbWV0cnkgPSB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhUHJveHkubW0KaW5kZXggNjc0YTk0NjI3NWMyOTg5YWNiYTYxZTc0OTMx
MjBkYzFjY2VmNGNhNS4uYzVlMjQzM2IzNTA1NmM0ZTAzMzgyOGMzMTc5MTMwNjQzZmRjNWMwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMzQsNiArMzQsOCBAQAog
I2ltcG9ydCAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAj
aW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTWFjaFNlbmRSaWdo
dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9RdWFydHpDb3JlU1BJLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBJUEM7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTcwLDYgKzcyLDcgQEAgdm9pZCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjpzaXplRGlkQ2hhbmdlKCkKIAogdm9p
ZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yUG9zc2libGVHZW9t
ZXRyeVVwZGF0ZShzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVvdXQpCiB7CisjaWYgIUhB
VkUoQ09SRUFOSU1BVElPTl9GRU5DRVMpCiAgICAgaWYgKCFtX2lzV2FpdGluZ0ZvckRpZFVwZGF0
ZUdlb21ldHJ5KQogICAgICAgICByZXR1cm47CiAKQEAgLTc3LDYgKzgwLDcgQEAgdm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yUG9zc2libGVHZW9tZXRyeVVw
ZGF0ZShzdGQ6OmNocm8KICAgICAgICAgcmV0dXJuOwogCiAgICAgbV93ZWJQYWdlUHJveHkucHJv
Y2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2Fn
ZXM6OkRyYXdpbmdBcmVhUHJveHk6OkRpZFVwZGF0ZUdlb21ldHJ5PihtX3dlYlBhZ2VQcm94eS5w
YWdlSUQoKSwgdGltZW91dCwgSW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsK
KyNlbmRpZgogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmNv
bG9yU3BhY2VEaWRDaGFuZ2UoKQpAQCAtMTUxLDcgKzE1NSwxNiBAQCB2b2lkIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OnNlbmRVcGRhdGVHZW9tZXRyeSgpCiAgICAgQVNTRVJU
KCFtX2lzV2FpdGluZ0ZvckRpZFVwZGF0ZUdlb21ldHJ5KTsKIAogICAgIHdpbGxTZW5kVXBkYXRl
R2VvbWV0cnkoKTsKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
RHJhd2luZ0FyZWE6OlVwZGF0ZUdlb21ldHJ5KG1fc2l6ZSwgSW50U2l6ZSgpLCB0cnVlKSwgbV93
ZWJQYWdlUHJveHkucGFnZUlEKCkpOworCisgICAgTWFjaFNlbmRSaWdodCBmZW5jZVBvcnQ7Cisj
aWYgSEFWRShDT1JFQU5JTUFUSU9OX0ZFTkNFUykKKyAgICBpZiAoQ0FDb250ZXh0ICpyb290TGF5
ZXJDb250ZXh0ID0gW2FzTGF5ZXIobV93ZWJQYWdlUHJveHkuYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z1Jvb3RMYXllcigpKSBjb250ZXh0XSkgeworICAgICAgICBmZW5jZVBvcnQgPSBNYWNoU2VuZFJp
Z2h0OjphZG9wdChbcm9vdExheWVyQ29udGV4dCBjcmVhdGVGZW5jZVBvcnRdKTsKKyAgICAgICAg
W3Jvb3RMYXllckNvbnRleHQgc2V0RmVuY2VQb3J0OmZlbmNlUG9ydC5zZW5kUmlnaHQoKV07Cisg
ICAgfQorI2VuZGlmCisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OkRyYXdpbmdBcmVhOjpVcGRhdGVHZW9tZXRyeShtX3NpemUsIG1fbGF5ZXJQb3NpdGlvbiwgdHJ1
ZSwgZmVuY2VQb3J0KSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOworCiB9CiAKIHZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6YWRqdXN0VHJhbnNpZW50Wm9vbShkb3Vi
bGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA1NDdhOTYxZDdmZTA2MWEyZDEyZDAxNDI2
ODE0YmI1M2U3YTFhM2QyLi4yOGRhNzkwOWQ1NDM5MWQwM2IyMmI5MzE5NDc5ZDQxOTAxZmJlNWJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
aApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXllckZsdXNoVGhy
b3R0bGVTdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWFjaFNlbmRSaWdodC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdTdGF0
ZS5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CkBAIC0xMzEsNyArMTMyLDcgQEAgcHVibGljOgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gVXNlZCBieSBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS4KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2VvbWV0cnkoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgdmlld1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGxheWVyUG9zaXRp
b24sIGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
R2VvbWV0cnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIGxheWVyUG9zaXRpb24sIGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5LCBjb25zdCBX
ZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiBmZW5jZVBvcnQpIHsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHJlcGx5V2l0aEZlbmNlQWZ0ZXJOZXh0Rmx1c2godWludDY0X3QgY2FsbGJhY2tJRCkgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KaW5kZXggNWY2NjVm
ZWY0ZWI2OWE4ZWE3ZDcxMjRjMTkwOTE1M2FlZjUyYTc0My4uODRjNjcyMmIxMzNlYjY3YTE1MjRm
ZTg0MWViMTU5MTcwZWViMzRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYsNyBA
QCBtZXNzYWdlcyAtPiBEcmF3aW5nQXJlYSB7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAv
LyBVc2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLgotICAgIFVwZGF0ZUdlb21l
dHJ5KFdlYkNvcmU6OkludFNpemUgdmlld1NpemUsIFdlYkNvcmU6OkludFNpemUgbGF5ZXJQb3Np
dGlvbiwgYm9vbCBmbHVzaFN5bmNocm9ub3VzbHkpCisgICAgVXBkYXRlR2VvbWV0cnkoV2ViQ29y
ZTo6SW50U2l6ZSB2aWV3U2l6ZSwgV2ViQ29yZTo6SW50U2l6ZSBsYXllclBvc2l0aW9uLCBib29s
IGZsdXNoU3luY2hyb25vdXNseSwgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCBmZW5jZVBvcnQpCiAg
ICAgU2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiAgICAgU2V0
Q29sb3JTcGFjZShzdHJ1Y3QgV2ViS2l0OjpDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKQogICAg
IFNldEV4cG9zZWRSZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCBleHBvc2VkUmVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3ZDlmZDljMzIz
MjZlZWNmMjU3ZWI0ZWE1Yjk3OTZlMzZjZjRmNzdkLi5kMTQwNTYzYjQ2ZjJlOTM1NjkwYzkzYmMx
M2NmYjRhOTQ3MzY2MjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0xNDcwLDcgKzE0NzAsNyBAQCB2b2lkIFdlYlBhZ2U6OnNjYWxlVmll
dyhkb3VibGUgc2NhbGUpCiB2b2lkIFdlYlBhZ2U6OnNjYWxlVmlld0FuZFVwZGF0ZUdlb21ldHJ5
RmVuY2VkKGRvdWJsZSBzY2FsZSwgSW50U2l6ZSB2aWV3U2l6ZSwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKIHsKICAgICBzY2FsZVZpZXcoc2NhbGUpOwotICAgIG1fZHJhd2luZ0FyZWEtPnVwZGF0ZUdl
b21ldHJ5KHZpZXdTaXplLCBJbnRTaXplKCksIGZhbHNlKTsKKyAgICBtX2RyYXdpbmdBcmVhLT51
cGRhdGVHZW9tZXRyeSh2aWV3U2l6ZSwgSW50U2l6ZSgpLCBmYWxzZSwgTWFjaFNlbmRSaWdodCgp
KTsKICAgICBtX2RyYXdpbmdBcmVhLT5yZXBseVdpdGhGZW5jZUFmdGVyTmV4dEZsdXNoKGNhbGxi
YWNrSUQpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5k
ZXggOTYzNzhmYWU5OWZiZjc5Nzk2YmViOWVhNmE2MjZjMGQ1NDg0ODU4OC4uYWFmNjdkOWIyZTA1
ODU4YmFkNjA5ZmQxOGI1Yjg0NDFmZTFkOTVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNw
bGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlR2VvbWV0cnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIGxheWVyUG9zaXRpb24sIGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5KSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2VvbWV0cnkoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgdmlld1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGxheWVyUG9zaXRpb24s
IGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5LCBjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiBm
ZW5jZVBvcnQpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
RmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggOTgyYWU4NTdl
MmU4N2Q2MDJlMzM5Y2U3NjYwNzdhMjIxNTQ2ZTM4NC4uYmQ3ZGIyYmY0MmJhN2Y4MTIyYjhhYzNk
Mjc1ZTA4YzQxOGJmODM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1t
CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6c2V0
Um9vdENvbXBvc2l0aW5nTGF5ZXIoR3JhcGhpY3NMYXllciogcm9vdExheWUKICAgICBzY2hlZHVs
ZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpOwogfQogCi12b2lkIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjp1cGRhdGVHZW9tZXRyeShjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSwgY29uc3QgSW50
U2l6ZSYgbGF5ZXJQb3NpdGlvbiwgYm9vbCBmbHVzaFN5bmNocm9ub3VzbHkpCit2b2lkIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVHZW9tZXRyeShjb25zdCBJbnRTaXplJiB2aWV3
U2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJQb3NpdGlvbiwgYm9vbCBmbHVzaFN5bmNocm9ub3Vz
bHksIGNvbnN0IFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQmKQogewogICAgIG1fdmlld1NpemUgPSB2
aWV3U2l6ZTsKICAgICBtX3dlYlBhZ2Uuc2V0U2l6ZSh2aWV3U2l6ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKaW5kZXggZWE4NDQxYTdhMjgzNWY3MTIwMWUzOWM5
YzE3ZjhjMWVkYWMwZTg2Yi4uMGFiZWUyM2VhY2M5NDViOTMwYzk0NDA0ZjYyMGNjYjE2YjlhNzc3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaApAQCAtOTIsNyAr
OTIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBmbHVzaExheWVycygpIG92ZXJyaWRl
OwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2Vv
bWV0cnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIGxheWVyUG9zaXRpb24sIGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5KSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2VvbWV0cnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
dmlld1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGxheWVyUG9zaXRpb24sIGJvb2wgZmx1
c2hTeW5jaHJvbm91c2x5LCBjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiBmZW5jZVBvcnQp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdXNwZW5kUGFpbnRpbmcoKTsKICAgICB2b2lkIHJlc3VtZVBh
aW50aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRl
eCBlYTJkMzI4MmYyYWEzOTdiMTgwNDdkYmYzOTI5ODBkYzczYzYxZDg3Li5lNmZlODQ3MDQwM2Jm
ZDg2YjYxZWEzYjg4MDAwY2U2NzVmNzQzMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEubW0KQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVTY3JvbGxlZEV4cG9zZWRSZWN0KCkKICAgICBmcmFtZVZp
ZXctPnNldEV4cG9zZWRSZWN0KG1fc2Nyb2xsZWRFeHBvc2VkUmVjdCk7CiB9CiAKLXZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZUdlb21ldHJ5KGNvbnN0IEludFNpemUm
IHZpZXdTaXplLCBjb25zdCBJbnRTaXplJiBsYXllclBvc2l0aW9uLCBib29sIGZsdXNoU3luY2hy
b25vdXNseSkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZUdlb21l
dHJ5KGNvbnN0IEludFNpemUmIHZpZXdTaXplLCBjb25zdCBJbnRTaXplJiBsYXllclBvc2l0aW9u
LCBib29sIGZsdXNoU3luY2hyb25vdXNseSwgY29uc3QgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCYg
ZmVuY2VQb3J0KQogewogICAgIG1faW5VcGRhdGVHZW9tZXRyeSA9IHRydWU7CiAKQEAgLTUxOSwx
MiArNTE5LDE5IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZUdl
b21ldHJ5KGNvbnN0IEludFNpemUmIHZpZXdTaXplLCBjb25zCiAKICAgICBpZiAoZmx1c2hTeW5j
aHJvbm91c2x5KSB7CiAgICAgICAgIFtDQVRyYW5zYWN0aW9uIGZsdXNoXTsKKyNpZiAhSEFWRShD
T1JFQU5JTUFUSU9OX0ZFTkNFUykKKyAgICAgICAgLy8gV2UgY2FuJ3Qgc3luY2hyb25pemUgaGVy
ZSBpZiB3ZSdyZSB1c2luZyBmZW5jZXMgb3Igd2UnbGwgYmxvdyB0aGUgZmVuY2UgZXZlcnkgdGlt
ZSAoYW5kIHdlIGRvbid0IG5lZWQgdG8pLgogICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzeW5jaHJv
bml6ZV07CisjZW5kaWYKICAgICB9CiAKICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6RHJh
d2luZ0FyZWFQcm94eTo6RGlkVXBkYXRlR2VvbWV0cnkoKSk7CiAKICAgICBtX2luVXBkYXRlR2Vv
bWV0cnkgPSBmYWxzZTsKKworI2lmIEhBVkUoQ09SRUFOSU1BVElPTl9GRU5DRVMpCisgICAgbV9s
YXllckhvc3RpbmdDb250ZXh0LT5zZXRGZW5jZVBvcnQoZmVuY2VQb3J0LnNlbmRSaWdodCgpKTsK
KyNlbmRpZgogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXREZXZp
Y2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256467</attachid>
            <date>2015-07-09 00:38:54 -0700</date>
            <delta_ts>2015-07-09 00:56:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146294-20150709003753.patch</filename>
            <type>text/plain</type>
            <size>26824</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhkYzM2ZGVlZTQ1ZDZhYjhiZWM2ZDgz
NmI1ZjQ0NDI0MWMxZDI2ODUuLmE5ODVkZmM1NTNhMWE2OGNmNzBhMmViNmU4ODUyYWMyY2E5MGRl
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDctMDggIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENvcmVBbmltYXRpb24gZmVuY2VzIGlu
c3RlYWQgb2Ygc3luY2hyb25vdXMgSVBDIHRvIHN5bmNocm9uaXplIHJlc2l6ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2Mjk0CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yMTA5MDE5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICBBZGQgSEFWRShDT1JF
QU5JTUFUSU9OX0ZFTkNFUykKKwogMjAxNS0wNy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIERyb3AgUmVmUHRyOjpjbGVhcigpIG1ldGhvZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGE1ZmY0ZDljNWU5Y2Y1ODI2YmM4MTY2ZWJjZjc3NTUwNDA5OTYzMjkuLjJlNmYxOGQ2NzA4
ZDMwNWM3ZWRlODJlNTZhMGFkOTY3MTNjY2NkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxNS0wNy0wOSAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgVXNlIENvcmVBbmltYXRpb24gZmVuY2VzIGluc3RlYWQgb2Ygc3luY2hyb25v
dXMgSVBDIHRvIHN5bmNocm9uaXplIHJlc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2Mjk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTA5
MDE5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBsYXRmb3JtL2NvY29hL01hY2hTZW5kUmlnaHQuaDoKKyAgICAgICAgRXhwb3J0IHNvbWUgY29u
c3RydWN0b3JzLgorCisgICAgICAgICogcGxhdGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEku
aDoKKyAgICAgICAgQWRkIHNvbWUgU1BJLgorCiAyMDE1LTA3LTA4ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIFBpbmdMb2FkZXJzIHRvIHRoZSBOZXR3
b3JraW5nUHJvY2Vzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1NzgxOWUwMWE1ZTE5ZTQxYTFiNmQwNWNlYjNk
NGE1OTAxYmYyZmQzLi4zYThkZWVkN2UyYWRiMTRhYTMzNjAwOTFjMjVlMTJlMmQ4OTQ2YzllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsNzAgQEAKIDIwMTUtMDctMDggIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIENvcmVBbmltYXRpb24gZmVuY2Vz
IGluc3RlYWQgb2Ygc3luY2hyb25vdXMgSVBDIHRvIHN5bmNocm9uaXplIHJlc2l6ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2Mjk0CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yMTA5MDE5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBCZWNhdXNlIG9mIGNoYW5nZXMgaW4gdW5kZXJseWluZyBmcmFt
ZXdvcmtzLCB3ZSBjYW4gbm8gbG9uZ2VyIGRlcGVuZCBvbgorICAgICAgICBibG9ja2luZyB0aGUg
VUkgcHJvY2VzcyBtYWluIHRocmVhZCB0byBiZSBzdWZmaWNpZW50IHRvIHN5bmNocm9uaXplCisg
ICAgICAgIFVJIHByb2Nlc3MgQ0EgY29tbWl0cyB3aXRoIGNvbW1pdHMgY29taW5nIGZyb20gdGhl
IFdlYiBwcm9jZXNzLgorCisgICAgICAgIEluc3RlYWQsIHdlIGhhdmUgdG8gdXNlIENvcmVBbmlt
YXRpb24gZmVuY2VzIHRvIHBlcmZvcm0gdGhpcyBzeW5jaHJvbml6YXRpb24uCisgICAgICAgIElu
c3RlYWQgb2YgYmxvY2tpbmcgaW5zaWRlIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5LCB3
ZSdsbCBlbmQgdXAKKyAgICAgICAgYmxvY2tpbmcgZHVyaW5nIHRoZSBDQSBjb21taXQuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbToKKyAgICAgICAgVXNl
IEhBVkUoQ09SRUFOSU1BVElPTl9GRU5DRVMpLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246Omluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2spOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp1bmluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2Fs
bGJhY2spOgorICAgICAgICBLZWVwIHRyYWNrIG9mIGEgc2V0IG9mIGluY29taW5nIHN5bmMgbWVz
c2FnZSBjYWxsYmFja3MsIGFuZCBmaXJlIHRoZW0KKyAgICAgICAgKG9uIGFub3RoZXIgcXVldWUp
IHdoZW4gYSBzeW5jIG1lc3NhZ2UgYXJyaXZlcy4KKworICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpoYXNJbmNvbWluZ1N5bmNNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oOgorICAgICAgICBBZGQgYSB3YXkgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzeW5j
IG1lc3NhZ2VzIGluIHRoZSBxdWV1ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IGZvcmNlQXN5bmNEcmF3aW5nQXJlYVNpemVVcGRh
dGU6XSk6CisgICAgICAgICgtW1dLVmlldyB3YWl0Rm9yQXN5bmNEcmF3aW5nQXJlYVNpemVVcGRh
dGVdKToKKyAgICAgICAgVGhlc2UgYXJlIG5vIGxvbmdlciB1c2VkOyBkbyBub3RoaW5nIG9uIDEw
LjEwKy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTo6c2VuZFVwZGF0ZUdlb21ldHJ5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OnVwZGF0ZUdlb21l
dHJ5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzY2FsZVZpZXdBbmRVcGRhdGVHZW9tZXRyeUZlbmNlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1
cGRhdGVHZW9tZXRyeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5oOgorICAgICAgICBBZGQgYSBNYWNoU2VuZFJpZ2h0IHBh
cmFtZXRlciB0byBVcGRhdGVHZW9tZXRyeSwgc28gdGhhdCB3ZSBjYW4gc2VuZCBhbG9uZworICAg
ICAgICBhIGZlbmNlIHBvcnQgd2l0aCB0aGUgZ2VvbWV0cnkgdXBkYXRlIGlmIG5lZWRlZC4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Ojp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAgIEFwcGx5IHRoZSBpbmNvbWluZyBmZW5jZSBzbyB0
aGF0IGdlb21ldHJ5IGNoYW5nZXMgd2lsbCBiZSBzeW5jaHJvbml6ZWQgYmV0d2VlbiBwcm9jZXNz
ZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHk6OndhaXRGb3JQb3NzaWJsZUdlb21ldHJ5VXBkYXRlKToKKyAgICAgICAgRG9uJ3Qg
d2FpdCBmb3IgRGlkVXBkYXRlR2VvbWV0cnkgdG8gY29tZSBpbiBpZiB3ZSdyZSB1c2luZyBmZW5j
ZXMgdG8gYWNoaWV2ZSB0aGUgc2FtZSB0aGluZy4KKworICAgICAgICAoV2ViS2l0OjpUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjpzZW5kVXBkYXRlR2VvbWV0cnkpOgorICAgICAg
ICBDcmVhdGUgYW5kIGJsb2NrIHVzIG9uIGEgZmVuY2UgYW5kIHNlbmQgaXQgYWxvbmcgd2l0aCB0
aGUgZ2VvbWV0cnkgdXBkYXRlLgorICAgICAgICBJZiBhIHN5bmMgbWVzc2FnZSBpcyBpbiB0aGUg
aW5jb21pbmcgbWVzc2FnZSBxdWV1ZSwgZG9uJ3QgY3JlYXRlIHRoZSBmZW5jZTsKKyAgICAgICAg
aWYgYSBzeW5jIG1lc3NhZ2UgY29tZXMgaW4gYXQgYW55IHBvaW50IGFmdGVyIHdlJ3ZlIGluc3Rh
bGxlZCB0aGUgZmVuY2UgKGJ1dAorICAgICAgICBiZWZvcmUgdGhlIHJlbGV2YW50IGNvbW1pdCBj
b21wbGV0ZXMpLCBpbnZhbGlkYXRlIHRoZSBmZW5jZSwgc28gdGhhdCB3ZSB3b24ndAorICAgICAg
ICBlbmQgdXAgdGVtb3JhcmlseSBkZWFkbG9ja2VkIHdhaXRpbmcgZm9yIHRoZSBmZW5jZSB0aW1l
b3V0LgorCisyMDE1LTA3LTA4ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgorCiAgICAgICAgIFNuYXBzaG90cyBjYW4gYmUgbWlzcGxhY2VkIHdoZW4gY3VzdG9tIHN3aXBl
IHZpZXdzIGFyZSBvZmZzZXQgZnJvbSB0aGUgd2luZG93IG9yaWdpbgogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NzQ0CiAgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yMDk0MjEyMD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGI1ZTk4NTljYzQ1OTg2Mjg3MmEzMWJk
NDE1YmU0NGVjNWMyNzQ4MzAuLjBkMGUwODFiMWZmNGRjY2U3ZTRlZDMyOWZiOTUzMDg2ZDVhOTVk
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaApAQCAtMTE1MSw0ICsxMTUxLDkgQEAKICNkZWZpbmUgRU5BQkxFX1ZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFIDEKICNlbmRpZgogCisvKiBXaGlsZSAxMC4xMCBoYXMgc3Vw
cG9ydCBmb3IgZmVuY2VzLCBpdCBpcyBtaXNzaW5nIHNvbWUgQVBJIGltcG9ydGFudCBmb3Igb3Vy
IGludGVncmF0aW9uIG9mIHRoZW0uICovCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkKKyNkZWZp
bmUgSEFWRV9DT1JFQU5JTUFUSU9OX0ZFTkNFUyAxCisjZW5kaWYKKwogI2VuZGlmIC8qIFdURl9Q
bGF0Zm9ybV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9N
YWNoU2VuZFJpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NYWNoU2VuZFJp
Z2h0LmgKaW5kZXggYzRiYWYyODMxMDBmNzFiM2UyNWZjZjBkMjE1ZWRlOGZhZjVhOTUyYS4uZDhl
ZDUwZTY2M2NkZjA2NGYwZjBkYzcwYmFmNzcwNWQ1ZDE4MGFmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWFjaFNlbmRSaWdodC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL01hY2hTZW5kUmlnaHQuaApAQCAtMzUsOCArMzUsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE1hY2hTZW5kUmlnaHQgYWRvcHQobWFjaF9w
b3J0X3QpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBNYWNoU2VuZFJpZ2h0IGNyZWF0ZSht
YWNoX3BvcnRfdCk7CiAKLSAgICBNYWNoU2VuZFJpZ2h0KCkgPSBkZWZhdWx0OwotICAgIE1hY2hT
ZW5kUmlnaHQoTWFjaFNlbmRSaWdodCYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBNYWNoU2VuZFJp
Z2h0KCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIE1hY2hTZW5kUmlnaHQoTWFjaFNl
bmRSaWdodCYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+TWFjaFNlbmRSaWdodCgpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgTWFjaFNlbmRSaWdodCYgb3BlcmF0b3I9KE1hY2hTZW5kUmlnaHQmJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29y
ZVNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEku
aAppbmRleCA2NzFiNTBlYWQ3NzA1MDU4ZmUwYTZiMTY2YWQ4MWE2NjM5OGVjNWVhLi4zZTQ5MjMw
NWU4MGQxMGQyYWZlNjQzYmI0YTIwMTZkZTNlOTU0NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgKQEAgLTEzNiw2ICsxMzYsMTQg
QEAgRVhURVJOX0Mgdm9pZCBDQVJlbmRlclNlcnZlckNhcHR1cmVMYXllcldpdGhUcmFuc2Zvcm0o
bWFjaF9wb3J0X3Qgc2VydmVyUG9ydCwgdWkKIEVYVEVSTl9DIHZvaWQgQ0FSZW5kZXJTZXJ2ZXJS
ZW5kZXJMYXllcldpdGhUcmFuc2Zvcm0obWFjaF9wb3J0X3Qgc2VydmVyX3BvcnQsIHVpbnQzMl90
IGNsaWVudF9pZCwgdWludDY0X3QgbGF5ZXJfaWQsIElPU3VyZmFjZVJlZiBpb3N1cmZhY2UsIGlu
dDMyX3Qgb3gsIGludDMyX3Qgb3ksIGNvbnN0IENBVHJhbnNmb3JtM0QgKm1hdHJpeCk7CiAjZW5k
aWYKIAorCisvLyBGSVhNRTogTW92ZSB0aGlzIGludG8gdGhlIEFQUExFX0lOVEVSTkFMX1NESyBi
bG9jayBvbmNlIGl0J3MgaW4gYW4gU0RLLgorQGludGVyZmFjZSBDQUNvbnRleHQgKERldGFpbHMp
CisjaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gOTAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMTAwKQorLSAodm9pZClpbnZhbGlkYXRlRmVuY2VzOworI2VuZGlmCitAZW5k
CisKIEVYVEVSTl9DIE5TU3RyaW5nICogY29uc3Qga0NBVGlsZWRMYXllclJlbW92ZUltbWVkaWF0
ZWx5OwogCiBFWFRFUk5fQyBOU1N0cmluZyAqIGNvbnN0IGtDQUZpbHRlckNvbG9ySW52ZXJ0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDY2NGNjMzRh
NTI2MTFlZDQ0ZDk5Nzg2MjMwMmUzNjQyOTVkM2IwYjQuLmIzNzlhMGYyMGRkOGEyNmY1NDgxZWIy
YTJlNWI1YTNiNmViMmQ5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5jcHAKQEAgLTIxOCw2ICsyMTgsNyBAQCBDb25uZWN0aW9uOjpDb25uZWN0aW9uKElkZW50
aWZpZXIgaWRlbnRpZmllciwgYm9vbCBpc1NlcnZlciwgQ2xpZW50JiBjbGllbnQpCiAgICAgLCBt
X2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShmYWxzZSkKICAgICAsIG1fd2FpdGluZ0Zvck1lc3Nh
Z2UobnVsbHB0cikKICAgICAsIG1fc2hvdWxkV2FpdEZvclN5bmNSZXBsaWVzKHRydWUpCisgICAg
LCBtX2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFja1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJj
b20uYXBwbGUuV2ViS2l0LklQQy5JbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tRdWV1ZSIpKQog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTY2OSw2ICs2NzAsMTUgQEAg
dm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxN
ZXNzYWdlRGVjb2Rlcj4gbWVzc2FnZSkKICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChtZXNzYWdl
LT5pc1N5bmNNZXNzYWdlKCkpIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+
IGxvY2sobV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tNdXRleCk7CisKKyAgICAgICAgZm9y
IChhdXRvJiBjYWxsYmFjayA6IG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrcy52YWx1ZXMo
KSkKKyAgICAgICAgICAgIG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrUXVldWUtPmRpc3Bh
dGNoKGNhbGxiYWNrKTsKKworICAgICAgICBtX2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFja3Mu
Y2xlYXIoKTsKKyAgICB9CisKICAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgc3luYyBtZXNzYWdl
IG9yIGlmIGl0J3MgYSBtZXNzYWdlIHRoYXQgc2hvdWxkIGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVu
IHdhaXRpbmcgZm9yCiAgICAgLy8gYSBzeW5jIHJlcGx5LiBJZiBpdCBpcywgYW5kIHdlJ3JlIHdh
aXRpbmcgZm9yIGEgc3luYyByZXBseSB0aGlzIG1lc3NhZ2UgbmVlZHMgdG8gYmUgZGlzcGF0Y2hl
ZC4KICAgICAvLyBJZiB3ZSBkb24ndCB3ZSdsbCBlbmQgdXAgd2l0aCBhIGRlYWRsb2NrIHdoZXJl
IGJvdGggc3luYyBtZXNzYWdlIHNlbmRlcnMgYXJlIHN0dWNrIHdhaXRpbmcgZm9yIGEgcmVwbHku
CkBAIC02OTUsNiArNzA1LDM1IEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVz
c2FnZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IG1lc3NhZ2UpCiAgICAgZW5xdWV1
ZUluY29taW5nTWVzc2FnZShXVEY6Om1vdmUobWVzc2FnZSkpOwogfQogCit1aW50NjRfdCBDb25u
ZWN0aW9uOjppbnN0YWxsSW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4gY2FsbGJhY2spCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxv
Y2sobV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tNdXRleCk7CisgICAgbV9pbmNvbWluZ1N5
bmNNZXNzYWdlQ2FsbGJhY2tzLmFkZChtX25leHRJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tJ
RCwgY2FsbGJhY2spOworCisgICAgcmV0dXJuIG1fbmV4dEluY29taW5nU3luY01lc3NhZ2VDYWxs
YmFja0lEKys7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6dW5pbnN0YWxsSW5jb21pbmdTeW5jTWVz
c2FnZUNhbGxiYWNrKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgc3RkOjpsb2NrX2d1YXJk
PHN0ZDo6bXV0ZXg+IGxvY2sobV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tNdXRleCk7Cisg
ICAgbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tzLnJlbW92ZShjYWxsYmFja0lEKTsKK30K
KworYm9vbCBDb25uZWN0aW9uOjpoYXNJbmNvbWluZ1N5bmNNZXNzYWdlKCkKK3sKKyAgICBzdGQ6
OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRleCk7CisK
KyAgICBib29sIGhhc0luY29taW5nU3luY01lc3NhZ2UgPSBmYWxzZTsKKworICAgIGZvciAoYXV0
byBpdCA9IG1faW5jb21pbmdNZXNzYWdlcy5iZWdpbigpLCBlbmQgPSBtX2luY29taW5nTWVzc2Fn
ZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVz
c2FnZURlY29kZXI+JiBtZXNzYWdlID0gKml0OworICAgICAgICBpZiAobWVzc2FnZS0+aXNTeW5j
TWVzc2FnZSgpKQorICAgICAgICAgICAgaGFzSW5jb21pbmdTeW5jTWVzc2FnZSA9IHRydWU7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBoYXNJbmNvbWluZ1N5bmNNZXNzYWdlOworfQorCiB2b2lk
IENvbm5lY3Rpb246OnBvc3RDb25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUo
KQogewogICAgIFJlZlB0cjxDb25uZWN0aW9uPiBjb25uZWN0aW9uKHRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggNWQyY2NkZGZmMWYxYjg3MTQxZDVm
NjhhMGIwZjgyYjc4M2Q3ZmM4OC4uMThiZmQzMWFhZDU2OTU4YTEwYjZjZmUyY2QzNTU3Y2Y0ODBk
NTU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0yMDAs
NiArMjAwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZEJvb3N0TWFpblRocmVhZE9u
U3luY01lc3NhZ2UoYm9vbCBiKSB7IG1fc2hvdWxkQm9vc3RNYWluVGhyZWFkT25TeW5jTWVzc2Fn
ZSA9IGI7IH0KICNlbmRpZgogCisgICAgdWludDY0X3QgaW5zdGFsbEluY29taW5nU3luY01lc3Nh
Z2VDYWxsYmFjayhzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKKyAgICB2b2lkIHVuaW5zdGFsbElu
Y29taW5nU3luY01lc3NhZ2VDYWxsYmFjayh1aW50NjRfdCk7CisgICAgYm9vbCBoYXNJbmNvbWlu
Z1N5bmNNZXNzYWdlKCk7CisKIHByaXZhdGU6CiAgICAgQ29ubmVjdGlvbihJZGVudGlmaWVyLCBi
b29sIGlzU2VydmVyLCBDbGllbnQmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShJZGVu
dGlmaWVyKTsKQEAgLTMwMiw2ICszMDYsMTEgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hN
YXA8dWludDY0X3QsIFNlY29uZGFyeVRocmVhZFBlbmRpbmdTeW5jUmVwbHkqPiBTZWNvbmRhcnlU
aHJlYWRQZW5kaW5nU3luY1JlcGx5TWFwOwogICAgIFNlY29uZGFyeVRocmVhZFBlbmRpbmdTeW5j
UmVwbHlNYXAgbV9zZWNvbmRhcnlUaHJlYWRQZW5kaW5nU3luY1JlcGx5TWFwOwogCisgICAgc3Rk
OjptdXRleCBtX2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFja011dGV4OworICAgIEhhc2hNYXA8
dWludDY0X3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1faW5jb21pbmdTeW5jTWVzc2FnZUNh
bGxiYWNrczsKKyAgICBSZWY8V29ya1F1ZXVlPiBtX2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFj
a1F1ZXVlOworICAgIHVpbnQ2NF90IG1fbmV4dEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFja0lE
IHsgMSB9OworCiAjaWYgSEFWRShRT1NfQ0xBU1NFUykKICAgICBwdGhyZWFkX3QgbV9tYWluVGhy
ZWFkIHsgMCB9OwogICAgIGJvb2wgbV9zaG91bGRCb29zdE1haW5UaHJlYWRPblN5bmNNZXNzYWdl
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9MYXll
ckhvc3RpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL0xheWVySG9z
dGluZ0NvbnRleHQubW0KaW5kZXggODI4NmNmNzBiMGFiYjA2YzBiM2MzMWRmOTZlMDk4NDU5Y2Vj
ZDhjNi4uYjZkY2Y2NDJkYzhiODFkM2I4YTA4ZDZkZGIxNGIwYjJlYmIxOTlkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KQEAg
LTEwMiw3ICsxMDIsNyBAQCBDR0NvbG9yU3BhY2VSZWYgTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y29s
b3JTcGFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIFttX2NvbnRleHQgY29sb3JTcGFjZV07CiB9CiAK
LSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMDAwCisjaWYgSEFWRShDT1JFQU5JTUFUSU9OX0ZFTkNFUykKIHZvaWQgTGF5ZXJIb3N0aW5n
Q29udGV4dDo6c2V0RmVuY2VQb3J0KG1hY2hfcG9ydF90IGZlbmNlUG9ydCkKIHsKICAgICBbbV9j
b250ZXh0IHNldEZlbmNlUG9ydDpmZW5jZVBvcnRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IGU4ZDI0NDk1OGYwOWRlNWZkZWM5ZTFiYzNiMTRhMjYx
MDIyZTMyYTYuLmUxYTVhNTIwMmY4MmJjNGU1MzcyYmM0ZmFiY2MzOGEwMmRkZTdmNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTQ0MDcsMTIgKzQ0
MDcsMTYgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChO
U1N0cmluZyAqcGF0aCkKICAgICByZXR1cm4gbnNDb2xvcihjb2xvcik7CiB9CiAKKyNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdtaXNzaW5nLW5vcmV0dXJuIgogLy8gVGhpcyBtZXRob2QgZm9yY2VzIGEgZHJhd2luZyBhcmVh
IGdlb21ldHJ5IHVwZGF0ZSwgZXZlbiBpZiBmcmFtZSBzaXplIHVwZGF0ZXMgYXJlIGRpc2FibGVk
LgogLy8gVGhlIHVwZGF0ZWQgaXMgcGVyZm9ybWVkIGFzeW5jaHJvbm91c2x5OyB3ZSBkb24ndCB3
YWl0IGZvciB0aGUgZ2VvbWV0cnkgdXBkYXRlIGJlZm9yZSByZXR1cm5pbmcuCiAvLyBUaGUgYXJl
YSBkcmF3biBuZWVkIG5vdCBtYXRjaCB0aGUgY3VycmVudCBmcmFtZSBzaXplIC0gaWYgaXQgZGlm
ZmVycyBpdCB3aWxsIGJlIGFuY2hvcmVkIHRvIHRoZQogLy8gZnJhbWUgYWNjb3JkaW5nIHRvIHRo
ZSBjdXJyZW50IGNvbnRlbnRBbmNob3IuCiAtICh2b2lkKWZvcmNlQXN5bmNEcmF3aW5nQXJlYVNp
emVVcGRhdGU6KE5TU2l6ZSlzaXplCiB7CisgICAgLy8gVGhpcyBTUEkgaXMgb25seSB1c2VkIG9u
IDEwLjkgYW5kIGJlbG93LCBhbmQgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGZlbmNlLWJhc2Vk
IGRyYXdpbmcgYXJlYSBzaXplIHN5bmNocm9uaXphdGlvbiBpbiAxMC4xMCsuCisjaWYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAxMDkwCiAgICAgaWYgKF9kYXRhLT5fY2xpcHNU
b1Zpc2libGVSZWN0KQogICAgICAgICBbc2VsZiBfdXBkYXRlVmlld0V4cG9zZWRSZWN0XTsKICAg
ICBbc2VsZiBfc2V0RHJhd2luZ0FyZWFTaXplOnNpemVdOwpAQCAtNDQyMiwxMCArNDQyNiwxNSBA
QCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5n
ICpwYXRoKQogICAgIC8vIHRoZSBkcmF3aW5nIGFyZWEgc2l6ZSBzdWNoIHRoYXQgdGhlIGxhdGVz
dCB1cGRhdGUgaXMgc2VudC4KICAgICBpZiAoRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0FyZWEg
PSBfZGF0YS0+X3BhZ2UtPmRyYXdpbmdBcmVhKCkpCiAgICAgICAgIGRyYXdpbmdBcmVhLT53YWl0
Rm9yUG9zc2libGVHZW9tZXRyeVVwZGF0ZShzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzOjp6ZXJv
KCkpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgogfQogCiAtICh2
b2lkKXdhaXRGb3JBc3luY0RyYXdpbmdBcmVhU2l6ZVVwZGF0ZQogeworICAgIC8vIFRoaXMgU1BJ
IGlzIG9ubHkgdXNlZCBvbiAxMC45IGFuZCBiZWxvdywgYW5kIGlzIGluY29tcGF0aWJsZSB3aXRo
IHRoZSBmZW5jZS1iYXNlZCBkcmF3aW5nIGFyZWEgc2l6ZSBzeW5jaHJvbml6YXRpb24gaW4gMTAu
MTArLgorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTA5MAogICAgIGlm
IChEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSA9IF9kYXRhLT5fcGFnZS0+ZHJhd2luZ0Fy
ZWEoKSkgewogICAgICAgICAvLyBJZiBhIGdlb21ldHJ5IHVwZGF0ZSBpcyBzdGlsbCBwZW5kaW5n
IHRoZW4gdGhlIGFjdGlvbiBvZiByZWNlaXZpbmcgdGhlCiAgICAgICAgIC8vIGZpcnN0IGdlb21l
dHJ5IHVwZGF0ZSBtYXkgcmVzdWx0IGluIGFub3RoZXIgdXBkYXRlIGJlaW5nIHNjaGVkdWxlZCAt
CkBAIC00NDMzLDcgKzQ0NDIsMTEgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZp
bGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICAgICAgICAgZHJhd2luZ0FyZWEtPndhaXRG
b3JQb3NzaWJsZUdlb21ldHJ5VXBkYXRlKERyYXdpbmdBcmVhUHJveHk6OmRpZFVwZGF0ZUJhY2tp
bmdTdG9yZVN0YXRlVGltZW91dCgpIC8gMik7CiAgICAgICAgIGRyYXdpbmdBcmVhLT53YWl0Rm9y
UG9zc2libGVHZW9tZXRyeVVwZGF0ZShEcmF3aW5nQXJlYVByb3h5OjpkaWRVcGRhdGVCYWNraW5n
U3RvcmVTdGF0ZVRpbWVvdXQoKSAvIDIpOwogICAgIH0KKyNlbHNlCisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisjZW5kaWYKIH0KKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIAogLSAo
Qk9PTClpc1VzaW5nVUlTaWRlQ29tcG9zaXRpbmcKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eS5tbQppbmRleCA5NWZiYTA0MDY4YWJiODI4YTBiYjJiMjZlMjhkNWFmZjVkZjgzZWRkLi5hZGZh
ZjQ3OGQ1ZjYwMTJkNGI2YWEyOWYyYTAzYTMzYTg4NjE5ZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Lm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHku
aCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9J
T1N1cmZhY2VQb29sLmg+CisjaW1wb3J0IDxXZWJDb3JlL01hY2hTZW5kUmlnaHQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBJUEM7CkBAIC0xNzAsNyArMTcxLDcgQEAgRmxvYXRSZWN0IFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHk6OnNjYWxlZEV4cG9zZWRSZWN0KCkgY29uc3QKIHZvaWQgUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6c2VuZFVwZGF0ZUdlb21ldHJ5KCkKIHsKICAg
ICBtX2xhc3RTZW50U2l6ZSA9IG1fc2l6ZTsKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OlVwZGF0ZUdlb21ldHJ5KG1fc2l6ZSwgSW50U2l6
ZSgpLCBmYWxzZSksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBtX3dlYlBhZ2VQcm94
eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OlVwZGF0ZUdlb21ldHJ5KG1f
c2l6ZSwgSW50U2l6ZSgpLCBmYWxzZSwgTWFjaFNlbmRSaWdodCgpKSwgbV93ZWJQYWdlUHJveHku
cGFnZUlEKCkpOwogICAgIG1faXNXYWl0aW5nRm9yRGlkVXBkYXRlR2VvbWV0cnkgPSB0cnVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGUxZDJiMjE2ZjQ4OWRk
MDc5MzY2YzM1YWNmN2QyOGIzMTU0MTNkZWQuLjk1ODY3MjdmYjI5M2U2NGQ4NTM4NjZkOTEyODM3
N2ZiYTgxYTE1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCkBAIC02MSw2
ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGludHJpbnNpY0NvbnRlbnRTaXpl
RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
c2VuZFVwZGF0ZUdlb21ldHJ5KCk7CisgICAgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCBjcmVhdGVG
ZW5jZUZvckdlb21ldHJ5VXBkYXRlKCk7CiAKICAgICAvLyBXaGV0aGVyIHdlJ3JlIHdhaXRpbmcg
Zm9yIGEgRGlkVXBkYXRlR2VvbWV0cnkgbWVzc2FnZSBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4KICAg
ICBib29sIG1faXNXYWl0aW5nRm9yRGlkVXBkYXRlR2VvbWV0cnk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJv
eHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhUHJveHkubW0KaW5kZXggNjc0YTk0NjI3NWMyOTg5YWNiYTYxZTc0OTMxMjBkYzFj
Y2VmNGNhNS4uNDM0YzdjYmY3ZDYyYmUwZTg2N2Y5NmRlMzNjYWZjMGQ2ZGQ3NDkwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMzQsNiArMzQsOCBAQAogI2ltcG9y
dCAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0
ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTWFjaFNlbmRSaWdodC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9RdWFydHpDb3JlU1BJLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJUEM7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTcwLDYgKzcyLDcgQEAgdm9pZCBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjpzaXplRGlkQ2hhbmdlKCkKIAogdm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yUG9zc2libGVHZW9tZXRyeVVw
ZGF0ZShzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVvdXQpCiB7CisjaWYgIUhBVkUoQ09S
RUFOSU1BVElPTl9GRU5DRVMpCiAgICAgaWYgKCFtX2lzV2FpdGluZ0ZvckRpZFVwZGF0ZUdlb21l
dHJ5KQogICAgICAgICByZXR1cm47CiAKQEAgLTc3LDYgKzgwLDcgQEAgdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yUG9zc2libGVHZW9tZXRyeVVwZGF0ZShz
dGQ6OmNocm8KICAgICAgICAgcmV0dXJuOwogCiAgICAgbV93ZWJQYWdlUHJveHkucHJvY2Vzcygp
LmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OkRy
YXdpbmdBcmVhUHJveHk6OkRpZFVwZGF0ZUdlb21ldHJ5PihtX3dlYlBhZ2VQcm94eS5wYWdlSUQo
KSwgdGltZW91dCwgSW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyNlbmRp
ZgogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmNvbG9yU3Bh
Y2VEaWRDaGFuZ2UoKQpAQCAtMTQ2LDEyICsxNTAsNDMgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYVByb3h5Ojp3aWxsU2VuZFVwZGF0ZUdlb21ldHJ5KCkKICAgICBtX2lzV2Fp
dGluZ0ZvckRpZFVwZGF0ZUdlb21ldHJ5ID0gdHJ1ZTsKIH0KIAorTWFjaFNlbmRSaWdodCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjpjcmVhdGVGZW5jZUZvckdlb21ldHJ5VXBk
YXRlKCkKK3sKKyNpZiBIQVZFKENPUkVBTklNQVRJT05fRkVOQ0VTKQorICAgIFJldGFpblB0cjxD
QUNvbnRleHQ+IHJvb3RMYXllckNvbnRleHQgPSBbYXNMYXllcihtX3dlYlBhZ2VQcm94eS5hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkpIGNvbnRleHRdOworICAgIGlmICghcm9vdExh
eWVyQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIE1hY2hTZW5kUmlnaHQoKTsKKworICAgIC8vIERv
bid0IGZlbmNlIGlmIHdlIGhhdmUgaW5jb21pbmcgc3luY2hyb25vdXMgbWVzc2FnZXMsIGJlY2F1
c2Ugd2UgbWF5IG5vdAorICAgIC8vIGJlIGFibGUgdG8gcmVwbHkgdG8gdGhlIG1lc3NhZ2UgdW50
aWwgdGhlIGZlbmNlIHRpbWVzIG91dC4KKyAgICBpZiAobV93ZWJQYWdlUHJveHkucHJvY2Vzcygp
LmNvbm5lY3Rpb24oKS0+aGFzSW5jb21pbmdTeW5jTWVzc2FnZSgpKQorICAgICAgICByZXR1cm4g
TWFjaFNlbmRSaWdodCgpOworCisgICAgTWFjaFNlbmRSaWdodCBmZW5jZVBvcnQgPSBNYWNoU2Vu
ZFJpZ2h0OjphZG9wdChbcm9vdExheWVyQ29udGV4dCBjcmVhdGVGZW5jZVBvcnRdKTsKKyAgICBb
cm9vdExheWVyQ29udGV4dCBzZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0LnNlbmRSaWdodCgpXTsKKwor
ICAgIC8vIEludmFsaWRhdGUgdGhlIGZlbmNlIGlmIGEgc3luY2hyb25vdXMgbWVzc2FnZSBhcnJp
dmVzIHdoaWxlIGl0J3MgaW5zdGFsbGVkLAorICAgIC8vIGJlY2F1c2Ugd2Ugd29uJ3QgYmUgYWJs
ZSB0byByZXBseSBkdXJpbmcgdGhlIGZlbmNlLXdhaXQuCisgICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPmluc3RhbGxJbmNvbWlu
Z1N5bmNNZXNzYWdlQ2FsbGJhY2soW3Jvb3RMYXllckNvbnRleHRdIHsKKyAgICAgICAgaWYgKFty
b290TGF5ZXJDb250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW52YWxpZGF0ZUZl
bmNlcyldKQorICAgICAgICAgICAgW3Jvb3RMYXllckNvbnRleHQgaW52YWxpZGF0ZUZlbmNlc107
CisgICAgfSk7CisgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gcmV0YWluZWRQYWdlID0gJm1fd2Vi
UGFnZVByb3h5OworICAgIFtDQVRyYW5zYWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6W2NhbGxiYWNr
SUQsIHJldGFpbmVkUGFnZV0geworICAgICAgICBpZiAoQ29ubmVjdGlvbiogY29ubmVjdGlvbiA9
IHJldGFpbmVkUGFnZS0+cHJvY2VzcygpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNvbm5l
Y3Rpb24tPnVuaW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFjayhjYWxsYmFja0lEKTsK
KyAgICB9IGZvclBoYXNlOmtDQVRyYW5zYWN0aW9uUGhhc2VQb3N0Q29tbWl0XTsKKyNlbmRpZgor
CisgICAgcmV0dXJuIGZlbmNlUG9ydDsKK30KKwogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5OjpzZW5kVXBkYXRlR2VvbWV0cnkoKQogewogICAgIEFTU0VSVCghbV9pc1dh
aXRpbmdGb3JEaWRVcGRhdGVHZW9tZXRyeSk7CiAKICAgICB3aWxsU2VuZFVwZGF0ZUdlb21ldHJ5
KCk7Ci0gICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OkRyYXdpbmdB
cmVhOjpVcGRhdGVHZW9tZXRyeShtX3NpemUsIEludFNpemUoKSwgdHJ1ZSksIG1fd2ViUGFnZVBy
b3h5LnBhZ2VJRCgpKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6RHJhd2luZ0FyZWE6OlVwZGF0ZUdlb21ldHJ5KG1fc2l6ZSwgbV9sYXllclBvc2l0aW9uLCB0
cnVlLCBjcmVhdGVGZW5jZUZvckdlb21ldHJ5VXBkYXRlKCkpLCBtX3dlYlBhZ2VQcm94eS5wYWdl
SUQoKSk7CiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6YWRq
dXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA1NDdh
OTYxZDdmZTA2MWEyZDEyZDAxNDI2ODE0YmI1M2U3YTFhM2QyLi4zYWQxOTE3MGM2ZTA1MTY5ZmM4
NTYwMjJlOGJiZmQ0NTM3MDFkYTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMTMxLDcgKzEzMSw3IEBAIHB1YmxpYzoKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIC8vIFVzZWQgYnkgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEuCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5KGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHZpZXdTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBsYXllclBvc2l0aW9uLCBi
b29sIGZsdXNoU3luY2hyb25vdXNseSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21l
dHJ5KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBsYXllclBvc2l0aW9uLCBib29sIGZsdXNoU3luY2hyb25vdXNseSwgY29uc3QgV2ViQ29y
ZTo6TWFjaFNlbmRSaWdodCYgZmVuY2VQb3J0KSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZXBs
eVdpdGhGZW5jZUFmdGVyTmV4dEZsdXNoKHVpbnQ2NF90IGNhbGxiYWNrSUQpIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCmluZGV4IDVmNjY1ZmVmNGVi
NjlhOGVhN2Q3MTI0YzE5MDkxNTNhZWY1MmE3NDMuLjg0YzY3MjJiMTMzZWI2N2ExNTI0ZmU4NDFl
YjE1OTE3MGVlYjM0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KQEAgLTI2LDcgKzI2LDcgQEAgbWVz
c2FnZXMgLT4gRHJhd2luZ0FyZWEgewogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gVXNl
ZCBieSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS4KLSAgICBVcGRhdGVHZW9tZXRyeShX
ZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplLCBXZWJDb3JlOjpJbnRTaXplIGxheWVyUG9zaXRpb24s
IGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5KQorICAgIFVwZGF0ZUdlb21ldHJ5KFdlYkNvcmU6Oklu
dFNpemUgdmlld1NpemUsIFdlYkNvcmU6OkludFNpemUgbGF5ZXJQb3NpdGlvbiwgYm9vbCBmbHVz
aFN5bmNocm9ub3VzbHksIFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgZmVuY2VQb3J0KQogICAgIFNl
dERldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogICAgIFNldENvbG9y
U3BhY2Uoc3RydWN0IFdlYktpdDo6Q29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSkKICAgICBTZXRF
eHBvc2VkUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgZXhwb3NlZFJlY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNGRlODE2NDBlYjMwMTk1
NjFjMGY3ZWMxODk3ZjE4MTU3OTJmNTcyYi4uMTU3ZDA4NDVjODJmMjg0NDA5MjEyMjVlMzZjMTgz
ZWUxNjJlZjRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtMTQ3Miw3ICsxNDcyLDcgQEAgdm9pZCBXZWJQYWdlOjpzY2FsZVZpZXcoZG91
YmxlIHNjYWxlKQogdm9pZCBXZWJQYWdlOjpzY2FsZVZpZXdBbmRVcGRhdGVHZW9tZXRyeUZlbmNl
ZChkb3VibGUgc2NhbGUsIEludFNpemUgdmlld1NpemUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7
CiAgICAgc2NhbGVWaWV3KHNjYWxlKTsKLSAgICBtX2RyYXdpbmdBcmVhLT51cGRhdGVHZW9tZXRy
eSh2aWV3U2l6ZSwgSW50U2l6ZSgpLCBmYWxzZSk7CisgICAgbV9kcmF3aW5nQXJlYS0+dXBkYXRl
R2VvbWV0cnkodmlld1NpemUsIEludFNpemUoKSwgZmFsc2UsIE1hY2hTZW5kUmlnaHQoKSk7CiAg
ICAgbV9kcmF3aW5nQXJlYS0+cmVwbHlXaXRoRmVuY2VBZnRlck5leHRGbHVzaChjYWxsYmFja0lE
KTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCmluZGV4IDk2
Mzc4ZmFlOTlmYmY3OTc5NmJlYjllYTZhNjI2YzBkNTQ4NDg1ODguLmFhZjY3ZDliMmUwNTg1OGJh
ZDYwOWZkMThiNWI4NDQxZmUxZDk1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVl
ZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheUlu
UmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzY3JvbGxEZWx0YSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUdlb21ldHJ5KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdTaXplLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBsYXllclBvc2l0aW9uLCBib29sIGZsdXNoU3luY2hyb25vdXNseSkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5KGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHZpZXdTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBsYXllclBvc2l0aW9uLCBib29s
IGZsdXNoU3luY2hyb25vdXNseSwgY29uc3QgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCYgZmVuY2VQ
b3J0KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3Rv
cnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IGJkYTA5OTJjOTVhOTYw
ZGJjNjMzNThiNzZmZmI1MDNiYTFjZDQwZTYuLjVjY2JjYWUzNTFkMTg0NzQ4OTg3NWJhM2MzY2I2
YzA0ZDhiZTZmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAt
MTU0LDcgKzE1NCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnNldFJvb3RD
b21wb3NpdGluZ0xheWVyKEdyYXBoaWNzTGF5ZXIqIHJvb3RMYXllCiAgICAgc2NoZWR1bGVDb21w
b3NpdGluZ0xheWVyRmx1c2goKTsKIH0KIAotdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YTo6dXBkYXRlR2VvbWV0cnkoY29uc3QgSW50U2l6ZSYgdmlld1NpemUsIGNvbnN0IEludFNpemUm
IGxheWVyUG9zaXRpb24sIGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5KQordm9pZCBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlR2VvbWV0cnkoY29uc3QgSW50U2l6ZSYgdmlld1NpemUs
IGNvbnN0IEludFNpemUmIGxheWVyUG9zaXRpb24sIGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5LCBj
b25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JikKIHsKICAgICBtX3ZpZXdTaXplID0gdmlld1Np
emU7CiAgICAgbV93ZWJQYWdlLnNldFNpemUodmlld1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IGVhODQ0MWE3YTI4MzVmNzEyMDFlMzljOWMxN2Y4
YzFlZGFjMGU4NmIuLjBhYmVlMjNlYWNjOTQ1YjkzMGM5NDQwNGY2MjBjY2IxNmI5YTc3N2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAgLTkyLDcgKzkyLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgZmx1c2hMYXllcnMoKSBvdmVycmlkZTsKIAog
ICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBsYXllclBvc2l0aW9uLCBib29sIGZsdXNoU3luY2hyb25vdXNseSkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdT
aXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBsYXllclBvc2l0aW9uLCBib29sIGZsdXNoU3lu
Y2hyb25vdXNseSwgY29uc3QgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCYgZmVuY2VQb3J0KSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIG92ZXJy
aWRlOwogICAgIHZvaWQgc3VzcGVuZFBhaW50aW5nKCk7CiAgICAgdm9pZCByZXN1bWVQYWludGlu
ZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggNGMw
YWQ2NTE5OTZlZGQ0M2Q2YmRmNmE2OTg2ZGI2NWRkZWIwY2M0Mi4uMDQ3MDM0MzFkNTA1YjE3YmI2
NTBhYzA0YTdlMGFjMTBkZDUyN2Y3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tCkBAIC01MDEsNyArNTAxLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6dXBkYXRlU2Nyb2xsZWRFeHBvc2VkUmVjdCgpCiAgICAgZnJhbWVWaWV3LT5z
ZXRFeHBvc2VkUmVjdChtX3Njcm9sbGVkRXhwb3NlZFJlY3QpOwogfQogCi12b2lkIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVHZW9tZXRyeShjb25zdCBJbnRTaXplJiB2aWV3
U2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJQb3NpdGlvbiwgYm9vbCBmbHVzaFN5bmNocm9ub3Vz
bHkpCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVHZW9tZXRyeShj
b25zdCBJbnRTaXplJiB2aWV3U2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJQb3NpdGlvbiwgYm9v
bCBmbHVzaFN5bmNocm9ub3VzbHksIGNvbnN0IFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQmIGZlbmNl
UG9ydCkKIHsKICAgICBtX2luVXBkYXRlR2VvbWV0cnkgPSB0cnVlOwogCkBAIC01MzUsMTIgKzUz
NSwxOSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVHZW9tZXRy
eShjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSwgY29ucwogCiAgICAgaWYgKGZsdXNoU3luY2hyb25v
dXNseSkgewogICAgICAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CisjaWYgIUhBVkUoQ09SRUFO
SU1BVElPTl9GRU5DRVMpCisgICAgICAgIC8vIFdlIGNhbid0IHN5bmNocm9uaXplIGhlcmUgaWYg
d2UncmUgdXNpbmcgZmVuY2VzIG9yIHdlJ2xsIGJsb3cgdGhlIGZlbmNlIGV2ZXJ5IHRpbWUgKGFu
ZCB3ZSBkb24ndCBuZWVkIHRvKS4KICAgICAgICAgW0NBVHJhbnNhY3Rpb24gc3luY2hyb25pemVd
OworI2VuZGlmCiAgICAgfQogCiAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OkRyYXdpbmdB
cmVhUHJveHk6OkRpZFVwZGF0ZUdlb21ldHJ5KCkpOwogCiAgICAgbV9pblVwZGF0ZUdlb21ldHJ5
ID0gZmFsc2U7CisKKyNpZiBIQVZFKENPUkVBTklNQVRJT05fRkVOQ0VTKQorICAgIG1fbGF5ZXJI
b3N0aW5nQ29udGV4dC0+c2V0RmVuY2VQb3J0KGZlbmNlUG9ydC5zZW5kUmlnaHQoKSk7CisjZW5k
aWYKIH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0RGV2aWNlU2Nh
bGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256468</attachid>
            <date>2015-07-09 00:56:04 -0700</date>
            <delta_ts>2015-07-09 01:41:43 -0700</delta_ts>
            <desc>fix the build</desc>
            <filename>bug-146294-20150709003753.patch</filename>
            <type>text/plain</type>
            <size>26834</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhkYzM2ZGVlZTQ1ZDZhYjhiZWM2ZDgz
NmI1ZjQ0NDI0MWMxZDI2ODUuLmE5ODVkZmM1NTNhMWE2OGNmNzBhMmViNmU4ODUyYWMyY2E5MGRl
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDctMDggIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENvcmVBbmltYXRpb24gZmVuY2VzIGlu
c3RlYWQgb2Ygc3luY2hyb25vdXMgSVBDIHRvIHN5bmNocm9uaXplIHJlc2l6ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2Mjk0CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yMTA5MDE5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICBBZGQgSEFWRShDT1JF
QU5JTUFUSU9OX0ZFTkNFUykKKwogMjAxNS0wNy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIERyb3AgUmVmUHRyOjpjbGVhcigpIG1ldGhvZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGE1ZmY0ZDljNWU5Y2Y1ODI2YmM4MTY2ZWJjZjc3NTUwNDA5OTYzMjkuLjJlNmYxOGQ2NzA4
ZDMwNWM3ZWRlODJlNTZhMGFkOTY3MTNjY2NkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxNS0wNy0wOSAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgVXNlIENvcmVBbmltYXRpb24gZmVuY2VzIGluc3RlYWQgb2Ygc3luY2hyb25v
dXMgSVBDIHRvIHN5bmNocm9uaXplIHJlc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2Mjk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTA5
MDE5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBsYXRmb3JtL2NvY29hL01hY2hTZW5kUmlnaHQuaDoKKyAgICAgICAgRXhwb3J0IHNvbWUgY29u
c3RydWN0b3JzLgorCisgICAgICAgICogcGxhdGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEku
aDoKKyAgICAgICAgQWRkIHNvbWUgU1BJLgorCiAyMDE1LTA3LTA4ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIFBpbmdMb2FkZXJzIHRvIHRoZSBOZXR3
b3JraW5nUHJvY2Vzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1NzgxOWUwMWE1ZTE5ZTQxYTFiNmQwNWNlYjNk
NGE1OTAxYmYyZmQzLi4zYThkZWVkN2UyYWRiMTRhYTMzNjAwOTFjMjVlMTJlMmQ4OTQ2YzllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsNzAgQEAKIDIwMTUtMDctMDggIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIENvcmVBbmltYXRpb24gZmVuY2Vz
IGluc3RlYWQgb2Ygc3luY2hyb25vdXMgSVBDIHRvIHN5bmNocm9uaXplIHJlc2l6ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2Mjk0CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yMTA5MDE5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBCZWNhdXNlIG9mIGNoYW5nZXMgaW4gdW5kZXJseWluZyBmcmFt
ZXdvcmtzLCB3ZSBjYW4gbm8gbG9uZ2VyIGRlcGVuZCBvbgorICAgICAgICBibG9ja2luZyB0aGUg
VUkgcHJvY2VzcyBtYWluIHRocmVhZCB0byBiZSBzdWZmaWNpZW50IHRvIHN5bmNocm9uaXplCisg
ICAgICAgIFVJIHByb2Nlc3MgQ0EgY29tbWl0cyB3aXRoIGNvbW1pdHMgY29taW5nIGZyb20gdGhl
IFdlYiBwcm9jZXNzLgorCisgICAgICAgIEluc3RlYWQsIHdlIGhhdmUgdG8gdXNlIENvcmVBbmlt
YXRpb24gZmVuY2VzIHRvIHBlcmZvcm0gdGhpcyBzeW5jaHJvbml6YXRpb24uCisgICAgICAgIElu
c3RlYWQgb2YgYmxvY2tpbmcgaW5zaWRlIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5LCB3
ZSdsbCBlbmQgdXAKKyAgICAgICAgYmxvY2tpbmcgZHVyaW5nIHRoZSBDQSBjb21taXQuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbToKKyAgICAgICAgVXNl
IEhBVkUoQ09SRUFOSU1BVElPTl9GRU5DRVMpLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246Omluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2spOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp1bmluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2Fs
bGJhY2spOgorICAgICAgICBLZWVwIHRyYWNrIG9mIGEgc2V0IG9mIGluY29taW5nIHN5bmMgbWVz
c2FnZSBjYWxsYmFja3MsIGFuZCBmaXJlIHRoZW0KKyAgICAgICAgKG9uIGFub3RoZXIgcXVldWUp
IHdoZW4gYSBzeW5jIG1lc3NhZ2UgYXJyaXZlcy4KKworICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpoYXNJbmNvbWluZ1N5bmNNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oOgorICAgICAgICBBZGQgYSB3YXkgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzeW5j
IG1lc3NhZ2VzIGluIHRoZSBxdWV1ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IGZvcmNlQXN5bmNEcmF3aW5nQXJlYVNpemVVcGRh
dGU6XSk6CisgICAgICAgICgtW1dLVmlldyB3YWl0Rm9yQXN5bmNEcmF3aW5nQXJlYVNpemVVcGRh
dGVdKToKKyAgICAgICAgVGhlc2UgYXJlIG5vIGxvbmdlciB1c2VkOyBkbyBub3RoaW5nIG9uIDEw
LjEwKy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTo6c2VuZFVwZGF0ZUdlb21ldHJ5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OnVwZGF0ZUdlb21l
dHJ5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzY2FsZVZpZXdBbmRVcGRhdGVHZW9tZXRyeUZlbmNlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1
cGRhdGVHZW9tZXRyeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5oOgorICAgICAgICBBZGQgYSBNYWNoU2VuZFJpZ2h0IHBh
cmFtZXRlciB0byBVcGRhdGVHZW9tZXRyeSwgc28gdGhhdCB3ZSBjYW4gc2VuZCBhbG9uZworICAg
ICAgICBhIGZlbmNlIHBvcnQgd2l0aCB0aGUgZ2VvbWV0cnkgdXBkYXRlIGlmIG5lZWRlZC4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Ojp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAgIEFwcGx5IHRoZSBpbmNvbWluZyBmZW5jZSBzbyB0
aGF0IGdlb21ldHJ5IGNoYW5nZXMgd2lsbCBiZSBzeW5jaHJvbml6ZWQgYmV0d2VlbiBwcm9jZXNz
ZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHk6OndhaXRGb3JQb3NzaWJsZUdlb21ldHJ5VXBkYXRlKToKKyAgICAgICAgRG9uJ3Qg
d2FpdCBmb3IgRGlkVXBkYXRlR2VvbWV0cnkgdG8gY29tZSBpbiBpZiB3ZSdyZSB1c2luZyBmZW5j
ZXMgdG8gYWNoaWV2ZSB0aGUgc2FtZSB0aGluZy4KKworICAgICAgICAoV2ViS2l0OjpUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjpzZW5kVXBkYXRlR2VvbWV0cnkpOgorICAgICAg
ICBDcmVhdGUgYW5kIGJsb2NrIHVzIG9uIGEgZmVuY2UgYW5kIHNlbmQgaXQgYWxvbmcgd2l0aCB0
aGUgZ2VvbWV0cnkgdXBkYXRlLgorICAgICAgICBJZiBhIHN5bmMgbWVzc2FnZSBpcyBpbiB0aGUg
aW5jb21pbmcgbWVzc2FnZSBxdWV1ZSwgZG9uJ3QgY3JlYXRlIHRoZSBmZW5jZTsKKyAgICAgICAg
aWYgYSBzeW5jIG1lc3NhZ2UgY29tZXMgaW4gYXQgYW55IHBvaW50IGFmdGVyIHdlJ3ZlIGluc3Rh
bGxlZCB0aGUgZmVuY2UgKGJ1dAorICAgICAgICBiZWZvcmUgdGhlIHJlbGV2YW50IGNvbW1pdCBj
b21wbGV0ZXMpLCBpbnZhbGlkYXRlIHRoZSBmZW5jZSwgc28gdGhhdCB3ZSB3b24ndAorICAgICAg
ICBlbmQgdXAgdGVtb3JhcmlseSBkZWFkbG9ja2VkIHdhaXRpbmcgZm9yIHRoZSBmZW5jZSB0aW1l
b3V0LgorCisyMDE1LTA3LTA4ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgorCiAgICAgICAgIFNuYXBzaG90cyBjYW4gYmUgbWlzcGxhY2VkIHdoZW4gY3VzdG9tIHN3aXBl
IHZpZXdzIGFyZSBvZmZzZXQgZnJvbSB0aGUgd2luZG93IG9yaWdpbgogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NzQ0CiAgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yMDk0MjEyMD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGI1ZTk4NTljYzQ1OTg2Mjg3MmEzMWJk
NDE1YmU0NGVjNWMyNzQ4MzAuLjBkMGUwODFiMWZmNGRjY2U3ZTRlZDMyOWZiOTUzMDg2ZDVhOTVk
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaApAQCAtMTE1MSw0ICsxMTUxLDkgQEAKICNkZWZpbmUgRU5BQkxFX1ZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFIDEKICNlbmRpZgogCisvKiBXaGlsZSAxMC4xMCBoYXMgc3Vw
cG9ydCBmb3IgZmVuY2VzLCBpdCBpcyBtaXNzaW5nIHNvbWUgQVBJIGltcG9ydGFudCBmb3Igb3Vy
IGludGVncmF0aW9uIG9mIHRoZW0uICovCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkKKyNkZWZp
bmUgSEFWRV9DT1JFQU5JTUFUSU9OX0ZFTkNFUyAxCisjZW5kaWYKKwogI2VuZGlmIC8qIFdURl9Q
bGF0Zm9ybV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9N
YWNoU2VuZFJpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NYWNoU2VuZFJp
Z2h0LmgKaW5kZXggYzRiYWYyODMxMDBmNzFiM2UyNWZjZjBkMjE1ZWRlOGZhZjVhOTUyYS4uZDhl
ZDUwZTY2M2NkZjA2NGYwZjBkYzcwYmFmNzcwNWQ1ZDE4MGFmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWFjaFNlbmRSaWdodC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL01hY2hTZW5kUmlnaHQuaApAQCAtMzUsOCArMzUsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE1hY2hTZW5kUmlnaHQgYWRvcHQobWFjaF9w
b3J0X3QpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBNYWNoU2VuZFJpZ2h0IGNyZWF0ZSht
YWNoX3BvcnRfdCk7CiAKLSAgICBNYWNoU2VuZFJpZ2h0KCkgPSBkZWZhdWx0OwotICAgIE1hY2hT
ZW5kUmlnaHQoTWFjaFNlbmRSaWdodCYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBNYWNoU2VuZFJp
Z2h0KCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIE1hY2hTZW5kUmlnaHQoTWFjaFNl
bmRSaWdodCYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+TWFjaFNlbmRSaWdodCgpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgTWFjaFNlbmRSaWdodCYgb3BlcmF0b3I9KE1hY2hTZW5kUmlnaHQmJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29y
ZVNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEku
aAppbmRleCA2NzFiNTBlYWQ3NzA1MDU4ZmUwYTZiMTY2YWQ4MWE2NjM5OGVjNWVhLi4zZTQ5MjMw
NWU4MGQxMGQyYWZlNjQzYmI0YTIwMTZkZTNlOTU0NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgKQEAgLTEzNiw2ICsxMzYsMTQg
QEAgRVhURVJOX0Mgdm9pZCBDQVJlbmRlclNlcnZlckNhcHR1cmVMYXllcldpdGhUcmFuc2Zvcm0o
bWFjaF9wb3J0X3Qgc2VydmVyUG9ydCwgdWkKIEVYVEVSTl9DIHZvaWQgQ0FSZW5kZXJTZXJ2ZXJS
ZW5kZXJMYXllcldpdGhUcmFuc2Zvcm0obWFjaF9wb3J0X3Qgc2VydmVyX3BvcnQsIHVpbnQzMl90
IGNsaWVudF9pZCwgdWludDY0X3QgbGF5ZXJfaWQsIElPU3VyZmFjZVJlZiBpb3N1cmZhY2UsIGlu
dDMyX3Qgb3gsIGludDMyX3Qgb3ksIGNvbnN0IENBVHJhbnNmb3JtM0QgKm1hdHJpeCk7CiAjZW5k
aWYKIAorCisvLyBGSVhNRTogTW92ZSB0aGlzIGludG8gdGhlIEFQUExFX0lOVEVSTkFMX1NESyBi
bG9jayBvbmNlIGl0J3MgaW4gYW4gU0RLLgorQGludGVyZmFjZSBDQUNvbnRleHQgKEFkZGl0aW9u
YWxEZXRhaWxzKQorI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDkwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkKKy0gKHZvaWQpaW52YWxpZGF0ZUZlbmNlczsKKyNl
bmRpZgorQGVuZAorCiBFWFRFUk5fQyBOU1N0cmluZyAqIGNvbnN0IGtDQVRpbGVkTGF5ZXJSZW1v
dmVJbW1lZGlhdGVseTsKIAogRVhURVJOX0MgTlNTdHJpbmcgKiBjb25zdCBrQ0FGaWx0ZXJDb2xv
ckludmVydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRl
eCA2NjRjYzM0YTUyNjExZWQ0NGQ5OTc4NjIzMDJlMzY0Mjk1ZDNiMGI0Li5iMzc5YTBmMjBkZDhh
MjZmNTQ4MWViMmEyZTViNWEzYjZlYjJkOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0yMTgsNiArMjE4LDcgQEAgQ29ubmVjdGlvbjo6Q29ubmVj
dGlvbihJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaXNTZXJ2ZXIsIENsaWVudCYgY2xpZW50
KQogICAgICwgbV9kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZmFsc2UpCiAgICAgLCBtX3dhaXRp
bmdGb3JNZXNzYWdlKG51bGxwdHIpCiAgICAgLCBtX3Nob3VsZFdhaXRGb3JTeW5jUmVwbGllcyh0
cnVlKQorICAgICwgbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tRdWV1ZShXb3JrUXVldWU6
OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5JUEMuSW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNr
UXVldWUiKSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC02NjksNiAr
NjcwLDE1IEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVu
aXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IG1lc3NhZ2UpCiAgICAgfQogI2VuZGlmCiAKKyAgICBp
ZiAobWVzc2FnZS0+aXNTeW5jTWVzc2FnZSgpKSB7CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxz
dGQ6Om11dGV4PiBsb2NrKG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrTXV0ZXgpOworCisg
ICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBtX2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFj
a3MudmFsdWVzKCkpCisgICAgICAgICAgICBtX2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFja1F1
ZXVlLT5kaXNwYXRjaChjYWxsYmFjayk7CisKKyAgICAgICAgbV9pbmNvbWluZ1N5bmNNZXNzYWdl
Q2FsbGJhY2tzLmNsZWFyKCk7CisgICAgfQorCiAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIHN5
bmMgbWVzc2FnZSBvciBpZiBpdCdzIGEgbWVzc2FnZSB0aGF0IHNob3VsZCBiZSBkaXNwYXRjaGVk
IGV2ZW4gd2hlbiB3YWl0aW5nIGZvcgogICAgIC8vIGEgc3luYyByZXBseS4gSWYgaXQgaXMsIGFu
ZCB3ZSdyZSB3YWl0aW5nIGZvciBhIHN5bmMgcmVwbHkgdGhpcyBtZXNzYWdlIG5lZWRzIHRvIGJl
IGRpc3BhdGNoZWQuCiAgICAgLy8gSWYgd2UgZG9uJ3Qgd2UnbGwgZW5kIHVwIHdpdGggYSBkZWFk
bG9jayB3aGVyZSBib3RoIHN5bmMgbWVzc2FnZSBzZW5kZXJzIGFyZSBzdHVjayB3YWl0aW5nIGZv
ciBhIHJlcGx5LgpAQCAtNjk1LDYgKzcwNSwzNSBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJ
bmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBtZXNzYWdlKQog
ICAgIGVucXVldWVJbmNvbWluZ01lc3NhZ2UoV1RGOjptb3ZlKG1lc3NhZ2UpKTsKIH0KIAordWlu
dDY0X3QgQ29ubmVjdGlvbjo6aW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFjayhzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+IGNhbGxiYWNrKQoreworICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6
Om11dGV4PiBsb2NrKG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrTXV0ZXgpOworICAgIG1f
aW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrcy5hZGQobV9uZXh0SW5jb21pbmdTeW5jTWVzc2Fn
ZUNhbGxiYWNrSUQsIGNhbGxiYWNrKTsKKworICAgIHJldHVybiBtX25leHRJbmNvbWluZ1N5bmNN
ZXNzYWdlQ2FsbGJhY2tJRCsrOworfQorCit2b2lkIENvbm5lY3Rpb246OnVuaW5zdGFsbEluY29t
aW5nU3luY01lc3NhZ2VDYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIHN0ZDo6
bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrKG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNr
TXV0ZXgpOworICAgIG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrcy5yZW1vdmUoY2FsbGJh
Y2tJRCk7Cit9CisKK2Jvb2wgQ29ubmVjdGlvbjo6aGFzSW5jb21pbmdTeW5jTWVzc2FnZSgpCit7
CisgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2sobV9pbmNvbWluZ01lc3NhZ2Vz
TXV0ZXgpOworCisgICAgYm9vbCBoYXNJbmNvbWluZ1N5bmNNZXNzYWdlID0gZmFsc2U7CisKKyAg
ICBmb3IgKGF1dG8gaXQgPSBtX2luY29taW5nTWVzc2FnZXMuYmVnaW4oKSwgZW5kID0gbV9pbmNv
bWluZ01lc3NhZ2VzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiYgbWVzc2FnZSA9ICppdDsKKyAgICAgICAgaWYgKG1lc3Nh
Z2UtPmlzU3luY01lc3NhZ2UoKSkKKyAgICAgICAgICAgIGhhc0luY29taW5nU3luY01lc3NhZ2Ug
PSB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gaGFzSW5jb21pbmdTeW5jTWVzc2FnZTsK
K30KKwogdm9pZCBDb25uZWN0aW9uOjpwb3N0Q29ubmVjdGlvbkRpZENsb3NlT25Db25uZWN0aW9u
V29ya1F1ZXVlKCkKIHsKICAgICBSZWZQdHI8Q29ubmVjdGlvbj4gY29ubmVjdGlvbih0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDVkMmNjZGRmZjFm
MWI4NzE0MWQ1ZjY4YTBiMGY4MmI3ODNkN2ZjODguLjE4YmZkMzFhYWQ1Njk1OGExMGI2Y2ZlMmNk
MzU1N2NmNDgwZDU1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aApAQCAtMjAwLDYgKzIwMCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRCb29zdE1h
aW5UaHJlYWRPblN5bmNNZXNzYWdlKGJvb2wgYikgeyBtX3Nob3VsZEJvb3N0TWFpblRocmVhZE9u
U3luY01lc3NhZ2UgPSBiOyB9CiAjZW5kaWYKIAorICAgIHVpbnQ2NF90IGluc3RhbGxJbmNvbWlu
Z1N5bmNNZXNzYWdlQ2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CisgICAgdm9pZCB1
bmluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2sodWludDY0X3QpOworICAgIGJvb2wg
aGFzSW5jb21pbmdTeW5jTWVzc2FnZSgpOworCiBwcml2YXRlOgogICAgIENvbm5lY3Rpb24oSWRl
bnRpZmllciwgYm9vbCBpc1NlcnZlciwgQ2xpZW50Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoSWRlbnRpZmllcik7CkBAIC0zMDIsNiArMzA2LDExIEBAIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBTZWNvbmRhcnlUaHJlYWRQZW5kaW5nU3luY1JlcGx5Kj4g
U2Vjb25kYXJ5VGhyZWFkUGVuZGluZ1N5bmNSZXBseU1hcDsKICAgICBTZWNvbmRhcnlUaHJlYWRQ
ZW5kaW5nU3luY1JlcGx5TWFwIG1fc2Vjb25kYXJ5VGhyZWFkUGVuZGluZ1N5bmNSZXBseU1hcDsK
IAorICAgIHN0ZDo6bXV0ZXggbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tNdXRleDsKKyAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX2luY29taW5nU3lu
Y01lc3NhZ2VDYWxsYmFja3M7CisgICAgUmVmPFdvcmtRdWV1ZT4gbV9pbmNvbWluZ1N5bmNNZXNz
YWdlQ2FsbGJhY2tRdWV1ZTsKKyAgICB1aW50NjRfdCBtX25leHRJbmNvbWluZ1N5bmNNZXNzYWdl
Q2FsbGJhY2tJRCB7IDEgfTsKKwogI2lmIEhBVkUoUU9TX0NMQVNTRVMpCiAgICAgcHRocmVhZF90
IG1fbWFpblRocmVhZCB7IDAgfTsKICAgICBib29sIG1fc2hvdWxkQm9vc3RNYWluVGhyZWFkT25T
eW5jTWVzc2FnZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21h
Yy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCmluZGV4IDgyODZjZjcwYjBhYmIwNmMwYjNjMzFkZjk2
ZTA5ODQ1OWNlY2Q4YzYuLmI2ZGNmNjQyZGM4YjgxZDNiOGEwOGQ2ZGRiMTRiMGIyZWJiMTk5ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250
ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250
ZXh0Lm1tCkBAIC0xMDIsNyArMTAyLDcgQEAgQ0dDb2xvclNwYWNlUmVmIExheWVySG9zdGluZ0Nv
bnRleHQ6OmNvbG9yU3BhY2UoKSBjb25zdAogICAgIHJldHVybiBbbV9jb250ZXh0IGNvbG9yU3Bh
Y2VdOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTAwMAorI2lmIEhBVkUoQ09SRUFOSU1BVElPTl9GRU5DRVMpCiB2b2lkIExh
eWVySG9zdGluZ0NvbnRleHQ6OnNldEZlbmNlUG9ydChtYWNoX3BvcnRfdCBmZW5jZVBvcnQpCiB7
CiAgICAgW21fY29udGV4dCBzZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCBlOGQyNDQ5NThmMDlkZTVmZGVjOWUx
YmMzYjE0YTI2MTAyMmUzMmE2Li5lMWE1YTUyMDJmODJiYzRlNTM3MmJjNGZhYmNjMzhhMDJkZGU3
ZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC00
NDA3LDEyICs0NDA3LDE2IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFt
ZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgcmV0dXJuIG5zQ29sb3IoY29sb3IpOwogfQog
CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1XbWlzc2luZy1ub3JldHVybiIKIC8vIFRoaXMgbWV0aG9kIGZvcmNlcyBhIGRy
YXdpbmcgYXJlYSBnZW9tZXRyeSB1cGRhdGUsIGV2ZW4gaWYgZnJhbWUgc2l6ZSB1cGRhdGVzIGFy
ZSBkaXNhYmxlZC4KIC8vIFRoZSB1cGRhdGVkIGlzIHBlcmZvcm1lZCBhc3luY2hyb25vdXNseTsg
d2UgZG9uJ3Qgd2FpdCBmb3IgdGhlIGdlb21ldHJ5IHVwZGF0ZSBiZWZvcmUgcmV0dXJuaW5nLgog
Ly8gVGhlIGFyZWEgZHJhd24gbmVlZCBub3QgbWF0Y2ggdGhlIGN1cnJlbnQgZnJhbWUgc2l6ZSAt
IGlmIGl0IGRpZmZlcnMgaXQgd2lsbCBiZSBhbmNob3JlZCB0byB0aGUKIC8vIGZyYW1lIGFjY29y
ZGluZyB0byB0aGUgY3VycmVudCBjb250ZW50QW5jaG9yLgogLSAodm9pZClmb3JjZUFzeW5jRHJh
d2luZ0FyZWFTaXplVXBkYXRlOihOU1NpemUpc2l6ZQogeworICAgIC8vIFRoaXMgU1BJIGlzIG9u
bHkgdXNlZCBvbiAxMC45IGFuZCBiZWxvdywgYW5kIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBm
ZW5jZS1iYXNlZCBkcmF3aW5nIGFyZWEgc2l6ZSBzeW5jaHJvbml6YXRpb24gaW4gMTAuMTArLgor
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTA5MAogICAgIGlmIChfZGF0
YS0+X2NsaXBzVG9WaXNpYmxlUmVjdCkKICAgICAgICAgW3NlbGYgX3VwZGF0ZVZpZXdFeHBvc2Vk
UmVjdF07CiAgICAgW3NlbGYgX3NldERyYXdpbmdBcmVhU2l6ZTpzaXplXTsKQEAgLTQ0MjIsMTAg
KzQ0MjYsMTUgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0
aChOU1N0cmluZyAqcGF0aCkKICAgICAvLyB0aGUgZHJhd2luZyBhcmVhIHNpemUgc3VjaCB0aGF0
IHRoZSBsYXRlc3QgdXBkYXRlIGlzIHNlbnQuCiAgICAgaWYgKERyYXdpbmdBcmVhUHJveHkqIGRy
YXdpbmdBcmVhID0gX2RhdGEtPl9wYWdlLT5kcmF3aW5nQXJlYSgpKQogICAgICAgICBkcmF3aW5n
QXJlYS0+d2FpdEZvclBvc3NpYmxlR2VvbWV0cnlVcGRhdGUoc3RkOjpjaHJvbm86Om1pbGxpc2Vj
b25kczo6emVybygpKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYK
IH0KIAogLSAodm9pZCl3YWl0Rm9yQXN5bmNEcmF3aW5nQXJlYVNpemVVcGRhdGUKIHsKKyAgICAv
LyBUaGlzIFNQSSBpcyBvbmx5IHVzZWQgb24gMTAuOSBhbmQgYmVsb3csIGFuZCBpcyBpbmNvbXBh
dGlibGUgd2l0aCB0aGUgZmVuY2UtYmFzZWQgZHJhd2luZyBhcmVhIHNpemUgc3luY2hyb25pemF0
aW9uIGluIDEwLjEwKy4KKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDw9IDEw
OTAKICAgICBpZiAoRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0FyZWEgPSBfZGF0YS0+X3BhZ2Ut
PmRyYXdpbmdBcmVhKCkpIHsKICAgICAgICAgLy8gSWYgYSBnZW9tZXRyeSB1cGRhdGUgaXMgc3Rp
bGwgcGVuZGluZyB0aGVuIHRoZSBhY3Rpb24gb2YgcmVjZWl2aW5nIHRoZQogICAgICAgICAvLyBm
aXJzdCBnZW9tZXRyeSB1cGRhdGUgbWF5IHJlc3VsdCBpbiBhbm90aGVyIHVwZGF0ZSBiZWluZyBz
Y2hlZHVsZWQgLQpAQCAtNDQzMyw3ICs0NDQyLDExIEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdp
dGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgICAgIGRyYXdpbmdB
cmVhLT53YWl0Rm9yUG9zc2libGVHZW9tZXRyeVVwZGF0ZShEcmF3aW5nQXJlYVByb3h5OjpkaWRV
cGRhdGVCYWNraW5nU3RvcmVTdGF0ZVRpbWVvdXQoKSAvIDIpOwogICAgICAgICBkcmF3aW5nQXJl
YS0+d2FpdEZvclBvc3NpYmxlR2VvbWV0cnlVcGRhdGUoRHJhd2luZ0FyZWFQcm94eTo6ZGlkVXBk
YXRlQmFja2luZ1N0b3JlU3RhdGVUaW1lb3V0KCkgLyAyKTsKICAgICB9CisjZWxzZQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCiB9CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cG9wCiAKIC0gKEJPT0wpaXNVc2luZ1VJU2lkZUNvbXBvc2l0aW5nCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkubW0KaW5kZXggOTVmYmEwNDA2OGFiYjgyOGEwYmIyYjI2ZTI4ZDVhZmY1ZGY4
M2VkZC4uYWRmYWY0NzhkNWY2MDEyZDRiNmFhMjlmMmEwM2EzM2E4ODYxOWU5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSU9TdXJmYWNlUG9vbC5oPgorI2ltcG9ydCA8V2ViQ29yZS9NYWNoU2VuZFJpZ2h0
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5o
PgogCiB1c2luZyBuYW1lc3BhY2UgSVBDOwpAQCAtMTcwLDcgKzE3MSw3IEBAIEZsb2F0UmVjdCBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpzY2FsZWRFeHBvc2VkUmVjdCgpIGNvbnN0
CiB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OnNlbmRVcGRhdGVHZW9tZXRy
eSgpCiB7CiAgICAgbV9sYXN0U2VudFNpemUgPSBtX3NpemU7Ci0gICAgbV93ZWJQYWdlUHJveHku
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpVcGRhdGVHZW9tZXRyeShtX3Np
emUsIEludFNpemUoKSwgZmFsc2UpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgbV93
ZWJQYWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpVcGRhdGVH
ZW9tZXRyeShtX3NpemUsIEludFNpemUoKSwgZmFsc2UsIE1hY2hTZW5kUmlnaHQoKSksIG1fd2Vi
UGFnZVByb3h5LnBhZ2VJRCgpKTsKICAgICBtX2lzV2FpdGluZ0ZvckRpZFVwZGF0ZUdlb21ldHJ5
ID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAppbmRleCBlMWQy
YjIxNmY0ODlkZDA3OTM2NmMzNWFjZjdkMjhiMzE1NDEzZGVkLi45NTg2NzI3ZmIyOTNlNjRkODUz
ODY2ZDkxMjgzNzdmYmE4MWExNTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHku
aApAQCAtNjEsNiArNjEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWND
b250ZW50U2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIHNlbmRVcGRhdGVHZW9tZXRyeSgpOworICAgIFdlYkNvcmU6Ok1hY2hTZW5kUmln
aHQgY3JlYXRlRmVuY2VGb3JHZW9tZXRyeVVwZGF0ZSgpOwogCiAgICAgLy8gV2hldGhlciB3ZSdy
ZSB3YWl0aW5nIGZvciBhIERpZFVwZGF0ZUdlb21ldHJ5IG1lc3NhZ2UgZnJvbSB0aGUgd2ViIHBy
b2Nlc3MuCiAgICAgYm9vbCBtX2lzV2FpdGluZ0ZvckRpZFVwZGF0ZUdlb21ldHJ5OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IDY3NGE5NDYyNzVjMjk4OWFjYmE2MWU3
NDkzMTIwZGMxY2NlZjRjYTUuLjQzNGM3Y2JmN2Q2MmJlMGU4NjdmOTZkZTMzY2FmYzBkNmRkNzQ5
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KQEAgLTM0LDYgKzM0LDgg
QEAKICNpbXBvcnQgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5o
IgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0IDxXZWJDb3JlL01hY2hTZW5k
UmlnaHQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUXVhcnR6Q29yZVNQSS5oPgogCiB1c2luZyBuYW1l
c3BhY2UgSVBDOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC03MCw2ICs3Miw3IEBAIHZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6c2l6ZURpZENoYW5nZSgpCiAK
IHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZvclBvc3NpYmxl
R2VvbWV0cnlVcGRhdGUoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0KQogeworI2lm
ICFIQVZFKENPUkVBTklNQVRJT05fRkVOQ0VTKQogICAgIGlmICghbV9pc1dhaXRpbmdGb3JEaWRV
cGRhdGVHZW9tZXRyeSkKICAgICAgICAgcmV0dXJuOwogCkBAIC03Nyw2ICs4MCw3IEBAIHZvaWQg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZvclBvc3NpYmxlR2VvbWV0
cnlVcGRhdGUoc3RkOjpjaHJvCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fd2ViUGFnZVByb3h5
LnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1l
c3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjpEaWRVcGRhdGVHZW9tZXRyeT4obV93ZWJQYWdlUHJv
eHkucGFnZUlEKCksIHRpbWVvdXQsIEludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZl
cyk7CisjZW5kaWYKIH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5
Ojpjb2xvclNwYWNlRGlkQ2hhbmdlKCkKQEAgLTE0NiwxMiArMTUwLDQzIEBAIHZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6d2lsbFNlbmRVcGRhdGVHZW9tZXRyeSgpCiAg
ICAgbV9pc1dhaXRpbmdGb3JEaWRVcGRhdGVHZW9tZXRyeSA9IHRydWU7CiB9CiAKK01hY2hTZW5k
UmlnaHQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6Y3JlYXRlRmVuY2VGb3JH
ZW9tZXRyeVVwZGF0ZSgpCit7CisjaWYgSEFWRShDT1JFQU5JTUFUSU9OX0ZFTkNFUykKKyAgICBS
ZXRhaW5QdHI8Q0FDb250ZXh0PiByb290TGF5ZXJDb250ZXh0ID0gW2FzTGF5ZXIobV93ZWJQYWdl
UHJveHkuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpKSBjb250ZXh0XTsKKyAgICBp
ZiAoIXJvb3RMYXllckNvbnRleHQpCisgICAgICAgIHJldHVybiBNYWNoU2VuZFJpZ2h0KCk7CisK
KyAgICAvLyBEb24ndCBmZW5jZSBpZiB3ZSBoYXZlIGluY29taW5nIHN5bmNocm9ub3VzIG1lc3Nh
Z2VzLCBiZWNhdXNlIHdlIG1heSBub3QKKyAgICAvLyBiZSBhYmxlIHRvIHJlcGx5IHRvIHRoZSBt
ZXNzYWdlIHVudGlsIHRoZSBmZW5jZSB0aW1lcyBvdXQuCisgICAgaWYgKG1fd2ViUGFnZVByb3h5
LnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPmhhc0luY29taW5nU3luY01lc3NhZ2UoKSkKKyAgICAg
ICAgcmV0dXJuIE1hY2hTZW5kUmlnaHQoKTsKKworICAgIE1hY2hTZW5kUmlnaHQgZmVuY2VQb3J0
ID0gTWFjaFNlbmRSaWdodDo6YWRvcHQoW3Jvb3RMYXllckNvbnRleHQgY3JlYXRlRmVuY2VQb3J0
XSk7CisgICAgW3Jvb3RMYXllckNvbnRleHQgc2V0RmVuY2VQb3J0OmZlbmNlUG9ydC5zZW5kUmln
aHQoKV07CisKKyAgICAvLyBJbnZhbGlkYXRlIHRoZSBmZW5jZSBpZiBhIHN5bmNocm9ub3VzIG1l
c3NhZ2UgYXJyaXZlcyB3aGlsZSBpdCdzIGluc3RhbGxlZCwKKyAgICAvLyBiZWNhdXNlIHdlIHdv
bid0IGJlIGFibGUgdG8gcmVwbHkgZHVyaW5nIHRoZSBmZW5jZS13YWl0LgorICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT5pbnN0
YWxsSW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrKFtyb290TGF5ZXJDb250ZXh0XSB7CisgICAg
ICAgIGlmIChbcm9vdExheWVyQ29udGV4dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGlu
dmFsaWRhdGVGZW5jZXMpXSkKKyAgICAgICAgICAgIFtyb290TGF5ZXJDb250ZXh0IGludmFsaWRh
dGVGZW5jZXNdOworICAgIH0pOworICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHJldGFpbmVkUGFn
ZSA9ICZtX3dlYlBhZ2VQcm94eTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBhZGRDb21taXRIYW5kbGVy
OltjYWxsYmFja0lELCByZXRhaW5lZFBhZ2VdIHsKKyAgICAgICAgaWYgKENvbm5lY3Rpb24qIGNv
bm5lY3Rpb24gPSByZXRhaW5lZFBhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCkpCisgICAgICAg
ICAgICBjb25uZWN0aW9uLT51bmluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2soY2Fs
bGJhY2tJRCk7CisgICAgfSBmb3JQaGFzZTprQ0FUcmFuc2FjdGlvblBoYXNlUG9zdENvbW1pdF07
CisjZW5kaWYKKworICAgIHJldHVybiBmZW5jZVBvcnQ7Cit9CisKIHZvaWQgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6c2VuZFVwZGF0ZUdlb21ldHJ5KCkKIHsKICAgICBBU1NF
UlQoIW1faXNXYWl0aW5nRm9yRGlkVXBkYXRlR2VvbWV0cnkpOwogCiAgICAgd2lsbFNlbmRVcGRh
dGVHZW9tZXRyeSgpOwotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpEcmF3aW5nQXJlYTo6VXBkYXRlR2VvbWV0cnkobV9zaXplLCBJbnRTaXplKCksIHRydWUpLCBt
X3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpVcGRhdGVHZW9tZXRyeShtX3NpemUsIG1fbGF5ZXJQ
b3NpdGlvbiwgdHJ1ZSwgY3JlYXRlRmVuY2VGb3JHZW9tZXRyeVVwZGF0ZSgpKSwgbV93ZWJQYWdl
UHJveHkucGFnZUlEKCkpOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
UHJveHk6OmFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdp
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgK
aW5kZXggNTQ3YTk2MWQ3ZmUwNjFhMmQxMmQwMTQyNjgxNGJiNTNlN2ExYTNkMi4uM2FkMTkxNzBj
NmUwNTE2OWZjODU2MDIyZThiYmZkNDUzNzAxZGE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBwdWJs
aWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBVc2VkIGJ5IFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLgotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHZW9tZXRyeShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiB2aWV3U2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbGF5ZXJQ
b3NpdGlvbiwgYm9vbCBmbHVzaFN5bmNocm9ub3VzbHkpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVHZW9tZXRyeShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB2aWV3U2l6ZSwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgbGF5ZXJQb3NpdGlvbiwgYm9vbCBmbHVzaFN5bmNocm9ub3VzbHksIGNv
bnN0IFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQmIGZlbmNlUG9ydCkgeyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgcmVwbHlXaXRoRmVuY2VBZnRlck5leHRGbHVzaCh1aW50NjRfdCBjYWxsYmFja0lEKSB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgppbmRleCA1
ZjY2NWZlZjRlYjY5YThlYTdkNzEyNGMxOTA5MTUzYWVmNTJhNzQzLi44NGM2NzIyYjEzM2ViNjdh
MTUyNGZlODQxZWIxNTkxNzBlZWIzNGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsy
Niw3IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIHsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIC8vIFVzZWQgYnkgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuCi0gICAgVXBkYXRl
R2VvbWV0cnkoV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSwgV2ViQ29yZTo6SW50U2l6ZSBsYXll
clBvc2l0aW9uLCBib29sIGZsdXNoU3luY2hyb25vdXNseSkKKyAgICBVcGRhdGVHZW9tZXRyeShX
ZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplLCBXZWJDb3JlOjpJbnRTaXplIGxheWVyUG9zaXRpb24s
IGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5LCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0IGZlbmNlUG9y
dCkKICAgICBTZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKICAg
ICBTZXRDb2xvclNwYWNlKHN0cnVjdCBXZWJLaXQ6OkNvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2Up
CiAgICAgU2V0RXhwb3NlZFJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IGV4cG9zZWRSZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDRkZTgx
NjQwZWIzMDE5NTYxYzBmN2VjMTg5N2YxODE1NzkyZjU3MmIuLjE1N2QwODQ1YzgyZjI4NDQwOTIx
MjI1ZTM2YzE4M2VlMTYyZWY0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE0NzIsNyArMTQ3Miw3IEBAIHZvaWQgV2ViUGFnZTo6c2Nh
bGVWaWV3KGRvdWJsZSBzY2FsZSkKIHZvaWQgV2ViUGFnZTo6c2NhbGVWaWV3QW5kVXBkYXRlR2Vv
bWV0cnlGZW5jZWQoZG91YmxlIHNjYWxlLCBJbnRTaXplIHZpZXdTaXplLCB1aW50NjRfdCBjYWxs
YmFja0lEKQogewogICAgIHNjYWxlVmlldyhzY2FsZSk7Ci0gICAgbV9kcmF3aW5nQXJlYS0+dXBk
YXRlR2VvbWV0cnkodmlld1NpemUsIEludFNpemUoKSwgZmFsc2UpOworICAgIG1fZHJhd2luZ0Fy
ZWEtPnVwZGF0ZUdlb21ldHJ5KHZpZXdTaXplLCBJbnRTaXplKCksIGZhbHNlLCBNYWNoU2VuZFJp
Z2h0KCkpOwogICAgIG1fZHJhd2luZ0FyZWEtPnJlcGx5V2l0aEZlbmNlQWZ0ZXJOZXh0Rmx1c2go
Y2FsbGJhY2tJRCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
aAppbmRleCA5NjM3OGZhZTk5ZmJmNzk3OTZiZWI5ZWE2YTYyNmMwZDU0ODQ4NTg4Li5hYWY2N2Q5
YjJlMDU4NThiYWQ2MDlmZDE4YjViODQ0MWZlMWQ5NWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzRGlzcGxheSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVk
c0Rpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVHZW9tZXRyeShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB2aWV3U2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgbGF5ZXJQb3NpdGlvbiwgYm9vbCBmbHVzaFN5bmNocm9ub3Vz
bHkpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHZW9tZXRyeShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiB2aWV3U2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbGF5ZXJQb3Np
dGlvbiwgYm9vbCBmbHVzaFN5bmNocm9ub3VzbHksIGNvbnN0IFdlYkNvcmU6Ok1hY2hTZW5kUmln
aHQmIGZlbmNlUG9ydCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCBiZGEw
OTkyYzk1YTk2MGRiYzYzMzU4Yjc2ZmZiNTAzYmExY2Q0MGU2Li41Y2NiY2FlMzUxZDE4NDc0ODk4
NzViYTNjM2NiNmMwNGQ4YmU2ZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEubW0KQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
OjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihHcmFwaGljc0xheWVyKiByb290TGF5ZQogICAgIHNj
aGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCk7CiB9CiAKLXZvaWQgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWE6OnVwZGF0ZUdlb21ldHJ5KGNvbnN0IEludFNpemUmIHZpZXdTaXplLCBjb25z
dCBJbnRTaXplJiBsYXllclBvc2l0aW9uLCBib29sIGZsdXNoU3luY2hyb25vdXNseSkKK3ZvaWQg
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZUdlb21ldHJ5KGNvbnN0IEludFNpemUm
IHZpZXdTaXplLCBjb25zdCBJbnRTaXplJiBsYXllclBvc2l0aW9uLCBib29sIGZsdXNoU3luY2hy
b25vdXNseSwgY29uc3QgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCYpCiB7CiAgICAgbV92aWV3U2l6
ZSA9IHZpZXdTaXplOwogICAgIG1fd2ViUGFnZS5zZXRTaXplKHZpZXdTaXplKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCBlYTg0NDFhN2EyODM1ZjcxMjAx
ZTM5YzljMTdmOGMxZWRhYzBlODZiLi4wYWJlZTIzZWFjYzk0NWI5MzBjOTQ0MDRmNjIwY2NiMTZi
OWE3NzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCkBAIC05
Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGZsdXNoTGF5ZXJzKCkgb3Zl
cnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVHZW9tZXRyeShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB2aWV3U2l6ZSwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgbGF5ZXJQb3NpdGlvbiwgYm9vbCBmbHVzaFN5bmNocm9ub3VzbHkpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHZW9tZXRyeShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiB2aWV3U2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbGF5ZXJQb3NpdGlvbiwgYm9v
bCBmbHVzaFN5bmNocm9ub3VzbHksIGNvbnN0IFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQmIGZlbmNl
UG9ydCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZs
b2F0KSBvdmVycmlkZTsKICAgICB2b2lkIHN1c3BlbmRQYWludGluZygpOwogICAgIHZvaWQgcmVz
dW1lUGFpbnRpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
CmluZGV4IDRjMGFkNjUxOTk2ZWRkNDNkNmJkZjZhNjk4NmRiNjVkZGViMGNjNDIuLjA0NzAzNDMx
ZDUwNWIxN2JiNjUwYWMwNGE3ZTBhYzEwZGQ1MjdmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtNTAxLDcgKzUwMSw3IEBAIHZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVNjcm9sbGVkRXhwb3NlZFJlY3QoKQogICAgIGZy
YW1lVmlldy0+c2V0RXhwb3NlZFJlY3QobV9zY3JvbGxlZEV4cG9zZWRSZWN0KTsKIH0KIAotdm9p
ZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlR2VvbWV0cnkoY29uc3QgSW50
U2l6ZSYgdmlld1NpemUsIGNvbnN0IEludFNpemUmIGxheWVyUG9zaXRpb24sIGJvb2wgZmx1c2hT
eW5jaHJvbm91c2x5KQordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRl
R2VvbWV0cnkoY29uc3QgSW50U2l6ZSYgdmlld1NpemUsIGNvbnN0IEludFNpemUmIGxheWVyUG9z
aXRpb24sIGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5LCBjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJp
Z2h0JiBmZW5jZVBvcnQpCiB7CiAgICAgbV9pblVwZGF0ZUdlb21ldHJ5ID0gdHJ1ZTsKIApAQCAt
NTM1LDEyICs1MzUsMTkgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBk
YXRlR2VvbWV0cnkoY29uc3QgSW50U2l6ZSYgdmlld1NpemUsIGNvbnMKIAogICAgIGlmIChmbHVz
aFN5bmNocm9ub3VzbHkpIHsKICAgICAgICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hdOworI2lmICFI
QVZFKENPUkVBTklNQVRJT05fRkVOQ0VTKQorICAgICAgICAvLyBXZSBjYW4ndCBzeW5jaHJvbml6
ZSBoZXJlIGlmIHdlJ3JlIHVzaW5nIGZlbmNlcyBvciB3ZSdsbCBibG93IHRoZSBmZW5jZSBldmVy
eSB0aW1lIChhbmQgd2UgZG9uJ3QgbmVlZCB0bykuCiAgICAgICAgIFtDQVRyYW5zYWN0aW9uIHN5
bmNocm9uaXplXTsKKyNlbmRpZgogICAgIH0KIAogICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2Vz
OjpEcmF3aW5nQXJlYVByb3h5OjpEaWRVcGRhdGVHZW9tZXRyeSgpKTsKIAogICAgIG1faW5VcGRh
dGVHZW9tZXRyeSA9IGZhbHNlOworCisjaWYgSEFWRShDT1JFQU5JTUFUSU9OX0ZFTkNFUykKKyAg
ICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNldEZlbmNlUG9ydChmZW5jZVBvcnQuc2VuZFJpZ2h0
KCkpOworI2VuZGlmCiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNl
dERldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256471</attachid>
            <date>2015-07-09 01:41:47 -0700</date>
            <delta_ts>2015-07-10 15:02:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146294-20150709014046.patch</filename>
            <type>text/plain</type>
            <size>26779</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhkYzM2ZGVlZTQ1ZDZhYjhiZWM2ZDgz
NmI1ZjQ0NDI0MWMxZDI2ODUuLmZkZjk4MWY3ZTNiMmUxYzkyMzNlNGE5M2Q4NTFlYTFiOTBlYTI3
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDctMDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENvcmVBbmltYXRpb24gZmVuY2VzIGlu
c3RlYWQgb2Ygc3luY2hyb25vdXMgSVBDIHRvIHN5bmNocm9uaXplIHJlc2l6ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2Mjk0CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yMTA5MDE5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICBBZGQgSEFWRShDT1JF
QU5JTUFUSU9OX0ZFTkNFUykKKwogMjAxNS0wNy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIERyb3AgUmVmUHRyOjpjbGVhcigpIG1ldGhvZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGE1ZmY0ZDljNWU5Y2Y1ODI2YmM4MTY2ZWJjZjc3NTUwNDA5OTYzMjkuLjJlNmYxOGQ2NzA4
ZDMwNWM3ZWRlODJlNTZhMGFkOTY3MTNjY2NkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxNS0wNy0wOSAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgVXNlIENvcmVBbmltYXRpb24gZmVuY2VzIGluc3RlYWQgb2Ygc3luY2hyb25v
dXMgSVBDIHRvIHN5bmNocm9uaXplIHJlc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2Mjk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTA5
MDE5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBsYXRmb3JtL2NvY29hL01hY2hTZW5kUmlnaHQuaDoKKyAgICAgICAgRXhwb3J0IHNvbWUgY29u
c3RydWN0b3JzLgorCisgICAgICAgICogcGxhdGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEku
aDoKKyAgICAgICAgQWRkIHNvbWUgU1BJLgorCiAyMDE1LTA3LTA4ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIFBpbmdMb2FkZXJzIHRvIHRoZSBOZXR3
b3JraW5nUHJvY2Vzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1NzgxOWUwMWE1ZTE5ZTQxYTFiNmQwNWNlYjNk
NGE1OTAxYmYyZmQzLi5kN2ZmMDk1ZDkwNjMwYjlhNDc5ZWNmOTQyNzliMjNlM2E0OWYyZWU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMTUtMDctMDkgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENvcmVBbmltYXRpb24gZmVuY2Vz
IGluc3RlYWQgb2Ygc3luY2hyb25vdXMgSVBDIHRvIHN5bmNocm9uaXplIHJlc2l6ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2Mjk0CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yMTA5MDE5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBCZWNhdXNlIG9mIGNoYW5nZXMgaW4gdW5kZXJseWluZyBmcmFt
ZXdvcmtzLCB3ZSBjYW4gbm8gbG9uZ2VyIGRlcGVuZCBvbgorICAgICAgICBibG9ja2luZyB0aGUg
VUkgcHJvY2VzcyBtYWluIHRocmVhZCB0byBiZSBzdWZmaWNpZW50IHRvIHN5bmNocm9uaXplCisg
ICAgICAgIFVJIHByb2Nlc3MgQ0EgY29tbWl0cyB3aXRoIGNvbW1pdHMgY29taW5nIGZyb20gdGhl
IFdlYiBwcm9jZXNzLgorCisgICAgICAgIEluc3RlYWQsIHdlIGhhdmUgdG8gdXNlIENvcmVBbmlt
YXRpb24gZmVuY2VzIHRvIHBlcmZvcm0gdGhpcyBzeW5jaHJvbml6YXRpb24uCisgICAgICAgIElu
c3RlYWQgb2YgYmxvY2tpbmcgaW5zaWRlIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5LCB3
ZSdsbCBlbmQgdXAKKyAgICAgICAgYmxvY2tpbmcgZHVyaW5nIHRoZSBDQSBjb21taXQuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbToKKyAgICAgICAgVXNl
IEhBVkUoQ09SRUFOSU1BVElPTl9GRU5DRVMpLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246Omluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2spOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp1bmluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2Fs
bGJhY2spOgorICAgICAgICBLZWVwIHRyYWNrIG9mIGEgc2V0IG9mIGluY29taW5nIHN5bmMgbWVz
c2FnZSBjYWxsYmFja3MsIGFuZCBmaXJlIHRoZW0KKyAgICAgICAgKG9uIGFub3RoZXIgcXVldWUp
IHdoZW4gYSBzeW5jIG1lc3NhZ2UgYXJyaXZlcy4KKworICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpoYXNJbmNvbWluZ1N5bmNNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oOgorICAgICAgICBBZGQgYSB3YXkgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzeW5j
IG1lc3NhZ2VzIGluIHRoZSBxdWV1ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IGZvcmNlQXN5bmNEcmF3aW5nQXJlYVNpemVVcGRh
dGU6XSk6CisgICAgICAgICgtW1dLVmlldyB3YWl0Rm9yQXN5bmNEcmF3aW5nQXJlYVNpemVVcGRh
dGVdKToKKyAgICAgICAgVGhlc2UgYXJlIG5vIGxvbmdlciB1c2VkOyBkbyBub3RoaW5nIG9uIDEw
LjEwKy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTo6c2VuZFVwZGF0ZUdlb21ldHJ5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OnVwZGF0ZUdlb21l
dHJ5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzY2FsZVZpZXdBbmRVcGRhdGVHZW9tZXRyeUZlbmNlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1
cGRhdGVHZW9tZXRyeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5oOgorICAgICAgICBBZGQgYSBNYWNoU2VuZFJpZ2h0IHBh
cmFtZXRlciB0byBVcGRhdGVHZW9tZXRyeSwgc28gdGhhdCB3ZSBjYW4gc2VuZCBhbG9uZworICAg
ICAgICBhIGZlbmNlIHBvcnQgd2l0aCB0aGUgZ2VvbWV0cnkgdXBkYXRlIGlmIG5lZWRlZC4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Ojp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAgIEFwcGx5IHRoZSBpbmNvbWluZyBmZW5jZSBzbyB0
aGF0IGdlb21ldHJ5IGNoYW5nZXMgd2lsbCBiZSBzeW5jaHJvbml6ZWQgYmV0d2VlbiBwcm9jZXNz
ZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHk6OndhaXRGb3JQb3NzaWJsZUdlb21ldHJ5VXBkYXRlKToKKyAgICAgICAgRG9uJ3Qg
d2FpdCBmb3IgRGlkVXBkYXRlR2VvbWV0cnkgdG8gY29tZSBpbiBpZiB3ZSdyZSB1c2luZyBmZW5j
ZXMgdG8gYWNoaWV2ZSB0aGUgc2FtZSB0aGluZy4KKworICAgICAgICAoV2ViS2l0OjpUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjpzZW5kVXBkYXRlR2VvbWV0cnkpOgorICAgICAg
ICBDcmVhdGUgYW5kIGJsb2NrIHVzIG9uIGEgZmVuY2UgYW5kIHNlbmQgaXQgYWxvbmcgd2l0aCB0
aGUgZ2VvbWV0cnkgdXBkYXRlLgorICAgICAgICBJZiBhIHN5bmMgbWVzc2FnZSBpcyBpbiB0aGUg
aW5jb21pbmcgbWVzc2FnZSBxdWV1ZSwgZG9uJ3QgY3JlYXRlIHRoZSBmZW5jZTsKKyAgICAgICAg
aWYgYSBzeW5jIG1lc3NhZ2UgY29tZXMgaW4gYXQgYW55IHBvaW50IGFmdGVyIHdlJ3ZlIGluc3Rh
bGxlZCB0aGUgZmVuY2UgKGJ1dAorICAgICAgICBiZWZvcmUgdGhlIHJlbGV2YW50IGNvbW1pdCBj
b21wbGV0ZXMpLCBpbnZhbGlkYXRlIHRoZSBmZW5jZSwgc28gdGhhdCB3ZSB3b24ndAorICAgICAg
ICBlbmQgdXAgdGVtb3JhcmlseSBkZWFkbG9ja2VkIHdhaXRpbmcgZm9yIHRoZSBmZW5jZSB0aW1l
b3V0LgorCiAyMDE1LTA3LTA4ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgogCiAgICAgICAgIFNuYXBzaG90cyBjYW4gYmUgbWlzcGxhY2VkIHdoZW4gY3VzdG9tIHN3aXBl
IHZpZXdzIGFyZSBvZmZzZXQgZnJvbSB0aGUgd2luZG93IG9yaWdpbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXgg
YjVlOTg1OWNjNDU5ODYyODcyYTMxYmQ0MTViZTQ0ZWM1YzI3NDgzMC4uMGQwZTA4MWIxZmY0ZGNj
ZTdlNGVkMzI5ZmI5NTMwODZkNWE5NWRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTUxLDQgKzExNTEs
OSBAQAogI2RlZmluZSBFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9OX01PREUgMQogI2VuZGlmCiAK
Ky8qIFdoaWxlIDEwLjEwIGhhcyBzdXBwb3J0IGZvciBmZW5jZXMsIGl0IGlzIG1pc3Npbmcgc29t
ZSBBUEkgaW1wb3J0YW50IGZvciBvdXIgaW50ZWdyYXRpb24gb2YgdGhlbS4gKi8KKyNpZiBQTEFU
Rk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMTAwKQorI2RlZmluZSBIQVZFX0NPUkVBTklNQVRJT05fRkVOQ0VTIDEKKyNl
bmRpZgorCiAjZW5kaWYgLyogV1RGX1BsYXRmb3JtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL01hY2hTZW5kUmlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL01hY2hTZW5kUmlnaHQuaAppbmRleCBjNGJhZjI4MzEwMGY3MWIzZTI1ZmNm
MGQyMTVlZGU4ZmFmNWE5NTJhLi5kOGVkNTBlNjYzY2RmMDY0ZjBmMGRjNzBiYWY3NzA1ZDVkMTgw
YWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NYWNoU2VuZFJp
Z2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWFjaFNlbmRSaWdodC5o
CkBAIC0zNSw4ICszNSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTWFj
aFNlbmRSaWdodCBhZG9wdChtYWNoX3BvcnRfdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IE1hY2hTZW5kUmlnaHQgY3JlYXRlKG1hY2hfcG9ydF90KTsKIAotICAgIE1hY2hTZW5kUmlnaHQo
KSA9IGRlZmF1bHQ7Ci0gICAgTWFjaFNlbmRSaWdodChNYWNoU2VuZFJpZ2h0JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIE1hY2hTZW5kUmlnaHQoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBP
UlQgTWFjaFNlbmRSaWdodChNYWNoU2VuZFJpZ2h0JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5N
YWNoU2VuZFJpZ2h0KCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBNYWNoU2VuZFJpZ2h0JiBvcGVy
YXRvcj0oTWFjaFNlbmRSaWdodCYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCmluZGV4IDY3MWI1MGVhZDc3MDUwNThmZTBhNmIxNjZh
ZDgxYTY2Mzk4ZWM1ZWEuLjY4Mzc5OWI3MDg4NTAzZTNkZWUwMTYwOGM5NTNhN2FiOWUxNWFlNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9RdWFydHpDb3Jl
U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNvcmVT
UEkuaApAQCAtMTM2LDYgKzEzNiwxNCBAQCBFWFRFUk5fQyB2b2lkIENBUmVuZGVyU2VydmVyQ2Fw
dHVyZUxheWVyV2l0aFRyYW5zZm9ybShtYWNoX3BvcnRfdCBzZXJ2ZXJQb3J0LCB1aQogRVhURVJO
X0Mgdm9pZCBDQVJlbmRlclNlcnZlclJlbmRlckxheWVyV2l0aFRyYW5zZm9ybShtYWNoX3BvcnRf
dCBzZXJ2ZXJfcG9ydCwgdWludDMyX3QgY2xpZW50X2lkLCB1aW50NjRfdCBsYXllcl9pZCwgSU9T
dXJmYWNlUmVmIGlvc3VyZmFjZSwgaW50MzJfdCBveCwgaW50MzJfdCBveSwgY29uc3QgQ0FUcmFu
c2Zvcm0zRCAqbWF0cml4KTsKICNlbmRpZgogCisKKy8vIEZJWE1FOiBNb3ZlIHRoaXMgaW50byB0
aGUgQVBQTEVfSU5URVJOQUxfU0RLIGJsb2NrIG9uY2UgaXQncyBpbiBhbiBTREsuCitAaW50ZXJm
YWNlIENBQ29udGV4dCAoQWRkaXRpb25hbERldGFpbHMpCisjaWYgKFBMQVRGT1JNKElPUykgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gOTAwMDApIHx8IChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwKQorLSAodm9p
ZClpbnZhbGlkYXRlRmVuY2VzOworI2VuZGlmCitAZW5kCisKIEVYVEVSTl9DIE5TU3RyaW5nICog
Y29uc3Qga0NBVGlsZWRMYXllclJlbW92ZUltbWVkaWF0ZWx5OwogCiBFWFRFUk5fQyBOU1N0cmlu
ZyAqIGNvbnN0IGtDQUZpbHRlckNvbG9ySW52ZXJ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDY2NGNjMzRhNTI2MTFlZDQ0ZDk5Nzg2MjMwMmUzNjQy
OTVkM2IwYjQuLmIzNzlhMGYyMGRkOGEyNmY1NDgxZWIyYTJlNWI1YTNiNmViMmQ5ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTIxOCw2ICsyMTgs
NyBAQCBDb25uZWN0aW9uOjpDb25uZWN0aW9uKElkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBp
c1NlcnZlciwgQ2xpZW50JiBjbGllbnQpCiAgICAgLCBtX2RpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShmYWxzZSkKICAgICAsIG1fd2FpdGluZ0Zvck1lc3NhZ2UobnVsbHB0cikKICAgICAsIG1fc2hv
dWxkV2FpdEZvclN5bmNSZXBsaWVzKHRydWUpCisgICAgLCBtX2luY29taW5nU3luY01lc3NhZ2VD
YWxsYmFja1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LklQQy5JbmNv
bWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tRdWV1ZSIpKQogewogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKQEAgLTY2OSw2ICs2NzAsMTUgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNz
SW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gbWVzc2FnZSkK
ICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChtZXNzYWdlLT5pc1N5bmNNZXNzYWdlKCkpIHsKKyAg
ICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2sobV9pbmNvbWluZ1N5bmNNZXNz
YWdlQ2FsbGJhY2tNdXRleCk7CisKKyAgICAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG1faW5j
b21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrcy52YWx1ZXMoKSkKKyAgICAgICAgICAgIG1faW5jb21p
bmdTeW5jTWVzc2FnZUNhbGxiYWNrUXVldWUtPmRpc3BhdGNoKGNhbGxiYWNrKTsKKworICAgICAg
ICBtX2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFja3MuY2xlYXIoKTsKKyAgICB9CisKICAgICAv
LyBDaGVjayBpZiB0aGlzIGlzIGEgc3luYyBtZXNzYWdlIG9yIGlmIGl0J3MgYSBtZXNzYWdlIHRo
YXQgc2hvdWxkIGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVuIHdhaXRpbmcgZm9yCiAgICAgLy8gYSBz
eW5jIHJlcGx5LiBJZiBpdCBpcywgYW5kIHdlJ3JlIHdhaXRpbmcgZm9yIGEgc3luYyByZXBseSB0
aGlzIG1lc3NhZ2UgbmVlZHMgdG8gYmUgZGlzcGF0Y2hlZC4KICAgICAvLyBJZiB3ZSBkb24ndCB3
ZSdsbCBlbmQgdXAgd2l0aCBhIGRlYWRsb2NrIHdoZXJlIGJvdGggc3luYyBtZXNzYWdlIHNlbmRl
cnMgYXJlIHN0dWNrIHdhaXRpbmcgZm9yIGEgcmVwbHkuCkBAIC02OTUsNiArNzA1LDM1IEBAIHZv
aWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8TWVz
c2FnZURlY29kZXI+IG1lc3NhZ2UpCiAgICAgZW5xdWV1ZUluY29taW5nTWVzc2FnZShXVEY6Om1v
dmUobWVzc2FnZSkpOwogfQogCit1aW50NjRfdCBDb25uZWN0aW9uOjppbnN0YWxsSW5jb21pbmdT
eW5jTWVzc2FnZUNhbGxiYWNrKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY2FsbGJhY2spCit7Cisg
ICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2sobV9pbmNvbWluZ1N5bmNNZXNzYWdl
Q2FsbGJhY2tNdXRleCk7CisgICAgbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tzLmFkZCht
X25leHRJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tJRCwgY2FsbGJhY2spOworCisgICAgcmV0
dXJuIG1fbmV4dEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFja0lEKys7Cit9CisKK3ZvaWQgQ29u
bmVjdGlvbjo6dW5pbnN0YWxsSW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrKHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2sobV9pbmNv
bWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tNdXRleCk7CisgICAgbV9pbmNvbWluZ1N5bmNNZXNzYWdl
Q2FsbGJhY2tzLnJlbW92ZShjYWxsYmFja0lEKTsKK30KKworYm9vbCBDb25uZWN0aW9uOjpoYXNJ
bmNvbWluZ1N5bmNNZXNzYWdlKCkKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4g
bG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRleCk7CisKKyAgICBib29sIGhhc0luY29taW5nU3lu
Y01lc3NhZ2UgPSBmYWxzZTsKKworICAgIGZvciAoYXV0byBpdCA9IG1faW5jb21pbmdNZXNzYWdl
cy5iZWdpbigpLCBlbmQgPSBtX2luY29taW5nTWVzc2FnZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytp
dCkgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+JiBtZXNzYWdlID0g
Kml0OworICAgICAgICBpZiAobWVzc2FnZS0+aXNTeW5jTWVzc2FnZSgpKQorICAgICAgICAgICAg
aGFzSW5jb21pbmdTeW5jTWVzc2FnZSA9IHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBo
YXNJbmNvbWluZ1N5bmNNZXNzYWdlOworfQorCiB2b2lkIENvbm5lY3Rpb246OnBvc3RDb25uZWN0
aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoKQogewogICAgIFJlZlB0cjxDb25uZWN0
aW9uPiBjb25uZWN0aW9uKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmgKaW5kZXggNWQyY2NkZGZmMWYxYjg3MTQxZDVmNjhhMGIwZjgyYjc4M2Q3ZmM4OC4uMThi
ZmQzMWFhZDU2OTU4YTEwYjZjZmUyY2QzNTU3Y2Y0ODBkNTU5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0yMDAsNiArMjAwLDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFNob3VsZEJvb3N0TWFpblRocmVhZE9uU3luY01lc3NhZ2UoYm9vbCBiKSB7IG1f
c2hvdWxkQm9vc3RNYWluVGhyZWFkT25TeW5jTWVzc2FnZSA9IGI7IH0KICNlbmRpZgogCisgICAg
dWludDY0X3QgaW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFjayhzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+KTsKKyAgICB2b2lkIHVuaW5zdGFsbEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFj
ayh1aW50NjRfdCk7CisgICAgYm9vbCBoYXNJbmNvbWluZ1N5bmNNZXNzYWdlKCk7CisKIHByaXZh
dGU6CiAgICAgQ29ubmVjdGlvbihJZGVudGlmaWVyLCBib29sIGlzU2VydmVyLCBDbGllbnQmKTsK
ICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyKTsKQEAgLTMwMiw2ICszMDYs
MTEgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFNlY29uZGFyeVRo
cmVhZFBlbmRpbmdTeW5jUmVwbHkqPiBTZWNvbmRhcnlUaHJlYWRQZW5kaW5nU3luY1JlcGx5TWFw
OwogICAgIFNlY29uZGFyeVRocmVhZFBlbmRpbmdTeW5jUmVwbHlNYXAgbV9zZWNvbmRhcnlUaHJl
YWRQZW5kaW5nU3luY1JlcGx5TWFwOwogCisgICAgc3RkOjptdXRleCBtX2luY29taW5nU3luY01l
c3NhZ2VDYWxsYmFja011dGV4OworICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4+IG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrczsKKyAgICBSZWY8V29ya1F1
ZXVlPiBtX2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFja1F1ZXVlOworICAgIHVpbnQ2NF90IG1f
bmV4dEluY29taW5nU3luY01lc3NhZ2VDYWxsYmFja0lEIHsgMSB9OworCiAjaWYgSEFWRShRT1Nf
Q0xBU1NFUykKICAgICBwdGhyZWFkX3QgbV9tYWluVGhyZWFkIHsgMCB9OwogICAgIGJvb2wgbV9z
aG91bGRCb29zdE1haW5UaHJlYWRPblN5bmNNZXNzYWdlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KaW5kZXggODI4
NmNmNzBiMGFiYjA2YzBiM2MzMWRmOTZlMDk4NDU5Y2VjZDhjNi4uYjZkY2Y2NDJkYzhiODFkM2I4
YTA4ZDZkZGIxNGIwYjJlYmIxOTlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KQEAgLTEwMiw3ICsxMDIsNyBAQCBDR0NvbG9y
U3BhY2VSZWYgTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y29sb3JTcGFjZSgpIGNvbnN0CiAgICAgcmV0
dXJuIFttX2NvbnRleHQgY29sb3JTcGFjZV07CiB9CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCisjaWYgSEFWRShDT1JFQU5J
TUFUSU9OX0ZFTkNFUykKIHZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6c2V0RmVuY2VQb3J0KG1h
Y2hfcG9ydF90IGZlbmNlUG9ydCkKIHsKICAgICBbbV9jb250ZXh0IHNldEZlbmNlUG9ydDpmZW5j
ZVBvcnRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4
IGU4ZDI0NDk1OGYwOWRlNWZkZWM5ZTFiYzNiMTRhMjYxMDIyZTMyYTYuLmUxYTVhNTIwMmY4MmJj
NGU1MzcyYmM0ZmFiY2MzOGEwMmRkZTdmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0KQEAgLTQ0MDcsMTIgKzQ0MDcsMTYgQEAgc3RhdGljIE5TU3RyaW5n
ICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICAgICByZXR1
cm4gbnNDb2xvcihjb2xvcik7CiB9CiAKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgogLy8g
VGhpcyBtZXRob2QgZm9yY2VzIGEgZHJhd2luZyBhcmVhIGdlb21ldHJ5IHVwZGF0ZSwgZXZlbiBp
ZiBmcmFtZSBzaXplIHVwZGF0ZXMgYXJlIGRpc2FibGVkLgogLy8gVGhlIHVwZGF0ZWQgaXMgcGVy
Zm9ybWVkIGFzeW5jaHJvbm91c2x5OyB3ZSBkb24ndCB3YWl0IGZvciB0aGUgZ2VvbWV0cnkgdXBk
YXRlIGJlZm9yZSByZXR1cm5pbmcuCiAvLyBUaGUgYXJlYSBkcmF3biBuZWVkIG5vdCBtYXRjaCB0
aGUgY3VycmVudCBmcmFtZSBzaXplIC0gaWYgaXQgZGlmZmVycyBpdCB3aWxsIGJlIGFuY2hvcmVk
IHRvIHRoZQogLy8gZnJhbWUgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGNvbnRlbnRBbmNob3Iu
CiAtICh2b2lkKWZvcmNlQXN5bmNEcmF3aW5nQXJlYVNpemVVcGRhdGU6KE5TU2l6ZSlzaXplCiB7
CisgICAgLy8gVGhpcyBTUEkgaXMgb25seSB1c2VkIG9uIDEwLjkgYW5kIGJlbG93LCBhbmQgaXMg
aW5jb21wYXRpYmxlIHdpdGggdGhlIGZlbmNlLWJhc2VkIGRyYXdpbmcgYXJlYSBzaXplIHN5bmNo
cm9uaXphdGlvbiBpbiAxMC4xMCsuCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA8PSAxMDkwCiAgICAgaWYgKF9kYXRhLT5fY2xpcHNUb1Zpc2libGVSZWN0KQogICAgICAgICBb
c2VsZiBfdXBkYXRlVmlld0V4cG9zZWRSZWN0XTsKICAgICBbc2VsZiBfc2V0RHJhd2luZ0FyZWFT
aXplOnNpemVdOwpAQCAtNDQyMiwxMCArNDQyNiwxNSBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhX
aXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQogICAgIC8vIHRoZSBkcmF3
aW5nIGFyZWEgc2l6ZSBzdWNoIHRoYXQgdGhlIGxhdGVzdCB1cGRhdGUgaXMgc2VudC4KICAgICBp
ZiAoRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0FyZWEgPSBfZGF0YS0+X3BhZ2UtPmRyYXdpbmdB
cmVhKCkpCiAgICAgICAgIGRyYXdpbmdBcmVhLT53YWl0Rm9yUG9zc2libGVHZW9tZXRyeVVwZGF0
ZShzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzOjp6ZXJvKCkpOworI2Vsc2UKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyNlbmRpZgogfQogCiAtICh2b2lkKXdhaXRGb3JBc3luY0RyYXdpbmdB
cmVhU2l6ZVVwZGF0ZQogeworICAgIC8vIFRoaXMgU1BJIGlzIG9ubHkgdXNlZCBvbiAxMC45IGFu
ZCBiZWxvdywgYW5kIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBmZW5jZS1iYXNlZCBkcmF3aW5n
IGFyZWEgc2l6ZSBzeW5jaHJvbml6YXRpb24gaW4gMTAuMTArLgorI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPD0gMTA5MAogICAgIGlmIChEcmF3aW5nQXJlYVByb3h5KiBkcmF3
aW5nQXJlYSA9IF9kYXRhLT5fcGFnZS0+ZHJhd2luZ0FyZWEoKSkgewogICAgICAgICAvLyBJZiBh
IGdlb21ldHJ5IHVwZGF0ZSBpcyBzdGlsbCBwZW5kaW5nIHRoZW4gdGhlIGFjdGlvbiBvZiByZWNl
aXZpbmcgdGhlCiAgICAgICAgIC8vIGZpcnN0IGdlb21ldHJ5IHVwZGF0ZSBtYXkgcmVzdWx0IGlu
IGFub3RoZXIgdXBkYXRlIGJlaW5nIHNjaGVkdWxlZCAtCkBAIC00NDMzLDcgKzQ0NDIsMTEgQEAg
c3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAq
cGF0aCkKICAgICAgICAgZHJhd2luZ0FyZWEtPndhaXRGb3JQb3NzaWJsZUdlb21ldHJ5VXBkYXRl
KERyYXdpbmdBcmVhUHJveHk6OmRpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlVGltZW91dCgpIC8g
Mik7CiAgICAgICAgIGRyYXdpbmdBcmVhLT53YWl0Rm9yUG9zc2libGVHZW9tZXRyeVVwZGF0ZShE
cmF3aW5nQXJlYVByb3h5OjpkaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZVRpbWVvdXQoKSAvIDIp
OwogICAgIH0KKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKIH0KKyNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIAogLSAoQk9PTClpc1VzaW5nVUlTaWRlQ29tcG9z
aXRpbmcKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCA5NWZiYTA0MDY4YWJi
ODI4YTBiYjJiMjZlMjhkNWFmZjVkZjgzZWRkLi5hZGZhZjQ3OGQ1ZjYwMTJkNGI2YWEyOWYyYTAz
YTMzYTg4NjE5ZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUv
UXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2VQb29sLmg+CisjaW1wb3J0
IDxXZWJDb3JlL01hY2hTZW5kUmlnaHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQWN0aW9uRGlz
YWJsaW5nQ0FMYXllckRlbGVnYXRlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJUEM7CkBAIC0xNzAs
NyArMTcxLDcgQEAgRmxvYXRSZWN0IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OnNj
YWxlZEV4cG9zZWRSZWN0KCkgY29uc3QKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTo6c2VuZFVwZGF0ZUdlb21ldHJ5KCkKIHsKICAgICBtX2xhc3RTZW50U2l6ZSA9IG1fc2l6
ZTsKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6RHJhd2luZ0Fy
ZWE6OlVwZGF0ZUdlb21ldHJ5KG1fc2l6ZSwgSW50U2l6ZSgpLCBmYWxzZSksIG1fd2ViUGFnZVBy
b3h5LnBhZ2VJRCgpKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6RHJhd2luZ0FyZWE6OlVwZGF0ZUdlb21ldHJ5KG1fc2l6ZSwgSW50U2l6ZSgpLCBmYWxzZSwg
TWFjaFNlbmRSaWdodCgpKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOwogICAgIG1faXNXYWl0
aW5nRm9yRGlkVXBkYXRlR2VvbWV0cnkgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWFQcm94eS5oCmluZGV4IGUxZDJiMjE2ZjQ4OWRkMDc5MzY2YzM1YWNmN2QyOGIzMTU0MTNk
ZWQuLjk1ODY3MjdmYjI5M2U2NGQ4NTM4NjZkOTEyODM3N2ZiYTgxYTE1NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCkBAIC02MSw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIGludHJpbnNpY0NvbnRlbnRTaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2VuZFVwZGF0ZUdlb21ldHJ5KCk7Cisg
ICAgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCBjcmVhdGVGZW5jZUZvckdlb21ldHJ5VXBkYXRlKCk7
CiAKICAgICAvLyBXaGV0aGVyIHdlJ3JlIHdhaXRpbmcgZm9yIGEgRGlkVXBkYXRlR2VvbWV0cnkg
bWVzc2FnZSBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICBib29sIG1faXNXYWl0aW5nRm9yRGlk
VXBkYXRlR2VvbWV0cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KaW5kZXgg
Njc0YTk0NjI3NWMyOTg5YWNiYTYxZTc0OTMxMjBkYzFjY2VmNGNhNS4uNmEyMmNiYjcwN2Q0MGQ4
MmE2ODliMGQ4YTE1MmViZWVlZTI0ZWUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQ
cm94eS5tbQpAQCAtMzQsNiArMzQsOCBAQAogI2ltcG9ydCAiTGF5ZXJUcmVlQ29udGV4dC5oIgog
I2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNp
bXBvcnQgPFdlYkNvcmUvTWFjaFNlbmRSaWdodC5oPgorI2ltcG9ydCA8V2ViQ29yZS9RdWFydHpD
b3JlU1BJLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJUEM7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKQEAgLTcwLDYgKzcyLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVBy
b3h5OjpzaXplRGlkQ2hhbmdlKCkKIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YVByb3h5Ojp3YWl0Rm9yUG9zc2libGVHZW9tZXRyeVVwZGF0ZShzdGQ6OmNocm9ubzo6bWlsbGlz
ZWNvbmRzIHRpbWVvdXQpCiB7CisjaWYgIUhBVkUoQ09SRUFOSU1BVElPTl9GRU5DRVMpCiAgICAg
aWYgKCFtX2lzV2FpdGluZ0ZvckRpZFVwZGF0ZUdlb21ldHJ5KQogICAgICAgICByZXR1cm47CiAK
QEAgLTc3LDYgKzgwLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5
Ojp3YWl0Rm9yUG9zc2libGVHZW9tZXRyeVVwZGF0ZShzdGQ6OmNocm8KICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFu
ZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJveHk6OkRpZFVwZGF0
ZUdlb21ldHJ5PihtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSwgdGltZW91dCwgSW50ZXJydXB0V2Fp
dGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyNlbmRpZgogfQogCiB2b2lkIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmNvbG9yU3BhY2VEaWRDaGFuZ2UoKQpAQCAtMTQ2LDEy
ICsxNTAsNDUgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3aWxs
U2VuZFVwZGF0ZUdlb21ldHJ5KCkKICAgICBtX2lzV2FpdGluZ0ZvckRpZFVwZGF0ZUdlb21ldHJ5
ID0gdHJ1ZTsKIH0KIAorTWFjaFNlbmRSaWdodCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YVByb3h5OjpjcmVhdGVGZW5jZUZvckdlb21ldHJ5VXBkYXRlKCkKK3sKKyNpZiBIQVZFKENPUkVB
TklNQVRJT05fRkVOQ0VTKQorICAgIFJldGFpblB0cjxDQUNvbnRleHQ+IHJvb3RMYXllckNvbnRl
eHQgPSBbYXNMYXllcihtX3dlYlBhZ2VQcm94eS5hY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExh
eWVyKCkpIGNvbnRleHRdOworICAgIGlmICghcm9vdExheWVyQ29udGV4dCkKKyAgICAgICAgcmV0
dXJuIE1hY2hTZW5kUmlnaHQoKTsKKworICAgIC8vIERvbid0IGZlbmNlIGlmIHdlIGhhdmUgaW5j
b21pbmcgc3luY2hyb25vdXMgbWVzc2FnZXMsIGJlY2F1c2Ugd2UgbWF5IG5vdAorICAgIC8vIGJl
IGFibGUgdG8gcmVwbHkgdG8gdGhlIG1lc3NhZ2UgdW50aWwgdGhlIGZlbmNlIHRpbWVzIG91dC4K
KyAgICBpZiAobV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+aGFzSW5jb21p
bmdTeW5jTWVzc2FnZSgpKQorICAgICAgICByZXR1cm4gTWFjaFNlbmRSaWdodCgpOworCisgICAg
TWFjaFNlbmRSaWdodCBmZW5jZVBvcnQgPSBNYWNoU2VuZFJpZ2h0OjphZG9wdChbcm9vdExheWVy
Q29udGV4dCBjcmVhdGVGZW5jZVBvcnRdKTsKKyAgICBbcm9vdExheWVyQ29udGV4dCBzZXRGZW5j
ZVBvcnQ6ZmVuY2VQb3J0LnNlbmRSaWdodCgpXTsKKworICAgIC8vIEludmFsaWRhdGUgdGhlIGZl
bmNlIGlmIGEgc3luY2hyb25vdXMgbWVzc2FnZSBhcnJpdmVzIHdoaWxlIGl0J3MgaW5zdGFsbGVk
LAorICAgIC8vIGJlY2F1c2Ugd2Ugd29uJ3QgYmUgYWJsZSB0byByZXBseSBkdXJpbmcgdGhlIGZl
bmNlLXdhaXQuCisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fd2ViUGFnZVByb3h5LnByb2Nl
c3MoKS5jb25uZWN0aW9uKCktPmluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2soW3Jv
b3RMYXllckNvbnRleHRdIHsKKyAgICAgICAgaWYgKFtyb290TGF5ZXJDb250ZXh0IHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoaW52YWxpZGF0ZUZlbmNlcyldKQorICAgICAgICAgICAgW3Jv
b3RMYXllckNvbnRleHQgaW52YWxpZGF0ZUZlbmNlc107CisgICAgfSk7CisgICAgUmVmUHRyPFdl
YlBhZ2VQcm94eT4gcmV0YWluZWRQYWdlID0gJm1fd2ViUGFnZVByb3h5OworICAgIFtDQVRyYW5z
YWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6W2NhbGxiYWNrSUQsIHJldGFpbmVkUGFnZV0geworICAg
ICAgICBpZiAoQ29ubmVjdGlvbiogY29ubmVjdGlvbiA9IHJldGFpbmVkUGFnZS0+cHJvY2Vzcygp
LmNvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnVuaW5zdGFsbEluY29taW5n
U3luY01lc3NhZ2VDYWxsYmFjayhjYWxsYmFja0lEKTsKKyAgICB9IGZvclBoYXNlOmtDQVRyYW5z
YWN0aW9uUGhhc2VQb3N0Q29tbWl0XTsKKworICAgIHJldHVybiBmZW5jZVBvcnQ7CisjZWxzZQor
ICAgIHJldHVybiBNYWNoU2VuZFJpZ2h0KCk7CisjZW5kaWYKK30KKwogdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjpzZW5kVXBkYXRlR2VvbWV0cnkoKQogewogICAgIEFT
U0VSVCghbV9pc1dhaXRpbmdGb3JEaWRVcGRhdGVHZW9tZXRyeSk7CiAKICAgICB3aWxsU2VuZFVw
ZGF0ZUdlb21ldHJ5KCk7Ci0gICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OkRyYXdpbmdBcmVhOjpVcGRhdGVHZW9tZXRyeShtX3NpemUsIEludFNpemUoKSwgdHJ1ZSks
IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OlVwZGF0ZUdlb21ldHJ5KG1fc2l6ZSwgbV9sYXll
clBvc2l0aW9uLCB0cnVlLCBjcmVhdGVGZW5jZUZvckdlb21ldHJ5VXBkYXRlKCkpLCBtX3dlYlBh
Z2VQcm94eS5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWFQcm94eTo6YWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3Jp
Z2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
aAppbmRleCA1NDdhOTYxZDdmZTA2MWEyZDEyZDAxNDI2ODE0YmI1M2U3YTFhM2QyLi4zYWQxOTE3
MGM2ZTA1MTY5ZmM4NTYwMjJlOGJiZmQ0NTM3MDFkYTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMTMxLDcgKzEzMSw3IEBAIHB1
YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIFVzZWQgYnkgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEuCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5KGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHZpZXdTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBsYXll
clBvc2l0aW9uLCBib29sIGZsdXNoU3luY2hyb25vdXNseSkgeyB9CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUdlb21ldHJ5KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdTaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBsYXllclBvc2l0aW9uLCBib29sIGZsdXNoU3luY2hyb25vdXNseSwg
Y29uc3QgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCYgZmVuY2VQb3J0KSB7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCByZXBseVdpdGhGZW5jZUFmdGVyTmV4dEZsdXNoKHVpbnQ2NF90IGNhbGxiYWNrSUQp
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCmluZGV4
IDVmNjY1ZmVmNGViNjlhOGVhN2Q3MTI0YzE5MDkxNTNhZWY1MmE3NDMuLjg0YzY3MjJiMTMzZWI2
N2ExNTI0ZmU4NDFlYjE1OTE3MGVlYjM0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KQEAgLTI2LDcg
KzI2LDcgQEAgbWVzc2FnZXMgLT4gRHJhd2luZ0FyZWEgewogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgLy8gVXNlZCBieSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS4KLSAgICBVcGRh
dGVHZW9tZXRyeShXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplLCBXZWJDb3JlOjpJbnRTaXplIGxh
eWVyUG9zaXRpb24sIGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5KQorICAgIFVwZGF0ZUdlb21ldHJ5
KFdlYkNvcmU6OkludFNpemUgdmlld1NpemUsIFdlYkNvcmU6OkludFNpemUgbGF5ZXJQb3NpdGlv
biwgYm9vbCBmbHVzaFN5bmNocm9ub3VzbHksIFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgZmVuY2VQ
b3J0KQogICAgIFNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQog
ICAgIFNldENvbG9yU3BhY2Uoc3RydWN0IFdlYktpdDo6Q29sb3JTcGFjZURhdGEgY29sb3JTcGFj
ZSkKICAgICBTZXRFeHBvc2VkUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgZXhwb3NlZFJlY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNGRl
ODE2NDBlYjMwMTk1NjFjMGY3ZWMxODk3ZjE4MTU3OTJmNTcyYi4uMTU3ZDA4NDVjODJmMjg0NDA5
MjEyMjVlMzZjMTgzZWUxNjJlZjRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTQ3Miw3ICsxNDcyLDcgQEAgdm9pZCBXZWJQYWdlOjpz
Y2FsZVZpZXcoZG91YmxlIHNjYWxlKQogdm9pZCBXZWJQYWdlOjpzY2FsZVZpZXdBbmRVcGRhdGVH
ZW9tZXRyeUZlbmNlZChkb3VibGUgc2NhbGUsIEludFNpemUgdmlld1NpemUsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCiB7CiAgICAgc2NhbGVWaWV3KHNjYWxlKTsKLSAgICBtX2RyYXdpbmdBcmVhLT51
cGRhdGVHZW9tZXRyeSh2aWV3U2l6ZSwgSW50U2l6ZSgpLCBmYWxzZSk7CisgICAgbV9kcmF3aW5n
QXJlYS0+dXBkYXRlR2VvbWV0cnkodmlld1NpemUsIEludFNpemUoKSwgZmFsc2UsIE1hY2hTZW5k
UmlnaHQoKSk7CiAgICAgbV9kcmF3aW5nQXJlYS0+cmVwbHlXaXRoRmVuY2VBZnRlck5leHRGbHVz
aChjYWxsYmFja0lEKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5oCmluZGV4IDk2Mzc4ZmFlOTlmYmY3OTc5NmJlYjllYTZhNjI2YzBkNTQ4NDg1ODguLmFhZjY3
ZDliMmUwNTg1OGJhZDYwOWZkMThiNWI4NDQxZmUxZDk1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5l
ZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUdlb21ldHJ5KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdTaXplLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBsYXllclBvc2l0aW9uLCBib29sIGZsdXNoU3luY2hyb25v
dXNseSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5KGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHZpZXdTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBsYXllclBv
c2l0aW9uLCBib29sIGZsdXNoU3luY2hyb25vdXNseSwgY29uc3QgV2ViQ29yZTo6TWFjaFNlbmRS
aWdodCYgZmVuY2VQb3J0KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IGJk
YTA5OTJjOTVhOTYwZGJjNjMzNThiNzZmZmI1MDNiYTFjZDQwZTYuLjVjY2JjYWUzNTFkMTg0NzQ4
OTg3NWJhM2MzY2I2YzA0ZDhiZTZmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5tbQpAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWE6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKEdyYXBoaWNzTGF5ZXIqIHJvb3RMYXllCiAgICAg
c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKTsKIH0KIAotdm9pZCBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYTo6dXBkYXRlR2VvbWV0cnkoY29uc3QgSW50U2l6ZSYgdmlld1NpemUsIGNv
bnN0IEludFNpemUmIGxheWVyUG9zaXRpb24sIGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5KQordm9p
ZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlR2VvbWV0cnkoY29uc3QgSW50U2l6
ZSYgdmlld1NpemUsIGNvbnN0IEludFNpemUmIGxheWVyUG9zaXRpb24sIGJvb2wgZmx1c2hTeW5j
aHJvbm91c2x5LCBjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JikKIHsKICAgICBtX3ZpZXdT
aXplID0gdmlld1NpemU7CiAgICAgbV93ZWJQYWdlLnNldFNpemUodmlld1NpemUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IGVhODQ0MWE3YTI4MzVmNzEy
MDFlMzljOWMxN2Y4YzFlZGFjMGU4NmIuLjBhYmVlMjNlYWNjOTQ1YjkzMGM5NDQwNGY2MjBjY2Ix
NmI5YTc3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAg
LTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgZmx1c2hMYXllcnMoKSBv
dmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCi0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUdlb21ldHJ5KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdTaXplLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBsYXllclBvc2l0aW9uLCBib29sIGZsdXNoU3luY2hyb25vdXNseSkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5KGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHZpZXdTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBsYXllclBvc2l0aW9uLCBi
b29sIGZsdXNoU3luY2hyb25vdXNseSwgY29uc3QgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCYgZmVu
Y2VQb3J0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3Io
ZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3VzcGVuZFBhaW50aW5nKCk7CiAgICAgdm9pZCBy
ZXN1bWVQYWludGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0KaW5kZXggNGMwYWQ2NTE5OTZlZGQ0M2Q2YmRmNmE2OTg2ZGI2NWRkZWIwY2M0Mi4uMDQ3MDM0
MzFkNTA1YjE3YmI2NTBhYzA0YTdlMGFjMTBkZDUyN2Y3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC01MDEsNyArNTAxLDcgQEAgdm9pZCBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlU2Nyb2xsZWRFeHBvc2VkUmVjdCgpCiAgICAg
ZnJhbWVWaWV3LT5zZXRFeHBvc2VkUmVjdChtX3Njcm9sbGVkRXhwb3NlZFJlY3QpOwogfQogCi12
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVHZW9tZXRyeShjb25zdCBJ
bnRTaXplJiB2aWV3U2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJQb3NpdGlvbiwgYm9vbCBmbHVz
aFN5bmNocm9ub3VzbHkpCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRh
dGVHZW9tZXRyeShjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJQ
b3NpdGlvbiwgYm9vbCBmbHVzaFN5bmNocm9ub3VzbHksIGNvbnN0IFdlYkNvcmU6Ok1hY2hTZW5k
UmlnaHQmIGZlbmNlUG9ydCkKIHsKICAgICBtX2luVXBkYXRlR2VvbWV0cnkgPSB0cnVlOwogCkBA
IC01MzUsMTIgKzUzNSwxOSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1
cGRhdGVHZW9tZXRyeShjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSwgY29ucwogCiAgICAgaWYgKGZs
dXNoU3luY2hyb25vdXNseSkgewogICAgICAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CisjaWYg
IUhBVkUoQ09SRUFOSU1BVElPTl9GRU5DRVMpCisgICAgICAgIC8vIFdlIGNhbid0IHN5bmNocm9u
aXplIGhlcmUgaWYgd2UncmUgdXNpbmcgZmVuY2VzIG9yIHdlJ2xsIGJsb3cgdGhlIGZlbmNlIGV2
ZXJ5IHRpbWUgKGFuZCB3ZSBkb24ndCBuZWVkIHRvKS4KICAgICAgICAgW0NBVHJhbnNhY3Rpb24g
c3luY2hyb25pemVdOworI2VuZGlmCiAgICAgfQogCiAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2Fn
ZXM6OkRyYXdpbmdBcmVhUHJveHk6OkRpZFVwZGF0ZUdlb21ldHJ5KCkpOwogCiAgICAgbV9pblVw
ZGF0ZUdlb21ldHJ5ID0gZmFsc2U7CisKKyNpZiBIQVZFKENPUkVBTklNQVRJT05fRkVOQ0VTKQor
ICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0RmVuY2VQb3J0KGZlbmNlUG9ydC5zZW5kUmln
aHQoKSk7CisjZW5kaWYKIH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
c2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256617</attachid>
            <date>2015-07-10 15:02:33 -0700</date>
            <delta_ts>2015-07-10 15:04:05 -0700</delta_ts>
            <desc>tiny followup</desc>
            <filename>bug-146294-20150710150130.patch</filename>
            <type>text/plain</type>
            <size>2238</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTI0MjJhOTIxZGQ1ZGYx
NWUyMDE1NjllOTAyNzYwODQ1YjQyYjQ2MS4uYTg4YTIxZDNlOWU4Y2E0ZWY1Y2NiNzU5ODBiNDVj
OWZmYzIwZDI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA3LTEwICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBDb3JlQW5p
bWF0aW9uIGZlbmNlcyBpbnN0ZWFkIG9mIHN5bmNocm9ub3VzIElQQyB0byBzeW5jaHJvbml6ZSBy
ZXNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NjI5NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjEwOTAxOTM+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmNyZWF0ZUZlbmNlRm9yR2VvbWV0cnlVcGRhdGUp
OgorICAgICAgICBUaW55IGZvbGxvd3VwOyBkb24ndCB0b3VjaCBDb25uZWN0aW9uIGlmIHRoZSBj
b25uZWN0aW9uIGlzbid0IHZhbGlkLgorCiAyMDE1LTA3LTEwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gSW5jcmVhc2UgdGhlIFFvUyBvZiBzb21lIG9m
IG91ciBXb3JrUXVldWVzIHRvIG1hdGNoIHRoZSBvbmUgb2Ygb3VyIHByb2Nlc3NlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IDZhMjJjYmI3MDdkNDBkODJhNjg5YjBk
OGExNTJlYmVlZWUyNGVlMDAuLmEwZDVjOTJiOTVjZTc3YTY5ZDM0OGZkZGY1ZDBjZDdjZTYxODhh
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KQEAgLTE1Myw2ICsxNTMs
OSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OndpbGxTZW5kVXBk
YXRlR2VvbWV0cnkoKQogTWFjaFNlbmRSaWdodCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YVByb3h5OjpjcmVhdGVGZW5jZUZvckdlb21ldHJ5VXBkYXRlKCkKIHsKICNpZiBIQVZFKENPUkVB
TklNQVRJT05fRkVOQ0VTKQorICAgIGlmICghbV93ZWJQYWdlUHJveHkuaXNWYWxpZCgpKQorICAg
ICAgICByZXR1cm4gTWFjaFNlbmRSaWdodCgpOworCiAgICAgUmV0YWluUHRyPENBQ29udGV4dD4g
cm9vdExheWVyQ29udGV4dCA9IFthc0xheWVyKG1fd2ViUGFnZVByb3h5LmFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdSb290TGF5ZXIoKSkgY29udGV4dF07CiAgICAgaWYgKCFyb290TGF5ZXJDb250ZXh0
KQogICAgICAgICByZXR1cm4gTWFjaFNlbmRSaWdodCgpOwpAQCAtMTczLDYgKzE3Niw4IEBAIE1h
Y2hTZW5kUmlnaHQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6Y3JlYXRlRmVu
Y2VGb3JHZW9tZXRyeVVwZGF0ZSgpCiAgICAgfSk7CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4g
cmV0YWluZWRQYWdlID0gJm1fd2ViUGFnZVByb3h5OwogICAgIFtDQVRyYW5zYWN0aW9uIGFkZENv
bW1pdEhhbmRsZXI6W2NhbGxiYWNrSUQsIHJldGFpbmVkUGFnZV0geworICAgICAgICBpZiAoIXJl
dGFpbmVkUGFnZS0+aXNWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAo
Q29ubmVjdGlvbiogY29ubmVjdGlvbiA9IHJldGFpbmVkUGFnZS0+cHJvY2VzcygpLmNvbm5lY3Rp
b24oKSkKICAgICAgICAgICAgIGNvbm5lY3Rpb24tPnVuaW5zdGFsbEluY29taW5nU3luY01lc3Nh
Z2VDYWxsYmFjayhjYWxsYmFja0lEKTsKICAgICB9IGZvclBoYXNlOmtDQVRyYW5zYWN0aW9uUGhh
c2VQb3N0Q29tbWl0XTsK
</data>
<flag name="review"
          id="281720"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>