<?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>71280</bug_id>
          
          <creation_ts>2011-11-01 04:41:53 -0700</creation_ts>
          <short_desc>[Qt] Merge common desktop and touch APIs under an abstract base class.</short_desc>
          <delta_ts>2011-11-02 09:48: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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>71311</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jocelyn Turcotte">jturcotte</reporter>
          <assigned_to name="Jocelyn Turcotte">jturcotte</assigned_to>
          <cc>hausmann</cc>
    
    <cc>menard</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zalan</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>493844</commentid>
    <comment_count>0</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-11-01 04:41:53 -0700</bug_when>
    <thetext>[Qt] Merge common desktop and touch APIs under an abstract base class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493847</commentid>
    <comment_count>1</comment_count>
      <attachid>113157</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-11-01 04:52:44 -0700</bug_when>
    <thetext>Created attachment 113157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493848</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-01 04:54:03 -0700</bug_when>
    <thetext>Attachment 113157 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/UIProcess/API/qt/qabstractwebview_p.h:35:  q_ptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/qt/qabstractwebview.h:85:  d_ptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 in 19 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>493855</commentid>
    <comment_count>3</comment_count>
      <attachid>113157</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-11-01 05:23:00 -0700</bug_when>
    <thetext>Comment on attachment 113157
Patch

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

Usually in Qt abstract classes have at least one pure virtual method.

&gt; Source/WebKit2/UIProcess/API/qt/qabstractwebview.h:59
&gt; +    // FIXME: We inherit from QSGPaintedItem until QDesktopWebView works on top of a plain QSGItem.

QQuickPaintedItem rather than QSGPaintedItem. QSGItem -&gt; QQuickItem

&gt; Source/WebKit2/UIProcess/API/qt/qabstractwebview.h:80
&gt; +    void linkHovered(const QUrl&amp; url, const QString&amp; title);

I think this should be only in the desktopwebview for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493915</commentid>
    <comment_count>4</comment_count>
      <attachid>113174</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-11-01 08:31:49 -0700</bug_when>
    <thetext>Created attachment 113174
Patch

- Renamed QAbstractWebView to QBaseWebView.
- renamed QtWebPageProxy instances from page to pageProxy.
- Changed the type of QTouchWebPagePrivate::pageProxy from QtTouchWebPageProxy to QtWebPageProxy to make its scope simillar to Q*WebView.
- Moved linkHovered back to QDesktopWebView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493917</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-01 08:38:27 -0700</bug_when>
    <thetext>Attachment 113174 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/UIProcess/API/qt/qbasewebview_p.h:35:  q_ptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/qt/qbasewebview.h:84:  d_ptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 in 21 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>493966</commentid>
    <comment_count>6</comment_count>
      <attachid>113174</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-11-01 10:00:02 -0700</bug_when>
    <thetext>Comment on attachment 113174
Patch

Me gusta.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493974</commentid>
    <comment_count>7</comment_count>
      <attachid>113174</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-11-01 10:05:42 -0700</bug_when>
    <thetext>Comment on attachment 113174
Patch

Clearing flags on attachment: 113174

Committed r98973: &lt;http://trac.webkit.org/changeset/98973&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493975</commentid>
    <comment_count>8</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-11-01 10:05:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494113</commentid>
    <comment_count>9</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-11-01 13:52:40 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; All reviewed patches have been landed.  Closing bug.

http://build.webkit.sed.hu/builders/x86-32%20Linux%20Qt%20Release%20WebKit2/builds/14403/steps/API%20tests/logs/stdio

it broke the QML API tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494679</commentid>
    <comment_count>10</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-11-02 09:48:23 -0700</bug_when>
    <thetext>Fixed the API tests.

Committed r99073: &lt;http://trac.webkit.org/changeset/99073&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113157</attachid>
            <date>2011-11-01 04:52:44 -0700</date>
            <delta_ts>2011-11-01 08:31:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71280-20111101125137.patch</filename>
            <type>text/plain</type>
            <size>56793</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg5NTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyNWVhNGYzYzZlZTE3Njcx
OWM1ZWEyYjg5M2RmNjE3NzUyMDg1MDVjLi5mMTlhZTFjMjBlMjY5NmMxZGFiNWEzZjBlMzcxNmI2
YWYxNjBlMjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE2IEBACisyMDExLTExLTAxICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0
XSBNZXJnZSBjb21tb24gZGVza3RvcCBhbmQgdG91Y2ggdmlldyBBUElzIHVuZGVyIGFuIGFic3Ry
YWN0IGJhc2UgY2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MTI4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIC0gTWFrZSBRRGVza3RvcFdlYlZpZXcgYW5kIFFUb3VjaFdlYlZpZXcgaW5oZXJpdCBm
cm9tIFFBYnN0cmFjdFdlYlZpZXcuCisgICAgICAgIC0gTW92ZSBtZXRob2RzIGZyb20gUVRvdWNo
V2ViUGFnZSB0byBRVG91Y2hXZWJWaWV3ICh0aHJvdWdoIHRoZSBhYnN0cmFjdCBjbGFzcykuCisK
KyAgICAgICAgV2UgdXNlIHRoZSBzYW1lIGNvbnZlbmllbmNlIG1hY3JvcyBhcyBRdCBpbnRlcm5h
bGx5IGJ5IGhpZGluZyBRT2JqZWN0OjpkX3B0cgorICAgICAgICB3aXRoIFFBYnN0cmFjdFdlYlZp
ZXc6OmRfcHRyIGluc3RlYWQgb2YgaW5oZXJpdGluZyBRQWJzdHJhY3RXZWJWaWV3UHJpdmF0ZSBm
cm9tCisgICAgICAgIFFRdWlja0l0ZW1Qcml2YXRlLgorICAgICAgICBBbHNvLCBRQWJzdHJhY3RX
ZWJWaWV3IGN1cnJlbnRseSBpbmhlcml0cyBmcm9tIFFRdWlja1BhaW50ZWRJdGVtIHNpbmNlIFFE
ZXNrdG9wV2ViVmlldworICAgICAgICBuZWVkcyBpdCwgYnV0IHNob3VsZCBiZSBjaGFuZ2VkIGFz
IHNvb24gYXMgdGhpcyBpcyBub3QgcmVxdWlyZWQgYW55bW9yZS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcWFic3RyYWN0d2Vidmlldy5jcHA6IEFkZGVkLgorICAgICAgICAoUUFic3Ry
YWN0V2ViVmlld1ByaXZhdGU6OlFBYnN0cmFjdFdlYlZpZXdQcml2YXRlKToKKyAgICAgICAgKFFB
YnN0cmFjdFdlYlZpZXdQcml2YXRlOjpzZXRQYWdlKToKKyAgICAgICAgKFFBYnN0cmFjdFdlYlZp
ZXc6OlFBYnN0cmFjdFdlYlZpZXcpOgorICAgICAgICAoUUFic3RyYWN0V2ViVmlldzo6flFBYnN0
cmFjdFdlYlZpZXcpOgorICAgICAgICAoUUFic3RyYWN0V2ViVmlldzo6bG9hZCk6CisgICAgICAg
IChRQWJzdHJhY3RXZWJWaWV3Ojp1cmwpOgorICAgICAgICAoUUFic3RyYWN0V2ViVmlldzo6bG9h
ZFByb2dyZXNzKToKKyAgICAgICAgKFFBYnN0cmFjdFdlYlZpZXc6OnRpdGxlKToKKyAgICAgICAg
KFFBYnN0cmFjdFdlYlZpZXc6Om5hdmlnYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFFBYnN0
cmFjdFdlYlZpZXc6OnByZWZlcmVuY2VzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Fh
YnN0cmFjdHdlYnZpZXcuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xdG91Y2h3ZWJwYWdlLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xYWJzdHJh
Y3R3ZWJ2aWV3X3AuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xdG91Y2h3ZWJ2aWV3X3AuaC4KKyAgICAgICAgKFFBYnN0cmFjdFdlYlZpZXdQcml2YXRlOjp+
UUFic3RyYWN0V2ViVmlld1ByaXZhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRl
c2t0b3B3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OlFEZXNr
dG9wV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZW5h
YmxlTW91c2VFdmVudHMpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZGlzYWJs
ZU1vdXNlRXZlbnRzKToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OndlYlZpZXcp
OgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6c2V0Vmlld05lZWRzRGlzcGxheSk6
CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkcmF3aW5nQXJlYVNpemUpOgorICAg
ICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6aGFzRm9jdXMpOgorICAgICAgICAoUURlc2t0
b3BXZWJWaWV3UHJpdmF0ZTo6aXNWaXNpYmxlKToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1By
aXZhdGU6OnN0YXJ0RHJhZyk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkaWRD
aGFuZ2VVcmwpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlVGl0
bGUpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlU3RhdHVzVGV4
dCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpsb2FkRGlkQmVnaW4pOgorICAg
ICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6bG9hZERpZFN1Y2NlZWQpOgorICAgICAgICAo
UURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6bG9hZERpZEZhaWwpOgorICAgICAgICAoUURlc2t0b3BX
ZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlTG9hZFByb2dyZXNzKToKKyAgICAgICAgKFFEZXNrdG9w
V2ViVmlld1ByaXZhdGU6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChRRGVza3RvcFdlYlZp
ZXdQcml2YXRlOjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3
UHJpdmF0ZTo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3
UHJpdmF0ZTo6cnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXc6
OlFEZXNrdG9wV2ViVmlldyk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjppbml0
KToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlldzo6flFEZXNrdG9wV2ViVmlldyk6CisgICAgICAg
IChRRGVza3RvcFdlYlZpZXc6Omdlb21ldHJ5Q2hhbmdlZCk6CisgICAgICAgIChRRGVza3RvcFdl
YlZpZXc6OnBhaW50KToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlldzo6ZXZlbnQpOgorICAgICAg
ICAoUURlc2t0b3BXZWJWaWV3OjpwYWdlUmVmKToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1By
aXZhdGU6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRl
OjpkaWRSZWxhdW5jaFByb2Nlc3MpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6
ZW5naW5lKToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmNob29zZUZpbGVzKToK
KyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6Ol9xX29uT3BlblBhbmVsRmlsZXNTZWxl
Y3RlZCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpfcV9vbk9wZW5QYW5lbEZp
bmlzaGVkKToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRpZE1vdXNlTW92ZU92
ZXJFbGVtZW50KToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6Om5hdmlnYXRpb25Q
b2xpY3lGb3JVUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9x
dC9xdG91Y2h3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFUb3VjaFdlYlZpZXdQcml2YXRlOjppbml0
KToKKyAgICAgICAgKFFUb3VjaFdlYlZpZXdQcml2YXRlOjpsb2FkRGlkQ29tbWl0KToKKyAgICAg
ICAgKFFUb3VjaFdlYlZpZXdQcml2YXRlOjpfcV92aWV3cG9ydFVwZGF0ZWQpOgorICAgICAgICAo
UVRvdWNoV2ViVmlld1ByaXZhdGU6Ol9xX3ZpZXdwb3J0VHJhamVjdG9yeVZlY3RvckNoYW5nZWQp
OgorICAgICAgICAoUVRvdWNoV2ViVmlld1ByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0Q29uc3RyYWlu
dHMpOgorICAgICAgICAoUVRvdWNoV2ViVmlldzo6UVRvdWNoV2ViVmlldyk6CisgICAgICAgIChR
VG91Y2hXZWJWaWV3Ojp+UVRvdWNoV2ViVmlldyk6CisgICAgICAgIChRVG91Y2hXZWJWaWV3Ojpw
YWdlKToKKyAgICAgICAgKFFUb3VjaFdlYlZpZXc6Omdlb21ldHJ5Q2hhbmdlZCk6CisgICAgICAg
IChRVG91Y2hXZWJWaWV3OjpvblZpc2libGVDaGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3F0b3VjaHdlYnZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3Vj
aHdlYnZpZXdfcC5oOgorICAgICAgICAoUVRvdWNoV2ViVmlld1ByaXZhdGU6OnBhZ2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rlc3RzL3RzdF9jb21tb252
aWV3dGVzdHMuY3BwOgorICAgICAgICAodHN0X0NvbW1vblZpZXdUZXN0czo6bG9hZE5vbmV4aXN0
ZW50RmlsZVVybCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3
dGVzdHMvd2Vidmlld2Fic3RyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYlZpZXdBYnN0cmFjdGlv
bjo6V2ViVmlld0Fic3RyYWN0aW9uKToKKyAgICAgICAgKFdlYlZpZXdBYnN0cmFjdGlvbjo6bG9h
ZCk6CisgICAgICAgIChXZWJWaWV3QWJzdHJhY3Rpb246OnVybCk6CisgICAgICAgIChXZWJWaWV3
QWJzdHJhY3Rpb246OmxvYWRQcm9ncmVzcyk6CisgICAgICAgIChXZWJWaWV3QWJzdHJhY3Rpb246
OmdvQmFjayk6CisgICAgICAgIChXZWJWaWV3QWJzdHJhY3Rpb246OmdvRm9yd2FyZCk6CisgICAg
ICAgIChXZWJWaWV3QWJzdHJhY3Rpb246OnN0b3ApOgorICAgICAgICAoV2ViVmlld0Fic3RyYWN0
aW9uOjpyZWxvYWQpOgorICAgICAgICAoV2ViVmlld0Fic3RyYWN0aW9uOjp0b3VjaFZpZXdMb2Fk
RmFpbGVkKToKKyAgICAgICAgKFdlYlZpZXdBYnN0cmFjdGlvbjo6ZGVza3RvcFZpZXdMb2FkRmFp
bGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy93
ZWJ2aWV3YWJzdHJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0
b3VjaHdlYnZpZXcvdHN0X3F0b3VjaHdlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FUb3VjaFdl
YlZpZXc6Om5hdmlnYXRpb25TdGF0dXNBdFN0YXJ0dXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9x
dC9RdERlc2t0b3BXZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoUXREZXNrdG9wV2ViUGFnZVBy
b3h5OjpjcmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0VG91
Y2hWaWV3SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRUb3VjaFZpZXdJbnRlcmZh
Y2U6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6OlF0VG91
Y2hWaWV3SW50ZXJmYWNlOjpkaWRDaGFuZ2VVcmwpOgorICAgICAgICAoV2ViS2l0OjpRdFRvdWNo
Vmlld0ludGVyZmFjZTo6ZGlkQ2hhbmdlVGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpRdFRvdWNo
Vmlld0ludGVyZmFjZTo6bG9hZERpZEJlZ2luKToKKyAgICAgICAgKFdlYktpdDo6UXRUb3VjaFZp
ZXdJbnRlcmZhY2U6OmxvYWREaWRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpRdFRvdWNoVmll
d0ludGVyZmFjZTo6bG9hZERpZFN1Y2NlZWQpOgorICAgICAgICAoV2ViS2l0OjpRdFRvdWNoVmll
d0ludGVyZmFjZTo6bG9hZERpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpRdFRvdWNoVmlld0lu
dGVyZmFjZTo6ZGlkQ2hhbmdlTG9hZFByb2dyZXNzKToKKyAgICAgICAgKiBXZWJLaXQyQVBJLnBy
aToKKwogMjAxMS0xMS0wMSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5j
b20+CiAKICAgICAgICAgW1dLMl0gQWRkIFdlYkdlc3R1cmVFdmVudHMgdG8gdGhlIFF0IGJ1aWxk
IGFuZCBlbmFibGUgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWFic3RyYWN0d2Vidmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FhYnN0cmFjdHdlYnZpZXcuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjc1YmU1NWIyOGI3MGU3ODc5NDM3Mjg1ZDY2M2I0ZGZkMjg5N2VjYzkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FhYnN0cmFjdHdlYnZpZXcu
Y3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAicWFic3RyYWN0d2Vidmlldy5oIgorCisjaW5jbHVkZSAiUXRXZWJQYWdl
UHJveHkuaCIKKyNpbmNsdWRlICJxYWJzdHJhY3R3ZWJ2aWV3X3AuaCIKKyNpbmNsdWRlICJxd2Vi
bmF2aWdhdGlvbmNvbnRyb2xsZXIuaCIKKworUUFic3RyYWN0V2ViVmlld1ByaXZhdGU6OlFBYnN0
cmFjdFdlYlZpZXdQcml2YXRlKCkKKyAgICA6IHFfcHRyKDApCisgICAgLCBuYXZpZ2F0aW9uQ29u
dHJvbGxlcigwKQoreworfQorCit2b2lkIFFBYnN0cmFjdFdlYlZpZXdQcml2YXRlOjpzZXRQYWdl
KFF0V2ViUGFnZVByb3h5KiBwYWdlKQoreworICAgIHRoaXMtPnBhZ2UucmVzZXQocGFnZSk7Cit9
CisKK1FBYnN0cmFjdFdlYlZpZXc6OlFBYnN0cmFjdFdlYlZpZXcoUUFic3RyYWN0V2ViVmlld1By
aXZhdGUgJmRkLCBRUXVpY2tJdGVtICpwYXJlbnQpCisgICAgOiBRUXVpY2tQYWludGVkSXRlbShw
YXJlbnQpCisgICAgLCBkX3B0cigmZGQpCit7CisgICAgZF9wdHItPnFfcHRyID0gdGhpczsKK30K
KworUUFic3RyYWN0V2ViVmlldzo6flFBYnN0cmFjdFdlYlZpZXcoKQoreworfQorCit2b2lkIFFB
YnN0cmFjdFdlYlZpZXc6OmxvYWQoY29uc3QgUVVybCYgdXJsKQoreworICAgIFFfRChRQWJzdHJh
Y3RXZWJWaWV3KTsKKyAgICBkLT5wYWdlLT5sb2FkKHVybCk7Cit9CisKK1FVcmwgUUFic3RyYWN0
V2ViVmlldzo6dXJsKCkgY29uc3QKK3sKKyAgICBRX0QoY29uc3QgUUFic3RyYWN0V2ViVmlldyk7
CisgICAgcmV0dXJuIGQtPnBhZ2UtPnVybCgpOworfQorCitpbnQgUUFic3RyYWN0V2ViVmlldzo6
bG9hZFByb2dyZXNzKCkgY29uc3QKK3sKKyAgICBRX0QoY29uc3QgUUFic3RyYWN0V2ViVmlldyk7
CisgICAgcmV0dXJuIGQtPnBhZ2UtPmxvYWRQcm9ncmVzcygpOworfQorCitRU3RyaW5nIFFBYnN0
cmFjdFdlYlZpZXc6OnRpdGxlKCkgY29uc3QKK3sKKyAgICBRX0QoY29uc3QgUUFic3RyYWN0V2Vi
Vmlldyk7CisgICAgcmV0dXJuIGQtPnBhZ2UtPnRpdGxlKCk7Cit9CisKK1FXZWJOYXZpZ2F0aW9u
Q29udHJvbGxlciogUUFic3RyYWN0V2ViVmlldzo6bmF2aWdhdGlvbkNvbnRyb2xsZXIoKSBjb25z
dAoreworICAgIFFfRChjb25zdCBRQWJzdHJhY3RXZWJWaWV3KTsKKyAgICBpZiAoIWQtPm5hdmln
YXRpb25Db250cm9sbGVyKQorICAgICAgICBjb25zdF9jYXN0PFFBYnN0cmFjdFdlYlZpZXdQcml2
YXRlKj4oZCktPm5hdmlnYXRpb25Db250cm9sbGVyID0gbmV3IFFXZWJOYXZpZ2F0aW9uQ29udHJv
bGxlcihkLT5wYWdlLmRhdGEoKSk7CisgICAgcmV0dXJuIGQtPm5hdmlnYXRpb25Db250cm9sbGVy
OworfQorCitRV2ViUHJlZmVyZW5jZXMqIFFBYnN0cmFjdFdlYlZpZXc6OnByZWZlcmVuY2VzKCkg
Y29uc3QKK3sKKyAgICBRX0QoY29uc3QgUUFic3RyYWN0V2ViVmlldyk7CisgICAgcmV0dXJuIGQt
PnBhZ2UtPnByZWZlcmVuY2VzKCk7Cit9CisKKyNpbmNsdWRlICJtb2NfcWFic3RyYWN0d2Vidmll
dy5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FhYnN0
cmFjdHdlYnZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWFic3RyYWN0
d2Vidmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NmQ0YWY4ZjgxYTYyOTg2Mjk2M2IwZDIzNGM1Nzk3MzQ4
NGYzMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FhYnN0cmFjdHdlYnZpZXcuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0g
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKwor
I2lmbmRlZiBxYWJzdHJhY3R3ZWJ2aWV3X2gKKyNkZWZpbmUgcWFic3RyYWN0d2Vidmlld19oCisK
KyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xcXVp
Y2twYWludGVkaXRlbS5oPgorCitjbGFzcyBRQWJzdHJhY3RXZWJWaWV3UHJpdmF0ZTsKK2NsYXNz
IFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjsKK2NsYXNzIFFXZWJQcmVmZXJlbmNlczsKKworUVRf
QkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRUGFpbnRlcjsKK2NsYXNzIFFVcmw7CitRVF9FTkRfTkFN
RVNQQUNFCisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFBYnN0cmFjdFdlYlZpZXcgOiBwdWJsaWMg
UVF1aWNrUGFpbnRlZEl0ZW0geworICAgIFFfT0JKRUNUCisgICAgUV9QUk9QRVJUWShRU3RyaW5n
IHRpdGxlIFJFQUQgdGl0bGUgTk9USUZZIHRpdGxlQ2hhbmdlZCkKKyAgICBRX1BST1BFUlRZKFFV
cmwgdXJsIFJFQUQgdXJsIE5PVElGWSB1cmxDaGFuZ2VkKQorICAgIFFfUFJPUEVSVFkoaW50IGxv
YWRQcm9ncmVzcyBSRUFEIGxvYWRQcm9ncmVzcyBOT1RJRlkgbG9hZFByb2dyZXNzQ2hhbmdlZCkK
KyAgICBRX1BST1BFUlRZKFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlciogbmF2aWdhdGlvbiBSRUFE
IG5hdmlnYXRpb25Db250cm9sbGVyIENPTlNUQU5UIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoUVdl
YlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcyBSRUFEIHByZWZlcmVuY2VzIENPTlNUQU5UIEZJTkFM
KQorICAgIFFfRU5VTVMoTmF2aWdhdGlvblBvbGljeSkKKyAgICBRX0VOVU1TKEVycm9yVHlwZSkK
K3B1YmxpYzoKKyAgICBlbnVtIE5hdmlnYXRpb25Qb2xpY3kgeworICAgICAgICBVc2VQb2xpY3ks
CisgICAgICAgIERvd25sb2FkUG9saWN5LAorICAgICAgICBJZ25vcmVQb2xpY3kKKyAgICB9Owor
CisgICAgZW51bSBFcnJvclR5cGUgeworICAgICAgICBFbmdpbmVFcnJvciwKKyAgICAgICAgTmV0
d29ya0Vycm9yLAorICAgICAgICBIdHRwRXJyb3IKKyAgICB9OworICAgIHZpcnR1YWwgflFBYnN0
cmFjdFdlYlZpZXcoKTsKKworICAgIC8vIEZJWE1FOiBXZSBpbmhlcml0IGZyb20gUVNHUGFpbnRl
ZEl0ZW0gdW50aWwgUURlc2t0b3BXZWJWaWV3IHdvcmtzIG9uIHRvcCBvZiBhIHBsYWluIFFTR0l0
ZW0uCisgICAgdm9pZCBwYWludChRUGFpbnRlciopIHsgfQorCisgICAgUVVybCB1cmwoKSBjb25z
dDsKKyAgICBRU3RyaW5nIHRpdGxlKCkgY29uc3Q7CisgICAgaW50IGxvYWRQcm9ncmVzcygpIGNv
bnN0OworCisgICAgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyKiBuYXZpZ2F0aW9uQ29udHJvbGxl
cigpIGNvbnN0OworICAgIFFXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMoKSBjb25zdDsKKwor
cHVibGljIFFfU0xPVFM6CisgICAgIHZvaWQgbG9hZChjb25zdCBRVXJsJik7CisKK1FfU0lHTkFM
UzoKKyAgICB2b2lkIHRpdGxlQ2hhbmdlZChjb25zdCBRU3RyaW5nJiB0aXRsZSk7CisgICAgdm9p
ZCBzdGF0dXNCYXJNZXNzYWdlQ2hhbmdlZChjb25zdCBRU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2
b2lkIGxvYWRTdGFydGVkKCk7CisgICAgdm9pZCBsb2FkU3VjY2VlZGVkKCk7CisgICAgdm9pZCBs
b2FkRmFpbGVkKFFBYnN0cmFjdFdlYlZpZXc6OkVycm9yVHlwZSBlcnJvclR5cGUsIGludCBlcnJv
ckNvZGUsIGNvbnN0IFFVcmwmIHVybCk7CisgICAgdm9pZCBsb2FkUHJvZ3Jlc3NDaGFuZ2VkKGlu
dCBwcm9ncmVzcyk7CisgICAgdm9pZCB1cmxDaGFuZ2VkKGNvbnN0IFFVcmwmIHVybCk7CisgICAg
dm9pZCBsaW5rSG92ZXJlZChjb25zdCBRVXJsJiB1cmwsIGNvbnN0IFFTdHJpbmcmIHRpdGxlKTsK
KworcHJvdGVjdGVkOgorICAgIFFBYnN0cmFjdFdlYlZpZXcoUUFic3RyYWN0V2ViVmlld1ByaXZh
dGUgJmRkLCBRUXVpY2tJdGVtICpwYXJlbnQgPSAwKTsKKyAgICAvLyBIaWRlcyBRT2JqZWN0Ojpk
X3B0ciBhbGxvd2luZyB1cyB0byB1c2UgdGhlIGNvbnZlbmllbmNlIG1hY3Jvcy4KKyAgICBRU2Nv
cGVkUG9pbnRlcjxRQWJzdHJhY3RXZWJWaWV3UHJpdmF0ZT4gZF9wdHI7Citwcml2YXRlOgorICAg
IFFfREVDTEFSRV9QUklWQVRFKFFBYnN0cmFjdFdlYlZpZXcpCit9OworCisjZW5kaWYgLyogcWFi
c3RyYWN0d2Vidmlld19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FhYnN0cmFjdHdlYnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xYWJzdHJhY3R3ZWJ2aWV3X3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzUzYmY0YWU5ZTAxOWQ3NTAy
Mzg4MjUxNjAyZjY1MDg0YjQ1YjY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xYWJzdHJhY3R3ZWJ2aWV3X3AuaApAQCAtMCwwICsxLDQxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBxYWJzdHJhY3R3ZWJ2aWV3X3BfaAorI2RlZmluZSBx
YWJzdHJhY3R3ZWJ2aWV3X3BfaAorCisjaW5jbHVkZSAicWFic3RyYWN0d2Vidmlldy5oIgorCitj
bGFzcyBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI7CitjbGFzcyBRdFdlYlBhZ2VQcm94eTsKKwor
Y2xhc3MgUUFic3RyYWN0V2ViVmlld1ByaXZhdGUgeworICAgIFFfREVDTEFSRV9QVUJMSUMoUUFi
c3RyYWN0V2ViVmlldykKK3B1YmxpYzoKKyAgICBRQWJzdHJhY3RXZWJWaWV3UHJpdmF0ZSgpOwor
ICAgIHZpcnR1YWwgflFBYnN0cmFjdFdlYlZpZXdQcml2YXRlKCkgeyB9CisgICAgdm9pZCBzZXRQ
YWdlKFF0V2ViUGFnZVByb3h5KiBwYWdlKTsKKyAgICBRQWJzdHJhY3RXZWJWaWV3KiBxX3B0cjsK
KyAgICBRU2NvcGVkUG9pbnRlcjxRdFdlYlBhZ2VQcm94eT4gcGFnZTsKKworICAgIFFXZWJOYXZp
Z2F0aW9uQ29udHJvbGxlciogbmF2aWdhdGlvbkNvbnRyb2xsZXI7Cit9OworCisjZW5kaWYgLyog
cWFic3RyYWN0d2Vidmlld19wX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAppbmRleCA4ZWY0NzkyODI4ODFjNTYzOWYwZDNm
MWJhM2IzMTAyNDhjYWY4OGM1Li42ZDQyZjI1MDc2ZDA2NDEyYmY1NTE5YWY2MDgyNjgxZWUxOTU1
ODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9w
d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3Rv
cHdlYnZpZXcuY3BwCkBAIC0yMSwxNiArMjEsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJxZGVza3RvcHdlYnZpZXcuaCIKIAorI2luY2x1ZGUgIlF0RGVza3RvcFdlYlBhZ2VQ
cm94eS5oIgogI2luY2x1ZGUgIlF0V2ViRXJyb3IuaCIKICNpbmNsdWRlICJVdGlsc1F0LmgiCiAj
aW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3X3AuaCIKICNpbmNsdWRlIDxRRmlsZURpYWxvZz4KLSNp
bmNsdWRlIDxRR3JhcGhpY3NTY2VuZUV2ZW50PgotI2luY2x1ZGUgPFFHcmFwaGljc1NjZW5lUmVz
aXplRXZlbnQ+Ci0jaW5jbHVkZSA8UVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtPgogI2luY2x1ZGUg
PFF0RGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZlZW5naW5lLmg+CiAjaW5jbHVkZSA8UXREZWNsYXJh
dGl2ZS9xcXVpY2tjYW52YXMuaD4KLSNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FxdWlja2l0ZW0u
aD4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FxdWlja3ZpZXcuaD4KICNpbmNsdWRlIDxRdEd1
aS9RQ3Vyc29yPgogI2luY2x1ZGUgPFF0R3VpL1FEcmFnPgpAQCAtNDUsMzMgKzQyLDM5IEBACiAj
aW5jbHVkZSA8UXRXaWRnZXRzL1FNZXNzYWdlQm94PgogI2luY2x1ZGUgPFdLT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIuaD4KIAotUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6UURlc2t0b3BXZWJWaWV3
UHJpdmF0ZShRRGVza3RvcFdlYlZpZXcqIHEsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1Bh
Z2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCi0gICAgOiBxKHEpCi0gICAgLCBwYWdlKHRoaXMsIGNv
bnRleHRSZWYsIHBhZ2VHcm91cFJlZikKLSAgICAsIGlzQ3Jhc2hlZChmYWxzZSkKLSAgICAsIG5h
dmlnYXRpb25Db250cm9sbGVyKDApCitRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpRRGVza3RvcFdl
YlZpZXdQcml2YXRlKCkKKyAgICA6IGlzQ3Jhc2hlZChmYWxzZSkKIHsKIH0KIAogdm9pZCBRRGVz
a3RvcFdlYlZpZXdQcml2YXRlOjplbmFibGVNb3VzZUV2ZW50cygpCiB7CisgICAgUV9RKFFEZXNr
dG9wV2ViVmlldyk7CiAgICAgcS0+c2V0QWNjZXB0ZWRNb3VzZUJ1dHRvbnMoUXQ6Ok1vdXNlQnV0
dG9uTWFzayk7CiAgICAgcS0+c2V0QWNjZXB0SG92ZXJFdmVudHModHJ1ZSk7CiB9CiAKIHZvaWQg
UURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZGlzYWJsZU1vdXNlRXZlbnRzKCkKIHsKKyAgICBRX1Eo
UURlc2t0b3BXZWJWaWV3KTsKICAgICBxLT5zZXRBY2NlcHRlZE1vdXNlQnV0dG9ucyhRdDo6Tm9C
dXR0b24pOwogICAgIHEtPnNldEFjY2VwdEhvdmVyRXZlbnRzKGZhbHNlKTsKIH0KIAorUURlc2t0
b3BXZWJWaWV3KiBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjp3ZWJWaWV3KCkKK3sKKyAgICByZXR1
cm4gcV9mdW5jKCk7Cit9CisKIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6c2V0Vmlld05l
ZWRzRGlzcGxheShjb25zdCBRUmVjdCYgaW52YWxpZGF0ZWRBcmVhKQogeworICAgIFFfUShRRGVz
a3RvcFdlYlZpZXcpOwogICAgIHEtPnVwZGF0ZShpbnZhbGlkYXRlZEFyZWEpOwogfQogCiBRU2l6
ZSBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkcmF3aW5nQXJlYVNpemUoKQogeworICAgIFFfUShR
RGVza3RvcFdlYlZpZXcpOwogICAgIHJldHVybiBRU2l6ZShxLT53aWR0aCgpLCBxLT5oZWlnaHQo
KSk7CiB9CiAKQEAgLTg3LDE2ICs5MCwxOSBAQCBib29sIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6
OmlzQWN0aXZlKCkKIAogYm9vbCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpoYXNGb2N1cygpCiB7
CisgICAgUV9RKFFEZXNrdG9wV2ViVmlldyk7CiAgICAgcmV0dXJuIHEtPmhhc0ZvY3VzKCk7CiB9
CiAKIGJvb2wgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6aXNWaXNpYmxlKCkKIHsKKyAgICBRX1Eo
UURlc2t0b3BXZWJWaWV3KTsKICAgICByZXR1cm4gcS0+aXNWaXNpYmxlKCk7CiB9CiAKIHZvaWQg
UURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6c3RhcnREcmFnKFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0
ZWREcm9wQWN0aW9ucywgY29uc3QgUUltYWdlJiBkcmFnSW1hZ2UsIFFNaW1lRGF0YSogZGF0YSwg
UVBvaW50KiBjbGllbnRQb3NpdGlvbiwgUVBvaW50KiBnbG9iYWxQb3NpdGlvbiwgUXQ6OkRyb3BB
Y3Rpb24qIGRyb3BBY3Rpb24pCiB7CisgICAgUV9RKFFEZXNrdG9wV2ViVmlldyk7CiAgICAgUVdp
bmRvdyogd2luZG93ID0gcS0+Y2FudmFzKCk7CiAgICAgaWYgKCF3aW5kb3cpCiAgICAgICAgIHJl
dHVybjsKQEAgLTEyMSwxMSArMTI3LDEzIEBAIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6
ZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBRUG9pbnQmLCBjb25zdCBRUmVjdCYpCiAKIHZvaWQg
UURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlVXJsKGNvbnN0IFFVcmwmIHVybCkKIHsK
KyAgICBRX1EoUURlc2t0b3BXZWJWaWV3KTsKICAgICBlbWl0IHEtPnVybENoYW5nZWQodXJsKTsK
IH0KIAogdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VUaXRsZShjb25zdCBR
U3RyaW5nJiBuZXdUaXRsZSkKIHsKKyAgICBRX1EoUURlc2t0b3BXZWJWaWV3KTsKICAgICBlbWl0
IHEtPnRpdGxlQ2hhbmdlZChuZXdUaXRsZSk7CiB9CiAKQEAgLTEzNiw2ICsxNDQsNyBAQCB2b2lk
IFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRpZENoYW5nZVRvb2xUaXAoY29uc3QgUVN0cmluZyYg
bmV3VG9vbFRpcCkKIAogdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VTdGF0
dXNUZXh0KGNvbnN0IFFTdHJpbmcmIG5ld01lc3NhZ2UpCiB7CisgICAgUV9RKFFEZXNrdG9wV2Vi
Vmlldyk7CiAgICAgZW1pdCBxLT5zdGF0dXNCYXJNZXNzYWdlQ2hhbmdlZChuZXdNZXNzYWdlKTsK
IH0KIApAQCAtMTQ3LDYgKzE1Niw3IEBAIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZGlk
Q2hhbmdlQ3Vyc29yKGNvbnN0IFFDdXJzb3ImIG5ld0N1cnNvcikKIAogdm9pZCBRRGVza3RvcFdl
YlZpZXdQcml2YXRlOjpsb2FkRGlkQmVnaW4oKQogeworICAgIFFfUShRRGVza3RvcFdlYlZpZXcp
OwogICAgIGVtaXQgcS0+bG9hZFN0YXJ0ZWQoKTsKIH0KIApAQCAtMTU3LDIxICsxNjcsMjUgQEAg
dm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpsb2FkRGlkQ29tbWl0KCkKIAogdm9pZCBRRGVz
a3RvcFdlYlZpZXdQcml2YXRlOjpsb2FkRGlkU3VjY2VlZCgpCiB7CisgICAgUV9RKFFEZXNrdG9w
V2ViVmlldyk7CiAgICAgZW1pdCBxLT5sb2FkU3VjY2VlZGVkKCk7CiB9CiAKIHZvaWQgUURlc2t0
b3BXZWJWaWV3UHJpdmF0ZTo6bG9hZERpZEZhaWwoY29uc3QgUXRXZWJFcnJvciYgZXJyb3IpCiB7
CisgICAgUV9RKFFEZXNrdG9wV2ViVmlldyk7CiAgICAgZW1pdCBxLT5sb2FkRmFpbGVkKHN0YXRp
Y19jYXN0PFFEZXNrdG9wV2ViVmlldzo6RXJyb3JUeXBlPihlcnJvci50eXBlKCkpLCBlcnJvci5l
cnJvckNvZGUoKSwgZXJyb3IudXJsKCkpOwogfQogCiB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZh
dGU6OmRpZENoYW5nZUxvYWRQcm9ncmVzcyhpbnQgcGVyY2VudGFnZUxvYWRlZCkKIHsKKyAgICBR
X1EoUURlc2t0b3BXZWJWaWV3KTsKICAgICBlbWl0IHEtPmxvYWRQcm9ncmVzc0NoYW5nZWQocGVy
Y2VudGFnZUxvYWRlZCk7CiB9CiAKIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6c2hvd0Nv
bnRleHRNZW51KFFTaGFyZWRQb2ludGVyPFFNZW51PiBtZW51KQogeworICAgIFFfUShRRGVza3Rv
cFdlYlZpZXcpOwogICAgIC8vIFJlbW92ZSB0aGUgYWN0aXZlIG1lbnUgaW4gY2FzZSB0aGlzIGZ1
bmN0aW9uIGlzIGNhbGxlZCB0d2ljZS4KICAgICBpZiAoYWN0aXZlTWVudSkKICAgICAgICAgYWN0
aXZlTWVudS0+aGlkZSgpOwpAQCAtMjA1LDcgKzIxOSw4IEBAIHZvaWQgUURlc2t0b3BXZWJWaWV3
UHJpdmF0ZTo6aGlkZUNvbnRleHRNZW51KCkKIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6
cnVuSmF2YVNjcmlwdEFsZXJ0KGNvbnN0IFFTdHJpbmcmIGFsZXJ0VGV4dCkKIHsKICNpZm5kZWYg
UVRfTk9fTUVTU0FHRUJPWAotICAgIGNvbnN0IFFTdHJpbmcgdGl0bGUgPSB0cigiSmF2YVNjcmlw
dCBBbGVydCAtICUxIikuYXJnKHEtPnVybCgpLmhvc3QoKSk7CisgICAgUV9RKFFEZXNrdG9wV2Vi
Vmlldyk7CisgICAgY29uc3QgUVN0cmluZyB0aXRsZSA9IFFPYmplY3Q6OnRyKCJKYXZhU2NyaXB0
IEFsZXJ0IC0gJTEiKS5hcmcocS0+dXJsKCkuaG9zdCgpKTsKICAgICBkaXNhYmxlTW91c2VFdmVu
dHMoKTsKICAgICBRTWVzc2FnZUJveDo6aW5mb3JtYXRpb24oMCwgdGl0bGUsIGVzY2FwZUh0bWwo
YWxlcnRUZXh0KSwgUU1lc3NhZ2VCb3g6Ok9rKTsKICAgICBlbmFibGVNb3VzZUV2ZW50cygpOwpA
QCAtMjE4LDcgKzIzMyw4IEBAIGJvb2wgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6cnVuSmF2YVNj
cmlwdENvbmZpcm0oY29uc3QgUVN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBib29sIHJlc3VsdCA9
IHRydWU7CiAjaWZuZGVmIFFUX05PX01FU1NBR0VCT1gKLSAgICBjb25zdCBRU3RyaW5nIHRpdGxl
ID0gdHIoIkphdmFTY3JpcHQgQ29uZmlybSAtICUxIikuYXJnKHEtPnVybCgpLmhvc3QoKSk7Cisg
ICAgUV9RKFFEZXNrdG9wV2ViVmlldyk7CisgICAgY29uc3QgUVN0cmluZyB0aXRsZSA9IFFPYmpl
Y3Q6OnRyKCJKYXZhU2NyaXB0IENvbmZpcm0gLSAlMSIpLmFyZyhxLT51cmwoKS5ob3N0KCkpOwog
ICAgIGRpc2FibGVNb3VzZUV2ZW50cygpOwogICAgIHJlc3VsdCA9IFFNZXNzYWdlQm94OjpZZXMg
PT0gUU1lc3NhZ2VCb3g6OmluZm9ybWF0aW9uKDAsIHRpdGxlLCBlc2NhcGVIdG1sKG1lc3NhZ2Up
LCBRTWVzc2FnZUJveDo6WWVzLCBRTWVzc2FnZUJveDo6Tm8pOwogICAgIGVuYWJsZU1vdXNlRXZl
bnRzKCk7CkBAIC0yMzEsNyArMjQ3LDggQEAgYm9vbCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpy
dW5KYXZhU2NyaXB0Q29uZmlybShjb25zdCBRU3RyaW5nJiBtZXNzYWdlKQogUVN0cmluZyBRRGVz
a3RvcFdlYlZpZXdQcml2YXRlOjpydW5KYXZhU2NyaXB0UHJvbXB0KGNvbnN0IFFTdHJpbmcmIG1l
c3NhZ2UsIGNvbnN0IFFTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgYm9vbCYgb2spCiB7CiAjaWZuZGVm
IFFUX05PX0lOUFVURElBTE9HCi0gICAgY29uc3QgUVN0cmluZyB0aXRsZSA9IHRyKCJKYXZhU2Ny
aXB0IFByb21wdCAtICUxIikuYXJnKHEtPnVybCgpLmhvc3QoKSk7CisgICAgUV9RKFFEZXNrdG9w
V2ViVmlldyk7CisgICAgY29uc3QgUVN0cmluZyB0aXRsZSA9IFFPYmplY3Q6OnRyKCJKYXZhU2Ny
aXB0IFByb21wdCAtICUxIikuYXJnKHEtPnVybCgpLmhvc3QoKSk7CiAgICAgZGlzYWJsZU1vdXNl
RXZlbnRzKCk7CiAgICAgUVN0cmluZyByZXN1bHQgPSBRSW5wdXREaWFsb2c6OmdldFRleHQoMCwg
dGl0bGUsIGVzY2FwZUh0bWwobWVzc2FnZSksIFFMaW5lRWRpdDo6Tm9ybWFsLCBkZWZhdWx0VmFs
dWUsICZvayk7CiAgICAgZW5hYmxlTW91c2VFdmVudHMoKTsKQEAgLTI0Myw1OSArMjYwLDI3IEBA
IFFTdHJpbmcgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6cnVuSmF2YVNjcmlwdFByb21wdChjb25z
dCBRU3RyaW5nJiBtZXNzYWdlLCBjb25zCiB9CiAKIFFEZXNrdG9wV2ViVmlldzo6UURlc2t0b3BX
ZWJWaWV3KFFRdWlja0l0ZW0qIHBhcmVudCkKLSAgICA6IFFRdWlja1BhaW50ZWRJdGVtKHBhcmVu
dCkKLSAgICAsIGQobmV3IFFEZXNrdG9wV2ViVmlld1ByaXZhdGUodGhpcykpCisgICAgOiBRQWJz
dHJhY3RXZWJWaWV3KCoobmV3IFFEZXNrdG9wV2ViVmlld1ByaXZhdGUpLCBwYXJlbnQpCiB7Ci0g
ICAgaW5pdCgpOworICAgIFFfRChRRGVza3RvcFdlYlZpZXcpOworICAgIGQtPmluaXQoKTsKIH0K
IAogUURlc2t0b3BXZWJWaWV3OjpRRGVza3RvcFdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgUVF1aWNrSXRlbSogcGFyZW50KQotICAg
IDogUVF1aWNrUGFpbnRlZEl0ZW0ocGFyZW50KQotICAgICwgZChuZXcgUURlc2t0b3BXZWJWaWV3
UHJpdmF0ZSh0aGlzLCBjb250ZXh0UmVmLCBwYWdlR3JvdXBSZWYpKQorICAgIDogUUFic3RyYWN0
V2ViVmlldygqKG5ldyBRRGVza3RvcFdlYlZpZXdQcml2YXRlKSwgcGFyZW50KQogewotICAgIGlu
aXQoKTsKKyAgICBRX0QoUURlc2t0b3BXZWJWaWV3KTsKKyAgICBkLT5pbml0KGNvbnRleHRSZWYs
IHBhZ2VHcm91cFJlZik7CiB9CiAKLXZvaWQgUURlc2t0b3BXZWJWaWV3Ojppbml0KCkKK3ZvaWQg
UURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6aW5pdChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQ
YWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQogewotICAgIGQtPmVuYWJsZU1vdXNlRXZlbnRzKCk7
CisgICAgc2V0UGFnZShuZXcgUXREZXNrdG9wV2ViUGFnZVByb3h5KHRoaXMsIGNvbnRleHRSZWYs
IHBhZ2VHcm91cFJlZikpOworICAgIGVuYWJsZU1vdXNlRXZlbnRzKCk7CiB9CiAKIFFEZXNrdG9w
V2ViVmlldzo6flFEZXNrdG9wV2ViVmlldygpCiB7Ci0gICAgZGVsZXRlIGQ7Ci19Ci0KLXZvaWQg
UURlc2t0b3BXZWJWaWV3Ojpsb2FkKGNvbnN0IFFVcmwmIHVybCkKLXsKLSAgICBkLT5wYWdlLmxv
YWQodXJsKTsKLX0KLQotUVVybCBRRGVza3RvcFdlYlZpZXc6OnVybCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGQtPnBhZ2UudXJsKCk7Ci19Ci0KLWludCBRRGVza3RvcFdlYlZpZXc6OmxvYWRQcm9n
cmVzcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGQtPnBhZ2UubG9hZFByb2dyZXNzKCk7Ci19Ci0K
LVFTdHJpbmcgUURlc2t0b3BXZWJWaWV3Ojp0aXRsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGQt
PnBhZ2UudGl0bGUoKTsKLX0KLQotUVdlYk5hdmlnYXRpb25Db250cm9sbGVyKiBRRGVza3RvcFdl
YlZpZXc6Om5hdmlnYXRpb25Db250cm9sbGVyKCkgY29uc3QKLXsKLSAgICBpZiAoIWQtPm5hdmln
YXRpb25Db250cm9sbGVyKQotICAgICAgICBkLT5uYXZpZ2F0aW9uQ29udHJvbGxlciA9IG5ldyBR
V2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIoJmQtPnBhZ2UpOwotICAgIHJldHVybiBkLT5uYXZpZ2F0
aW9uQ29udHJvbGxlcjsKLX0KLQotUVdlYlByZWZlcmVuY2VzKiBRRGVza3RvcFdlYlZpZXc6OnBy
ZWZlcmVuY2VzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZC0+cGFnZS5wcmVmZXJlbmNlcygpOwog
fQogCiBzdGF0aWMgdm9pZCBwYWludENyYXNoZWRQYWdlKFFQYWludGVyKiBwYWludGVyLCBjb25z
dCBRUmVjdEYmIHJlY3QpCkBAIC0zOTcsMjUgKzM4MiwyOCBAQCB2b2lkIFFEZXNrdG9wV2ViVmll
dzo6ZHJvcEV2ZW50KFFEcm9wRXZlbnQqIGV2ZW50KQogCiB2b2lkIFFEZXNrdG9wV2ViVmlldzo6
Z2VvbWV0cnlDaGFuZ2VkKGNvbnN0IFFSZWN0RiYgbmV3R2VvbWV0cnksIGNvbnN0IFFSZWN0RiYg
b2xkR2VvbWV0cnkpCiB7CisgICAgUV9EKFFEZXNrdG9wV2ViVmlldyk7CiAgICAgUVF1aWNrUGFp
bnRlZEl0ZW06Omdlb21ldHJ5Q2hhbmdlZChuZXdHZW9tZXRyeSwgb2xkR2VvbWV0cnkpOwogICAg
IGlmIChuZXdHZW9tZXRyeS5zaXplKCkgIT0gb2xkR2VvbWV0cnkuc2l6ZSgpKQotICAgICAgICBk
LT5wYWdlLnNldERyYXdpbmdBcmVhU2l6ZShuZXdHZW9tZXRyeS5zaXplKCkudG9TaXplKCkpOwor
ICAgICAgICBkLT5wYWdlLT5zZXREcmF3aW5nQXJlYVNpemUobmV3R2VvbWV0cnkuc2l6ZSgpLnRv
U2l6ZSgpKTsKIH0KIAogdm9pZCBRRGVza3RvcFdlYlZpZXc6OnBhaW50KFFQYWludGVyKiBwYWlu
dGVyKQogeworICAgIFFfRChRRGVza3RvcFdlYlZpZXcpOwogICAgIGNvbnN0IFFSZWN0RiByZWN0
ID0gYm91bmRpbmdSZWN0KCk7CiAgICAgaWYgKGQtPmlzQ3Jhc2hlZCkgewogICAgICAgICBwYWlu
dENyYXNoZWRQYWdlKHBhaW50ZXIsIHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgZC0+cGFnZS5wYWludChwYWludGVyLCByZWN0LnRvQWxpZ25lZFJlY3QoKSk7CisgICAgZC0+
cGFnZS0+cGFpbnQocGFpbnRlciwgcmVjdC50b0FsaWduZWRSZWN0KCkpOwogfQogCiBib29sIFFE
ZXNrdG9wV2ViVmlldzo6ZXZlbnQoUUV2ZW50KiBldikKIHsKLSAgICBpZiAoZC0+cGFnZS5oYW5k
bGVFdmVudChldikpCisgICAgUV9EKFFEZXNrdG9wV2ViVmlldyk7CisgICAgaWYgKGQtPnBhZ2Ut
PmhhbmRsZUV2ZW50KGV2KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKGV2LT50eXBl
KCkgPT0gUUV2ZW50OjpJbnB1dE1ldGhvZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBUaGlz
IGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBhbiBlbmRsZXNzIGxvb3AgaW4gY29ubmVjdGlvbiB3aXRo
IFFRdWlja0l0ZW06OmV2ZW50KCkuCkBAIC00MjQsMjMgKzQxMiwyNyBAQCBib29sIFFEZXNrdG9w
V2ViVmlldzo6ZXZlbnQoUUV2ZW50KiBldikKIAogV0tQYWdlUmVmIFFEZXNrdG9wV2ViVmlldzo6
cGFnZVJlZigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQtPnBhZ2UucGFnZVJlZigpOworICAgIFFf
RChjb25zdCBRRGVza3RvcFdlYlZpZXcpOworICAgIHJldHVybiBkLT5wYWdlLT5wYWdlUmVmKCk7
CiB9CiAKIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6cHJvY2Vzc0RpZENyYXNoKCkKIHsK
KyAgICBRX1EoUURlc2t0b3BXZWJWaWV3KTsKICAgICBpc0NyYXNoZWQgPSB0cnVlOwogICAgIHEt
PnVwZGF0ZSgpOwogfQogCiB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRpZFJlbGF1bmNo
UHJvY2VzcygpCiB7CisgICAgUV9RKFFEZXNrdG9wV2ViVmlldyk7CiAgICAgaXNDcmFzaGVkID0g
ZmFsc2U7CiAgICAgcS0+dXBkYXRlKCk7CiB9CiAKIFFKU0VuZ2luZSogUURlc2t0b3BXZWJWaWV3
UHJpdmF0ZTo6ZW5naW5lKCkKIHsKKyAgICBRX1EoUURlc2t0b3BXZWJWaWV3KTsKICAgICBRUXVp
Y2tWaWV3KiB2aWV3ID0gcW9iamVjdF9jYXN0PFFRdWlja1ZpZXcqPihxLT5jYW52YXMoKSk7CiAg
ICAgaWYgKHZpZXcpCiAgICAgICAgIHJldHVybiB2aWV3LT5lbmdpbmUoKTsKQEAgLTQ1MCw2ICs0
NDIsNyBAQCBRSlNFbmdpbmUqIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmVuZ2luZSgpCiB2b2lk
IFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJSZWYgbGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiBzZWxlY3RlZEZpbGVOYW1l
cywgUXRWaWV3SW50ZXJmYWNlOjpGaWxlQ2hvb3NlclR5cGUgdHlwZSkKIHsKICNpZm5kZWYgUVRf
Tk9fRklMRURJQUxPRworICAgIFFfUShRRGVza3RvcFdlYlZpZXcpOwogICAgIG9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyID0gbGlzdGVuZXJSZWY7CiAKICAgICAvLyBRdCBkb2VzIG5vdCBzdXBwb3J0
IG11bHRpcGxlIGZpbGVzIHN1Z2dlc3Rpb24sIHNvIHdlIGdldCBqdXN0IHRoZSBmaXJzdCBzdWdn
ZXN0aW9uLgpAQCAtNDY4LDEzICs0NjEsMTMgQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRl
OjpjaG9vc2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmUKICAg
ICBRX0FTU0VSVChmaWxlRGlhbG9nLT53aW5kb3coKS0+d2luZG93SGFuZGxlKCkpOwogICAgIGZp
bGVEaWFsb2ctPndpbmRvdygpLT53aW5kb3dIYW5kbGUoKS0+c2V0VHJhbnNpZW50UGFyZW50KHdp
bmRvdyk7CiAKLSAgICBmaWxlRGlhbG9nLT5vcGVuKHRoaXMsIFNMT1Qob25PcGVuUGFuZWxGaWxl
c1NlbGVjdGVkKCkpKTsKKyAgICBmaWxlRGlhbG9nLT5vcGVuKHFfZnVuYygpLCBTTE9UKF9xX29u
T3BlblBhbmVsRmlsZXNTZWxlY3RlZCgpKSk7CiAKLSAgICBjb25uZWN0KGZpbGVEaWFsb2csIFNJ
R05BTChmaW5pc2hlZChpbnQpKSwgdGhpcywgU0xPVChvbk9wZW5QYW5lbEZpbmlzaGVkKGludCkp
KTsKKyAgICBxX2Z1bmMoKS0+Y29ubmVjdChmaWxlRGlhbG9nLCBTSUdOQUwoZmluaXNoZWQoaW50
KSksIFNMT1QoX3Ffb25PcGVuUGFuZWxGaW5pc2hlZChpbnQpKSk7CiAjZW5kaWYKIH0KIAotdm9p
ZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpvbk9wZW5QYW5lbEZpbGVzU2VsZWN0ZWQoKQordm9p
ZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpfcV9vbk9wZW5QYW5lbEZpbGVzU2VsZWN0ZWQoKQog
ewogICAgIGNvbnN0IFFTdHJpbmdMaXN0IGZpbGVMaXN0ID0gZmlsZURpYWxvZy0+c2VsZWN0ZWRG
aWxlcygpOwogICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0PiA+IHdrRmlsZXMoZmlsZUxpc3Qu
c2l6ZSgpKTsKQEAgLTQ4NSw3ICs0NzgsNyBAQCB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6
Om9uT3BlblBhbmVsRmlsZXNTZWxlY3RlZCgpCiAgICAgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ckNob29zZUZpbGVzKG9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLCB0b0FQSShJbW11dGFibGVBcnJh
eTo6YWRvcHQod2tGaWxlcykubGVha1JlZigpKSk7CiB9CiAKLXZvaWQgUURlc2t0b3BXZWJWaWV3
UHJpdmF0ZTo6b25PcGVuUGFuZWxGaW5pc2hlZChpbnQgcmVzdWx0KQordm9pZCBRRGVza3RvcFdl
YlZpZXdQcml2YXRlOjpfcV9vbk9wZW5QYW5lbEZpbmlzaGVkKGludCByZXN1bHQpCiB7CiAgICAg
aWYgKHJlc3VsdCA9PSBRRGlhbG9nOjpSZWplY3RlZCkKICAgICAgICAgV0tPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lckNhbmNlbChvcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcik7CkBAIC00OTgsNiArNDkx
LDcgQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkaWRNb3VzZU1vdmVPdmVyRWxlbWVu
dChjb25zdCBRVXJsJiBsaW5rVVJMLCBjb25zdAogewogICAgIGlmIChsaW5rVVJMID09IGxhc3RI
b3ZlcmVkVVJMICYmIGxpbmtUaXRsZSA9PSBsYXN0SG92ZXJlZFRpdGxlKQogICAgICAgICByZXR1
cm47CisgICAgUV9RKFFEZXNrdG9wV2ViVmlldyk7CiAgICAgbGFzdEhvdmVyZWRVUkwgPSBsaW5r
VVJMOwogICAgIGxhc3RIb3ZlcmVkVGl0bGUgPSBsaW5rVGl0bGU7CiAgICAgZW1pdCBxLT5saW5r
SG92ZXJlZChsYXN0SG92ZXJlZFVSTCwgbGFzdEhvdmVyZWRUaXRsZSk7CkBAIC01MzMsNiArNTI3
LDcgQEAgc3RhdGljIGJvb2wgaGFzTWV0YU1ldGhvZChRT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNo
YXIqIG1ldGhvZE5hbWUpCiAqLwogUXRQb2xpY3lJbnRlcmZhY2U6OlBvbGljeUFjdGlvbiBRRGVz
a3RvcFdlYlZpZXdQcml2YXRlOjpuYXZpZ2F0aW9uUG9saWN5Rm9yVVJMKGNvbnN0IFFVcmwmIHVy
bCwgUXQ6Ok1vdXNlQnV0dG9uIGJ1dHRvbiwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlmaWVy
cykKIHsKKyAgICBRX1EoUURlc2t0b3BXZWJWaWV3KTsKICAgICAvLyBXZSBuZWVkIHRvIGNoZWNr
IHRoaXMgZmlyc3QgYmVjYXVzZSBpbnZva2VNZXRob2QoKSB3YXJucyBpZiB0aGUgbWV0aG9kIGRv
ZXNuJ3QgZXhpc3QgZm9yIHRoZSBvYmplY3QuCiAgICAgaWYgKCFoYXNNZXRhTWV0aG9kKHEsICJu
YXZpZ2F0aW9uUG9saWN5Rm9yVXJsKFFWYXJpYW50LFFWYXJpYW50LFFWYXJpYW50KSIpKQogICAg
ICAgICByZXR1cm4gUXRQb2xpY3lJbnRlcmZhY2U6OlVzZTsKQEAgLTU0NCw0ICs1MzksMyBAQCBR
dFBvbGljeUludGVyZmFjZTo6UG9saWN5QWN0aW9uIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6Om5h
dmlnYXRpb25Qb2xpY3lGb3JVUkwoYwogfQogCiAjaW5jbHVkZSAibW9jX3FkZXNrdG9wd2Vidmll
dy5jcHAiCi0jaW5jbHVkZSAibW9jX3FkZXNrdG9wd2Vidmlld19wLmNwcCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oCmluZGV4IDZlYmM5
M2MxMTQ4MmJjNDEwMTlhOTI3MTI2NzNhNGI1YWFlYTc3ZGIuLmMyMzM0ZmJkOWNlZTZiODM2NDg0
ZjUyZmE5YjNjYzc2YWU5ZDJlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaApAQCAtMjEsMTQgKzIxLDExIEBACiAjaWZuZGVmIHFk
ZXNrdG9wd2Vidmlld19oCiAjZGVmaW5lIHFkZXNrdG9wd2Vidmlld19oCiAKKyNpbmNsdWRlICJx
YWJzdHJhY3R3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgotI2luY2x1ZGUg
PFFVcmw+Ci0jaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xcXVpY2twYWludGVkaXRlbS5oPgogI2lu
Y2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAKIGNsYXNzIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU7
Ci1jbGFzcyBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI7Ci1jbGFzcyBRV2ViUHJlZmVyZW5jZXM7
CiAKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUUZvY3VzRXZlbnQ7CkBAIC01MCw1MSArNDcs
MTIgQEAgbmFtZXNwYWNlIFdUUiB7CiAgICAgY2xhc3MgUGxhdGZvcm1XZWJWaWV3OwogfQogCi1j
bGFzcyBRV0VCS0lUX0VYUE9SVCBRRGVza3RvcFdlYlZpZXcgOiBwdWJsaWMgUVF1aWNrUGFpbnRl
ZEl0ZW0geworY2xhc3MgUVdFQktJVF9FWFBPUlQgUURlc2t0b3BXZWJWaWV3IDogcHVibGljIFFB
YnN0cmFjdFdlYlZpZXcgewogICAgIFFfT0JKRUNUCi0gICAgUV9QUk9QRVJUWShRU3RyaW5nIHRp
dGxlIFJFQUQgdGl0bGUgTk9USUZZIHRpdGxlQ2hhbmdlZCkKLSAgICBRX1BST1BFUlRZKFFVcmwg
dXJsIFJFQUQgdXJsIE5PVElGWSB1cmxDaGFuZ2VkKQotICAgIFFfUFJPUEVSVFkoaW50IGxvYWRQ
cm9ncmVzcyBSRUFEIGxvYWRQcm9ncmVzcyBOT1RJRlkgbG9hZFByb2dyZXNzQ2hhbmdlZCkKLSAg
ICBRX1BST1BFUlRZKFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlciogbmF2aWdhdGlvbiBSRUFEIG5h
dmlnYXRpb25Db250cm9sbGVyIENPTlNUQU5UIEZJTkFMKQotICAgIFFfUFJPUEVSVFkoUVdlYlBy
ZWZlcmVuY2VzKiBwcmVmZXJlbmNlcyBSRUFEIHByZWZlcmVuY2VzIENPTlNUQU5UIEZJTkFMKQot
ICAgIFFfRU5VTVMoTmF2aWdhdGlvblBvbGljeSkKLSAgICBRX0VOVU1TKEVycm9yVHlwZSkKIHB1
YmxpYzoKLSAgICBlbnVtIE5hdmlnYXRpb25Qb2xpY3kgewotICAgICAgICBVc2VQb2xpY3ksCi0g
ICAgICAgIERvd25sb2FkUG9saWN5LAotICAgICAgICBJZ25vcmVQb2xpY3kKLSAgICB9OwotCi0g
ICAgZW51bSBFcnJvclR5cGUgewotICAgICAgICBFbmdpbmVFcnJvciwKLSAgICAgICAgTmV0d29y
a0Vycm9yLAotICAgICAgICBIdHRwRXJyb3IKLSAgICB9OwotCiAgICAgUURlc2t0b3BXZWJWaWV3
KFFRdWlja0l0ZW0qIHBhcmVudCA9IDApOwogICAgIHZpcnR1YWwgflFEZXNrdG9wV2ViVmlldygp
OwogCi0gICAgUVVybCB1cmwoKSBjb25zdDsKLSAgICBRU3RyaW5nIHRpdGxlKCkgY29uc3Q7Ci0g
ICAgaW50IGxvYWRQcm9ncmVzcygpIGNvbnN0OwotCi0gICAgUVdlYk5hdmlnYXRpb25Db250cm9s
bGVyKiBuYXZpZ2F0aW9uQ29udHJvbGxlcigpIGNvbnN0OwotICAgIFFXZWJQcmVmZXJlbmNlcyog
cHJlZmVyZW5jZXMoKSBjb25zdDsKLQotcHVibGljIFFfU0xPVFM6Ci0gICAgIHZvaWQgbG9hZChj
b25zdCBRVXJsJik7Ci0KLVFfU0lHTkFMUzoKLSAgICB2b2lkIHRpdGxlQ2hhbmdlZChjb25zdCBR
U3RyaW5nJiB0aXRsZSk7Ci0gICAgdm9pZCBzdGF0dXNCYXJNZXNzYWdlQ2hhbmdlZChjb25zdCBR
U3RyaW5nJiBtZXNzYWdlKTsKLSAgICB2b2lkIGxvYWRTdGFydGVkKCk7Ci0gICAgdm9pZCBsb2Fk
U3VjY2VlZGVkKCk7Ci0gICAgdm9pZCBsb2FkRmFpbGVkKFFEZXNrdG9wV2ViVmlldzo6RXJyb3JU
eXBlIGVycm9yVHlwZSwgaW50IGVycm9yQ29kZSwgY29uc3QgUVVybCYgdXJsKTsKLSAgICB2b2lk
IGxvYWRQcm9ncmVzc0NoYW5nZWQoaW50IHByb2dyZXNzKTsKLSAgICB2b2lkIHVybENoYW5nZWQo
Y29uc3QgUVVybCYgdXJsKTsKLSAgICB2b2lkIGxpbmtIb3ZlcmVkKGNvbnN0IFFVcmwmIHVybCwg
Y29uc3QgUVN0cmluZyYgdGl0bGUpOwotCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGtl
eVByZXNzRXZlbnQoUUtleUV2ZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGtleVJlbGVhc2VFdmVu
dChRS2V5RXZlbnQqKTsKQEAgLTEyMiwxMiArODAsMTEgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToK
ICAgICBRRGVza3RvcFdlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiwgUVF1aWNr
SXRlbSogcGFyZW50ID0gMCk7CiAgICAgV0tQYWdlUmVmIHBhZ2VSZWYoKSBjb25zdDsKLQotICAg
IHZvaWQgaW5pdCgpOworICAgIFFfUFJJVkFURV9TTE9UKGRfZnVuYygpLCB2b2lkIF9xX29uT3Bl
blBhbmVsRmlsZXNTZWxlY3RlZCgpKTsKKyAgICBRX1BSSVZBVEVfU0xPVChkX2Z1bmMoKSwgdm9p
ZCBfcV9vbk9wZW5QYW5lbEZpbmlzaGVkKGludCByZXN1bHQpKTsKIAogICAgIGZyaWVuZCBjbGFz
cyBXVFI6OlBsYXRmb3JtV2ViVmlldzsKLSAgICBmcmllbmQgY2xhc3MgUURlc2t0b3BXZWJWaWV3
UHJpdmF0ZTsKLSAgICBRRGVza3RvcFdlYlZpZXdQcml2YXRlICpkOworICAgIFFfREVDTEFSRV9Q
UklWQVRFKFFEZXNrdG9wV2ViVmlldykKIH07CiAKIFFNTF9ERUNMQVJFX1RZUEUoUURlc2t0b3BX
ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVz
a3RvcHdlYnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3Rv
cHdlYnZpZXdfcC5oCmluZGV4IGMxNWVlZjA2ZjliZWY3ZmY0MTU4YzkyODNmYjNlNzQxMjlhNzQ5
YjguLjRmMzg4MGI1NjRmZjI3ZWU0YWRmZGUxYmVlZmRiNWU1YTcwMjQ2NzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgKQEAg
LTIxLDM1ICsyMSwyOSBAQAogI2lmbmRlZiBxZGVza3RvcHdlYnZpZXdfcF9oCiAjZGVmaW5lIHFk
ZXNrdG9wd2Vidmlld19wX2gKIAotI2luY2x1ZGUgIlF0RGVza3RvcFdlYlBhZ2VQcm94eS5oIgor
I2luY2x1ZGUgIlF0UG9saWN5SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiUXRWaWV3SW50ZXJmYWNl
LmgiCi0jaW5jbHVkZSAicXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmgiCisjaW5jbHVkZSAicWFi
c3RyYWN0d2Vidmlld19wLmgiCisjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3LmgiCiAKLSNpbmNs
dWRlIDxRdENvcmUvUU9iamVjdD4KLQotY2xhc3MgUURlc2t0b3BXZWJWaWV3OwogY2xhc3MgUUZp
bGVEaWFsb2c7CiAKLWNsYXNzIFFEZXNrdG9wV2ViVmlld1ByaXZhdGUgOiBwdWJsaWMgUU9iamVj
dCwgcHVibGljIFdlYktpdDo6UXRWaWV3SW50ZXJmYWNlLCBwdWJsaWMgV2ViS2l0OjpRdFBvbGlj
eUludGVyZmFjZQorY2xhc3MgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZSA6IHB1YmxpYyBRQWJzdHJh
Y3RXZWJWaWV3UHJpdmF0ZSwgcHVibGljIFdlYktpdDo6UXRWaWV3SW50ZXJmYWNlLCBwdWJsaWMg
V2ViS2l0OjpRdFBvbGljeUludGVyZmFjZQogewotICAgIFFfT0JKRUNUCisgICAgUV9ERUNMQVJF
X1BVQkxJQyhRRGVza3RvcFdlYlZpZXcpCiBwdWJsaWM6Ci0gICAgUURlc2t0b3BXZWJWaWV3UHJp
dmF0ZShRRGVza3RvcFdlYlZpZXcqLCBXS0NvbnRleHRSZWYgPSAwLCBXS1BhZ2VHcm91cFJlZiA9
IDApOworICAgIFFEZXNrdG9wV2ViVmlld1ByaXZhdGUoKTsKKyAgICB2b2lkIGluaXQoV0tDb250
ZXh0UmVmID0gMCwgV0tQYWdlR3JvdXBSZWYgPSAwKTsKIAogICAgIHN0YXRpYyBRRGVza3RvcFdl
YlZpZXcqIGNyZWF0ZVZpZXdXaXRoUGFnZUdyb3VwKFdLUGFnZUdyb3VwUmVmKTsKIAorICAgIFFE
ZXNrdG9wV2ViVmlldyogd2ViVmlldygpOworICAgIHZvaWQgX3Ffb25PcGVuUGFuZWxGaWxlc1Nl
bGVjdGVkKCk7CisgICAgdm9pZCBfcV9vbk9wZW5QYW5lbEZpbmlzaGVkKGludCByZXN1bHQpOwog
ICAgIHZvaWQgZW5hYmxlTW91c2VFdmVudHMoKTsKICAgICB2b2lkIGRpc2FibGVNb3VzZUV2ZW50
cygpOwogCi0gICAgUURlc2t0b3BXZWJWaWV3KiBxOwotICAgIFF0RGVza3RvcFdlYlBhZ2VQcm94
eSBwYWdlOwotCiAgICAgYm9vbCBpc0NyYXNoZWQ7Ci0gICAgUVdlYk5hdmlnYXRpb25Db250cm9s
bGVyKiBuYXZpZ2F0aW9uQ29udHJvbGxlcjsKLQotcHJpdmF0ZSBRX1NMT1RTOgotICAgIHZvaWQg
b25PcGVuUGFuZWxGaWxlc1NlbGVjdGVkKCk7Ci0gICAgdm9pZCBvbk9wZW5QYW5lbEZpbmlzaGVk
KGludCByZXN1bHQpOwogCiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudGF0aW9uIG9mIFF0Vmll
d0ludGVyZmFjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXRvdWNod2VicGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3Vj
aHdlYnBhZ2UuY3BwCmluZGV4IGVhYzQwMjczM2QyYWI2OTQyMjM3NmFhMGY4MDFmZDJjMGJhN2Yz
N2IuLjBmYWUyYzNkOThlMDUzZGUzMWUwODE4OWI0MzJhYmMwYTg0YmFiYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmNwcApAQCAtNjEs
MjYgKzYxLDYgQEAgUVRvdWNoV2ViUGFnZTo6flFUb3VjaFdlYlBhZ2UoKQogICAgIGRlbGV0ZSBk
OwogfQogCi12b2lkIFFUb3VjaFdlYlBhZ2U6OmxvYWQoY29uc3QgUVVybCYgdXJsKQotewotICAg
IGQtPnBhZ2UtPmxvYWQodXJsKTsKLX0KLQotUVVybCBRVG91Y2hXZWJQYWdlOjp1cmwoKSBjb25z
dAotewotICAgIHJldHVybiBkLT5wYWdlLT51cmwoKTsKLX0KLQotUVN0cmluZyBRVG91Y2hXZWJQ
YWdlOjp0aXRsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGQtPnBhZ2UtPnRpdGxlKCk7Ci19Ci0K
LWludCBRVG91Y2hXZWJQYWdlOjpsb2FkUHJvZ3Jlc3MoKSBjb25zdAotewotICAgIHJldHVybiBk
LT5wYWdlLT5sb2FkUHJvZ3Jlc3MoKTsKLX0KLQogLyohIFxyZWltcAogKi8KIGJvb2wgUVRvdWNo
V2ViUGFnZTo6ZXZlbnQoUUV2ZW50KiBldikKQEAgLTEyNywxOCArMTA3LDYgQEAgdm9pZCBRVG91
Y2hXZWJQYWdlOjpnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiBuZXdHZW9tZXRyeSwgY29u
c3QgUVJlY3RGJiBvbGQKICAgICAgICAgZC0+cGFnZS0+c2V0RHJhd2luZ0FyZWFTaXplKG5ld0dl
b21ldHJ5LnNpemUoKS50b1NpemUoKSk7CiB9CiAKLVFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlciog
UVRvdWNoV2ViUGFnZTo6bmF2aWdhdGlvbkNvbnRyb2xsZXIoKSBjb25zdAotewotICAgIGlmICgh
ZC0+bmF2aWdhdGlvbkNvbnRyb2xsZXIpCi0gICAgICAgIGQtPm5hdmlnYXRpb25Db250cm9sbGVy
ID0gbmV3IFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcihkLT5wYWdlKTsKLSAgICByZXR1cm4gZC0+
bmF2aWdhdGlvbkNvbnRyb2xsZXI7Ci19Ci0KLVFXZWJQcmVmZXJlbmNlcyogUVRvdWNoV2ViUGFn
ZTo6cHJlZmVyZW5jZXMoKSBjb25zdAotewotICAgIHJldHVybiBkLT5wYWdlLT5wcmVmZXJlbmNl
cygpOwotfQotCiBRVG91Y2hXZWJQYWdlUHJpdmF0ZTo6UVRvdWNoV2ViUGFnZVByaXZhdGUoUVRv
dWNoV2ViUGFnZSogdmlldykKICAgICA6IHEodmlldykKICAgICAsIHBhZ2UoMCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmgKaW5kZXggYmFlMzkz
NzI0YmRiYjVjOTNhYzVmZDBiY2JmZTBmYjlmMDYwMmU3YS4uOGRmY2E1MGYzOTEwNGExMTg5Yzhm
ZTdjYjIyNmI0ODdjMzgyMWEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xdG91Y2h3ZWJwYWdlLmgKQEAgLTM3LDQyICszNywxMyBAQCBjbGFzcyBRdFRvdWNoVmll
d0ludGVyZmFjZTsKIAogY2xhc3MgUVdFQktJVF9FWFBPUlQgUVRvdWNoV2ViUGFnZSA6IHB1Ymxp
YyBRUXVpY2tJdGVtIHsKICAgICBRX09CSkVDVAotICAgIFFfUFJPUEVSVFkoUVN0cmluZyB0aXRs
ZSBSRUFEIHRpdGxlIE5PVElGWSB0aXRsZUNoYW5nZWQpCi0gICAgUV9QUk9QRVJUWShRVXJsIHVy
bCBSRUFEIHVybCBOT1RJRlkgdXJsQ2hhbmdlZCkKLSAgICBRX1BST1BFUlRZKGludCBsb2FkUHJv
Z3Jlc3MgUkVBRCBsb2FkUHJvZ3Jlc3MgTk9USUZZIGxvYWRQcm9ncmVzc0NoYW5nZWQpCi0gICAg
UV9QUk9QRVJUWShRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIqIG5hdmlnYXRpb24gUkVBRCBuYXZp
Z2F0aW9uQ29udHJvbGxlciBDT05TVEFOVCBGSU5BTCkKLSAgICBRX1BST1BFUlRZKFFXZWJQcmVm
ZXJlbmNlcyogcHJlZmVyZW5jZXMgUkVBRCBwcmVmZXJlbmNlcyBDT05TVEFOVCBGSU5BTCkKLSAg
ICBRX0VOVU1TKEVycm9yVHlwZSkKIHB1YmxpYzoKLSAgICBlbnVtIEVycm9yVHlwZSB7Ci0gICAg
ICAgIEVuZ2luZUVycm9yLAotICAgICAgICBOZXR3b3JrRXJyb3IsCi0gICAgICAgIEh0dHBFcnJv
cgotICAgIH07Ci0KICAgICBRVG91Y2hXZWJQYWdlKFFRdWlja0l0ZW0qIHBhcmVudCA9IDApOwog
CiAgICAgdmlydHVhbCB+UVRvdWNoV2ViUGFnZSgpOwogCi0gICAgUV9JTlZPS0FCTEUgdm9pZCBs
b2FkKGNvbnN0IFFVcmwmKTsKLSAgICBRX0lOVk9LQUJMRSBRVXJsIHVybCgpIGNvbnN0OwotCi0g
ICAgUV9JTlZPS0FCTEUgUVN0cmluZyB0aXRsZSgpIGNvbnN0OwotICAgIGludCBsb2FkUHJvZ3Jl
c3MoKSBjb25zdDsKLQotICAgIFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlciogbmF2aWdhdGlvbkNv
bnRyb2xsZXIoKSBjb25zdDsKLSAgICBRV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzKCkgY29u
c3Q7Ci0KICAgICB2aXJ0dWFsIGJvb2wgZXZlbnQoUUV2ZW50Kik7CiAKLVFfU0lHTkFMUzoKLSAg
ICB2b2lkIHVybENoYW5nZWQoY29uc3QgUVVybCYgdXJsKTsKLSAgICB2b2lkIHRpdGxlQ2hhbmdl
ZChjb25zdCBRU3RyaW5nJiB0aXRsZSk7Ci0gICAgdm9pZCBsb2FkU3RhcnRlZCgpOwotICAgIHZv
aWQgbG9hZFN1Y2NlZWRlZCgpOwotICAgIHZvaWQgbG9hZEZhaWxlZChRVG91Y2hXZWJQYWdlOjpF
cnJvclR5cGUgZXJyb3JUeXBlLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBRVXJsJiB1cmwpOwotICAg
IHZvaWQgbG9hZFByb2dyZXNzQ2hhbmdlZChpbnQgcHJvZ3Jlc3MpOwotCiBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB2b2lkIGtleVByZXNzRXZlbnQoUUtleUV2ZW50Kik7CiAgICAgdmlydHVhbCB2
b2lkIGtleVJlbGVhc2VFdmVudChRS2V5RXZlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwCmluZGV4IDg3YTQ2NWFmMzJiNDM2NGI0
ZmMwM2YwYzc1MDlhOGE2MmUyNzUxZDIuLjNjYjc0NDFkMDJjZWQ4M2YyMDc4MjkzZWExZTJiYmNi
NzI0ZTZjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRv
dWNod2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91
Y2h3ZWJ2aWV3LmNwcApAQCAtMjgsNDUgKzI4LDQ2IEBACiAjaW5jbHVkZSAiV2ViUGFnZUdyb3Vw
LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKIAotUVRvdWNoV2ViVmlld1ByaXZhdGU6
OlFUb3VjaFdlYlZpZXdQcml2YXRlKFFUb3VjaFdlYlZpZXcqIHEpCi0gICAgOiBxKHEpCi0gICAg
LCBwYWdlVmlldyhuZXcgUVRvdWNoV2ViUGFnZShxKSkKLSAgICAsIHZpZXdJbnRlcmZhY2UocSwg
cGFnZVZpZXcuZGF0YSgpKQotICAgICwgaW50ZXJhY3Rpb25FbmdpbmUocSwgcGFnZVZpZXcuZGF0
YSgpKQotICAgICwgcGFnZSgmdmlld0ludGVyZmFjZSwgJmludGVyYWN0aW9uRW5naW5lKQordm9p
ZCBRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6aW5pdChRVG91Y2hXZWJWaWV3KiB2aWV3cG9ydCkKIHsK
KyAgICBwYWdlVmlldy5yZXNldChuZXcgUVRvdWNoV2ViUGFnZSh2aWV3cG9ydCkpOworICAgIHZp
ZXdJbnRlcmZhY2UucmVzZXQobmV3IFdlYktpdDo6UXRUb3VjaFZpZXdJbnRlcmZhY2Uodmlld3Bv
cnQsIHBhZ2VWaWV3LmRhdGEoKSkpOworICAgIGludGVyYWN0aW9uRW5naW5lLnJlc2V0KG5ldyBR
dFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUodmlld3BvcnQsIHBhZ2VWaWV3LmRhdGEoKSkpOwog
ICAgIFFUb3VjaFdlYlBhZ2VQcml2YXRlKiBjb25zdCBwYWdlVmlld1ByaXZhdGUgPSBwYWdlVmll
dy5kYXRhKCktPmQ7Ci0gICAgcGFnZVZpZXdQcml2YXRlLT5zZXRQYWdlKCZwYWdlKTsKKyAgICBz
ZXRQYWdlKG5ldyBRdFRvdWNoV2ViUGFnZVByb3h5KHZpZXdJbnRlcmZhY2UuZGF0YSgpLCBpbnRl
cmFjdGlvbkVuZ2luZS5kYXRhKCkpKTsKKyAgICBwYWdlVmlld1ByaXZhdGUtPnNldFBhZ2UocGFn
ZSgpKTsKIAotICAgIFFPYmplY3Q6OmNvbm5lY3QoJmludGVyYWN0aW9uRW5naW5lLCBTSUdOQUwo
dmlld3BvcnRVcGRhdGVSZXF1ZXN0ZWQoKSksIHEsIFNMT1QoX3Ffdmlld3BvcnRVcGRhdGVkKCkp
KTsKLSAgICBRT2JqZWN0Ojpjb25uZWN0KCZpbnRlcmFjdGlvbkVuZ2luZSwgU0lHTkFMKHZpZXdw
b3J0VHJhamVjdG9yeVZlY3RvckNoYW5nZWQoY29uc3QgUVBvaW50RiYpKSwgcSwgU0xPVChfcV92
aWV3cG9ydFRyYWplY3RvcnlWZWN0b3JDaGFuZ2VkKGNvbnN0IFFQb2ludEYmKSkpOworICAgIFFP
YmplY3Q6OmNvbm5lY3QoaW50ZXJhY3Rpb25FbmdpbmUuZGF0YSgpLCBTSUdOQUwodmlld3BvcnRV
cGRhdGVSZXF1ZXN0ZWQoKSksIHZpZXdwb3J0LCBTTE9UKF9xX3ZpZXdwb3J0VXBkYXRlZCgpKSk7
CisgICAgUU9iamVjdDo6Y29ubmVjdChpbnRlcmFjdGlvbkVuZ2luZS5kYXRhKCksIFNJR05BTCh2
aWV3cG9ydFRyYWplY3RvcnlWZWN0b3JDaGFuZ2VkKGNvbnN0IFFQb2ludEYmKSksIHZpZXdwb3J0
LCBTTE9UKF9xX3ZpZXdwb3J0VHJhamVjdG9yeVZlY3RvckNoYW5nZWQoY29uc3QgUVBvaW50RiYp
KSk7CiB9CiAKIHZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6OmxvYWREaWRDb21taXQoKQogewot
ICAgIGludGVyYWN0aW9uRW5naW5lLnJlc2V0KCk7CisgICAgaW50ZXJhY3Rpb25FbmdpbmUtPnJl
c2V0KCk7CiB9CiAKIHZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6Ol9xX3ZpZXdwb3J0VXBkYXRl
ZCgpCiB7CisgICAgUV9RKFFUb3VjaFdlYlZpZXcpOwogICAgIGNvbnN0IFFSZWN0RiB2aXNpYmxl
UmVjdEluUGFnZVZpZXdDb29yZGluYXRlcyA9IHEtPm1hcFJlY3RUb0l0ZW0ocGFnZVZpZXcuZGF0
YSgpLCBxLT5ib3VuZGluZ1JlY3QoKSkuaW50ZXJzZWN0ZWQocGFnZVZpZXctPmJvdW5kaW5nUmVj
dCgpKTsKICAgICBmbG9hdCBzY2FsZSA9IHBhZ2VWaWV3LT5zY2FsZSgpOwotICAgIHBhZ2Uuc2V0
VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUodmlzaWJsZVJlY3RJblBhZ2VWaWV3Q29vcmRpbmF0
ZXMsIHNjYWxlKTsKKyAgICBwYWdlKCktPnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKHZp
c2libGVSZWN0SW5QYWdlVmlld0Nvb3JkaW5hdGVzLCBzY2FsZSk7CiB9CiAKIHZvaWQgUVRvdWNo
V2ViVmlld1ByaXZhdGU6Ol9xX3ZpZXdwb3J0VHJhamVjdG9yeVZlY3RvckNoYW5nZWQoY29uc3Qg
UVBvaW50RiYgdHJhamVjdG9yeVZlY3RvcikKIHsKLSAgICBwYWdlLnNldFZpc2libGVDb250ZW50
UmVjdFRyYWplY3RvcnlWZWN0b3IodHJhamVjdG9yeVZlY3Rvcik7CisgICAgcGFnZSgpLT5zZXRW
aXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKHRyYWplY3RvcnlWZWN0b3IpOwogfQog
CiB2b2lkIFFUb3VjaFdlYlZpZXdQcml2YXRlOjp1cGRhdGVWaWV3cG9ydENvbnN0cmFpbnRzKCkK
IHsKKyAgICBRX1EoUVRvdWNoV2ViVmlldyk7CiAgICAgUVNpemUgYXZhaWxhYmxlU2l6ZSA9IHEt
PmJvdW5kaW5nUmVjdCgpLnNpemUoKS50b1NpemUoKTsKIAogICAgIGlmIChhdmFpbGFibGVTaXpl
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViUGFnZVByb3h5KiB3a1BhZ2Ug
PSB0b0ltcGwocGFnZS5wYWdlUmVmKCkpOworICAgIFdlYlBhZ2VQcm94eSogd2tQYWdlID0gdG9J
bXBsKHBhZ2UoKS0+cGFnZVJlZigpKTsKICAgICBXZWJQcmVmZXJlbmNlcyogd2tQcmVmcyA9IHdr
UGFnZS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCk7CiAKICAgICBXZWJDb3JlOjpWaWV3cG9y
dEF0dHJpYnV0ZXMgYXR0ciA9IFdlYkNvcmU6OmNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXModmll
d3BvcnRBcmd1bWVudHMsIHdrUHJlZnMtPmxheW91dEZhbGxiYWNrV2lkdGgoKSwgd2tQcmVmcy0+
ZGV2aWNlV2lkdGgoKSwgd2tQcmVmcy0+ZGV2aWNlSGVpZ2h0KCksIHdrUHJlZnMtPmRldmljZURQ
SSgpLCBhdmFpbGFibGVTaXplKTsKQEAgLTc2LDcgKzc3LDcgQEAgdm9pZCBRVG91Y2hXZWJWaWV3
UHJpdmF0ZTo6dXBkYXRlVmlld3BvcnRDb25zdHJhaW50cygpCiAgICAgbmV3Q29uc3RyYWludHMu
bWluaW11bVNjYWxlID0gYXR0ci5taW5pbXVtU2NhbGU7CiAgICAgbmV3Q29uc3RyYWludHMubWF4
aW11bVNjYWxlID0gYXR0ci5tYXhpbXVtU2NhbGU7CiAgICAgbmV3Q29uc3RyYWludHMuaXNVc2Vy
U2NhbGFibGUgPSAhIWF0dHIudXNlclNjYWxhYmxlOwotICAgIGludGVyYWN0aW9uRW5naW5lLnNl
dENvbnN0cmFpbnRzKG5ld0NvbnN0cmFpbnRzKTsKKyAgICBpbnRlcmFjdGlvbkVuZ2luZS0+c2V0
Q29uc3RyYWludHMobmV3Q29uc3RyYWludHMpOwogCiAgICAgLy8gT3ZlcndyaXRlIG1pbmltdW0g
c2NhbGUgdmFsdWUgd2l0aCBmaXQtdG8tdmlldyB2YWx1ZSwgdW5sZXNzIHRoZSB0aGUgY29udGVu
dCBhdXRob3IKICAgICAvLyBleHBsaWNpdGx5IHNheXMgbm8uIE5COiBXZSBjYW4gb25seSBkbyB0
aGlzIHdoZW4gd2Uga25vdyB3ZSBoYXZlIGEgdmFsaWQgc2l6ZSwgaWUuCkBAIC05MywyNSArOTQs
MjcgQEAgdm9pZCBRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0
aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXIKIH0KIAogUVRvdWNoV2ViVmlldzo6UVRvdWNo
V2ViVmlldyhRUXVpY2tJdGVtKiBwYXJlbnQpCi0gICAgOiBRUXVpY2tJdGVtKHBhcmVudCkKLSAg
ICAsIGQobmV3IFFUb3VjaFdlYlZpZXdQcml2YXRlKHRoaXMpKQorICAgIDogUUFic3RyYWN0V2Vi
VmlldygqKG5ldyBRVG91Y2hXZWJWaWV3UHJpdmF0ZSksIHBhcmVudCkKIHsKKyAgICBRX0QoUVRv
dWNoV2ViVmlldyk7CisgICAgZC0+aW5pdCh0aGlzKTsKICAgICBzZXRGbGFncyhRUXVpY2tJdGVt
OjpJdGVtQ2xpcHNDaGlsZHJlblRvU2hhcGUpOwogICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKHZp
c2libGVDaGFuZ2VkKCkpLCBTTE9UKG9uVmlzaWJsZUNoYW5nZWQoKSkpOwogfQogCiBRVG91Y2hX
ZWJWaWV3Ojp+UVRvdWNoV2ViVmlldygpCiB7Ci0gICAgZGVsZXRlIGQ7CiB9CiAKIFFUb3VjaFdl
YlBhZ2UqIFFUb3VjaFdlYlZpZXc6OnBhZ2UoKQogeworICAgIFFfRChRVG91Y2hXZWJWaWV3KTsK
ICAgICByZXR1cm4gZC0+cGFnZVZpZXcuZGF0YSgpOwogfQogCiB2b2lkIFFUb3VjaFdlYlZpZXc6
Omdlb21ldHJ5Q2hhbmdlZChjb25zdCBRUmVjdEYmIG5ld0dlb21ldHJ5LCBjb25zdCBRUmVjdEYm
IG9sZEdlb21ldHJ5KQogeworICAgIFFfRChRVG91Y2hXZWJWaWV3KTsKICAgICBRUXVpY2tJdGVt
OjpnZW9tZXRyeUNoYW5nZWQobmV3R2VvbWV0cnksIG9sZEdlb21ldHJ5KTsKICAgICBpZiAobmV3
R2VvbWV0cnkuc2l6ZSgpICE9IG9sZEdlb21ldHJ5LnNpemUoKSkgewogICAgICAgICBkLT51cGRh
dGVWaWV3cG9ydENvbnN0cmFpbnRzKCk7CkBAIC0xMjcsNyArMTMwLDggQEAgdm9pZCBRVG91Y2hX
ZWJWaWV3Ojp0b3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldmVudCkKIAogdm9pZCBRVG91Y2hXZWJW
aWV3OjpvblZpc2libGVDaGFuZ2VkKCkKIHsKLSAgICBXZWJQYWdlUHJveHkqIHBhZ2VQcm94eSA9
IHRvSW1wbChkLT5wYWdlLnBhZ2VSZWYoKSk7CisgICAgUV9EKFFUb3VjaFdlYlZpZXcpOworICAg
IFdlYlBhZ2VQcm94eSogcGFnZVByb3h5ID0gdG9JbXBsKGQtPnBhZ2UoKS0+cGFnZVJlZigpKTsK
IAogICAgIHBhZ2VQcm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lz
VmlzaWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNo
d2Vidmlldy5oCmluZGV4IDhkOTgyOTdhYTE3Y2UyMzg0NzVkOTFmZDBkMzQ0ZmEwMjRlNjc0MWMu
LmJjMmI4MDQxMGE3Y2JlOGVlMWYwY2Q1YWNmNTZkOGMxMDIxZGRlMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5oCkBAIC0yMSw4ICsyMSw4
IEBACiAjaWZuZGVmIHF0b3VjaHdlYnZpZXdfaAogI2RlZmluZSBxdG91Y2h3ZWJ2aWV3X2gKIAor
I2luY2x1ZGUgInFhYnN0cmFjdHdlYnZpZXcuaCIKICNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgi
Ci0KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FxdWlja2l0ZW0uaD4KIAogY2xhc3MgUVRvdWNo
RXZlbnQ7CkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUXRUb3Vj
aFZpZXdJbnRlcmZhY2U7CiB9CiAKLWNsYXNzIFFXRUJLSVRfRVhQT1JUIFFUb3VjaFdlYlZpZXcg
OiBwdWJsaWMgUVF1aWNrSXRlbQorY2xhc3MgUVdFQktJVF9FWFBPUlQgUVRvdWNoV2ViVmlldyA6
IHB1YmxpYyBRQWJzdHJhY3RXZWJWaWV3CiB7CiAgICAgUV9PQkpFQ1QKICAgICBRX1BST1BFUlRZ
KFFUb3VjaFdlYlBhZ2UqIHBhZ2UgUkVBRCBwYWdlIENPTlNUQU5UIEZJTkFMKQpAQCAtNTIsMTEg
KzUyLDExIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgdG91Y2hFdmVudChRVG91Y2hF
dmVudCogZXZlbnQpOwogCiBwcml2YXRlOgotICAgIFFfUFJJVkFURV9TTE9UKGQsIHZvaWQgX3Ff
dmlld3BvcnRVcGRhdGVkKCkpOwotICAgIFFfUFJJVkFURV9TTE9UKGQsIHZvaWQgX3Ffdmlld3Bv
cnRUcmFqZWN0b3J5VmVjdG9yQ2hhbmdlZChjb25zdCBRUG9pbnRGJikpOworICAgIFFfUFJJVkFU
RV9TTE9UKGRfZnVuYygpLCB2b2lkIF9xX3ZpZXdwb3J0VXBkYXRlZCgpKTsKKyAgICBRX1BSSVZB
VEVfU0xPVChkX2Z1bmMoKSwgdm9pZCBfcV92aWV3cG9ydFRyYWplY3RvcnlWZWN0b3JDaGFuZ2Vk
KGNvbnN0IFFQb2ludEYmKSk7CiAKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpRdFRvdWNoVmll
d0ludGVyZmFjZTsKLSAgICBRVG91Y2hXZWJWaWV3UHJpdmF0ZSAqZDsKKyAgICBRX0RFQ0xBUkVf
UFJJVkFURShRVG91Y2hXZWJWaWV3KQogfTsKIAogUU1MX0RFQ0xBUkVfVFlQRShRVG91Y2hXZWJW
aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3
ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmll
d19wLmgKaW5kZXggOGU1NWVjOTFkNjk4MDI4YWEyZDIwZTNkNDViMzY2ZTQ4MWE2MmQ2Yi4uOWZl
MTA3M2U1M2U4ZjMzN2FhZmQ5NjZkMzU4YTI1YjI2ZTQ0NjdjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXdfcC5oCkBAIC0yNCwyOCArMjQs
MjkgQEAKICNpbmNsdWRlICJRdFRvdWNoVmlld0ludGVyZmFjZS5oIgogI2luY2x1ZGUgIlF0VG91
Y2hXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUu
aCIKKyNpbmNsdWRlICJxYWJzdHJhY3R3ZWJ2aWV3X3AuaCIKICNpbmNsdWRlIDxRU2NvcGVkUG9p
bnRlcj4KIAogY2xhc3MgUVRvdWNoV2ViUGFnZTsKIGNsYXNzIFFUb3VjaFdlYlZpZXc7CiAKLWNs
YXNzIFFUb3VjaFdlYlZpZXdQcml2YXRlCitjbGFzcyBRVG91Y2hXZWJWaWV3UHJpdmF0ZSA6IFFB
YnN0cmFjdFdlYlZpZXdQcml2YXRlCiB7CisgICAgUV9ERUNMQVJFX1BVQkxJQyhRVG91Y2hXZWJW
aWV3KQogcHVibGljOgotICAgIFFUb3VjaFdlYlZpZXdQcml2YXRlKFFUb3VjaFdlYlZpZXcqIHEp
OworICAgIHZvaWQgaW5pdChRVG91Y2hXZWJWaWV3KiB2aWV3cG9ydCk7CiAKICAgICB2b2lkIGxv
YWREaWRDb21taXQoKTsKICAgICB2b2lkIF9xX3ZpZXdwb3J0VXBkYXRlZCgpOwogICAgIHZvaWQg
X3Ffdmlld3BvcnRUcmFqZWN0b3J5VmVjdG9yQ2hhbmdlZChjb25zdCBRUG9pbnRGJik7CiAgICAg
dm9pZCB1cGRhdGVWaWV3cG9ydENvbnN0cmFpbnRzKCk7CisgICAgUXRUb3VjaFdlYlBhZ2VQcm94
eSogcGFnZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFF0VG91Y2hXZWJQYWdlUHJveHkqPihRQWJz
dHJhY3RXZWJWaWV3UHJpdmF0ZTo6cGFnZS5kYXRhKCkpOyB9CiAKICAgICB2b2lkIGRpZENoYW5n
ZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJn
cyk7CiAKLSAgICBRVG91Y2hXZWJWaWV3KiBjb25zdCBxOwogICAgIFFTY29wZWRQb2ludGVyPFFU
b3VjaFdlYlBhZ2U+IHBhZ2VWaWV3OwotICAgIFdlYktpdDo6UXRUb3VjaFZpZXdJbnRlcmZhY2Ug
dmlld0ludGVyZmFjZTsKLSAgICBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUgaW50ZXJhY3Rp
b25FbmdpbmU7Ci0gICAgUXRUb3VjaFdlYlBhZ2VQcm94eSBwYWdlOworICAgIFFTY29wZWRQb2lu
dGVyPFdlYktpdDo6UXRUb3VjaFZpZXdJbnRlcmZhY2U+IHZpZXdJbnRlcmZhY2U7CisgICAgUVNj
b3BlZFBvaW50ZXI8UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lPiBpbnRlcmFjdGlvbkVuZ2lu
ZTsKIAogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvY29t
bW9udmlld3Rlc3RzL3RzdF9jb21tb252aWV3dGVzdHMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvdHN0X2NvbW1vbnZpZXd0ZXN0cy5j
cHAKaW5kZXggOTc5NjgxNGM1ODU1MDBlOWU2ODBlNzJmYjg0NTJlZWU5MDdlNzNiYS4uZDdhYjdh
ZGUxMDkwYjMyZGU4MzY2N2Y5YzZkZDc3MjM0ZmMxOWRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvdHN0X2NvbW1vbnZp
ZXd0ZXN0cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9j
b21tb252aWV3dGVzdHMvdHN0X2NvbW1vbnZpZXd0ZXN0cy5jcHAKQEAgLTk3LDcgKzk3LDcgQEAg
dm9pZCB0c3RfQ29tbW9uVmlld1Rlc3RzOjpsb2FkTm9uZXhpc3RlbnRGaWxlVXJsKCkKICAgICBR
U2lnbmFsU3B5IGxvYWRGYWlsZWRTcHkodmlld0Fic3RyYWN0aW9uLmRhdGEoKSwgU0lHTkFMKGxv
YWRTdGFydGVkKCkpKTsKIAogICAgIHZpZXdBYnN0cmFjdGlvbi0+bG9hZChRVXJsOjpmcm9tTG9j
YWxGaWxlKFFMYXRpbjFTdHJpbmcoVEVTVFNfU09VUkNFX0RJUiAiL2h0bWwvZmlsZV90aGF0X2Rv
ZXNfbm90X2V4aXN0Lmh0bWwiKSkpOwotICAgIFFWRVJJRlkod2FpdEZvclNpZ25hbCh2aWV3QWJz
dHJhY3Rpb24uZGF0YSgpLCBTSUdOQUwobG9hZEZhaWxlZChRRGVza3RvcFdlYlZpZXc6OkVycm9y
VHlwZSwgaW50LCBRVXJsKSkpKTsKKyAgICBRVkVSSUZZKHdhaXRGb3JTaWduYWwodmlld0Fic3Ry
YWN0aW9uLmRhdGEoKSwgU0lHTkFMKGxvYWRGYWlsZWQoUUFic3RyYWN0V2ViVmlldzo6RXJyb3JU
eXBlLCBpbnQsIFFVcmwpKSkpOwogCiAgICAgUUNPTVBBUkUobG9hZEZhaWxlZFNweS5zaXplKCks
IDEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9jb21tb252aWV3dGVzdHMvd2Vidmlld2Fic3RyYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rlc3RzL3dlYnZpZXdhYnN0cmFjdGlv
bi5jcHAKaW5kZXggNDdmMjYxNTNlNzdiOGUwYjFkNzk5ZGM1MWY3MjdjNWE3ZmFhMjE2Yi4uOTk5
M2JiZTBlNmZlZTRlODc5ZjU3YWRjMGU5MDA3NGQxNWQwZTg1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vidmlld2Fi
c3RyYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3Rz
L2NvbW1vbnZpZXd0ZXN0cy93ZWJ2aWV3YWJzdHJhY3Rpb24uY3BwCkBAIC0zMywxNyArMzMsMTcg
QEAgV2ViVmlld0Fic3RyYWN0aW9uOjpXZWJWaWV3QWJzdHJhY3Rpb24oKQogICAgIFFSZWN0IHNj
cmVlbkhhbGYobWFpblNjcmVlbkdlb21ldHJ5LnRvcExlZnQoKSwgUVNpemUobWFpblNjcmVlbkdl
b21ldHJ5LndpZHRoKCkgLyAyLCBtYWluU2NyZWVuR2VvbWV0cnkuaGVpZ2h0KCkpKTsKICAgICBt
X3RvdWNoV2ViVmlld1dpbmRvdy5zZXRHZW9tZXRyeShzY3JlZW5IYWxmKTsKICAgICBtX3RvdWNo
V2ViVmlld1dpbmRvdy5zZXRXaW5kb3dUaXRsZShRTGF0aW4xU3RyaW5nKCJUb3VjaFdlYlZpZXci
KSk7Ci0gICAgY29ubmVjdCh0b3VjaFdlYlZpZXcoKS0+cGFnZSgpLCBTSUdOQUwobG9hZFN0YXJ0
ZWQoKSksIHRoaXMsIFNMT1QodG91Y2hWaWV3TG9hZFN0YXJ0ZWQoKSkpOwotICAgIGNvbm5lY3Qo
dG91Y2hXZWJWaWV3KCktPnBhZ2UoKSwgU0lHTkFMKGxvYWRTdWNjZWVkZWQoKSksIHRoaXMsIFNM
T1QodG91Y2hWaWV3TG9hZFN1Y2NlZWRlZCgpKSk7Ci0gICAgY29ubmVjdCh0b3VjaFdlYlZpZXco
KS0+cGFnZSgpLCBTSUdOQUwobG9hZEZhaWxlZChRVG91Y2hXZWJQYWdlOjpFcnJvclR5cGUsIGlu
dCwgY29uc3QgUVVybCYpKSwgdGhpcywgU0xPVCh0b3VjaFZpZXdMb2FkRmFpbGVkKFFUb3VjaFdl
YlBhZ2U6OkVycm9yVHlwZSwgaW50LCBjb25zdCBRVXJsJikpKTsKLSAgICBjb25uZWN0KHRvdWNo
V2ViVmlldygpLT5wYWdlKCksIFNJR05BTChsb2FkUHJvZ3Jlc3NDaGFuZ2VkKGludCkpLCB0aGlz
LCBTTE9UKHRvdWNoVmlld0xvYWRQcm9ncmVzc0NoYW5nZWQoaW50KSkpOworICAgIGNvbm5lY3Qo
dG91Y2hXZWJWaWV3KCksIFNJR05BTChsb2FkU3RhcnRlZCgpKSwgdGhpcywgU0xPVCh0b3VjaFZp
ZXdMb2FkU3RhcnRlZCgpKSk7CisgICAgY29ubmVjdCh0b3VjaFdlYlZpZXcoKSwgU0lHTkFMKGxv
YWRTdWNjZWVkZWQoKSksIHRoaXMsIFNMT1QodG91Y2hWaWV3TG9hZFN1Y2NlZWRlZCgpKSk7Cisg
ICAgY29ubmVjdCh0b3VjaFdlYlZpZXcoKSwgU0lHTkFMKGxvYWRGYWlsZWQoUUFic3RyYWN0V2Vi
Vmlldzo6RXJyb3JUeXBlLCBpbnQsIGNvbnN0IFFVcmwmKSksIHRoaXMsIFNMT1QodG91Y2hWaWV3
TG9hZEZhaWxlZChRQWJzdHJhY3RXZWJWaWV3OjpFcnJvclR5cGUsIGludCwgY29uc3QgUVVybCYp
KSk7CisgICAgY29ubmVjdCh0b3VjaFdlYlZpZXcoKSwgU0lHTkFMKGxvYWRQcm9ncmVzc0NoYW5n
ZWQoaW50KSksIHRoaXMsIFNMT1QodG91Y2hWaWV3TG9hZFByb2dyZXNzQ2hhbmdlZChpbnQpKSk7
CiAKICAgICBzY3JlZW5IYWxmLm1vdmVMZWZ0KHNjcmVlbkhhbGYucmlnaHQoKSk7CiAgICAgbV9k
ZXNrdG9wV2ViVmlld1dpbmRvdy5zZXRHZW9tZXRyeShzY3JlZW5IYWxmKTsKICAgICBtX2Rlc2t0
b3BXZWJWaWV3V2luZG93LnNldFdpbmRvd1RpdGxlKFFMYXRpbjFTdHJpbmcoIkRlc2t0b3BXZWJW
aWV3IikpOwogICAgIGNvbm5lY3QoZGVza3RvcFdlYlZpZXcoKSwgU0lHTkFMKGxvYWRTdGFydGVk
KCkpLCB0aGlzLCBTTE9UKGRlc2t0b3BWaWV3TG9hZFN0YXJ0ZWQoKSkpOwogICAgIGNvbm5lY3Qo
ZGVza3RvcFdlYlZpZXcoKSwgU0lHTkFMKGxvYWRTdWNjZWVkZWQoKSksIHRoaXMsIFNMT1QoZGVz
a3RvcFZpZXdMb2FkU3VjY2VlZGVkKCkpKTsKLSAgICBjb25uZWN0KGRlc2t0b3BXZWJWaWV3KCks
IFNJR05BTChsb2FkRmFpbGVkKFFEZXNrdG9wV2ViVmlldzo6RXJyb3JUeXBlLCBpbnQsIGNvbnN0
IFFVcmwmKSksIHRoaXMsIFNMT1QoZGVza3RvcFZpZXdMb2FkRmFpbGVkKFFEZXNrdG9wV2ViVmll
dzo6RXJyb3JUeXBlLCBpbnQsIGNvbnN0IFFVcmwmKSkpOworICAgIGNvbm5lY3QoZGVza3RvcFdl
YlZpZXcoKSwgU0lHTkFMKGxvYWRGYWlsZWQoUUFic3RyYWN0V2ViVmlldzo6RXJyb3JUeXBlLCBp
bnQsIGNvbnN0IFFVcmwmKSksIHRoaXMsIFNMT1QoZGVza3RvcFZpZXdMb2FkRmFpbGVkKFFBYnN0
cmFjdFdlYlZpZXc6OkVycm9yVHlwZSwgaW50LCBjb25zdCBRVXJsJikpKTsKICAgICBjb25uZWN0
KGRlc2t0b3BXZWJWaWV3KCksIFNJR05BTChsb2FkUHJvZ3Jlc3NDaGFuZ2VkKGludCkpLCB0aGlz
LCBTTE9UKGRlc2t0b3BWaWV3TG9hZFByb2dyZXNzQ2hhbmdlZChpbnQpKSk7CiB9CiAKQEAgLTYy
LDEzICs2MiwxMyBAQCB2b2lkIFdlYlZpZXdBYnN0cmFjdGlvbjo6aGlkZSgpCiAKIHZvaWQgV2Vi
Vmlld0Fic3RyYWN0aW9uOjpsb2FkKGNvbnN0IFFVcmwmIHVybCkKIHsKLSAgICB0b3VjaFdlYlZp
ZXcoKS0+cGFnZSgpLT5sb2FkKHVybCk7CisgICAgdG91Y2hXZWJWaWV3KCktPmxvYWQodXJsKTsK
ICAgICBkZXNrdG9wV2ViVmlldygpLT5sb2FkKHVybCk7CiB9CiAKIGJvb2wgV2ViVmlld0Fic3Ry
YWN0aW9uOjp1cmwoUVVybCYgdXJsKSBjb25zdAogewotICAgIGNvbnN0IFFVcmwgdG91Y2hWaWV3
VXJsID0gdG91Y2hXZWJWaWV3KCktPnBhZ2UoKS0+dXJsKCk7CisgICAgY29uc3QgUVVybCB0b3Vj
aFZpZXdVcmwgPSB0b3VjaFdlYlZpZXcoKS0+dXJsKCk7CiAgICAgY29uc3QgUVVybCBkZXNrdG9w
Vmlld1VybCA9IGRlc2t0b3BXZWJWaWV3KCktPnVybCgpOwogCiAgICAgaWYgKHRvdWNoVmlld1Vy
bCAhPSBkZXNrdG9wVmlld1VybCkgewpAQCAtODQsNyArODQsNyBAQCBib29sIFdlYlZpZXdBYnN0
cmFjdGlvbjo6dXJsKFFVcmwmIHVybCkgY29uc3QKIAogaW50IFdlYlZpZXdBYnN0cmFjdGlvbjo6
bG9hZFByb2dyZXNzKCkgY29uc3QKIHsKLSAgICBpbnQgdG91Y2hWaWV3UHJvZ3Jlc3MgPSB0b3Vj
aFdlYlZpZXcoKS0+cGFnZSgpLT5sb2FkUHJvZ3Jlc3MoKTsKKyAgICBpbnQgdG91Y2hWaWV3UHJv
Z3Jlc3MgPSB0b3VjaFdlYlZpZXcoKS0+bG9hZFByb2dyZXNzKCk7CiAgICAgaW50IGRlc2t0b3BW
aWV3UHJvZ3Jlc3MgPSBkZXNrdG9wV2ViVmlldygpLT5sb2FkUHJvZ3Jlc3MoKTsKIAogICAgIGlm
ICh0b3VjaFZpZXdQcm9ncmVzcyAhPSBkZXNrdG9wVmlld1Byb2dyZXNzKSB7CkBAIC05OSwyNSAr
OTksMjUgQEAgaW50IFdlYlZpZXdBYnN0cmFjdGlvbjo6bG9hZFByb2dyZXNzKCkgY29uc3QKIAog
dm9pZCBXZWJWaWV3QWJzdHJhY3Rpb246OmdvQmFjaygpCiB7Ci0gICAgdG91Y2hXZWJWaWV3KCkt
PnBhZ2UoKS0+bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+Z29CYWNrKCk7CisgICAgdG91Y2hXZWJW
aWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPmdvQmFjaygpOwogICAgIGRlc2t0b3BXZWJW
aWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPmdvQmFjaygpOwogfQogCiB2b2lkIFdlYlZp
ZXdBYnN0cmFjdGlvbjo6Z29Gb3J3YXJkKCkKIHsKLSAgICB0b3VjaFdlYlZpZXcoKS0+cGFnZSgp
LT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5nb0ZvcndhcmQoKTsKKyAgICB0b3VjaFdlYlZpZXco
KS0+bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+Z29Gb3J3YXJkKCk7CiAgICAgZGVza3RvcFdlYlZp
ZXcoKS0+bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+Z29Gb3J3YXJkKCk7CiB9CiAKIHZvaWQgV2Vi
Vmlld0Fic3RyYWN0aW9uOjpzdG9wKCkKIHsKLSAgICB0b3VjaFdlYlZpZXcoKS0+cGFnZSgpLT5u
YXZpZ2F0aW9uQ29udHJvbGxlcigpLT5zdG9wKCk7CisgICAgdG91Y2hXZWJWaWV3KCktPm5hdmln
YXRpb25Db250cm9sbGVyKCktPnN0b3AoKTsKICAgICBkZXNrdG9wV2ViVmlldygpLT5uYXZpZ2F0
aW9uQ29udHJvbGxlcigpLT5zdG9wKCk7CiB9CiAKIHZvaWQgV2ViVmlld0Fic3RyYWN0aW9uOjpy
ZWxvYWQoKQogewotICAgIHRvdWNoV2ViVmlldygpLT5wYWdlKCktPm5hdmlnYXRpb25Db250cm9s
bGVyKCktPnJlbG9hZCgpOworICAgIHRvdWNoV2ViVmlldygpLT5uYXZpZ2F0aW9uQ29udHJvbGxl
cigpLT5yZWxvYWQoKTsKICAgICBkZXNrdG9wV2ViVmlldygpLT5uYXZpZ2F0aW9uQ29udHJvbGxl
cigpLT5yZWxvYWQoKTsKIH0KIApAQCAtMTQ5LDE3ICsxNDksMTcgQEAgdm9pZCBXZWJWaWV3QWJz
dHJhY3Rpb246OmRlc2t0b3BWaWV3TG9hZFN1Y2NlZWRlZCgpCiAgICAgICAgIGVtaXQgbG9hZFN1
Y2NlZWRlZCgpOwogfQogCi12b2lkIFdlYlZpZXdBYnN0cmFjdGlvbjo6dG91Y2hWaWV3TG9hZEZh
aWxlZChRVG91Y2hXZWJQYWdlOjpFcnJvclR5cGUgZXJyb3JUeXBlLCBpbnQgZXJyb3JDb2RlLCBj
b25zdCBRVXJsJiB1cmwpCit2b2lkIFdlYlZpZXdBYnN0cmFjdGlvbjo6dG91Y2hWaWV3TG9hZEZh
aWxlZChRQWJzdHJhY3RXZWJWaWV3OjpFcnJvclR5cGUgZXJyb3JUeXBlLCBpbnQgZXJyb3JDb2Rl
LCBjb25zdCBRVXJsJiB1cmwpCiB7Ci0gICAgbV90b3VjaFZpZXdTaWduYWxzQ291bnRlcltTSUdO
QUwobG9hZEZhaWxlZChRVG91Y2hXZWJQYWdlOjpFcnJvclR5cGUsIGludCwgY29uc3QgUVVybCYp
KV0rKzsKLSAgICBpZiAobV90b3VjaFZpZXdTaWduYWxzQ291bnRlcltTSUdOQUwobG9hZEZhaWxl
ZChRVG91Y2hXZWJQYWdlOjpFcnJvclR5cGUsIGludCwgY29uc3QgUVVybCYpKV0gPT0gbV9kZXNr
dG9wVmlld1NpZ25hbHNDb3VudGVyW1NJR05BTChsb2FkRmFpbGVkKFFUb3VjaFdlYlBhZ2U6OkVy
cm9yVHlwZSwgaW50LCBRVXJsKSldKQotICAgICAgICBlbWl0IGxvYWRGYWlsZWQoc3RhdGljX2Nh
c3Q8UURlc2t0b3BXZWJWaWV3OjpFcnJvclR5cGU+KGVycm9yVHlwZSksIGVycm9yQ29kZSwgdXJs
KTsKKyAgICBtX3RvdWNoVmlld1NpZ25hbHNDb3VudGVyW1NJR05BTChsb2FkRmFpbGVkKFFBYnN0
cmFjdFdlYlZpZXc6OkVycm9yVHlwZSwgaW50LCBjb25zdCBRVXJsJikpXSsrOworICAgIGlmICht
X3RvdWNoVmlld1NpZ25hbHNDb3VudGVyW1NJR05BTChsb2FkRmFpbGVkKFFBYnN0cmFjdFdlYlZp
ZXc6OkVycm9yVHlwZSwgaW50LCBjb25zdCBRVXJsJikpXSA9PSBtX2Rlc2t0b3BWaWV3U2lnbmFs
c0NvdW50ZXJbU0lHTkFMKGxvYWRGYWlsZWQoUUFic3RyYWN0V2ViVmlldzo6RXJyb3JUeXBlLCBp
bnQsIFFVcmwpKV0pCisgICAgICAgIGVtaXQgbG9hZEZhaWxlZChzdGF0aWNfY2FzdDxRQWJzdHJh
Y3RXZWJWaWV3OjpFcnJvclR5cGU+KGVycm9yVHlwZSksIGVycm9yQ29kZSwgdXJsKTsKIH0KIAot
dm9pZCBXZWJWaWV3QWJzdHJhY3Rpb246OmRlc2t0b3BWaWV3TG9hZEZhaWxlZChRRGVza3RvcFdl
YlZpZXc6OkVycm9yVHlwZSBlcnJvclR5cGUsIGludCBlcnJvckNvZGUsIGNvbnN0IFFVcmwmIHVy
bCkKK3ZvaWQgV2ViVmlld0Fic3RyYWN0aW9uOjpkZXNrdG9wVmlld0xvYWRGYWlsZWQoUUFic3Ry
YWN0V2ViVmlldzo6RXJyb3JUeXBlIGVycm9yVHlwZSwgaW50IGVycm9yQ29kZSwgY29uc3QgUVVy
bCYgdXJsKQogewotICAgIG1fZGVza3RvcFZpZXdTaWduYWxzQ291bnRlcltTSUdOQUwobG9hZEZh
aWxlZChRRGVza3RvcFdlYlZpZXc6OkVycm9yVHlwZSwgaW50LCBjb25zdCBRVXJsJikpXSsrOwot
ICAgIGlmIChtX3RvdWNoVmlld1NpZ25hbHNDb3VudGVyW1NJR05BTChsb2FkRmFpbGVkKFFEZXNr
dG9wV2ViVmlldzo6RXJyb3JUeXBlLCBpbnQsIGNvbnN0IFFVcmwmKSldID09IG1fZGVza3RvcFZp
ZXdTaWduYWxzQ291bnRlcltTSUdOQUwobG9hZEZhaWxlZChRRGVza3RvcFdlYlZpZXc6OkVycm9y
VHlwZSwgaW50LCBRVXJsKSldKQorICAgIG1fZGVza3RvcFZpZXdTaWduYWxzQ291bnRlcltTSUdO
QUwobG9hZEZhaWxlZChRQWJzdHJhY3RXZWJWaWV3OjpFcnJvclR5cGUsIGludCwgY29uc3QgUVVy
bCYpKV0rKzsKKyAgICBpZiAobV90b3VjaFZpZXdTaWduYWxzQ291bnRlcltTSUdOQUwobG9hZEZh
aWxlZChRQWJzdHJhY3RXZWJWaWV3OjpFcnJvclR5cGUsIGludCwgY29uc3QgUVVybCYpKV0gPT0g
bV9kZXNrdG9wVmlld1NpZ25hbHNDb3VudGVyW1NJR05BTChsb2FkRmFpbGVkKFFBYnN0cmFjdFdl
YlZpZXc6OkVycm9yVHlwZSwgaW50LCBRVXJsKSldKQogICAgICAgICBlbWl0IGxvYWRGYWlsZWQo
ZXJyb3JUeXBlLCBlcnJvckNvZGUsIHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rlc3RzL3dlYnZpZXdhYnN0cmFj
dGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3
dGVzdHMvd2Vidmlld2Fic3RyYWN0aW9uLmgKaW5kZXggY2Q0NmFlOTljZGI3ZjJiMzU3MjIxNGM3
MDZkYTMyM2U0NDk1ZTFhZi4uMmZmN2QzYTU4MjIzODA5ZjkwZTljZjk1YmY5YjAxYmI4MmYyYzY5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21t
b252aWV3dGVzdHMvd2Vidmlld2Fic3RyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vidmlld2Fic3RyYWN0aW9uLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogUV9TSUdOQUxTOgogICAgIHZvaWQgbG9hZFN0YXJ0
ZWQoKTsKICAgICB2b2lkIGxvYWRTdWNjZWVkZWQoKTsKLSAgICB2b2lkIGxvYWRGYWlsZWQoUURl
c2t0b3BXZWJWaWV3OjpFcnJvclR5cGUsIGludCwgY29uc3QgUVVybCYpOworICAgIHZvaWQgbG9h
ZEZhaWxlZChRQWJzdHJhY3RXZWJWaWV3OjpFcnJvclR5cGUsIGludCwgY29uc3QgUVVybCYpOwog
ICAgIHZvaWQgbG9hZFByb2dyZXNzQ2hhbmdlZChpbnQpOwogCiBwcml2YXRlIFFfU0xPVFM6CkBA
IC01Nyw4ICs1Nyw4IEBAIHByaXZhdGUgUV9TTE9UUzoKICAgICB2b2lkIGRlc2t0b3BWaWV3TG9h
ZFN0YXJ0ZWQoKTsKICAgICB2b2lkIHRvdWNoVmlld0xvYWRTdWNjZWVkZWQoKTsKICAgICB2b2lk
IGRlc2t0b3BWaWV3TG9hZFN1Y2NlZWRlZCgpOwotICAgIHZvaWQgdG91Y2hWaWV3TG9hZEZhaWxl
ZChRVG91Y2hXZWJQYWdlOjpFcnJvclR5cGUsIGludCwgY29uc3QgUVVybCYpOwotICAgIHZvaWQg
ZGVza3RvcFZpZXdMb2FkRmFpbGVkKFFEZXNrdG9wV2ViVmlldzo6RXJyb3JUeXBlLCBpbnQsIGNv
bnN0IFFVcmwmKTsKKyAgICB2b2lkIHRvdWNoVmlld0xvYWRGYWlsZWQoUUFic3RyYWN0V2ViVmll
dzo6RXJyb3JUeXBlLCBpbnQsIGNvbnN0IFFVcmwmKTsKKyAgICB2b2lkIGRlc2t0b3BWaWV3TG9h
ZEZhaWxlZChRQWJzdHJhY3RXZWJWaWV3OjpFcnJvclR5cGUsIGludCwgY29uc3QgUVVybCYpOwog
ICAgIHZvaWQgdG91Y2hWaWV3TG9hZFByb2dyZXNzQ2hhbmdlZChpbnQpOwogICAgIHZvaWQgZGVz
a3RvcFZpZXdMb2FkUHJvZ3Jlc3NDaGFuZ2VkKGludCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRvdWNod2Vidmlldy90c3RfcXRvdWNod2Vi
dmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0b3VjaHdl
YnZpZXcvdHN0X3F0b3VjaHdlYnZpZXcuY3BwCmluZGV4IDU5NDY5NTdmODY1ZTZlZTUwYTc5NDY5
MmNiN2NiNTI0YmJlMDI4ZGYuLmFlZTk1ZjE1ZTRkNjI3MTgwNjRhNDg0ZjJmNGE2MTUyNWU4NmFh
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRv
dWNod2Vidmlldy90c3RfcXRvdWNod2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9xdG91Y2h3ZWJ2aWV3L3RzdF9xdG91Y2h3ZWJ2aWV3LmNwcApA
QCAtNzQsMTMgKzc0LDEzIEBAIHZvaWQgdHN0X1FUb3VjaFdlYlZpZXc6OmFjY2Vzc1BhZ2UoKQog
CiB2b2lkIHRzdF9RVG91Y2hXZWJWaWV3OjpuYXZpZ2F0aW9uU3RhdHVzQXRTdGFydHVwKCkKIHsK
LSAgICBRQ09NUEFSRSh3ZWJWaWV3KCktPnBhZ2UoKS0+bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+
Y2FuR29CYWNrKCksIGZhbHNlKTsKKyAgICBRQ09NUEFSRSh3ZWJWaWV3KCktPm5hdmlnYXRpb25D
b250cm9sbGVyKCktPmNhbkdvQmFjaygpLCBmYWxzZSk7CiAKLSAgICBRQ09NUEFSRSh3ZWJWaWV3
KCktPnBhZ2UoKS0+bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+Y2FuR29Gb3J3YXJkKCksIGZhbHNl
KTsKKyAgICBRQ09NUEFSRSh3ZWJWaWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPmNhbkdv
Rm9yd2FyZCgpLCBmYWxzZSk7CiAKLSAgICBRQ09NUEFSRSh3ZWJWaWV3KCktPnBhZ2UoKS0+bmF2
aWdhdGlvbkNvbnRyb2xsZXIoKS0+Y2FuU3RvcCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUod2Vi
VmlldygpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5jYW5TdG9wKCksIGZhbHNlKTsKIAotICAg
IFFDT01QQVJFKHdlYlZpZXcoKS0+cGFnZSgpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5jYW5S
ZWxvYWQoKSwgZmFsc2UpOworICAgIFFDT01QQVJFKHdlYlZpZXcoKS0+bmF2aWdhdGlvbkNvbnRy
b2xsZXIoKS0+Y2FuUmVsb2FkKCksIGZhbHNlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREZXNrdG9wV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuY3BwCmluZGV4IDJkYWYw
NjU1MTkwYmQwMWYzNTE1MjMwZDg2NTZhNDVjMGI1ZGFiZWMuLjM4OGI2MDJkYjk4N2RmYjU5Yzk0
ZTA5MjZjYWM2MzQ5NWE1YzQwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQg
UXREZXNrdG9wV2ViUGFnZVByb3h5Ojpkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2Vi
VG91Y2hFdmVudCYsIGJvb2wKIAogUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUXREZXNr
dG9wV2ViUGFnZVByb3h5OjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQogewot
ICAgIFFRdWlja0l0ZW0qIHdlYlZpZXdJdGVtID0gc3RhdGljX2Nhc3Q8UURlc2t0b3BXZWJWaWV3
UHJpdmF0ZSo+KG1fdmlld0ludGVyZmFjZSktPnE7CisgICAgUVF1aWNrSXRlbSogd2ViVmlld0l0
ZW0gPSBzdGF0aWNfY2FzdDxRRGVza3RvcFdlYlZpZXdQcml2YXRlKj4obV92aWV3SW50ZXJmYWNl
KS0+d2ViVmlldygpOwogICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eVF0RGVza3RvcDo6Y3Jl
YXRlKG1fd2ViUGFnZVByb3h5LmdldCgpLCB3ZWJWaWV3SXRlbSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFRvdWNoVmlld0ludGVyZmFjZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRUb3VjaFZpZXdJbnRlcmZhY2UuY3BwCmluZGV4
IGMyZDIzYmY5ZGU0MGZhYjcwMjYzM2UwODQwMGMxMzcyYmQyODI3ZTAuLjhmOThkODA2MTg2NjM5
ZDhjMzY1OTZhOGMxODAyNWExN2MwMmIxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFRvdWNoVmlld0ludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50ZXJmYWNlLmNwcApAQCAtODksMTcgKzg5LDE3IEBA
IHZvaWQgUXRUb3VjaFZpZXdJbnRlcmZhY2U6OnN0YXJ0RHJhZyhRdDo6RHJvcEFjdGlvbnMgc3Vw
cG9ydGVkRHJvcEFjdGlvbnMsIGNvbnN0CiAKIHZvaWQgUXRUb3VjaFZpZXdJbnRlcmZhY2U6OmRp
ZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50
cyYgYXJncykKIHsKLSAgICBtX3ZpZXdwb3J0Vmlldy0+ZC0+ZGlkQ2hhbmdlVmlld3BvcnRQcm9w
ZXJ0aWVzKGFyZ3MpOworICAgIG1fdmlld3BvcnRWaWV3LT5kX2Z1bmMoKS0+ZGlkQ2hhbmdlVmll
d3BvcnRQcm9wZXJ0aWVzKGFyZ3MpOwogfQogCiB2b2lkIFF0VG91Y2hWaWV3SW50ZXJmYWNlOjpk
aWRDaGFuZ2VVcmwoY29uc3QgUVVybCYgdXJsKQogewotICAgIGVtaXQgbV9wYWdlVmlldy0+dXJs
Q2hhbmdlZCh1cmwpOworICAgIGVtaXQgbV92aWV3cG9ydFZpZXctPnVybENoYW5nZWQodXJsKTsK
IH0KIAogdm9pZCBRdFRvdWNoVmlld0ludGVyZmFjZTo6ZGlkQ2hhbmdlVGl0bGUoY29uc3QgUVN0
cmluZyYgbmV3VGl0bGUpCiB7Ci0gICAgZW1pdCBtX3BhZ2VWaWV3LT50aXRsZUNoYW5nZWQobmV3
VGl0bGUpOworICAgIGVtaXQgbV92aWV3cG9ydFZpZXctPnRpdGxlQ2hhbmdlZChuZXdUaXRsZSk7
CiB9CiAKIHZvaWQgUXRUb3VjaFZpZXdJbnRlcmZhY2U6OmRpZENoYW5nZVRvb2xUaXAoY29uc3Qg
UVN0cmluZyYpCkBAIC0xMTksMjcgKzExOSwyNyBAQCB2b2lkIFF0VG91Y2hWaWV3SW50ZXJmYWNl
OjpkaWRDaGFuZ2VDdXJzb3IoY29uc3QgUUN1cnNvciYpCiAKIHZvaWQgUXRUb3VjaFZpZXdJbnRl
cmZhY2U6OmxvYWREaWRCZWdpbigpCiB7Ci0gICAgZW1pdCBtX3BhZ2VWaWV3LT5sb2FkU3RhcnRl
ZCgpOworICAgIGVtaXQgbV92aWV3cG9ydFZpZXctPmxvYWRTdGFydGVkKCk7CiB9CiAKIHZvaWQg
UXRUb3VjaFZpZXdJbnRlcmZhY2U6OmxvYWREaWRDb21taXQoKQogewotICAgIG1fdmlld3BvcnRW
aWV3LT5kLT5sb2FkRGlkQ29tbWl0KCk7CisgICAgbV92aWV3cG9ydFZpZXctPmRfZnVuYygpLT5s
b2FkRGlkQ29tbWl0KCk7CiB9CiAKIHZvaWQgUXRUb3VjaFZpZXdJbnRlcmZhY2U6OmxvYWREaWRT
dWNjZWVkKCkKIHsKLSAgICBlbWl0IG1fcGFnZVZpZXctPmxvYWRTdWNjZWVkZWQoKTsKKyAgICBl
bWl0IG1fdmlld3BvcnRWaWV3LT5sb2FkU3VjY2VlZGVkKCk7CiB9CiAKIHZvaWQgUXRUb3VjaFZp
ZXdJbnRlcmZhY2U6OmxvYWREaWRGYWlsKGNvbnN0IFF0V2ViRXJyb3ImIGVycm9yKQogewotICAg
IGVtaXQgbV9wYWdlVmlldy0+bG9hZEZhaWxlZChzdGF0aWNfY2FzdDxRVG91Y2hXZWJQYWdlOjpF
cnJvclR5cGU+KGVycm9yLnR5cGUoKSksIGVycm9yLmVycm9yQ29kZSgpLCBlcnJvci51cmwoKSk7
CisgICAgZW1pdCBtX3ZpZXdwb3J0Vmlldy0+bG9hZEZhaWxlZChzdGF0aWNfY2FzdDxRQWJzdHJh
Y3RXZWJWaWV3OjpFcnJvclR5cGU+KGVycm9yLnR5cGUoKSksIGVycm9yLmVycm9yQ29kZSgpLCBl
cnJvci51cmwoKSk7CiB9CiAKIHZvaWQgUXRUb3VjaFZpZXdJbnRlcmZhY2U6OmRpZENoYW5nZUxv
YWRQcm9ncmVzcyhpbnQgcGVyY2VudGFnZUxvYWRlZCkKIHsKLSAgICBlbWl0IG1fcGFnZVZpZXct
PmxvYWRQcm9ncmVzc0NoYW5nZWQocGVyY2VudGFnZUxvYWRlZCk7CisgICAgZW1pdCBtX3ZpZXdw
b3J0Vmlldy0+bG9hZFByb2dyZXNzQ2hhbmdlZChwZXJjZW50YWdlTG9hZGVkKTsKIH0KIAogdm9p
ZCBRdFRvdWNoVmlld0ludGVyZmFjZTo6c2hvd0NvbnRleHRNZW51KFFTaGFyZWRQb2ludGVyPFFN
ZW51PikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJBUEkucHJpIGIvU291cmNl
L1dlYktpdDIvV2ViS2l0MkFQSS5wcmkKaW5kZXggNjZlY2Q3OWQ3NmQwOTgzYzY3N2MxM2M4ZGM3
ZGI2MDBiYmE0NDhlMS4uM2YzMWQ2YmEyYzg5NjQyNjYxYWUxYzU3NDQzOWM5ZGY5ZmUzZTc5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViS2l0MkFQSS5wcmkKQEAgLTQ4LDYgKzQ4LDcgQEAgV0VCS0lUMl9BUElfU09VUkNF
UyA9IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlci5jcHAgXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvY3BwL3F0L1dLU3RyaW5nUXQuY3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2NwcC9xdC9XS1VSTFF0LmNwcCBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xYWJzdHJhY3R3ZWJ2aWV3LmNwcCBcCiAgICAgJCRTT1VSQ0VfRElS
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwIFwKICAgICAkJFNP
VVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwIFwKICAg
ICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3Bw
IFwKQEAgLTEyOCw2ICsxMjksOCBAQCBXRUJLSVQyX0FQSV9IRUFERVJTICs9IFwKICAgICAkJFNP
VVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9XS1JldGFpblB0ci5oIFwKICAgICAk
JFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1N0cmluZ1F0LmggXAog
ICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQuaCBc
CisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xYWJzdHJhY3R3ZWJ2
aWV3LmggXAorICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWFic3Ry
YWN0d2Vidmlld19wLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcWRlc2t0b3B3ZWJ2aWV3LmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXMuaCBcCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWNiYWQwODFhNzYzNjUxZWYyYTIzYjM2
NmMwZTkyZDY5NGZlZTc1OC4uMTZjOTE0ZDljNDIzYTY4YTc5ZmY2YzM1MjliZDg0YjczNWYzNzcy
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSw1ICsxLDE3IEBACiAyMDExLTExLTAxICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJj
b3R0ZUBub2tpYS5jb20+CiAKKyAgICAgICAgW1F0XSBNZXJnZSBjb21tb24gZGVza3RvcCBhbmQg
dG91Y2ggdmlldyBBUElzIHVuZGVyIGFuIGFic3RyYWN0IGJhc2UgY2xhc3MuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTI4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB1bm5lZGVkIGZvcndh
cmRpbmcgbG9naWMgZm9yIFRvdWNoV2ViVmlldyBzaW5jZSB0aG9zZSBwcm9wZXJ0aWVzIGFyZQor
ICAgICAgICBub3cgaW4gdGhlIHZpZXcganVzdCBhcyB0aGUgZGVza3RvcCB3ZWIgdmlldy4KKwor
ICAgICAgICAqIE1pbmlCcm93c2VyL3F0L3FtbC9Ub3VjaFZpZXcucW1sOgorCisyMDExLTExLTAx
ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKICAgICAg
ICAgY2hlY2std2Via2l0LXN0eWxlOiBBbGxvdyBuYW1lcyBzdGFydGluZyB3aXRoICJfcV8iLgog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA2MjUKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL1RvdWNoVmlldy5xbWwgYi9Ub29s
cy9NaW5pQnJvd3Nlci9xdC9xbWwvVG91Y2hWaWV3LnFtbAppbmRleCA1NTBjMjRmZDExNDkzMzc2
M2VhYjcyMjNiNmU0YmE3YWE4OTIwODdlLi41MWFmZGIwNzAwMWI5NmYyZmY1MjdiOWUwMmI5YWM2
ZmIxODEwZDdjIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvVG91Y2hWaWV3
LnFtbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvVG91Y2hWaWV3LnFtbApAQCAtMiwx
NiArMiw3IEBAIGltcG9ydCBRdFF1aWNrIDIuMAogaW1wb3J0IFF0V2ViS2l0IDMuMAogCiBUb3Vj
aFdlYlZpZXcgewotICAgIGlkOiB3ZWJWaWV3Ci0gICAgcHJvcGVydHkgdmFyaWFudCBuYXZpZ2F0
aW9uOiB3ZWJWaWV3LnBhZ2UubmF2aWdhdGlvbgotICAgIHByb3BlcnR5IHN0cmluZyB1cmw6IHdl
YlZpZXcucGFnZS51cmwKLSAgICBwcm9wZXJ0eSBpbnQgbG9hZFByb2dyZXNzOiB3ZWJWaWV3LnBh
Z2UubG9hZFByb2dyZXNzCi0gICAgcHJvcGVydHkgc3RyaW5nIHRpdGxlOiB3ZWJWaWV3LnBhZ2Uu
dGl0bGUKICAgICBzaWduYWwgbmF2aWdhdGlvblN0YXRlQ2hhbmdlZAogCi0gICAgZnVuY3Rpb24g
bG9hZChhZGRyZXNzKSB7Ci0gICAgICAgIHBhZ2UubG9hZChhZGRyZXNzKQotICAgIH0KLQotICAg
IENvbXBvbmVudC5vbkNvbXBsZXRlZDogcGFnZS5uYXZpZ2F0aW9uLm5hdmlnYXRpb25TdGF0ZUNo
YW5nZWQuY29ubmVjdChuYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkKQorICAgIENvbXBvbmVudC5vbkNv
bXBsZXRlZDogbmF2aWdhdGlvbi5uYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkLmNvbm5lY3QobmF2aWdh
dGlvblN0YXRlQ2hhbmdlZCkKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113174</attachid>
            <date>2011-11-01 08:31:49 -0700</date>
            <delta_ts>2011-11-01 10:05:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71280-20111101163041.patch</filename>
            <type>text/plain</type>
            <size>59053</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg5NTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyNWVhNGYzYzZlZTE3Njcx
OWM1ZWEyYjg5M2RmNjE3NzUyMDg1MDVjLi4wYTI1MjUwMzQ2YjliNmQ5MmIzMDQ1OWM5MDNmMTI0
ZWVkODVjNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIzIEBACisyMDExLTExLTAxICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0
XSBNZXJnZSBjb21tb24gZGVza3RvcCBhbmQgdG91Y2ggdmlldyBBUElzIHVuZGVyIGEgYmFzZSBj
bGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
MjgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBN
YWtlIFFEZXNrdG9wV2ViVmlldyBhbmQgUVRvdWNoV2ViVmlldyBpbmhlcml0IGZyb20gUUJhc2VX
ZWJWaWV3LgorICAgICAgICAtIE1vdmUgbWV0aG9kcyBmcm9tIFFUb3VjaFdlYlBhZ2UgdG8gUVRv
dWNoV2ViVmlldyAodGhyb3VnaCB0aGUgYmFzZSBjbGFzcykuCisKKyAgICAgICAgV2UgdXNlIHRo
ZSBzYW1lIGNvbnZlbmllbmNlIG1hY3JvcyBhcyBRdCBpbnRlcm5hbGx5IGJ5IGhpZGluZyBRT2Jq
ZWN0OjpkX3B0cgorICAgICAgICB3aXRoIFFCYXNlV2ViVmlldzo6ZF9wdHIgaW5zdGVhZCBvZiBp
bmhlcml0aW5nIFFCYXNlV2ViVmlld1ByaXZhdGUgZnJvbQorICAgICAgICBRUXVpY2tJdGVtUHJp
dmF0ZS4KKyAgICAgICAgQWxzbywgUUJhc2VXZWJWaWV3IGN1cnJlbnRseSBpbmhlcml0cyBmcm9t
IFFRdWlja1BhaW50ZWRJdGVtIHNpbmNlIFFEZXNrdG9wV2ViVmlldworICAgICAgICBuZWVkcyBp
dCwgYnV0IHNob3VsZCBiZSBjaGFuZ2VkIGFzIHNvb24gYXMgdGhpcyBpcyBub3QgcmVxdWlyZWQg
YW55bW9yZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWJhc2V3ZWJ2aWV3LmNwcDog
QWRkZWQuCisgICAgICAgIChRQmFzZVdlYlZpZXdQcml2YXRlOjpRQmFzZVdlYlZpZXdQcml2YXRl
KToKKyAgICAgICAgKFFCYXNlV2ViVmlld1ByaXZhdGU6OnNldFBhZ2VQcm94eSk6CisgICAgICAg
IChRQmFzZVdlYlZpZXc6OlFCYXNlV2ViVmlldyk6CisgICAgICAgIChRQmFzZVdlYlZpZXc6On5R
QmFzZVdlYlZpZXcpOgorICAgICAgICAoUUJhc2VXZWJWaWV3Ojpsb2FkKToKKyAgICAgICAgKFFC
YXNlV2ViVmlldzo6dXJsKToKKyAgICAgICAgKFFCYXNlV2ViVmlldzo6bG9hZFByb2dyZXNzKToK
KyAgICAgICAgKFFCYXNlV2ViVmlldzo6dGl0bGUpOgorICAgICAgICAoUUJhc2VXZWJWaWV3Ojpu
YXZpZ2F0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChRQmFzZVdlYlZpZXc6OnByZWZlcmVuY2Vz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FiYXNld2Vidmlldy5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FiYXNld2Vidmlld19wLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZV9wLmguCisgICAgICAgIChR
QmFzZVdlYlZpZXdQcml2YXRlOjp+UUJhc2VXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwOgorICAgICAgICAoUURlc2t0b3BXZWJW
aWV3UHJpdmF0ZTo6UURlc2t0b3BXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChRRGVza3RvcFdl
YlZpZXdQcml2YXRlOjplbmFibGVNb3VzZUV2ZW50cyk6CisgICAgICAgIChRRGVza3RvcFdlYlZp
ZXdQcml2YXRlOjpkaXNhYmxlTW91c2VFdmVudHMpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3
UHJpdmF0ZTo6d2ViVmlldyk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpzZXRW
aWV3TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRyYXdp
bmdBcmVhU2l6ZSk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpoYXNGb2N1cyk6
CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjppc1Zpc2libGUpOgorICAgICAgICAo
UURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6c3RhcnREcmFnKToKKyAgICAgICAgKFFEZXNrdG9wV2Vi
Vmlld1ByaXZhdGU6OmRpZENoYW5nZVVybCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2
YXRlOjpkaWRDaGFuZ2VUaXRsZSk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpk
aWRDaGFuZ2VTdGF0dXNUZXh0KToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6Omxv
YWREaWRCZWdpbik6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpsb2FkRGlkU3Vj
Y2VlZCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpsb2FkRGlkRmFpbCk6Cisg
ICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VMb2FkUHJvZ3Jlc3MpOgor
ICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6c2hvd0NvbnRleHRNZW51KToKKyAgICAg
ICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAg
IChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAg
IChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAg
KFFEZXNrdG9wV2ViVmlldzo6UURlc2t0b3BXZWJWaWV3KToKKyAgICAgICAgKFFEZXNrdG9wV2Vi
Vmlld1ByaXZhdGU6OmluaXQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3Ojp+UURlc2t0b3BX
ZWJWaWV3KToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlldzo6Z2VvbWV0cnlDaGFuZ2VkKToKKyAg
ICAgICAgKFFEZXNrdG9wV2ViVmlldzo6cGFpbnQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3
OjpldmVudCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXc6OnBhZ2VSZWYpOgorICAgICAgICAo
UURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKFFEZXNr
dG9wV2ViVmlld1ByaXZhdGU6OmRpZFJlbGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIChRRGVza3Rv
cFdlYlZpZXdQcml2YXRlOjplbmdpbmUpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0
ZTo6Y2hvb3NlRmlsZXMpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6X3Ffb25P
cGVuUGFuZWxGaWxlc1NlbGVjdGVkKToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6
Ol9xX29uT3BlblBhbmVsRmluaXNoZWQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0
ZTo6ZGlkTW91c2VNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJp
dmF0ZTo6bmF2aWdhdGlvblBvbGljeUZvclVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9x
dC9xZGVza3RvcHdlYnZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9w
d2Vidmlld19wLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKFFUb3VjaFdlYlBhZ2U6OmV2ZW50KToKKyAgICAgICAgKFFUb3VjaFdlYlBh
Z2U6Omdlb21ldHJ5Q2hhbmdlZCk6CisgICAgICAgIChRVG91Y2hXZWJQYWdlUHJpdmF0ZTo6UVRv
dWNoV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVRvdWNoV2ViUGFnZVByaXZhdGU6OnNldFBh
Z2VQcm94eSk6CisgICAgICAgIChRVG91Y2hXZWJQYWdlUHJpdmF0ZTo6cGFpbnRUb0N1cnJlbnRH
TENvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZV9wLmg6CisgICAgICAgIChR
VG91Y2hXZWJQYWdlUHJpdmF0ZTo6dG91Y2hQYWdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHA6CisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJpdmF0
ZTo6aW5pdCk6CisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6bG9hZERpZENvbW1pdCk6
CisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6X3Ffdmlld3BvcnRVcGRhdGVkKToKKyAg
ICAgICAgKFFUb3VjaFdlYlZpZXdQcml2YXRlOjpfcV92aWV3cG9ydFRyYWplY3RvcnlWZWN0b3JD
aGFuZ2VkKToKKyAgICAgICAgKFFUb3VjaFdlYlZpZXdQcml2YXRlOjp1cGRhdGVWaWV3cG9ydENv
bnN0cmFpbnRzKToKKyAgICAgICAgKFFUb3VjaFdlYlZpZXc6OlFUb3VjaFdlYlZpZXcpOgorICAg
ICAgICAoUVRvdWNoV2ViVmlldzo6flFUb3VjaFdlYlZpZXcpOgorICAgICAgICAoUVRvdWNoV2Vi
Vmlldzo6cGFnZSk6CisgICAgICAgIChRVG91Y2hXZWJWaWV3OjpnZW9tZXRyeUNoYW5nZWQpOgor
ICAgICAgICAoUVRvdWNoV2ViVmlldzo6b25WaXNpYmxlQ2hhbmdlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9x
dC9xdG91Y2h3ZWJ2aWV3X3AuaDoKKyAgICAgICAgKFFUb3VjaFdlYlZpZXdQcml2YXRlOjp0b3Vj
aFBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3
dGVzdHMvdHN0X2NvbW1vbnZpZXd0ZXN0cy5jcHA6CisgICAgICAgICh0c3RfQ29tbW9uVmlld1Rl
c3RzOjpsb2FkTm9uZXhpc3RlbnRGaWxlVXJsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0
L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy93ZWJ2aWV3YWJzdHJhY3Rpb24uY3BwOgorICAgICAgICAo
V2ViVmlld0Fic3RyYWN0aW9uOjpXZWJWaWV3QWJzdHJhY3Rpb24pOgorICAgICAgICAoV2ViVmll
d0Fic3RyYWN0aW9uOjpsb2FkKToKKyAgICAgICAgKFdlYlZpZXdBYnN0cmFjdGlvbjo6dXJsKToK
KyAgICAgICAgKFdlYlZpZXdBYnN0cmFjdGlvbjo6bG9hZFByb2dyZXNzKToKKyAgICAgICAgKFdl
YlZpZXdBYnN0cmFjdGlvbjo6Z29CYWNrKToKKyAgICAgICAgKFdlYlZpZXdBYnN0cmFjdGlvbjo6
Z29Gb3J3YXJkKToKKyAgICAgICAgKFdlYlZpZXdBYnN0cmFjdGlvbjo6c3RvcCk6CisgICAgICAg
IChXZWJWaWV3QWJzdHJhY3Rpb246OnJlbG9hZCk6CisgICAgICAgIChXZWJWaWV3QWJzdHJhY3Rp
b246OnRvdWNoVmlld0xvYWRGYWlsZWQpOgorICAgICAgICAoV2ViVmlld0Fic3RyYWN0aW9uOjpk
ZXNrdG9wVmlld0xvYWRGYWlsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
Y29tbW9udmlld3Rlc3RzL3dlYnZpZXdhYnN0cmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcXRvdWNod2Vidmlldy90c3RfcXRvdWNod2Vidmlldy5jcHA6CisgICAg
ICAgICh0c3RfUVRvdWNoV2ViVmlldzo6bmF2aWdhdGlvblN0YXR1c0F0U3RhcnR1cCk6CisgICAg
ICAgICogVUlQcm9jZXNzL3F0L1F0RGVza3RvcFdlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChR
dERlc2t0b3BXZWJQYWdlUHJveHk6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvcXQvUXRUb3VjaFZpZXdJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpR
dFRvdWNoVmlld0ludGVyZmFjZTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKFdlYktpdDo6UXRUb3VjaFZpZXdJbnRlcmZhY2U6OmRpZENoYW5nZVVybCk6CisgICAgICAg
IChXZWJLaXQ6OlF0VG91Y2hWaWV3SW50ZXJmYWNlOjpkaWRDaGFuZ2VUaXRsZSk6CisgICAgICAg
IChXZWJLaXQ6OlF0VG91Y2hWaWV3SW50ZXJmYWNlOjpsb2FkRGlkQmVnaW4pOgorICAgICAgICAo
V2ViS2l0OjpRdFRvdWNoVmlld0ludGVyZmFjZTo6bG9hZERpZENvbW1pdCk6CisgICAgICAgIChX
ZWJLaXQ6OlF0VG91Y2hWaWV3SW50ZXJmYWNlOjpsb2FkRGlkU3VjY2VlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlF0VG91Y2hWaWV3SW50ZXJmYWNlOjpsb2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJL
aXQ6OlF0VG91Y2hWaWV3SW50ZXJmYWNlOjpkaWRDaGFuZ2VMb2FkUHJvZ3Jlc3MpOgorICAgICAg
ICAqIFdlYktpdDJBUEkucHJpOgorCiAyMDExLTExLTAxICBTaW1vbiBIYXVzbWFubiAgPHNpbW9u
LmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBbV0syXSBBZGQgV2ViR2VzdHVyZUV2ZW50
cyB0byB0aGUgUXQgYnVpbGQgYW5kIGVuYWJsZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwVHlw
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xYmFzZXdlYnZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xYmFzZXdlYnZpZXcuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjFhYzM0YzU1OTNhMWY2MmIyNDUxOGJmN2FhNDUyN2IwZmM3YmU5NzQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FiYXNld2Vi
dmlldy5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJxYmFzZXdlYnZpZXcuaCIKKworI2luY2x1ZGUgIlF0V2ViUGFn
ZVByb3h5LmgiCisjaW5jbHVkZSAicWJhc2V3ZWJ2aWV3X3AuaCIKKyNpbmNsdWRlICJxd2VibmF2
aWdhdGlvbmNvbnRyb2xsZXIuaCIKKworUUJhc2VXZWJWaWV3UHJpdmF0ZTo6UUJhc2VXZWJWaWV3
UHJpdmF0ZSgpCisgICAgOiBxX3B0cigwKQorICAgICwgbmF2aWdhdGlvbkNvbnRyb2xsZXIoMCkK
K3sKK30KKwordm9pZCBRQmFzZVdlYlZpZXdQcml2YXRlOjpzZXRQYWdlUHJveHkoUXRXZWJQYWdl
UHJveHkqIHBhZ2VQcm94eSkKK3sKKyAgICB0aGlzLT5wYWdlUHJveHkucmVzZXQocGFnZVByb3h5
KTsKK30KKworUUJhc2VXZWJWaWV3OjpRQmFzZVdlYlZpZXcoUUJhc2VXZWJWaWV3UHJpdmF0ZSAm
ZGQsIFFRdWlja0l0ZW0gKnBhcmVudCkKKyAgICA6IFFRdWlja1BhaW50ZWRJdGVtKHBhcmVudCkK
KyAgICAsIGRfcHRyKCZkZCkKK3sKKyAgICBkX3B0ci0+cV9wdHIgPSB0aGlzOworfQorCitRQmFz
ZVdlYlZpZXc6On5RQmFzZVdlYlZpZXcoKQoreworfQorCit2b2lkIFFCYXNlV2ViVmlldzo6bG9h
ZChjb25zdCBRVXJsJiB1cmwpCit7CisgICAgUV9EKFFCYXNlV2ViVmlldyk7CisgICAgZC0+cGFn
ZVByb3h5LT5sb2FkKHVybCk7Cit9CisKK1FVcmwgUUJhc2VXZWJWaWV3Ojp1cmwoKSBjb25zdAor
eworICAgIFFfRChjb25zdCBRQmFzZVdlYlZpZXcpOworICAgIHJldHVybiBkLT5wYWdlUHJveHkt
PnVybCgpOworfQorCitpbnQgUUJhc2VXZWJWaWV3Ojpsb2FkUHJvZ3Jlc3MoKSBjb25zdAorewor
ICAgIFFfRChjb25zdCBRQmFzZVdlYlZpZXcpOworICAgIHJldHVybiBkLT5wYWdlUHJveHktPmxv
YWRQcm9ncmVzcygpOworfQorCitRU3RyaW5nIFFCYXNlV2ViVmlldzo6dGl0bGUoKSBjb25zdAor
eworICAgIFFfRChjb25zdCBRQmFzZVdlYlZpZXcpOworICAgIHJldHVybiBkLT5wYWdlUHJveHkt
PnRpdGxlKCk7Cit9CisKK1FXZWJOYXZpZ2F0aW9uQ29udHJvbGxlciogUUJhc2VXZWJWaWV3Ojpu
YXZpZ2F0aW9uQ29udHJvbGxlcigpIGNvbnN0Cit7CisgICAgUV9EKGNvbnN0IFFCYXNlV2ViVmll
dyk7CisgICAgaWYgKCFkLT5uYXZpZ2F0aW9uQ29udHJvbGxlcikKKyAgICAgICAgY29uc3RfY2Fz
dDxRQmFzZVdlYlZpZXdQcml2YXRlKj4oZCktPm5hdmlnYXRpb25Db250cm9sbGVyID0gbmV3IFFX
ZWJOYXZpZ2F0aW9uQ29udHJvbGxlcihkLT5wYWdlUHJveHkuZGF0YSgpKTsKKyAgICByZXR1cm4g
ZC0+bmF2aWdhdGlvbkNvbnRyb2xsZXI7Cit9CisKK1FXZWJQcmVmZXJlbmNlcyogUUJhc2VXZWJW
aWV3OjpwcmVmZXJlbmNlcygpIGNvbnN0Cit7CisgICAgUV9EKGNvbnN0IFFCYXNlV2ViVmlldyk7
CisgICAgcmV0dXJuIGQtPnBhZ2VQcm94eS0+cHJlZmVyZW5jZXMoKTsKK30KKworI2luY2x1ZGUg
Im1vY19xYmFzZXdlYnZpZXcuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xYmFzZXdlYnZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcWJhc2V3ZWJ2aWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFkOTAyOTRhYzI5YWRiMWMyZmQwNTRkY2M1
YzE4ZGQ3ZmMyZWU0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcWJhc2V3ZWJ2aWV3LmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9n
cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICov
CisKKyNpZm5kZWYgcWJhc2V3ZWJ2aWV3X2gKKyNkZWZpbmUgcWJhc2V3ZWJ2aWV3X2gKKworI2lu
Y2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FxdWlja3Bh
aW50ZWRpdGVtLmg+CisKK2NsYXNzIFFCYXNlV2ViVmlld1ByaXZhdGU7CitjbGFzcyBRV2ViTmF2
aWdhdGlvbkNvbnRyb2xsZXI7CitjbGFzcyBRV2ViUHJlZmVyZW5jZXM7CisKK1FUX0JFR0lOX05B
TUVTUEFDRQorY2xhc3MgUVBhaW50ZXI7CitjbGFzcyBRVXJsOworUVRfRU5EX05BTUVTUEFDRQor
CitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRQmFzZVdlYlZpZXcgOiBwdWJsaWMgUVF1aWNrUGFpbnRl
ZEl0ZW0geworICAgIFFfT0JKRUNUCisgICAgUV9QUk9QRVJUWShRU3RyaW5nIHRpdGxlIFJFQUQg
dGl0bGUgTk9USUZZIHRpdGxlQ2hhbmdlZCkKKyAgICBRX1BST1BFUlRZKFFVcmwgdXJsIFJFQUQg
dXJsIE5PVElGWSB1cmxDaGFuZ2VkKQorICAgIFFfUFJPUEVSVFkoaW50IGxvYWRQcm9ncmVzcyBS
RUFEIGxvYWRQcm9ncmVzcyBOT1RJRlkgbG9hZFByb2dyZXNzQ2hhbmdlZCkKKyAgICBRX1BST1BF
UlRZKFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlciogbmF2aWdhdGlvbiBSRUFEIG5hdmlnYXRpb25D
b250cm9sbGVyIENPTlNUQU5UIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoUVdlYlByZWZlcmVuY2Vz
KiBwcmVmZXJlbmNlcyBSRUFEIHByZWZlcmVuY2VzIENPTlNUQU5UIEZJTkFMKQorICAgIFFfRU5V
TVMoTmF2aWdhdGlvblBvbGljeSkKKyAgICBRX0VOVU1TKEVycm9yVHlwZSkKK3B1YmxpYzoKKyAg
ICBlbnVtIE5hdmlnYXRpb25Qb2xpY3kgeworICAgICAgICBVc2VQb2xpY3ksCisgICAgICAgIERv
d25sb2FkUG9saWN5LAorICAgICAgICBJZ25vcmVQb2xpY3kKKyAgICB9OworCisgICAgZW51bSBF
cnJvclR5cGUgeworICAgICAgICBFbmdpbmVFcnJvciwKKyAgICAgICAgTmV0d29ya0Vycm9yLAor
ICAgICAgICBIdHRwRXJyb3IKKyAgICB9OworICAgIHZpcnR1YWwgflFCYXNlV2ViVmlldygpOwor
CisgICAgLy8gRklYTUU6IFdlIGluaGVyaXQgZnJvbSBRUXVpY2tQYWludGVkSXRlbSB1bnRpbCBR
RGVza3RvcFdlYlZpZXcgd29ya3Mgb24gdG9wIG9mIGEgcGxhaW4gUVF1aWNrSXRlbS4KKyAgICB2
b2lkIHBhaW50KFFQYWludGVyKikgeyB9CisKKyAgICBRVXJsIHVybCgpIGNvbnN0OworICAgIFFT
dHJpbmcgdGl0bGUoKSBjb25zdDsKKyAgICBpbnQgbG9hZFByb2dyZXNzKCkgY29uc3Q7CisKKyAg
ICBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIqIG5hdmlnYXRpb25Db250cm9sbGVyKCkgY29uc3Q7
CisgICAgUVdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpIGNvbnN0OworCitwdWJsaWMgUV9T
TE9UUzoKKyAgICAgdm9pZCBsb2FkKGNvbnN0IFFVcmwmKTsKKworUV9TSUdOQUxTOgorICAgIHZv
aWQgdGl0bGVDaGFuZ2VkKGNvbnN0IFFTdHJpbmcmIHRpdGxlKTsKKyAgICB2b2lkIHN0YXR1c0Jh
ck1lc3NhZ2VDaGFuZ2VkKGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgbG9hZFN0
YXJ0ZWQoKTsKKyAgICB2b2lkIGxvYWRTdWNjZWVkZWQoKTsKKyAgICB2b2lkIGxvYWRGYWlsZWQo
UUJhc2VXZWJWaWV3OjpFcnJvclR5cGUgZXJyb3JUeXBlLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBR
VXJsJiB1cmwpOworICAgIHZvaWQgbG9hZFByb2dyZXNzQ2hhbmdlZChpbnQgcHJvZ3Jlc3MpOwor
ICAgIHZvaWQgdXJsQ2hhbmdlZChjb25zdCBRVXJsJiB1cmwpOworCitwcm90ZWN0ZWQ6CisgICAg
UUJhc2VXZWJWaWV3KFFCYXNlV2ViVmlld1ByaXZhdGUgJmRkLCBRUXVpY2tJdGVtICpwYXJlbnQg
PSAwKTsKKyAgICAvLyBIaWRlcyBRT2JqZWN0OjpkX3B0ciBhbGxvd2luZyB1cyB0byB1c2UgdGhl
IGNvbnZlbmllbmNlIG1hY3Jvcy4KKyAgICBRU2NvcGVkUG9pbnRlcjxRQmFzZVdlYlZpZXdQcml2
YXRlPiBkX3B0cjsKK3ByaXZhdGU6CisgICAgUV9ERUNMQVJFX1BSSVZBVEUoUUJhc2VXZWJWaWV3
KQorfTsKKworI2VuZGlmIC8qIHFiYXNld2Vidmlld19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FiYXNld2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FiYXNld2Vidmlld19wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNkNWNmYzMy
MWYwNjc2Nzg0N2ZmYTEwZWZhOTUyOTk1MzE1ZjQzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWJhc2V3ZWJ2aWV3X3AuaApAQCAtMCwwICsxLDQx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBxYmFzZXdlYnZpZXdfcF9oCisjZGVmaW5l
IHFiYXNld2Vidmlld19wX2gKKworI2luY2x1ZGUgInFiYXNld2Vidmlldy5oIgorCitjbGFzcyBR
V2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI7CitjbGFzcyBRdFdlYlBhZ2VQcm94eTsKKworY2xhc3Mg
UUJhc2VXZWJWaWV3UHJpdmF0ZSB7CisgICAgUV9ERUNMQVJFX1BVQkxJQyhRQmFzZVdlYlZpZXcp
CitwdWJsaWM6CisgICAgUUJhc2VXZWJWaWV3UHJpdmF0ZSgpOworICAgIHZpcnR1YWwgflFCYXNl
V2ViVmlld1ByaXZhdGUoKSB7IH0KKyAgICB2b2lkIHNldFBhZ2VQcm94eShRdFdlYlBhZ2VQcm94
eSopOworICAgIFFCYXNlV2ViVmlldyogcV9wdHI7CisgICAgUVNjb3BlZFBvaW50ZXI8UXRXZWJQ
YWdlUHJveHk+IHBhZ2VQcm94eTsKKworICAgIFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlciogbmF2
aWdhdGlvbkNvbnRyb2xsZXI7Cit9OworCisjZW5kaWYgLyogcWJhc2V3ZWJ2aWV3X3BfaCAqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcu
Y3BwCmluZGV4IDhlZjQ3OTI4Mjg4MWM1NjM5ZjBkM2YxYmEzYjMxMDI0OGNhZjg4YzUuLjhiMDg1
NWMwMzFhOTUxMDM1ZWYzNzI4NzVkNWE2NjFlNmRiYTZjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKQEAgLTIxLDE2ICsy
MSwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlldy5o
IgogCisjaW5jbHVkZSAiUXREZXNrdG9wV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiUXRXZWJF
cnJvci5oIgogI2luY2x1ZGUgIlV0aWxzUXQuaCIKICNpbmNsdWRlICJxZGVza3RvcHdlYnZpZXdf
cC5oIgogI2luY2x1ZGUgPFFGaWxlRGlhbG9nPgotI2luY2x1ZGUgPFFHcmFwaGljc1NjZW5lRXZl
bnQ+Ci0jaW5jbHVkZSA8UUdyYXBoaWNzU2NlbmVSZXNpemVFdmVudD4KLSNpbmNsdWRlIDxRU3R5
bGVPcHRpb25HcmFwaGljc0l0ZW0+CiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xZGVjbGFyYXRp
dmVlbmdpbmUuaD4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FxdWlja2NhbnZhcy5oPgotI2lu
Y2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXF1aWNraXRlbS5oPgogI2luY2x1ZGUgPFF0RGVjbGFyYXRp
dmUvcXF1aWNrdmlldy5oPgogI2luY2x1ZGUgPFF0R3VpL1FDdXJzb3I+CiAjaW5jbHVkZSA8UXRH
dWkvUURyYWc+CkBAIC00NSwzMyArNDIsMzkgQEAKICNpbmNsdWRlIDxRdFdpZGdldHMvUU1lc3Nh
Z2VCb3g+CiAjaW5jbHVkZSA8V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oPgogCi1RRGVza3Rv
cFdlYlZpZXdQcml2YXRlOjpRRGVza3RvcFdlYlZpZXdQcml2YXRlKFFEZXNrdG9wV2ViVmlldyog
cSwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikK
LSAgICA6IHEocSkKLSAgICAsIHBhZ2UodGhpcywgY29udGV4dFJlZiwgcGFnZUdyb3VwUmVmKQot
ICAgICwgaXNDcmFzaGVkKGZhbHNlKQotICAgICwgbmF2aWdhdGlvbkNvbnRyb2xsZXIoMCkKK1FE
ZXNrdG9wV2ViVmlld1ByaXZhdGU6OlFEZXNrdG9wV2ViVmlld1ByaXZhdGUoKQorICAgIDogaXND
cmFzaGVkKGZhbHNlKQogewogfQogCiB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmVuYWJs
ZU1vdXNlRXZlbnRzKCkKIHsKKyAgICBRX1EoUURlc2t0b3BXZWJWaWV3KTsKICAgICBxLT5zZXRB
Y2NlcHRlZE1vdXNlQnV0dG9ucyhRdDo6TW91c2VCdXR0b25NYXNrKTsKICAgICBxLT5zZXRBY2Nl
cHRIb3ZlckV2ZW50cyh0cnVlKTsKIH0KIAogdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpk
aXNhYmxlTW91c2VFdmVudHMoKQogeworICAgIFFfUShRRGVza3RvcFdlYlZpZXcpOwogICAgIHEt
PnNldEFjY2VwdGVkTW91c2VCdXR0b25zKFF0OjpOb0J1dHRvbik7CiAgICAgcS0+c2V0QWNjZXB0
SG92ZXJFdmVudHMoZmFsc2UpOwogfQogCitRRGVza3RvcFdlYlZpZXcqIFFEZXNrdG9wV2ViVmll
d1ByaXZhdGU6OndlYlZpZXcoKQoreworICAgIHJldHVybiBxX2Z1bmMoKTsKK30KKwogdm9pZCBR
RGVza3RvcFdlYlZpZXdQcml2YXRlOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFFSZWN0JiBp
bnZhbGlkYXRlZEFyZWEpCiB7CisgICAgUV9RKFFEZXNrdG9wV2ViVmlldyk7CiAgICAgcS0+dXBk
YXRlKGludmFsaWRhdGVkQXJlYSk7CiB9CiAKIFFTaXplIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6
OmRyYXdpbmdBcmVhU2l6ZSgpCiB7CisgICAgUV9RKFFEZXNrdG9wV2ViVmlldyk7CiAgICAgcmV0
dXJuIFFTaXplKHEtPndpZHRoKCksIHEtPmhlaWdodCgpKTsKIH0KIApAQCAtODcsMTYgKzkwLDE5
IEBAIGJvb2wgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6aXNBY3RpdmUoKQogCiBib29sIFFEZXNr
dG9wV2ViVmlld1ByaXZhdGU6Omhhc0ZvY3VzKCkKIHsKKyAgICBRX1EoUURlc2t0b3BXZWJWaWV3
KTsKICAgICByZXR1cm4gcS0+aGFzRm9jdXMoKTsKIH0KIAogYm9vbCBRRGVza3RvcFdlYlZpZXdQ
cml2YXRlOjppc1Zpc2libGUoKQogeworICAgIFFfUShRRGVza3RvcFdlYlZpZXcpOwogICAgIHJl
dHVybiBxLT5pc1Zpc2libGUoKTsKIH0KIAogdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpz
dGFydERyYWcoUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZERyb3BBY3Rpb25zLCBjb25zdCBRSW1h
Z2UmIGRyYWdJbWFnZSwgUU1pbWVEYXRhKiBkYXRhLCBRUG9pbnQqIGNsaWVudFBvc2l0aW9uLCBR
UG9pbnQqIGdsb2JhbFBvc2l0aW9uLCBRdDo6RHJvcEFjdGlvbiogZHJvcEFjdGlvbikKIHsKKyAg
ICBRX1EoUURlc2t0b3BXZWJWaWV3KTsKICAgICBRV2luZG93KiB3aW5kb3cgPSBxLT5jYW52YXMo
KTsKICAgICBpZiAoIXdpbmRvdykKICAgICAgICAgcmV0dXJuOwpAQCAtMTIxLDExICsxMjcsMTMg
QEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0
IFFQb2ludCYsIGNvbnN0IFFSZWN0JikKIAogdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpk
aWRDaGFuZ2VVcmwoY29uc3QgUVVybCYgdXJsKQogeworICAgIFFfUShRRGVza3RvcFdlYlZpZXcp
OwogICAgIGVtaXQgcS0+dXJsQ2hhbmdlZCh1cmwpOwogfQogCiB2b2lkIFFEZXNrdG9wV2ViVmll
d1ByaXZhdGU6OmRpZENoYW5nZVRpdGxlKGNvbnN0IFFTdHJpbmcmIG5ld1RpdGxlKQogeworICAg
IFFfUShRRGVza3RvcFdlYlZpZXcpOwogICAgIGVtaXQgcS0+dGl0bGVDaGFuZ2VkKG5ld1RpdGxl
KTsKIH0KIApAQCAtMTM2LDYgKzE0NCw3IEBAIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6
ZGlkQ2hhbmdlVG9vbFRpcChjb25zdCBRU3RyaW5nJiBuZXdUb29sVGlwKQogCiB2b2lkIFFEZXNr
dG9wV2ViVmlld1ByaXZhdGU6OmRpZENoYW5nZVN0YXR1c1RleHQoY29uc3QgUVN0cmluZyYgbmV3
TWVzc2FnZSkKIHsKKyAgICBRX1EoUURlc2t0b3BXZWJWaWV3KTsKICAgICBlbWl0IHEtPnN0YXR1
c0Jhck1lc3NhZ2VDaGFuZ2VkKG5ld01lc3NhZ2UpOwogfQogCkBAIC0xNDcsNiArMTU2LDcgQEAg
dm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VDdXJzb3IoY29uc3QgUUN1cnNv
ciYgbmV3Q3Vyc29yKQogCiB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmxvYWREaWRCZWdp
bigpCiB7CisgICAgUV9RKFFEZXNrdG9wV2ViVmlldyk7CiAgICAgZW1pdCBxLT5sb2FkU3RhcnRl
ZCgpOwogfQogCkBAIC0xNTcsMjEgKzE2NywyNSBAQCB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZh
dGU6OmxvYWREaWRDb21taXQoKQogCiB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmxvYWRE
aWRTdWNjZWVkKCkKIHsKKyAgICBRX1EoUURlc2t0b3BXZWJWaWV3KTsKICAgICBlbWl0IHEtPmxv
YWRTdWNjZWVkZWQoKTsKIH0KIAogdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpsb2FkRGlk
RmFpbChjb25zdCBRdFdlYkVycm9yJiBlcnJvcikKIHsKKyAgICBRX1EoUURlc2t0b3BXZWJWaWV3
KTsKICAgICBlbWl0IHEtPmxvYWRGYWlsZWQoc3RhdGljX2Nhc3Q8UURlc2t0b3BXZWJWaWV3OjpF
cnJvclR5cGU+KGVycm9yLnR5cGUoKSksIGVycm9yLmVycm9yQ29kZSgpLCBlcnJvci51cmwoKSk7
CiB9CiAKIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlTG9hZFByb2dyZXNz
KGludCBwZXJjZW50YWdlTG9hZGVkKQogeworICAgIFFfUShRRGVza3RvcFdlYlZpZXcpOwogICAg
IGVtaXQgcS0+bG9hZFByb2dyZXNzQ2hhbmdlZChwZXJjZW50YWdlTG9hZGVkKTsKIH0KIAogdm9p
ZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpzaG93Q29udGV4dE1lbnUoUVNoYXJlZFBvaW50ZXI8
UU1lbnU+IG1lbnUpCiB7CisgICAgUV9RKFFEZXNrdG9wV2ViVmlldyk7CiAgICAgLy8gUmVtb3Zl
IHRoZSBhY3RpdmUgbWVudSBpbiBjYXNlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHR3aWNlLgog
ICAgIGlmIChhY3RpdmVNZW51KQogICAgICAgICBhY3RpdmVNZW51LT5oaWRlKCk7CkBAIC0yMDUs
NyArMjE5LDggQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpoaWRlQ29udGV4dE1lbnUo
KQogdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpydW5KYXZhU2NyaXB0QWxlcnQoY29uc3Qg
UVN0cmluZyYgYWxlcnRUZXh0KQogewogI2lmbmRlZiBRVF9OT19NRVNTQUdFQk9YCi0gICAgY29u
c3QgUVN0cmluZyB0aXRsZSA9IHRyKCJKYXZhU2NyaXB0IEFsZXJ0IC0gJTEiKS5hcmcocS0+dXJs
KCkuaG9zdCgpKTsKKyAgICBRX1EoUURlc2t0b3BXZWJWaWV3KTsKKyAgICBjb25zdCBRU3RyaW5n
IHRpdGxlID0gUU9iamVjdDo6dHIoIkphdmFTY3JpcHQgQWxlcnQgLSAlMSIpLmFyZyhxLT51cmwo
KS5ob3N0KCkpOwogICAgIGRpc2FibGVNb3VzZUV2ZW50cygpOwogICAgIFFNZXNzYWdlQm94Ojpp
bmZvcm1hdGlvbigwLCB0aXRsZSwgZXNjYXBlSHRtbChhbGVydFRleHQpLCBRTWVzc2FnZUJveDo6
T2spOwogICAgIGVuYWJsZU1vdXNlRXZlbnRzKCk7CkBAIC0yMTgsNyArMjMzLDggQEAgYm9vbCBR
RGVza3RvcFdlYlZpZXdQcml2YXRlOjpydW5KYXZhU2NyaXB0Q29uZmlybShjb25zdCBRU3RyaW5n
JiBtZXNzYWdlKQogewogICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKICNpZm5kZWYgUVRfTk9fTUVT
U0FHRUJPWAotICAgIGNvbnN0IFFTdHJpbmcgdGl0bGUgPSB0cigiSmF2YVNjcmlwdCBDb25maXJt
IC0gJTEiKS5hcmcocS0+dXJsKCkuaG9zdCgpKTsKKyAgICBRX1EoUURlc2t0b3BXZWJWaWV3KTsK
KyAgICBjb25zdCBRU3RyaW5nIHRpdGxlID0gUU9iamVjdDo6dHIoIkphdmFTY3JpcHQgQ29uZmly
bSAtICUxIikuYXJnKHEtPnVybCgpLmhvc3QoKSk7CiAgICAgZGlzYWJsZU1vdXNlRXZlbnRzKCk7
CiAgICAgcmVzdWx0ID0gUU1lc3NhZ2VCb3g6OlllcyA9PSBRTWVzc2FnZUJveDo6aW5mb3JtYXRp
b24oMCwgdGl0bGUsIGVzY2FwZUh0bWwobWVzc2FnZSksIFFNZXNzYWdlQm94OjpZZXMsIFFNZXNz
YWdlQm94OjpObyk7CiAgICAgZW5hYmxlTW91c2VFdmVudHMoKTsKQEAgLTIzMSw3ICsyNDcsOCBA
QCBib29sIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OnJ1bkphdmFTY3JpcHRDb25maXJtKGNvbnN0
IFFTdHJpbmcmIG1lc3NhZ2UpCiBRU3RyaW5nIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OnJ1bkph
dmFTY3JpcHRQcm9tcHQoY29uc3QgUVN0cmluZyYgbWVzc2FnZSwgY29uc3QgUVN0cmluZyYgZGVm
YXVsdFZhbHVlLCBib29sJiBvaykKIHsKICNpZm5kZWYgUVRfTk9fSU5QVVRESUFMT0cKLSAgICBj
b25zdCBRU3RyaW5nIHRpdGxlID0gdHIoIkphdmFTY3JpcHQgUHJvbXB0IC0gJTEiKS5hcmcocS0+
dXJsKCkuaG9zdCgpKTsKKyAgICBRX1EoUURlc2t0b3BXZWJWaWV3KTsKKyAgICBjb25zdCBRU3Ry
aW5nIHRpdGxlID0gUU9iamVjdDo6dHIoIkphdmFTY3JpcHQgUHJvbXB0IC0gJTEiKS5hcmcocS0+
dXJsKCkuaG9zdCgpKTsKICAgICBkaXNhYmxlTW91c2VFdmVudHMoKTsKICAgICBRU3RyaW5nIHJl
c3VsdCA9IFFJbnB1dERpYWxvZzo6Z2V0VGV4dCgwLCB0aXRsZSwgZXNjYXBlSHRtbChtZXNzYWdl
KSwgUUxpbmVFZGl0OjpOb3JtYWwsIGRlZmF1bHRWYWx1ZSwgJm9rKTsKICAgICBlbmFibGVNb3Vz
ZUV2ZW50cygpOwpAQCAtMjQzLDU5ICsyNjAsMjcgQEAgUVN0cmluZyBRRGVza3RvcFdlYlZpZXdQ
cml2YXRlOjpydW5KYXZhU2NyaXB0UHJvbXB0KGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGNvbnMK
IH0KIAogUURlc2t0b3BXZWJWaWV3OjpRRGVza3RvcFdlYlZpZXcoUVF1aWNrSXRlbSogcGFyZW50
KQotICAgIDogUVF1aWNrUGFpbnRlZEl0ZW0ocGFyZW50KQotICAgICwgZChuZXcgUURlc2t0b3BX
ZWJWaWV3UHJpdmF0ZSh0aGlzKSkKKyAgICA6IFFCYXNlV2ViVmlldygqKG5ldyBRRGVza3RvcFdl
YlZpZXdQcml2YXRlKSwgcGFyZW50KQogewotICAgIGluaXQoKTsKKyAgICBRX0QoUURlc2t0b3BX
ZWJWaWV3KTsKKyAgICBkLT5pbml0KCk7CiB9CiAKIFFEZXNrdG9wV2ViVmlldzo6UURlc2t0b3BX
ZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBS
ZWYsIFFRdWlja0l0ZW0qIHBhcmVudCkKLSAgICA6IFFRdWlja1BhaW50ZWRJdGVtKHBhcmVudCkK
LSAgICAsIGQobmV3IFFEZXNrdG9wV2ViVmlld1ByaXZhdGUodGhpcywgY29udGV4dFJlZiwgcGFn
ZUdyb3VwUmVmKSkKKyAgICA6IFFCYXNlV2ViVmlldygqKG5ldyBRRGVza3RvcFdlYlZpZXdQcml2
YXRlKSwgcGFyZW50KQogewotICAgIGluaXQoKTsKKyAgICBRX0QoUURlc2t0b3BXZWJWaWV3KTsK
KyAgICBkLT5pbml0KGNvbnRleHRSZWYsIHBhZ2VHcm91cFJlZik7CiB9CiAKLXZvaWQgUURlc2t0
b3BXZWJWaWV3Ojppbml0KCkKK3ZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6aW5pdChXS0Nv
bnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQogewotICAg
IGQtPmVuYWJsZU1vdXNlRXZlbnRzKCk7CisgICAgc2V0UGFnZVByb3h5KG5ldyBRdERlc2t0b3BX
ZWJQYWdlUHJveHkodGhpcywgY29udGV4dFJlZiwgcGFnZUdyb3VwUmVmKSk7CisgICAgZW5hYmxl
TW91c2VFdmVudHMoKTsKIH0KIAogUURlc2t0b3BXZWJWaWV3Ojp+UURlc2t0b3BXZWJWaWV3KCkK
IHsKLSAgICBkZWxldGUgZDsKLX0KLQotdm9pZCBRRGVza3RvcFdlYlZpZXc6OmxvYWQoY29uc3Qg
UVVybCYgdXJsKQotewotICAgIGQtPnBhZ2UubG9hZCh1cmwpOwotfQotCi1RVXJsIFFEZXNrdG9w
V2ViVmlldzo6dXJsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZC0+cGFnZS51cmwoKTsKLX0KLQot
aW50IFFEZXNrdG9wV2ViVmlldzo6bG9hZFByb2dyZXNzKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
ZC0+cGFnZS5sb2FkUHJvZ3Jlc3MoKTsKLX0KLQotUVN0cmluZyBRRGVza3RvcFdlYlZpZXc6OnRp
dGxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZC0+cGFnZS50aXRsZSgpOwotfQotCi1RV2ViTmF2
aWdhdGlvbkNvbnRyb2xsZXIqIFFEZXNrdG9wV2ViVmlldzo6bmF2aWdhdGlvbkNvbnRyb2xsZXIo
KSBjb25zdAotewotICAgIGlmICghZC0+bmF2aWdhdGlvbkNvbnRyb2xsZXIpCi0gICAgICAgIGQt
Pm5hdmlnYXRpb25Db250cm9sbGVyID0gbmV3IFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcigmZC0+
cGFnZSk7Ci0gICAgcmV0dXJuIGQtPm5hdmlnYXRpb25Db250cm9sbGVyOwotfQotCi1RV2ViUHJl
ZmVyZW5jZXMqIFFEZXNrdG9wV2ViVmlldzo6cHJlZmVyZW5jZXMoKSBjb25zdAotewotICAgIHJl
dHVybiBkLT5wYWdlLnByZWZlcmVuY2VzKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHBhaW50Q3Jhc2hl
ZFBhZ2UoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFSZWN0RiYgcmVjdCkKQEAgLTM5NywyNSAr
MzgyLDI4IEBAIHZvaWQgUURlc2t0b3BXZWJWaWV3Ojpkcm9wRXZlbnQoUURyb3BFdmVudCogZXZl
bnQpCiAKIHZvaWQgUURlc2t0b3BXZWJWaWV3OjpnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RG
JiBuZXdHZW9tZXRyeSwgY29uc3QgUVJlY3RGJiBvbGRHZW9tZXRyeSkKIHsKKyAgICBRX0QoUURl
c2t0b3BXZWJWaWV3KTsKICAgICBRUXVpY2tQYWludGVkSXRlbTo6Z2VvbWV0cnlDaGFuZ2VkKG5l
d0dlb21ldHJ5LCBvbGRHZW9tZXRyeSk7CiAgICAgaWYgKG5ld0dlb21ldHJ5LnNpemUoKSAhPSBv
bGRHZW9tZXRyeS5zaXplKCkpCi0gICAgICAgIGQtPnBhZ2Uuc2V0RHJhd2luZ0FyZWFTaXplKG5l
d0dlb21ldHJ5LnNpemUoKS50b1NpemUoKSk7CisgICAgICAgIGQtPnBhZ2VQcm94eS0+c2V0RHJh
d2luZ0FyZWFTaXplKG5ld0dlb21ldHJ5LnNpemUoKS50b1NpemUoKSk7CiB9CiAKIHZvaWQgUURl
c2t0b3BXZWJWaWV3OjpwYWludChRUGFpbnRlciogcGFpbnRlcikKIHsKKyAgICBRX0QoUURlc2t0
b3BXZWJWaWV3KTsKICAgICBjb25zdCBRUmVjdEYgcmVjdCA9IGJvdW5kaW5nUmVjdCgpOwogICAg
IGlmIChkLT5pc0NyYXNoZWQpIHsKICAgICAgICAgcGFpbnRDcmFzaGVkUGFnZShwYWludGVyLCBy
ZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGQtPnBhZ2UucGFpbnQocGFpbnRl
ciwgcmVjdC50b0FsaWduZWRSZWN0KCkpOworICAgIGQtPnBhZ2VQcm94eS0+cGFpbnQocGFpbnRl
ciwgcmVjdC50b0FsaWduZWRSZWN0KCkpOwogfQogCiBib29sIFFEZXNrdG9wV2ViVmlldzo6ZXZl
bnQoUUV2ZW50KiBldikKIHsKLSAgICBpZiAoZC0+cGFnZS5oYW5kbGVFdmVudChldikpCisgICAg
UV9EKFFEZXNrdG9wV2ViVmlldyk7CisgICAgaWYgKGQtPnBhZ2VQcm94eS0+aGFuZGxlRXZlbnQo
ZXYpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoZXYtPnR5cGUoKSA9PSBRRXZlbnQ6
OklucHV0TWV0aG9kKQogICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFRoaXMgaXMgbmVjZXNzYXJ5
IHRvIGF2b2lkIGFuIGVuZGxlc3MgbG9vcCBpbiBjb25uZWN0aW9uIHdpdGggUVF1aWNrSXRlbTo6
ZXZlbnQoKS4KQEAgLTQyNCwyMyArNDEyLDI3IEBAIGJvb2wgUURlc2t0b3BXZWJWaWV3OjpldmVu
dChRRXZlbnQqIGV2KQogCiBXS1BhZ2VSZWYgUURlc2t0b3BXZWJWaWV3OjpwYWdlUmVmKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gZC0+cGFnZS5wYWdlUmVmKCk7CisgICAgUV9EKGNvbnN0IFFEZXNr
dG9wV2ViVmlldyk7CisgICAgcmV0dXJuIGQtPnBhZ2VQcm94eS0+cGFnZVJlZigpOwogfQogCiB2
b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OnByb2Nlc3NEaWRDcmFzaCgpCiB7CisgICAgUV9R
KFFEZXNrdG9wV2ViVmlldyk7CiAgICAgaXNDcmFzaGVkID0gdHJ1ZTsKICAgICBxLT51cGRhdGUo
KTsKIH0KIAogdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkaWRSZWxhdW5jaFByb2Nlc3Mo
KQogeworICAgIFFfUShRRGVza3RvcFdlYlZpZXcpOwogICAgIGlzQ3Jhc2hlZCA9IGZhbHNlOwog
ICAgIHEtPnVwZGF0ZSgpOwogfQogCiBRSlNFbmdpbmUqIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6
OmVuZ2luZSgpCiB7CisgICAgUV9RKFFEZXNrdG9wV2ViVmlldyk7CiAgICAgUVF1aWNrVmlldyog
dmlldyA9IHFvYmplY3RfY2FzdDxRUXVpY2tWaWV3Kj4ocS0+Y2FudmFzKCkpOwogICAgIGlmICh2
aWV3KQogICAgICAgICByZXR1cm4gdmlldy0+ZW5naW5lKCk7CkBAIC00NTAsNiArNDQyLDcgQEAg
UUpTRW5naW5lKiBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjplbmdpbmUoKQogdm9pZCBRRGVza3Rv
cFdlYlZpZXdQcml2YXRlOjpjaG9vc2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVm
IGxpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRGaWxlTmFtZXMsIFF0Vmll
d0ludGVyZmFjZTo6RmlsZUNob29zZXJUeXBlIHR5cGUpCiB7CiAjaWZuZGVmIFFUX05PX0ZJTEVE
SUFMT0cKKyAgICBRX1EoUURlc2t0b3BXZWJWaWV3KTsKICAgICBvcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lciA9IGxpc3RlbmVyUmVmOwogCiAgICAgLy8gUXQgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBs
ZSBmaWxlcyBzdWdnZXN0aW9uLCBzbyB3ZSBnZXQganVzdCB0aGUgZmlyc3Qgc3VnZ2VzdGlvbi4K
QEAgLTQ2OCwxMyArNDYxLDEzIEBAIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6Y2hvb3Nl
RmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lclJlCiAgICAgUV9BU1NF
UlQoZmlsZURpYWxvZy0+d2luZG93KCktPndpbmRvd0hhbmRsZSgpKTsKICAgICBmaWxlRGlhbG9n
LT53aW5kb3coKS0+d2luZG93SGFuZGxlKCktPnNldFRyYW5zaWVudFBhcmVudCh3aW5kb3cpOwog
Ci0gICAgZmlsZURpYWxvZy0+b3Blbih0aGlzLCBTTE9UKG9uT3BlblBhbmVsRmlsZXNTZWxlY3Rl
ZCgpKSk7CisgICAgZmlsZURpYWxvZy0+b3BlbihxX2Z1bmMoKSwgU0xPVChfcV9vbk9wZW5QYW5l
bEZpbGVzU2VsZWN0ZWQoKSkpOwogCi0gICAgY29ubmVjdChmaWxlRGlhbG9nLCBTSUdOQUwoZmlu
aXNoZWQoaW50KSksIHRoaXMsIFNMT1Qob25PcGVuUGFuZWxGaW5pc2hlZChpbnQpKSk7CisgICAg
cV9mdW5jKCktPmNvbm5lY3QoZmlsZURpYWxvZywgU0lHTkFMKGZpbmlzaGVkKGludCkpLCBTTE9U
KF9xX29uT3BlblBhbmVsRmluaXNoZWQoaW50KSkpOwogI2VuZGlmCiB9CiAKLXZvaWQgUURlc2t0
b3BXZWJWaWV3UHJpdmF0ZTo6b25PcGVuUGFuZWxGaWxlc1NlbGVjdGVkKCkKK3ZvaWQgUURlc2t0
b3BXZWJWaWV3UHJpdmF0ZTo6X3Ffb25PcGVuUGFuZWxGaWxlc1NlbGVjdGVkKCkKIHsKICAgICBj
b25zdCBRU3RyaW5nTGlzdCBmaWxlTGlzdCA9IGZpbGVEaWFsb2ctPnNlbGVjdGVkRmlsZXMoKTsK
ICAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiB3a0ZpbGVzKGZpbGVMaXN0LnNpemUoKSk7
CkBAIC00ODUsNyArNDc4LDcgQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpvbk9wZW5Q
YW5lbEZpbGVzU2VsZWN0ZWQoKQogICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VG
aWxlcyhvcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciwgdG9BUEkoSW1tdXRhYmxlQXJyYXk6OmFkb3B0
KHdrRmlsZXMpLmxlYWtSZWYoKSkpOwogfQogCi12b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6
Om9uT3BlblBhbmVsRmluaXNoZWQoaW50IHJlc3VsdCkKK3ZvaWQgUURlc2t0b3BXZWJWaWV3UHJp
dmF0ZTo6X3Ffb25PcGVuUGFuZWxGaW5pc2hlZChpbnQgcmVzdWx0KQogewogICAgIGlmIChyZXN1
bHQgPT0gUURpYWxvZzo6UmVqZWN0ZWQpCiAgICAgICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJDYW5jZWwob3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpOwpAQCAtNDk4LDYgKzQ5MSw3IEBAIHZv
aWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZGlkTW91c2VNb3ZlT3ZlckVsZW1lbnQoY29uc3Qg
UVVybCYgbGlua1VSTCwgY29uc3QKIHsKICAgICBpZiAobGlua1VSTCA9PSBsYXN0SG92ZXJlZFVS
TCAmJiBsaW5rVGl0bGUgPT0gbGFzdEhvdmVyZWRUaXRsZSkKICAgICAgICAgcmV0dXJuOworICAg
IFFfUShRRGVza3RvcFdlYlZpZXcpOwogICAgIGxhc3RIb3ZlcmVkVVJMID0gbGlua1VSTDsKICAg
ICBsYXN0SG92ZXJlZFRpdGxlID0gbGlua1RpdGxlOwogICAgIGVtaXQgcS0+bGlua0hvdmVyZWQo
bGFzdEhvdmVyZWRVUkwsIGxhc3RIb3ZlcmVkVGl0bGUpOwpAQCAtNTMzLDYgKzUyNyw3IEBAIHN0
YXRpYyBib29sIGhhc01ldGFNZXRob2QoUU9iamVjdCogb2JqZWN0LCBjb25zdCBjaGFyKiBtZXRo
b2ROYW1lKQogKi8KIFF0UG9saWN5SW50ZXJmYWNlOjpQb2xpY3lBY3Rpb24gUURlc2t0b3BXZWJW
aWV3UHJpdmF0ZTo6bmF2aWdhdGlvblBvbGljeUZvclVSTChjb25zdCBRVXJsJiB1cmwsIFF0OjpN
b3VzZUJ1dHRvbiBidXR0b24sIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RpZmllcnMpCiB7Cisg
ICAgUV9RKFFEZXNrdG9wV2ViVmlldyk7CiAgICAgLy8gV2UgbmVlZCB0byBjaGVjayB0aGlzIGZp
cnN0IGJlY2F1c2UgaW52b2tlTWV0aG9kKCkgd2FybnMgaWYgdGhlIG1ldGhvZCBkb2Vzbid0IGV4
aXN0IGZvciB0aGUgb2JqZWN0LgogICAgIGlmICghaGFzTWV0YU1ldGhvZChxLCAibmF2aWdhdGlv
blBvbGljeUZvclVybChRVmFyaWFudCxRVmFyaWFudCxRVmFyaWFudCkiKSkKICAgICAgICAgcmV0
dXJuIFF0UG9saWN5SW50ZXJmYWNlOjpVc2U7CkBAIC01NDQsNCArNTM5LDMgQEAgUXRQb2xpY3lJ
bnRlcmZhY2U6OlBvbGljeUFjdGlvbiBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpuYXZpZ2F0aW9u
UG9saWN5Rm9yVVJMKGMKIH0KIAogI2luY2x1ZGUgIm1vY19xZGVza3RvcHdlYnZpZXcuY3BwIgot
I2luY2x1ZGUgIm1vY19xZGVza3RvcHdlYnZpZXdfcC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaAppbmRleCA2ZWJjOTNjMTE0ODJi
YzQxMDE5YTkyNzEyNjczYTRiNWFhZWE3N2RiLi44MWZiMTlkNjljM2I2YTQyNGRjNDNjNjE4YjQz
ZTJhNTc0YmY2MGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FkZXNrdG9wd2Vidmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cWRlc2t0b3B3ZWJ2aWV3LmgKQEAgLTIxLDE0ICsyMSwxMSBAQAogI2lmbmRlZiBxZGVza3RvcHdl
YnZpZXdfaAogI2RlZmluZSBxZGVza3RvcHdlYnZpZXdfaAogCisjaW5jbHVkZSAicWJhc2V3ZWJ2
aWV3LmgiCiAjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgotI2luY2x1ZGUgPFFVcmw+Ci0jaW5j
bHVkZSA8UXREZWNsYXJhdGl2ZS9xcXVpY2twYWludGVkaXRlbS5oPgogI2luY2x1ZGUgPFdlYktp
dDIvV0tCYXNlLmg+CiAKIGNsYXNzIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU7Ci1jbGFzcyBRV2Vi
TmF2aWdhdGlvbkNvbnRyb2xsZXI7Ci1jbGFzcyBRV2ViUHJlZmVyZW5jZXM7CiAKIFFUX0JFR0lO
X05BTUVTUEFDRQogY2xhc3MgUUZvY3VzRXZlbnQ7CkBAIC01MCw0OSArNDcsMTMgQEAgbmFtZXNw
YWNlIFdUUiB7CiAgICAgY2xhc3MgUGxhdGZvcm1XZWJWaWV3OwogfQogCi1jbGFzcyBRV0VCS0lU
X0VYUE9SVCBRRGVza3RvcFdlYlZpZXcgOiBwdWJsaWMgUVF1aWNrUGFpbnRlZEl0ZW0geworY2xh
c3MgUVdFQktJVF9FWFBPUlQgUURlc2t0b3BXZWJWaWV3IDogcHVibGljIFFCYXNlV2ViVmlldyB7
CiAgICAgUV9PQkpFQ1QKLSAgICBRX1BST1BFUlRZKFFTdHJpbmcgdGl0bGUgUkVBRCB0aXRsZSBO
T1RJRlkgdGl0bGVDaGFuZ2VkKQotICAgIFFfUFJPUEVSVFkoUVVybCB1cmwgUkVBRCB1cmwgTk9U
SUZZIHVybENoYW5nZWQpCi0gICAgUV9QUk9QRVJUWShpbnQgbG9hZFByb2dyZXNzIFJFQUQgbG9h
ZFByb2dyZXNzIE5PVElGWSBsb2FkUHJvZ3Jlc3NDaGFuZ2VkKQotICAgIFFfUFJPUEVSVFkoUVdl
Yk5hdmlnYXRpb25Db250cm9sbGVyKiBuYXZpZ2F0aW9uIFJFQUQgbmF2aWdhdGlvbkNvbnRyb2xs
ZXIgQ09OU1RBTlQgRklOQUwpCi0gICAgUV9QUk9QRVJUWShRV2ViUHJlZmVyZW5jZXMqIHByZWZl
cmVuY2VzIFJFQUQgcHJlZmVyZW5jZXMgQ09OU1RBTlQgRklOQUwpCi0gICAgUV9FTlVNUyhOYXZp
Z2F0aW9uUG9saWN5KQotICAgIFFfRU5VTVMoRXJyb3JUeXBlKQogcHVibGljOgotICAgIGVudW0g
TmF2aWdhdGlvblBvbGljeSB7Ci0gICAgICAgIFVzZVBvbGljeSwKLSAgICAgICAgRG93bmxvYWRQ
b2xpY3ksCi0gICAgICAgIElnbm9yZVBvbGljeQotICAgIH07Ci0KLSAgICBlbnVtIEVycm9yVHlw
ZSB7Ci0gICAgICAgIEVuZ2luZUVycm9yLAotICAgICAgICBOZXR3b3JrRXJyb3IsCi0gICAgICAg
IEh0dHBFcnJvcgotICAgIH07Ci0KICAgICBRRGVza3RvcFdlYlZpZXcoUVF1aWNrSXRlbSogcGFy
ZW50ID0gMCk7CiAgICAgdmlydHVhbCB+UURlc2t0b3BXZWJWaWV3KCk7CiAKLSAgICBRVXJsIHVy
bCgpIGNvbnN0OwotICAgIFFTdHJpbmcgdGl0bGUoKSBjb25zdDsKLSAgICBpbnQgbG9hZFByb2dy
ZXNzKCkgY29uc3Q7Ci0KLSAgICBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIqIG5hdmlnYXRpb25D
b250cm9sbGVyKCkgY29uc3Q7Ci0gICAgUVdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpIGNv
bnN0OwotCi1wdWJsaWMgUV9TTE9UUzoKLSAgICAgdm9pZCBsb2FkKGNvbnN0IFFVcmwmKTsKLQog
UV9TSUdOQUxTOgotICAgIHZvaWQgdGl0bGVDaGFuZ2VkKGNvbnN0IFFTdHJpbmcmIHRpdGxlKTsK
LSAgICB2b2lkIHN0YXR1c0Jhck1lc3NhZ2VDaGFuZ2VkKGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2Up
OwotICAgIHZvaWQgbG9hZFN0YXJ0ZWQoKTsKLSAgICB2b2lkIGxvYWRTdWNjZWVkZWQoKTsKLSAg
ICB2b2lkIGxvYWRGYWlsZWQoUURlc2t0b3BXZWJWaWV3OjpFcnJvclR5cGUgZXJyb3JUeXBlLCBp
bnQgZXJyb3JDb2RlLCBjb25zdCBRVXJsJiB1cmwpOwotICAgIHZvaWQgbG9hZFByb2dyZXNzQ2hh
bmdlZChpbnQgcHJvZ3Jlc3MpOwotICAgIHZvaWQgdXJsQ2hhbmdlZChjb25zdCBRVXJsJiB1cmwp
OwogICAgIHZvaWQgbGlua0hvdmVyZWQoY29uc3QgUVVybCYgdXJsLCBjb25zdCBRU3RyaW5nJiB0
aXRsZSk7CiAKIHByb3RlY3RlZDoKQEAgLTEyMiwxMiArODMsMTEgQEAgcHJvdGVjdGVkOgogcHJp
dmF0ZToKICAgICBRRGVza3RvcFdlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiwg
UVF1aWNrSXRlbSogcGFyZW50ID0gMCk7CiAgICAgV0tQYWdlUmVmIHBhZ2VSZWYoKSBjb25zdDsK
LQotICAgIHZvaWQgaW5pdCgpOworICAgIFFfUFJJVkFURV9TTE9UKGRfZnVuYygpLCB2b2lkIF9x
X29uT3BlblBhbmVsRmlsZXNTZWxlY3RlZCgpKTsKKyAgICBRX1BSSVZBVEVfU0xPVChkX2Z1bmMo
KSwgdm9pZCBfcV9vbk9wZW5QYW5lbEZpbmlzaGVkKGludCByZXN1bHQpKTsKIAogICAgIGZyaWVu
ZCBjbGFzcyBXVFI6OlBsYXRmb3JtV2ViVmlldzsKLSAgICBmcmllbmQgY2xhc3MgUURlc2t0b3BX
ZWJWaWV3UHJpdmF0ZTsKLSAgICBRRGVza3RvcFdlYlZpZXdQcml2YXRlICpkOworICAgIFFfREVD
TEFSRV9QUklWQVRFKFFEZXNrdG9wV2ViVmlldykKIH07CiAKIFFNTF9ERUNMQVJFX1RZUEUoUURl
c2t0b3BXZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xZGVza3RvcHdlYnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
ZGVza3RvcHdlYnZpZXdfcC5oCmluZGV4IGMxNWVlZjA2ZjliZWY3ZmY0MTU4YzkyODNmYjNlNzQx
MjlhNzQ5YjguLmNiZjkzZDYxZGIwMTFmNTY3MjdlNDY3MzM5NjQ0MmQwNTVkZmE3MDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3Au
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19w
LmgKQEAgLTIxLDM1ICsyMSwyOSBAQAogI2lmbmRlZiBxZGVza3RvcHdlYnZpZXdfcF9oCiAjZGVm
aW5lIHFkZXNrdG9wd2Vidmlld19wX2gKIAotI2luY2x1ZGUgIlF0RGVza3RvcFdlYlBhZ2VQcm94
eS5oIgorI2luY2x1ZGUgIlF0UG9saWN5SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiUXRWaWV3SW50
ZXJmYWNlLmgiCi0jaW5jbHVkZSAicXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmgiCisjaW5jbHVk
ZSAicWJhc2V3ZWJ2aWV3X3AuaCIKKyNpbmNsdWRlICJxZGVza3RvcHdlYnZpZXcuaCIKIAotI2lu
Y2x1ZGUgPFF0Q29yZS9RT2JqZWN0PgotCi1jbGFzcyBRRGVza3RvcFdlYlZpZXc7CiBjbGFzcyBR
RmlsZURpYWxvZzsKIAotY2xhc3MgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZSA6IHB1YmxpYyBRT2Jq
ZWN0LCBwdWJsaWMgV2ViS2l0OjpRdFZpZXdJbnRlcmZhY2UsIHB1YmxpYyBXZWJLaXQ6OlF0UG9s
aWN5SW50ZXJmYWNlCitjbGFzcyBRRGVza3RvcFdlYlZpZXdQcml2YXRlIDogcHVibGljIFFCYXNl
V2ViVmlld1ByaXZhdGUsIHB1YmxpYyBXZWJLaXQ6OlF0Vmlld0ludGVyZmFjZSwgcHVibGljIFdl
YktpdDo6UXRQb2xpY3lJbnRlcmZhY2UKIHsKLSAgICBRX09CSkVDVAorICAgIFFfREVDTEFSRV9Q
VUJMSUMoUURlc2t0b3BXZWJWaWV3KQogcHVibGljOgotICAgIFFEZXNrdG9wV2ViVmlld1ByaXZh
dGUoUURlc2t0b3BXZWJWaWV3KiwgV0tDb250ZXh0UmVmID0gMCwgV0tQYWdlR3JvdXBSZWYgPSAw
KTsKKyAgICBRRGVza3RvcFdlYlZpZXdQcml2YXRlKCk7CisgICAgdm9pZCBpbml0KFdLQ29udGV4
dFJlZiA9IDAsIFdLUGFnZUdyb3VwUmVmID0gMCk7CiAKICAgICBzdGF0aWMgUURlc2t0b3BXZWJW
aWV3KiBjcmVhdGVWaWV3V2l0aFBhZ2VHcm91cChXS1BhZ2VHcm91cFJlZik7CiAKKyAgICBRRGVz
a3RvcFdlYlZpZXcqIHdlYlZpZXcoKTsKKyAgICB2b2lkIF9xX29uT3BlblBhbmVsRmlsZXNTZWxl
Y3RlZCgpOworICAgIHZvaWQgX3Ffb25PcGVuUGFuZWxGaW5pc2hlZChpbnQgcmVzdWx0KTsKICAg
ICB2b2lkIGVuYWJsZU1vdXNlRXZlbnRzKCk7CiAgICAgdm9pZCBkaXNhYmxlTW91c2VFdmVudHMo
KTsKIAotICAgIFFEZXNrdG9wV2ViVmlldyogcTsKLSAgICBRdERlc2t0b3BXZWJQYWdlUHJveHkg
cGFnZTsKLQogICAgIGJvb2wgaXNDcmFzaGVkOwotICAgIFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxl
ciogbmF2aWdhdGlvbkNvbnRyb2xsZXI7Ci0KLXByaXZhdGUgUV9TTE9UUzoKLSAgICB2b2lkIG9u
T3BlblBhbmVsRmlsZXNTZWxlY3RlZCgpOwotICAgIHZvaWQgb25PcGVuUGFuZWxGaW5pc2hlZChp
bnQgcmVzdWx0KTsKIAogcHJpdmF0ZToKICAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBRdFZpZXdJ
bnRlcmZhY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0
b3VjaHdlYnBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3
ZWJwYWdlLmNwcAppbmRleCBlYWM0MDI3MzNkMmFiNjk0MjIzNzZhYTBmODAxZmQyYzBiYTdmMzdi
Li5lZGQ5ODcwYThiOGQzMmE5MmU4MTNhYWEyZWEzNzQ2MjVhMzgwODdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHAKQEAgLTYxLDMx
ICs2MSwxMSBAQCBRVG91Y2hXZWJQYWdlOjp+UVRvdWNoV2ViUGFnZSgpCiAgICAgZGVsZXRlIGQ7
CiB9CiAKLXZvaWQgUVRvdWNoV2ViUGFnZTo6bG9hZChjb25zdCBRVXJsJiB1cmwpCi17Ci0gICAg
ZC0+cGFnZS0+bG9hZCh1cmwpOwotfQotCi1RVXJsIFFUb3VjaFdlYlBhZ2U6OnVybCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGQtPnBhZ2UtPnVybCgpOwotfQotCi1RU3RyaW5nIFFUb3VjaFdlYlBh
Z2U6OnRpdGxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZC0+cGFnZS0+dGl0bGUoKTsKLX0KLQot
aW50IFFUb3VjaFdlYlBhZ2U6OmxvYWRQcm9ncmVzcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGQt
PnBhZ2UtPmxvYWRQcm9ncmVzcygpOwotfQotCiAvKiEgXHJlaW1wCiAqLwogYm9vbCBRVG91Y2hX
ZWJQYWdlOjpldmVudChRRXZlbnQqIGV2KQogewotICAgIGlmIChkLT5wYWdlLT5oYW5kbGVFdmVu
dChldikpCisgICAgaWYgKGQtPnBhZ2VQcm94eS0+aGFuZGxlRXZlbnQoZXYpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gUVF1aWNrSXRlbTo6ZXZlbnQoZXYpOwogfQpAQCAtMTI0
LDM1ICsxMDQsMjMgQEAgdm9pZCBRVG91Y2hXZWJQYWdlOjpnZW9tZXRyeUNoYW5nZWQoY29uc3Qg
UVJlY3RGJiBuZXdHZW9tZXRyeSwgY29uc3QgUVJlY3RGJiBvbGQKIHsKICAgICBRUXVpY2tJdGVt
OjpnZW9tZXRyeUNoYW5nZWQobmV3R2VvbWV0cnksIG9sZEdlb21ldHJ5KTsKICAgICBpZiAobmV3
R2VvbWV0cnkuc2l6ZSgpICE9IG9sZEdlb21ldHJ5LnNpemUoKSkKLSAgICAgICAgZC0+cGFnZS0+
c2V0RHJhd2luZ0FyZWFTaXplKG5ld0dlb21ldHJ5LnNpemUoKS50b1NpemUoKSk7Ci19Ci0KLVFX
ZWJOYXZpZ2F0aW9uQ29udHJvbGxlciogUVRvdWNoV2ViUGFnZTo6bmF2aWdhdGlvbkNvbnRyb2xs
ZXIoKSBjb25zdAotewotICAgIGlmICghZC0+bmF2aWdhdGlvbkNvbnRyb2xsZXIpCi0gICAgICAg
IGQtPm5hdmlnYXRpb25Db250cm9sbGVyID0gbmV3IFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcihk
LT5wYWdlKTsKLSAgICByZXR1cm4gZC0+bmF2aWdhdGlvbkNvbnRyb2xsZXI7Ci19Ci0KLVFXZWJQ
cmVmZXJlbmNlcyogUVRvdWNoV2ViUGFnZTo6cHJlZmVyZW5jZXMoKSBjb25zdAotewotICAgIHJl
dHVybiBkLT5wYWdlLT5wcmVmZXJlbmNlcygpOworICAgICAgICBkLT5wYWdlUHJveHktPnNldERy
YXdpbmdBcmVhU2l6ZShuZXdHZW9tZXRyeS5zaXplKCkudG9TaXplKCkpOwogfQogCiBRVG91Y2hX
ZWJQYWdlUHJpdmF0ZTo6UVRvdWNoV2ViUGFnZVByaXZhdGUoUVRvdWNoV2ViUGFnZSogdmlldykK
ICAgICA6IHEodmlldykKLSAgICAsIHBhZ2UoMCkKKyAgICAsIHBhZ2VQcm94eSgwKQogICAgICwg
bmF2aWdhdGlvbkNvbnRyb2xsZXIoMCkKICAgICAsIHNnVXBkYXRlUXVldWUodmlldykKICAgICAs
IHBhaW50aW5nSXNJbml0aWFsaXplZChmYWxzZSkKIHsKIH0KIAotdm9pZCBRVG91Y2hXZWJQYWdl
UHJpdmF0ZTo6c2V0UGFnZShRdFRvdWNoV2ViUGFnZVByb3h5KiBwYWdlKQordm9pZCBRVG91Y2hX
ZWJQYWdlUHJpdmF0ZTo6c2V0UGFnZVByb3h5KFF0V2ViUGFnZVByb3h5KiBwYWdlUHJveHkpCiB7
Ci0gICAgQVNTRVJUKCF0aGlzLT5wYWdlKTsKLSAgICBBU1NFUlQocGFnZSk7Ci0gICAgdGhpcy0+
cGFnZSA9IHBhZ2U7CisgICAgQVNTRVJUKCF0aGlzLT5wYWdlUHJveHkpOworICAgIEFTU0VSVChw
YWdlUHJveHkpOworICAgIHRoaXMtPnBhZ2VQcm94eSA9IHBhZ2VQcm94eTsKIAogfQogCkBAIC0x
ODUsNyArMTUzLDcgQEAgdm9pZCBRVG91Y2hXZWJQYWdlUHJpdmF0ZTo6cGFpbnRUb0N1cnJlbnRH
TENvbnRleHQoKQogCiAgICAgZ2xTY2lzc29yKGxlZnQsIGJvdHRvbSwgd2lkdGgsIGhlaWdodCk7
CiAKLSAgICBwYWdlLT5yZW5kZXJUb0N1cnJlbnRHTENvbnRleHQodHJhbnNmb3JtLCBvcGFjaXR5
KTsKKyAgICB0b3VjaFBhZ2VQcm94eSgpLT5yZW5kZXJUb0N1cnJlbnRHTENvbnRleHQodHJhbnNm
b3JtLCBvcGFjaXR5KTsKICAgICBnbERpc2FibGUoR0xfU0NJU1NPUl9URVNUKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaAppbmRleCBi
YWUzOTM3MjRiZGJiNWM5M2FjNWZkMGJjYmZlMGZiOWYwNjAyZTdhLi44ZGZjYTUwZjM5MTA0YTEx
ODljOGZlN2NiMjI2YjQ4N2MzODIxYTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaApAQCAtMzcsNDIgKzM3LDEzIEBAIGNsYXNzIFF0VG91
Y2hWaWV3SW50ZXJmYWNlOwogCiBjbGFzcyBRV0VCS0lUX0VYUE9SVCBRVG91Y2hXZWJQYWdlIDog
cHVibGljIFFRdWlja0l0ZW0gewogICAgIFFfT0JKRUNUCi0gICAgUV9QUk9QRVJUWShRU3RyaW5n
IHRpdGxlIFJFQUQgdGl0bGUgTk9USUZZIHRpdGxlQ2hhbmdlZCkKLSAgICBRX1BST1BFUlRZKFFV
cmwgdXJsIFJFQUQgdXJsIE5PVElGWSB1cmxDaGFuZ2VkKQotICAgIFFfUFJPUEVSVFkoaW50IGxv
YWRQcm9ncmVzcyBSRUFEIGxvYWRQcm9ncmVzcyBOT1RJRlkgbG9hZFByb2dyZXNzQ2hhbmdlZCkK
LSAgICBRX1BST1BFUlRZKFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlciogbmF2aWdhdGlvbiBSRUFE
IG5hdmlnYXRpb25Db250cm9sbGVyIENPTlNUQU5UIEZJTkFMKQotICAgIFFfUFJPUEVSVFkoUVdl
YlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcyBSRUFEIHByZWZlcmVuY2VzIENPTlNUQU5UIEZJTkFM
KQotICAgIFFfRU5VTVMoRXJyb3JUeXBlKQogcHVibGljOgotICAgIGVudW0gRXJyb3JUeXBlIHsK
LSAgICAgICAgRW5naW5lRXJyb3IsCi0gICAgICAgIE5ldHdvcmtFcnJvciwKLSAgICAgICAgSHR0
cEVycm9yCi0gICAgfTsKLQogICAgIFFUb3VjaFdlYlBhZ2UoUVF1aWNrSXRlbSogcGFyZW50ID0g
MCk7CiAKICAgICB2aXJ0dWFsIH5RVG91Y2hXZWJQYWdlKCk7CiAKLSAgICBRX0lOVk9LQUJMRSB2
b2lkIGxvYWQoY29uc3QgUVVybCYpOwotICAgIFFfSU5WT0tBQkxFIFFVcmwgdXJsKCkgY29uc3Q7
Ci0KLSAgICBRX0lOVk9LQUJMRSBRU3RyaW5nIHRpdGxlKCkgY29uc3Q7Ci0gICAgaW50IGxvYWRQ
cm9ncmVzcygpIGNvbnN0OwotCi0gICAgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyKiBuYXZpZ2F0
aW9uQ29udHJvbGxlcigpIGNvbnN0OwotICAgIFFXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMo
KSBjb25zdDsKLQogICAgIHZpcnR1YWwgYm9vbCBldmVudChRRXZlbnQqKTsKIAotUV9TSUdOQUxT
OgotICAgIHZvaWQgdXJsQ2hhbmdlZChjb25zdCBRVXJsJiB1cmwpOwotICAgIHZvaWQgdGl0bGVD
aGFuZ2VkKGNvbnN0IFFTdHJpbmcmIHRpdGxlKTsKLSAgICB2b2lkIGxvYWRTdGFydGVkKCk7Ci0g
ICAgdm9pZCBsb2FkU3VjY2VlZGVkKCk7Ci0gICAgdm9pZCBsb2FkRmFpbGVkKFFUb3VjaFdlYlBh
Z2U6OkVycm9yVHlwZSBlcnJvclR5cGUsIGludCBlcnJvckNvZGUsIGNvbnN0IFFVcmwmIHVybCk7
Ci0gICAgdm9pZCBsb2FkUHJvZ3Jlc3NDaGFuZ2VkKGludCBwcm9ncmVzcyk7Ci0KIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIHZvaWQga2V5UHJlc3NFdmVudChRS2V5RXZlbnQqKTsKICAgICB2aXJ0
dWFsIHZvaWQga2V5UmVsZWFzZUV2ZW50KFFLZXlFdmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlX3AuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZV9wLmgKaW5kZXggNzFiOTQ4ZThhYzlj
NzUyZGIzY2M3MzE4N2M4MjQwNzI2ZTQ2MDg4NS4uODUzY2Y5NTIyMmI2MzQyOTk0YjIxMzAyNzE5
YzcxNWU5NGIyOTVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xdG91Y2h3ZWJwYWdlX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnBhZ2VfcC5oCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIHF0b3VjaHdlYnBh
Z2VfcF9oCiAKICNpbmNsdWRlICJRdFNHVXBkYXRlUXVldWUuaCIKKyNpbmNsdWRlICJRdFRvdWNo
V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAicXRvdWNod2VicGFnZS5oIgogI2luY2x1ZGUgInF3
ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5oIgogI2luY2x1ZGUgPFFNZW51PgpAQCAtMzAsMjAgKzMx
LDIwIEBAIGNsYXNzIFFSZWN0RjsKIGNsYXNzIFFTR05vZGU7CiBjbGFzcyBRU3RyaW5nOwogY2xh
c3MgUVRvdWNoV2ViUGFnZTsKLWNsYXNzIFF0VG91Y2hXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFFU
b3VjaFdlYlBhZ2VQcml2YXRlIHsKIHB1YmxpYzoKICAgICBRVG91Y2hXZWJQYWdlUHJpdmF0ZShR
VG91Y2hXZWJQYWdlKiB2aWV3KTsKIAotICAgIHZvaWQgc2V0UGFnZShRdFRvdWNoV2ViUGFnZVBy
b3h5Kik7CisgICAgdm9pZCBzZXRQYWdlUHJveHkoUXRXZWJQYWdlUHJveHkqKTsKIAogICAgIHZv
aWQgX3Ffb25BZnRlclNjZW5lUmVuZGVyKCk7CiAgICAgdm9pZCBfcV9vblNjZW5lR3JhcGhJbml0
aWFsaXplZCgpOwogICAgIHZvaWQgcGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKTsKKyAgICBRdFRv
dWNoV2ViUGFnZVByb3h5KiB0b3VjaFBhZ2VQcm94eSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFF0
VG91Y2hXZWJQYWdlUHJveHkqPihwYWdlUHJveHkpOyB9CiAKICAgICBRVG91Y2hXZWJQYWdlKiBj
b25zdCBxOwotICAgIFF0VG91Y2hXZWJQYWdlUHJveHkqIHBhZ2U7CisgICAgUXRXZWJQYWdlUHJv
eHkqIHBhZ2VQcm94eTsKICAgICBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIqIG5hdmlnYXRpb25D
b250cm9sbGVyOwogICAgIFdlYktpdDo6UXRTR1VwZGF0ZVF1ZXVlIHNnVXBkYXRlUXVldWU7CiAg
ICAgYm9vbCBwYWludGluZ0lzSW5pdGlhbGl6ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcAppbmRleCA4N2E0NjVhZjMyYjQzNjRiNGZj
MDNmMGM3NTA5YThhNjJlMjc1MWQyLi41NWFlZDI5NTJmNWEwMmUwZTMwNjdiOWMwNzhmZTAyMTU5
M2U0MGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3Vj
aHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNo
d2Vidmlldy5jcHAKQEAgLTI4LDQ1ICsyOCw0NiBAQAogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5o
IgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAKLVFUb3VjaFdlYlZpZXdQcml2YXRlOjpR
VG91Y2hXZWJWaWV3UHJpdmF0ZShRVG91Y2hXZWJWaWV3KiBxKQotICAgIDogcShxKQotICAgICwg
cGFnZVZpZXcobmV3IFFUb3VjaFdlYlBhZ2UocSkpCi0gICAgLCB2aWV3SW50ZXJmYWNlKHEsIHBh
Z2VWaWV3LmRhdGEoKSkKLSAgICAsIGludGVyYWN0aW9uRW5naW5lKHEsIHBhZ2VWaWV3LmRhdGEo
KSkKLSAgICAsIHBhZ2UoJnZpZXdJbnRlcmZhY2UsICZpbnRlcmFjdGlvbkVuZ2luZSkKK3ZvaWQg
UVRvdWNoV2ViVmlld1ByaXZhdGU6OmluaXQoUVRvdWNoV2ViVmlldyogdmlld3BvcnQpCiB7Cisg
ICAgcGFnZVZpZXcucmVzZXQobmV3IFFUb3VjaFdlYlBhZ2Uodmlld3BvcnQpKTsKKyAgICB2aWV3
SW50ZXJmYWNlLnJlc2V0KG5ldyBXZWJLaXQ6OlF0VG91Y2hWaWV3SW50ZXJmYWNlKHZpZXdwb3J0
LCBwYWdlVmlldy5kYXRhKCkpKTsKKyAgICBpbnRlcmFjdGlvbkVuZ2luZS5yZXNldChuZXcgUXRW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKHZpZXdwb3J0LCBwYWdlVmlldy5kYXRhKCkpKTsKICAg
ICBRVG91Y2hXZWJQYWdlUHJpdmF0ZSogY29uc3QgcGFnZVZpZXdQcml2YXRlID0gcGFnZVZpZXcu
ZGF0YSgpLT5kOwotICAgIHBhZ2VWaWV3UHJpdmF0ZS0+c2V0UGFnZSgmcGFnZSk7CisgICAgc2V0
UGFnZVByb3h5KG5ldyBRdFRvdWNoV2ViUGFnZVByb3h5KHZpZXdJbnRlcmZhY2UuZGF0YSgpLCBp
bnRlcmFjdGlvbkVuZ2luZS5kYXRhKCkpKTsKKyAgICBwYWdlVmlld1ByaXZhdGUtPnNldFBhZ2VQ
cm94eSh0b3VjaFBhZ2VQcm94eSgpKTsKIAotICAgIFFPYmplY3Q6OmNvbm5lY3QoJmludGVyYWN0
aW9uRW5naW5lLCBTSUdOQUwodmlld3BvcnRVcGRhdGVSZXF1ZXN0ZWQoKSksIHEsIFNMT1QoX3Ff
dmlld3BvcnRVcGRhdGVkKCkpKTsKLSAgICBRT2JqZWN0Ojpjb25uZWN0KCZpbnRlcmFjdGlvbkVu
Z2luZSwgU0lHTkFMKHZpZXdwb3J0VHJhamVjdG9yeVZlY3RvckNoYW5nZWQoY29uc3QgUVBvaW50
RiYpKSwgcSwgU0xPVChfcV92aWV3cG9ydFRyYWplY3RvcnlWZWN0b3JDaGFuZ2VkKGNvbnN0IFFQ
b2ludEYmKSkpOworICAgIFFPYmplY3Q6OmNvbm5lY3QoaW50ZXJhY3Rpb25FbmdpbmUuZGF0YSgp
LCBTSUdOQUwodmlld3BvcnRVcGRhdGVSZXF1ZXN0ZWQoKSksIHZpZXdwb3J0LCBTTE9UKF9xX3Zp
ZXdwb3J0VXBkYXRlZCgpKSk7CisgICAgUU9iamVjdDo6Y29ubmVjdChpbnRlcmFjdGlvbkVuZ2lu
ZS5kYXRhKCksIFNJR05BTCh2aWV3cG9ydFRyYWplY3RvcnlWZWN0b3JDaGFuZ2VkKGNvbnN0IFFQ
b2ludEYmKSksIHZpZXdwb3J0LCBTTE9UKF9xX3ZpZXdwb3J0VHJhamVjdG9yeVZlY3RvckNoYW5n
ZWQoY29uc3QgUVBvaW50RiYpKSk7CiB9CiAKIHZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6Omxv
YWREaWRDb21taXQoKQogewotICAgIGludGVyYWN0aW9uRW5naW5lLnJlc2V0KCk7CisgICAgaW50
ZXJhY3Rpb25FbmdpbmUtPnJlc2V0KCk7CiB9CiAKIHZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6
Ol9xX3ZpZXdwb3J0VXBkYXRlZCgpCiB7CisgICAgUV9RKFFUb3VjaFdlYlZpZXcpOwogICAgIGNv
bnN0IFFSZWN0RiB2aXNpYmxlUmVjdEluUGFnZVZpZXdDb29yZGluYXRlcyA9IHEtPm1hcFJlY3RU
b0l0ZW0ocGFnZVZpZXcuZGF0YSgpLCBxLT5ib3VuZGluZ1JlY3QoKSkuaW50ZXJzZWN0ZWQocGFn
ZVZpZXctPmJvdW5kaW5nUmVjdCgpKTsKICAgICBmbG9hdCBzY2FsZSA9IHBhZ2VWaWV3LT5zY2Fs
ZSgpOwotICAgIHBhZ2Uuc2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUodmlzaWJsZVJlY3RJ
blBhZ2VWaWV3Q29vcmRpbmF0ZXMsIHNjYWxlKTsKKyAgICB0b3VjaFBhZ2VQcm94eSgpLT5zZXRW
aXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZSh2aXNpYmxlUmVjdEluUGFnZVZpZXdDb29yZGluYXRl
cywgc2NhbGUpOwogfQogCiB2b2lkIFFUb3VjaFdlYlZpZXdQcml2YXRlOjpfcV92aWV3cG9ydFRy
YWplY3RvcnlWZWN0b3JDaGFuZ2VkKGNvbnN0IFFQb2ludEYmIHRyYWplY3RvcnlWZWN0b3IpCiB7
Ci0gICAgcGFnZS5zZXRWaXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKHRyYWplY3Rv
cnlWZWN0b3IpOworICAgIHRvdWNoUGFnZVByb3h5KCktPnNldFZpc2libGVDb250ZW50UmVjdFRy
YWplY3RvcnlWZWN0b3IodHJhamVjdG9yeVZlY3Rvcik7CiB9CiAKIHZvaWQgUVRvdWNoV2ViVmll
d1ByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludHMoKQogeworICAgIFFfUShRVG91Y2hX
ZWJWaWV3KTsKICAgICBRU2l6ZSBhdmFpbGFibGVTaXplID0gcS0+Ym91bmRpbmdSZWN0KCkuc2l6
ZSgpLnRvU2l6ZSgpOwogCiAgICAgaWYgKGF2YWlsYWJsZVNpemUuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBXZWJQYWdlUHJveHkqIHdrUGFnZSA9IHRvSW1wbChwYWdlLnBhZ2VS
ZWYoKSk7CisgICAgV2ViUGFnZVByb3h5KiB3a1BhZ2UgPSB0b0ltcGwocGFnZVByb3h5LT5wYWdl
UmVmKCkpOwogICAgIFdlYlByZWZlcmVuY2VzKiB3a1ByZWZzID0gd2tQYWdlLT5wYWdlR3JvdXAo
KS0+cHJlZmVyZW5jZXMoKTsKIAogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRy
ID0gV2ViQ29yZTo6Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyh2aWV3cG9ydEFyZ3VtZW50cywg
d2tQcmVmcy0+bGF5b3V0RmFsbGJhY2tXaWR0aCgpLCB3a1ByZWZzLT5kZXZpY2VXaWR0aCgpLCB3
a1ByZWZzLT5kZXZpY2VIZWlnaHQoKSwgd2tQcmVmcy0+ZGV2aWNlRFBJKCksIGF2YWlsYWJsZVNp
emUpOwpAQCAtNzYsNyArNzcsNyBAQCB2b2lkIFFUb3VjaFdlYlZpZXdQcml2YXRlOjp1cGRhdGVW
aWV3cG9ydENvbnN0cmFpbnRzKCkKICAgICBuZXdDb25zdHJhaW50cy5taW5pbXVtU2NhbGUgPSBh
dHRyLm1pbmltdW1TY2FsZTsKICAgICBuZXdDb25zdHJhaW50cy5tYXhpbXVtU2NhbGUgPSBhdHRy
Lm1heGltdW1TY2FsZTsKICAgICBuZXdDb25zdHJhaW50cy5pc1VzZXJTY2FsYWJsZSA9ICEhYXR0
ci51c2VyU2NhbGFibGU7Ci0gICAgaW50ZXJhY3Rpb25FbmdpbmUuc2V0Q29uc3RyYWludHMobmV3
Q29uc3RyYWludHMpOworICAgIGludGVyYWN0aW9uRW5naW5lLT5zZXRDb25zdHJhaW50cyhuZXdD
b25zdHJhaW50cyk7CiAKICAgICAvLyBPdmVyd3JpdGUgbWluaW11bSBzY2FsZSB2YWx1ZSB3aXRo
IGZpdC10by12aWV3IHZhbHVlLCB1bmxlc3MgdGhlIHRoZSBjb250ZW50IGF1dGhvcgogICAgIC8v
IGV4cGxpY2l0bHkgc2F5cyBuby4gTkI6IFdlIGNhbiBvbmx5IGRvIHRoaXMgd2hlbiB3ZSBrbm93
IHdlIGhhdmUgYSB2YWxpZCBzaXplLCBpZS4KQEAgLTkzLDI1ICs5NCwyNyBAQCB2b2lkIFFUb3Vj
aFdlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29y
ZTo6Vmlld3BvcnRBcgogfQogCiBRVG91Y2hXZWJWaWV3OjpRVG91Y2hXZWJWaWV3KFFRdWlja0l0
ZW0qIHBhcmVudCkKLSAgICA6IFFRdWlja0l0ZW0ocGFyZW50KQotICAgICwgZChuZXcgUVRvdWNo
V2ViVmlld1ByaXZhdGUodGhpcykpCisgICAgOiBRQmFzZVdlYlZpZXcoKihuZXcgUVRvdWNoV2Vi
Vmlld1ByaXZhdGUpLCBwYXJlbnQpCiB7CisgICAgUV9EKFFUb3VjaFdlYlZpZXcpOworICAgIGQt
PmluaXQodGhpcyk7CiAgICAgc2V0RmxhZ3MoUVF1aWNrSXRlbTo6SXRlbUNsaXBzQ2hpbGRyZW5U
b1NoYXBlKTsKICAgICBjb25uZWN0KHRoaXMsIFNJR05BTCh2aXNpYmxlQ2hhbmdlZCgpKSwgU0xP
VChvblZpc2libGVDaGFuZ2VkKCkpKTsKIH0KIAogUVRvdWNoV2ViVmlldzo6flFUb3VjaFdlYlZp
ZXcoKQogewotICAgIGRlbGV0ZSBkOwogfQogCiBRVG91Y2hXZWJQYWdlKiBRVG91Y2hXZWJWaWV3
OjpwYWdlKCkKIHsKKyAgICBRX0QoUVRvdWNoV2ViVmlldyk7CiAgICAgcmV0dXJuIGQtPnBhZ2VW
aWV3LmRhdGEoKTsKIH0KIAogdm9pZCBRVG91Y2hXZWJWaWV3OjpnZW9tZXRyeUNoYW5nZWQoY29u
c3QgUVJlY3RGJiBuZXdHZW9tZXRyeSwgY29uc3QgUVJlY3RGJiBvbGRHZW9tZXRyeSkKIHsKKyAg
ICBRX0QoUVRvdWNoV2ViVmlldyk7CiAgICAgUVF1aWNrSXRlbTo6Z2VvbWV0cnlDaGFuZ2VkKG5l
d0dlb21ldHJ5LCBvbGRHZW9tZXRyeSk7CiAgICAgaWYgKG5ld0dlb21ldHJ5LnNpemUoKSAhPSBv
bGRHZW9tZXRyeS5zaXplKCkpIHsKICAgICAgICAgZC0+dXBkYXRlVmlld3BvcnRDb25zdHJhaW50
cygpOwpAQCAtMTI3LDkgKzEzMCwxMCBAQCB2b2lkIFFUb3VjaFdlYlZpZXc6OnRvdWNoRXZlbnQo
UVRvdWNoRXZlbnQqIGV2ZW50KQogCiB2b2lkIFFUb3VjaFdlYlZpZXc6Om9uVmlzaWJsZUNoYW5n
ZWQoKQogewotICAgIFdlYlBhZ2VQcm94eSogcGFnZVByb3h5ID0gdG9JbXBsKGQtPnBhZ2UucGFn
ZVJlZigpKTsKKyAgICBRX0QoUVRvdWNoV2ViVmlldyk7CisgICAgV2ViUGFnZVByb3h5KiB3a1Bh
Z2UgPSB0b0ltcGwoZC0+cGFnZVByb3h5LT5wYWdlUmVmKCkpOwogCi0gICAgcGFnZVByb3h5LT52
aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNWaXNpYmxlKTsKKyAgICB3a1Bh
Z2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc1Zpc2libGUpOwogfQog
CiAjaW5jbHVkZSAibW9jX3F0b3VjaHdlYnZpZXcuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuaAppbmRleCA4ZDk4Mjk3YWExN2NlMjM4NDc1
ZDkxZmQwZDM0NGZhMDI0ZTY3NDFjLi4xZmZhMGY1M2MwMmM3ZjA4Nzc4Mzg0ZmUzYzk3OTM0NDcy
YWRlZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3Vj
aHdlYnZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdl
YnZpZXcuaApAQCAtMjEsOCArMjEsOCBAQAogI2lmbmRlZiBxdG91Y2h3ZWJ2aWV3X2gKICNkZWZp
bmUgcXRvdWNod2Vidmlld19oCiAKKyNpbmNsdWRlICJxYmFzZXdlYnZpZXcuaCIKICNpbmNsdWRl
ICJxd2Via2l0Z2xvYmFsLmgiCi0KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FxdWlja2l0ZW0u
aD4KIAogY2xhc3MgUVRvdWNoRXZlbnQ7CkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgUXRUb3VjaFZpZXdJbnRlcmZhY2U7CiB9CiAKLWNsYXNzIFFXRUJLSVRfRVhQ
T1JUIFFUb3VjaFdlYlZpZXcgOiBwdWJsaWMgUVF1aWNrSXRlbQorY2xhc3MgUVdFQktJVF9FWFBP
UlQgUVRvdWNoV2ViVmlldyA6IHB1YmxpYyBRQmFzZVdlYlZpZXcKIHsKICAgICBRX09CSkVDVAog
ICAgIFFfUFJPUEVSVFkoUVRvdWNoV2ViUGFnZSogcGFnZSBSRUFEIHBhZ2UgQ09OU1RBTlQgRklO
QUwpCkBAIC01MiwxMSArNTIsMTEgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB0b3Vj
aEV2ZW50KFFUb3VjaEV2ZW50KiBldmVudCk7CiAKIHByaXZhdGU6Ci0gICAgUV9QUklWQVRFX1NM
T1QoZCwgdm9pZCBfcV92aWV3cG9ydFVwZGF0ZWQoKSk7Ci0gICAgUV9QUklWQVRFX1NMT1QoZCwg
dm9pZCBfcV92aWV3cG9ydFRyYWplY3RvcnlWZWN0b3JDaGFuZ2VkKGNvbnN0IFFQb2ludEYmKSk7
CisgICAgUV9QUklWQVRFX1NMT1QoZF9mdW5jKCksIHZvaWQgX3Ffdmlld3BvcnRVcGRhdGVkKCkp
OworICAgIFFfUFJJVkFURV9TTE9UKGRfZnVuYygpLCB2b2lkIF9xX3ZpZXdwb3J0VHJhamVjdG9y
eVZlY3RvckNoYW5nZWQoY29uc3QgUVBvaW50RiYpKTsKIAogICAgIGZyaWVuZCBjbGFzcyBXZWJL
aXQ6OlF0VG91Y2hWaWV3SW50ZXJmYWNlOwotICAgIFFUb3VjaFdlYlZpZXdQcml2YXRlICpkOwor
ICAgIFFfREVDTEFSRV9QUklWQVRFKFFUb3VjaFdlYlZpZXcpCiB9OwogCiBRTUxfREVDTEFSRV9U
WVBFKFFUb3VjaFdlYlZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F0b3VjaHdlYnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xdG91Y2h3ZWJ2aWV3X3AuaAppbmRleCA4ZTU1ZWM5MWQ2OTgwMjhhYTJkMjBlM2Q0NWIzNjZl
NDgxYTYyZDZiLi43MWEzY2Q1YTk5YTE4OWViMzQ5M2EyYTRjODFkMTY5ZjVkMjYyM2U5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXdfcC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlld19wLmgK
QEAgLTI0LDI4ICsyNCwyOSBAQAogI2luY2x1ZGUgIlF0VG91Y2hWaWV3SW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiUXRUb3VjaFdlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIlF0Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZS5oIgorI2luY2x1ZGUgInFiYXNld2Vidmlld19wLmgiCiAjaW5jbHVkZSA8
UVNjb3BlZFBvaW50ZXI+CiAKIGNsYXNzIFFUb3VjaFdlYlBhZ2U7CiBjbGFzcyBRVG91Y2hXZWJW
aWV3OwogCi1jbGFzcyBRVG91Y2hXZWJWaWV3UHJpdmF0ZQorY2xhc3MgUVRvdWNoV2ViVmlld1By
aXZhdGUgOiBRQmFzZVdlYlZpZXdQcml2YXRlCiB7CisgICAgUV9ERUNMQVJFX1BVQkxJQyhRVG91
Y2hXZWJWaWV3KQogcHVibGljOgotICAgIFFUb3VjaFdlYlZpZXdQcml2YXRlKFFUb3VjaFdlYlZp
ZXcqIHEpOworICAgIHZvaWQgaW5pdChRVG91Y2hXZWJWaWV3KiB2aWV3cG9ydCk7CiAKICAgICB2
b2lkIGxvYWREaWRDb21taXQoKTsKICAgICB2b2lkIF9xX3ZpZXdwb3J0VXBkYXRlZCgpOwogICAg
IHZvaWQgX3Ffdmlld3BvcnRUcmFqZWN0b3J5VmVjdG9yQ2hhbmdlZChjb25zdCBRUG9pbnRGJik7
CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydENvbnN0cmFpbnRzKCk7CisgICAgUXRUb3VjaFdlYlBh
Z2VQcm94eSogdG91Y2hQYWdlUHJveHkoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxRdFRvdWNoV2Vi
UGFnZVByb3h5Kj4oUUJhc2VXZWJWaWV3UHJpdmF0ZTo6cGFnZVByb3h5LmRhdGEoKSk7IH0KIAog
ICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdw
b3J0QXJndW1lbnRzJiBhcmdzKTsKIAotICAgIFFUb3VjaFdlYlZpZXcqIGNvbnN0IHE7CiAgICAg
UVNjb3BlZFBvaW50ZXI8UVRvdWNoV2ViUGFnZT4gcGFnZVZpZXc7Ci0gICAgV2ViS2l0OjpRdFRv
dWNoVmlld0ludGVyZmFjZSB2aWV3SW50ZXJmYWNlOwotICAgIFF0Vmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZSBpbnRlcmFjdGlvbkVuZ2luZTsKLSAgICBRdFRvdWNoV2ViUGFnZVByb3h5IHBhZ2U7
CisgICAgUVNjb3BlZFBvaW50ZXI8V2ViS2l0OjpRdFRvdWNoVmlld0ludGVyZmFjZT4gdmlld0lu
dGVyZmFjZTsKKyAgICBRU2NvcGVkUG9pbnRlcjxRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU+
IGludGVyYWN0aW9uRW5naW5lOwogCiAgICAgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMgdmll
d3BvcnRBcmd1bWVudHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvdHN0X2NvbW1vbnZpZXd0ZXN0cy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy90c3Rf
Y29tbW9udmlld3Rlc3RzLmNwcAppbmRleCA5Nzk2ODE0YzU4NTUwMGU5ZTY4MGU3MmZiODQ1MmVl
ZTkwN2U3M2JhLi4wM2I1ZmNmOGZmOGUyZmY5ZmM4YjlkNTFjM2E4YjM2YTdmYTU0NWUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZpZXd0
ZXN0cy90c3RfY29tbW9udmlld3Rlc3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy90c3RfY29tbW9udmlld3Rlc3RzLmNwcApA
QCAtOTcsNyArOTcsNyBAQCB2b2lkIHRzdF9Db21tb25WaWV3VGVzdHM6OmxvYWROb25leGlzdGVu
dEZpbGVVcmwoKQogICAgIFFTaWduYWxTcHkgbG9hZEZhaWxlZFNweSh2aWV3QWJzdHJhY3Rpb24u
ZGF0YSgpLCBTSUdOQUwobG9hZFN0YXJ0ZWQoKSkpOwogCiAgICAgdmlld0Fic3RyYWN0aW9uLT5s
b2FkKFFVcmw6OmZyb21Mb2NhbEZpbGUoUUxhdGluMVN0cmluZyhURVNUU19TT1VSQ0VfRElSICIv
aHRtbC9maWxlX3RoYXRfZG9lc19ub3RfZXhpc3QuaHRtbCIpKSk7Ci0gICAgUVZFUklGWSh3YWl0
Rm9yU2lnbmFsKHZpZXdBYnN0cmFjdGlvbi5kYXRhKCksIFNJR05BTChsb2FkRmFpbGVkKFFEZXNr
dG9wV2ViVmlldzo6RXJyb3JUeXBlLCBpbnQsIFFVcmwpKSkpOworICAgIFFWRVJJRlkod2FpdEZv
clNpZ25hbCh2aWV3QWJzdHJhY3Rpb24uZGF0YSgpLCBTSUdOQUwobG9hZEZhaWxlZChRQmFzZVdl
YlZpZXc6OkVycm9yVHlwZSwgaW50LCBRVXJsKSkpKTsKIAogICAgIFFDT01QQVJFKGxvYWRGYWls
ZWRTcHkuc2l6ZSgpLCAxKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rlc3RzL3dlYnZpZXdhYnN0cmFjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy93ZWJ2
aWV3YWJzdHJhY3Rpb24uY3BwCmluZGV4IDQ3ZjI2MTUzZTc3YjhlMGIxZDc5OWRjNTFmNzI3YzVh
N2ZhYTIxNmIuLjVkZGU2ZDc5YjI5MWVjOTk4N2I4NmE5YWZlNjkxYjlhNjdiMzBhN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rl
c3RzL3dlYnZpZXdhYnN0cmFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vidmlld2Fic3RyYWN0aW9uLmNwcApAQCAt
MzMsMTcgKzMzLDE3IEBAIFdlYlZpZXdBYnN0cmFjdGlvbjo6V2ViVmlld0Fic3RyYWN0aW9uKCkK
ICAgICBRUmVjdCBzY3JlZW5IYWxmKG1haW5TY3JlZW5HZW9tZXRyeS50b3BMZWZ0KCksIFFTaXpl
KG1haW5TY3JlZW5HZW9tZXRyeS53aWR0aCgpIC8gMiwgbWFpblNjcmVlbkdlb21ldHJ5LmhlaWdo
dCgpKSk7CiAgICAgbV90b3VjaFdlYlZpZXdXaW5kb3cuc2V0R2VvbWV0cnkoc2NyZWVuSGFsZik7
CiAgICAgbV90b3VjaFdlYlZpZXdXaW5kb3cuc2V0V2luZG93VGl0bGUoUUxhdGluMVN0cmluZygi
VG91Y2hXZWJWaWV3IikpOwotICAgIGNvbm5lY3QodG91Y2hXZWJWaWV3KCktPnBhZ2UoKSwgU0lH
TkFMKGxvYWRTdGFydGVkKCkpLCB0aGlzLCBTTE9UKHRvdWNoVmlld0xvYWRTdGFydGVkKCkpKTsK
LSAgICBjb25uZWN0KHRvdWNoV2ViVmlldygpLT5wYWdlKCksIFNJR05BTChsb2FkU3VjY2VlZGVk
KCkpLCB0aGlzLCBTTE9UKHRvdWNoVmlld0xvYWRTdWNjZWVkZWQoKSkpOwotICAgIGNvbm5lY3Qo
dG91Y2hXZWJWaWV3KCktPnBhZ2UoKSwgU0lHTkFMKGxvYWRGYWlsZWQoUVRvdWNoV2ViUGFnZTo6
RXJyb3JUeXBlLCBpbnQsIGNvbnN0IFFVcmwmKSksIHRoaXMsIFNMT1QodG91Y2hWaWV3TG9hZEZh
aWxlZChRVG91Y2hXZWJQYWdlOjpFcnJvclR5cGUsIGludCwgY29uc3QgUVVybCYpKSk7Ci0gICAg
Y29ubmVjdCh0b3VjaFdlYlZpZXcoKS0+cGFnZSgpLCBTSUdOQUwobG9hZFByb2dyZXNzQ2hhbmdl
ZChpbnQpKSwgdGhpcywgU0xPVCh0b3VjaFZpZXdMb2FkUHJvZ3Jlc3NDaGFuZ2VkKGludCkpKTsK
KyAgICBjb25uZWN0KHRvdWNoV2ViVmlldygpLCBTSUdOQUwobG9hZFN0YXJ0ZWQoKSksIHRoaXMs
IFNMT1QodG91Y2hWaWV3TG9hZFN0YXJ0ZWQoKSkpOworICAgIGNvbm5lY3QodG91Y2hXZWJWaWV3
KCksIFNJR05BTChsb2FkU3VjY2VlZGVkKCkpLCB0aGlzLCBTTE9UKHRvdWNoVmlld0xvYWRTdWNj
ZWVkZWQoKSkpOworICAgIGNvbm5lY3QodG91Y2hXZWJWaWV3KCksIFNJR05BTChsb2FkRmFpbGVk
KFFCYXNlV2ViVmlldzo6RXJyb3JUeXBlLCBpbnQsIGNvbnN0IFFVcmwmKSksIHRoaXMsIFNMT1Qo
dG91Y2hWaWV3TG9hZEZhaWxlZChRQmFzZVdlYlZpZXc6OkVycm9yVHlwZSwgaW50LCBjb25zdCBR
VXJsJikpKTsKKyAgICBjb25uZWN0KHRvdWNoV2ViVmlldygpLCBTSUdOQUwobG9hZFByb2dyZXNz
Q2hhbmdlZChpbnQpKSwgdGhpcywgU0xPVCh0b3VjaFZpZXdMb2FkUHJvZ3Jlc3NDaGFuZ2VkKGlu
dCkpKTsKIAogICAgIHNjcmVlbkhhbGYubW92ZUxlZnQoc2NyZWVuSGFsZi5yaWdodCgpKTsKICAg
ICBtX2Rlc2t0b3BXZWJWaWV3V2luZG93LnNldEdlb21ldHJ5KHNjcmVlbkhhbGYpOwogICAgIG1f
ZGVza3RvcFdlYlZpZXdXaW5kb3cuc2V0V2luZG93VGl0bGUoUUxhdGluMVN0cmluZygiRGVza3Rv
cFdlYlZpZXciKSk7CiAgICAgY29ubmVjdChkZXNrdG9wV2ViVmlldygpLCBTSUdOQUwobG9hZFN0
YXJ0ZWQoKSksIHRoaXMsIFNMT1QoZGVza3RvcFZpZXdMb2FkU3RhcnRlZCgpKSk7CiAgICAgY29u
bmVjdChkZXNrdG9wV2ViVmlldygpLCBTSUdOQUwobG9hZFN1Y2NlZWRlZCgpKSwgdGhpcywgU0xP
VChkZXNrdG9wVmlld0xvYWRTdWNjZWVkZWQoKSkpOwotICAgIGNvbm5lY3QoZGVza3RvcFdlYlZp
ZXcoKSwgU0lHTkFMKGxvYWRGYWlsZWQoUURlc2t0b3BXZWJWaWV3OjpFcnJvclR5cGUsIGludCwg
Y29uc3QgUVVybCYpKSwgdGhpcywgU0xPVChkZXNrdG9wVmlld0xvYWRGYWlsZWQoUURlc2t0b3BX
ZWJWaWV3OjpFcnJvclR5cGUsIGludCwgY29uc3QgUVVybCYpKSk7CisgICAgY29ubmVjdChkZXNr
dG9wV2ViVmlldygpLCBTSUdOQUwobG9hZEZhaWxlZChRQmFzZVdlYlZpZXc6OkVycm9yVHlwZSwg
aW50LCBjb25zdCBRVXJsJikpLCB0aGlzLCBTTE9UKGRlc2t0b3BWaWV3TG9hZEZhaWxlZChRQmFz
ZVdlYlZpZXc6OkVycm9yVHlwZSwgaW50LCBjb25zdCBRVXJsJikpKTsKICAgICBjb25uZWN0KGRl
c2t0b3BXZWJWaWV3KCksIFNJR05BTChsb2FkUHJvZ3Jlc3NDaGFuZ2VkKGludCkpLCB0aGlzLCBT
TE9UKGRlc2t0b3BWaWV3TG9hZFByb2dyZXNzQ2hhbmdlZChpbnQpKSk7CiB9CiAKQEAgLTYyLDEz
ICs2MiwxMyBAQCB2b2lkIFdlYlZpZXdBYnN0cmFjdGlvbjo6aGlkZSgpCiAKIHZvaWQgV2ViVmll
d0Fic3RyYWN0aW9uOjpsb2FkKGNvbnN0IFFVcmwmIHVybCkKIHsKLSAgICB0b3VjaFdlYlZpZXco
KS0+cGFnZSgpLT5sb2FkKHVybCk7CisgICAgdG91Y2hXZWJWaWV3KCktPmxvYWQodXJsKTsKICAg
ICBkZXNrdG9wV2ViVmlldygpLT5sb2FkKHVybCk7CiB9CiAKIGJvb2wgV2ViVmlld0Fic3RyYWN0
aW9uOjp1cmwoUVVybCYgdXJsKSBjb25zdAogewotICAgIGNvbnN0IFFVcmwgdG91Y2hWaWV3VXJs
ID0gdG91Y2hXZWJWaWV3KCktPnBhZ2UoKS0+dXJsKCk7CisgICAgY29uc3QgUVVybCB0b3VjaFZp
ZXdVcmwgPSB0b3VjaFdlYlZpZXcoKS0+dXJsKCk7CiAgICAgY29uc3QgUVVybCBkZXNrdG9wVmll
d1VybCA9IGRlc2t0b3BXZWJWaWV3KCktPnVybCgpOwogCiAgICAgaWYgKHRvdWNoVmlld1VybCAh
PSBkZXNrdG9wVmlld1VybCkgewpAQCAtODQsNyArODQsNyBAQCBib29sIFdlYlZpZXdBYnN0cmFj
dGlvbjo6dXJsKFFVcmwmIHVybCkgY29uc3QKIAogaW50IFdlYlZpZXdBYnN0cmFjdGlvbjo6bG9h
ZFByb2dyZXNzKCkgY29uc3QKIHsKLSAgICBpbnQgdG91Y2hWaWV3UHJvZ3Jlc3MgPSB0b3VjaFdl
YlZpZXcoKS0+cGFnZSgpLT5sb2FkUHJvZ3Jlc3MoKTsKKyAgICBpbnQgdG91Y2hWaWV3UHJvZ3Jl
c3MgPSB0b3VjaFdlYlZpZXcoKS0+bG9hZFByb2dyZXNzKCk7CiAgICAgaW50IGRlc2t0b3BWaWV3
UHJvZ3Jlc3MgPSBkZXNrdG9wV2ViVmlldygpLT5sb2FkUHJvZ3Jlc3MoKTsKIAogICAgIGlmICh0
b3VjaFZpZXdQcm9ncmVzcyAhPSBkZXNrdG9wVmlld1Byb2dyZXNzKSB7CkBAIC05OSwyNSArOTks
MjUgQEAgaW50IFdlYlZpZXdBYnN0cmFjdGlvbjo6bG9hZFByb2dyZXNzKCkgY29uc3QKIAogdm9p
ZCBXZWJWaWV3QWJzdHJhY3Rpb246OmdvQmFjaygpCiB7Ci0gICAgdG91Y2hXZWJWaWV3KCktPnBh
Z2UoKS0+bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+Z29CYWNrKCk7CisgICAgdG91Y2hXZWJWaWV3
KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPmdvQmFjaygpOwogICAgIGRlc2t0b3BXZWJWaWV3
KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPmdvQmFjaygpOwogfQogCiB2b2lkIFdlYlZpZXdB
YnN0cmFjdGlvbjo6Z29Gb3J3YXJkKCkKIHsKLSAgICB0b3VjaFdlYlZpZXcoKS0+cGFnZSgpLT5u
YXZpZ2F0aW9uQ29udHJvbGxlcigpLT5nb0ZvcndhcmQoKTsKKyAgICB0b3VjaFdlYlZpZXcoKS0+
bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+Z29Gb3J3YXJkKCk7CiAgICAgZGVza3RvcFdlYlZpZXco
KS0+bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+Z29Gb3J3YXJkKCk7CiB9CiAKIHZvaWQgV2ViVmll
d0Fic3RyYWN0aW9uOjpzdG9wKCkKIHsKLSAgICB0b3VjaFdlYlZpZXcoKS0+cGFnZSgpLT5uYXZp
Z2F0aW9uQ29udHJvbGxlcigpLT5zdG9wKCk7CisgICAgdG91Y2hXZWJWaWV3KCktPm5hdmlnYXRp
b25Db250cm9sbGVyKCktPnN0b3AoKTsKICAgICBkZXNrdG9wV2ViVmlldygpLT5uYXZpZ2F0aW9u
Q29udHJvbGxlcigpLT5zdG9wKCk7CiB9CiAKIHZvaWQgV2ViVmlld0Fic3RyYWN0aW9uOjpyZWxv
YWQoKQogewotICAgIHRvdWNoV2ViVmlldygpLT5wYWdlKCktPm5hdmlnYXRpb25Db250cm9sbGVy
KCktPnJlbG9hZCgpOworICAgIHRvdWNoV2ViVmlldygpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigp
LT5yZWxvYWQoKTsKICAgICBkZXNrdG9wV2ViVmlldygpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigp
LT5yZWxvYWQoKTsKIH0KIApAQCAtMTQ5LDE3ICsxNDksMTcgQEAgdm9pZCBXZWJWaWV3QWJzdHJh
Y3Rpb246OmRlc2t0b3BWaWV3TG9hZFN1Y2NlZWRlZCgpCiAgICAgICAgIGVtaXQgbG9hZFN1Y2Nl
ZWRlZCgpOwogfQogCi12b2lkIFdlYlZpZXdBYnN0cmFjdGlvbjo6dG91Y2hWaWV3TG9hZEZhaWxl
ZChRVG91Y2hXZWJQYWdlOjpFcnJvclR5cGUgZXJyb3JUeXBlLCBpbnQgZXJyb3JDb2RlLCBjb25z
dCBRVXJsJiB1cmwpCit2b2lkIFdlYlZpZXdBYnN0cmFjdGlvbjo6dG91Y2hWaWV3TG9hZEZhaWxl
ZChRQmFzZVdlYlZpZXc6OkVycm9yVHlwZSBlcnJvclR5cGUsIGludCBlcnJvckNvZGUsIGNvbnN0
IFFVcmwmIHVybCkKIHsKLSAgICBtX3RvdWNoVmlld1NpZ25hbHNDb3VudGVyW1NJR05BTChsb2Fk
RmFpbGVkKFFUb3VjaFdlYlBhZ2U6OkVycm9yVHlwZSwgaW50LCBjb25zdCBRVXJsJikpXSsrOwot
ICAgIGlmIChtX3RvdWNoVmlld1NpZ25hbHNDb3VudGVyW1NJR05BTChsb2FkRmFpbGVkKFFUb3Vj
aFdlYlBhZ2U6OkVycm9yVHlwZSwgaW50LCBjb25zdCBRVXJsJikpXSA9PSBtX2Rlc2t0b3BWaWV3
U2lnbmFsc0NvdW50ZXJbU0lHTkFMKGxvYWRGYWlsZWQoUVRvdWNoV2ViUGFnZTo6RXJyb3JUeXBl
LCBpbnQsIFFVcmwpKV0pCi0gICAgICAgIGVtaXQgbG9hZEZhaWxlZChzdGF0aWNfY2FzdDxRRGVz
a3RvcFdlYlZpZXc6OkVycm9yVHlwZT4oZXJyb3JUeXBlKSwgZXJyb3JDb2RlLCB1cmwpOworICAg
IG1fdG91Y2hWaWV3U2lnbmFsc0NvdW50ZXJbU0lHTkFMKGxvYWRGYWlsZWQoUUJhc2VXZWJWaWV3
OjpFcnJvclR5cGUsIGludCwgY29uc3QgUVVybCYpKV0rKzsKKyAgICBpZiAobV90b3VjaFZpZXdT
aWduYWxzQ291bnRlcltTSUdOQUwobG9hZEZhaWxlZChRQmFzZVdlYlZpZXc6OkVycm9yVHlwZSwg
aW50LCBjb25zdCBRVXJsJikpXSA9PSBtX2Rlc2t0b3BWaWV3U2lnbmFsc0NvdW50ZXJbU0lHTkFM
KGxvYWRGYWlsZWQoUUJhc2VXZWJWaWV3OjpFcnJvclR5cGUsIGludCwgUVVybCkpXSkKKyAgICAg
ICAgZW1pdCBsb2FkRmFpbGVkKHN0YXRpY19jYXN0PFFCYXNlV2ViVmlldzo6RXJyb3JUeXBlPihl
cnJvclR5cGUpLCBlcnJvckNvZGUsIHVybCk7CiB9CiAKLXZvaWQgV2ViVmlld0Fic3RyYWN0aW9u
OjpkZXNrdG9wVmlld0xvYWRGYWlsZWQoUURlc2t0b3BXZWJWaWV3OjpFcnJvclR5cGUgZXJyb3JU
eXBlLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBRVXJsJiB1cmwpCit2b2lkIFdlYlZpZXdBYnN0cmFj
dGlvbjo6ZGVza3RvcFZpZXdMb2FkRmFpbGVkKFFCYXNlV2ViVmlldzo6RXJyb3JUeXBlIGVycm9y
VHlwZSwgaW50IGVycm9yQ29kZSwgY29uc3QgUVVybCYgdXJsKQogewotICAgIG1fZGVza3RvcFZp
ZXdTaWduYWxzQ291bnRlcltTSUdOQUwobG9hZEZhaWxlZChRRGVza3RvcFdlYlZpZXc6OkVycm9y
VHlwZSwgaW50LCBjb25zdCBRVXJsJikpXSsrOwotICAgIGlmIChtX3RvdWNoVmlld1NpZ25hbHND
b3VudGVyW1NJR05BTChsb2FkRmFpbGVkKFFEZXNrdG9wV2ViVmlldzo6RXJyb3JUeXBlLCBpbnQs
IGNvbnN0IFFVcmwmKSldID09IG1fZGVza3RvcFZpZXdTaWduYWxzQ291bnRlcltTSUdOQUwobG9h
ZEZhaWxlZChRRGVza3RvcFdlYlZpZXc6OkVycm9yVHlwZSwgaW50LCBRVXJsKSldKQorICAgIG1f
ZGVza3RvcFZpZXdTaWduYWxzQ291bnRlcltTSUdOQUwobG9hZEZhaWxlZChRQmFzZVdlYlZpZXc6
OkVycm9yVHlwZSwgaW50LCBjb25zdCBRVXJsJikpXSsrOworICAgIGlmIChtX3RvdWNoVmlld1Np
Z25hbHNDb3VudGVyW1NJR05BTChsb2FkRmFpbGVkKFFCYXNlV2ViVmlldzo6RXJyb3JUeXBlLCBp
bnQsIGNvbnN0IFFVcmwmKSldID09IG1fZGVza3RvcFZpZXdTaWduYWxzQ291bnRlcltTSUdOQUwo
bG9hZEZhaWxlZChRQmFzZVdlYlZpZXc6OkVycm9yVHlwZSwgaW50LCBRVXJsKSldKQogICAgICAg
ICBlbWl0IGxvYWRGYWlsZWQoZXJyb3JUeXBlLCBlcnJvckNvZGUsIHVybCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rl
c3RzL3dlYnZpZXdhYnN0cmFjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vidmlld2Fic3RyYWN0aW9uLmgKaW5kZXggY2Q0NmFl
OTljZGI3ZjJiMzU3MjIxNGM3MDZkYTMyM2U0NDk1ZTFhZi4uY2ZjYjQ0MTYwYTM3NTYzOTFkOTdm
YzRiYjgyNjgyNTY0ZDg0MWRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vidmlld2Fic3RyYWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vi
dmlld2Fic3RyYWN0aW9uLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogUV9TSUdOQUxTOgog
ICAgIHZvaWQgbG9hZFN0YXJ0ZWQoKTsKICAgICB2b2lkIGxvYWRTdWNjZWVkZWQoKTsKLSAgICB2
b2lkIGxvYWRGYWlsZWQoUURlc2t0b3BXZWJWaWV3OjpFcnJvclR5cGUsIGludCwgY29uc3QgUVVy
bCYpOworICAgIHZvaWQgbG9hZEZhaWxlZChRQmFzZVdlYlZpZXc6OkVycm9yVHlwZSwgaW50LCBj
b25zdCBRVXJsJik7CiAgICAgdm9pZCBsb2FkUHJvZ3Jlc3NDaGFuZ2VkKGludCk7CiAKIHByaXZh
dGUgUV9TTE9UUzoKQEAgLTU3LDggKzU3LDggQEAgcHJpdmF0ZSBRX1NMT1RTOgogICAgIHZvaWQg
ZGVza3RvcFZpZXdMb2FkU3RhcnRlZCgpOwogICAgIHZvaWQgdG91Y2hWaWV3TG9hZFN1Y2NlZWRl
ZCgpOwogICAgIHZvaWQgZGVza3RvcFZpZXdMb2FkU3VjY2VlZGVkKCk7Ci0gICAgdm9pZCB0b3Vj
aFZpZXdMb2FkRmFpbGVkKFFUb3VjaFdlYlBhZ2U6OkVycm9yVHlwZSwgaW50LCBjb25zdCBRVXJs
Jik7Ci0gICAgdm9pZCBkZXNrdG9wVmlld0xvYWRGYWlsZWQoUURlc2t0b3BXZWJWaWV3OjpFcnJv
clR5cGUsIGludCwgY29uc3QgUVVybCYpOworICAgIHZvaWQgdG91Y2hWaWV3TG9hZEZhaWxlZChR
QmFzZVdlYlZpZXc6OkVycm9yVHlwZSwgaW50LCBjb25zdCBRVXJsJik7CisgICAgdm9pZCBkZXNr
dG9wVmlld0xvYWRGYWlsZWQoUUJhc2VXZWJWaWV3OjpFcnJvclR5cGUsIGludCwgY29uc3QgUVVy
bCYpOwogICAgIHZvaWQgdG91Y2hWaWV3TG9hZFByb2dyZXNzQ2hhbmdlZChpbnQpOwogICAgIHZv
aWQgZGVza3RvcFZpZXdMb2FkUHJvZ3Jlc3NDaGFuZ2VkKGludCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRvdWNod2Vidmlldy90c3RfcXRv
dWNod2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0
b3VjaHdlYnZpZXcvdHN0X3F0b3VjaHdlYnZpZXcuY3BwCmluZGV4IDU5NDY5NTdmODY1ZTZlZTUw
YTc5NDY5MmNiN2NiNTI0YmJlMDI4ZGYuLmFlZTk1ZjE1ZTRkNjI3MTgwNjRhNDg0ZjJmNGE2MTUy
NWU4NmFhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvcXRvdWNod2Vidmlldy90c3RfcXRvdWNod2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xdG91Y2h3ZWJ2aWV3L3RzdF9xdG91Y2h3ZWJ2aWV3
LmNwcApAQCAtNzQsMTMgKzc0LDEzIEBAIHZvaWQgdHN0X1FUb3VjaFdlYlZpZXc6OmFjY2Vzc1Bh
Z2UoKQogCiB2b2lkIHRzdF9RVG91Y2hXZWJWaWV3OjpuYXZpZ2F0aW9uU3RhdHVzQXRTdGFydHVw
KCkKIHsKLSAgICBRQ09NUEFSRSh3ZWJWaWV3KCktPnBhZ2UoKS0+bmF2aWdhdGlvbkNvbnRyb2xs
ZXIoKS0+Y2FuR29CYWNrKCksIGZhbHNlKTsKKyAgICBRQ09NUEFSRSh3ZWJWaWV3KCktPm5hdmln
YXRpb25Db250cm9sbGVyKCktPmNhbkdvQmFjaygpLCBmYWxzZSk7CiAKLSAgICBRQ09NUEFSRSh3
ZWJWaWV3KCktPnBhZ2UoKS0+bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+Y2FuR29Gb3J3YXJkKCks
IGZhbHNlKTsKKyAgICBRQ09NUEFSRSh3ZWJWaWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCkt
PmNhbkdvRm9yd2FyZCgpLCBmYWxzZSk7CiAKLSAgICBRQ09NUEFSRSh3ZWJWaWV3KCktPnBhZ2Uo
KS0+bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+Y2FuU3RvcCgpLCBmYWxzZSk7CisgICAgUUNPTVBB
UkUod2ViVmlldygpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5jYW5TdG9wKCksIGZhbHNlKTsK
IAotICAgIFFDT01QQVJFKHdlYlZpZXcoKS0+cGFnZSgpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigp
LT5jYW5SZWxvYWQoKSwgZmFsc2UpOworICAgIFFDT01QQVJFKHdlYlZpZXcoKS0+bmF2aWdhdGlv
bkNvbnRyb2xsZXIoKS0+Y2FuUmVsb2FkKCksIGZhbHNlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREZXNrdG9wV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuY3BwCmluZGV4
IDJkYWYwNjU1MTkwYmQwMWYzNTE1MjMwZDg2NTZhNDVjMGI1ZGFiZWMuLjM4OGI2MDJkYjk4N2Rm
YjU5Yzk0ZTA5MjZjYWM2MzQ5NWE1YzQwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuY3BwCkBAIC04Niw3ICs4Niw3IEBA
IHZvaWQgUXREZXNrdG9wV2ViUGFnZVByb3h5Ojpkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0
aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wKIAogUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4g
UXREZXNrdG9wV2ViUGFnZVByb3h5OjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkq
KQogewotICAgIFFRdWlja0l0ZW0qIHdlYlZpZXdJdGVtID0gc3RhdGljX2Nhc3Q8UURlc2t0b3BX
ZWJWaWV3UHJpdmF0ZSo+KG1fdmlld0ludGVyZmFjZSktPnE7CisgICAgUVF1aWNrSXRlbSogd2Vi
Vmlld0l0ZW0gPSBzdGF0aWNfY2FzdDxRRGVza3RvcFdlYlZpZXdQcml2YXRlKj4obV92aWV3SW50
ZXJmYWNlKS0+d2ViVmlldygpOwogICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eVF0RGVza3Rv
cDo6Y3JlYXRlKG1fd2ViUGFnZVByb3h5LmdldCgpLCB3ZWJWaWV3SXRlbSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFRvdWNoVmlld0ludGVyZmFjZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRUb3VjaFZpZXdJbnRlcmZhY2UuY3Bw
CmluZGV4IGMyZDIzYmY5ZGU0MGZhYjcwMjYzM2UwODQwMGMxMzcyYmQyODI3ZTAuLmY5ZjliOTYw
NjgxMWQ3M2Y3NTQwOTI1ZGRmNTEwYjAxY2UyNzNmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFRvdWNoVmlld0ludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50ZXJmYWNlLmNwcApAQCAtODksMTcgKzg5
LDE3IEBAIHZvaWQgUXRUb3VjaFZpZXdJbnRlcmZhY2U6OnN0YXJ0RHJhZyhRdDo6RHJvcEFjdGlv
bnMgc3VwcG9ydGVkRHJvcEFjdGlvbnMsIGNvbnN0CiAKIHZvaWQgUXRUb3VjaFZpZXdJbnRlcmZh
Y2U6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFy
Z3VtZW50cyYgYXJncykKIHsKLSAgICBtX3ZpZXdwb3J0Vmlldy0+ZC0+ZGlkQ2hhbmdlVmlld3Bv
cnRQcm9wZXJ0aWVzKGFyZ3MpOworICAgIG1fdmlld3BvcnRWaWV3LT5kX2Z1bmMoKS0+ZGlkQ2hh
bmdlVmlld3BvcnRQcm9wZXJ0aWVzKGFyZ3MpOwogfQogCiB2b2lkIFF0VG91Y2hWaWV3SW50ZXJm
YWNlOjpkaWRDaGFuZ2VVcmwoY29uc3QgUVVybCYgdXJsKQogewotICAgIGVtaXQgbV9wYWdlVmll
dy0+dXJsQ2hhbmdlZCh1cmwpOworICAgIGVtaXQgbV92aWV3cG9ydFZpZXctPnVybENoYW5nZWQo
dXJsKTsKIH0KIAogdm9pZCBRdFRvdWNoVmlld0ludGVyZmFjZTo6ZGlkQ2hhbmdlVGl0bGUoY29u
c3QgUVN0cmluZyYgbmV3VGl0bGUpCiB7Ci0gICAgZW1pdCBtX3BhZ2VWaWV3LT50aXRsZUNoYW5n
ZWQobmV3VGl0bGUpOworICAgIGVtaXQgbV92aWV3cG9ydFZpZXctPnRpdGxlQ2hhbmdlZChuZXdU
aXRsZSk7CiB9CiAKIHZvaWQgUXRUb3VjaFZpZXdJbnRlcmZhY2U6OmRpZENoYW5nZVRvb2xUaXAo
Y29uc3QgUVN0cmluZyYpCkBAIC0xMTksMjcgKzExOSwyNyBAQCB2b2lkIFF0VG91Y2hWaWV3SW50
ZXJmYWNlOjpkaWRDaGFuZ2VDdXJzb3IoY29uc3QgUUN1cnNvciYpCiAKIHZvaWQgUXRUb3VjaFZp
ZXdJbnRlcmZhY2U6OmxvYWREaWRCZWdpbigpCiB7Ci0gICAgZW1pdCBtX3BhZ2VWaWV3LT5sb2Fk
U3RhcnRlZCgpOworICAgIGVtaXQgbV92aWV3cG9ydFZpZXctPmxvYWRTdGFydGVkKCk7CiB9CiAK
IHZvaWQgUXRUb3VjaFZpZXdJbnRlcmZhY2U6OmxvYWREaWRDb21taXQoKQogewotICAgIG1fdmll
d3BvcnRWaWV3LT5kLT5sb2FkRGlkQ29tbWl0KCk7CisgICAgbV92aWV3cG9ydFZpZXctPmRfZnVu
YygpLT5sb2FkRGlkQ29tbWl0KCk7CiB9CiAKIHZvaWQgUXRUb3VjaFZpZXdJbnRlcmZhY2U6Omxv
YWREaWRTdWNjZWVkKCkKIHsKLSAgICBlbWl0IG1fcGFnZVZpZXctPmxvYWRTdWNjZWVkZWQoKTsK
KyAgICBlbWl0IG1fdmlld3BvcnRWaWV3LT5sb2FkU3VjY2VlZGVkKCk7CiB9CiAKIHZvaWQgUXRU
b3VjaFZpZXdJbnRlcmZhY2U6OmxvYWREaWRGYWlsKGNvbnN0IFF0V2ViRXJyb3ImIGVycm9yKQog
ewotICAgIGVtaXQgbV9wYWdlVmlldy0+bG9hZEZhaWxlZChzdGF0aWNfY2FzdDxRVG91Y2hXZWJQ
YWdlOjpFcnJvclR5cGU+KGVycm9yLnR5cGUoKSksIGVycm9yLmVycm9yQ29kZSgpLCBlcnJvci51
cmwoKSk7CisgICAgZW1pdCBtX3ZpZXdwb3J0Vmlldy0+bG9hZEZhaWxlZChzdGF0aWNfY2FzdDxR
QmFzZVdlYlZpZXc6OkVycm9yVHlwZT4oZXJyb3IudHlwZSgpKSwgZXJyb3IuZXJyb3JDb2RlKCks
IGVycm9yLnVybCgpKTsKIH0KIAogdm9pZCBRdFRvdWNoVmlld0ludGVyZmFjZTo6ZGlkQ2hhbmdl
TG9hZFByb2dyZXNzKGludCBwZXJjZW50YWdlTG9hZGVkKQogewotICAgIGVtaXQgbV9wYWdlVmll
dy0+bG9hZFByb2dyZXNzQ2hhbmdlZChwZXJjZW50YWdlTG9hZGVkKTsKKyAgICBlbWl0IG1fdmll
d3BvcnRWaWV3LT5sb2FkUHJvZ3Jlc3NDaGFuZ2VkKHBlcmNlbnRhZ2VMb2FkZWQpOwogfQogCiB2
b2lkIFF0VG91Y2hWaWV3SW50ZXJmYWNlOjpzaG93Q29udGV4dE1lbnUoUVNoYXJlZFBvaW50ZXI8
UU1lbnU+KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnByaQppbmRleCA2NmVjZDc5ZDc2ZDA5ODNjNjc3YzEzYzhk
YzdkYjYwMGJiYTQ0OGUxLi41MTg1OTU3NjJlZDA3NTgzODliMTliZmQyOTgzODNkMTQ4NmU4ODkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnByaQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyQVBJLnByaQpAQCAtNDgsNiArNDgsNyBAQCBXRUJLSVQyX0FQSV9TT1VS
Q0VTID0gXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291
cmNlQ2FjaGVNYW5hZ2VyLmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9jcHAvcXQvV0tTdHJpbmdRdC5jcHAgXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQuY3BwIFwKKyAgICAkJFNPVVJDRV9ESVIvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FiYXNld2Vidmlldy5jcHAgXAogICAgICQkU09VUkNFX0RJUi9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcCBcCiAgICAgJCRTT1VS
Q0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmNwcCBcCiAgICAg
JCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcCBc
CkBAIC0xMjgsNiArMTI5LDggQEAgV0VCS0lUMl9BUElfSEVBREVSUyArPSBcCiAgICAgJCRTT1VS
Q0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvV0tSZXRhaW5QdHIuaCBcCiAgICAgJCRT
T1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tTdHJpbmdRdC5oIFwKICAg
ICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1VSTFF0LmggXAor
ICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWJhc2V3ZWJ2aWV3Lmgg
XAorICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWJhc2V3ZWJ2aWV3
X3AuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3Rv
cHdlYnZpZXcuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
ZGVza3RvcHdlYnZpZXdfcC5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJwcmVmZXJlbmNlcy5oIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5Y2JhZDA4MWE3NjM2NTFlZjJhMjNiMzY2YzBlOTJkNjk0
ZmVlNzU4Li44NmJkOTQ0NTE2NTkzYWIzYzU5NmM4N2IzYmJlMmQ2ZTgwMzgwODhjIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcg
QEAKIDIwMTEtMTEtMDEgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lh
LmNvbT4KIAorICAgICAgICBbUXRdIE1lcmdlIGNvbW1vbiBkZXNrdG9wIGFuZCB0b3VjaCB2aWV3
IEFQSXMgdW5kZXIgYSBiYXNlIGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzEyODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdmUgdW5uZWRlZCBmb3J3YXJkaW5nIGxvZ2ljIGZvciBUb3Vj
aFdlYlZpZXcgc2luY2UgdGhvc2UgcHJvcGVydGllcyBhcmUKKyAgICAgICAgbm93IGluIHRoZSB2
aWV3IGp1c3QgYXMgdGhlIGRlc2t0b3Agd2ViIHZpZXcuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nl
ci9xdC9xbWwvVG91Y2hWaWV3LnFtbDoKKworMjAxMS0xMS0wMSAgSm9jZWx5biBUdXJjb3R0ZSAg
PGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgorCiAgICAgICAgIGNoZWNrLXdlYmtpdC1zdHls
ZTogQWxsb3cgbmFtZXMgc3RhcnRpbmcgd2l0aCAiX3FfIi4KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNjI1CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL3F0L3FtbC9Ub3VjaFZpZXcucW1sIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1s
L1RvdWNoVmlldy5xbWwKaW5kZXggNTUwYzI0ZmQxMTQ5MzM3NjNlYWI3MjIzYjZlNGJhN2FhODky
MDg3ZS4uNTFhZmRiMDcwMDFiOTZmMmZmNTI3YjllMDJiOWFjNmZiMTgxMGQ3YyAxMDA2NDQKLS0t
IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL1RvdWNoVmlldy5xbWwKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvcW1sL1RvdWNoVmlldy5xbWwKQEAgLTIsMTYgKzIsNyBAQCBpbXBvcnQgUXRR
dWljayAyLjAKIGltcG9ydCBRdFdlYktpdCAzLjAKIAogVG91Y2hXZWJWaWV3IHsKLSAgICBpZDog
d2ViVmlldwotICAgIHByb3BlcnR5IHZhcmlhbnQgbmF2aWdhdGlvbjogd2ViVmlldy5wYWdlLm5h
dmlnYXRpb24KLSAgICBwcm9wZXJ0eSBzdHJpbmcgdXJsOiB3ZWJWaWV3LnBhZ2UudXJsCi0gICAg
cHJvcGVydHkgaW50IGxvYWRQcm9ncmVzczogd2ViVmlldy5wYWdlLmxvYWRQcm9ncmVzcwotICAg
IHByb3BlcnR5IHN0cmluZyB0aXRsZTogd2ViVmlldy5wYWdlLnRpdGxlCiAgICAgc2lnbmFsIG5h
dmlnYXRpb25TdGF0ZUNoYW5nZWQKIAotICAgIGZ1bmN0aW9uIGxvYWQoYWRkcmVzcykgewotICAg
ICAgICBwYWdlLmxvYWQoYWRkcmVzcykKLSAgICB9Ci0KLSAgICBDb21wb25lbnQub25Db21wbGV0
ZWQ6IHBhZ2UubmF2aWdhdGlvbi5uYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkLmNvbm5lY3QobmF2aWdh
dGlvblN0YXRlQ2hhbmdlZCkKKyAgICBDb21wb25lbnQub25Db21wbGV0ZWQ6IG5hdmlnYXRpb24u
bmF2aWdhdGlvblN0YXRlQ2hhbmdlZC5jb25uZWN0KG5hdmlnYXRpb25TdGF0ZUNoYW5nZWQpCiB9
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>