<?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>133188</bug_id>
          
          <creation_ts>2014-05-22 13:19:56 -0700</creation_ts>
          <short_desc>AX: fix coordinate mapping for iOS accessibility</short_desc>
          <delta_ts>2014-05-24 12:31:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1011039</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-05-22 13:19:56 -0700</bug_when>
    <thetext>The conversion routines that accessibility is using to convert from rootToScreen and back are not &quot;scene reference&quot; aware.

That means those methods convert to the screen space, but VoiceOver and others are expecting it in scene reference space.

We need another conversion mechanism to handle this discrepancy

&lt;rdar://problem/16888499&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011044</commentid>
    <comment_count>1</comment_count>
      <attachid>231907</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-05-22 13:38:11 -0700</bug_when>
    <thetext>Created attachment 231907
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011045</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-22 13:40:31 -0700</bug_when>
    <thetext>Attachment 231907 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm:338:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 1 in 23 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>1011048</commentid>
    <comment_count>3</comment_count>
      <attachid>231908</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-05-22 13:43:22 -0700</bug_when>
    <thetext>Created attachment 231908
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011085</commentid>
    <comment_count>4</comment_count>
      <attachid>231922</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-05-22 17:14:51 -0700</bug_when>
    <thetext>Created attachment 231922
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011315</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-05-23 11:29:34 -0700</bug_when>
    <thetext>Is there a way we can do this without adding a new sync message? Can the UIProcess push the data needed for the transform down?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011413</commentid>
    <comment_count>6</comment_count>
      <attachid>232003</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-05-23 16:40:53 -0700</bug_when>
    <thetext>Created attachment 232003
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011418</commentid>
    <comment_count>7</comment_count>
      <attachid>232003</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-05-23 16:54:13 -0700</bug_when>
    <thetext>Comment on attachment 232003
patch

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

&gt; Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm:613
&gt; +IntPoint WebChromeClient::accessibilityScreenToRootView(const IntPoint&amp; p) const
&gt; +{
&gt; +    return p;
&gt; +}
&gt; +
&gt; +IntRect WebChromeClient::rootViewToAccessibilityScreen(const IntRect&amp; r) const
&gt; +{
&gt; +    return r;
&gt; +}
&gt; +#endif

p -&gt; point and r -&gt; rect please.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2312
&gt; +IntPoint WebPage::accessibilityScreenToRootView(const IntPoint&amp; point)
&gt; +{
&gt; +    IntPoint windowPoint;
&gt; +    sendSync(Messages::WebPageProxy::AccessibilityScreenToRootView(point), Messages::WebPageProxy::AccessibilityScreenToRootView::Reply(windowPoint));
&gt; +    return windowPoint;
&gt; +}
&gt;  
&gt; +IntRect WebPage::rootViewToAccessibilityScreen(const IntRect&amp; rect)
&gt; +{
&gt; +    IntRect screenRect;
&gt; +    sendSync(Messages::WebPageProxy::RootViewToAccessibilityScreen(rect), Messages::WebPageProxy::RootViewToAccessibilityScreen::Reply(screenRect));
&gt; +    return screenRect;
&gt; +}
&gt; +#endif

Do we really have to use sync messages here? Can we push the to-screen mapping into the UI process?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011421</commentid>
    <comment_count>8</comment_count>
      <attachid>232003</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-05-23 16:58:09 -0700</bug_when>
    <thetext>Comment on attachment 232003
patch

Would it be possible to keep a conversion matrix in the web process to avoid having to send sync messages?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011424</commentid>
    <comment_count>9</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-05-23 17:05:22 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 232003 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=232003&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm:613
&gt; &gt; +IntPoint WebChromeClient::accessibilityScreenToRootView(const IntPoint&amp; p) const
&gt; &gt; +{
&gt; &gt; +    return p;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +IntRect WebChromeClient::rootViewToAccessibilityScreen(const IntRect&amp; r) const
&gt; &gt; +{
&gt; &gt; +    return r;
&gt; &gt; +}
&gt; &gt; +#endif
&gt; 
&gt; p -&gt; point and r -&gt; rect please.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2312
&gt; &gt; +IntPoint WebPage::accessibilityScreenToRootView(const IntPoint&amp; point)
&gt; &gt; +{
&gt; &gt; +    IntPoint windowPoint;
&gt; &gt; +    sendSync(Messages::WebPageProxy::AccessibilityScreenToRootView(point), Messages::WebPageProxy::AccessibilityScreenToRootView::Reply(windowPoint));
&gt; &gt; +    return windowPoint;
&gt; &gt; +}
&gt; &gt;  
&gt; &gt; +IntRect WebPage::rootViewToAccessibilityScreen(const IntRect&amp; rect)
&gt; &gt; +{
&gt; &gt; +    IntRect screenRect;
&gt; &gt; +    sendSync(Messages::WebPageProxy::RootViewToAccessibilityScreen(rect), Messages::WebPageProxy::RootViewToAccessibilityScreen::Reply(screenRect));
&gt; &gt; +    return screenRect;
&gt; &gt; +}
&gt; &gt; +#endif
&gt; 
&gt; Do we really have to use sync messages here? Can we push the to-screen mapping into the UI process?

This is gonna be a bit tough. VoiceOver will message a WebAXObjectWrapper for it&apos;s frame, for example, (communicating directly to the WebProcess) and it&apos;s expecting an answer to be returned immediately.

for example the rootToScreenView() is also synchronous (which is why it&apos;s usable for AX code)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011425</commentid>
    <comment_count>10</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-05-23 17:06:09 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 232003 [details])
&gt; Would it be possible to keep a conversion matrix in the web process to avoid having to send sync messages?

The conversion code is not simple. It&apos;s spread across AX code and UIKit and accounts for a number of conversions. I can email you offline what needs to happen</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011524</commentid>
    <comment_count>11</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-05-24 12:00:53 -0700</bug_when>
    <thetext>Thanks Sam!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011528</commentid>
    <comment_count>12</comment_count>
      <attachid>232003</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-24 12:31:19 -0700</bug_when>
    <thetext>Comment on attachment 232003
patch

Clearing flags on attachment: 232003

Committed r169310: &lt;http://trac.webkit.org/changeset/169310&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011529</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-24 12:31:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231907</attachid>
            <date>2014-05-22 13:38:11 -0700</date>
            <delta_ts>2014-05-22 13:43:22 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21892</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTIxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE0LTA1LTIyICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEZyYW1lIGFuZCBo
aXQtdGVzdGluZyB0byBkbyBub3Qgd29yayB3aGVuIHdlYiB2aWV3cyBhcmUgc2NlbmUtcmVmZXJl
bmNlIGF3YXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzMxODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIFdlYkNvcmUgYXdhcmUgb2YgdGhlIGFjY2Vzc2liaWxpdHkgcG9pbnQvcmVjdCBjb252
ZXJzaW9uIG1ldGhvZHMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgY29udmVydFBvaW50VG9TY3JlZW5TcGFjZTpdKToKKyAgICAgICAgKC1bV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY29udmVydFJlY3RUb1NjcmVlblNwYWNlOl0pOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RW
aWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlT
Y3JlZW4pOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisKIDIwMTQtMDUtMjIg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01TRV0gU3RvcmVk
IHNhbXBsZXMgYXJlIG5vdCBmcmVlZCB3aGVuIFNvdXJjZUJ1ZmZlciBpcyByZW1vdmVkIGZyb20g
TWVkaWFTb3VyY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CShyZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTEy
OCw3ICsxMTI4LDcgQEAKICAgICAgICAgCiAgICAgICAgIGlmIChwYWdlKSB7CiAgICAgICAgICAg
ICBJbnRSZWN0IHJlY3QgPSBJbnRSZWN0KGludFBvaW50LCBJbnRTaXplKDAsIDApKTsKLSAgICAg
ICAgICAgIGludFBvaW50ID0gcGFnZS0+Y2hyb21lKCkucm9vdFZpZXdUb1NjcmVlbihyZWN0KS5s
b2NhdGlvbigpOworICAgICAgICAgICAgaW50UG9pbnQgPSBwYWdlLT5jaHJvbWUoKS5yb290Vmll
d1RvQWNjZXNzaWJpbGl0eVNjcmVlbihyZWN0KS5sb2NhdGlvbigpOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBjZ1BvaW50ID0gKENHUG9pbnQpaW50UG9pbnQ7CkBAIC0xMTgwLDcgKzEx
ODAsNyBAQAogICAgICAgICAgICAgcGFnZSA9IHBhcmVudC0+cGFnZSgpOwogICAgICAgICAKICAg
ICAgICAgaWYgKHBhZ2UpCi0gICAgICAgICAgICByZWN0ID0gcGFnZS0+Y2hyb21lKCkucm9vdFZp
ZXdUb1NjcmVlbihyZWN0KTsKKyAgICAgICAgICAgIHJlY3QgPSBwYWdlLT5jaHJvbWUoKS5yb290
Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihyZWN0KTsKICAgICAgICAgCiAgICAgICAgIGZyYW1l
ID0gKENHUmVjdClyZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgJKHJldmlzaW9uIDE2OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSwxMCBAQAogCiAgICAgdmlydHVh
bCBJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBwOyB9CiAgICAgdmlydHVhbCBJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4o
Y29uc3QgSW50UmVjdCYgcikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcjsgfQorI2lmIFBMQVRG
T1JNKElPUykKKyAgICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RW
aWV3KGNvbnN0IEludFBvaW50JiBwKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBwOyB9OworICAg
IHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRS
ZWN0JiByKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByOyB9OworI2VuZGlmCiAgICAgdmlydHVh
bCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKEZyYW1l
KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0IG92ZXJyaWRlIHsgfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuY3BwCShyZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsMTkgQEAKIHsKICAgICByZXR1cm4g
bV9jbGllbnQucm9vdFZpZXdUb1NjcmVlbihyZWN0KTsKIH0KKyAgICAKKyNpZiBQTEFURk9STShJ
T1MpCitJbnRQb2ludCBDaHJvbWU6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JiBwb2ludCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQuYWNjZXNzaWJp
bGl0eVNjcmVlblRvUm9vdFZpZXcocG9pbnQpOworfQogCitJbnRSZWN0IENocm9tZTo6cm9vdFZp
ZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9jbGllbnQucm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4ocmVjdCk7Cit9
CisjZW5kaWYKKwogUGxhdGZvcm1QYWdlQ2xpZW50IENocm9tZTo6cGxhdGZvcm1QYWdlQ2xpZW50
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQucGxhdGZvcm1QYWdlQ2xpZW50KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHJldmlzaW9uIDE2OTIwOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDEwIEBACiAjZW5kaWYK
ICAgICB2aXJ0dWFsIEludFBvaW50IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb1NjcmVlbihjb25z
dCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1
YWwgSW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQm
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2li
aWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCiAgICAg
dmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBDdXJzb3ImKSBvdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMTY5MjA5
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTY1LDYgKzE2NSwxMCBAQAogI2VuZGlmCiAgICAgdmlydHVhbCBJbnRQb2ludCBzY3JlZW5U
b1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVj
dCByb290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25zdCA9IDA7CisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIHZpcnR1YWwgSW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZp
ZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IHJvb3RW
aWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25zdCA9IDA7CisjZW5k
aWYgICAgCiAgICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJzTW9kZURpZENoYW5nZSgp
IGNvbnN0ID0gMDsKICNpZiBFTkFCTEUoQ1VSU09SX1NVUFBPUlQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vSG9zdFdpbmRvdy5oCShyZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDExIEBA
CiAgICAgLy8gTWV0aG9kcyBmb3IgZG9pbmcgY29vcmRpbmF0ZSBjb252ZXJzaW9ucyB0byBhbmQg
ZnJvbSBzY3JlZW4gY29vcmRpbmF0ZXMuCiAgICAgdmlydHVhbCBJbnRQb2ludCBzY3JlZW5Ub1Jv
b3RWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCBy
b290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25zdCA9IDA7Ci0KKyNpZiBQTEFURk9S
TShJT1MpCisgICAgdmlydHVhbCBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmll
dyhjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZp
ZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0ID0gMDsKKyNlbmRp
ZgorICAgIAogICAgIC8vIE1ldGhvZCBmb3IgcmV0cmlldmluZyB0aGUgbmF0aXZlIGNsaWVudCBv
ZiB0aGUgcGFnZS4KICAgICB2aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VD
bGllbnQoKSBjb25zdCA9IDA7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NjkyMTMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAxNC0wNS0yMiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBw
bGUuY29tPgorCisgICAgICAgIEFYOiBGcmFtZSBhbmQgaGl0LXRlc3RpbmcgdG8gZG8gbm90IHdv
cmsgd2hlbiB3ZWIgdmlld3MgYXJlIHNjZW5lLXJlZmVyZW5jZSBhd2FyZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMTg4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
bW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RW
aWV3KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlT
Y3JlZW4pOgorCiAyMDE0LTA1LTIwICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTWFjXSBBbGxvdyBwb3B1cCBtZW51cyB0byBvdmVycmlkZSBkZWZhdWx0IGFwcGVh
cmFuY2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYg
KzEwMSwxMCBAQAogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Ub1Jvb3RW
aWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpIGNvbnN0IG92ZXJyaWRlOworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0
IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBj
b25zdCBvdmVycmlkZTsKKyNlbmRpZgogICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBs
YXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb250
ZW50c1NpemVDaGFuZ2VkKFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1ZpZXcoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQkocmV2aXNp
b24gMTY5MjA5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MDAsNiArNjAwLDE4IEBACiAgICAgcmV0dXJu
IHI7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitJbnRQb2ludCBXZWJDaHJvbWVDbGllbnQ6OmFj
Y2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwKSBjb25zdAorewor
ICAgIHJldHVybiBwOworfQorCitJbnRSZWN0IFdlYkNocm9tZUNsaWVudDo6cm9vdFZpZXdUb0Fj
Y2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYgcikgY29uc3QKK3sKKyAgICByZXR1cm4g
cjsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybVBhZ2VDbGllbnQgV2ViQ2hyb21lQ2xpZW50OjpwbGF0
Zm9ybVBhZ2VDbGllbnQoKSBjb25zdAogewogICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gMTY5MjEzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTQtMDUtMjIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6
YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogRnJhbWUgYW5kIGhpdC10ZXN0aW5nIHRvIGRv
IG5vdCB3b3JrIHdoZW4gd2ViIHZpZXdzIGFyZSBzY2VuZS1yZWZlcmVuY2UgYXdhcmUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMxODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgaW4gYWNjZXNz
aWJpbGl0eSBjb252ZXJzaW9uIG1ldGhvZHMgdGhhdCB3aWxsIGNoZWNrIGlmIHRoZSBtZXRob2Rz
IGFyZSBwcmVzZW50IChpZiBhY2Nlc3NpYmlsaXR5IGlzIG5vdCBvbiwgdGhleSB3b24ndCBiZSkK
KyAgICAgICAgYW5kIHVzZSB0aG9zZSB0byBjb252ZXJ0IHBvaW50cyBpbnRvIHRoZSByaWdodCBj
b29yZGluYXRlIHNwYWNlIHRoYXQgVm9pY2VPdmVyIGlzIGV4cGVjdGluZy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eVNjcmVl
blRvUm9vdFZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9B
Y2Nlc3NpYmlsaXR5U2NyZWVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJv
bWVDbGllbnQ6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ2hyb21lQ2xpZW50Ojpyb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5t
bToKKyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhY2Nlc3NpYmlsaXR5
SGl0VGVzdDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMTQtMDUtMjIg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bV0sy
XSBBcHBsaWNhdGlvbiBjYWNoZSBpcyBicm9rZW4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMTY5MjA5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5NiwxMCBAQAogICAg
IHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3Jl
ZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgPSAwOwogICAgIHZpcnR1YWwg
V2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSA9IDA7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQg
YWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSA9
IDA7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5
U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CisjZW5kaWYKICAgICAKICAgICB2
aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50
JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpID0gMDsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9u
IDE2OTIwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDM2LDYgKzMwMzYsMTggQEAKICAgICByZXN1bHQgPSBtX3BhZ2VD
bGllbnQucm9vdFZpZXdUb1NjcmVlbih2aWV3UmVjdCk7CiB9CiAgICAgCisjaWYgUExBVEZPUk0o
SU9TKQordm9pZCBXZWJQYWdlUHJveHk6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNv
bnN0IEludFBvaW50JiBzY3JlZW5Qb2ludCwgSW50UG9pbnQmIHdpbmRvd1BvaW50KQoreworICAg
IHdpbmRvd1BvaW50ID0gbV9wYWdlQ2xpZW50LmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3
KHNjcmVlblBvaW50KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9BY2Nlc3Np
YmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmIHZpZXdSZWN0LCBJbnRSZWN0JiByZXN1bHQpCit7
CisgICAgcmVzdWx0ID0gbV9wYWdlQ2xpZW50LnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVu
KHZpZXdSZWN0KTsKK30KKyNlbmRpZgorICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVpbnQ2NF90IGZyYW1l
SUQsIGJvb2wmIHNob3VsZENsb3NlKQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDE2OTIwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4Niw2ICsxMTg2LDEwIEBA
CiAgICAgdm9pZCBnZXRXaW5kb3dGcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2b2lk
IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcmVlblBvaW50LCBX
ZWJDb3JlOjpJbnRQb2ludCYgd2luZG93UG9pbnQpOwogICAgIHZvaWQgcm9vdFZpZXdUb1NjcmVl
bihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgV2ViQ29yZTo6SW50UmVjdCYgcmVz
dWx0KTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9S
b290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2NyZWVuUG9pbnQsIFdlYkNvcmU6Oklu
dFBvaW50JiB3aW5kb3dQb2ludCk7CisgICAgdm9pZCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNj
cmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgV2ViQ29yZTo6SW50UmVjdCYg
cmVzdWx0KTsKKyNlbmRpZgogICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgdWludDY0X3QgZnJhbWVJRCwgYm9vbCYgc2hvdWxkQ2xvc2Up
OwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZp
ZXdwb3J0QXR0cmlidXRlcyYpOwogICAgIHZvaWQgcGFnZURpZFNjcm9sbCgpOwpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2MywxMiBAQAogICAgIEdldFdp
bmRvd0ZyYW1lKCkgLT4gKFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZSkKICAgICBTY3Jl
ZW5Ub1Jvb3RWaWV3KFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KSAtPiAoV2ViQ29yZTo6
SW50UG9pbnQgd2luZG93UG9pbnQpCiAgICAgUm9vdFZpZXdUb1NjcmVlbihXZWJDb3JlOjpJbnRS
ZWN0IHJlY3QpIC0+IChXZWJDb3JlOjpJbnRSZWN0IHNjcmVlbkZyYW1lKQorCisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIEFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KFdlYkNvcmU6OkludFBv
aW50IHNjcmVlblBvaW50KSAtPiAoV2ViQ29yZTo6SW50UG9pbnQgd2luZG93UG9pbnQpCisgICAg
Um9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oV2ViQ29yZTo6SW50UmVjdCByZWN0KSAtPiAo
V2ViQ29yZTo6SW50UmVjdCBzY3JlZW5GcmFtZSkKKyNlbmRpZgorCiAgICAgUnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKFN0cmluZyBtZXNzYWdlLCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoYm9v
bCBzaG91bGRDbG9zZSkKICAgICBQYWdlRGlkU2Nyb2xsKCkKICAgICBSdW5PcGVuUGFuZWwodWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyBwYXJhbWV0ZXJzKQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaAkocmV2aXNpb24gMTY5MjA5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw2ICs4Nyw4IEBACiAgICAg
dmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQg
c2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGFjY2Vz
c2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5
U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCB3
YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAg
dmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50
JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCShyZXZpc2lvbiAxNjky
MDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw4IEBACiAKIEBpbnRlcmZhY2UgVUlWaWV3IChJ
UEkpCiAtIChVSVNjcm9sbFZpZXcgKilfc2Nyb2xsZXI7CistIChDR1BvaW50KWFjY2Vzc2liaWxp
dHlDb252ZXJ0UG9pbnRGcm9tU2NlbmVSZWZlcmVuY2VDb29yZGluYXRlczooQ0dQb2ludClwb2lu
dDsKKy0gKENHUmVjdClhY2Nlc3NpYmlsaXR5Q29udmVydFJlY3RUb1NjZW5lUmVmZXJlbmNlQ29v
cmRpbmF0ZXM6KENHUmVjdClyZWN0OwogQGVuZAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
QEAgLTMxNyw3ICszMTksMjMgQEAKIHsKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChbbV9j
b250ZW50VmlldyBjb252ZXJ0UmVjdDpyZWN0IHRvVmlldzpuaWxdKTsKIH0KLQorICAgIAorSW50
UG9pbnQgUGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JiBwb2ludCkKK3sKKyAgICBDR1BvaW50IHJvb3RWaWV3UG9pbnQgPSBwb2ludDsK
KyAgICBpZiAoW21fY29udGVudFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY2Nl
c3NpYmlsaXR5Q29udmVydFBvaW50RnJvbVNjZW5lUmVmZXJlbmNlQ29vcmRpbmF0ZXM6KV0pCisg
ICAgICAgIHJvb3RWaWV3UG9pbnQgPSBbbV9jb250ZW50VmlldyBhY2Nlc3NpYmlsaXR5Q29udmVy
dFBvaW50RnJvbVNjZW5lUmVmZXJlbmNlQ29vcmRpbmF0ZXM6cm9vdFZpZXdQb2ludF07CisgICAg
cmV0dXJuIEludFBvaW50KHJvb3RWaWV3UG9pbnQpOworfQorICAgIAorSW50UmVjdCBQYWdlQ2xp
ZW50SW1wbDo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYgcmVj
dCkKK3sKKyAgICBDR1JlY3Qgcm9vdFZpZXdSZWN0ID0gcmVjdDsKKyAgICBpZiAoW21fY29udGVu
dFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5Q29udmVydFJl
Y3RUb1NjZW5lUmVmZXJlbmNlQ29vcmRpbmF0ZXM6KV0pCisgICAgICAgIHJvb3RWaWV3UmVjdCA9
IFttX2NvbnRlbnRWaWV3IGFjY2Vzc2liaWxpdHlDb252ZXJ0UmVjdFRvU2NlbmVSZWZlcmVuY2VD
b29yZGluYXRlczpyb290Vmlld1JlY3RdOworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHJv
b3RWaWV3UmVjdCk7Cit9CisgICAgICAgIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZG9uZVdpdGhL
ZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGwuaAkocmV2aXNpb24gMTY5MjA5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDEx
IEBACiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQg
c2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZpcnR1YWwg
V2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KTsKLQorI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGFj
Y2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgPSAw
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNj
cmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOworI2VuZGlmCisgICAgICAgIAogICAg
IHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZl
bnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCk7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
UG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopOwpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMTY5MjA5KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00ODYsNyArNDg2LDE5IEBACiB7CiAgICAgcmV0dXJuIG1fcGFnZS0+cm9v
dFZpZXdUb1NjcmVlbihyZWN0KTsKIH0KKyAgICAKKyNpZiBQTEFURk9STShJT1MpCitJbnRQb2lu
dCBXZWJDaHJvbWVDbGllbnQ6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IElu
dFBvaW50JiBwb2ludCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5hY2Nlc3NpYmlsaXR5
U2NyZWVuVG9Sb290Vmlldyhwb2ludCk7Cit9CiAKK0ludFJlY3QgV2ViQ2hyb21lQ2xpZW50Ojpy
b290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAor
eworICAgIHJldHVybiBtX3BhZ2UtPnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKHJlY3Qp
OworfQorI2VuZGlmCisKIFBsYXRmb3JtUGFnZUNsaWVudCBXZWJDaHJvbWVDbGllbnQ6OnBsYXRm
b3JtUGFnZUNsaWVudCgpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMTY5MjA5KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTE3LDYgKzExNywxMCBAQAogI2VuZGlmCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2lu
dCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworI2lmIFBMQVRGT1JNKElPUykKKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgogICAgIHZpcnR1YWwgUGxhdGZv
cm1QYWdlQ2xpZW50IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxS
ZWN0SW50b1ZpZXcoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOyAvLyBD
dXJyZW50bHkgb25seSBNYWMgaGFzIGEgbm9uIGVtcHR5IGltcGxlbWVudGF0aW9uLgpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3RJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RJT1MubW0JKHJldmlzaW9uIDE2OTIwOSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw5IEBACiAjaW1wb3J0
ICJXZWJGcmFtZS5oIgogI2ltcG9ydCAiV2ViUGFnZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9JbnRQ
b2ludC5oPgorI2ltcG9ydCA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RnJhbWVWaWV3Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KIAogLyogCiAgVGhlIGltcGxl
bWVudGF0aW9uIG9mIHRoaXMgY2xhc3Mgd2lsbCBiZSBhdWdtZW50ZWQgYnkgYW4gYWNjZXNpYmls
aXR5IGJ1bmRsZSB0aGF0IGlzIGxvYWRlZCBvbmx5IHdoZW4gYWNjZXNzaWJpbGl0eSBpcyByZXF1
ZXN0ZWQgdG8gYmUgZW5hYmxlZC4KQEAgLTcyLDcgKzc0LDcgQEAKICAgICBpZiAoIW1fcGFnZSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0
ZWRQb2ludCA9IG1fcGFnZS0+c2NyZWVuVG9Sb290VmlldyhXZWJDb3JlOjpJbnRQb2ludChwb2lu
dCkpOworICAgIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRlZFBvaW50ID0gbV9wYWdlLT5hY2Nl
c3NpYmlsaXR5U2NyZWVuVG9Sb290VmlldyhXZWJDb3JlOjpJbnRQb2ludChwb2ludCkpOwogICAg
IHJldHVybiBbW3NlbGYgYWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyXSBhY2Nlc3NpYmls
aXR5SGl0VGVzdDpjb252ZXJ0ZWRQb2ludF07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE2OTIwOSkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjI5NCw3ICsyMjk0LDIxIEBACiAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Um9vdFZpZXdUb1NjcmVlbihyZWN0KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Um9v
dFZpZXdUb1NjcmVlbjo6UmVwbHkoc2NyZWVuUmVjdCkpOwogICAgIHJldHVybiBzY3JlZW5SZWN0
OwogfQorICAgIAorSW50UG9pbnQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZp
ZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KQoreworICAgIEludFBvaW50IHdpbmRvd1BvaW50Owor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkFjY2Vzc2liaWxpdHlTY3JlZW5U
b1Jvb3RWaWV3KHBvaW50KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QWNjZXNzaWJpbGl0eVNj
cmVlblRvUm9vdFZpZXc6OlJlcGx5KHdpbmRvd1BvaW50KSk7CisgICAgcmV0dXJuIHdpbmRvd1Bv
aW50OworfQogCitJbnRSZWN0IFdlYlBhZ2U6OnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVu
KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgSW50UmVjdCBzY3JlZW5SZWN0OworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2Ny
ZWVuKHJlY3QpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSb290Vmlld1RvQWNjZXNzaWJpbGl0
eVNjcmVlbjo6UmVwbHkoc2NyZWVuUmVjdCkpOworICAgIHJldHVybiBzY3JlZW5SZWN0OworfQor
CiBJbnRSZWN0IFdlYlBhZ2U6OndpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3QKIHsKICAgICBpZiAo
bV93aW5kb3dSZXNpemVyU2l6ZS5pc0VtcHR5KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE2OTIwOSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
NSwxMSArNDI1LDE3IEBACiAKICAgICB2b2lkIGhpZGVQYWdlQmFubmVycygpOwogICAgIHZvaWQg
c2hvd1BhZ2VCYW5uZXJzKCk7CisgICAgCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAogICAg
IFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpOwotCisgICAgCisjaWYgUExBVEZPUk0oSU9TKQorICAgIFdlYkNvcmU6Oklu
dFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50Jik7CisgICAgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVl
bihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisjZW5kaWYKKyAgICAKICAgICBQYXNzUmVmUHRy
PFdlYkltYWdlPiBzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCBkb3VibGUgYWRkaXRpb25hbFNjYWxlRmFjdG9yLCBTbmFwc2hvdE9wdGlvbnMpOwogICAg
IFBhc3NSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90QXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMp
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231908</attachid>
            <date>2014-05-22 13:43:22 -0700</date>
            <delta_ts>2014-05-22 17:14:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21859</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTIxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE0LTA1LTIyICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEZyYW1lIGFuZCBo
aXQtdGVzdGluZyB0byBkbyBub3Qgd29yayB3aGVuIHdlYiB2aWV3cyBhcmUgc2NlbmUtcmVmZXJl
bmNlIGF3YXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzMxODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIFdlYkNvcmUgYXdhcmUgb2YgdGhlIGFjY2Vzc2liaWxpdHkgcG9pbnQvcmVjdCBjb252
ZXJzaW9uIG1ldGhvZHMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgY29udmVydFBvaW50VG9TY3JlZW5TcGFjZTpdKToKKyAgICAgICAgKC1bV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY29udmVydFJlY3RUb1NjcmVlblNwYWNlOl0pOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RW
aWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlT
Y3JlZW4pOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisKIDIwMTQtMDUtMjIg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01TRV0gU3RvcmVk
IHNhbXBsZXMgYXJlIG5vdCBmcmVlZCB3aGVuIFNvdXJjZUJ1ZmZlciBpcyByZW1vdmVkIGZyb20g
TWVkaWFTb3VyY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CShyZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTEy
OCw3ICsxMTI4LDcgQEAKICAgICAgICAgCiAgICAgICAgIGlmIChwYWdlKSB7CiAgICAgICAgICAg
ICBJbnRSZWN0IHJlY3QgPSBJbnRSZWN0KGludFBvaW50LCBJbnRTaXplKDAsIDApKTsKLSAgICAg
ICAgICAgIGludFBvaW50ID0gcGFnZS0+Y2hyb21lKCkucm9vdFZpZXdUb1NjcmVlbihyZWN0KS5s
b2NhdGlvbigpOworICAgICAgICAgICAgaW50UG9pbnQgPSBwYWdlLT5jaHJvbWUoKS5yb290Vmll
d1RvQWNjZXNzaWJpbGl0eVNjcmVlbihyZWN0KS5sb2NhdGlvbigpOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBjZ1BvaW50ID0gKENHUG9pbnQpaW50UG9pbnQ7CkBAIC0xMTgwLDcgKzEx
ODAsNyBAQAogICAgICAgICAgICAgcGFnZSA9IHBhcmVudC0+cGFnZSgpOwogICAgICAgICAKICAg
ICAgICAgaWYgKHBhZ2UpCi0gICAgICAgICAgICByZWN0ID0gcGFnZS0+Y2hyb21lKCkucm9vdFZp
ZXdUb1NjcmVlbihyZWN0KTsKKyAgICAgICAgICAgIHJlY3QgPSBwYWdlLT5jaHJvbWUoKS5yb290
Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihyZWN0KTsKICAgICAgICAgCiAgICAgICAgIGZyYW1l
ID0gKENHUmVjdClyZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgJKHJldmlzaW9uIDE2OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSwxMCBAQAogCiAgICAgdmlydHVh
bCBJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBwOyB9CiAgICAgdmlydHVhbCBJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4o
Y29uc3QgSW50UmVjdCYgcikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcjsgfQorI2lmIFBMQVRG
T1JNKElPUykKKyAgICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RW
aWV3KGNvbnN0IEludFBvaW50JiBwKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBwOyB9OworICAg
IHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRS
ZWN0JiByKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByOyB9OworI2VuZGlmCiAgICAgdmlydHVh
bCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKEZyYW1l
KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0IG92ZXJyaWRlIHsgfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuY3BwCShyZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsMTkgQEAKIHsKICAgICByZXR1cm4g
bV9jbGllbnQucm9vdFZpZXdUb1NjcmVlbihyZWN0KTsKIH0KKyAgICAKKyNpZiBQTEFURk9STShJ
T1MpCitJbnRQb2ludCBDaHJvbWU6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JiBwb2ludCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQuYWNjZXNzaWJp
bGl0eVNjcmVlblRvUm9vdFZpZXcocG9pbnQpOworfQogCitJbnRSZWN0IENocm9tZTo6cm9vdFZp
ZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9jbGllbnQucm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4ocmVjdCk7Cit9
CisjZW5kaWYKKwogUGxhdGZvcm1QYWdlQ2xpZW50IENocm9tZTo6cGxhdGZvcm1QYWdlQ2xpZW50
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQucGxhdGZvcm1QYWdlQ2xpZW50KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHJldmlzaW9uIDE2OTIwOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDEwIEBACiAjZW5kaWYK
ICAgICB2aXJ0dWFsIEludFBvaW50IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb1NjcmVlbihjb25z
dCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1
YWwgSW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQm
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2li
aWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCiAgICAg
dmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBDdXJzb3ImKSBvdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMTY5MjA5
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTY1LDYgKzE2NSwxMCBAQAogI2VuZGlmCiAgICAgdmlydHVhbCBJbnRQb2ludCBzY3JlZW5U
b1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVj
dCByb290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25zdCA9IDA7CisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIHZpcnR1YWwgSW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZp
ZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IHJvb3RW
aWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25zdCA9IDA7CisjZW5k
aWYgICAgCiAgICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJzTW9kZURpZENoYW5nZSgp
IGNvbnN0ID0gMDsKICNpZiBFTkFCTEUoQ1VSU09SX1NVUFBPUlQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vSG9zdFdpbmRvdy5oCShyZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDExIEBA
CiAgICAgLy8gTWV0aG9kcyBmb3IgZG9pbmcgY29vcmRpbmF0ZSBjb252ZXJzaW9ucyB0byBhbmQg
ZnJvbSBzY3JlZW4gY29vcmRpbmF0ZXMuCiAgICAgdmlydHVhbCBJbnRQb2ludCBzY3JlZW5Ub1Jv
b3RWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCBy
b290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25zdCA9IDA7Ci0KKyNpZiBQTEFURk9S
TShJT1MpCisgICAgdmlydHVhbCBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmll
dyhjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZp
ZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0ID0gMDsKKyNlbmRp
ZgorICAgIAogICAgIC8vIE1ldGhvZCBmb3IgcmV0cmlldmluZyB0aGUgbmF0aXZlIGNsaWVudCBv
ZiB0aGUgcGFnZS4KICAgICB2aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VD
bGllbnQoKSBjb25zdCA9IDA7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NjkyMTMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAxNC0wNS0yMiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBw
bGUuY29tPgorCisgICAgICAgIEFYOiBGcmFtZSBhbmQgaGl0LXRlc3RpbmcgdG8gZG8gbm90IHdv
cmsgd2hlbiB3ZWIgdmlld3MgYXJlIHNjZW5lLXJlZmVyZW5jZSBhd2FyZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMTg4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
bW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RW
aWV3KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlT
Y3JlZW4pOgorCiAyMDE0LTA1LTIwICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTWFjXSBBbGxvdyBwb3B1cCBtZW51cyB0byBvdmVycmlkZSBkZWZhdWx0IGFwcGVh
cmFuY2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYg
KzEwMSwxMCBAQAogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Ub1Jvb3RW
aWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpIGNvbnN0IG92ZXJyaWRlOworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0
IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBj
b25zdCBvdmVycmlkZTsKKyNlbmRpZgogICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBs
YXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb250
ZW50c1NpemVDaGFuZ2VkKFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1ZpZXcoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQkocmV2aXNp
b24gMTY5MjA5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MDAsNiArNjAwLDE4IEBACiAgICAgcmV0dXJu
IHI7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitJbnRQb2ludCBXZWJDaHJvbWVDbGllbnQ6OmFj
Y2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwKSBjb25zdAorewor
ICAgIHJldHVybiBwOworfQorCitJbnRSZWN0IFdlYkNocm9tZUNsaWVudDo6cm9vdFZpZXdUb0Fj
Y2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYgcikgY29uc3QKK3sKKyAgICByZXR1cm4g
cjsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybVBhZ2VDbGllbnQgV2ViQ2hyb21lQ2xpZW50OjpwbGF0
Zm9ybVBhZ2VDbGllbnQoKSBjb25zdAogewogICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gMTY5MjEzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTQtMDUtMjIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6
YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogRnJhbWUgYW5kIGhpdC10ZXN0aW5nIHRvIGRv
IG5vdCB3b3JrIHdoZW4gd2ViIHZpZXdzIGFyZSBzY2VuZS1yZWZlcmVuY2UgYXdhcmUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMxODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgaW4gYWNjZXNz
aWJpbGl0eSBjb252ZXJzaW9uIG1ldGhvZHMgdGhhdCB3aWxsIGNoZWNrIGlmIHRoZSBtZXRob2Rz
IGFyZSBwcmVzZW50IChpZiBhY2Nlc3NpYmlsaXR5IGlzIG5vdCBvbiwgdGhleSB3b24ndCBiZSkK
KyAgICAgICAgYW5kIHVzZSB0aG9zZSB0byBjb252ZXJ0IHBvaW50cyBpbnRvIHRoZSByaWdodCBj
b29yZGluYXRlIHNwYWNlIHRoYXQgVm9pY2VPdmVyIGlzIGV4cGVjdGluZy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eVNjcmVl
blRvUm9vdFZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9B
Y2Nlc3NpYmlsaXR5U2NyZWVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJv
bWVDbGllbnQ6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ2hyb21lQ2xpZW50Ojpyb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5t
bToKKyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhY2Nlc3NpYmlsaXR5
SGl0VGVzdDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMTQtMDUtMjIg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bV0sy
XSBBcHBsaWNhdGlvbiBjYWNoZSBpcyBicm9rZW4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMTY5MjA5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5NiwxMCBAQAogICAg
IHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3Jl
ZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgPSAwOwogICAgIHZpcnR1YWwg
V2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSA9IDA7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQg
YWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSA9
IDA7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5
U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CisjZW5kaWYKICAgICAKICAgICB2
aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50
JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpID0gMDsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9u
IDE2OTIwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDM2LDYgKzMwMzYsMTggQEAKICAgICByZXN1bHQgPSBtX3BhZ2VD
bGllbnQucm9vdFZpZXdUb1NjcmVlbih2aWV3UmVjdCk7CiB9CiAgICAgCisjaWYgUExBVEZPUk0o
SU9TKQordm9pZCBXZWJQYWdlUHJveHk6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNv
bnN0IEludFBvaW50JiBzY3JlZW5Qb2ludCwgSW50UG9pbnQmIHdpbmRvd1BvaW50KQoreworICAg
IHdpbmRvd1BvaW50ID0gbV9wYWdlQ2xpZW50LmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3
KHNjcmVlblBvaW50KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9BY2Nlc3Np
YmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmIHZpZXdSZWN0LCBJbnRSZWN0JiByZXN1bHQpCit7
CisgICAgcmVzdWx0ID0gbV9wYWdlQ2xpZW50LnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVu
KHZpZXdSZWN0KTsKK30KKyNlbmRpZgorICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVpbnQ2NF90IGZyYW1l
SUQsIGJvb2wmIHNob3VsZENsb3NlKQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDE2OTIwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4Niw2ICsxMTg2LDEwIEBA
CiAgICAgdm9pZCBnZXRXaW5kb3dGcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2b2lk
IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcmVlblBvaW50LCBX
ZWJDb3JlOjpJbnRQb2ludCYgd2luZG93UG9pbnQpOwogICAgIHZvaWQgcm9vdFZpZXdUb1NjcmVl
bihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgV2ViQ29yZTo6SW50UmVjdCYgcmVz
dWx0KTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9S
b290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2NyZWVuUG9pbnQsIFdlYkNvcmU6Oklu
dFBvaW50JiB3aW5kb3dQb2ludCk7CisgICAgdm9pZCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNj
cmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgV2ViQ29yZTo6SW50UmVjdCYg
cmVzdWx0KTsKKyNlbmRpZgogICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgdWludDY0X3QgZnJhbWVJRCwgYm9vbCYgc2hvdWxkQ2xvc2Up
OwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZp
ZXdwb3J0QXR0cmlidXRlcyYpOwogICAgIHZvaWQgcGFnZURpZFNjcm9sbCgpOwpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2MywxMiBAQAogICAgIEdldFdp
bmRvd0ZyYW1lKCkgLT4gKFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZSkKICAgICBTY3Jl
ZW5Ub1Jvb3RWaWV3KFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KSAtPiAoV2ViQ29yZTo6
SW50UG9pbnQgd2luZG93UG9pbnQpCiAgICAgUm9vdFZpZXdUb1NjcmVlbihXZWJDb3JlOjpJbnRS
ZWN0IHJlY3QpIC0+IChXZWJDb3JlOjpJbnRSZWN0IHNjcmVlbkZyYW1lKQorCisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIEFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KFdlYkNvcmU6OkludFBv
aW50IHNjcmVlblBvaW50KSAtPiAoV2ViQ29yZTo6SW50UG9pbnQgd2luZG93UG9pbnQpCisgICAg
Um9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oV2ViQ29yZTo6SW50UmVjdCByZWN0KSAtPiAo
V2ViQ29yZTo6SW50UmVjdCBzY3JlZW5GcmFtZSkKKyNlbmRpZgorCiAgICAgUnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKFN0cmluZyBtZXNzYWdlLCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoYm9v
bCBzaG91bGRDbG9zZSkKICAgICBQYWdlRGlkU2Nyb2xsKCkKICAgICBSdW5PcGVuUGFuZWwodWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyBwYXJhbWV0ZXJzKQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaAkocmV2aXNpb24gMTY5MjA5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw2ICs4Nyw4IEBACiAgICAg
dmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQg
c2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGFjY2Vz
c2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5
U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCB3
YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAg
dmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50
JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCShyZXZpc2lvbiAxNjky
MDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw4IEBACiAKIEBpbnRlcmZhY2UgVUlWaWV3IChJ
UEkpCiAtIChVSVNjcm9sbFZpZXcgKilfc2Nyb2xsZXI7CistIChDR1BvaW50KWFjY2Vzc2liaWxp
dHlDb252ZXJ0UG9pbnRGcm9tU2NlbmVSZWZlcmVuY2VDb29yZGluYXRlczooQ0dQb2ludClwb2lu
dDsKKy0gKENHUmVjdClhY2Nlc3NpYmlsaXR5Q29udmVydFJlY3RUb1NjZW5lUmVmZXJlbmNlQ29v
cmRpbmF0ZXM6KENHUmVjdClyZWN0OwogQGVuZAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
QEAgLTMxNyw2ICszMTksMjIgQEAKIHsKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChbbV9j
b250ZW50VmlldyBjb252ZXJ0UmVjdDpyZWN0IHRvVmlldzpuaWxdKTsKIH0KKyAgICAKK0ludFBv
aW50IFBhZ2VDbGllbnRJbXBsOjphY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJ
bnRQb2ludCYgcG9pbnQpCit7CisgICAgQ0dQb2ludCByb290Vmlld1BvaW50ID0gcG9pbnQ7Cisg
ICAgaWYgKFttX2NvbnRlbnRWaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWNjZXNz
aWJpbGl0eUNvbnZlcnRQb2ludEZyb21TY2VuZVJlZmVyZW5jZUNvb3JkaW5hdGVzOildKQorICAg
ICAgICByb290Vmlld1BvaW50ID0gW21fY29udGVudFZpZXcgYWNjZXNzaWJpbGl0eUNvbnZlcnRQ
b2ludEZyb21TY2VuZVJlZmVyZW5jZUNvb3JkaW5hdGVzOnJvb3RWaWV3UG9pbnRdOworICAgIHJl
dHVybiBJbnRQb2ludChyb290Vmlld1BvaW50KTsKK30KKyAgICAKK0ludFJlY3QgUGFnZUNsaWVu
dEltcGw6OnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmIHJlY3Qp
Cit7CisgICAgQ0dSZWN0IHJvb3RWaWV3UmVjdCA9IHJlY3Q7CisgICAgaWYgKFttX2NvbnRlbnRW
aWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eUNvbnZlcnRSZWN0
VG9TY2VuZVJlZmVyZW5jZUNvb3JkaW5hdGVzOildKQorICAgICAgICByb290Vmlld1JlY3QgPSBb
bV9jb250ZW50VmlldyBhY2Nlc3NpYmlsaXR5Q29udmVydFJlY3RUb1NjZW5lUmVmZXJlbmNlQ29v
cmRpbmF0ZXM6cm9vdFZpZXdSZWN0XTsKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChyb290
Vmlld1JlY3QpOworfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25lV2l0aEtleUV2ZW50KGNv
bnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sKQogewpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24gMTY5MjA5KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDQsNyArMTA0LDExIEBACiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJl
Y3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVu
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLQorI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JikgPSAwOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCBy
b290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAw
OworI2VuZGlmCisgICAgICAgIAogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNv
bnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCk7CiAKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVBy
b3h5KFdlYlBhZ2VQcm94eSopOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNp
b24gMTY5MjA5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODYsNyArNDg2LDE5IEBACiB7
CiAgICAgcmV0dXJuIG1fcGFnZS0+cm9vdFZpZXdUb1NjcmVlbihyZWN0KTsKIH0KKyAgICAKKyNp
ZiBQTEFURk9STShJT1MpCitJbnRQb2ludCBXZWJDaHJvbWVDbGllbnQ6OmFjY2Vzc2liaWxpdHlT
Y3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wYWdlLT5hY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhwb2ludCk7Cit9CiAKK0lu
dFJlY3QgV2ViQ2hyb21lQ2xpZW50Ojpyb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25z
dCBJbnRSZWN0JiByZWN0KSBjb25zdAoreworICAgIHJldHVybiBtX3BhZ2UtPnJvb3RWaWV3VG9B
Y2Nlc3NpYmlsaXR5U2NyZWVuKHJlY3QpOworfQorI2VuZGlmCisKIFBsYXRmb3JtUGFnZUNsaWVu
dCBXZWJDaHJvbWVDbGllbnQ6OnBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0CiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMTY5MjA5
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNywxMCBAQAogI2VuZGlmCiAgICAg
dmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0
IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRl
OworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGFjY2Vz
c2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9BY2Nlc3Np
YmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKKyNl
bmRpZgogICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBsYXRmb3JtUGFnZUNsaWVudCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKFdl
YkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1ZpZXcoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpIGNvbnN0IG92ZXJyaWRlOyAvLyBDdXJyZW50bHkgb25seSBNYWMgaGFzIGEgbm9uIGVtcHR5
IGltcGxlbWVudGF0aW9uLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RJT1MubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RJ
T1MubW0JKHJldmlzaW9uIDE2OTIwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw3ICszMSw5IEBACiAjaW1wb3J0ICJXZWJGcmFtZS5oIgogI2ltcG9ydCAiV2ViUGFnZS5o
IgogI2ltcG9ydCA8V2ViQ29yZS9JbnRQb2ludC5oPgorI2ltcG9ydCA8V2ViQ29yZS9NYWluRnJh
bWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1Bh
Z2UuaD4KIAogLyogCiAgVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgY2xhc3Mgd2lsbCBiZSBh
dWdtZW50ZWQgYnkgYW4gYWNjZXNpYmlsaXR5IGJ1bmRsZSB0aGF0IGlzIGxvYWRlZCBvbmx5IHdo
ZW4gYWNjZXNzaWJpbGl0eSBpcyByZXF1ZXN0ZWQgdG8gYmUgZW5hYmxlZC4KQEAgLTcyLDcgKzc0
LDcgQEAKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBX
ZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0ZWRQb2ludCA9IG1fcGFnZS0+c2NyZWVuVG9Sb290Vmll
dyhXZWJDb3JlOjpJbnRQb2ludChwb2ludCkpOworICAgIFdlYkNvcmU6OkludFBvaW50IGNvbnZl
cnRlZFBvaW50ID0gbV9wYWdlLT5hY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290VmlldyhXZWJDb3Jl
OjpJbnRQb2ludChwb2ludCkpOwogICAgIHJldHVybiBbW3NlbGYgYWNjZXNzaWJpbGl0eVJvb3RP
YmplY3RXcmFwcGVyXSBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpjb252ZXJ0ZWRQb2ludF07CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHJldmlzaW9uIDE2OTIwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI5NCw3ICsyMjk0LDIxIEBACiAgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Um9vdFZpZXdUb1NjcmVlbihyZWN0KSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6Um9vdFZpZXdUb1NjcmVlbjo6UmVwbHkoc2NyZWVuUmVjdCkp
OwogICAgIHJldHVybiBzY3JlZW5SZWN0OwogfQorICAgIAorSW50UG9pbnQgV2ViUGFnZTo6YWNj
ZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KQoreworICAg
IEludFBvaW50IHdpbmRvd1BvaW50OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KHBvaW50KSwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6QWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXc6OlJlcGx5KHdpbmRvd1BvaW50
KSk7CisgICAgcmV0dXJuIHdpbmRvd1BvaW50OworfQogCitJbnRSZWN0IFdlYlBhZ2U6OnJvb3RW
aWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgSW50
UmVjdCBzY3JlZW5SZWN0OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJv
b3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKHJlY3QpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbjo6UmVwbHkoc2NyZWVuUmVjdCkpOworICAg
IHJldHVybiBzY3JlZW5SZWN0OworfQorCiBJbnRSZWN0IFdlYlBhZ2U6OndpbmRvd1Jlc2l6ZXJS
ZWN0KCkgY29uc3QKIHsKICAgICBpZiAobV93aW5kb3dSZXNpemVyU2l6ZS5pc0VtcHR5KCkpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlz
aW9uIDE2OTIwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyNSwxMSArNDI1LDE3IEBACiAKICAgICB2b2lkIGhpZGVQ
YWdlQmFubmVycygpOwogICAgIHZvaWQgc2hvd1BhZ2VCYW5uZXJzKCk7CisgICAgCiAjZW5kaWYg
Ly8gIVBMQVRGT1JNKElPUykKIAogICAgIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvUm9vdFZp
ZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJvb3RW
aWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwotCisgICAgCisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RW
aWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgV2ViQ29yZTo6SW50UmVjdCByb290
Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisjZW5k
aWYKKyAgICAKICAgICBQYXNzUmVmUHRyPFdlYkltYWdlPiBzY2FsZWRTbmFwc2hvdFdpdGhPcHRp
b25zKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBkb3VibGUgYWRkaXRpb25hbFNjYWxlRmFjdG9y
LCBTbmFwc2hvdE9wdGlvbnMpOwogICAgIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90QXRT
aXplKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiaXRt
YXBTaXplLCBTbmFwc2hvdE9wdGlvbnMpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231922</attachid>
            <date>2014-05-22 17:14:51 -0700</date>
            <delta_ts>2014-05-23 16:40:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21915</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTIxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE0LTA1LTIyICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEZyYW1lIGFuZCBo
aXQtdGVzdGluZyB0byBkbyBub3Qgd29yayB3aGVuIHdlYiB2aWV3cyBhcmUgc2NlbmUtcmVmZXJl
bmNlIGF3YXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzMxODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIFdlYkNvcmUgYXdhcmUgb2YgdGhlIGFjY2Vzc2liaWxpdHkgcG9pbnQvcmVjdCBjb252
ZXJzaW9uIG1ldGhvZHMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgY29udmVydFBvaW50VG9TY3JlZW5TcGFjZTpdKToKKyAgICAgICAgKC1bV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY29udmVydFJlY3RUb1NjcmVlblNwYWNlOl0pOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RW
aWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlT
Y3JlZW4pOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisKIDIwMTQtMDUtMjIg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01TRV0gU3RvcmVk
IHNhbXBsZXMgYXJlIG5vdCBmcmVlZCB3aGVuIFNvdXJjZUJ1ZmZlciBpcyByZW1vdmVkIGZyb20g
TWVkaWFTb3VyY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CShyZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTEy
OCw3ICsxMTI4LDcgQEAKICAgICAgICAgCiAgICAgICAgIGlmIChwYWdlKSB7CiAgICAgICAgICAg
ICBJbnRSZWN0IHJlY3QgPSBJbnRSZWN0KGludFBvaW50LCBJbnRTaXplKDAsIDApKTsKLSAgICAg
ICAgICAgIGludFBvaW50ID0gcGFnZS0+Y2hyb21lKCkucm9vdFZpZXdUb1NjcmVlbihyZWN0KS5s
b2NhdGlvbigpOworICAgICAgICAgICAgaW50UG9pbnQgPSBwYWdlLT5jaHJvbWUoKS5yb290Vmll
d1RvQWNjZXNzaWJpbGl0eVNjcmVlbihyZWN0KS5sb2NhdGlvbigpOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBjZ1BvaW50ID0gKENHUG9pbnQpaW50UG9pbnQ7CkBAIC0xMTgwLDcgKzEx
ODAsNyBAQAogICAgICAgICAgICAgcGFnZSA9IHBhcmVudC0+cGFnZSgpOwogICAgICAgICAKICAg
ICAgICAgaWYgKHBhZ2UpCi0gICAgICAgICAgICByZWN0ID0gcGFnZS0+Y2hyb21lKCkucm9vdFZp
ZXdUb1NjcmVlbihyZWN0KTsKKyAgICAgICAgICAgIHJlY3QgPSBwYWdlLT5jaHJvbWUoKS5yb290
Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihyZWN0KTsKICAgICAgICAgCiAgICAgICAgIGZyYW1l
ID0gKENHUmVjdClyZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgJKHJldmlzaW9uIDE2OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSwxMCBAQAogCiAgICAgdmlydHVh
bCBJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBwOyB9CiAgICAgdmlydHVhbCBJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4o
Y29uc3QgSW50UmVjdCYgcikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcjsgfQorI2lmIFBMQVRG
T1JNKElPUykKKyAgICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RW
aWV3KGNvbnN0IEludFBvaW50JiBwKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBwOyB9OworICAg
IHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRS
ZWN0JiByKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByOyB9OworI2VuZGlmCiAgICAgdmlydHVh
bCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKEZyYW1l
KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0IG92ZXJyaWRlIHsgfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuY3BwCShyZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsMTkgQEAKIHsKICAgICByZXR1cm4g
bV9jbGllbnQucm9vdFZpZXdUb1NjcmVlbihyZWN0KTsKIH0KKyAgICAKKyNpZiBQTEFURk9STShJ
T1MpCitJbnRQb2ludCBDaHJvbWU6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JiBwb2ludCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQuYWNjZXNzaWJp
bGl0eVNjcmVlblRvUm9vdFZpZXcocG9pbnQpOworfQogCitJbnRSZWN0IENocm9tZTo6cm9vdFZp
ZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9jbGllbnQucm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4ocmVjdCk7Cit9
CisjZW5kaWYKKwogUGxhdGZvcm1QYWdlQ2xpZW50IENocm9tZTo6cGxhdGZvcm1QYWdlQ2xpZW50
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQucGxhdGZvcm1QYWdlQ2xpZW50KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHJldmlzaW9uIDE2OTIwOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDEwIEBACiAjZW5kaWYK
ICAgICB2aXJ0dWFsIEludFBvaW50IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb1NjcmVlbihjb25z
dCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1
YWwgSW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQm
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2li
aWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCiAgICAg
dmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBDdXJzb3ImKSBvdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMTY5MjA5
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTY1LDYgKzE2NSwxMCBAQAogI2VuZGlmCiAgICAgdmlydHVhbCBJbnRQb2ludCBzY3JlZW5U
b1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVj
dCByb290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25zdCA9IDA7CisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIHZpcnR1YWwgSW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZp
ZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IHJvb3RW
aWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25zdCA9IDA7CisjZW5k
aWYgICAgCiAgICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJzTW9kZURpZENoYW5nZSgp
IGNvbnN0ID0gMDsKICNpZiBFTkFCTEUoQ1VSU09SX1NVUFBPUlQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vSG9zdFdpbmRvdy5oCShyZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDExIEBA
CiAgICAgLy8gTWV0aG9kcyBmb3IgZG9pbmcgY29vcmRpbmF0ZSBjb252ZXJzaW9ucyB0byBhbmQg
ZnJvbSBzY3JlZW4gY29vcmRpbmF0ZXMuCiAgICAgdmlydHVhbCBJbnRQb2ludCBzY3JlZW5Ub1Jv
b3RWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCBy
b290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25zdCA9IDA7Ci0KKyNpZiBQTEFURk9S
TShJT1MpCisgICAgdmlydHVhbCBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmll
dyhjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZp
ZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0ID0gMDsKKyNlbmRp
ZgorICAgIAogICAgIC8vIE1ldGhvZCBmb3IgcmV0cmlldmluZyB0aGUgbmF0aXZlIGNsaWVudCBv
ZiB0aGUgcGFnZS4KICAgICB2aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VD
bGllbnQoKSBjb25zdCA9IDA7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NjkyMTMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAxNC0wNS0yMiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBw
bGUuY29tPgorCisgICAgICAgIEFYOiBGcmFtZSBhbmQgaGl0LXRlc3RpbmcgdG8gZG8gbm90IHdv
cmsgd2hlbiB3ZWIgdmlld3MgYXJlIHNjZW5lLXJlZmVyZW5jZSBhd2FyZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMTg4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
bW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RW
aWV3KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlT
Y3JlZW4pOgorCiAyMDE0LTA1LTIwICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTWFjXSBBbGxvdyBwb3B1cCBtZW51cyB0byBvdmVycmlkZSBkZWZhdWx0IGFwcGVh
cmFuY2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYg
KzEwMSwxMCBAQAogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Ub1Jvb3RW
aWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpIGNvbnN0IG92ZXJyaWRlOworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0
IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBj
b25zdCBvdmVycmlkZTsKKyNlbmRpZgogICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBs
YXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb250
ZW50c1NpemVDaGFuZ2VkKFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1ZpZXcoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQkocmV2aXNp
b24gMTY5MjA5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MDAsNiArNjAwLDE4IEBACiAgICAgcmV0dXJu
IHI7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitJbnRQb2ludCBXZWJDaHJvbWVDbGllbnQ6OmFj
Y2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwKSBjb25zdAorewor
ICAgIHJldHVybiBwOworfQorCitJbnRSZWN0IFdlYkNocm9tZUNsaWVudDo6cm9vdFZpZXdUb0Fj
Y2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYgcikgY29uc3QKK3sKKyAgICByZXR1cm4g
cjsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybVBhZ2VDbGllbnQgV2ViQ2hyb21lQ2xpZW50OjpwbGF0
Zm9ybVBhZ2VDbGllbnQoKSBjb25zdAogewogICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gMTY5MjEzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTQtMDUtMjIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6
YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogRnJhbWUgYW5kIGhpdC10ZXN0aW5nIHRvIGRv
IG5vdCB3b3JrIHdoZW4gd2ViIHZpZXdzIGFyZSBzY2VuZS1yZWZlcmVuY2UgYXdhcmUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMxODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgaW4gYWNjZXNz
aWJpbGl0eSBjb252ZXJzaW9uIG1ldGhvZHMgdGhhdCB3aWxsIGNoZWNrIGlmIHRoZSBtZXRob2Rz
IGFyZSBwcmVzZW50IChpZiBhY2Nlc3NpYmlsaXR5IGlzIG5vdCBvbiwgdGhleSB3b24ndCBiZSkK
KyAgICAgICAgYW5kIHVzZSB0aG9zZSB0byBjb252ZXJ0IHBvaW50cyBpbnRvIHRoZSByaWdodCBj
b29yZGluYXRlIHNwYWNlIHRoYXQgVm9pY2VPdmVyIGlzIGV4cGVjdGluZy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eVNjcmVl
blRvUm9vdFZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9B
Y2Nlc3NpYmlsaXR5U2NyZWVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJv
bWVDbGllbnQ6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ2hyb21lQ2xpZW50Ojpyb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5t
bToKKyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhY2Nlc3NpYmlsaXR5
SGl0VGVzdDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMTQtMDUtMjIg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bV0sy
XSBBcHBsaWNhdGlvbiBjYWNoZSBpcyBicm9rZW4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMTY5MjA5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5NiwxMCBAQAogICAg
IHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3Jl
ZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgPSAwOwogICAgIHZpcnR1YWwg
V2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSA9IDA7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQg
YWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSA9
IDA7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5
U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CisjZW5kaWYKICAgICAKICAgICB2
aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50
JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpID0gMDsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9u
IDE2OTIwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDM2LDYgKzMwMzYsMTggQEAKICAgICByZXN1bHQgPSBtX3BhZ2VD
bGllbnQucm9vdFZpZXdUb1NjcmVlbih2aWV3UmVjdCk7CiB9CiAgICAgCisjaWYgUExBVEZPUk0o
SU9TKQordm9pZCBXZWJQYWdlUHJveHk6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNv
bnN0IEludFBvaW50JiBzY3JlZW5Qb2ludCwgSW50UG9pbnQmIHdpbmRvd1BvaW50KQoreworICAg
IHdpbmRvd1BvaW50ID0gbV9wYWdlQ2xpZW50LmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3
KHNjcmVlblBvaW50KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnJvb3RWaWV3VG9BY2Nlc3Np
YmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmIHZpZXdSZWN0LCBJbnRSZWN0JiByZXN1bHQpCit7
CisgICAgcmVzdWx0ID0gbV9wYWdlQ2xpZW50LnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVu
KHZpZXdSZWN0KTsKK30KKyNlbmRpZgorICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVpbnQ2NF90IGZyYW1l
SUQsIGJvb2wmIHNob3VsZENsb3NlKQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDE2OTIwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4Niw2ICsxMTg2LDEwIEBA
CiAgICAgdm9pZCBnZXRXaW5kb3dGcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2b2lk
IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcmVlblBvaW50LCBX
ZWJDb3JlOjpJbnRQb2ludCYgd2luZG93UG9pbnQpOwogICAgIHZvaWQgcm9vdFZpZXdUb1NjcmVl
bihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgV2ViQ29yZTo6SW50UmVjdCYgcmVz
dWx0KTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9S
b290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2NyZWVuUG9pbnQsIFdlYkNvcmU6Oklu
dFBvaW50JiB3aW5kb3dQb2ludCk7CisgICAgdm9pZCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNj
cmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCwgV2ViQ29yZTo6SW50UmVjdCYg
cmVzdWx0KTsKKyNlbmRpZgogICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgdWludDY0X3QgZnJhbWVJRCwgYm9vbCYgc2hvdWxkQ2xvc2Up
OwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZp
ZXdwb3J0QXR0cmlidXRlcyYpOwogICAgIHZvaWQgcGFnZURpZFNjcm9sbCgpOwpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2MywxMiBAQAogICAgIEdldFdp
bmRvd0ZyYW1lKCkgLT4gKFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZSkKICAgICBTY3Jl
ZW5Ub1Jvb3RWaWV3KFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KSAtPiAoV2ViQ29yZTo6
SW50UG9pbnQgd2luZG93UG9pbnQpCiAgICAgUm9vdFZpZXdUb1NjcmVlbihXZWJDb3JlOjpJbnRS
ZWN0IHJlY3QpIC0+IChXZWJDb3JlOjpJbnRSZWN0IHNjcmVlbkZyYW1lKQorCisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIEFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KFdlYkNvcmU6OkludFBv
aW50IHNjcmVlblBvaW50KSAtPiAoV2ViQ29yZTo6SW50UG9pbnQgd2luZG93UG9pbnQpCisgICAg
Um9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oV2ViQ29yZTo6SW50UmVjdCByZWN0KSAtPiAo
V2ViQ29yZTo6SW50UmVjdCBzY3JlZW5GcmFtZSkKKyNlbmRpZgorCiAgICAgUnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKFN0cmluZyBtZXNzYWdlLCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoYm9v
bCBzaG91bGRDbG9zZSkKICAgICBQYWdlRGlkU2Nyb2xsKCkKICAgICBSdW5PcGVuUGFuZWwodWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyBwYXJhbWV0ZXJzKQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaAkocmV2aXNpb24gMTY5MjA5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw2ICs4Nyw4IEBACiAgICAg
dmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQg
c2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGFjY2Vz
c2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5
U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCB3
YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAg
dmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50
JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCShyZXZpc2lvbiAxNjky
MDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw4IEBACiAKIEBpbnRlcmZhY2UgVUlWaWV3IChJ
UEkpCiAtIChVSVNjcm9sbFZpZXcgKilfc2Nyb2xsZXI7CistIChDR1BvaW50KWFjY2Vzc2liaWxp
dHlDb252ZXJ0UG9pbnRGcm9tU2NlbmVSZWZlcmVuY2VDb29yZGluYXRlczooQ0dQb2ludClwb2lu
dDsKKy0gKENHUmVjdClhY2Nlc3NpYmlsaXR5Q29udmVydFJlY3RUb1NjZW5lUmVmZXJlbmNlQ29v
cmRpbmF0ZXM6KENHUmVjdClyZWN0OwogQGVuZAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
QEAgLTMxNyw3ICszMTksMjMgQEAKIHsKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChbbV9j
b250ZW50VmlldyBjb252ZXJ0UmVjdDpyZWN0IHRvVmlldzpuaWxdKTsKIH0KLQorICAgIAorSW50
UG9pbnQgUGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JiBwb2ludCkKK3sKKyAgICBDR1BvaW50IHJvb3RWaWV3UG9pbnQgPSBwb2ludDsK
KyAgICBpZiAoW21fY29udGVudFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY2Nl
c3NpYmlsaXR5Q29udmVydFBvaW50RnJvbVNjZW5lUmVmZXJlbmNlQ29vcmRpbmF0ZXM6KV0pCisg
ICAgICAgIHJvb3RWaWV3UG9pbnQgPSBbbV9jb250ZW50VmlldyBhY2Nlc3NpYmlsaXR5Q29udmVy
dFBvaW50RnJvbVNjZW5lUmVmZXJlbmNlQ29vcmRpbmF0ZXM6cm9vdFZpZXdQb2ludF07CisgICAg
cmV0dXJuIEludFBvaW50KHJvb3RWaWV3UG9pbnQpOworfQorICAgIAorSW50UmVjdCBQYWdlQ2xp
ZW50SW1wbDo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYgcmVj
dCkKK3sKKyAgICBDR1JlY3Qgcm9vdFZpZXdSZWN0ID0gcmVjdDsKKyAgICBpZiAoW21fY29udGVu
dFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY2Nlc3NpYmlsaXR5Q29udmVydFJl
Y3RUb1NjZW5lUmVmZXJlbmNlQ29vcmRpbmF0ZXM6KV0pCisgICAgICAgIHJvb3RWaWV3UmVjdCA9
IFttX2NvbnRlbnRWaWV3IGFjY2Vzc2liaWxpdHlDb252ZXJ0UmVjdFRvU2NlbmVSZWZlcmVuY2VD
b29yZGluYXRlczpyb290Vmlld1JlY3RdOworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHJv
b3RWaWV3UmVjdCk7Cit9CisgICAgCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25lV2l0aEtleUV2
ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbC5oCShyZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsMTEgQEAK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3Jl
ZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdmlydHVhbCBXZWJD
b3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwot
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNz
aWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVu
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CisjZW5kaWYKKyAgICAgICAgCiAgICAgdmly
dHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYs
IGJvb2wgd2FzRXZlbnRIYW5kbGVkKTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1
cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4Niw3ICs0ODYsMTkgQEAKIHsKICAgICByZXR1cm4gbV9wYWdlLT5yb290Vmll
d1RvU2NyZWVuKHJlY3QpOwogfQorICAgIAorI2lmIFBMQVRGT1JNKElPUykKK0ludFBvaW50IFdl
YkNocm9tZUNsaWVudDo6YWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9p
bnQmIHBvaW50KSBjb25zdAoreworICAgIHJldHVybiBtX3BhZ2UtPmFjY2Vzc2liaWxpdHlTY3Jl
ZW5Ub1Jvb3RWaWV3KHBvaW50KTsKK30KIAorSW50UmVjdCBXZWJDaHJvbWVDbGllbnQ6OnJvb3RW
aWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcGFnZS0+cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4ocmVjdCk7Cit9
CisjZW5kaWYKKwogUGxhdGZvcm1QYWdlQ2xpZW50IFdlYkNocm9tZUNsaWVudDo6cGxhdGZvcm1Q
YWdlQ2xpZW50KCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCShyZXZpc2lvbiAxNjkyMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTcsNiArMTE3LDEwIEBACiAjZW5kaWYKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNj
cmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZp
cnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCiAgICAgdmlydHVhbCBQbGF0Zm9ybVBh
Z2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFJlY3RJ
bnRvVmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7IC8vIEN1cnJl
bnRseSBvbmx5IE1hYyBoYXMgYSBub24gZW1wdHkgaW1wbGVtZW50YXRpb24uCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5tbQkocmV2aXNpb24gMTY5MjA5KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3RJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDkgQEAKICNpbXBvcnQgIldl
YkZyYW1lLmgiCiAjaW1wb3J0ICJXZWJQYWdlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ludFBvaW50
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFt
ZVZpZXcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogCiAvKiAKICBUaGUgaW1wbGVtZW50
YXRpb24gb2YgdGhpcyBjbGFzcyB3aWxsIGJlIGF1Z21lbnRlZCBieSBhbiBhY2Nlc2liaWxpdHkg
YnVuZGxlIHRoYXQgaXMgbG9hZGVkIG9ubHkgd2hlbiBhY2Nlc3NpYmlsaXR5IGlzIHJlcXVlc3Rl
ZCB0byBiZSBlbmFibGVkLgpAQCAtNzIsNyArNzQsNyBAQAogICAgIGlmICghbV9wYWdlKQogICAg
ICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRlZFBv
aW50ID0gbV9wYWdlLT5zY3JlZW5Ub1Jvb3RWaWV3KFdlYkNvcmU6OkludFBvaW50KHBvaW50KSk7
CisgICAgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydGVkUG9pbnQgPSBtX3BhZ2UtPmFjY2Vzc2li
aWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KFdlYkNvcmU6OkludFBvaW50KHBvaW50KSk7CiAgICAgcmV0
dXJuIFtbc2VsZiBhY2Nlc3NpYmlsaXR5Um9vdE9iamVjdFdyYXBwZXJdIGFjY2Vzc2liaWxpdHlI
aXRUZXN0OmNvbnZlcnRlZFBvaW50XTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTY5MjA5KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjk0LDcgKzIyOTQsMjMgQEAKICAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSb290Vmlld1RvU2NyZWVuKHJlY3QpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSb290Vmll
d1RvU2NyZWVuOjpSZXBseShzY3JlZW5SZWN0KSk7CiAgICAgcmV0dXJuIHNjcmVlblJlY3Q7CiB9
CisgICAgCisjaWYgUExBVEZPUk0oSU9TKQorSW50UG9pbnQgV2ViUGFnZTo6YWNjZXNzaWJpbGl0
eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KQoreworICAgIEludFBvaW50
IHdpbmRvd1BvaW50OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkFjY2Vz
c2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KHBvaW50KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
QWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXc6OlJlcGx5KHdpbmRvd1BvaW50KSk7CisgICAg
cmV0dXJuIHdpbmRvd1BvaW50OworfQogCitJbnRSZWN0IFdlYlBhZ2U6OnJvb3RWaWV3VG9BY2Nl
c3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgSW50UmVjdCBzY3Jl
ZW5SZWN0OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJvb3RWaWV3VG9B
Y2Nlc3NpYmlsaXR5U2NyZWVuKHJlY3QpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSb290Vmll
d1RvQWNjZXNzaWJpbGl0eVNjcmVlbjo6UmVwbHkoc2NyZWVuUmVjdCkpOworICAgIHJldHVybiBz
Y3JlZW5SZWN0OworfQorI2VuZGlmCisKIEludFJlY3QgV2ViUGFnZTo6d2luZG93UmVzaXplclJl
Y3QoKSBjb25zdAogewogICAgIGlmIChtX3dpbmRvd1Jlc2l6ZXJTaXplLmlzRW1wdHkoKSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNp
b24gMTY5MjA5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNDI1LDExICs0MjUsMTcgQEAKIAogICAgIHZvaWQgaGlkZVBh
Z2VCYW5uZXJzKCk7CiAgICAgdm9pZCBzaG93UGFnZUJhbm5lcnMoKTsKKyAgICAKICNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TKQogCiAgICAgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuVG9Sb290Vmll
dyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIFdlYkNvcmU6OkludFJlY3Qgcm9vdFZp
ZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0KKyAgICAKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZp
ZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IHJvb3RW
aWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyNlbmRp
ZgorICAgIAogICAgIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IHNjYWxlZFNuYXBzaG90V2l0aE9wdGlv
bnMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGRvdWJsZSBhZGRpdGlvbmFsU2NhbGVGYWN0b3Is
IFNuYXBzaG90T3B0aW9ucyk7CiAgICAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gc25hcHNob3RBdFNp
emUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJpdG1h
cFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232003</attachid>
            <date>2014-05-23 16:40:53 -0700</date>
            <delta_ts>2014-05-24 12:31:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21863</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTIzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE0LTA1LTIzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGZpeCBjb29yZGlu
YXRlIG1hcHBpbmcgZm9yIGlPUyBhY2Nlc3NpYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMxODgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFdlYkNvcmUgYXdhcmUgb2YgdGhlIGFjY2Vz
c2liaWxpdHkgcG9pbnQvcmVjdCBjb252ZXJzaW9uIG1ldGhvZHMuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY29udmVydFBvaW50VG9TY3JlZW5T
cGFjZTpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY29udmVy
dFJlY3RUb1NjcmVlblNwYWNlOl0pOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoK
KyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmFj
Y2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4pOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6
CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Ib3N0
V2luZG93Lmg6CisKIDIwMTQtMDUtMjIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE1NTk3Nyk6IFZlcnkgc3R1dHRlcnkgM0Qg
Y3NzIGFuaW1hdGlvbiBvbiBqdGVjaGNvbW11bmljYXRpb25zLmNvbQpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHJldmlzaW9uIDE2OTE2MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTI4LDcgKzExMjgsNyBAQAogICAgICAgICAKICAg
ICAgICAgaWYgKHBhZ2UpIHsKICAgICAgICAgICAgIEludFJlY3QgcmVjdCA9IEludFJlY3QoaW50
UG9pbnQsIEludFNpemUoMCwgMCkpOwotICAgICAgICAgICAgaW50UG9pbnQgPSBwYWdlLT5jaHJv
bWUoKS5yb290Vmlld1RvU2NyZWVuKHJlY3QpLmxvY2F0aW9uKCk7CisgICAgICAgICAgICBpbnRQ
b2ludCA9IHBhZ2UtPmNocm9tZSgpLnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKHJlY3Qp
LmxvY2F0aW9uKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNnUG9pbnQgPSAoQ0dQ
b2ludClpbnRQb2ludDsKQEAgLTExODAsNyArMTE4MCw3IEBACiAgICAgICAgICAgICBwYWdlID0g
cGFyZW50LT5wYWdlKCk7CiAgICAgICAgIAogICAgICAgICBpZiAocGFnZSkKLSAgICAgICAgICAg
IHJlY3QgPSBwYWdlLT5jaHJvbWUoKS5yb290Vmlld1RvU2NyZWVuKHJlY3QpOworICAgICAgICAg
ICAgcmVjdCA9IHBhZ2UtPmNocm9tZSgpLnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKHJl
Y3QpOwogICAgICAgICAKICAgICAgICAgZnJhbWUgPSAoQ0dSZWN0KXJlY3Q7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMTY5MTYxKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzksNiArMTM5LDEwIEBACiAKICAgICB2aXJ0dWFsIEludFBvaW50IHNjcmVlblRvUm9vdFZpZXco
Y29uc3QgSW50UG9pbnQmIHApIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHA7IH0KICAgICB2aXJ0
dWFsIEludFJlY3Qgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBJbnRSZWN0JiByKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiByOyB9CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgSW50UG9p
bnQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHApIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHA7IH07CisgICAgdmlydHVhbCBJbnRSZWN0IHJvb3RWaWV3VG9B
Y2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmIHIpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHI7IH07CisjZW5kaWYKICAgICB2aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9y
bVBhZ2VDbGllbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB2
b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoRnJhbWUqLCBjb25zdCBJbnRTaXplJikgY29uc3Qgb3Zl
cnJpZGUgeyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDE2OTE2MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0
LDcgKzExNCwxOSBAQAogewogICAgIHJldHVybiBtX2NsaWVudC5yb290Vmlld1RvU2NyZWVuKHJl
Y3QpOwogfQorICAgIAorI2lmIFBMQVRGT1JNKElPUykKK0ludFBvaW50IENocm9tZTo6YWNjZXNz
aWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorewor
ICAgIHJldHVybiBtX2NsaWVudC5hY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhwb2ludCk7
Cit9CiAKK0ludFJlY3QgQ2hyb21lOjpyb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25z
dCBJbnRSZWN0JiByZWN0KSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudC5yb290Vmlld1Rv
QWNjZXNzaWJpbGl0eVNjcmVlbihyZWN0KTsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybVBhZ2VDbGll
bnQgQ2hyb21lOjpwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2Ns
aWVudC5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkocmV2aXNp
b24gMTY5MTYxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5
KQpAQCAtNzgsNiArNzgsMTAgQEAKICNlbmRpZgogICAgIHZpcnR1YWwgSW50UG9pbnQgc2NyZWVu
VG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsK
KyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2Ny
ZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1
YWwgSW50UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0Jikg
Y29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYKICAgICB2aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBw
bGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsYmFyc01vZGVEaWRDaGFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCShyZXZpc2lvbiAxNjkxNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNiArMTY1LDEwIEBACiAjZW5kaWYK
ICAgICB2aXJ0dWFsIEludFBvaW50IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgSW50
UmVjdCYpIGNvbnN0ID0gMDsKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBJbnRQb2lu
dCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29u
c3QgSW50UmVjdCYpIGNvbnN0ID0gMDsKKyNlbmRpZiAgICAKICAgICB2aXJ0dWFsIFBsYXRmb3Jt
UGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNjcm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29uc3QgPSAwOwogI2lmIEVOQUJMRShDVVJT
T1JfU1VQUE9SVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHJldmlz
aW9uIDE2OTE2MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkod29y
a2luZyBjb3B5KQpAQCAtNTgsNyArNTgsMTEgQEAKICAgICAvLyBNZXRob2RzIGZvciBkb2luZyBj
b29yZGluYXRlIGNvbnZlcnNpb25zIHRvIGFuZCBmcm9tIHNjcmVlbiBjb29yZGluYXRlcy4KICAg
ICB2aXJ0dWFsIEludFBvaW50IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgSW50UmVj
dCYpIGNvbnN0ID0gMDsKLQorI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIEludFBvaW50
IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25z
dCBJbnRSZWN0JikgY29uc3QgPSAwOworI2VuZGlmCisgICAgCiAgICAgLy8gTWV0aG9kIGZvciBy
ZXRyaWV2aW5nIHRoZSBuYXRpdmUgY2xpZW50IG9mIHRoZSBwYWdlLgogICAgIHZpcnR1YWwgUGxh
dGZvcm1QYWdlQ2xpZW50IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0ID0gMDsKICAgICAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTE2MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE0LTA1LTIzICBD
aHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGZpeCBj
b29yZGluYXRlIG1hcHBpbmcgZm9yIGlPUyBhY2Nlc3NpYmlsaXR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMxODgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToK
KyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6YWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcp
OgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50Ojpyb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVl
bik6CisKIDIwMTQtMDUtMjAgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtNYWNdIEFsbG93IHBvcHVwIG1lbnVzIHRvIG92ZXJyaWRlIGRlZmF1bHQgYXBwZWFyYW5j
ZQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgJKHJldmlzaW9uIDE2OTE2MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAx
LDEwIEBACiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvUm9vdFZpZXco
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OkludFJlY3Qgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
Y29uc3Qgb3ZlcnJpZGU7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgV2ViQ29yZTo6
SW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgcm9v
dFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0
IG92ZXJyaWRlOworI2VuZGlmCiAgICAgdmlydHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZv
cm1QYWdlQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRz
U2l6ZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFJlY3RJbnRvVmlldyhjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCShyZXZpc2lvbiAx
NjkxNjEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTYwMCw2ICs2MDAsMTggQEAKICAgICByZXR1cm4gcjsK
IH0KIAorI2lmIFBMQVRGT1JNKElPUykKK0ludFBvaW50IFdlYkNocm9tZUNsaWVudDo6YWNjZXNz
aWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHApIGNvbnN0Cit7CisgICAg
cmV0dXJuIHA7Cit9CisKK0ludFJlY3QgV2ViQ2hyb21lQ2xpZW50Ojpyb290Vmlld1RvQWNjZXNz
aWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JiByKSBjb25zdAoreworICAgIHJldHVybiByOwor
fQorI2VuZGlmCisKIFBsYXRmb3JtUGFnZUNsaWVudCBXZWJDaHJvbWVDbGllbnQ6OnBsYXRmb3Jt
UGFnZUNsaWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNjkxNjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwzNiBAQAorMjAxNC0wNS0yMyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hA
YXBwbGUuY29tPgorCisgICAgICAgIEFYOiBmaXggY29vcmRpbmF0ZSBtYXBwaW5nIGZvciBpT1Mg
YWNjZXNzaWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTMzMTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGluIGFjY2Vzc2liaWxpdHkgY29udmVyc2lvbiBtZXRob2RzIHRoYXQgd2lsbCBj
aGVjayBpZiB0aGUgbWV0aG9kcyBhcmUgcHJlc2VudCAKKyAgICAgICAgKGlmIGFjY2Vzc2liaWxp
dHkgaXMgbm90IG9uLCB0aGV5IHdvbid0IGJlKQorICAgICAgICBhbmQgdXNlIHRob3NlIHRvIGNv
bnZlcnQgcG9pbnRzIGludG8gdGhlIHJpZ2h0IGNvb3JkaW5hdGUgc3BhY2UgdGhhdCBWb2ljZU92
ZXIgaXMgZXhwZWN0aW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjphY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVNjcmVlblRvUm9v
dFZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cm9vdFZpZXdUb0FjY2Vz
c2liaWxpdHlTY3JlZW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6YWNjZXNzaWJpbGl0eVNjcmVl
blRvUm9vdFZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJvb3RWaWV3
VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLm1tOgorICAgICAgICAoLVtXS0FjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0IGFjY2Vzc2liaWxpdHlIaXRUZXN0Ol0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWNj
ZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpy
b290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKwogMjAxNC0wNS0yMSAgU2hpdmFrdW1hciBKTSAgPHNoaXZhLmptQHNh
bXN1bmcuY29tPgogCiAgICAgICAgIFtXZWJLaXQyXSBDbGVhbnVwIHRoZSBidWlsZCBmcm9tIHVu
dXNlZCB2YXJpYWJsZSBpbiBXZWJQcm9jZXNzIG1vZHVsZQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lvbiAxNjkxNjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDEwIEBA
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50
IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpID0gMDsKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQ
b2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYpID0gMDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2li
aWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKKyNlbmRpZgogICAgIAog
ICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkgPSAwOwogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2
aXNpb24gMTY5MTYxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMzYsNiArMzAzNiwxOCBAQAogICAgIHJlc3VsdCA9IG1f
cGFnZUNsaWVudC5yb290Vmlld1RvU2NyZWVuKHZpZXdSZWN0KTsKIH0KICAgICAKKyNpZiBQTEFU
Rk9STShJT1MpCit2b2lkIFdlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZp
ZXcoY29uc3QgSW50UG9pbnQmIHNjcmVlblBvaW50LCBJbnRQb2ludCYgd2luZG93UG9pbnQpCit7
CisgICAgd2luZG93UG9pbnQgPSBtX3BhZ2VDbGllbnQuYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9v
dFZpZXcoc2NyZWVuUG9pbnQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cm9vdFZpZXdUb0Fj
Y2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYgdmlld1JlY3QsIEludFJlY3QmIHJlc3Vs
dCkKK3sKKyAgICByZXN1bHQgPSBtX3BhZ2VDbGllbnQucm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlT
Y3JlZW4odmlld1JlY3QpOworfQorI2VuZGlmCisgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdWludDY0X3Qg
ZnJhbWVJRCwgYm9vbCYgc2hvdWxkQ2xvc2UpCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUg
PSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTY5MTYxKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTg1LDYgKzExODUs
MTAgQEAKICAgICB2b2lkIGdldFdpbmRvd0ZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogICAg
IHZvaWQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2NyZWVuUG9p
bnQsIFdlYkNvcmU6OkludFBvaW50JiB3aW5kb3dQb2ludCk7CiAgICAgdm9pZCByb290Vmlld1Rv
U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0LCBXZWJDb3JlOjpJbnRSZWN0
JiByZXN1bHQpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2b2lkIGFjY2Vzc2liaWxpdHlTY3Jl
ZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JlZW5Qb2ludCwgV2ViQ29y
ZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KTsKKyAgICB2b2lkIHJvb3RWaWV3VG9BY2Nlc3NpYmls
aXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0LCBXZWJDb3JlOjpJbnRS
ZWN0JiByZXN1bHQpOworI2VuZGlmCiAgICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1aW50NjRfdCBmcmFtZUlELCBib29sJiBzaG91bGRD
bG9zZSk7CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29y
ZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7CiAgICAgdm9pZCBwYWdlRGlkU2Nyb2xsKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDE2OTE2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDEyIEBACiAgICAg
R2V0V2luZG93RnJhbWUoKSAtPiAoV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lKQogICAg
IFNjcmVlblRvUm9vdFZpZXcoV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpIC0+IChXZWJD
b3JlOjpJbnRQb2ludCB3aW5kb3dQb2ludCkKICAgICBSb290Vmlld1RvU2NyZWVuKFdlYkNvcmU6
OkludFJlY3QgcmVjdCkgLT4gKFdlYkNvcmU6OkludFJlY3Qgc2NyZWVuRnJhbWUpCisKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgQWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoV2ViQ29yZTo6
SW50UG9pbnQgc2NyZWVuUG9pbnQpIC0+IChXZWJDb3JlOjpJbnRQb2ludCB3aW5kb3dQb2ludCkK
KyAgICBSb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihXZWJDb3JlOjpJbnRSZWN0IHJlY3Qp
IC0+IChXZWJDb3JlOjpJbnRSZWN0IHNjcmVlbkZyYW1lKQorI2VuZGlmCisKICAgICBSdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwoU3RyaW5nIG1lc3NhZ2UsIHVpbnQ2NF90IGZyYW1lSUQpIC0+
IChib29sIHNob3VsZENsb3NlKQogICAgIFBhZ2VEaWRTY3JvbGwoKQogICAgIFJ1bk9wZW5QYW5l
bCh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzIHBhcmFtZXRl
cnMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oCShyZXZpc2lvbiAxNjkxNjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDggQEAK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQ
b2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQg
YWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2li
aWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBi
b29sIHdhc0V2ZW50SGFuZGxlZCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
ICAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNo
RXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0JKHJldmlzaW9u
IDE2OTE2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDggQEAKIAogQGludGVyZmFjZSBVSVZp
ZXcgKElQSSkKIC0gKFVJU2Nyb2xsVmlldyAqKV9zY3JvbGxlcjsKKy0gKENHUG9pbnQpYWNjZXNz
aWJpbGl0eUNvbnZlcnRQb2ludEZyb21TY2VuZVJlZmVyZW5jZUNvb3JkaW5hdGVzOihDR1BvaW50
KXBvaW50OworLSAoQ0dSZWN0KWFjY2Vzc2liaWxpdHlDb252ZXJ0UmVjdFRvU2NlbmVSZWZlcmVu
Y2VDb29yZGluYXRlczooQ0dSZWN0KXJlY3Q7CiBAZW5kCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpAQCAtMzE3LDcgKzMxOSwyMyBAQAogewogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0
KFttX2NvbnRlbnRWaWV3IGNvbnZlcnRSZWN0OnJlY3QgdG9WaWV3Om5pbF0pOwogfQotCisgICAg
CitJbnRQb2ludCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXco
Y29uc3QgSW50UG9pbnQmIHBvaW50KQoreworICAgIENHUG9pbnQgcm9vdFZpZXdQb2ludCA9IHBv
aW50OworICAgIGlmIChbbV9jb250ZW50VmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGFjY2Vzc2liaWxpdHlDb252ZXJ0UG9pbnRGcm9tU2NlbmVSZWZlcmVuY2VDb29yZGluYXRlczop
XSkKKyAgICAgICAgcm9vdFZpZXdQb2ludCA9IFttX2NvbnRlbnRWaWV3IGFjY2Vzc2liaWxpdHlD
b252ZXJ0UG9pbnRGcm9tU2NlbmVSZWZlcmVuY2VDb29yZGluYXRlczpyb290Vmlld1BvaW50XTsK
KyAgICByZXR1cm4gSW50UG9pbnQocm9vdFZpZXdQb2ludCk7Cit9CisgICAgCitJbnRSZWN0IFBh
Z2VDbGllbnRJbXBsOjpyb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0
JiByZWN0KQoreworICAgIENHUmVjdCByb290Vmlld1JlY3QgPSByZWN0OworICAgIGlmIChbbV9j
b250ZW50VmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFjY2Vzc2liaWxpdHlDb252
ZXJ0UmVjdFRvU2NlbmVSZWZlcmVuY2VDb29yZGluYXRlczopXSkKKyAgICAgICAgcm9vdFZpZXdS
ZWN0ID0gW21fY29udGVudFZpZXcgYWNjZXNzaWJpbGl0eUNvbnZlcnRSZWN0VG9TY2VuZVJlZmVy
ZW5jZUNvb3JkaW5hdGVzOnJvb3RWaWV3UmVjdF07CisgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJl
Y3Qocm9vdFZpZXdSZWN0KTsKK30KKyAgICAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRo
S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsLmgJKHJldmlzaW9uIDE2OTE2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCwx
MSBAQAogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50
IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OkludFJlY3Qgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
Jik7Ci0KKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBh
Y2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpID0g
MDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlT
Y3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKKyNlbmRpZgorICAgICAgICAKICAg
ICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2
ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDE2OTE2MSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDg2LDcgKzQ4NiwxOSBAQAogewogICAgIHJldHVybiBtX3BhZ2UtPnJv
b3RWaWV3VG9TY3JlZW4ocmVjdCk7CiB9CisgICAgCisjaWYgUExBVEZPUk0oSU9TKQorSW50UG9p
bnQgV2ViQ2hyb21lQ2xpZW50OjphY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJ
bnRQb2ludCYgcG9pbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS0+YWNjZXNzaWJpbGl0
eVNjcmVlblRvUm9vdFZpZXcocG9pbnQpOworfQogCitJbnRSZWN0IFdlYkNocm9tZUNsaWVudDo6
cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wYWdlLT5yb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihyZWN0
KTsKK30KKyNlbmRpZgorCiBQbGF0Zm9ybVBhZ2VDbGllbnQgV2ViQ2hyb21lQ2xpZW50OjpwbGF0
Zm9ybVBhZ2VDbGllbnQoKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDE2OTE2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTExNyw2ICsxMTcsMTAgQEAKICNlbmRpZgogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9p
bnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmll
dyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
V2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYKICAgICB2aXJ0dWFsIFBsYXRm
b3JtUGFnZUNsaWVudCBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xs
UmVjdEludG9WaWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCBvdmVycmlkZTsgLy8g
Q3VycmVudGx5IG9ubHkgTWFjIGhhcyBhIG5vbiBlbXB0eSBpbXBsZW1lbnRhdGlvbi4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLm1tCShyZXZpc2lvbiAxNjkxNjEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsOSBAQAogI2ltcG9y
dCAiV2ViRnJhbWUuaCIKICNpbXBvcnQgIldlYlBhZ2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvSW50
UG9pbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0ZyYW1lVmlldy5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAKIC8qIAogIFRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGlzIGNsYXNzIHdpbGwgYmUgYXVnbWVudGVkIGJ5IGFuIGFjY2VzaWJp
bGl0eSBidW5kbGUgdGhhdCBpcyBsb2FkZWQgb25seSB3aGVuIGFjY2Vzc2liaWxpdHkgaXMgcmVx
dWVzdGVkIHRvIGJlIGVuYWJsZWQuCkBAIC03Miw3ICs3NCw3IEBACiAgICAgaWYgKCFtX3BhZ2Up
CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgV2ViQ29yZTo6SW50UG9pbnQgY29udmVy
dGVkUG9pbnQgPSBtX3BhZ2UtPnNjcmVlblRvUm9vdFZpZXcoV2ViQ29yZTo6SW50UG9pbnQocG9p
bnQpKTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0ZWRQb2ludCA9IG1fcGFnZS0+YWNj
ZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpKTsKICAg
ICByZXR1cm4gW1tzZWxmIGFjY2Vzc2liaWxpdHlSb290T2JqZWN0V3JhcHBlcl0gYWNjZXNzaWJp
bGl0eUhpdFRlc3Q6Y29udmVydGVkUG9pbnRdOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxNjkxNjEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyOTQsNyArMjI5NCwyMyBAQAogICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJvb3RWaWV3VG9TY3JlZW4ocmVjdCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJv
b3RWaWV3VG9TY3JlZW46OlJlcGx5KHNjcmVlblJlY3QpKTsKICAgICByZXR1cm4gc2NyZWVuUmVj
dDsKIH0KKyAgICAKKyNpZiBQTEFURk9STShJT1MpCitJbnRQb2ludCBXZWJQYWdlOjphY2Nlc3Np
YmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpCit7CisgICAgSW50
UG9pbnQgd2luZG93UG9pbnQ7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
QWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcocG9pbnQpLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpBY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldzo6UmVwbHkod2luZG93UG9pbnQpKTsK
KyAgICByZXR1cm4gd2luZG93UG9pbnQ7Cit9CiAKK0ludFJlY3QgV2ViUGFnZTo6cm9vdFZpZXdU
b0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBJbnRSZWN0
IHNjcmVlblJlY3Q7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Um9vdFZp
ZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4ocmVjdCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJv
b3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuOjpSZXBseShzY3JlZW5SZWN0KSk7CisgICAgcmV0
dXJuIHNjcmVlblJlY3Q7Cit9CisjZW5kaWYKKwogSW50UmVjdCBXZWJQYWdlOjp3aW5kb3dSZXNp
emVyUmVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fd2luZG93UmVzaXplclNpemUuaXNFbXB0eSgp
KQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShy
ZXZpc2lvbiAxNjkxNjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjQsMTEgKzQyNCwxNyBAQAogCiAgICAgdm9pZCBo
aWRlUGFnZUJhbm5lcnMoKTsKICAgICB2b2lkIHNob3dQYWdlQmFubmVycygpOworICAgIAogI2Vu
ZGlmIC8vICFQTEFURk9STShJT1MpCiAKICAgICBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Ub1Jv
b3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBy
b290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLQorICAgIAorI2lmIFBM
QVRGT1JNKElPUykKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9S
b290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIFdlYkNvcmU6OkludFJlY3Qg
cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwor
I2VuZGlmCisgICAgCiAgICAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gc2NhbGVkU25hcHNob3RXaXRo
T3B0aW9ucyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgZG91YmxlIGFkZGl0aW9uYWxTY2FsZUZh
Y3RvciwgU25hcHNob3RPcHRpb25zKTsKICAgICBQYXNzUmVmUHRyPFdlYkltYWdlPiBzbmFwc2hv
dEF0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
Yml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>