<?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>145908</bug_id>
          
          <creation_ts>2015-06-12 02:01:03 -0700</creation_ts>
          <short_desc>[Win] Implement WebViewGroup to support WebView::addxxxToGroup()</short_desc>
          <delta_ts>2015-06-26 18:49:28 -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>WebKit Misc.</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>146068</dependson>
          <blocked>140258</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hyungwook Lee">hyungwook.lee</reporter>
          <assigned_to name="Hyungwook Lee">hyungwook.lee</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1101501</commentid>
    <comment_count>0</comment_count>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-12 02:01:03 -0700</bug_when>
    <thetext>We need to implement WebViewGroup for supporting WebView::addUserScriptToGroup(), WebView::addUserStyleSheetToGroup() API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101510</commentid>
    <comment_count>1</comment_count>
      <attachid>254782</attachid>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-12 02:37:24 -0700</bug_when>
    <thetext>Created attachment 254782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101599</commentid>
    <comment_count>2</comment_count>
      <attachid>254782</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-06-12 09:17:08 -0700</bug_when>
    <thetext>Comment on attachment 254782
Patch

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

This looks great! But I do not like duplicating the WebViewGroup code. Please move it to a common location (as I outline in the review comments). Otherwise, this looks great!

r- simply because I don&apos;t want to duplicate that WebViewGroup implementation. Otherwise, this is perfect.

&gt; Source/WebKit/win/WebView.cpp:3703
&gt;  HRESULT STDMETHODCALLTYPE WebView::setGroupName( 

FYI, I&apos;ve been trying to remove these STDMETHODCALLTYPE declarations in the implementation files. They don&apos;t serve any purpose (we only need them in the header).

&gt; Source/WebKit/win/WebCoreSupport/WebViewGroup.cpp:25
&gt; + */

It&apos;s silly to duplicate this file -- we&apos;re just going to end up forgetting to update one of the copies of this content. Please do the following:

1. Create a new folder &quot;Source/WebKit/WebCoreSupport&quot;
2. Move the original file (&quot;svn mv&quot; so we don&apos;t lose history) &quot;svn mv Source/WebKit/mac/WebCoreSupport/WebViewGroup.mm Source/WebKit/WebCoreSupport/WebViewGroup.cpp&quot;
3. Ditto for the header.
4. Update the WebKit.xcodeproj/projects.pbxproj to point to the new location.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101728</commentid>
    <comment_count>3</comment_count>
      <attachid>254782</attachid>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-12 15:49:44 -0700</bug_when>
    <thetext>Comment on attachment 254782
Patch

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

&gt;&gt; Source/WebKit/win/WebCoreSupport/WebViewGroup.cpp:25
&gt;&gt; + */
&gt; 
&gt; It&apos;s silly to duplicate this file -- we&apos;re just going to end up forgetting to update one of the copies of this content. Please do the following:
&gt; 
&gt; 1. Create a new folder &quot;Source/WebKit/WebCoreSupport&quot;
&gt; 2. Move the original file (&quot;svn mv&quot; so we don&apos;t lose history) &quot;svn mv Source/WebKit/mac/WebCoreSupport/WebViewGroup.mm Source/WebKit/WebCoreSupport/WebViewGroup.cpp&quot;
&gt; 3. Ditto for the header.
&gt; 4. Update the WebKit.xcodeproj/projects.pbxproj to point to the new location.

I got your point.
I will update it as your guide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101818</commentid>
    <comment_count>4</comment_count>
      <attachid>254854</attachid>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-13 06:55:18 -0700</bug_when>
    <thetext>Created attachment 254854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101819</commentid>
    <comment_count>5</comment_count>
      <attachid>254855</attachid>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-13 07:04:30 -0700</bug_when>
    <thetext>Created attachment 254855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101820</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-13 07:06:33 -0700</bug_when>
    <thetext>Attachment 254855 did not pass style-queue:


ERROR: Source/WebKit/WebCoreSupport/WebViewGroup.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 13 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>1102255</commentid>
    <comment_count>7</comment_count>
      <attachid>254855</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-06-16 10:09:32 -0700</bug_when>
    <thetext>Comment on attachment 254855
Patch

r=me. Thank you! This looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102456</commentid>
    <comment_count>8</comment_count>
      <attachid>254855</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-16 20:31:33 -0700</bug_when>
    <thetext>Comment on attachment 254855
Patch

Clearing flags on attachment: 254855

Committed r185636: &lt;http://trac.webkit.org/changeset/185636&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102457</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-16 20:31:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102582</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-06-17 10:09:46 -0700</bug_when>
    <thetext>This has caused many crashes on Windows, rolling out.

https://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/r185650%20(52456)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102584</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-17 10:11:46 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 146068</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102840</commentid>
    <comment_count>12</comment_count>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-18 00:53:01 -0700</bug_when>
    <thetext>Sorry to break layout test :(.

There are some cases that doesn&apos;t call WebView::initWithFrame() in Test Runner.
ex) TestRunner::addUserStyleSheet()

Current patch doesn&apos;t consider missing calling WebView::initWithFrame().

I will fix this issue soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102853</commentid>
    <comment_count>13</comment_count>
      <attachid>255101</attachid>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-18 01:41:25 -0700</bug_when>
    <thetext>Created attachment 255101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102855</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-18 01:43:59 -0700</bug_when>
    <thetext>Attachment 255101 did not pass style-queue:


ERROR: Source/WebKit/WebCoreSupport/WebViewGroup.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 13 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>1103288</commentid>
    <comment_count>15</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-06-19 10:45:49 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Attachment 255101 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebKit/WebCoreSupport/WebViewGroup.cpp:26:  Found header this
&gt; file implements before WebCore config.h. Should be: config.h, primary
&gt; header, blank line, and then alphabetically sorted.  [build/include_order]
&gt; [4]
&gt; Total errors found: 1 in 13 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

This patch builds properly. I&apos;m running tests locally to confirm it doesn&apos;t break anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103446</commentid>
    <comment_count>16</comment_count>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-19 15:38:17 -0700</bug_when>
    <thetext>Win port has no problem but Mac port makes compilation.
In my investigation, WK1 Mac port doesn&apos;t uses config.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103447</commentid>
    <comment_count>17</comment_count>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-19 15:39:52 -0700</bug_when>
    <thetext>Win port has no problem but Mac port makes compilation error. 
In my investigation, WK1 Mac port doesn&apos;t uses config.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103466</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-19 16:09:50 -0700</bug_when>
    <thetext>Mac port uses precompiled headers rather than config.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104624</commentid>
    <comment_count>19</comment_count>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-25 03:39:19 -0700</bug_when>
    <thetext>Hi, Brent Fulgham or Darin Adler
Could you review my latest patch which fixed layout test issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104943</commentid>
    <comment_count>20</comment_count>
      <attachid>255101</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-06-26 09:38:51 -0700</bug_when>
    <thetext>Comment on attachment 255101
Patch

Looks good. Let&apos;s try it again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104950</commentid>
    <comment_count>21</comment_count>
      <attachid>255101</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-26 09:46:47 -0700</bug_when>
    <thetext>Comment on attachment 255101
Patch

Clearing flags on attachment: 255101

Committed r185999: &lt;http://trac.webkit.org/changeset/185999&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104951</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-26 09:46:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104957</commentid>
    <comment_count>23</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-06-26 10:01:57 -0700</bug_when>
    <thetext>The tests need to be reenabled (see Bug 140258).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104983</commentid>
    <comment_count>24</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-06-26 11:04:33 -0700</bug_when>
    <thetext>Looks good! All tests continue to pass without any problems. I&apos;ll enable the addxxxToGroup tests soon in Bug 140258.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105114</commentid>
    <comment_count>25</comment_count>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-26 18:23:58 -0700</bug_when>
    <thetext>I&apos;m not yet implement addUserScriptToGroup&apos; (and related) API in WebView.
I&apos;m implementing those API now.

Can I enable the addxxxToGroup tests after implement those API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105116</commentid>
    <comment_count>26</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-06-26 18:31:03 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; I&apos;m not yet implement addUserScriptToGroup&apos; (and related) API in WebView.
&gt; I&apos;m implementing those API now.
&gt; 
&gt; Can I enable the addxxxToGroup tests after implement those API?

Yes. We should start enabling tests as they start working. Did this patch allow us to begin running any tests? Maybe our tests were only about user scripts and so we cannot yet update the TestExpectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105121</commentid>
    <comment_count>27</comment_count>
    <who name="Hyungwook Lee">hyungwook.lee</who>
    <bug_when>2015-06-26 18:49:28 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; I&apos;m not yet implement addUserScriptToGroup&apos; (and related) API in WebView.
&gt; &gt; I&apos;m implementing those API now.
&gt; &gt; 
&gt; &gt; Can I enable the addxxxToGroup tests after implement those API?
&gt; 
&gt; Yes. We should start enabling tests as they start working. Did this patch
&gt; allow us to begin running any tests? Maybe our tests were only about user
&gt; scripts and so we cannot yet update the TestExpectations.

Yes, sure, you can start it.

I&apos;m implement not yet implemented API now such as following.
HRESULT WebView::addUserScriptToGroup(BSTR groupName, IWebScriptWorld* iWorld, BSTR source, BSTR url, 
                                      unsigned whitelistCount, BSTR* whitelist,
                                      unsigned blacklistCount, BSTR* blacklist,
                                      WebUserScriptInjectionTime injectionTime)
{
    return E_NOTIMPL;
}</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254782</attachid>
            <date>2015-06-12 02:37:24 -0700</date>
            <delta_ts>2015-06-13 06:55:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>18355</size>
            <attacher name="Hyungwook Lee">hyungwook.lee</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODU0OTIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA2LTEyICBIeXVuZ3dvb2sg
TGVlICA8aHl1bmd3b29rLmxlZUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtXaW5dIEltcGxl
bWVudCBXZWJWaWV3R3JvdXAgdG8gc3VwcG9ydCBXZWJWaWV3OjphZGR4eHhUb0dyb3VwKCkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU5MDgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViVmll
d0dyb3VwIGZvciBzdXBwb3J0aW5nIFVzZXJDb250ZW50Q29udHJvbGxlciByZWxhdGVkIEFQSXMu
CisKKyAgICAgICAgKiBXZWJLaXQudmN4cHJvai9XZWJLaXQvV2ViS2l0LnZjeHByb2o6CisgICAg
ICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9qLmZpbHRlcnM6CisKIDIw
MTUtMDYtMDkgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBbY21ha2VdIEZpeCB0aGUgc3R5bGUgaXNzdWVzIGluIGNtYWtlIHByb2plY3QgZmlsZXMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52
Y3hwcm9qCShyZXZpc2lvbiAxODU0MDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9q
L1dlYktpdC9XZWJLaXQudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzQxLDYgKzM0MSw3IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcV2ViSW5z
cGVjdG9yQ2xpZW50LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHdpblxX
ZWJDb3JlU3VwcG9ydFxXZWJJbnNwZWN0b3JEZWxlZ2F0ZS5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJDb3JlU3VwcG9y
dFxXZWJWaWV3R3JvdXAuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cd2lu
XFdlYkNvcmVTdXBwb3J0XFdlYlZpc2l0ZWRMaW5rU3RvcmUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYkRhdGFiYXNlTWFuYWdlci5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViRGF0YVNvdXJjZS5jcHAiIC8+CkBAIC00OTgs
NiArNDk5LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJDb3JlU3Vw
cG9ydFxXZWJJbnNwZWN0b3JDbGllbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XC4uXHdpblxXZWJDb3JlU3VwcG9ydFxXZWJJbnNwZWN0b3JEZWxlZ2F0ZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0XFdlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYkNvcmVT
dXBwb3J0XFdlYlZpZXdHcm91cC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5c
d2luXFdlYkNvcmVTdXBwb3J0XFdlYlZpc2l0ZWRMaW5rU3RvcmUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJEYXRhYmFzZU1hbmFnZXIuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJEYXRhU291cmNlLmgiIC8+CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4cHJvai5maWx0ZXJzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52
Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE4NTQwMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0
LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAg
LTMzMyw2ICszMzMsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYktp
dE1lc3NhZ2VMb29wLmNwcCI+CiAgICAgICA8RmlsdGVyPlNvdXJjZXM8L0ZpbHRlcj4KICAgICA8
L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJDb3JlU3Vw
cG9ydFxXZWJWaWV3R3JvdXAuY3BwIj4KKyAgICAgIDxGaWx0ZXI+V2ViQ29yZVN1cHBvcnQ8L0Zp
bHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcRW1iZWRkZWRX
aWRnZXQuaCI+CkBAIC02NTQsNiArNjU3LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XC4uXHdpblxXZWJLaXRNZXNzYWdlTG9vcC5oIj4KICAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwu
Llx3aW5cV2ViQ29yZVN1cHBvcnRcV2ViVmlld0dyb3VwLmgiPgorICAgICAgPEZpbHRlcj5XZWJD
b3JlU3VwcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICA8L0l0ZW1Hcm91cD4KICAg
PEl0ZW1Hcm91cD4KICAgICA8Tm9uZSBJbmNsdWRlPSJXZWJLaXRQb3N0QnVpbGQuY21kIiAvPgpA
QCAtNzQ2LDQgKzc1Miw0IEBACiAgICAgICA8RmlsdGVyPlNvdXJjZXNcUGx1Z2luczwvRmlsdGVy
PgogICAgIDwvTUFTTT4KICAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+Cis8L1Byb2plY3Q+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24g
MTg1NDkyKQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTUtMDYtMTIgIEh5dW5nd29vayBMZWUgIDxoeXVuZ3dvb2subGVl
QG5hdmVyY29ycC5jb20+CisKKyAgICAgICAgW1dpbl0gSW1wbGVtZW50IFdlYlZpZXdHcm91cCB0
byBzdXBwb3J0IFdlYlZpZXc6OmFkZHh4eFRvR3JvdXAoKS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTkwOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXZWJWaWV3R3JvdXAgZm9yIHN1cHBvcnRp
bmcgVXNlckNvbnRlbnRDb250cm9sbGVyIHJlbGF0ZWQgQVBJcy4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHA6IEFkZGVkLgorICAgICAgICAod2ViVmlld0dyb3Vw
cyk6CisgICAgICAgIChXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYlZp
ZXdHcm91cDo6Z2V0KToKKyAgICAgICAgKFdlYlZpZXdHcm91cDo6V2ViVmlld0dyb3VwKToKKyAg
ICAgICAgKFdlYlZpZXdHcm91cDo6fldlYlZpZXdHcm91cCk6CisgICAgICAgIChXZWJWaWV3R3Jv
dXA6OmFkZFdlYlZpZXcpOgorICAgICAgICAoV2ViVmlld0dyb3VwOjpyZW1vdmVXZWJWaWV3KToK
KyAgICAgICAgKFdlYlZpZXdHcm91cDo6c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaDogQWRkZWQuCisgICAgICAgIChXZWJW
aWV3R3JvdXA6OnVzZXJDb250ZW50Q29udHJvbGxlcik6CisgICAgICAgIChXZWJWaWV3R3JvdXA6
OnZpc2l0ZWRMaW5rU3RvcmUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRM
aW5rU3RvcmUuY3BwOgorICAgICAgICAodmlzaXRlZExpbmtTdG9yZXMpOgorICAgICAgICAoV2Vi
VmlzaXRlZExpbmtTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYlZpc2l0ZWRMaW5rU3RvcmU6
OldlYlZpc2l0ZWRMaW5rU3RvcmUpOgorICAgICAgICAoV2ViVmlzaXRlZExpbmtTdG9yZTo6fldl
YlZpc2l0ZWRMaW5rU3RvcmUpOgorICAgICAgICAoV2ViVmlzaXRlZExpbmtTdG9yZTo6c2V0U2hv
dWxkVHJhY2tWaXNpdGVkTGlua3MpOgorICAgICAgICAoV2ViVmlzaXRlZExpbmtTdG9yZTo6cmVt
b3ZlQWxsVmlzaXRlZExpbmtzKToKKyAgICAgICAgKFdlYlZpc2l0ZWRMaW5rU3RvcmU6OnNpbmds
ZXRvbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtT
dG9yZS5oOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6fldlYlZp
ZXcpOgorICAgICAgICAoV2ViVmlldzo6aW5pdFdpdGhGcmFtZSk6CisgICAgICAgIChXZWJWaWV3
OjpzZXRHcm91cE5hbWUpOgorICAgICAgICAoV2ViVmlldzo6YWRkVmlzaXRlZExpbmtzKToKKyAg
ICAgICAgKiBXZWJWaWV3Lmg6CisKIDIwMTUtMDYtMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbigpIG5lZWRzIHRvIGJl
IGFibGUgdG8gYWNjZXB0IGEgcmF3IHRocm93biB2YWx1ZSBpbiBhZGRpdGlvbiB0byBFeGNlcHRp
b24gb2JqZWN0cy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxODU0MDEpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiAr
NjksNyBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0
V29ybGQuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKKyNpbmNs
dWRlICJXZWJWaWV3R3JvdXAuaCIKICNpbmNsdWRlICJXZWJWaXNpdGVkTGlua1N0b3JlLmgiCiAj
aW5jbHVkZSAicmVzb3VyY2UuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+
CkBAIC0xNTIsNiArMTUzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3lzdGVt
SW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRDb250cm9sbGVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1dpbmRvd3NUb3VjaC5oPgogI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CkBA
IC00NTcsNiArNDU5LDggQEAgV2ViVmlldzo6fldlYlZpZXcoKQogICAgIEFTU0VSVCghbV9sYXll
clRyZWVIb3N0KTsKICNlbmRpZgogCisgICAgbV93ZWJWaWV3R3JvdXAtPnJlbW92ZVdlYlZpZXco
dGhpcyk7CisKICAgICBXZWJWaWV3Q291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwogICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVmlldyIpOwpAQCAtMjgxOCw2ICsyODIyLDkgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojppbml0VwogCiAgICAgbV9pbnNwZWN0
b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHRoaXMpOwogCisgICAgbV93ZWJWaWV3
R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgbG9jYWxTdG9yYWdl
RGF0YWJhc2VQYXRoKG1fcHJlZmVyZW5jZXMuZ2V0KCkpKTsKKyAgICBtX3dlYlZpZXdHcm91cC0+
YWRkV2ViVmlldyh0aGlzKTsKKwogICAgIFBhZ2VDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247
CiAgICAgY29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHRo
aXMpOwogICAgIGNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29udGV4
dE1lbnVDbGllbnQodGhpcyk7CkBAIC0yODI2LDkgKzI4MzMsMTAgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3Ojppbml0VwogICAgIGNvbmZpZ3VyYXRpb24uaW5zcGVjdG9yQ2xp
ZW50ID0gbV9pbnNwZWN0b3JDbGllbnQ7CiAgICAgY29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRG
b3JNYWluRnJhbWUgPSBuZXcgV2ViRnJhbWVMb2FkZXJDbGllbnQ7CiAgICAgY29uZmlndXJhdGlv
bi5kYXRhYmFzZVByb3ZpZGVyID0gJldlYkRhdGFiYXNlUHJvdmlkZXI6OnNpbmdsZXRvbigpOwot
ICAgIGNvbmZpZ3VyYXRpb24uc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGUobG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKG1fcHJlZmVy
ZW5jZXMuZ2V0KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ciA9ICZtX3dlYlZpZXdHcm91cC0+c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7CiAgICAgY29u
ZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUxv
YWRlckNsaWVudCo+KGNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lKTsKLSAg
ICBjb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rU3RvcmUgPSAmV2ViVmlzaXRlZExpbmtTdG9yZTo6
c2luZ2xldG9uKCk7CisgICAgY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSAm
bV93ZWJWaWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpOworICAgIGNvbmZpZ3VyYXRp
b24udmlzaXRlZExpbmtTdG9yZSA9ICZtX3dlYlZpZXdHcm91cC0+dmlzaXRlZExpbmtTdG9yZSgp
OwogCiAgICAgbV9wYWdlID0gbmV3IFBhZ2UoY29uZmlndXJhdGlvbik7CiAgICAgcHJvdmlkZUdl
b2xvY2F0aW9uVG8obV9wYWdlLCBuZXcgV2ViR2VvbG9jYXRpb25DbGllbnQodGhpcykpOwpAQCAt
MzY5NSw4ICszNzAzLDE3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6cmVn
aXMKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0R3JvdXBOYW1lKCAKICAg
ICAgICAgLyogW2luXSAqLyBCU1RSIGdyb3VwTmFtZSkKIHsKKyAgICBpZiAobV93ZWJWaWV3R3Jv
dXApCisgICAgICAgIG1fd2ViVmlld0dyb3VwLT5yZW1vdmVXZWJWaWV3KHRoaXMpOworCisgICAg
bV93ZWJWaWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgbG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoKG1fcHJlZmVyZW5jZXMuZ2V0KCkpKTsKKyAgICBtX3dlYlZp
ZXdHcm91cC0+YWRkV2ViVmlldyh0aGlzKTsKKwogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm4gU19PSzsKKworICAgIG1fcGFnZS0+c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKCZtX3dl
YlZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkpOworICAgIG1fcGFnZS0+c2V0Vmlz
aXRlZExpbmtTdG9yZShtX3dlYlZpZXdHcm91cC0+dmlzaXRlZExpbmtTdG9yZSgpKTsKICAgICBt
X3BhZ2UtPnNldEdyb3VwTmFtZSh0b1N0cmluZyhncm91cE5hbWUpKTsKICAgICByZXR1cm4gU19P
SzsKIH0KQEAgLTY1MDQsNyArNjUyMSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6aGlzdG9yeURlbGVn
YXRlKElXZWJIaXMKIAogSFJFU1VMVCBXZWJWaWV3OjphZGRWaXNpdGVkTGlua3MoQlNUUiogdmlz
aXRlZFVSTHMsIHVuc2lnbmVkIHZpc2l0ZWRVUkxDb3VudCkKIHsKLSAgICBhdXRvJiB2aXNpdGVk
TGlua1N0b3JlID0gV2ViVmlzaXRlZExpbmtTdG9yZTo6c2luZ2xldG9uKCk7CisgICAgYXV0byYg
dmlzaXRlZExpbmtTdG9yZSA9IG1fd2ViVmlld0dyb3VwLT52aXNpdGVkTGlua1N0b3JlKCk7CiAg
ICAgUGFnZUdyb3VwJiBncm91cCA9IGNvcmUodGhpcyktPmdyb3VwKCk7CiAgICAgCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHZpc2l0ZWRVUkxDb3VudDsgKytpKSB7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5oCShyZXZpc2lvbiAxODU0MDEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgV2ViSW5zcGVjdG9yQ2xp
ZW50OwogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKIGNsYXNzIEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0OwogI2VuZGlmCitjbGFzcyBXZWJWaWV3R3JvdXA7CiAKIFdlYlZpZXcqIGtp
dChXZWJDb3JlOjpQYWdlKik7CiBXZWJDb3JlOjpQYWdlKiBjb3JlKElXZWJWaWV3Kik7CkBAIC0x
MTU5LDYgKzExNjAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkZ1bGxTY3JlZW5Db250cm9sbGVyPiBtX2Z1bGxzY3JlZW5Db250cm9sbGVyOwogICAgIFdlYkNv
cmU6OkludFBvaW50IG1fc2Nyb2xsUG9zaXRpb247CiAjZW5kaWYKKworICAgIFJlZlB0cjxXZWJW
aWV3R3JvdXA+IG1fd2ViVmlld0dyb3VwOwogfTsKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NSBOYXZlciBDb3JwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVmlld0dyb3VwLmgiCisKKyNpbmNsdWRlICJXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJWaWV3LmgiCisjaW5jbHVkZSAi
V2ViVmlzaXRlZExpbmtTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRDb250
cm9sbGVyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworLy8gQW55
IG5hbWVkIGdyb3VwcyB3aWxsIGxpdmUgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgcHJvY2Vzcywg
dGhhbmtzIHRvIHRoZSByZWZlcmVuY2UgaGVsZCBieSB0aGUgUmVmUHRyLgorc3RhdGljIEhhc2hN
YXA8U3RyaW5nLCBSZWZQdHI8V2ViVmlld0dyb3VwPj4mIHdlYlZpZXdHcm91cHMoKQoreworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYlZpZXdHcm91
cD4+PiB3ZWJWaWV3R3JvdXBzOworCisgICAgcmV0dXJuIHdlYlZpZXdHcm91cHM7Cit9CisKK1Jl
ZlB0cjxXZWJWaWV3R3JvdXA+IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKK3sKKyAgICBp
ZiAobmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVmlld0dy
b3VwKFN0cmluZygpLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKTsKKworICAgIGF1dG8mIHdl
YlZpZXdHcm91cCA9IHdlYlZpZXdHcm91cHMoKS5hZGQobmFtZSwgbnVsbHB0cikuaXRlcmF0b3It
PnZhbHVlOworICAgIGlmICghd2ViVmlld0dyb3VwKQorICAgICAgICB3ZWJWaWV3R3JvdXAgPSBh
ZG9wdFJlZihuZXcgV2ViVmlld0dyb3VwKG5hbWUsIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkp
OworICAgIGVsc2UgaWYgKCF3ZWJWaWV3R3JvdXAtPm1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
ICYmIHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNFbXB0eSgpICYm
ICFsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNFbXB0eSgpKQorICAgICAgICB3ZWJWaWV3R3Jv
dXAtPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoID0gbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRo
OworCisgICAgcmV0dXJuIHdlYlZpZXdHcm91cDsKK30KKworV2ViVmlld0dyb3VwKiBXZWJWaWV3
R3JvdXA6OmdldChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgQVNTRVJUKCFuYW1lLmlzRW1w
dHkoKSk7CisKKyAgICByZXR1cm4gd2ViVmlld0dyb3VwcygpLmdldChuYW1lKTsKK30KKworV2Vi
Vmlld0dyb3VwOjpXZWJWaWV3R3JvdXAoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKKyAgICA6IG1fbmFtZShuYW1lKQorICAgICwgbV9s
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgobG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQorICAgICwg
bV91c2VyQ29udGVudENvbnRyb2xsZXIoVXNlckNvbnRlbnRDb250cm9sbGVyOjpjcmVhdGUoKSkK
KyAgICAsIG1fdmlzaXRlZExpbmtTdG9yZShXZWJWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkK
K3sKK30KKworV2ViVmlld0dyb3VwOjp+V2ViVmlld0dyb3VwKCkKK3sKKyAgICBBU1NFUlQobV9u
YW1lLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fd2ViVmlld3MuaXNFbXB0eSgpKTsKK30KKwor
dm9pZCBXZWJWaWV3R3JvdXA6OmFkZFdlYlZpZXcoV2ViVmlldyAqd2ViVmlldykKK3sKKyAgICBB
U1NFUlQoIW1fd2ViVmlld3MuY29udGFpbnMod2ViVmlldykpOworCisgICAgbV93ZWJWaWV3cy5h
ZGQod2ViVmlldyk7Cit9CisKK3ZvaWQgV2ViVmlld0dyb3VwOjpyZW1vdmVXZWJWaWV3KFdlYlZp
ZXcgKndlYlZpZXcpCit7CisgICAgQVNTRVJUKG1fd2ViVmlld3MuY29udGFpbnMod2ViVmlldykp
OworCisgICAgbV93ZWJWaWV3cy5yZW1vdmUod2ViVmlldyk7Cit9CisKK1N0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlciYgV2ViVmlld0dyb3VwOjpzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKQorewor
ICAgIGlmICghbV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIpCisgICAgICAgIG1fc3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyID0gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGUobV9s
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOworCisgICAgcmV0dXJuICptX3N0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YlZpZXdHcm91cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYlZpZXdHcm91cC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTmF2ZXIgQ29ycC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJWaWV3R3JvdXBfaAorI2RlZmluZSBXZWJWaWV3R3Jv
dXBfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI7CitjbGFzcyBVc2VyQ29udGVudENv
bnRyb2xsZXI7Cit9CisKK2NsYXNzIFdlYlZpc2l0ZWRMaW5rU3RvcmU7CitjbGFzcyBXZWJWaWV3
OworCitjbGFzcyBXZWJWaWV3R3JvdXAgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWV3R3JvdXA+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFdlYlZpZXdHcm91cD4gZ2V0T3JDcmVhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0
aCk7CisgICAgfldlYlZpZXdHcm91cCgpOworCisgICAgc3RhdGljIFdlYlZpZXdHcm91cCogZ2V0
KGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyAgICB2b2lkIGFkZFdlYlZpZXcoV2ViVmlldyAqKTsK
KyAgICB2b2lkIHJlbW92ZVdlYlZpZXcoV2ViVmlldyAqKTsKKworICAgIFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlciYgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7CisgICAgV2Vi
Q29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyJiB1c2VyQ29udGVudENvbnRyb2xsZXIoKSB7IHJl
dHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlci5nZXQoKTsgfQorICAgIFdlYlZpc2l0ZWRMaW5r
U3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUoKSB7IHJldHVybiBtX3Zpc2l0ZWRMaW5rU3RvcmUuZ2V0
KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJWaWV3R3JvdXAoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CisKKyAgICBTdHJpbmcgbV9u
YW1lOworICAgIEhhc2hTZXQ8V2ViVmlldyAqPiBtX3dlYlZpZXdzOworCisgICAgU3RyaW5nIG1f
bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoOworICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI+IG1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOworCisgICAgUmVmPFdl
YkNvcmU6OlVzZXJDb250ZW50Q29udHJvbGxlcj4gbV91c2VyQ29udGVudENvbnRyb2xsZXI7Cisg
ICAgUmVmPFdlYlZpc2l0ZWRMaW5rU3RvcmU+IG1fdmlzaXRlZExpbmtTdG9yZTsKK307CisKKyNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExp
bmtTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViVmlzaXRlZExpbmtTdG9yZS5jcHAJKHJldmlzaW9uIDE4NTQwMSkKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCwyMCArMzQsMjcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0
YXRpYyBib29sIHNfc2hvdWxkVHJhY2tWaXNpdGVkTGlua3M7CiAKLVdlYlZpc2l0ZWRMaW5rU3Rv
cmUmIFdlYlZpc2l0ZWRMaW5rU3RvcmU6OnNpbmdsZXRvbigpCitzdGF0aWMgSGFzaFNldDxXZWJW
aXNpdGVkTGlua1N0b3JlKj4mIHZpc2l0ZWRMaW5rU3RvcmVzKCkKIHsKLSAgICBzdGF0aWMgV2Vi
VmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSA9ICphZG9wdFJlZihuZXcgV2ViVmlz
aXRlZExpbmtTdG9yZSkubGVha1JlZigpOwotICAgIAotICAgIHJldHVybiB2aXNpdGVkTGlua1N0
b3JlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFdlYlZpc2l0ZWRMaW5rU3Rv
cmUqPj4gdmlzaXRlZExpbmtTdG9yZXM7CisKKyAgICByZXR1cm4gdmlzaXRlZExpbmtTdG9yZXM7
Cit9CisKK1JlZjxXZWJWaXNpdGVkTGlua1N0b3JlPiBXZWJWaXNpdGVkTGlua1N0b3JlOjpjcmVh
dGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpc2l0ZWRMaW5rU3RvcmUpOwog
fQogCiBXZWJWaXNpdGVkTGlua1N0b3JlOjpXZWJWaXNpdGVkTGlua1N0b3JlKCkKICAgICA6IG1f
dmlzaXRlZExpbmtzUG9wdWxhdGVkKGZhbHNlKQogeworICAgIHZpc2l0ZWRMaW5rU3RvcmVzKCku
YWRkKHRoaXMpOwogfQogCiBXZWJWaXNpdGVkTGlua1N0b3JlOjp+V2ViVmlzaXRlZExpbmtTdG9y
ZSgpCiB7CisgICAgdmlzaXRlZExpbmtTdG9yZXMoKS5yZW1vdmUodGhpcyk7CiB9CiAKIHZvaWQg
V2ViVmlzaXRlZExpbmtTdG9yZTo6c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MoYm9vbCBzaG91
bGRUcmFja1Zpc2l0ZWRMaW5rcykKQEAgLTYyLDcgKzY5LDggQEAgdm9pZCBXZWJWaXNpdGVkTGlu
a1N0b3JlOjpzZXRTaG91bGRUcmFjawogCiB2b2lkIFdlYlZpc2l0ZWRMaW5rU3RvcmU6OnJlbW92
ZUFsbFZpc2l0ZWRMaW5rcygpCiB7Ci0gICAgV2ViVmlzaXRlZExpbmtTdG9yZTo6c2luZ2xldG9u
KCkucmVtb3ZlVmlzaXRlZExpbmtIYXNoZXMoKTsKKyAgICBmb3IgKGF1dG8mIHZpc2l0ZWRMaW5r
U3RvcmUgOiB2aXNpdGVkTGlua1N0b3JlcygpKQorICAgICAgICB2aXNpdGVkTGlua1N0b3JlLT5y
ZW1vdmVWaXNpdGVkTGlua0hhc2hlcygpOwogICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkubWFy
a1BhZ2VzRm9yVmlzaXRlZExpbmtTdHlsZVJlY2FsYygpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5o
CShyZXZpc2lvbiAxODU0MDEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJWaXNpdGVkTGlua1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDcgQEAKIAog
Y2xhc3MgV2ViVmlzaXRlZExpbmtTdG9yZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpWaXNpdGVk
TGlua1N0b3JlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViVmlzaXRlZExpbmtTdG9yZSYgc2lu
Z2xldG9uKCk7Ci0gICAgV2ViVmlzaXRlZExpbmtTdG9yZSgpOworICAgIHN0YXRpYyBSZWY8V2Vi
VmlzaXRlZExpbmtTdG9yZT4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+V2ViVmlzaXRlZExpbmtT
dG9yZSgpOwogCiAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MoYm9v
bCk7CkBAIC00Miw2ICs0MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKIAogcHJpdmF0ZToKKyAgICBXZWJWaXNpdGVkTGlua1N0
b3JlKCk7CisKICAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwg
V2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgQXRv
bWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhZGRW
aXNpdGVkTGluayhXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6TGlua0hhc2gpIG92ZXJyaWRlOwog
Cg==
</data>
<flag name="review"
          id="279780"
          type_id="1"
          status="-"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254854</attachid>
            <date>2015-06-13 06:55:18 -0700</date>
            <delta_ts>2015-06-14 21:10:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>35523</size>
            <attacher name="Hyungwook Lee">hyungwook.lee</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODU1MzcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTA2LTEzICBIeXVuZ3dvb2sg
TGVlICA8aHl1bmd3b29rLmxlZUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtXaW5dIEltcGxl
bWVudCBXZWJWaWV3R3JvdXAgdG8gc3VwcG9ydCBXZWJWaWV3OjphZGR4eHhUb0dyb3VwKCkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU5MDgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFdlYlZp
ZXdHcm91cCBjbGFzcyBzaGFyaW5nIG9uIE1hYyBhbmQgV2luIHBvcnQuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dy
b3VwLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Vmlld0dyb3VwLm1tLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAu
aC4KKyAgICAgICAgKiBXZWJLaXQudmN4cHJvai9XZWJLaXQvV2ViS2l0LnZjeHByb2o6CisgICAg
ICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdENvbW1vbi5wcm9wczoKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNS0wNi0wOSAgQ3NhYmEg
T3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtjbWFrZV0gRml4IHRo
ZSBzdHlsZSBpc3N1ZXMgaW4gY21ha2UgcHJvamVjdCBmaWxlcwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcAkocmV2aXNpb24gMTg1NDAxKQko
ZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAubW06MTg1
NDAxKQorKysgU291cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2Vi
Vmlld0dyb3VwLmgiCisKKyNpbXBvcnQgIldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIgor
I2ltcG9ydCAiV2ViVmlldy5oIgorI2ltcG9ydCAiV2ViVmlzaXRlZExpbmtTdG9yZS5oIgorI2lt
cG9ydCA8V2ViQ29yZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworLy8gQW55IG5hbWVkIGdyb3VwcyB3aWxsIGxpdmUgZm9yIHRo
ZSBsaWZldGltZSBvZiB0aGUgcHJvY2VzcywgdGhhbmtzIHRvIHRoZSByZWZlcmVuY2UgaGVsZCBi
eSB0aGUgUmVmUHRyLgorc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViVmlld0dyb3Vw
Pj4mIHdlYlZpZXdHcm91cHMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFw
PFN0cmluZywgUmVmUHRyPFdlYlZpZXdHcm91cD4+PiB3ZWJWaWV3R3JvdXBzOworCisgICAgcmV0
dXJuIHdlYlZpZXdHcm91cHM7Cit9CisKK1JlZlB0cjxXZWJWaWV3R3JvdXA+IFdlYlZpZXdHcm91
cDo6Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3Rv
cmFnZURhdGFiYXNlUGF0aCkKK3sKKyAgICBpZiAobmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViVmlld0dyb3VwKFN0cmluZygpLCBsb2NhbFN0b3JhZ2VEYXRh
YmFzZVBhdGgpKTsKKworICAgIGF1dG8mIHdlYlZpZXdHcm91cCA9IHdlYlZpZXdHcm91cHMoKS5h
ZGQobmFtZSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgIGlmICghd2ViVmlld0dyb3Vw
KQorICAgICAgICB3ZWJWaWV3R3JvdXAgPSBhZG9wdFJlZihuZXcgV2ViVmlld0dyb3VwKG5hbWUs
IGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOworICAgIGVsc2UgaWYgKCF3ZWJWaWV3R3JvdXAt
Pm1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyICYmIHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3Jh
Z2VEYXRhYmFzZVBhdGguaXNFbXB0eSgpICYmICFsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNF
bXB0eSgpKQorICAgICAgICB3ZWJWaWV3R3JvdXAtPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRo
ID0gbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoOworCisgICAgcmV0dXJuIHdlYlZpZXdHcm91cDsK
K30KKworV2ViVmlld0dyb3VwKiBXZWJWaWV3R3JvdXA6OmdldChjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisgICAgQVNTRVJUKCFuYW1lLmlzRW1wdHkoKSk7CisKKyAgICByZXR1cm4gd2ViVmlld0dy
b3VwcygpLmdldChuYW1lKTsKK30KKworV2ViVmlld0dyb3VwOjpXZWJWaWV3R3JvdXAoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKKyAg
ICA6IG1fbmFtZShuYW1lKQorICAgICwgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgobG9jYWxT
dG9yYWdlRGF0YWJhc2VQYXRoKQorICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoVXNlckNv
bnRlbnRDb250cm9sbGVyOjpjcmVhdGUoKSkKKyAgICAsIG1fdmlzaXRlZExpbmtTdG9yZShXZWJW
aXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKK3sKK30KKworV2ViVmlld0dyb3VwOjp+V2ViVmll
d0dyb3VwKCkKK3sKKyAgICBBU1NFUlQobV9uYW1lLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1f
d2ViVmlld3MuaXNFbXB0eSgpKTsKK30KKwordm9pZCBXZWJWaWV3R3JvdXA6OmFkZFdlYlZpZXco
V2ViVmlldyAqd2ViVmlldykKK3sKKyAgICBBU1NFUlQoIW1fd2ViVmlld3MuY29udGFpbnMod2Vi
VmlldykpOworCisgICAgbV93ZWJWaWV3cy5hZGQod2ViVmlldyk7Cit9CisKK3ZvaWQgV2ViVmll
d0dyb3VwOjpyZW1vdmVXZWJWaWV3KFdlYlZpZXcgKndlYlZpZXcpCit7CisgICAgQVNTRVJUKG1f
d2ViVmlld3MuY29udGFpbnMod2ViVmlldykpOworCisgICAgbV93ZWJWaWV3cy5yZW1vdmUod2Vi
Vmlldyk7Cit9CisKK1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciYgV2ViVmlld0dyb3VwOjpzdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIoKQoreworICAgIGlmICghbV9zdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIpCisgICAgICAgIG1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGUobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOworCisg
ICAgcmV0dXJuICptX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsKK30KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHAJKHJldmlzaW9uIDE4NTQw
MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjMsMTQgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2ltcG9ydCAiV2ViVmlld0dyb3VwLmgiCisjaW5jbHVkZSAiV2Vi
Vmlld0dyb3VwLmgiCiAKLSNpbXBvcnQgIldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIgot
I2ltcG9ydCAiV2ViVmlldy5oIgotI2ltcG9ydCAiV2ViVmlzaXRlZExpbmtTdG9yZS5oIgotI2lt
cG9ydCA8V2ViQ29yZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgotI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUg
IldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIKKyNp
bmNsdWRlICJXZWJWaXNpdGVkTGlua1N0b3JlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29u
dGVudENvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgJKHJl
dmlzaW9uIDE4NTQwMSkJKGZyb20gaHR0cHM6L3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Vi
a2l0L3RydW5rL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5o
OjE4NTQwMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgJ
KHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViVmll
d0dyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJW
aWV3R3JvdXAuaAkocmV2aXNpb24gMTg1NDAxKQorKysgU291cmNlL1dlYktpdC9XZWJDb3JlU3Vw
cG9ydC9XZWJWaWV3R3JvdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBjbGFz
cyBVc2VyQ29udGVudENvbnRyb2xsZXI7CiAKIGNsYXNzIFdlYlZpc2l0ZWRMaW5rU3RvcmU7CiAK
LUBjbGFzcyBXZWJWaWV3OworT0JKQ19DTEFTUyBXZWJWaWV3OwogCiBjbGFzcyBXZWJWaWV3R3Jv
dXAgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWV3R3JvdXA+IHsKIHB1YmxpYzoKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9q
CShyZXZpc2lvbiAxODU0MDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktp
dC9XZWJLaXQudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjk3LDYgKzI5Nyw3IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxTdG9yYWdlXFdlYkRhdGFiYXNlUHJvdmlkZXIuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU3RvcmFnZVxXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cY2Zc
V2ViQ29yZVN1cHBvcnRcV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIiAvPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cLi5cV2ViQ29yZVN1cHBvcnRcV2ViVmlld0dyb3VwLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHdpblxQbHVnaW5zXG5wYXBpLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHdpblxQbHVnaW5zXFBsdWdpbkRhdGFiYXNlLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHdpblxQbHVnaW5zXFBsdWdpbkRl
YnVnLmNwcCIgLz4KQEAgLTQ1MCw2ICs0NTEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cLi5cU3RvcmFnZVxTdG9yYWdlVHJhY2tlckNsaWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cLi5cU3RvcmFnZVxXZWJEYXRhYmFzZVByb3ZpZGVyLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxTdG9yYWdlXFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cV2ViQ29yZVN1cHBvcnRcV2Vi
Vmlld0dyb3VwLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx3aW5cUGx1Z2lu
c1xQbHVnaW5EYXRhYmFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2lu
XFBsdWdpbnNcUGx1Z2luRGVidWcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4u
XHdpblxQbHVnaW5zXFBsdWdpblBhY2thZ2UuaCIgLz4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
S2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXQvV2ViS2l0LnZjeHByb2ouZmlsdGVy
cwkocmV2aXNpb24gMTg1NDAxKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJL
aXQvV2ViS2l0LnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMzMzLDYgKzMzMyw5
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViS2l0TWVzc2FnZUxvb3Au
Y3BwIj4KICAgICAgIDxGaWx0ZXI+U291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cV2ViQ29yZVN1cHBvcnRcV2ViVmlld0dyb3Vw
LmNwcCI+CisgICAgICA8RmlsdGVyPlNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4K
ICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcRW1iZWRkZWRXaWRnZXQuaCI+CkBAIC02NTQsNiArNjU3
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJLaXRNZXNzYWdlTG9v
cC5oIj4KICAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxXZWJDb3JlU3VwcG9ydFxXZWJWaWV3
R3JvdXAuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJ
bmNsdWRlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Tm9uZSBJbmNsdWRl
PSJXZWJLaXRQb3N0QnVpbGQuY21kIiAvPgpAQCAtNzQ2LDQgKzc1Miw0IEBACiAgICAgICA8Rmls
dGVyPlNvdXJjZXNcUGx1Z2luczwvRmlsdGVyPgogICAgIDwvTUFTTT4KICAgPC9JdGVtR3JvdXA+
Ci08L1Byb2plY3Q+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXQvV2ViS2l0Q29tbW9uLnByb3Bz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktp
dENvbW1vbi5wcm9wcwkocmV2aXNpb24gMTg1NDAxKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQu
dmN4cHJvai9XZWJLaXQvV2ViS2l0Q29tbW9uLnByb3BzCSh3b3JraW5nIGNvcHkpCkBAIC01LDcg
KzUsNyBAQAogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAg
IDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2pl
Y3REaXIpOyQoUHJvamVjdERpcilcLi5cLi5cd2luOyQoUHJvamVjdERpcilcLi5cLi5cd2luXFBs
dWdpbnM7JChQcm9qZWN0RGlyKVwuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnQ7JChQcm9qZWN0RGly
KVwuLlwuLlxTdG9yYWdlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYktpdDsk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
SW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxJbmNsdWRlXFdlYkNvcmU7
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVy
czskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZTskKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcSW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJLaXRcRGVyaXZl
ZFNvdXJjZXM7JChXZWJLaXRfTGlicmFyaWVzKVxJbmNsdWRlOyQoV2ViS2l0X0xpYnJhcmllcylc
SW5jbHVkZVxwcml2YXRlOyQoV2ViS2l0X0xpYnJhcmllcylcSW5jbHVkZVxXZWJDb3JlOyQoV2Vi
S2l0X0xpYnJhcmllcylcSW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoV2ViS2l0
X0xpYnJhcmllcylcaW5jbHVkZVxzcWxpdGU7JChXZWJLaXRfTGlicmFyaWVzKVxJbmNsdWRlXEph
dmFTY3JpcHRDb3JlOyQoV2ViS2l0X0xpYnJhcmllcylcSW5jbHVkZVxwcml2YXRlXEphdmFTY3Jp
cHRDb3JlOyQoSW50RGlyKWluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPiQoUHJvamVjdERpcik7JChQcm9qZWN0RGlyKVwuLlwuLlx3aW47JChQcm9qZWN0
RGlyKVwuLlwuLlx3aW5cUGx1Z2luczskKFByb2plY3REaXIpXC4uXC4uXHdpblxXZWJDb3JlU3Vw
cG9ydDskKFByb2plY3REaXIpXC4uXC4uXFN0b3JhZ2U7JChQcm9qZWN0RGlyKVwuLlwuLlxXZWJD
b3JlU3VwcG9ydDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJLaXQ7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXEluY2x1ZGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXEluY2x1
ZGVccHJpdmF0ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZVxXZWJDb3JlOyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxJbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXEluY2x1ZGVcSmF2YVNjcmlwdENvcmU7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXEluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTskKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcV2ViS2l0XERlcml2ZWRTb3Vy
Y2VzOyQoV2ViS2l0X0xpYnJhcmllcylcSW5jbHVkZTskKFdlYktpdF9MaWJyYXJpZXMpXEluY2x1
ZGVccHJpdmF0ZTskKFdlYktpdF9MaWJyYXJpZXMpXEluY2x1ZGVcV2ViQ29yZTskKFdlYktpdF9M
aWJyYXJpZXMpXEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKFdlYktpdF9MaWJy
YXJpZXMpXGluY2x1ZGVcc3FsaXRlOyQoV2ViS2l0X0xpYnJhcmllcylcSW5jbHVkZVxKYXZhU2Ny
aXB0Q29yZTskKFdlYktpdF9MaWJyYXJpZXMpXEluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29y
ZTskKEludERpcilpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+
V0VCS0lUX0VYUE9SVFM7RlJBTUVXT1JLX05BTUU9V2ViS2l0OyUoUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxQcmVjb21waWxlZEhlYWRl
cj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVyPgogICAgICAgPFByZWNvbXBpbGVkSGVhZGVyRmlsZT5X
ZWJLaXRQcmVmaXguaDwvUHJlY29tcGlsZWRIZWFkZXJGaWxlPgpAQCAtMTcsNCArMTcsNCBAQAog
ICAgICAgPERlbGF5TG9hZERMTHM+dXNwMTAuZGxsO2NvbWN0bDMyLmRsbDt2ZXJzaW9uLmRsbDtp
cGhscGFwaS5kbGw7JShEZWxheUxvYWRETExzKTwvRGVsYXlMb2FkRExMcz4KICAgICA8L0xpbms+
CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLTwvUHJvamVjdD4KKzwvUHJvamVjdD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4NTQwMSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5
LDYgKzE5LDggQEAKIAkJMEFCNzUyMzgwRkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNjYXBlQ29u
dGFpbmVyQ2hlY2tDb250ZXh0SW5mby5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBBQjc1MjM2MEZBMkU0REIwMEQ3Q0JCMSAvKiBXZWJOZXRzY2FwZUNv
bnRhaW5lckNoZWNrQ29udGV4dEluZm8ubW0gKi87IH07CiAJCTBBRUJGRjYzMEY5RkE4QkUwMDBE
NDg2QiAvKiBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEFFQkZGNjEwRjlGQThCRTAwMEQ0ODZC
IC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEFFQkZGNjQwRjlGQThCRTAwMEQ0ODZC
IC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tQcml2YXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEFFQkZGNjIwRjlGQThCRTAwMEQ0ODZCIC8q
IFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tQcml2YXRlLm1tICovOyB9OworCQkxNDMwQzEyQzFC
MkM1REY3MDBERUEwMUQgLyogV2ViVmlld0dyb3VwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MzBDMTJBMUIyQzVERjcwMERFQTAxRCAvKiBXZWJW
aWV3R3JvdXAuY3BwICovOyB9OworCQkxNDMwQzEyRDFCMkM1REY3MDBERUEwMUQgLyogV2ViVmll
d0dyb3VwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDMwQzEyQjFCMkM1REY3MDBERUEwMUQgLyogV2ViVmlld0dyb3VwLmggKi87IH07CiAJCTE0RDgy
NTJGMEFGOTU1MDkwMDA0RjA1NyAvKiBXZWJDaHJvbWVDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDgyNTJEMEFGOTU1MDkwMDA0RjA1NyAv
KiBXZWJDaHJvbWVDbGllbnQuaCAqLzsgfTsKIAkJMTREODI1MzAwQUY5NTUwOTAwMDRGMDU3IC8q
IFdlYkNocm9tZUNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0RDgyNTJFMEFGOTU1MDkwMDA0RjA1NyAvKiBXZWJDaHJvbWVDbGllbnQubW0g
Ki87IH07CiAJCTFBMkRCRTlGMEYyNTFFM0EwMDM2RjhBNiAvKiBQcm94eUluc3RhbmNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTJEQkU5RDBGMjUx
RTNBMDAzNkY4QTYgLyogUHJveHlJbnN0YW5jZS5oICovOyB9OwpAQCAtNzYsOCArNzgsNiBAQAog
CQkxQUFGNUQwRjBFRERFN0E3MDA4RDg4M0QgLyogV2ViS2l0UGx1Z2luQWdlbnQuZGVmcyBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUY1ODhBMEVEQ0NF
QTMwMDhEODgzRCAvKiBXZWJLaXRQbHVnaW5BZ2VudC5kZWZzICovOyB9OwogCQkxQUFGNUZCRjBF
REUzQTkyMDA4RDg4M0QgLyogV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFGNUZCRDBFREUzQTkyMDA4
RDg4M0QgLyogV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3LmggKi87IH07CiAJCTFBQUY1RkMw
MEVERTNBOTIwMDhEODgzRCAvKiBXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFGNUZCRTBFREUzQTky
MDA4RDg4M0QgLyogV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tICovOyB9OwotCQkxQUIx
REFDMTE4QkMwMjMyMDA0QjZBOUYgLyogV2ViVmlld0dyb3VwLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMURBQkYxOEJDMDIzMjAwNEI2QTlGIC8q
IFdlYlZpZXdHcm91cC5tbSAqLzsgfTsKLQkJMUFCMURBQzIxOEJDMDIzMjAwNEI2QTlGIC8qIFdl
YlZpZXdHcm91cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUFCMURBQzAxOEJDMDIzMjAwNEI2QTlGIC8qIFdlYlZpZXdHcm91cC5oICovOyB9OwogCQkx
QUM3MTc2RTFBMjY1NjhBMDAyRTMxMTUgLyogV2ViVmlzaXRlZExpbmtTdG9yZS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQzcxNzZDMUEyNjU2OEEw
MDJFMzExNSAvKiBXZWJWaXNpdGVkTGlua1N0b3JlLm1tICovOyB9OwogCQkxQUM3MTc2RjFBMjY1
NjhBMDAyRTMxMTUgLyogV2ViVmlzaXRlZExpbmtTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDNzE3NkQxQTI2NTY4QTAwMkUzMTE1IC8qIFdl
YlZpc2l0ZWRMaW5rU3RvcmUuaCAqLzsgfTsKIAkJMUFFQTY2RDQwREM2QjFGRjAwM0QxMkJGIC8q
IFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUVBNjZEMjBEQzZCMUZGMDAzRDEyQkYgLyogV2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIuaCAqLzsgfTsKQEAgLTQ3NSw2ICs0NzUsOCBAQAogCQkw
QUI3NTIzNjBGQTJFNERCMDBEN0NCQjEgLyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRl
eHRJbmZvLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViTmV0
c2NhcGVDb250YWluZXJDaGVja0NvbnRleHRJbmZvLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwQUVCRkY2MTBGOUZBOEJFMDAwRDQ4NkIgLyogV2ViTmV0c2NhcGVDb250YWluZXJD
aGVja1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBXZWJOZXRzY2Fw
ZUNvbnRhaW5lckNoZWNrUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
QUVCRkY2MjBGOUZBOEJFMDAwRDQ4NkIgLyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja1ByaXZh
dGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJOZXRzY2Fw
ZUNvbnRhaW5lckNoZWNrUHJpdmF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MTQzMEMxMkExQjJDNURGNzAwREVBMDFEIC8qIFdlYlZpZXdHcm91cC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgZmlsZUVuY29kaW5nID0gNDsgbmFtZSA9IFdlYlZpZXdHcm91cC5jcHA7IHBhdGggPSBXZWJD
b3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07
CisJCTE0MzBDMTJCMUIyQzVERjcwMERFQTAxRCAvKiBXZWJWaWV3R3JvdXAuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViVmlld0dyb3VwLmg7IHBhdGggPSBXZWJDb3JlU3Vw
cG9ydC9XZWJWaWV3R3JvdXAuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQkxNEQ4
MjUyRDBBRjk1NTA5MDAwNEYwNTcgLyogV2ViQ2hyb21lQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDaHJvbWVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMTREODI1MkUwQUY5NTUwOTAwMDRGMDU3IC8qIFdlYkNocm9tZUNsaWVudC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNocm9tZUNsaWVu
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyREJFOUQwRjI1MUUzQTAwMzZG
OEE2IC8qIFByb3h5SW5zdGFuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHJveHlJbnN0YW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTI5LDggKzUz
MSw2IEBACiAJCTFBQUY1RDA4MEVEREU3MUQwMDhEODgzRCAvKiBXZWJLaXRQbHVnaW5Ib3N0VHlw
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0UGx1Z2luSG9zdFR5
cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQUY1RkJEMEVERTNBOTIwMDhE
ODgzRCAvKiBXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBQUY1RkJFMEVERTNBOTIwMDhEODgzRCAvKiBXZWJIb3N0ZWRO
ZXRzY2FwZVBsdWdpblZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTFBQjFEQUJGMThCQzAyMzIwMDRCNkE5RiAvKiBXZWJWaWV3R3JvdXAubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWV3R3JvdXAubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBQjFEQUMwMThCQzAyMzIwMDRCNkE5RiAvKiBX
ZWJWaWV3R3JvdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmlld0dy
b3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQzcxNzZDMUEyNjU2OEEwMDJF
MzExNSAvKiBXZWJWaXNpdGVkTGlua1N0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViVmlzaXRlZExpbmtTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUFDNzE3NkQxQTI2NTY4QTAwMkUzMTE1IC8qIFdlYlZpc2l0ZWRMaW5rU3Rv
cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmlzaXRlZExpbmtTdG9y
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUVBNjZEMjBEQzZCMUZGMDAzRDEy
QkYgLyogV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MDcsOCArMTYwNyw4IEBACiAJCQkJMkRENjMyQzExOUU1
RDFGMDAwMkU5QzdCIC8qIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tICovLAogCQkJ
CTkzRUIxNzhFMDlGODhENTEwMDkxRjhGRiAvKiBXZWJTeXN0ZW1JbnRlcmZhY2UuaCAqLywKIAkJ
CQk5M0VCMTc4QzA5Rjg4RDQ2MDA5MUY4RkYgLyogV2ViU3lzdGVtSW50ZXJmYWNlLm1tICovLAot
CQkJCTFBQjFEQUMwMThCQzAyMzIwMDRCNkE5RiAvKiBXZWJWaWV3R3JvdXAuaCAqLywKLQkJCQkx
QUIxREFCRjE4QkMwMjMyMDA0QjZBOUYgLyogV2ViVmlld0dyb3VwLm1tICovLAorCQkJCTE0MzBD
MTJBMUIyQzVERjcwMERFQTAxRCAvKiBXZWJWaWV3R3JvdXAuY3BwICovLAorCQkJCTE0MzBDMTJC
MUIyQzVERjcwMERFQTAxRCAvKiBXZWJWaWV3R3JvdXAuaCAqLywKIAkJCQkxQUM3MTc2RDFBMjY1
NjhBMDAyRTMxMTUgLyogV2ViVmlzaXRlZExpbmtTdG9yZS5oICovLAogCQkJCTFBQzcxNzZDMUEy
NjU2OEEwMDJFMzExNSAvKiBXZWJWaXNpdGVkTGlua1N0b3JlLm1tICovLAogCQkJKTsKQEAgLTE3
NDYsNyArMTc0Niw2IEBACiAJCQkJOTM5ODEwNDkwODI0QkYwMTAwOERGMDM4IC8qIFdlYkNsaXBW
aWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNjVBRDVBMzBCMEMzMkM3MDA1QTJCMUQgLyogV2Vi
Q29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDE2MDgyNEJGMDEw
MDhERjAzOCAvKiBXZWJDb3JlU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUFCMURB
QzIxOEJDMDIzMjAwNEI2QTlGIC8qIFdlYlZpZXdHcm91cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTNFMkExQTQxMjNCMEIzQzAwOUZFMTJBIC8qIFdlYkRhc2hib2FyZFJlZ2lvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTExRjNGRDcwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdl
ckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBRURFRjEwQ0VDRjQ1NzAwODU0MzI4IC8q
IFdlYkRhdGFiYXNlTWFuYWdlckludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTE4MTUsNiAr
MTgxNCw3IEBACiAJCQkJOTM5ODEwMTQwODI0QkYwMTAwOERGMDM4IC8qIFdlYkhpc3RvcnlQcml2
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFGNUZCRjBFREUzQTkyMDA4RDg4M0QgLyogV2Vi
SG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTA1NTA4
MjRCRjAxMDA4REYwMzggLyogV2ViSFRNTFJlcHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQkxNDMwQzEyRDFCMkM1REY3MDBERUEwMUQgLyogV2ViVmlld0dyb3VwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5Mzk4MTA1NjA4MjRCRjAxMDA4REYwMzggLyogV2ViSFRNTFJlcHJlc2VudGF0
aW9uUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwNTcwODI0QkYwMTAwOERGMDM4
IC8qIFdlYkhUTUxWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTZCMzEzRDFBNTFGM0E5MDA0
MjI5NzUgLyogU3RvcmFnZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjMzNCw5
ICsyMzM0LDkgQEAKIAkJCQkxQTZCMzEzNTFBNTFGM0E5MDA0MjI5NzUgLyogU3RvcmFnZU5hbWVz
cGFjZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjgzNEFBRDgwRTY0QjFDNzAwRTI3MzdD
IC8qIFdlYlRleHRJdGVyYXRvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExMEMxRDFEMTgyMDJG
OUMwMDM2ODgzQSAvKiBXZWJEZWZhdWx0UmVzb3VyY2VMb2FkRGVsZWdhdGUubSBpbiBTb3VyY2Vz
ICovLAorCQkJCTE0MzBDMTJDMUIyQzVERjcwMERFQTAxRCAvKiBXZWJWaWV3R3JvdXAuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwQkUwODI0QkYwMTAwOERGMDM4IC8qIFdlYlVSTHNXaXRo
VGl0bGVzLm0gaW4gU291cmNlcyAqLywKIAkJCQlDMEM1QjNFRjExNzdBNEEwMDAyQjBBRUYgLyog
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMUFCMURBQzEx
OEJDMDIzMjAwNEI2QTlGIC8qIFdlYlZpZXdHcm91cC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkz
OTgxMTA3MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUE2QjMxM0IxQTUxRjNBOTAwNDIyOTc1IC8qIFN0b3JhZ2VUcmFja2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDMkU0NjRFMEZEOEE5NjgwMEE5RDlERSAvKiBXZWJWaWV3RGF0YS5tbSBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1NTM3KQorKysgU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTUtMDYtMTMgIEh5dW5nd29vayBMZWUgIDxoeXVuZ3dvb2subGVlQG5hdmVyY29ycC5jb20+
CisKKyAgICAgICAgW1dpbl0gSW1wbGVtZW50IFdlYlZpZXdHcm91cCB0byBzdXBwb3J0IFdlYlZp
ZXc6OmFkZHh4eFRvR3JvdXAoKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NTkwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgV2ViVmlld0dyb3VwIGNsYXNzIHNoYXJpbmcgb24gTWFjIGFuZCBX
aW4gcG9ydC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5tbTogUmVtb3ZlZC4K
KwogMjAxNS0wNi0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uKCkgbmVlZHMgdG8gYmUgYWJsZSB0byBhY2NlcHQgYSBy
YXcgdGhyb3duIHZhbHVlIGluIGFkZGl0aW9uIHRvIEV4Y2VwdGlvbiBvYmplY3RzLgpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgJKHJl
dmlzaW9uIDE4NTQwMSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZp
ZXdHcm91cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI7Ci1jbGFzcyBVc2VyQ29udGVudENvbnRyb2xsZXI7
Ci19Ci0KLWNsYXNzIFdlYlZpc2l0ZWRMaW5rU3RvcmU7Ci0KLUBjbGFzcyBXZWJWaWV3OwotCi1j
bGFzcyBXZWJWaWV3R3JvdXAgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWV3R3JvdXA+IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYlZpZXdHcm91cD4gZ2V0T3JDcmVhdGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7Ci0g
ICAgfldlYlZpZXdHcm91cCgpOwotCi0gICAgc3RhdGljIFdlYlZpZXdHcm91cCogZ2V0KGNvbnN0
IFN0cmluZyYgbmFtZSk7Ci0KLSAgICB2b2lkIGFkZFdlYlZpZXcoV2ViVmlldyAqKTsKLSAgICB2
b2lkIHJlbW92ZVdlYlZpZXcoV2ViVmlldyAqKTsKLQotICAgIFdlYkNvcmU6OlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlciYgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7Ci0gICAgV2ViQ29yZTo6
VXNlckNvbnRlbnRDb250cm9sbGVyJiB1c2VyQ29udGVudENvbnRyb2xsZXIoKSB7IHJldHVybiBt
X3VzZXJDb250ZW50Q29udHJvbGxlci5nZXQoKTsgfQotICAgIFdlYlZpc2l0ZWRMaW5rU3RvcmUm
IHZpc2l0ZWRMaW5rU3RvcmUoKSB7IHJldHVybiBtX3Zpc2l0ZWRMaW5rU3RvcmUuZ2V0KCk7IH0K
LQotcHJpdmF0ZToKLSAgICBXZWJWaWV3R3JvdXAoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7Ci0KLSAgICBTdHJpbmcgbV9uYW1lOwot
ICAgIEhhc2hTZXQ8V2ViVmlldyAqPiBtX3dlYlZpZXdzOwotCi0gICAgU3RyaW5nIG1fbG9jYWxT
dG9yYWdlRGF0YWJhc2VQYXRoOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI+IG1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwotCi0gICAgUmVmPFdlYkNvcmU6
OlVzZXJDb250ZW50Q29udHJvbGxlcj4gbV91c2VyQ29udGVudENvbnRyb2xsZXI7Ci0gICAgUmVm
PFdlYlZpc2l0ZWRMaW5rU3RvcmU+IG1fdmlzaXRlZExpbmtTdG9yZTsKLX07CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLm1tCShyZXZp
c2lvbiAxODU0MDEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3
R3JvdXAubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJXZWJWaWV3R3JvdXAuaCIKLQotI2ltcG9ydCAiV2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmgiCi0jaW1wb3J0ICJXZWJWaWV3LmgiCi0jaW1wb3J0ICJXZWJWaXNpdGVkTGlua1N0
b3JlLmgiCi0jaW1wb3J0IDxXZWJDb3JlL1VzZXJDb250ZW50Q29udHJvbGxlci5oPgotI2ltcG9y
dCA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi0vLyBBbnkgbmFtZWQgZ3JvdXBzIHdpbGwg
bGl2ZSBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBwcm9jZXNzLCB0aGFua3MgdG8gdGhlIHJlZmVy
ZW5jZSBoZWxkIGJ5IHRoZSBSZWZQdHIuCi1zdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxX
ZWJWaWV3R3JvdXA+PiYgd2ViVmlld0dyb3VwcygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViVmlld0dyb3VwPj4+IHdlYlZpZXdHcm91cHM7
Ci0KLSAgICByZXR1cm4gd2ViVmlld0dyb3VwczsKLX0KLQotUmVmUHRyPFdlYlZpZXdHcm91cD4g
V2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKQotewotICAgIGlmIChuYW1lLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWV3R3JvdXAoU3RyaW5nKCksIGxvY2Fs
U3RvcmFnZURhdGFiYXNlUGF0aCkpOwotCi0gICAgYXV0byYgd2ViVmlld0dyb3VwID0gd2ViVmll
d0dyb3VwcygpLmFkZChuYW1lLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgaWYgKCF3
ZWJWaWV3R3JvdXApCi0gICAgICAgIHdlYlZpZXdHcm91cCA9IGFkb3B0UmVmKG5ldyBXZWJWaWV3
R3JvdXAobmFtZSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7Ci0gICAgZWxzZSBpZiAoIXdl
YlZpZXdHcm91cC0+bV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgJiYgd2ViVmlld0dyb3VwLT5t
X2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5pc0VtcHR5KCkgJiYgIWxvY2FsU3RvcmFnZURhdGFi
YXNlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGggPSBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGg7Ci0KLSAgICByZXR1cm4gd2Vi
Vmlld0dyb3VwOwotfQotCi1XZWJWaWV3R3JvdXAqIFdlYlZpZXdHcm91cDo6Z2V0KGNvbnN0IFN0
cmluZyYgbmFtZSkKLXsKLSAgICBBU1NFUlQoIW5hbWUuaXNFbXB0eSgpKTsKLQotICAgIHJldHVy
biB3ZWJWaWV3R3JvdXBzKCkuZ2V0KG5hbWUpOwotfQotCi1XZWJWaWV3R3JvdXA6OldlYlZpZXdH
cm91cChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJh
c2VQYXRoKQotICAgIDogbV9uYW1lKG5hbWUpCi0gICAgLCBtX2xvY2FsU3RvcmFnZURhdGFiYXNl
UGF0aChsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCi0gICAgLCBtX3VzZXJDb250ZW50Q29udHJv
bGxlcihVc2VyQ29udGVudENvbnRyb2xsZXI6OmNyZWF0ZSgpKQotICAgICwgbV92aXNpdGVkTGlu
a1N0b3JlKFdlYlZpc2l0ZWRMaW5rU3RvcmU6OmNyZWF0ZSgpKQotewotfQotCi1XZWJWaWV3R3Jv
dXA6On5XZWJWaWV3R3JvdXAoKQotewotICAgIEFTU0VSVChtX25hbWUuaXNFbXB0eSgpKTsKLSAg
ICBBU1NFUlQobV93ZWJWaWV3cy5pc0VtcHR5KCkpOwotfQotCi12b2lkIFdlYlZpZXdHcm91cDo6
YWRkV2ViVmlldyhXZWJWaWV3ICp3ZWJWaWV3KQotewotICAgIEFTU0VSVCghbV93ZWJWaWV3cy5j
b250YWlucyh3ZWJWaWV3KSk7Ci0KLSAgICBtX3dlYlZpZXdzLmFkZCh3ZWJWaWV3KTsKLX0KLQot
dm9pZCBXZWJWaWV3R3JvdXA6OnJlbW92ZVdlYlZpZXcoV2ViVmlldyAqd2ViVmlldykKLXsKLSAg
ICBBU1NFUlQobV93ZWJWaWV3cy5jb250YWlucyh3ZWJWaWV3KSk7Ci0KLSAgICBtX3dlYlZpZXdz
LnJlbW92ZSh3ZWJWaWV3KTsKLX0KLQotU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyJiBXZWJWaWV3
R3JvdXA6OnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpCi17Ci0gICAgaWYgKCFtX3N0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcikKLSAgICAgICAgbV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZShtX2xvY2FsU3RvcmFnZURhdGFiYXNl
UGF0aCk7Ci0KLSAgICByZXR1cm4gKm1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwotfQpJbmRl
eDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1NTM3KQorKysgU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTUtMDYtMTMgIEh5
dW5nd29vayBMZWUgIDxoeXVuZ3dvb2subGVlQG5hdmVyY29ycC5jb20+CisKKyAgICAgICAgW1dp
bl0gSW1wbGVtZW50IFdlYlZpZXdHcm91cCB0byBzdXBwb3J0IFdlYlZpZXc6OmFkZHh4eFRvR3Jv
dXAoKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NTkwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
a2UgV2ViVmlld0dyb3VwIGNsYXNzIHNoYXJpbmcgb24gTWFjIGFuZCBXaW4gcG9ydC4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuY3BwOgorICAgICAgICAo
dmlzaXRlZExpbmtTdG9yZXMpOgorICAgICAgICAoV2ViVmlzaXRlZExpbmtTdG9yZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYlZpc2l0ZWRMaW5rU3RvcmU6OldlYlZpc2l0ZWRMaW5rU3RvcmUpOgor
ICAgICAgICAoV2ViVmlzaXRlZExpbmtTdG9yZTo6fldlYlZpc2l0ZWRMaW5rU3RvcmUpOgorICAg
ICAgICAoV2ViVmlzaXRlZExpbmtTdG9yZTo6c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpOgor
ICAgICAgICAoV2ViVmlzaXRlZExpbmtTdG9yZTo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKToKKyAg
ICAgICAgKFdlYlZpc2l0ZWRMaW5rU3RvcmU6OnNpbmdsZXRvbik6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oOgorICAgICAgICAqIFdlYlZp
ZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6fldlYlZpZXcpOgorICAgICAgICAoV2ViVmlldzo6
aW5pdFdpdGhGcmFtZSk6CisgICAgICAgIChXZWJWaWV3OjpzZXRHcm91cE5hbWUpOgorICAgICAg
ICAoV2ViVmlldzo6YWRkVmlzaXRlZExpbmtzKToKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisKIDIw
MTUtMDYtMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkNv
cmU6OnJlcG9ydEV4Y2VwdGlvbigpIG5lZWRzIHRvIGJlIGFibGUgdG8gYWNjZXB0IGEgcmF3IHRo
cm93biB2YWx1ZSBpbiBhZGRpdGlvbiB0byBFeGNlcHRpb24gb2JqZWN0cy4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxODU0MDEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIldlYlBy
ZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0V29ybGQuaCIKICNpbmNsdWRlICJXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJWaWV3R3JvdXAuaCIKICNp
bmNsdWRlICJXZWJWaXNpdGVkTGlua1N0b3JlLmgiCiAjaW5jbHVkZSAicmVzb3VyY2UuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CkBAIC0xNTIsNiArMTUzLDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0
aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3lzdGVtSW5mby5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvVXNlckNvbnRlbnRDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNz
YWdlQnJvYWRjYXN0ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd3NUb3VjaC5oPgogI2lu
Y2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CkBAIC00NTcsNiArNDU5LDggQEAgV2ViVmll
dzo6fldlYlZpZXcoKQogICAgIEFTU0VSVCghbV9sYXllclRyZWVIb3N0KTsKICNlbmRpZgogCisg
ICAgbV93ZWJWaWV3R3JvdXAtPnJlbW92ZVdlYlZpZXcodGhpcyk7CisKICAgICBXZWJWaWV3Q291
bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViVmlldyIpOwpAQCAtMjgxOCw2ICsyODIyLDkgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJWaWV3Ojppbml0VwogCiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVj
dG9yQ2xpZW50KHRoaXMpOwogCisgICAgbV93ZWJWaWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6Omdl
dE9yQ3JlYXRlKGdyb3VwTmFtZSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKG1fcHJlZmVyZW5j
ZXMuZ2V0KCkpKTsKKyAgICBtX3dlYlZpZXdHcm91cC0+YWRkV2ViVmlldyh0aGlzKTsKKwogICAg
IFBhZ2VDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAgICAgY29uZmlndXJhdGlvbi5jaHJv
bWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHRoaXMpOwogICAgIGNvbmZpZ3VyYXRpb24u
Y29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29udGV4dE1lbnVDbGllbnQodGhpcyk7CkBAIC0y
ODI2LDkgKzI4MzMsMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojppbml0
VwogICAgIGNvbmZpZ3VyYXRpb24uaW5zcGVjdG9yQ2xpZW50ID0gbV9pbnNwZWN0b3JDbGllbnQ7
CiAgICAgY29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBuZXcgV2ViRnJh
bWVMb2FkZXJDbGllbnQ7CiAgICAgY29uZmlndXJhdGlvbi5kYXRhYmFzZVByb3ZpZGVyID0gJldl
YkRhdGFiYXNlUHJvdmlkZXI6OnNpbmdsZXRvbigpOwotICAgIGNvbmZpZ3VyYXRpb24uc3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyID0gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGUo
bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKG1fcHJlZmVyZW5jZXMuZ2V0KCkpKTsKKyAgICBjb25m
aWd1cmF0aW9uLnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA9ICZtX3dlYlZpZXdHcm91cC0+c3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7CiAgICAgY29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNr
ZXJDbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KGNvbmZpZ3VyYXRp
b24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lKTsKLSAgICBjb25maWd1cmF0aW9uLnZpc2l0ZWRM
aW5rU3RvcmUgPSAmV2ViVmlzaXRlZExpbmtTdG9yZTo6c2luZ2xldG9uKCk7CisgICAgY29uZmln
dXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSAmbV93ZWJWaWV3R3JvdXAtPnVzZXJDb250
ZW50Q29udHJvbGxlcigpOworICAgIGNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtTdG9yZSA9ICZt
X3dlYlZpZXdHcm91cC0+dmlzaXRlZExpbmtTdG9yZSgpOwogCiAgICAgbV9wYWdlID0gbmV3IFBh
Z2UoY29uZmlndXJhdGlvbik7CiAgICAgcHJvdmlkZUdlb2xvY2F0aW9uVG8obV9wYWdlLCBuZXcg
V2ViR2VvbG9jYXRpb25DbGllbnQodGhpcykpOwpAQCAtMzY5NSw4ICszNzAzLDE3IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6cmVnaXMKIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVmlldzo6c2V0R3JvdXBOYW1lKCAKICAgICAgICAgLyogW2luXSAqLyBCU1RSIGdy
b3VwTmFtZSkKIHsKKyAgICBpZiAobV93ZWJWaWV3R3JvdXApCisgICAgICAgIG1fd2ViVmlld0dy
b3VwLT5yZW1vdmVXZWJWaWV3KHRoaXMpOworCisgICAgbV93ZWJWaWV3R3JvdXAgPSBXZWJWaWV3
R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKG1f
cHJlZmVyZW5jZXMuZ2V0KCkpKTsKKyAgICBtX3dlYlZpZXdHcm91cC0+YWRkV2ViVmlldyh0aGlz
KTsKKwogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gU19PSzsKKworICAgIG1fcGFn
ZS0+c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKCZtX3dlYlZpZXdHcm91cC0+dXNlckNvbnRlbnRD
b250cm9sbGVyKCkpOworICAgIG1fcGFnZS0+c2V0VmlzaXRlZExpbmtTdG9yZShtX3dlYlZpZXdH
cm91cC0+dmlzaXRlZExpbmtTdG9yZSgpKTsKICAgICBtX3BhZ2UtPnNldEdyb3VwTmFtZSh0b1N0
cmluZyhncm91cE5hbWUpKTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTY1MDQsNyArNjUyMSw3
IEBAIEhSRVNVTFQgV2ViVmlldzo6aGlzdG9yeURlbGVnYXRlKElXZWJIaXMKIAogSFJFU1VMVCBX
ZWJWaWV3OjphZGRWaXNpdGVkTGlua3MoQlNUUiogdmlzaXRlZFVSTHMsIHVuc2lnbmVkIHZpc2l0
ZWRVUkxDb3VudCkKIHsKLSAgICBhdXRvJiB2aXNpdGVkTGlua1N0b3JlID0gV2ViVmlzaXRlZExp
bmtTdG9yZTo6c2luZ2xldG9uKCk7CisgICAgYXV0byYgdmlzaXRlZExpbmtTdG9yZSA9IG1fd2Vi
Vmlld0dyb3VwLT52aXNpdGVkTGlua1N0b3JlKCk7CiAgICAgUGFnZUdyb3VwJiBncm91cCA9IGNv
cmUodGhpcyktPmdyb3VwKCk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZp
c2l0ZWRVUkxDb3VudDsgKytpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCShyZXZpc2lvbiAxODU0
MDEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDYgKzcwLDcgQEAgY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50OwogI2lmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkKIGNsYXNzIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OwogI2VuZGlmCitj
bGFzcyBXZWJWaWV3R3JvdXA7CiAKIFdlYlZpZXcqIGtpdChXZWJDb3JlOjpQYWdlKik7CiBXZWJD
b3JlOjpQYWdlKiBjb3JlKElXZWJWaWV3Kik7CkBAIC0xMTU5LDYgKzExNjAsOCBAQCBwcm90ZWN0
ZWQ6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkZ1bGxTY3JlZW5Db250cm9sbGVyPiBt
X2Z1bGxzY3JlZW5Db250cm9sbGVyOwogICAgIFdlYkNvcmU6OkludFBvaW50IG1fc2Nyb2xsUG9z
aXRpb247CiAjZW5kaWYKKworICAgIFJlZlB0cjxXZWJWaWV3R3JvdXA+IG1fd2ViVmlld0dyb3Vw
OwogfTsKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJWaXNpdGVkTGlua1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmNwcAkocmV2aXNpb24gMTg1NDAxKQor
KysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDIwICszNCwyNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogc3RhdGljIGJvb2wgc19zaG91bGRUcmFja1Zpc2l0ZWRMaW5rczsKIAotV2ViVmlz
aXRlZExpbmtTdG9yZSYgV2ViVmlzaXRlZExpbmtTdG9yZTo6c2luZ2xldG9uKCkKK3N0YXRpYyBI
YXNoU2V0PFdlYlZpc2l0ZWRMaW5rU3RvcmUqPiYgdmlzaXRlZExpbmtTdG9yZXMoKQogewotICAg
IHN0YXRpYyBXZWJWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlID0gKmFkb3B0UmVm
KG5ldyBXZWJWaXNpdGVkTGlua1N0b3JlKS5sZWFrUmVmKCk7Ci0gICAgCi0gICAgcmV0dXJuIHZp
c2l0ZWRMaW5rU3RvcmU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8V2ViVmlz
aXRlZExpbmtTdG9yZSo+PiB2aXNpdGVkTGlua1N0b3JlczsKKworICAgIHJldHVybiB2aXNpdGVk
TGlua1N0b3JlczsKK30KKworUmVmPFdlYlZpc2l0ZWRMaW5rU3RvcmU+IFdlYlZpc2l0ZWRMaW5r
U3RvcmU6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVmlzaXRlZExp
bmtTdG9yZSk7CiB9CiAKIFdlYlZpc2l0ZWRMaW5rU3RvcmU6OldlYlZpc2l0ZWRMaW5rU3RvcmUo
KQogICAgIDogbV92aXNpdGVkTGlua3NQb3B1bGF0ZWQoZmFsc2UpCiB7CisgICAgdmlzaXRlZExp
bmtTdG9yZXMoKS5hZGQodGhpcyk7CiB9CiAKIFdlYlZpc2l0ZWRMaW5rU3RvcmU6On5XZWJWaXNp
dGVkTGlua1N0b3JlKCkKIHsKKyAgICB2aXNpdGVkTGlua1N0b3JlcygpLnJlbW92ZSh0aGlzKTsK
IH0KIAogdm9pZCBXZWJWaXNpdGVkTGlua1N0b3JlOjpzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5r
cyhib29sIHNob3VsZFRyYWNrVmlzaXRlZExpbmtzKQpAQCAtNjIsNyArNjksOCBAQCB2b2lkIFdl
YlZpc2l0ZWRMaW5rU3RvcmU6OnNldFNob3VsZFRyYWNrCiAKIHZvaWQgV2ViVmlzaXRlZExpbmtT
dG9yZTo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCkKIHsKLSAgICBXZWJWaXNpdGVkTGlua1N0b3Jl
OjpzaW5nbGV0b24oKS5yZW1vdmVWaXNpdGVkTGlua0hhc2hlcygpOworICAgIGZvciAoYXV0byYg
dmlzaXRlZExpbmtTdG9yZSA6IHZpc2l0ZWRMaW5rU3RvcmVzKCkpCisgICAgICAgIHZpc2l0ZWRM
aW5rU3RvcmUtPnJlbW92ZVZpc2l0ZWRMaW5rSGFzaGVzKCk7CiAgICAgUGFnZUNhY2hlOjpzaW5n
bGV0b24oKS5tYXJrUGFnZXNGb3JWaXNpdGVkTGlua1N0eWxlUmVjYWxjKCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVk
TGlua1N0b3JlLmgJKHJldmlzaW9uIDE4NTQwMSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCAr
MzIsNyBAQAogCiBjbGFzcyBXZWJWaXNpdGVkTGlua1N0b3JlIGZpbmFsIDogcHVibGljIFdlYkNv
cmU6OlZpc2l0ZWRMaW5rU3RvcmUgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJWaXNpdGVkTGlu
a1N0b3JlJiBzaW5nbGV0b24oKTsKLSAgICBXZWJWaXNpdGVkTGlua1N0b3JlKCk7CisgICAgc3Rh
dGljIFJlZjxXZWJWaXNpdGVkTGlua1N0b3JlPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5XZWJW
aXNpdGVkTGlua1N0b3JlKCk7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRTaG91bGRUcmFja1Zpc2l0
ZWRMaW5rcyhib29sKTsKQEAgLTQyLDYgKzQxLDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkVmlz
aXRlZExpbmsoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwogCiBwcml2YXRlOgorICAgIFdlYlZp
c2l0ZWRMaW5rU3RvcmUoKTsKKwogICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNv
cmU6OlBhZ2UmLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJM
LCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpMaW5rSGFzaCkg
b3ZlcnJpZGU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254855</attachid>
            <date>2015-06-13 07:04:30 -0700</date>
            <delta_ts>2015-06-18 01:41:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>38063</size>
            <attacher name="Hyungwook Lee">hyungwook.lee</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODU1MzcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTA2LTEzICBIeXVuZ3dvb2sg
TGVlICA8aHl1bmd3b29rLmxlZUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtXaW5dIEltcGxl
bWVudCBXZWJWaWV3R3JvdXAgdG8gc3VwcG9ydCBXZWJWaWV3OjphZGR4eHhUb0dyb3VwKCkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU5MDgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFdlYlZp
ZXdHcm91cCBjbGFzcyBzaGFyaW5nIG9uIE1hYyBhbmQgV2luIHBvcnQuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dy
b3VwLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Vmlld0dyb3VwLm1tLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAu
aC4KKyAgICAgICAgKiBXZWJLaXQudmN4cHJvai9XZWJLaXQvV2ViS2l0LnZjeHByb2o6CisgICAg
ICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdENvbW1vbi5wcm9wczoKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNS0wNi0wOSAgQ3NhYmEg
T3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtjbWFrZV0gRml4IHRo
ZSBzdHlsZSBpc3N1ZXMgaW4gY21ha2UgcHJvamVjdCBmaWxlcwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcAkocmV2aXNpb24gMTg1NDAxKQko
ZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAubW06MTg1
NDAxKQorKysgU291cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2Vi
Vmlld0dyb3VwLmgiCisKKyNpbXBvcnQgIldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIgor
I2ltcG9ydCAiV2ViVmlldy5oIgorI2ltcG9ydCAiV2ViVmlzaXRlZExpbmtTdG9yZS5oIgorI2lt
cG9ydCA8V2ViQ29yZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworLy8gQW55IG5hbWVkIGdyb3VwcyB3aWxsIGxpdmUgZm9yIHRo
ZSBsaWZldGltZSBvZiB0aGUgcHJvY2VzcywgdGhhbmtzIHRvIHRoZSByZWZlcmVuY2UgaGVsZCBi
eSB0aGUgUmVmUHRyLgorc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViVmlld0dyb3Vw
Pj4mIHdlYlZpZXdHcm91cHMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFw
PFN0cmluZywgUmVmUHRyPFdlYlZpZXdHcm91cD4+PiB3ZWJWaWV3R3JvdXBzOworCisgICAgcmV0
dXJuIHdlYlZpZXdHcm91cHM7Cit9CisKK1JlZlB0cjxXZWJWaWV3R3JvdXA+IFdlYlZpZXdHcm91
cDo6Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3Rv
cmFnZURhdGFiYXNlUGF0aCkKK3sKKyAgICBpZiAobmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViVmlld0dyb3VwKFN0cmluZygpLCBsb2NhbFN0b3JhZ2VEYXRh
YmFzZVBhdGgpKTsKKworICAgIGF1dG8mIHdlYlZpZXdHcm91cCA9IHdlYlZpZXdHcm91cHMoKS5h
ZGQobmFtZSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgIGlmICghd2ViVmlld0dyb3Vw
KQorICAgICAgICB3ZWJWaWV3R3JvdXAgPSBhZG9wdFJlZihuZXcgV2ViVmlld0dyb3VwKG5hbWUs
IGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkpOworICAgIGVsc2UgaWYgKCF3ZWJWaWV3R3JvdXAt
Pm1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyICYmIHdlYlZpZXdHcm91cC0+bV9sb2NhbFN0b3Jh
Z2VEYXRhYmFzZVBhdGguaXNFbXB0eSgpICYmICFsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGguaXNF
bXB0eSgpKQorICAgICAgICB3ZWJWaWV3R3JvdXAtPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRo
ID0gbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoOworCisgICAgcmV0dXJuIHdlYlZpZXdHcm91cDsK
K30KKworV2ViVmlld0dyb3VwKiBXZWJWaWV3R3JvdXA6OmdldChjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisgICAgQVNTRVJUKCFuYW1lLmlzRW1wdHkoKSk7CisKKyAgICByZXR1cm4gd2ViVmlld0dy
b3VwcygpLmdldChuYW1lKTsKK30KKworV2ViVmlld0dyb3VwOjpXZWJWaWV3R3JvdXAoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKKyAg
ICA6IG1fbmFtZShuYW1lKQorICAgICwgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgobG9jYWxT
dG9yYWdlRGF0YWJhc2VQYXRoKQorICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoVXNlckNv
bnRlbnRDb250cm9sbGVyOjpjcmVhdGUoKSkKKyAgICAsIG1fdmlzaXRlZExpbmtTdG9yZShXZWJW
aXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKK3sKK30KKworV2ViVmlld0dyb3VwOjp+V2ViVmll
d0dyb3VwKCkKK3sKKyAgICBBU1NFUlQobV9uYW1lLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1f
d2ViVmlld3MuaXNFbXB0eSgpKTsKK30KKwordm9pZCBXZWJWaWV3R3JvdXA6OmFkZFdlYlZpZXco
V2ViVmlldyAqd2ViVmlldykKK3sKKyAgICBBU1NFUlQoIW1fd2ViVmlld3MuY29udGFpbnMod2Vi
VmlldykpOworCisgICAgbV93ZWJWaWV3cy5hZGQod2ViVmlldyk7Cit9CisKK3ZvaWQgV2ViVmll
d0dyb3VwOjpyZW1vdmVXZWJWaWV3KFdlYlZpZXcgKndlYlZpZXcpCit7CisgICAgQVNTRVJUKG1f
d2ViVmlld3MuY29udGFpbnMod2ViVmlldykpOworCisgICAgbV93ZWJWaWV3cy5yZW1vdmUod2Vi
Vmlldyk7Cit9CisKK1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciYgV2ViVmlld0dyb3VwOjpzdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIoKQoreworICAgIGlmICghbV9zdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIpCisgICAgICAgIG1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpjcmVhdGUobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOworCisg
ICAgcmV0dXJuICptX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsKK30KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHAJKHJldmlzaW9uIDE4NTQw
MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjMsMTQgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2ltcG9ydCAiV2ViVmlld0dyb3VwLmgiCisjaW5jbHVkZSAiV2Vi
Vmlld0dyb3VwLmgiCiAKLSNpbXBvcnQgIldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIgot
I2ltcG9ydCAiV2ViVmlldy5oIgotI2ltcG9ydCAiV2ViVmlzaXRlZExpbmtTdG9yZS5oIgotI2lt
cG9ydCA8V2ViQ29yZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgotI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUg
IldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIKKyNp
bmNsdWRlICJXZWJWaXNpdGVkTGlua1N0b3JlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29u
dGVudENvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgJKHJl
dmlzaW9uIDE4NTQwMSkJKGZyb20gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Vmlld0dyb3VwLmg6MTg1NDAxKQorKysgU291cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJW
aWV3R3JvdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOworY2xhc3MgVXNlckNvbnRlbnRDb250cm9sbGVy
OworfQorCitjbGFzcyBXZWJWaXNpdGVkTGlua1N0b3JlOworCitAY2xhc3MgV2ViVmlldzsKKwor
Y2xhc3MgV2ViVmlld0dyb3VwIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlld0dyb3VwPiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxXZWJWaWV3R3JvdXA+IGdldE9yQ3JlYXRlKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwor
ICAgIH5XZWJWaWV3R3JvdXAoKTsKKworICAgIHN0YXRpYyBXZWJWaWV3R3JvdXAqIGdldChjb25z
dCBTdHJpbmcmIG5hbWUpOworCisgICAgdm9pZCBhZGRXZWJWaWV3KFdlYlZpZXcgKik7CisgICAg
dm9pZCByZW1vdmVXZWJWaWV3KFdlYlZpZXcgKik7CisKKyAgICBXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXImIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpOworICAgIFdlYkNvcmU6
OlVzZXJDb250ZW50Q29udHJvbGxlciYgdXNlckNvbnRlbnRDb250cm9sbGVyKCkgeyByZXR1cm4g
bV91c2VyQ29udGVudENvbnRyb2xsZXIuZ2V0KCk7IH0KKyAgICBXZWJWaXNpdGVkTGlua1N0b3Jl
JiB2aXNpdGVkTGlua1N0b3JlKCkgeyByZXR1cm4gbV92aXNpdGVkTGlua1N0b3JlLmdldCgpOyB9
CisKK3ByaXZhdGU6CisgICAgV2ViVmlld0dyb3VwKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOworCisgICAgU3RyaW5nIG1fbmFtZTsK
KyAgICBIYXNoU2V0PFdlYlZpZXcgKj4gbV93ZWJWaWV3czsKKworICAgIFN0cmluZyBtX2xvY2Fs
U3RvcmFnZURhdGFiYXNlUGF0aDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyPiBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsKKworICAgIFJlZjxXZWJDb3Jl
OjpVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOworICAgIFJl
ZjxXZWJWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0ZWRMaW5rU3RvcmU7Cit9OwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oCShyZXZpc2lvbiAxODU0
MDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFVzZXJDb250ZW50Q29udHJvbGxlcjsK
IAogY2xhc3MgV2ViVmlzaXRlZExpbmtTdG9yZTsKIAotQGNsYXNzIFdlYlZpZXc7CitPQkpDX0NM
QVNTIFdlYlZpZXc7CiAKIGNsYXNzIFdlYlZpZXdHcm91cCA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YlZpZXdHcm91cD4gewogcHVibGljOgpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJv
ai9XZWJLaXQvV2ViS2l0LnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJL
aXQudmN4cHJvai9XZWJLaXQvV2ViS2l0LnZjeHByb2oJKHJldmlzaW9uIDE4NTQwMSkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0yOTcsNiArMjk3LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4u
XFN0b3JhZ2VcV2ViRGF0YWJhc2VQcm92aWRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlwuLlxTdG9yYWdlXFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxjZlxXZWJDb3JlU3VwcG9ydFxXZWJJbnNwZWN0
b3JDbGllbnRDRi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxXZWJDb3Jl
U3VwcG9ydFxXZWJWaWV3R3JvdXAuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Li5cd2luXFBsdWdpbnNcbnBhcGkuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Li5cd2luXFBsdWdpbnNcUGx1Z2luRGF0YWJhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cLi5cd2luXFBsdWdpbnNcUGx1Z2luRGVidWcuY3BwIiAvPgpAQCAtNDUwLDYgKzQ1
MSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxTdG9yYWdlXFN0b3JhZ2VUcmFj
a2VyQ2xpZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxTdG9yYWdlXFdl
YkRhdGFiYXNlUHJvdmlkZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFN0
b3JhZ2VcV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlwuLlxXZWJDb3JlU3VwcG9ydFxXZWJWaWV3R3JvdXAuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHdpblxQbHVnaW5zXFBsdWdpbkRhdGFiYXNlLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx3aW5cUGx1Z2luc1xQbHVnaW5EZWJ1Zy5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFBsdWdpbnNcUGx1Z2luUGFja2Fn
ZS5oIiAvPgpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXQvV2ViS2l0
LnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hw
cm9qL1dlYktpdC9XZWJLaXQudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxODU0MDEpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4cHJvai5maWx0ZXJz
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzMsNiArMzMzLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXC4uXHdpblxXZWJLaXRNZXNzYWdlTG9vcC5jcHAiPgogICAgICAgPEZpbHRlcj5Tb3Vy
Y2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlwuLlxXZWJDb3JlU3VwcG9ydFxXZWJWaWV3R3JvdXAuY3BwIj4KKyAgICAgIDxGaWx0ZXI+U291
cmNlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1H
cm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJDb3JlU3VwcG9ydFxF
bWJlZGRlZFdpZGdldC5oIj4KQEAgLTY1NCw2ICs2NTcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cLi5cd2luXFdlYktpdE1lc3NhZ2VMb29wLmgiPgogICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXC4uXFdlYkNvcmVTdXBwb3J0XFdlYlZpZXdHcm91cC5oIj4KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgIDwvSXRlbUdyb3VwPgog
ICA8SXRlbUdyb3VwPgogICAgIDxOb25lIEluY2x1ZGU9IldlYktpdFBvc3RCdWlsZC5jbWQiIC8+
CkBAIC03NDYsNCArNzUyLDQgQEAKICAgICAgIDxGaWx0ZXI+U291cmNlc1xQbHVnaW5zPC9GaWx0
ZXI+CiAgICAgPC9NQVNNPgogICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KKzwvUHJvamVjdD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC52
Y3hwcm9qL1dlYktpdC9XZWJLaXRDb21tb24ucHJvcHMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXQvV2ViS2l0Q29tbW9uLnByb3BzCShyZXZpc2lvbiAx
ODU0MDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXRDb21t
b24ucHJvcHMJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBACiAgIDwvUHJvcGVydHlHcm91
cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcik7JChQcm9qZWN0RGlyKVwuLlwu
Llx3aW47JChQcm9qZWN0RGlyKVwuLlwuLlx3aW5cUGx1Z2luczskKFByb2plY3REaXIpXC4uXC4u
XHdpblxXZWJDb3JlU3VwcG9ydDskKFByb2plY3REaXIpXC4uXC4uXFN0b3JhZ2U7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcV2ViS2l0OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxJ
bmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxJbmNsdWRlXHByaXZhdGU7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXEluY2x1ZGVcV2ViQ29yZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
SW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxJbmNsdWRl
XHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXFdlYktpdFxEZXJpdmVkU291cmNlczskKFdlYktpdF9MaWJyYXJp
ZXMpXEluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxJbmNsdWRlXHByaXZhdGU7JChXZWJLaXRf
TGlicmFyaWVzKVxJbmNsdWRlXFdlYkNvcmU7JChXZWJLaXRfTGlicmFyaWVzKVxJbmNsdWRlXFdl
YkNvcmVcRm9yd2FyZGluZ0hlYWRlcnM7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHNxbGl0
ZTskKFdlYktpdF9MaWJyYXJpZXMpXEluY2x1ZGVcSmF2YVNjcmlwdENvcmU7JChXZWJLaXRfTGli
cmFyaWVzKVxJbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JChJbnREaXIpaW5jbHVkZTsl
KEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKTsk
KFByb2plY3REaXIpXC4uXC4uXHdpbjskKFByb2plY3REaXIpXC4uXC4uXHdpblxQbHVnaW5zOyQo
UHJvamVjdERpcilcLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0OyQoUHJvamVjdERpcilcLi5cLi5c
U3RvcmFnZTskKFByb2plY3REaXIpXC4uXC4uXFdlYkNvcmVTdXBwb3J0OyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxpbmNsdWRlXFdlYktpdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVk
ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxJbmNsdWRlXFdlYkNvcmU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXEluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5j
bHVkZVxKYXZhU2NyaXB0Q29yZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZVxwcml2
YXRlXEphdmFTY3JpcHRDb3JlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVxXZWJLaXRcRGVyaXZlZFNvdXJjZXM7JChXZWJLaXRfTGlicmFyaWVzKVxJ
bmNsdWRlOyQoV2ViS2l0X0xpYnJhcmllcylcSW5jbHVkZVxwcml2YXRlOyQoV2ViS2l0X0xpYnJh
cmllcylcSW5jbHVkZVxXZWJDb3JlOyQoV2ViS2l0X0xpYnJhcmllcylcSW5jbHVkZVxXZWJDb3Jl
XEZvcndhcmRpbmdIZWFkZXJzOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVxzcWxpdGU7JChX
ZWJLaXRfTGlicmFyaWVzKVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlOyQoV2ViS2l0X0xpYnJhcmll
cylcSW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyQoSW50RGlyKWluY2x1ZGU7JShBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4K
ICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XRUJLSVRfRVhQT1JUUztGUkFNRVdPUktf
TkFNRT1XZWJLaXQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmlu
aXRpb25zPgogICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+
CiAgICAgICA8UHJlY29tcGlsZWRIZWFkZXJGaWxlPldlYktpdFByZWZpeC5oPC9QcmVjb21waWxl
ZEhlYWRlckZpbGU+CkBAIC0xNyw0ICsxNyw0IEBACiAgICAgICA8RGVsYXlMb2FkRExMcz51c3Ax
MC5kbGw7Y29tY3RsMzIuZGxsO3ZlcnNpb24uZGxsO2lwaGxwYXBpLmRsbDslKERlbGF5TG9hZERM
THMpPC9EZWxheUxvYWRETExzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3Vw
PgotPC9Qcm9qZWN0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTg1NDAxKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTksNiArMTksOCBAQAogCQkwQUI3NTIzODBG
QTJFNERCMDBEN0NCQjEgLyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRleHRJbmZvLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEFCNzUyMzYw
RkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tDb250ZXh0SW5mby5t
bSAqLzsgfTsKIAkJMEFFQkZGNjMwRjlGQThCRTAwMEQ0ODZCIC8qIFdlYk5ldHNjYXBlQ29udGFp
bmVyQ2hlY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwQUVCRkY2MTBGOUZBOEJFMDAwRDQ4NkIgLyogV2ViTmV0c2NhcGVDb250YWluZXJD
aGVja1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwQUVCRkY2NDBGOUZBOEJFMDAwRDQ4NkIgLyogV2ViTmV0c2NhcGVDb250YWluZXJD
aGVja1ByaXZhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwQUVCRkY2MjBGOUZBOEJFMDAwRDQ4NkIgLyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVj
a1ByaXZhdGUubW0gKi87IH07CisJCTE0MzBDMTJDMUIyQzVERjcwMERFQTAxRCAvKiBXZWJWaWV3
R3JvdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTQzMEMxMkExQjJDNURGNzAwREVBMDFEIC8qIFdlYlZpZXdHcm91cC5jcHAgKi87IH07CisJCTE0
MzBDMTJEMUIyQzVERjcwMERFQTAxRCAvKiBXZWJWaWV3R3JvdXAuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MzBDMTJCMUIyQzVERjcwMERFQTAxRCAv
KiBXZWJWaWV3R3JvdXAuaCAqLzsgfTsKIAkJMTREODI1MkYwQUY5NTUwOTAwMDRGMDU3IC8qIFdl
YkNocm9tZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTREODI1MkQwQUY5NTUwOTAwMDRGMDU3IC8qIFdlYkNocm9tZUNsaWVudC5oICovOyB9
OwogCQkxNEQ4MjUzMDBBRjk1NTA5MDAwNEYwNTcgLyogV2ViQ2hyb21lQ2xpZW50Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREODI1MkUwQUY5NTUw
OTAwMDRGMDU3IC8qIFdlYkNocm9tZUNsaWVudC5tbSAqLzsgfTsKIAkJMUEyREJFOUYwRjI1MUUz
QTAwMzZGOEE2IC8qIFByb3h5SW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBMkRCRTlEMEYyNTFFM0EwMDM2RjhBNiAvKiBQcm94eUluc3Rh
bmNlLmggKi87IH07CkBAIC03Niw4ICs3OCw2IEBACiAJCTFBQUY1RDBGMEVEREU3QTcwMDhEODgz
RCAvKiBXZWJLaXRQbHVnaW5BZ2VudC5kZWZzIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFBRjU4OEEwRURDQ0VBMzAwOEQ4ODNEIC8qIFdlYktpdFBsdWdp
bkFnZW50LmRlZnMgKi87IH07CiAJCTFBQUY1RkJGMEVERTNBOTIwMDhEODgzRCAvKiBXZWJIb3N0
ZWROZXRzY2FwZVBsdWdpblZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBQUY1RkJEMEVERTNBOTIwMDhEODgzRCAvKiBXZWJIb3N0ZWROZXRzY2Fw
ZVBsdWdpblZpZXcuaCAqLzsgfTsKIAkJMUFBRjVGQzAwRURFM0E5MjAwOEQ4ODNEIC8qIFdlYkhv
c3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBQUY1RkJFMEVERTNBOTIwMDhEODgzRCAvKiBXZWJIb3N0ZWROZXRz
Y2FwZVBsdWdpblZpZXcubW0gKi87IH07Ci0JCTFBQjFEQUMxMThCQzAyMzIwMDRCNkE5RiAvKiBX
ZWJWaWV3R3JvdXAubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUIxREFCRjE4QkMwMjMyMDA0QjZBOUYgLyogV2ViVmlld0dyb3VwLm1tICovOyB9Owot
CQkxQUIxREFDMjE4QkMwMjMyMDA0QjZBOUYgLyogV2ViVmlld0dyb3VwLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxREFDMDE4QkMwMjMyMDA0QjZB
OUYgLyogV2ViVmlld0dyb3VwLmggKi87IH07CiAJCTFBQzcxNzZFMUEyNjU2OEEwMDJFMzExNSAv
KiBXZWJWaXNpdGVkTGlua1N0b3JlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUFDNzE3NkMxQTI2NTY4QTAwMkUzMTE1IC8qIFdlYlZpc2l0ZWRMaW5r
U3RvcmUubW0gKi87IH07CiAJCTFBQzcxNzZGMUEyNjU2OEEwMDJFMzExNSAvKiBXZWJWaXNpdGVk
TGlua1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUM3MTc2RDFBMjY1NjhBMDAyRTMxMTUgLyogV2ViVmlzaXRlZExpbmtTdG9yZS5oICovOyB9
OwogCQkxQUVBNjZENDBEQzZCMUZGMDAzRDEyQkYgLyogV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhh
bmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
RUE2NkQyMERDNkIxRkYwMDNEMTJCRiAvKiBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5o
ICovOyB9OwpAQCAtNDc1LDYgKzQ3NSw4IEBACiAJCTBBQjc1MjM2MEZBMkU0REIwMEQ3Q0JCMSAv
KiBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29udGV4dEluZm8ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29udGV4
dEluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBBRUJGRjYxMEY5RkE4QkUw
MDBENDg2QiAvKiBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrUHJpdmF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgZmls
ZUVuY29kaW5nID0gNDsgcGF0aCA9IFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBBRUJGRjYyMEY5RkE4QkUwMDBENDg2QiAv
KiBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrUHJpdmF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tQcml2YXRlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDMwQzEyQTFCMkM1REY3MDBERUEwMUQg
LyogV2ViVmlld0dyb3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNp
dEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBuYW1l
ID0gV2ViVmlld0dyb3VwLmNwcDsgcGF0aCA9IFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5j
cHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJMTQzMEMxMkIxQjJDNURGNzAwREVB
MDFEIC8qIFdlYlZpZXdHcm91cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJWaWV3R3JvdXAuaDsgcGF0aCA9IFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oOyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTE0RDgyNTJEMEFGOTU1MDkwMDA0RjA1NyAvKiBX
ZWJDaHJvbWVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNo
cm9tZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEQ4MjUyRTBBRjk1
NTA5MDAwNEYwNTcgLyogV2ViQ2hyb21lQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViQ2hyb21lQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTJEQkU5RDBGMjUxRTNBMDAzNkY4QTYgLyogUHJveHlJbnN0YW5jZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm94eUluc3RhbmNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MjksOCArNTMxLDYgQEAKIAkJMUFBRjVEMDgwRURERTcx
RDAwOEQ4ODNEIC8qIFdlYktpdFBsdWdpbkhvc3RUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJLaXRQbHVnaW5Ib3N0VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUFBRjVGQkQwRURFM0E5MjAwOEQ4ODNEIC8qIFdlYkhvc3RlZE5ldHNjYXBl
UGx1Z2luVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJIb3N0ZWRO
ZXRzY2FwZVBsdWdpblZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBRjVG
QkUwRURFM0E5MjAwOEQ4ODNEIC8qIFdlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkhvc3RlZE5ldHNjYXBlUGx1
Z2luVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFCMURBQkYxOEJDMDIz
MjAwNEI2QTlGIC8qIFdlYlZpZXdHcm91cC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYlZpZXdHcm91cC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUFCMURBQzAxOEJDMDIzMjAwNEI2QTlGIC8qIFdlYlZpZXdHcm91cC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWV3R3JvdXAuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUFDNzE3NkMxQTI2NTY4QTAwMkUzMTE1IC8qIFdlYlZpc2l0ZWRMaW5rU3Rv
cmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaXNpdGVk
TGlua1N0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3MTc2RDFBMjY1
NjhBMDAyRTMxMTUgLyogV2ViVmlzaXRlZExpbmtTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJWaXNpdGVkTGlua1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBRUE2NkQyMERDNkIxRkYwMDNEMTJCRiAvKiBXZWJOZXRzY2FwZVBsdWdpbkV2
ZW50SGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOZXRzY2Fw
ZVBsdWdpbkV2ZW50SGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYw
Nyw4ICsxNjA3LDggQEAKIAkJCQkyREQ2MzJDMTE5RTVEMUYwMDAyRTlDN0IgLyogV2ViU2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXIubW0gKi8sCiAJCQkJOTNFQjE3OEUwOUY4OEQ1MTAwOTFGOEZG
IC8qIFdlYlN5c3RlbUludGVyZmFjZS5oICovLAogCQkJCTkzRUIxNzhDMDlGODhENDYwMDkxRjhG
RiAvKiBXZWJTeXN0ZW1JbnRlcmZhY2UubW0gKi8sCi0JCQkJMUFCMURBQzAxOEJDMDIzMjAwNEI2
QTlGIC8qIFdlYlZpZXdHcm91cC5oICovLAotCQkJCTFBQjFEQUJGMThCQzAyMzIwMDRCNkE5RiAv
KiBXZWJWaWV3R3JvdXAubW0gKi8sCisJCQkJMTQzMEMxMkExQjJDNURGNzAwREVBMDFEIC8qIFdl
YlZpZXdHcm91cC5jcHAgKi8sCisJCQkJMTQzMEMxMkIxQjJDNURGNzAwREVBMDFEIC8qIFdlYlZp
ZXdHcm91cC5oICovLAogCQkJCTFBQzcxNzZEMUEyNjU2OEEwMDJFMzExNSAvKiBXZWJWaXNpdGVk
TGlua1N0b3JlLmggKi8sCiAJCQkJMUFDNzE3NkMxQTI2NTY4QTAwMkUzMTE1IC8qIFdlYlZpc2l0
ZWRMaW5rU3RvcmUubW0gKi8sCiAJCQkpOwpAQCAtMTc0Niw3ICsxNzQ2LDYgQEAKIAkJCQk5Mzk4
MTA0OTA4MjRCRjAxMDA4REYwMzggLyogV2ViQ2xpcFZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA2NUFENUEzMEIwQzMyQzcwMDVBMkIxRCAvKiBXZWJDb250ZXh0TWVudUNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM5ODEwMTYwODI0QkYwMTAwOERGMDM4IC8qIFdlYkNvcmVTdGF0aXN0
aWNzLmggaW4gSGVhZGVycyAqLywKLQkJCQkxQUIxREFDMjE4QkMwMjMyMDA0QjZBOUYgLyogV2Vi
Vmlld0dyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0UyQTFBNDEyM0IwQjNDMDA5RkUxMkEg
LyogV2ViRGFzaGJvYXJkUmVnaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFGM0ZENzBDRUND
ODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUFFREVGMTBDRUNGNDU3MDA4NTQzMjggLyogV2ViRGF0YWJhc2VNYW5hZ2VySW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLApAQCAtMTgxNSw2ICsxODE0LDcgQEAKIAkJCQk5Mzk4MTAxNDA4
MjRCRjAxMDA4REYwMzggLyogV2ViSGlzdG9yeVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBQUY1RkJGMEVERTNBOTIwMDhEODgzRCAvKiBXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDU1MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJIVE1M
UmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTE0MzBDMTJEMUIyQzVERjcwMERF
QTAxRCAvKiBXZWJWaWV3R3JvdXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDU2MDgyNEJG
MDEwMDhERjAzOCAvKiBXZWJIVE1MUmVwcmVzZW50YXRpb25Qcml2YXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5Mzk4MTA1NzA4MjRCRjAxMDA4REYwMzggLyogV2ViSFRNTFZpZXcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBNkIzMTNEMUE1MUYzQTkwMDQyMjk3NSAvKiBTdG9yYWdlVHJhY2tlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzM0LDkgKzIzMzQsOSBAQAogCQkJCTFBNkIzMTM1
MUE1MUYzQTkwMDQyMjk3NSAvKiBTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGODM0QUFEODBFNjRCMUM3MDBFMjczN0MgLyogV2ViVGV4dEl0ZXJhdG9yLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTEwQzFEMUQxODIwMkY5QzAwMzY4ODNBIC8qIFdlYkRlZmF1bHRS
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5tIGluIFNvdXJjZXMgKi8sCisJCQkJMTQzMEMxMkMxQjJDNURG
NzAwREVBMDFEIC8qIFdlYlZpZXdHcm91cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBC
RTA4MjRCRjAxMDA4REYwMzggLyogV2ViVVJMc1dpdGhUaXRsZXMubSBpbiBTb3VyY2VzICovLAog
CQkJCUMwQzVCM0VGMTE3N0E0QTAwMDJCMEFFRiAvKiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4u
bW0gaW4gU291cmNlcyAqLywKLQkJCQkxQUIxREFDMTE4QkMwMjMyMDA0QjZBOUYgLyogV2ViVmll
d0dyb3VwLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODExMDcwODI0QkYwMTAwOERGMDM4IC8q
IFdlYlZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTZCMzEzQjFBNTFGM0E5MDA0MjI5NzUg
LyogU3RvcmFnZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyRTQ2NEUwRkQ4QTk2
ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRhLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODU1MzcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wNi0xMyAgSHl1bmd3b29rIExl
ZSAgPGh5dW5nd29vay5sZWVAbmF2ZXJjb3JwLmNvbT4KKworICAgICAgICBbV2luXSBJbXBsZW1l
bnQgV2ViVmlld0dyb3VwIHRvIHN1cHBvcnQgV2ViVmlldzo6YWRkeHh4VG9Hcm91cCgpLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1OTA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBXZWJWaWV3
R3JvdXAgY2xhc3Mgc2hhcmluZyBvbiBNYWMgYW5kIFdpbiBwb3J0LgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViVmlld0dyb3VwLm1tOiBSZW1vdmVkLgorCiAyMDE1LTA2LTExICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24o
KSBuZWVkcyB0byBiZSBhYmxlIHRvIGFjY2VwdCBhIHJhdyB0aHJvd24gdmFsdWUgaW4gYWRkaXRp
b24gdG8gRXhjZXB0aW9uIG9iamVjdHMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJWaWV3R3JvdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaAkocmV2aXNpb24gMTg1NDAxKQorKysgU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjsKLWNsYXNzIFVzZXJDb250ZW50Q29udHJvbGxlcjsKLX0KLQotY2xhc3MgV2ViVmlzaXRlZExp
bmtTdG9yZTsKLQotQGNsYXNzIFdlYlZpZXc7Ci0KLWNsYXNzIFdlYlZpZXdHcm91cCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYlZpZXdHcm91cD4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
V2ViVmlld0dyb3VwPiBnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKLSAgICB+V2ViVmlld0dyb3VwKCk7Ci0KLSAg
ICBzdGF0aWMgV2ViVmlld0dyb3VwKiBnZXQoY29uc3QgU3RyaW5nJiBuYW1lKTsKLQotICAgIHZv
aWQgYWRkV2ViVmlldyhXZWJWaWV3ICopOwotICAgIHZvaWQgcmVtb3ZlV2ViVmlldyhXZWJWaWV3
ICopOwotCi0gICAgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyJiBzdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXIoKTsKLSAgICBXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXImIHVz
ZXJDb250ZW50Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLmdl
dCgpOyB9Ci0gICAgV2ViVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSgpIHsgcmV0
dXJuIG1fdmlzaXRlZExpbmtTdG9yZS5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIFdlYlZpZXdH
cm91cChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJh
c2VQYXRoKTsKLQotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgSGFzaFNldDxXZWJWaWV3ICo+IG1f
d2ViVmlld3M7Ci0KLSAgICBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGg7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gbV9zdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI7Ci0KLSAgICBSZWY8V2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyPiBt
X3VzZXJDb250ZW50Q29udHJvbGxlcjsKLSAgICBSZWY8V2ViVmlzaXRlZExpbmtTdG9yZT4gbV92
aXNpdGVkTGlua1N0b3JlOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlZpZXdHcm91cC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAubW0JKHJldmlzaW9uIDE4NTQwMSkKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgIldlYlZpZXdHcm91cC5oIgot
Ci0jaW1wb3J0ICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKLSNpbXBvcnQgIldlYlZp
ZXcuaCIKLSNpbXBvcnQgIldlYlZpc2l0ZWRMaW5rU3RvcmUuaCIKLSNpbXBvcnQgPFdlYkNvcmUv
VXNlckNvbnRlbnRDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
LSNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci0KLS8vIEFueSBuYW1lZCBncm91cHMgd2lsbCBsaXZlIGZvciB0aGUgbGlmZXRpbWUgb2Yg
dGhlIHByb2Nlc3MsIHRoYW5rcyB0byB0aGUgcmVmZXJlbmNlIGhlbGQgYnkgdGhlIFJlZlB0ci4K
LXN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYlZpZXdHcm91cD4+JiB3ZWJWaWV3R3Jv
dXBzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxXZWJWaWV3R3JvdXA+Pj4gd2ViVmlld0dyb3VwczsKLQotICAgIHJldHVybiB3ZWJWaWV3R3Jv
dXBzOwotfQotCi1SZWZQdHI8V2ViVmlld0dyb3VwPiBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRl
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGgpCi17Ci0gICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYlZpZXdHcm91cChTdHJpbmcoKSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7Ci0K
LSAgICBhdXRvJiB3ZWJWaWV3R3JvdXAgPSB3ZWJWaWV3R3JvdXBzKCkuYWRkKG5hbWUsIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBpZiAoIXdlYlZpZXdHcm91cCkKLSAgICAgICAgd2Vi
Vmlld0dyb3VwID0gYWRvcHRSZWYobmV3IFdlYlZpZXdHcm91cChuYW1lLCBsb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGgpKTsKLSAgICBlbHNlIGlmICghd2ViVmlld0dyb3VwLT5tX3N0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlciAmJiB3ZWJWaWV3R3JvdXAtPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRo
LmlzRW1wdHkoKSAmJiAhbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLmlzRW1wdHkoKSkKLSAgICAg
ICAgd2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCA9IGxvY2FsU3RvcmFn
ZURhdGFiYXNlUGF0aDsKLQotICAgIHJldHVybiB3ZWJWaWV3R3JvdXA7Ci19Ci0KLVdlYlZpZXdH
cm91cCogV2ViVmlld0dyb3VwOjpnZXQoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIEFTU0VS
VCghbmFtZS5pc0VtcHR5KCkpOwotCi0gICAgcmV0dXJuIHdlYlZpZXdHcm91cHMoKS5nZXQobmFt
ZSk7Ci19Ci0KLVdlYlZpZXdHcm91cDo6V2ViVmlld0dyb3VwKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCi0gICAgOiBtX25hbWUobmFt
ZSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKGxvY2FsU3RvcmFnZURhdGFiYXNl
UGF0aCkKLSAgICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKFVzZXJDb250ZW50Q29udHJvbGxl
cjo6Y3JlYXRlKCkpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoV2ViVmlzaXRlZExpbmtTdG9y
ZTo6Y3JlYXRlKCkpCi17Ci19Ci0KLVdlYlZpZXdHcm91cDo6fldlYlZpZXdHcm91cCgpCi17Ci0g
ICAgQVNTRVJUKG1fbmFtZS5pc0VtcHR5KCkpOwotICAgIEFTU0VSVChtX3dlYlZpZXdzLmlzRW1w
dHkoKSk7Ci19Ci0KLXZvaWQgV2ViVmlld0dyb3VwOjphZGRXZWJWaWV3KFdlYlZpZXcgKndlYlZp
ZXcpCi17Ci0gICAgQVNTRVJUKCFtX3dlYlZpZXdzLmNvbnRhaW5zKHdlYlZpZXcpKTsKLQotICAg
IG1fd2ViVmlld3MuYWRkKHdlYlZpZXcpOwotfQotCi12b2lkIFdlYlZpZXdHcm91cDo6cmVtb3Zl
V2ViVmlldyhXZWJWaWV3ICp3ZWJWaWV3KQotewotICAgIEFTU0VSVChtX3dlYlZpZXdzLmNvbnRh
aW5zKHdlYlZpZXcpKTsKLQotICAgIG1fd2ViVmlld3MucmVtb3ZlKHdlYlZpZXcpOwotfQotCi1T
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXImIFdlYlZpZXdHcm91cDo6c3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyKCkKLXsKLSAgICBpZiAoIW1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKQotICAgICAg
ICBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA9IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cjo6Y3JlYXRlKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKLQotICAgIHJldHVybiAqbV9z
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lv
biAxODU1MzcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyOCBAQAorMjAxNS0wNi0xMyAgSHl1bmd3b29rIExlZSAgPGh5dW5nd29vay5s
ZWVAbmF2ZXJjb3JwLmNvbT4KKworICAgICAgICBbV2luXSBJbXBsZW1lbnQgV2ViVmlld0dyb3Vw
IHRvIHN1cHBvcnQgV2ViVmlldzo6YWRkeHh4VG9Hcm91cCgpLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1OTA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBXZWJWaWV3R3JvdXAgY2xhc3Mgc2hh
cmluZyBvbiBNYWMgYW5kIFdpbiBwb3J0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
VmlzaXRlZExpbmtTdG9yZS5jcHA6CisgICAgICAgICh2aXNpdGVkTGlua1N0b3Jlcyk6CisgICAg
ICAgIChXZWJWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUpOgorICAgICAgICAoV2ViVmlzaXRlZExp
bmtTdG9yZTo6V2ViVmlzaXRlZExpbmtTdG9yZSk6CisgICAgICAgIChXZWJWaXNpdGVkTGlua1N0
b3JlOjp+V2ViVmlzaXRlZExpbmtTdG9yZSk6CisgICAgICAgIChXZWJWaXNpdGVkTGlua1N0b3Jl
OjpzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyk6CisgICAgICAgIChXZWJWaXNpdGVkTGlua1N0
b3JlOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MpOgorICAgICAgICAoV2ViVmlzaXRlZExpbmtTdG9y
ZTo6c2luZ2xldG9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNp
dGVkTGlua1N0b3JlLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3
Ojp+V2ViVmlldyk6CisgICAgICAgIChXZWJWaWV3Ojppbml0V2l0aEZyYW1lKToKKyAgICAgICAg
KFdlYlZpZXc6OnNldEdyb3VwTmFtZSk6CisgICAgICAgIChXZWJWaWV3OjphZGRWaXNpdGVkTGlu
a3MpOgorICAgICAgICAqIFdlYlZpZXcuaDoKKwogMjAxNS0wNi0xMSAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uKCkgbmVl
ZHMgdG8gYmUgYWJsZSB0byBhY2NlcHQgYSByYXcgdGhyb3duIHZhbHVlIGluIGFkZGl0aW9uIHRv
IEV4Y2VwdGlvbiBvYmplY3RzLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDE4
NTQwMSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJX
ZWJTY3JpcHRXb3JsZC5oIgogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5o
IgorI2luY2x1ZGUgIldlYlZpZXdHcm91cC5oIgogI2luY2x1ZGUgIldlYlZpc2l0ZWRMaW5rU3Rv
cmUuaCIKICNpbmNsdWRlICJyZXNvdXJjZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQ
SUNhc3QuaD4KQEAgLTE1Miw2ICsxNTMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQ
b2xpY3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TeXN0ZW1JbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudENvbnRyb2xsZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvV2luZG93c1RvdWNoLmg+CiAjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFs
dWUuaD4KQEAgLTQ1Nyw2ICs0NTksOCBAQCBXZWJWaWV3Ojp+V2ViVmlldygpCiAgICAgQVNTRVJU
KCFtX2xheWVyVHJlZUhvc3QpOwogI2VuZGlmCiAKKyAgICBtX3dlYlZpZXdHcm91cC0+cmVtb3Zl
V2ViVmlldyh0aGlzKTsKKwogICAgIFdlYlZpZXdDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07
CiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Iik7CkBAIC0yODE4LDYgKzI4
MjIsOSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmluaXRXCiAKICAgICBt
X2luc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyk7CiAKKyAgICBt
X3dlYlZpZXdHcm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBsb2Nh
bFN0b3JhZ2VEYXRhYmFzZVBhdGgobV9wcmVmZXJlbmNlcy5nZXQoKSkpOworICAgIG1fd2ViVmll
d0dyb3VwLT5hZGRXZWJWaWV3KHRoaXMpOworCiAgICAgUGFnZUNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbjsKICAgICBjb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVD
bGllbnQodGhpcyk7CiAgICAgY29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBX
ZWJDb250ZXh0TWVudUNsaWVudCh0aGlzKTsKQEAgLTI4MjYsOSArMjgzMywxMCBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmluaXRXCiAgICAgY29uZmlndXJhdGlvbi5pbnNw
ZWN0b3JDbGllbnQgPSBtX2luc3BlY3RvckNsaWVudDsKICAgICBjb25maWd1cmF0aW9uLmxvYWRl
ckNsaWVudEZvck1haW5GcmFtZSA9IG5ldyBXZWJGcmFtZUxvYWRlckNsaWVudDsKICAgICBjb25m
aWd1cmF0aW9uLmRhdGFiYXNlUHJvdmlkZXIgPSAmV2ViRGF0YWJhc2VQcm92aWRlcjo6c2luZ2xl
dG9uKCk7Ci0gICAgY29uZmlndXJhdGlvbi5zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBXZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZShsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgo
bV9wcmVmZXJlbmNlcy5nZXQoKSkpOworICAgIGNvbmZpZ3VyYXRpb24uc3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyID0gJm1fd2ViVmlld0dyb3VwLT5zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsK
ICAgICBjb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9IHN0YXRpY19jYXN0PFdl
YkZyYW1lTG9hZGVyQ2xpZW50Kj4oY29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJh
bWUpOwotICAgIGNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtTdG9yZSA9ICZXZWJWaXNpdGVkTGlu
a1N0b3JlOjpzaW5nbGV0b24oKTsKKyAgICBjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJv
bGxlciA9ICZtX3dlYlZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCk7CisgICAgY29u
ZmlndXJhdGlvbi52aXNpdGVkTGlua1N0b3JlID0gJm1fd2ViVmlld0dyb3VwLT52aXNpdGVkTGlu
a1N0b3JlKCk7CiAKICAgICBtX3BhZ2UgPSBuZXcgUGFnZShjb25maWd1cmF0aW9uKTsKICAgICBw
cm92aWRlR2VvbG9jYXRpb25UbyhtX3BhZ2UsIG5ldyBXZWJHZW9sb2NhdGlvbkNsaWVudCh0aGlz
KSk7CkBAIC0zNjk1LDggKzM3MDMsMTcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjpyZWdpcwogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRHcm91cE5h
bWUoIAogICAgICAgICAvKiBbaW5dICovIEJTVFIgZ3JvdXBOYW1lKQogeworICAgIGlmIChtX3dl
YlZpZXdHcm91cCkKKyAgICAgICAgbV93ZWJWaWV3R3JvdXAtPnJlbW92ZVdlYlZpZXcodGhpcyk7
CisKKyAgICBtX3dlYlZpZXdHcm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBO
YW1lLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgobV9wcmVmZXJlbmNlcy5nZXQoKSkpOworICAg
IG1fd2ViVmlld0dyb3VwLT5hZGRXZWJWaWV3KHRoaXMpOworCiAgICAgaWYgKCFtX3BhZ2UpCiAg
ICAgICAgIHJldHVybiBTX09LOworCisgICAgbV9wYWdlLT5zZXRVc2VyQ29udGVudENvbnRyb2xs
ZXIoJm1fd2ViVmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKSk7CisgICAgbV9wYWdl
LT5zZXRWaXNpdGVkTGlua1N0b3JlKG1fd2ViVmlld0dyb3VwLT52aXNpdGVkTGlua1N0b3JlKCkp
OwogICAgIG1fcGFnZS0+c2V0R3JvdXBOYW1lKHRvU3RyaW5nKGdyb3VwTmFtZSkpOwogICAgIHJl
dHVybiBTX09LOwogfQpAQCAtNjUwNCw3ICs2NTIxLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpoaXN0
b3J5RGVsZWdhdGUoSVdlYkhpcwogCiBIUkVTVUxUIFdlYlZpZXc6OmFkZFZpc2l0ZWRMaW5rcyhC
U1RSKiB2aXNpdGVkVVJMcywgdW5zaWduZWQgdmlzaXRlZFVSTENvdW50KQogewotICAgIGF1dG8m
IHZpc2l0ZWRMaW5rU3RvcmUgPSBXZWJWaXNpdGVkTGlua1N0b3JlOjpzaW5nbGV0b24oKTsKKyAg
ICBhdXRvJiB2aXNpdGVkTGlua1N0b3JlID0gbV93ZWJWaWV3R3JvdXAtPnZpc2l0ZWRMaW5rU3Rv
cmUoKTsKICAgICBQYWdlR3JvdXAmIGdyb3VwID0gY29yZSh0aGlzKS0+Z3JvdXAoKTsKICAgICAK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmlzaXRlZFVSTENvdW50OyArK2kpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDE4NTQwMSkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBXZWJJbnNw
ZWN0b3JDbGllbnQ7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogY2xhc3MgQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ7CiAjZW5kaWYKK2NsYXNzIFdlYlZpZXdHcm91cDsKIAogV2Vi
Vmlldyoga2l0KFdlYkNvcmU6OlBhZ2UqKTsKIFdlYkNvcmU6OlBhZ2UqIGNvcmUoSVdlYlZpZXcq
KTsKQEAgLTExNTksNiArMTE2MCw4IEBAIHByb3RlY3RlZDoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6RnVsbFNjcmVlbkNvbnRyb2xsZXI+IG1fZnVsbHNjcmVlbkNvbnRyb2xsZXI7CiAg
ICAgV2ViQ29yZTo6SW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICNlbmRpZgorCisgICAgUmVm
UHRyPFdlYlZpZXdHcm91cD4gbV93ZWJWaWV3R3JvdXA7CiB9OwogCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRM
aW5rU3RvcmUuY3BwCShyZXZpc2lvbiAxODU0MDEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
MjAgKzM0LDI3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgYm9vbCBzX3No
b3VsZFRyYWNrVmlzaXRlZExpbmtzOwogCi1XZWJWaXNpdGVkTGlua1N0b3JlJiBXZWJWaXNpdGVk
TGlua1N0b3JlOjpzaW5nbGV0b24oKQorc3RhdGljIEhhc2hTZXQ8V2ViVmlzaXRlZExpbmtTdG9y
ZSo+JiB2aXNpdGVkTGlua1N0b3JlcygpCiB7Ci0gICAgc3RhdGljIFdlYlZpc2l0ZWRMaW5rU3Rv
cmUmIHZpc2l0ZWRMaW5rU3RvcmUgPSAqYWRvcHRSZWYobmV3IFdlYlZpc2l0ZWRMaW5rU3RvcmUp
LmxlYWtSZWYoKTsKLSAgICAKLSAgICByZXR1cm4gdmlzaXRlZExpbmtTdG9yZTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxXZWJWaXNpdGVkTGlua1N0b3JlKj4+IHZpc2l0ZWRM
aW5rU3RvcmVzOworCisgICAgcmV0dXJuIHZpc2l0ZWRMaW5rU3RvcmVzOworfQorCitSZWY8V2Vi
VmlzaXRlZExpbmtTdG9yZT4gV2ViVmlzaXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaXNpdGVkTGlua1N0b3JlKTsKIH0KIAogV2ViVmlzaXRl
ZExpbmtTdG9yZTo6V2ViVmlzaXRlZExpbmtTdG9yZSgpCiAgICAgOiBtX3Zpc2l0ZWRMaW5rc1Bv
cHVsYXRlZChmYWxzZSkKIHsKKyAgICB2aXNpdGVkTGlua1N0b3JlcygpLmFkZCh0aGlzKTsKIH0K
IAogV2ViVmlzaXRlZExpbmtTdG9yZTo6fldlYlZpc2l0ZWRMaW5rU3RvcmUoKQogeworICAgIHZp
c2l0ZWRMaW5rU3RvcmVzKCkucmVtb3ZlKHRoaXMpOwogfQogCiB2b2lkIFdlYlZpc2l0ZWRMaW5r
U3RvcmU6OnNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKGJvb2wgc2hvdWxkVHJhY2tWaXNpdGVk
TGlua3MpCkBAIC02Miw3ICs2OSw4IEBAIHZvaWQgV2ViVmlzaXRlZExpbmtTdG9yZTo6c2V0U2hv
dWxkVHJhY2sKIAogdm9pZCBXZWJWaXNpdGVkTGlua1N0b3JlOjpyZW1vdmVBbGxWaXNpdGVkTGlu
a3MoKQogewotICAgIFdlYlZpc2l0ZWRMaW5rU3RvcmU6OnNpbmdsZXRvbigpLnJlbW92ZVZpc2l0
ZWRMaW5rSGFzaGVzKCk7CisgICAgZm9yIChhdXRvJiB2aXNpdGVkTGlua1N0b3JlIDogdmlzaXRl
ZExpbmtTdG9yZXMoKSkKKyAgICAgICAgdmlzaXRlZExpbmtTdG9yZS0+cmVtb3ZlVmlzaXRlZExp
bmtIYXNoZXMoKTsKICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLm1hcmtQYWdlc0ZvclZpc2l0
ZWRMaW5rU3R5bGVSZWNhbGMoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaAkocmV2aXNpb24gMTg1
NDAxKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtT
dG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw3IEBACiAKIGNsYXNzIFdlYlZpc2l0
ZWRMaW5rU3RvcmUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6VmlzaXRlZExpbmtTdG9yZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFdlYlZpc2l0ZWRMaW5rU3RvcmUmIHNpbmdsZXRvbigpOwotICAg
IFdlYlZpc2l0ZWRMaW5rU3RvcmUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlZpc2l0ZWRMaW5rU3Rv
cmU+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfldlYlZpc2l0ZWRMaW5rU3RvcmUoKTsKIAogICAg
IHN0YXRpYyB2b2lkIHNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKGJvb2wpOwpAQCAtNDIsNiAr
NDEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhjb25zdCBTdHJpbmcmIHVy
bFN0cmluZyk7CiAKIHByaXZhdGU6CisgICAgV2ViVmlzaXRlZExpbmtTdG9yZSgpOworCiAgICAg
dmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OkxpbmtI
YXNoLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0
cmlidXRlVVJMKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkVmlzaXRlZExpbmsoV2Vi
Q29yZTo6UGFnZSYsIFdlYkNvcmU6OkxpbmtIYXNoKSBvdmVycmlkZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255101</attachid>
            <date>2015-06-18 01:41:25 -0700</date>
            <delta_ts>2015-06-26 09:46:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>38001</size>
            <attacher name="Hyungwook Lee">hyungwook.lee</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODU2OTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE1LTA2LTE4ICBIeXVuZ3dvb2sg
TGVlICA8aHl1bmd3b29rLmxlZUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtXaW5dIEltcGxl
bWVudCBXZWJWaWV3R3JvdXAgdG8gc3VwcG9ydCBXZWJWaWV3OjphZGR4eHhUb0dyb3VwKCkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU5MDgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFdlYlZp
ZXdHcm91cCBjbGFzcyBzaGFyaW5nIG9uIE1hYyBhbmQgV2luIHBvcnQuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dy
b3VwLmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJWaWV3R3JvdXBzKToKKyAgICAgICAgKFdlYlZp
ZXdHcm91cDo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViVmlld0dyb3VwOjpnZXQpOgorICAg
ICAgICAoV2ViVmlld0dyb3VwOjpXZWJWaWV3R3JvdXApOgorICAgICAgICAoV2ViVmlld0dyb3Vw
Ojp+V2ViVmlld0dyb3VwKToKKyAgICAgICAgKFdlYlZpZXdHcm91cDo6YWRkV2ViVmlldyk6Cisg
ICAgICAgIChXZWJWaWV3R3JvdXA6OnJlbW92ZVdlYlZpZXcpOgorICAgICAgICAoV2ViVmlld0dy
b3VwOjpzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYlZpZXdHcm91cC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYlZpZXdHcm91cDo6dXNlckNvbnRl
bnRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYlZpZXdHcm91cDo6dmlzaXRlZExpbmtTdG9yZSk6
CisgICAgICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9qOgorICAgICAg
ICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4cHJvai5maWx0ZXJzOgorICAgICAg
ICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXRDb21tb24ucHJvcHM6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTUtMDYtMTcgIENvbW1pdCBR
dWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxODU2MzYuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dl
YlZpZXdHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9y
dC9XZWJWaWV3R3JvdXAuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9XZWJDb3Jl
U3VwcG9ydC9XZWJWaWV3R3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYlZpZXdHcm91cC5oIgorCisjaW5jbHVkZSAiV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1
ZGUgIldlYlZpc2l0ZWRMaW5rU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50
Q29udHJvbGxlci5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8v
IEFueSBuYW1lZCBncm91cHMgd2lsbCBsaXZlIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIHByb2Nl
c3MsIHRoYW5rcyB0byB0aGUgcmVmZXJlbmNlIGhlbGQgYnkgdGhlIFJlZlB0ci4KK3N0YXRpYyBI
YXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYlZpZXdHcm91cD4+JiB3ZWJWaWV3R3JvdXBzKCkKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXZWJWaWV3
R3JvdXA+Pj4gd2ViVmlld0dyb3VwczsKKworICAgIHJldHVybiB3ZWJWaWV3R3JvdXBzOworfQor
CitSZWZQdHI8V2ViVmlld0dyb3VwPiBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCit7Cisg
ICAgaWYgKG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZp
ZXdHcm91cChTdHJpbmcoKSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7CisKKyAgICBhdXRv
JiB3ZWJWaWV3R3JvdXAgPSB3ZWJWaWV3R3JvdXBzKCkuYWRkKG5hbWUsIG51bGxwdHIpLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICBpZiAoIXdlYlZpZXdHcm91cCkKKyAgICAgICAgd2ViVmlld0dyb3Vw
ID0gYWRvcHRSZWYobmV3IFdlYlZpZXdHcm91cChuYW1lLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGgpKTsKKyAgICBlbHNlIGlmICghd2ViVmlld0dyb3VwLT5tX3N0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlciAmJiB3ZWJWaWV3R3JvdXAtPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLmlzRW1wdHko
KSAmJiAhbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgd2ViVmll
d0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCA9IGxvY2FsU3RvcmFnZURhdGFiYXNl
UGF0aDsKKworICAgIHJldHVybiB3ZWJWaWV3R3JvdXA7Cit9CisKK1dlYlZpZXdHcm91cCogV2Vi
Vmlld0dyb3VwOjpnZXQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIEFTU0VSVCghbmFtZS5p
c0VtcHR5KCkpOworCisgICAgcmV0dXJuIHdlYlZpZXdHcm91cHMoKS5nZXQobmFtZSk7Cit9CisK
K1dlYlZpZXdHcm91cDo6V2ViVmlld0dyb3VwKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCisgICAgOiBtX25hbWUobmFtZSkKKyAgICAs
IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCkKKyAg
ICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKFVzZXJDb250ZW50Q29udHJvbGxlcjo6Y3JlYXRl
KCkpCisgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoV2ViVmlzaXRlZExpbmtTdG9yZTo6Y3JlYXRl
KCkpCit7Cit9CisKK1dlYlZpZXdHcm91cDo6fldlYlZpZXdHcm91cCgpCit7CisgICAgQVNTRVJU
KG1fbmFtZS5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX3dlYlZpZXdzLmlzRW1wdHkoKSk7Cit9
CisKK3ZvaWQgV2ViVmlld0dyb3VwOjphZGRXZWJWaWV3KFdlYlZpZXcgKndlYlZpZXcpCit7Cisg
ICAgQVNTRVJUKCFtX3dlYlZpZXdzLmNvbnRhaW5zKHdlYlZpZXcpKTsKKworICAgIG1fd2ViVmll
d3MuYWRkKHdlYlZpZXcpOworfQorCit2b2lkIFdlYlZpZXdHcm91cDo6cmVtb3ZlV2ViVmlldyhX
ZWJWaWV3ICp3ZWJWaWV3KQoreworICAgIEFTU0VSVChtX3dlYlZpZXdzLmNvbnRhaW5zKHdlYlZp
ZXcpKTsKKworICAgIG1fd2ViVmlld3MucmVtb3ZlKHdlYlZpZXcpOworfQorCitTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXImIFdlYlZpZXdHcm91cDo6c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCkK
K3sKKyAgICBpZiAoIW1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKQorICAgICAgICBtX3N0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlciA9IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRl
KG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKKworICAgIHJldHVybiAqbV9zdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dl
YlZpZXdHcm91cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQv
V2ViVmlld0dyb3VwLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBw
b3J0L1dlYlZpZXdHcm91cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI7CitjbGFzcyBVc2VyQ29udGVudENv
bnRyb2xsZXI7Cit9CisKK2NsYXNzIFdlYlZpc2l0ZWRMaW5rU3RvcmU7CisKK09CSkNfQ0xBU1Mg
V2ViVmlldzsKKworY2xhc3MgV2ViVmlld0dyb3VwIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVmll
d0dyb3VwPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxXZWJWaWV3R3JvdXA+IGdldE9y
Q3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRh
YmFzZVBhdGgpOworICAgIH5XZWJWaWV3R3JvdXAoKTsKKworICAgIHN0YXRpYyBXZWJWaWV3R3Jv
dXAqIGdldChjb25zdCBTdHJpbmcmIG5hbWUpOworCisgICAgdm9pZCBhZGRXZWJWaWV3KFdlYlZp
ZXcgKik7CisgICAgdm9pZCByZW1vdmVXZWJWaWV3KFdlYlZpZXcgKik7CisKKyAgICBXZWJDb3Jl
OjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXImIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpOwor
ICAgIFdlYkNvcmU6OlVzZXJDb250ZW50Q29udHJvbGxlciYgdXNlckNvbnRlbnRDb250cm9sbGVy
KCkgeyByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXIuZ2V0KCk7IH0KKyAgICBXZWJWaXNp
dGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlKCkgeyByZXR1cm4gbV92aXNpdGVkTGlua1N0
b3JlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViVmlld0dyb3VwKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOworCisgICAgU3Ry
aW5nIG1fbmFtZTsKKyAgICBIYXNoU2V0PFdlYlZpZXcgKj4gbV93ZWJWaWV3czsKKworICAgIFN0
cmluZyBtX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsKKworICAg
IFJlZjxXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fdXNlckNvbnRlbnRDb250cm9s
bGVyOworICAgIFJlZjxXZWJWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0ZWRMaW5rU3RvcmU7Cit9
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXQvV2ViS2l0LnZjeHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXQvV2Vi
S2l0LnZjeHByb2oJKHJldmlzaW9uIDE4NTQwMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZj
eHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNiArMjk3
LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXFN0b3JhZ2VcV2ViRGF0YWJhc2VQ
cm92aWRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxTdG9yYWdlXFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlwuLlxjZlxXZWJDb3JlU3VwcG9ydFxXZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAiIC8+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxXZWJDb3JlU3VwcG9ydFxXZWJWaWV3R3JvdXAu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cd2luXFBsdWdpbnNcbnBhcGku
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cd2luXFBsdWdpbnNcUGx1Z2lu
RGF0YWJhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cd2luXFBsdWdp
bnNcUGx1Z2luRGVidWcuY3BwIiAvPgpAQCAtNDUwLDYgKzQ1MSw3IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlwuLlxTdG9yYWdlXFN0b3JhZ2VUcmFja2VyQ2xpZW50LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxTdG9yYWdlXFdlYkRhdGFiYXNlUHJvdmlkZXIuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFN0b3JhZ2VcV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxXZWJDb3Jl
U3VwcG9ydFxXZWJWaWV3R3JvdXAuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4u
XHdpblxQbHVnaW5zXFBsdWdpbkRhdGFiYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlwuLlx3aW5cUGx1Z2luc1xQbHVnaW5EZWJ1Zy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cLi5cd2luXFBsdWdpbnNcUGx1Z2luUGFja2FnZS5oIiAvPgpJbmRleDogU291cmNl
L1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXQvV2ViS2l0LnZjeHByb2ouZmlsdGVycwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4
cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxODU0MDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC52
Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzMsNiArMzMzLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJLaXRN
ZXNzYWdlTG9vcC5jcHAiPgogICAgICAgPEZpbHRlcj5Tb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxXZWJDb3JlU3VwcG9ydFxX
ZWJWaWV3R3JvdXAuY3BwIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlczwvRmlsdGVyPgorICAgIDwv
Q2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJDb3JlU3VwcG9ydFxFbWJlZGRlZFdpZGdldC5oIj4KQEAg
LTY1NCw2ICs2NTcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYktp
dE1lc3NhZ2VMb29wLmgiPgogICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFdlYkNvcmVTdXBw
b3J0XFdlYlZpZXdHcm91cC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+
CisgICAgPC9DbEluY2x1ZGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxO
b25lIEluY2x1ZGU9IldlYktpdFBvc3RCdWlsZC5jbWQiIC8+CkBAIC03NDYsNCArNzUyLDQgQEAK
ICAgICAgIDxGaWx0ZXI+U291cmNlc1xQbHVnaW5zPC9GaWx0ZXI+CiAgICAgPC9NQVNNPgogICA8
L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXRD
b21tb24ucHJvcHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9X
ZWJLaXQvV2ViS2l0Q29tbW9uLnByb3BzCShyZXZpc2lvbiAxODU0MDEpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXRDb21tb24ucHJvcHMJKHdvcmtpbmcgY29w
eSkKQEAgLTUsNyArNSw3IEBACiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9u
R3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPiQoUHJvamVjdERpcik7JChQcm9qZWN0RGlyKVwuLlwuLlx3aW47JChQcm9qZWN0RGlyKVwu
LlwuLlx3aW5cUGx1Z2luczskKFByb2plY3REaXIpXC4uXC4uXHdpblxXZWJDb3JlU3VwcG9ydDsk
KFByb2plY3REaXIpXC4uXC4uXFN0b3JhZ2U7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1
ZGVcV2ViS2l0OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxJbmNsdWRlOyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxJbmNsdWRlXHByaXZhdGU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXEluY2x1
ZGVcV2ViQ29yZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxJbmNsdWRlXEphdmFTY3JpcHRD
b3JlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxJbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENv
cmU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdl
YktpdFxEZXJpdmVkU291cmNlczskKFdlYktpdF9MaWJyYXJpZXMpXEluY2x1ZGU7JChXZWJLaXRf
TGlicmFyaWVzKVxJbmNsdWRlXHByaXZhdGU7JChXZWJLaXRfTGlicmFyaWVzKVxJbmNsdWRlXFdl
YkNvcmU7JChXZWJLaXRfTGlicmFyaWVzKVxJbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnM7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHNxbGl0ZTskKFdlYktpdF9MaWJyYXJpZXMp
XEluY2x1ZGVcSmF2YVNjcmlwdENvcmU7JChXZWJLaXRfTGlicmFyaWVzKVxJbmNsdWRlXHByaXZh
dGVcSmF2YVNjcmlwdENvcmU7JChJbnREaXIpaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKTskKFByb2plY3REaXIpXC4uXC4uXHdp
bjskKFByb2plY3REaXIpXC4uXC4uXHdpblxQbHVnaW5zOyQoUHJvamVjdERpcilcLi5cLi5cd2lu
XFdlYkNvcmVTdXBwb3J0OyQoUHJvamVjdERpcilcLi5cLi5cU3RvcmFnZTskKFByb2plY3REaXIp
XC4uXC4uXFdlYkNvcmVTdXBwb3J0OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdl
YktpdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZTskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcSW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxJbmNsdWRlXFdl
YkNvcmU7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZTsk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJLaXRc
RGVyaXZlZFNvdXJjZXM7JChXZWJLaXRfTGlicmFyaWVzKVxJbmNsdWRlOyQoV2ViS2l0X0xpYnJh
cmllcylcSW5jbHVkZVxwcml2YXRlOyQoV2ViS2l0X0xpYnJhcmllcylcSW5jbHVkZVxXZWJDb3Jl
OyQoV2ViS2l0X0xpYnJhcmllcylcSW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzOyQo
V2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVxzcWxpdGU7JChXZWJLaXRfTGlicmFyaWVzKVxJbmNs
dWRlXEphdmFTY3JpcHRDb3JlOyQoV2ViS2l0X0xpYnJhcmllcylcSW5jbHVkZVxwcml2YXRlXEph
dmFTY3JpcHRDb3JlOyQoSW50RGlyKWluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz5XRUJLSVRfRVhQT1JUUztGUkFNRVdPUktfTkFNRT1XZWJLaXQ7JShQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPFByZWNv
bXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+CiAgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXJGaWxlPldlYktpdFByZWZpeC5oPC9QcmVjb21waWxlZEhlYWRlckZpbGU+CkBAIC0xNyw0
ICsxNyw0IEBACiAgICAgICA8RGVsYXlMb2FkRExMcz51c3AxMC5kbGw7Y29tY3RsMzIuZGxsO3Zl
cnNpb24uZGxsO2lwaGxwYXBpLmRsbDslKERlbGF5TG9hZERMTHMpPC9EZWxheUxvYWRETExzPgog
ICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotPC9Qcm9qZWN0PgorPC9Qcm9q
ZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg1NDAxKQorKysg
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMTksNiArMTksOCBAQAogCQkwQUI3NTIzODBGQTJFNERCMDBEN0NCQjEgLyogV2Vi
TmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRleHRJbmZvLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEFCNzUyMzYwRkEyRTREQjAwRDdDQkIxIC8qIFdl
Yk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tDb250ZXh0SW5mby5tbSAqLzsgfTsKIAkJMEFFQkZGNjMw
RjlGQThCRTAwMEQ0ODZCIC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQUVCRkY2MTBGOUZB
OEJFMDAwRDQ4NkIgLyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja1ByaXZhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQUVCRkY2NDBGOUZB
OEJFMDAwRDQ4NkIgLyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja1ByaXZhdGUubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQUVCRkY2MjBGOUZBOEJF
MDAwRDQ4NkIgLyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja1ByaXZhdGUubW0gKi87IH07CisJ
CTE0MzBDMTJDMUIyQzVERjcwMERFQTAxRCAvKiBXZWJWaWV3R3JvdXAuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzMEMxMkExQjJDNURGNzAwREVB
MDFEIC8qIFdlYlZpZXdHcm91cC5jcHAgKi87IH07CisJCTE0MzBDMTJEMUIyQzVERjcwMERFQTAx
RCAvKiBXZWJWaWV3R3JvdXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0MzBDMTJCMUIyQzVERjcwMERFQTAxRCAvKiBXZWJWaWV3R3JvdXAuaCAqLzsg
fTsKIAkJMTREODI1MkYwQUY5NTUwOTAwMDRGMDU3IC8qIFdlYkNocm9tZUNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREODI1MkQwQUY5NTUw
OTAwMDRGMDU3IC8qIFdlYkNocm9tZUNsaWVudC5oICovOyB9OwogCQkxNEQ4MjUzMDBBRjk1NTA5
MDAwNEYwNTcgLyogV2ViQ2hyb21lQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTREODI1MkUwQUY5NTUwOTAwMDRGMDU3IC8qIFdlYkNocm9t
ZUNsaWVudC5tbSAqLzsgfTsKIAkJMUEyREJFOUYwRjI1MUUzQTAwMzZGOEE2IC8qIFByb3h5SW5z
dGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
MkRCRTlEMEYyNTFFM0EwMDM2RjhBNiAvKiBQcm94eUluc3RhbmNlLmggKi87IH07CkBAIC03Niw4
ICs3OCw2IEBACiAJCTFBQUY1RDBGMEVEREU3QTcwMDhEODgzRCAvKiBXZWJLaXRQbHVnaW5BZ2Vu
dC5kZWZzIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFB
RjU4OEEwRURDQ0VBMzAwOEQ4ODNEIC8qIFdlYktpdFBsdWdpbkFnZW50LmRlZnMgKi87IH07CiAJ
CTFBQUY1RkJGMEVERTNBOTIwMDhEODgzRCAvKiBXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUY1RkJE
MEVERTNBOTIwMDhEODgzRCAvKiBXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcuaCAqLzsgfTsK
IAkJMUFBRjVGQzAwRURFM0E5MjAwOEQ4ODNEIC8qIFdlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmll
dy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUY1
RkJFMEVERTNBOTIwMDhEODgzRCAvKiBXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gKi87
IH07Ci0JCTFBQjFEQUMxMThCQzAyMzIwMDRCNkE5RiAvKiBXZWJWaWV3R3JvdXAubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxREFCRjE4QkMwMjMy
MDA0QjZBOUYgLyogV2ViVmlld0dyb3VwLm1tICovOyB9OwotCQkxQUIxREFDMjE4QkMwMjMyMDA0
QjZBOUYgLyogV2ViVmlld0dyb3VwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUIxREFDMDE4QkMwMjMyMDA0QjZBOUYgLyogV2ViVmlld0dyb3VwLmgg
Ki87IH07CiAJCTFBQzcxNzZFMUEyNjU2OEEwMDJFMzExNSAvKiBXZWJWaXNpdGVkTGlua1N0b3Jl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDNzE3
NkMxQTI2NTY4QTAwMkUzMTE1IC8qIFdlYlZpc2l0ZWRMaW5rU3RvcmUubW0gKi87IH07CiAJCTFB
QzcxNzZGMUEyNjU2OEEwMDJFMzExNSAvKiBXZWJWaXNpdGVkTGlua1N0b3JlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUM3MTc2RDFBMjY1NjhBMDAy
RTMxMTUgLyogV2ViVmlzaXRlZExpbmtTdG9yZS5oICovOyB9OwogCQkxQUVBNjZENDBEQzZCMUZG
MDAzRDEyQkYgLyogV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRUE2NkQyMERDNkIxRkYwMDNEMTJC
RiAvKiBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5oICovOyB9OwpAQCAtNDc1LDYgKzQ3
NSw4IEBACiAJCTBBQjc1MjM2MEZBMkU0REIwMEQ3Q0JCMSAvKiBXZWJOZXRzY2FwZUNvbnRhaW5l
ckNoZWNrQ29udGV4dEluZm8ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29udGV4dEluZm8ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBBRUJGRjYxMEY5RkE4QkUwMDBENDg2QiAvKiBXZWJOZXRzY2Fw
ZUNvbnRhaW5lckNoZWNrUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4
cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9
IFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBBRUJGRjYyMEY5RkE4QkUwMDBENDg2QiAvKiBXZWJOZXRzY2FwZUNvbnRhaW5l
ckNoZWNrUHJpdmF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tQcml2YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNDMwQzEyQTFCMkM1REY3MDBERUEwMUQgLyogV2ViVmlld0dyb3VwLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBuYW1lID0gV2ViVmlld0dyb3VwLmNwcDsg
cGF0aCA9IFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5jcHA7IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKKwkJMTQzMEMxMkIxQjJDNURGNzAwREVBMDFEIC8qIFdlYlZpZXdHcm91cC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJWaWV3R3JvdXAuaDsgcGF0aCA9
IFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7
IH07CiAJCTE0RDgyNTJEMEFGOTU1MDkwMDA0RjA1NyAvKiBXZWJDaHJvbWVDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNocm9tZUNsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNEQ4MjUyRTBBRjk1NTA5MDAwNEYwNTcgLyogV2ViQ2hy
b21lQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
Q2hyb21lQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJEQkU5RDBG
MjUxRTNBMDAzNkY4QTYgLyogUHJveHlJbnN0YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQcm94eUluc3RhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01MjksOCArNTMxLDYgQEAKIAkJMUFBRjVEMDgwRURERTcxRDAwOEQ4ODNEIC8qIFdlYktpdFBs
dWdpbkhvc3RUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRQ
bHVnaW5Ib3N0VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBRjVGQkQw
RURFM0E5MjAwOEQ4ODNEIC8qIFdlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBRjVGQkUwRURFM0E5MjAwOEQ4ODNEIC8q
IFdlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFCMURBQkYxOEJDMDIzMjAwNEI2QTlGIC8qIFdlYlZpZXdH
cm91cC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZXdH
cm91cC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFCMURBQzAxOEJDMDIzMjAw
NEI2QTlGIC8qIFdlYlZpZXdHcm91cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJWaWV3R3JvdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNzE3NkMx
QTI2NTY4QTAwMkUzMTE1IC8qIFdlYlZpc2l0ZWRMaW5rU3RvcmUubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaXNpdGVkTGlua1N0b3JlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM3MTc2RDFBMjY1NjhBMDAyRTMxMTUgLyogV2ViVmlz
aXRlZExpbmtTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaXNp
dGVkTGlua1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRUE2NkQyMERD
NkIxRkYwMDNEMTJCRiAvKiBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYwNyw4ICsxNjA3LDggQEAKIAkJCQky
REQ2MzJDMTE5RTVEMUYwMDAyRTlDN0IgLyogV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIu
bW0gKi8sCiAJCQkJOTNFQjE3OEUwOUY4OEQ1MTAwOTFGOEZGIC8qIFdlYlN5c3RlbUludGVyZmFj
ZS5oICovLAogCQkJCTkzRUIxNzhDMDlGODhENDYwMDkxRjhGRiAvKiBXZWJTeXN0ZW1JbnRlcmZh
Y2UubW0gKi8sCi0JCQkJMUFCMURBQzAxOEJDMDIzMjAwNEI2QTlGIC8qIFdlYlZpZXdHcm91cC5o
ICovLAotCQkJCTFBQjFEQUJGMThCQzAyMzIwMDRCNkE5RiAvKiBXZWJWaWV3R3JvdXAubW0gKi8s
CisJCQkJMTQzMEMxMkExQjJDNURGNzAwREVBMDFEIC8qIFdlYlZpZXdHcm91cC5jcHAgKi8sCisJ
CQkJMTQzMEMxMkIxQjJDNURGNzAwREVBMDFEIC8qIFdlYlZpZXdHcm91cC5oICovLAogCQkJCTFB
QzcxNzZEMUEyNjU2OEEwMDJFMzExNSAvKiBXZWJWaXNpdGVkTGlua1N0b3JlLmggKi8sCiAJCQkJ
MUFDNzE3NkMxQTI2NTY4QTAwMkUzMTE1IC8qIFdlYlZpc2l0ZWRMaW5rU3RvcmUubW0gKi8sCiAJ
CQkpOwpAQCAtMTc0Niw3ICsxNzQ2LDYgQEAKIAkJCQk5Mzk4MTA0OTA4MjRCRjAxMDA4REYwMzgg
LyogV2ViQ2xpcFZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTA2NUFENUEzMEIwQzMyQzcwMDVB
MkIxRCAvKiBXZWJDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEw
MTYwODI0QkYwMTAwOERGMDM4IC8qIFdlYkNvcmVTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywK
LQkJCQkxQUIxREFDMjE4QkMwMjMyMDA0QjZBOUYgLyogV2ViVmlld0dyb3VwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0UyQTFBNDEyM0IwQjNDMDA5RkUxMkEgLyogV2ViRGFzaGJvYXJkUmVnaW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFGM0ZENzBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUFFREVGMTBDRUNGNDU3
MDA4NTQzMjggLyogV2ViRGF0YWJhc2VNYW5hZ2VySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApA
QCAtMTgxNSw2ICsxODE0LDcgQEAKIAkJCQk5Mzk4MTAxNDA4MjRCRjAxMDA4REYwMzggLyogV2Vi
SGlzdG9yeVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUY1RkJGMEVERTNBOTIwMDhE
ODgzRCAvKiBXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzOTgxMDU1MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJIVE1MUmVwcmVzZW50YXRpb24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTE0MzBDMTJEMUIyQzVERjcwMERFQTAxRCAvKiBXZWJWaWV3R3JvdXAu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDU2MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJIVE1M
UmVwcmVzZW50YXRpb25Qcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTA1NzA4MjRC
RjAxMDA4REYwMzggLyogV2ViSFRNTFZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNkIzMTNE
MUE1MUYzQTkwMDQyMjk3NSAvKiBTdG9yYWdlVHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yMzM0LDkgKzIzMzQsOSBAQAogCQkJCTFBNkIzMTM1MUE1MUYzQTkwMDQyMjk3NSAvKiBT
dG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGODM0QUFEODBFNjRC
MUM3MDBFMjczN0MgLyogV2ViVGV4dEl0ZXJhdG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEw
QzFEMUQxODIwMkY5QzAwMzY4ODNBIC8qIFdlYkRlZmF1bHRSZXNvdXJjZUxvYWREZWxlZ2F0ZS5t
IGluIFNvdXJjZXMgKi8sCisJCQkJMTQzMEMxMkMxQjJDNURGNzAwREVBMDFEIC8qIFdlYlZpZXdH
cm91cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBCRTA4MjRCRjAxMDA4REYwMzggLyog
V2ViVVJMc1dpdGhUaXRsZXMubSBpbiBTb3VyY2VzICovLAogCQkJCUMwQzVCM0VGMTE3N0E0QTAw
MDJCMEFFRiAvKiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0gaW4gU291cmNlcyAqLywKLQkJ
CQkxQUIxREFDMTE4QkMwMjMyMDA0QjZBOUYgLyogV2ViVmlld0dyb3VwLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTM5ODExMDcwODI0QkYwMTAwOERGMDM4IC8qIFdlYlZpZXcubW0gaW4gU291cmNl
cyAqLywKIAkJCQkxQTZCMzEzQjFBNTFGM0E5MDA0MjI5NzUgLyogU3RvcmFnZVRyYWNrZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyRTQ2NEUwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdE
YXRhLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODU2
OTQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNSBAQAorMjAxNS0wNi0xOCAgSHl1bmd3b29rIExlZSAgPGh5dW5nd29vay5sZWVAbmF2
ZXJjb3JwLmNvbT4KKworICAgICAgICBbV2luXSBJbXBsZW1lbnQgV2ViVmlld0dyb3VwIHRvIHN1
cHBvcnQgV2ViVmlldzo6YWRkeHh4VG9Hcm91cCgpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1OTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBXZWJWaWV3R3JvdXAgY2xhc3Mgc2hhcmluZyBv
biBNYWMgYW5kIFdpbiBwb3J0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dy
b3VwLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLm1t
OiBSZW1vdmVkLgorCiAyMDE1LTA2LTE3ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE5MDM0MTMxPiBDbGVhbmVkIHVwIHRoZSBXZWJE
b3dubG9hZC5oIGZyYW1ld29yayBoZWFkZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAuaAkocmV2aXNpb24gMTg1NDAxKQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0dyb3VwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjsKLWNsYXNzIFVzZXJDb250ZW50Q29udHJvbGxlcjsKLX0KLQotY2xhc3MgV2ViVmlzaXRl
ZExpbmtTdG9yZTsKLQotQGNsYXNzIFdlYlZpZXc7Ci0KLWNsYXNzIFdlYlZpZXdHcm91cCA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYlZpZXdHcm91cD4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQ
dHI8V2ViVmlld0dyb3VwPiBnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKLSAgICB+V2ViVmlld0dyb3VwKCk7Ci0K
LSAgICBzdGF0aWMgV2ViVmlld0dyb3VwKiBnZXQoY29uc3QgU3RyaW5nJiBuYW1lKTsKLQotICAg
IHZvaWQgYWRkV2ViVmlldyhXZWJWaWV3ICopOwotICAgIHZvaWQgcmVtb3ZlV2ViVmlldyhXZWJW
aWV3ICopOwotCi0gICAgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyJiBzdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIoKTsKLSAgICBXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXIm
IHVzZXJDb250ZW50Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVy
LmdldCgpOyB9Ci0gICAgV2ViVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSgpIHsg
cmV0dXJuIG1fdmlzaXRlZExpbmtTdG9yZS5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIFdlYlZp
ZXdHcm91cChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0
YWJhc2VQYXRoKTsKLQotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgSGFzaFNldDxXZWJWaWV3ICo+
IG1fd2ViVmlld3M7Ci0KLSAgICBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGg7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gbV9zdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI7Ci0KLSAgICBSZWY8V2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVy
PiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKLSAgICBSZWY8V2ViVmlzaXRlZExpbmtTdG9yZT4g
bV92aXNpdGVkTGlua1N0b3JlOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlZpZXdHcm91cC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJWaWV3R3JvdXAubW0JKHJldmlzaW9uIDE4NTQwMSkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdHcm91cC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgIldlYlZpZXdHcm91cC5o
IgotCi0jaW1wb3J0ICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKLSNpbXBvcnQgIldl
YlZpZXcuaCIKLSNpbXBvcnQgIldlYlZpc2l0ZWRMaW5rU3RvcmUuaCIKLSNpbXBvcnQgPFdlYkNv
cmUvVXNlckNvbnRlbnRDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Ci0KLS8vIEFueSBuYW1lZCBncm91cHMgd2lsbCBsaXZlIGZvciB0aGUgbGlmZXRpbWUg
b2YgdGhlIHByb2Nlc3MsIHRoYW5rcyB0byB0aGUgcmVmZXJlbmNlIGhlbGQgYnkgdGhlIFJlZlB0
ci4KLXN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYlZpZXdHcm91cD4+JiB3ZWJWaWV3
R3JvdXBzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTdHJpbmcsIFJl
ZlB0cjxXZWJWaWV3R3JvdXA+Pj4gd2ViVmlld0dyb3VwczsKLQotICAgIHJldHVybiB3ZWJWaWV3
R3JvdXBzOwotfQotCi1SZWZQdHI8V2ViVmlld0dyb3VwPiBXZWJWaWV3R3JvdXA6OmdldE9yQ3Jl
YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFz
ZVBhdGgpCi17Ci0gICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYlZpZXdHcm91cChTdHJpbmcoKSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKSk7
Ci0KLSAgICBhdXRvJiB3ZWJWaWV3R3JvdXAgPSB3ZWJWaWV3R3JvdXBzKCkuYWRkKG5hbWUsIG51
bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBpZiAoIXdlYlZpZXdHcm91cCkKLSAgICAgICAg
d2ViVmlld0dyb3VwID0gYWRvcHRSZWYobmV3IFdlYlZpZXdHcm91cChuYW1lLCBsb2NhbFN0b3Jh
Z2VEYXRhYmFzZVBhdGgpKTsKLSAgICBlbHNlIGlmICghd2ViVmlld0dyb3VwLT5tX3N0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlciAmJiB3ZWJWaWV3R3JvdXAtPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQ
YXRoLmlzRW1wdHkoKSAmJiAhbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoLmlzRW1wdHkoKSkKLSAg
ICAgICAgd2ViVmlld0dyb3VwLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCA9IGxvY2FsU3Rv
cmFnZURhdGFiYXNlUGF0aDsKLQotICAgIHJldHVybiB3ZWJWaWV3R3JvdXA7Ci19Ci0KLVdlYlZp
ZXdHcm91cCogV2ViVmlld0dyb3VwOjpnZXQoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIEFT
U0VSVCghbmFtZS5pc0VtcHR5KCkpOwotCi0gICAgcmV0dXJuIHdlYlZpZXdHcm91cHMoKS5nZXQo
bmFtZSk7Ci19Ci0KLVdlYlZpZXdHcm91cDo6V2ViVmlld0dyb3VwKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpCi0gICAgOiBtX25hbWUo
bmFtZSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKGxvY2FsU3RvcmFnZURhdGFi
YXNlUGF0aCkKLSAgICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKFVzZXJDb250ZW50Q29udHJv
bGxlcjo6Y3JlYXRlKCkpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoV2ViVmlzaXRlZExpbmtT
dG9yZTo6Y3JlYXRlKCkpCi17Ci19Ci0KLVdlYlZpZXdHcm91cDo6fldlYlZpZXdHcm91cCgpCi17
Ci0gICAgQVNTRVJUKG1fbmFtZS5pc0VtcHR5KCkpOwotICAgIEFTU0VSVChtX3dlYlZpZXdzLmlz
RW1wdHkoKSk7Ci19Ci0KLXZvaWQgV2ViVmlld0dyb3VwOjphZGRXZWJWaWV3KFdlYlZpZXcgKndl
YlZpZXcpCi17Ci0gICAgQVNTRVJUKCFtX3dlYlZpZXdzLmNvbnRhaW5zKHdlYlZpZXcpKTsKLQot
ICAgIG1fd2ViVmlld3MuYWRkKHdlYlZpZXcpOwotfQotCi12b2lkIFdlYlZpZXdHcm91cDo6cmVt
b3ZlV2ViVmlldyhXZWJWaWV3ICp3ZWJWaWV3KQotewotICAgIEFTU0VSVChtX3dlYlZpZXdzLmNv
bnRhaW5zKHdlYlZpZXcpKTsKLQotICAgIG1fd2ViVmlld3MucmVtb3ZlKHdlYlZpZXcpOwotfQot
Ci1TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXImIFdlYlZpZXdHcm91cDo6c3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyKCkKLXsKLSAgICBpZiAoIW1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKQotICAg
ICAgICBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA9IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Y3JlYXRlKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKLQotICAgIHJldHVybiAq
bV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZp
c2lvbiAxODU2OTQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwzMiBAQAorMjAxNS0wNi0xOCAgSHl1bmd3b29rIExlZSAgPGh5dW5nd29v
ay5sZWVAbmF2ZXJjb3JwLmNvbT4KKworICAgICAgICBbV2luXSBJbXBsZW1lbnQgV2ViVmlld0dy
b3VwIHRvIHN1cHBvcnQgV2ViVmlldzo6YWRkeHh4VG9Hcm91cCgpLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1OTA4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBXZWJWaWV3R3JvdXAgY2xhc3Mg
c2hhcmluZyBvbiBNYWMgYW5kIFdpbiBwb3J0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViVmlzaXRlZExpbmtTdG9yZS5jcHA6CisgICAgICAgICh2aXNpdGVkTGlua1N0b3Jlcyk6Cisg
ICAgICAgIChXZWJWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUpOgorICAgICAgICAoV2ViVmlzaXRl
ZExpbmtTdG9yZTo6V2ViVmlzaXRlZExpbmtTdG9yZSk6CisgICAgICAgIChXZWJWaXNpdGVkTGlu
a1N0b3JlOjp+V2ViVmlzaXRlZExpbmtTdG9yZSk6CisgICAgICAgIChXZWJWaXNpdGVkTGlua1N0
b3JlOjpzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyk6CisgICAgICAgIChXZWJWaXNpdGVkTGlu
a1N0b3JlOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MpOgorICAgICAgICAoV2ViVmlzaXRlZExpbmtT
dG9yZTo6c2luZ2xldG9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJW
aXNpdGVkTGlua1N0b3JlLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgICh0b1VS
TCk6CisgICAgICAgIChsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOgorICAgICAgICAoV2ViVmll
dzo6V2ViVmlldyk6CisgICAgICAgIChXZWJWaWV3Ojp+V2ViVmlldyk6CisgICAgICAgIChXZWJW
aWV3OjpzaG91bGRJbml0aWFsaXplVHJhY2tQb2ludEhhY2spOgorICAgICAgICAoV2ViVmlldzo6
aW5pdFdpdGhGcmFtZSk6CisgICAgICAgIChXZWJWaWV3OjpzZXRHcm91cE5hbWUpOgorICAgICAg
ICAoV2ViVmlldzo6YWRkVmlzaXRlZExpbmtzKToKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisKIDIw
MTUtMDYtMTcgIEh5dW5nd29vayBMZWUgIDxoeXVuZ3dvb2subGVlQG5hdmVyY29ycC5jb20+CiAK
ICAgICAgICAgW1dpbl1JbXBsZW1lbnQgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGF0Y2hQZW5k
aW5nTG9hZFJlcXVlc3RzLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDE4NTQw
MSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJT
Y3JpcHRXb3JsZC5oIgogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIgor
I2luY2x1ZGUgIldlYlZpZXdHcm91cC5oIgogI2luY2x1ZGUgIldlYlZpc2l0ZWRMaW5rU3RvcmUu
aCIKICNpbmNsdWRlICJyZXNvdXJjZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNh
c3QuaD4KQEAgLTE1Miw2ICsxNTMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xp
Y3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
eXN0ZW1JbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvV2luZG93c1RvdWNoLmg+CiAjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUu
aD4KQEAgLTI1Miw2ICsyNTQsMTUgQEAgc3RhdGljIGlubGluZSBVUkwgdG9VUkwoQlNUUiBic3Ry
KQogICAgIHJldHVybiBVUkwoVVJMKCksIHRvU3RyaW5nKGJzdHIpKTsKIH0KIAorc3RhdGljIFN0
cmluZyBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgoV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2Vz
KQoreworICAgIEJTdHJpbmcgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoOworICAgIGlmIChGQUlM
RUQocHJlZmVyZW5jZXMtPmxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCgmbG9jYWxTdG9yYWdlRGF0
YWJhc2VQYXRoKSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiB0b1N0
cmluZyhsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOworfQorCiBjbGFzcyBQcmVmZXJlbmNlc0No
YW5nZWRPclJlbW92ZWRPYnNlcnZlciA6IHB1YmxpYyBJV2ViTm90aWZpY2F0aW9uT2JzZXJ2ZXIg
ewogcHVibGljOgogICAgIHN0YXRpYyBQcmVmZXJlbmNlc0NoYW5nZWRPclJlbW92ZWRPYnNlcnZl
ciogc2hhcmVkSW5zdGFuY2UoKTsKQEAgLTQzNiw2ICs0NDcsOSBAQCBXZWJWaWV3OjpXZWJWaWV3
KCkKICAgICBpZiAoU1VDQ0VFREVEKHNoYXJlZFByZWZlcmVuY2VzLT5ncmFtbWFyQ2hlY2tpbmdF
bmFibGVkKCZlbmFibGVkKSkpCiAgICAgICAgIGdyYW1tYXJDaGVja2luZ0VuYWJsZWQgPSAhIWVu
YWJsZWQ7CiAKKyAgICBtX3dlYlZpZXdHcm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUo
U3RyaW5nKCksIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aChzaGFyZWRQcmVmZXJlbmNlcykpOwor
ICAgIG1fd2ViVmlld0dyb3VwLT5hZGRXZWJWaWV3KHRoaXMpOworCiAgICAgV2ViVmlld0NvdW50
Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlZp
ZXciKTsKQEAgLTQ1Nyw2ICs0NzEsOCBAQCBXZWJWaWV3Ojp+V2ViVmlldygpCiAgICAgQVNTRVJU
KCFtX2xheWVyVHJlZUhvc3QpOwogI2VuZGlmCiAKKyAgICBtX3dlYlZpZXdHcm91cC0+cmVtb3Zl
V2ViVmlldyh0aGlzKTsKKwogICAgIFdlYlZpZXdDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07
CiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Iik7CkBAIC0yNzU1LDE1ICsy
NzcxLDYgQEAgYm9vbCBXZWJWaWV3OjpzaG91bGRJbml0aWFsaXplVHJhY2tQb2ludAogICAgIHJl
dHVybiBzaG91bGRDcmVhdGVTY3JvbGxiYXJzOwogfQogCi1zdGF0aWMgU3RyaW5nIGxvY2FsU3Rv
cmFnZURhdGFiYXNlUGF0aChXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMpCi17Ci0gICAgQlN0
cmluZyBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGg7Ci0gICAgaWYgKEZBSUxFRChwcmVmZXJlbmNl
cy0+bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKCZsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpKSkK
LSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIHRvU3RyaW5nKGxvY2FsU3Rv
cmFnZURhdGFiYXNlUGF0aCk7Ci19Ci0KIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6aW5pdFdpdGhGcmFtZSggCiAgICAgLyogW2luXSAqLyBSRUNUIGZyYW1lLAogICAgIC8qIFtp
bl0gKi8gQlNUUiBmcmFtZU5hbWUsCkBAIC0yODI2LDkgKzI4MzMsMTAgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojppbml0VwogICAgIGNvbmZpZ3VyYXRpb24uaW5zcGVjdG9y
Q2xpZW50ID0gbV9pbnNwZWN0b3JDbGllbnQ7CiAgICAgY29uZmlndXJhdGlvbi5sb2FkZXJDbGll
bnRGb3JNYWluRnJhbWUgPSBuZXcgV2ViRnJhbWVMb2FkZXJDbGllbnQ7CiAgICAgY29uZmlndXJh
dGlvbi5kYXRhYmFzZVByb3ZpZGVyID0gJldlYkRhdGFiYXNlUHJvdmlkZXI6OnNpbmdsZXRvbigp
OwotICAgIGNvbmZpZ3VyYXRpb24uc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGUobG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKG1fcHJl
ZmVyZW5jZXMuZ2V0KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLnN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlciA9ICZtX3dlYlZpZXdHcm91cC0+c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7CiAgICAg
Y29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJGcmFt
ZUxvYWRlckNsaWVudCo+KGNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lKTsK
LSAgICBjb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rU3RvcmUgPSAmV2ViVmlzaXRlZExpbmtTdG9y
ZTo6c2luZ2xldG9uKCk7CisgICAgY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIg
PSAmbV93ZWJWaWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpOworICAgIGNvbmZpZ3Vy
YXRpb24udmlzaXRlZExpbmtTdG9yZSA9ICZtX3dlYlZpZXdHcm91cC0+dmlzaXRlZExpbmtTdG9y
ZSgpOwogCiAgICAgbV9wYWdlID0gbmV3IFBhZ2UoY29uZmlndXJhdGlvbik7CiAgICAgcHJvdmlk
ZUdlb2xvY2F0aW9uVG8obV9wYWdlLCBuZXcgV2ViR2VvbG9jYXRpb25DbGllbnQodGhpcykpOwpA
QCAtMzY5NSw4ICszNzAzLDE3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
cmVnaXMKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0R3JvdXBOYW1lKCAK
ICAgICAgICAgLyogW2luXSAqLyBCU1RSIGdyb3VwTmFtZSkKIHsKKyAgICBpZiAobV93ZWJWaWV3
R3JvdXApCisgICAgICAgIG1fd2ViVmlld0dyb3VwLT5yZW1vdmVXZWJWaWV3KHRoaXMpOworCisg
ICAgbV93ZWJWaWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwg
bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKG1fcHJlZmVyZW5jZXMuZ2V0KCkpKTsKKyAgICBtX3dl
YlZpZXdHcm91cC0+YWRkV2ViVmlldyh0aGlzKTsKKwogICAgIGlmICghbV9wYWdlKQogICAgICAg
ICByZXR1cm4gU19PSzsKKworICAgIG1fcGFnZS0+c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKCZt
X3dlYlZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkpOworICAgIG1fcGFnZS0+c2V0
VmlzaXRlZExpbmtTdG9yZShtX3dlYlZpZXdHcm91cC0+dmlzaXRlZExpbmtTdG9yZSgpKTsKICAg
ICBtX3BhZ2UtPnNldEdyb3VwTmFtZSh0b1N0cmluZyhncm91cE5hbWUpKTsKICAgICByZXR1cm4g
U19PSzsKIH0KQEAgLTY1MDQsNyArNjUyMSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6aGlzdG9yeURl
bGVnYXRlKElXZWJIaXMKIAogSFJFU1VMVCBXZWJWaWV3OjphZGRWaXNpdGVkTGlua3MoQlNUUiog
dmlzaXRlZFVSTHMsIHVuc2lnbmVkIHZpc2l0ZWRVUkxDb3VudCkKIHsKLSAgICBhdXRvJiB2aXNp
dGVkTGlua1N0b3JlID0gV2ViVmlzaXRlZExpbmtTdG9yZTo6c2luZ2xldG9uKCk7CisgICAgYXV0
byYgdmlzaXRlZExpbmtTdG9yZSA9IG1fd2ViVmlld0dyb3VwLT52aXNpdGVkTGlua1N0b3JlKCk7
CiAgICAgUGFnZUdyb3VwJiBncm91cCA9IGNvcmUodGhpcyktPmdyb3VwKCk7CiAgICAgCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZpc2l0ZWRVUkxDb3VudDsgKytpKSB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vV2ViVmlldy5oCShyZXZpc2lvbiAxODU0MDEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJW
aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgV2ViSW5zcGVjdG9y
Q2xpZW50OwogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKIGNsYXNzIEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0OwogI2VuZGlmCitjbGFzcyBXZWJWaWV3R3JvdXA7CiAKIFdlYlZpZXcq
IGtpdChXZWJDb3JlOjpQYWdlKik7CiBXZWJDb3JlOjpQYWdlKiBjb3JlKElXZWJWaWV3Kik7CkBA
IC0xMTU5LDYgKzExNjAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkZ1bGxTY3JlZW5Db250cm9sbGVyPiBtX2Z1bGxzY3JlZW5Db250cm9sbGVyOwogICAgIFdl
YkNvcmU6OkludFBvaW50IG1fc2Nyb2xsUG9zaXRpb247CiAjZW5kaWYKKworICAgIFJlZlB0cjxX
ZWJWaWV3R3JvdXA+IG1fd2ViVmlld0dyb3VwOwogfTsKIAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0
b3JlLmNwcAkocmV2aXNpb24gMTg1NDAxKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDIwICsz
NCwyNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIGJvb2wgc19zaG91bGRU
cmFja1Zpc2l0ZWRMaW5rczsKIAotV2ViVmlzaXRlZExpbmtTdG9yZSYgV2ViVmlzaXRlZExpbmtT
dG9yZTo6c2luZ2xldG9uKCkKK3N0YXRpYyBIYXNoU2V0PFdlYlZpc2l0ZWRMaW5rU3RvcmUqPiYg
dmlzaXRlZExpbmtTdG9yZXMoKQogewotICAgIHN0YXRpYyBXZWJWaXNpdGVkTGlua1N0b3JlJiB2
aXNpdGVkTGlua1N0b3JlID0gKmFkb3B0UmVmKG5ldyBXZWJWaXNpdGVkTGlua1N0b3JlKS5sZWFr
UmVmKCk7Ci0gICAgCi0gICAgcmV0dXJuIHZpc2l0ZWRMaW5rU3RvcmU7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hTZXQ8V2ViVmlzaXRlZExpbmtTdG9yZSo+PiB2aXNpdGVkTGlua1N0
b3JlczsKKworICAgIHJldHVybiB2aXNpdGVkTGlua1N0b3JlczsKK30KKworUmVmPFdlYlZpc2l0
ZWRMaW5rU3RvcmU+IFdlYlZpc2l0ZWRMaW5rU3RvcmU6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViVmlzaXRlZExpbmtTdG9yZSk7CiB9CiAKIFdlYlZpc2l0ZWRMaW5r
U3RvcmU6OldlYlZpc2l0ZWRMaW5rU3RvcmUoKQogICAgIDogbV92aXNpdGVkTGlua3NQb3B1bGF0
ZWQoZmFsc2UpCiB7CisgICAgdmlzaXRlZExpbmtTdG9yZXMoKS5hZGQodGhpcyk7CiB9CiAKIFdl
YlZpc2l0ZWRMaW5rU3RvcmU6On5XZWJWaXNpdGVkTGlua1N0b3JlKCkKIHsKKyAgICB2aXNpdGVk
TGlua1N0b3JlcygpLnJlbW92ZSh0aGlzKTsKIH0KIAogdm9pZCBXZWJWaXNpdGVkTGlua1N0b3Jl
OjpzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyhib29sIHNob3VsZFRyYWNrVmlzaXRlZExpbmtz
KQpAQCAtNjIsNyArNjksOCBAQCB2b2lkIFdlYlZpc2l0ZWRMaW5rU3RvcmU6OnNldFNob3VsZFRy
YWNrCiAKIHZvaWQgV2ViVmlzaXRlZExpbmtTdG9yZTo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCkK
IHsKLSAgICBXZWJWaXNpdGVkTGlua1N0b3JlOjpzaW5nbGV0b24oKS5yZW1vdmVWaXNpdGVkTGlu
a0hhc2hlcygpOworICAgIGZvciAoYXV0byYgdmlzaXRlZExpbmtTdG9yZSA6IHZpc2l0ZWRMaW5r
U3RvcmVzKCkpCisgICAgICAgIHZpc2l0ZWRMaW5rU3RvcmUtPnJlbW92ZVZpc2l0ZWRMaW5rSGFz
aGVzKCk7CiAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5tYXJrUGFnZXNGb3JWaXNpdGVkTGlu
a1N0eWxlUmVjYWxjKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgJKHJldmlzaW9uIDE4NTQwMSkK
KysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNyBAQAogCiBjbGFzcyBXZWJWaXNpdGVkTGlu
a1N0b3JlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RvcmUgewogcHVibGlj
OgotICAgIHN0YXRpYyBXZWJWaXNpdGVkTGlua1N0b3JlJiBzaW5nbGV0b24oKTsKLSAgICBXZWJW
aXNpdGVkTGlua1N0b3JlKCk7CisgICAgc3RhdGljIFJlZjxXZWJWaXNpdGVkTGlua1N0b3JlPiBj
cmVhdGUoKTsKICAgICB2aXJ0dWFsIH5XZWJWaXNpdGVkTGlua1N0b3JlKCk7CiAKICAgICBzdGF0
aWMgdm9pZCBzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyhib29sKTsKQEAgLTQyLDYgKzQxLDgg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkVmlzaXRlZExpbmsoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcpOwogCiBwcml2YXRlOgorICAgIFdlYlZpc2l0ZWRMaW5rU3RvcmUoKTsKKwogICAgIHZpcnR1
YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpMaW5rSGFzaCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0
ZVVSTCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6
OlBhZ2UmLCBXZWJDb3JlOjpMaW5rSGFzaCkgb3ZlcnJpZGU7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>