<?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>36312</bug_id>
          
          <creation_ts>2010-03-18 11:21:46 -0700</creation_ts>
          <short_desc>Support viewport meta tag</short_desc>
          <delta_ts>2010-05-20 13:16:36 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>CLOSED</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>
          
          <blocked>35784</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yong Li">yong.li.webkit</reporter>
          <assigned_to name="Yong Li">yong.li.webkit</assigned_to>
          <cc>ap</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>hausmann</cc>
    
    <cc>jesus</cc>
    
    <cc>joepeck</cc>
    
    <cc>kenneth</cc>
    
    <cc>koivisto</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>manyoso</cc>
    
    <cc>mjs</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>201420</commentid>
    <comment_count>0</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-03-18 11:21:46 -0700</bug_when>
    <thetext>More and more mobile web developers are using &quot;viewport&quot; meta tag now. It&apos;s initially for iPhone only, but some other mobile platforms/browsers have also supported it (like Android), and some others may want this feature, too. To keep &quot;write once, run everywhere&quot; experience, this feature should be added to WebKit upstream in order to discourage fragmentation in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201426</commentid>
    <comment_count>1</comment_count>
      <attachid>51061</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-03-18 11:27:23 -0700</bug_when>
    <thetext>Created attachment 51061
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201436</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-03-18 11:34:36 -0700</bug_when>
    <thetext>Documentation:

http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201448</commentid>
    <comment_count>3</comment_count>
      <attachid>51066</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-03-18 11:51:19 -0700</bug_when>
    <thetext>Created attachment 51066
fix conflicts and style errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201449</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-18 11:52:07 -0700</bug_when>
    <thetext>Attachment 51066 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/dom/Document.cpp:138:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 7 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>201486</commentid>
    <comment_count>5</comment_count>
      <attachid>51075</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-03-18 12:53:46 -0700</bug_when>
    <thetext>Created attachment 51075
fix one more style error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201883</commentid>
    <comment_count>6</comment_count>
      <attachid>51075</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-03-19 09:17:27 -0700</bug_when>
    <thetext>Comment on attachment 51075
fix one more style error

This will need tests. DRT can be modified to act as a client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202690</commentid>
    <comment_count>7</comment_count>
      <attachid>51332</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-03-22 12:31:53 -0700</bug_when>
    <thetext>Created attachment 51332
Patch 1 of 2

Renamed method receiveViewportArguments to dispatchDidReceiveViewportArguments to be more descriptive and to conform to the naming conventions for similar methods in FrameLoaderClient. Added #ifdef/#endif META_VIEWPORT guard around #include ViewportArguments.h  and forward declaration in files WebCore/dom/Document.cpp and WebCore/loader/FrameLoaderClient.h, respectively.Fixed some style issues that the style bot missed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202713</commentid>
    <comment_count>8</comment_count>
      <attachid>51336</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-03-22 12:47:47 -0700</bug_when>
    <thetext>Created attachment 51336
Patch 2 of 2: Mac and Qt DRT changes and test case

Implements DRT changes to support testing META_VIEWPORT for the Mac, and Qt ports.

I am unclear how to generate a uuid for a Windows IDL so as to add a similar WebViewportArguments structure for the Windows port and connect up to DRT. Does anybody know how to generate this?

From my understanding a similar structure is needed to integrate with GTK DRT. I took a look at some of the GTK Api files (such as webkitwebresource.h) and found the structure convoluted. I take it I would have to define my structure and modify webkitdefines.h? If any GTK folks have any suggestions/insight that would be appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202715</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-22 12:53:27 -0700</bug_when>
    <thetext>Attachment 51336 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/mac/WebView/WebViewportArguments.h:34:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 17 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>202760</commentid>
    <comment_count>10</comment_count>
      <attachid>51356</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-03-22 14:37:15 -0700</bug_when>
    <thetext>Created attachment 51356
Patch 2 of 2: Mac and Qt DRT changes and test case

Fix style error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203735</commentid>
    <comment_count>11</comment_count>
      <attachid>51332</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2010-03-24 19:24:38 -0700</bug_when>
    <thetext>Comment on attachment 51332
Patch 1 of 2

To be honest, I don&apos;t like passing ViewportArguments as a reference because it&apos;s not clear what it does.  Passing by pointer would be nicer.  Beyond that I&apos;m okay but given that others showed review interest as well I&apos;ll leave it for a little while for more review before r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203778</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-03-24 21:27:55 -0700</bug_when>
    <thetext>Simon, Antti, Laszlo, shouldn&apos;t we enable this for Maemo and Symbian?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203783</commentid>
    <comment_count>13</comment_count>
      <attachid>51356</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-03-24 21:44:07 -0700</bug_when>
    <thetext>Comment on attachment 51356
Patch 2 of 2: Mac and Qt DRT changes and test case


&gt; +#if ENABLE(META_VIEWPORT)
&gt; +void FrameLoaderClientQt::dispatchDidReceiveViewportArguments(const WebCore::ViewportArguments&amp;)
&gt; +{
&gt; +    if (dumpFrameLoaderCallbacks)
&gt; +        printf(&quot;%s - didReceiveViewportArgumentsForFrame\n&quot;, qPrintable(drtDescriptionSuitableForTestResult(m_frame)));
&gt; +
&gt; +    notImplemented();
&gt; +}
&gt; +#endif

Is Qt supposed to have the notImplemented() here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204122</commentid>
    <comment_count>14</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-03-25 10:20:50 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 51332 [details])
&gt; To be honest, I don&apos;t like passing ViewportArguments as a reference because
&gt; it&apos;s not clear what it does.  Passing by pointer would be nicer.  Beyond that
&gt; I&apos;m okay but given that others showed review interest as well I&apos;ll leave it for
&gt; a little while for more review before r+.

Will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204130</commentid>
    <comment_count>15</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-03-25 10:31:52 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 51356 [details])
&gt; 
&gt; &gt; +#if ENABLE(META_VIEWPORT)
&gt; &gt; +void FrameLoaderClientQt::dispatchDidReceiveViewportArguments(const WebCore::ViewportArguments&amp;)
&gt; &gt; +{
&gt; &gt; +    if (dumpFrameLoaderCallbacks)
&gt; &gt; +        printf(&quot;%s - didReceiveViewportArgumentsForFrame\n&quot;, qPrintable(drtDescriptionSuitableForTestResult(m_frame)));
&gt; &gt; +
&gt; &gt; +    notImplemented();
&gt; &gt; +}
&gt; &gt; +#endif
&gt; 
&gt; Is Qt supposed to have the notImplemented() here?

I can remove it.

When implementing this method I followed from such methods as FrameLoaderClientQt::didDisplayInsecureContent and FrameLoader::didRunInsecureContent.  No specific implementation is provided in these patches. So, I left the notImplemented() line. Let me know if I should remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204175</commentid>
    <comment_count>16</comment_count>
      <attachid>51666</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-03-25 11:50:33 -0700</bug_when>
    <thetext>Created attachment 51666
Patch 1 of 2

Changed argument of method FrameLoaderClient::dispatchDidReceiveViewportArguments from reference to pointer based on George&apos;s comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204177</commentid>
    <comment_count>17</comment_count>
      <attachid>51667</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-03-25 11:52:35 -0700</bug_when>
    <thetext>Created attachment 51667
Patch 2 of 2: Mac and Qt DRT changes and test case

Updated patch to reflect change of argument type in FrameLoaderClient::dispatchDidReceiveViewportArguments from reference to pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204212</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-25 14:04:27 -0700</bug_when>
    <thetext>As discussed on IRC, we should consider aligning this with existing iPhone code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204629</commentid>
    <comment_count>19</comment_count>
      <attachid>51752</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-03-26 09:38:09 -0700</bug_when>
    <thetext>Created attachment 51752
Patch

Updated patch to conform to the related code used in the WebCore-528.15 source published as part of the iPhone 3.1.3 source code &lt;http://www.opensource.apple.com/source/WebCore/WebCore-528.15/&gt;.

As far as I can tell from the publicly available source code, the method Document::processArguments can be made private, so I made this change (David Kilzer will this cause any issues for you?). I also made various style corrections so as to conform to the WebKit Code Style Guidelines.

We can further cleanup/refactor this code and add DRT support. I would suggest  that we do these in separate bugs.

I would appreciate both Maciej Stachowiak&apos;s and David Kilzer&apos;s feedback regarding the inclusion of this code into the general WebKit project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204631</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-26 09:42:14 -0700</bug_when>
    <thetext>Attachment 51752 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/dom/Document.cpp:2347:  Declaration has space between type name and * in Frame *frame  [whitespace/declaration] [3]
WebCore/dom/ViewportArguments.cpp:57:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 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>204635</commentid>
    <comment_count>21</comment_count>
      <attachid>51753</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-03-26 09:48:05 -0700</bug_when>
    <thetext>Created attachment 51753
Patch

Fixed style errors found by style bot. Also, removed extraneous whitespace introduced by changes to files Android.mk and GNUmakefile.am.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204640</commentid>
    <comment_count>22</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-03-26 09:53:18 -0700</bug_when>
    <thetext>Forgot to mention, I changed references to the function GSMainScreenSize() in method Document::setViewportFeature in the iPhone 3.1.3 source to document-&gt;page()-&gt;chrome()-&gt;windowRect(). This may not be correct. So, we may want to consider adding a method to Chrome/ChromeClient, say screenSize() to return the equivalent of GSMainScreenSize() for the platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204667</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-26 10:39:44 -0700</bug_when>
    <thetext>Attachment 51753 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1458001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204670</commentid>
    <comment_count>24</comment_count>
      <attachid>51758</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-03-26 10:48:25 -0700</bug_when>
    <thetext>Created attachment 51758
Patch

Attempt to fix Chromium build issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204676</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-26 10:51:58 -0700</bug_when>
    <thetext>Attachment 51758 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/dom/ViewportArguments.cpp:32:  Alphabetical sorting problem.  [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>204678</commentid>
    <comment_count>26</comment_count>
      <attachid>51761</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-03-26 10:57:22 -0700</bug_when>
    <thetext>Created attachment 51761
Patch

Fix style issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205269</commentid>
    <comment_count>27</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-28 17:34:22 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; As far as I can tell from the publicly available source code, the method
&gt; Document::processArguments can be made private, so I made this change (David
&gt; Kilzer will this cause any issues for you?). I also made various style
&gt; corrections so as to conform to the WebKit Code Style Guidelines.

That&apos;s fine.
 
&gt; We can further cleanup/refactor this code and add DRT support. I would suggest 
&gt; that we do these in separate bugs.
&gt; 
&gt; I would appreciate both Maciej Stachowiak&apos;s and David Kilzer&apos;s feedback
&gt; regarding the inclusion of this code into the general WebKit project.

I defer to Maciej on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205573</commentid>
    <comment_count>28</comment_count>
      <attachid>51356</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-29 11:38:19 -0700</bug_when>
    <thetext>Comment on attachment 51356
Patch 2 of 2: Mac and Qt DRT changes and test case

Cleared George Staikos&apos;s review+ from obsolete attachment 51356 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213490</commentid>
    <comment_count>29</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-04-16 16:44:41 -0700</bug_when>
    <thetext>Neither Dave Kilzer nor I have any objections to including this code in WebKit nor are we aware of anyone else objecting.

I&apos;m not an expert on this area of code myself, so I am not sure if I would be the best reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213510</commentid>
    <comment_count>30</comment_count>
      <attachid>51761</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2010-04-16 17:16:23 -0700</bug_when>
    <thetext>Comment on attachment 51761
Patch

As there are no objections from maciej or ddkilzer r=me with the caveat that future patch will add appropriate tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213577</commentid>
    <comment_count>31</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-16 21:40:37 -0700</bug_when>
    <thetext>Committed r57775: &lt;http://trac.webkit.org/changeset/57775&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214898</commentid>
    <comment_count>32</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-04-20 13:00:58 -0700</bug_when>
    <thetext>Revision r57775 cherry-picked into qtwebkit-2.0 with commit d686f2086018398a39350705a8326b1adf88ad4a</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51061</attachid>
            <date>2010-03-18 11:27:23 -0700</date>
            <delta_ts>2010-03-18 11:51:19 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>36312.patch</filename>
            <type>text/plain</type>
            <size>12303</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmFkZTU1YS4uNTJjNDRiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAwOS0xMi0xNyAgWW9uZyBMaSAgPHlv
bGlAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQcm9jZXNzICJ2aWV3cG9ydCIgbWV0YSB0YWcgd2hlbiBFTkFCTEUoTUVUQV9WSUVXUE9S
VCkgaXMgdHJ1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzYzMTIKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0TWV0YVRhZyk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpzZXRWaWV3cG9ydEZlYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6aXNT
ZXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFZpZXdwb3J0QXJndW1lbnRzKToK
KyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzOjpWaWV3cG9ydEFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydEFy
Z3VtZW50czo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6Omhh
c0N1c3RvbUFyZ3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWV0YUVsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnQ6OnJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyk6CisKIDIwMTAtMDEtMTMgIFBhdmVsIEZl
bGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGlt
b3RoeSBIYXRjaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGNkMTg2N2UuLjc5MTZmYWIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKICNpbmNsdWRlICJIVE1MQWxsQ29sbGVjdGlvbi5oIgpAQCAtMTMyLDYgKzEzMyw3IEBACiAj
aW5jbHVkZSAiWE1MTmFtZXMuaCIKICNpbmNsdWRlICJYTUxUb2tlbml6ZXIuaCIKICNpbmNsdWRl
ICJodG1sZWRpdGluZy5oIgorI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNDg0NSw2ICs0ODQ3LDIxIEBAIHZvaWQgRG9j
dW1lbnQ6OmRpc3BsYXlCdWZmZXJNb2RpZmllZEJ5RW5jb2RpbmcoVUNoYXIqIGJ1ZmZlciwgdW5z
aWduZWQgbGVuKSBjb25zCiAgICAgICAgIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5kaXNwbGF5QnVm
ZmVyKGJ1ZmZlciwgbGVuKTsKIH0KIAorI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQordm9pZCBE
b2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0TWV0YVRhZyhjb25zdCBTdHJpbmcmIGZlYXR1cmVzKQor
eworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIEZyYW1lTG9hZGVyKiBs
b2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKKyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgVmlld3BvcnRBcmd1bWVudHMgYXJndW1lbnRzOworICAgIGV4dHJhY3RWaWV3
cG9ydEFyZ3VtZW50cyhmZWF0dXJlcywgYXJndW1lbnRzKTsKKyAgICBsb2FkZXItPmNsaWVudCgp
LT5yZWNlaXZlVmlld3BvcnRBcmd1bWVudHMoYXJndW1lbnRzKTsKK30KKyNlbmRpZgorCiAjaWYg
RU5BQkxFKFhIVE1MTVApCiBib29sIERvY3VtZW50Ojppc1hIVE1MTVBEb2N1bWVudCgpIGNvbnN0
CiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAppbmRleCBlYjY4NzlmLi4zNDU1ZGNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTkyOSw2ICs5MjksMTAg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNpbmdHZW9sb2NhdGlvbihib29sIGYpIHsgbV91c2lu
Z0dlb2xvY2F0aW9uID0gZjsgfQogICAgIGJvb2wgdXNpbmdHZW9sb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdXNpbmdHZW9sb2NhdGlvbjsgfTsKIAorI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JU
KQorICAgIHZvaWQgcHJvY2Vzc1ZpZXdwb3J0TWV0YVRhZyhjb25zdCBTdHJpbmcgJiBmZWF0dXJl
cyk7CisjZW5kaWYgICAgCisKICNpZiBFTkFCTEUoV01MKQogICAgIHZvaWQgc2V0Q29udGFpbnNX
TUxDb250ZW50KGJvb2wgdmFsdWUpIHsgbV9jb250YWluc1dNTENvbnRlbnQgPSB2YWx1ZTsgfQog
ICAgIGJvb2wgY29udGFpbnNXTUxDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250YWluc1dN
TENvbnRlbnQ7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNw
cCBiL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4zZjk1NmYxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20v
Vmlld3BvcnRBcmd1bWVudHMuY3BwCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uLCBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCisKKyNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRp
YyB2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3Qg
U3RyaW5nJiB2YWx1ZVN0cmluZywgVmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cykKK3sKKyAg
ICBmbG9hdCB2YWx1ZSA9IC0xOworCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlU3Ry
aW5nLCAieWVzIikpCisgICAgICAgIHZhbHVlID0gMTsKKyAgICBlbHNlIGlmIChlcXVhbElnbm9y
aW5nQ2FzZSh2YWx1ZVN0cmluZywgImRlZmF1bHQiKSkKKyAgICAgICAgOworICAgIGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlU3RyaW5nLCAiZGV2aWNlLXdpZHRoIikpCisgICAgICAg
IHZhbHVlID0gVmlld3BvcnRBcmd1bWVudHM6OkRldmljZVdpZHRoOworICAgIGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKHZhbHVlU3RyaW5nLCAiZGV2aWNlLWhlaWdodCIpKQorICAgICAgICB2
YWx1ZSA9IFZpZXdwb3J0QXJndW1lbnRzOjpEZXZpY2VIZWlnaHQ7CisgICAgZWxzZSBpZiAodmFs
dWVTdHJpbmcubGVuZ3RoKCkgIT0gMCkKKyAgICAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDxmbG9h
dD4odmFsdWVTdHJpbmcudG9Eb3VibGUoKSk7CisKKyAgICBpZiAoa2V5U3RyaW5nID09ICJpbml0
aWFsLXNjYWxlIikKKyAgICAgICAgYXJndW1lbnRzLmluaXRpYWxTY2FsZSA9IHZhbHVlOworICAg
IGVsc2UgaWYgKGtleVN0cmluZyA9PSAibWluaW11bS1zY2FsZSIpCisgICAgICAgIGFyZ3VtZW50
cy5taW5pbXVtU2NhbGUgPSB2YWx1ZTsKKyAgICBlbHNlIGlmIChrZXlTdHJpbmcgPT0gIm1heGlt
dW0tc2NhbGUiKQorICAgICAgICBhcmd1bWVudHMubWF4aW11bVNjYWxlID0gdmFsdWU7CisgICAg
ZWxzZSBpZiAoa2V5U3RyaW5nID09ICJ1c2VyLXNjYWxhYmxlIikKKyAgICAgICAgYXJndW1lbnRz
LnVzZXJTY2FsYWJsZSA9IHN0YXRpY19jYXN0PGludD4odmFsdWUpOworICAgIGVsc2UgaWYgKGtl
eVN0cmluZyA9PSAid2lkdGgiKQorICAgICAgICBhcmd1bWVudHMud2lkdGggPSBzdGF0aWNfY2Fz
dDxpbnQ+KHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXlTdHJpbmcgPT0gImhlaWdodCIpCisgICAg
ICAgIGFyZ3VtZW50cy5oZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKTsKK30KKworc3Rh
dGljIGlubGluZSBib29sIGlzU2VwYXJhdG9yKFVDaGFyIGMpCit7CisgICAgcmV0dXJuIGMgPT0g
JyAnIHx8IGMgPT0gJ1x0JyB8fCBjID09ICdcbicgfHwgYyA9PSAnXHInIHx8IGMgPT0gJz0nIHx8
IGMgPT0gJywnIHx8IGMgPT0gJ1wwJzsKK30KKwordm9pZCBleHRyYWN0Vmlld3BvcnRBcmd1bWVu
dHMoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBmZWF0dXJlcywgVmlld3BvcnRBcmd1bWVudHMmIGFy
Z3VtZW50cykKK3sKKyAgICAvLyBUcmVhZCBsaWdodGx5IGluIHRoaXMgY29kZSAtLSBpdCB3YXMg
c3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIG1pbWljIFdpbiBJRSdzIHBhcnNpbmcgYmVoYXZpb3Iu
CisgICAgaW50IGtleUJlZ2luLCBrZXlFbmQ7CisgICAgaW50IHZhbHVlQmVnaW4sIHZhbHVlRW5k
OworICAgIAorICAgIGludCBpID0gMDsKKyAgICBpbnQgbGVuZ3RoID0gZmVhdHVyZXMubGVuZ3Ro
KCk7CisgICAgU3RyaW5nIGJ1ZmZlciA9IGZlYXR1cmVzLmxvd2VyKCk7CisgICAgd2hpbGUgKGkg
PCBsZW5ndGgpIHsKKyAgICAgICAgLy8gc2tpcCB0byBmaXJzdCBub24tc2VwYXJhdG9yLCBidXQg
ZG9uJ3Qgc2tpcCBwYXN0IHRoZSBlbmQgb2YgdGhlIHN0cmluZworICAgICAgICB3aGlsZSAoaXNT
ZXBhcmF0b3IoYnVmZmVyW2ldKSAmJiBpIDwgbGVuZ3RoKQorICAgICAgICAgICAgKytpOworICAg
ICAgICBrZXlCZWdpbiA9IGk7CisgICAgICAgIAorICAgICAgICAvLyBza2lwIHRvIGZpcnN0IHNl
cGFyYXRvcgorICAgICAgICB3aGlsZSAoIWlzU2VwYXJhdG9yKGJ1ZmZlcltpXSkgJiYgaSA8IGxl
bmd0aCkKKyAgICAgICAgICAgICsraTsKKyAgICAgICAga2V5RW5kID0gaTsKKyAgICAgICAgCisg
ICAgICAgIC8vIHNraXAgdG8gZmlyc3QgJz0nLCBidXQgZG9uJ3Qgc2tpcCBwYXN0IGEgJywnIG9y
IHRoZSBlbmQgb2YgdGhlIHN0cmluZworICAgICAgICB3aGlsZSAoYnVmZmVyW2ldICE9ICc9JyAm
JiBidWZmZXJbaV0gIT0gJywnICYmIGkgPCBsZW5ndGgpCisgICAgICAgICAgICArK2k7CisgICAg
ICAgIAorICAgICAgICAvLyBza2lwIHRvIGZpcnN0IG5vbi1zZXBhcmF0b3IsIGJ1dCBkb24ndCBz
a2lwIHBhc3QgYSAnLCcgb3IgdGhlIGVuZCBvZiB0aGUgc3RyaW5nCisgICAgICAgIHdoaWxlIChp
c1NlcGFyYXRvcihidWZmZXJbaV0pICYmIGJ1ZmZlcltpXSAhPSAnLCcgJiYgaSA8IGxlbmd0aCkK
KyAgICAgICAgICAgICsraTsKKworICAgICAgICB2YWx1ZUJlZ2luID0gaTsKKyAgICAgICAgCisg
ICAgICAgIC8vIHNraXAgdG8gZmlyc3Qgc2VwYXJhdG9yCisgICAgICAgIHdoaWxlICghaXNTZXBh
cmF0b3IoYnVmZmVyW2ldKSAmJiBpIDwgbGVuZ3RoKQorICAgICAgICAgICAgKytpOworCisgICAg
ICAgIHZhbHVlRW5kID0gaTsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBrZXlTdHJpbmcoYnVm
ZmVyLnN1YnN0cmluZyhrZXlCZWdpbiwga2V5RW5kIC0ga2V5QmVnaW4pKTsKKyAgICAgICAgU3Ry
aW5nIHZhbHVlU3RyaW5nKGJ1ZmZlci5zdWJzdHJpbmcodmFsdWVCZWdpbiwgdmFsdWVFbmQgLSB2
YWx1ZUJlZ2luKSk7CisgICAgICAgIHNldFZpZXdwb3J0RmVhdHVyZShrZXlTdHJpbmcsIHZhbHVl
U3RyaW5nLCBhcmd1bWVudHMpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaCBiL1dlYkNvcmUvZG9t
L1ZpZXdwb3J0QXJndW1lbnRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NTZiZjRlMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlv
biwgTGltaXRlZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlld3BvcnRBcmd1
bWVudHNfaAorI2RlZmluZSBWaWV3cG9ydEFyZ3VtZW50c19oCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyAgICBjbGFzcyBTdHJpbmc7CisKKyAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHMgewor
ICAgICAgICBlbnVtIHsKKyAgICAgICAgICAgIE5vdFNwZWNpZmllZCA9IC0xLAorICAgICAgICAg
ICAgRGV2aWNlV2lkdGggPSAtMiwKKyAgICAgICAgICAgIERldmljZUhlaWdodCA9IC0zLAorICAg
ICAgICB9OworCisgICAgICAgIGludCB3aWR0aDsKKyAgICAgICAgaW50IGhlaWdodDsKKyAgICAg
ICAgaW50IHVzZXJTY2FsYWJsZTsKKyAgICAgICAgZmxvYXQgaW5pdGlhbFNjYWxlOworICAgICAg
ICBmbG9hdCBtaW5pbXVtU2NhbGU7CisgICAgICAgIGZsb2F0IG1heGltdW1TY2FsZTsKKworICAg
ICAgICBWaWV3cG9ydEFyZ3VtZW50cygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNsZWFyKCk7
CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGNsZWFyKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaW5pdGlhbFNjYWxlID0gbWluaW11bVNjYWxlID0gbWF4aW11bVNjYWxlID0gLTE7CisgICAg
ICAgICAgICB3aWR0aCA9IGhlaWdodCA9IHVzZXJTY2FsYWJsZSA9IE5vdFNwZWNpZmllZDsKKyAg
ICAgICAgfQorCisgICAgICAgIGJvb2wgaGFzQ3VzdG9tQXJndW1lbnQoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gaW5pdGlhbFNjYWxlID4gMCB8fCBtaW5pbXVtU2NhbGUg
PiAwIHx8IG1heGltdW1TY2FsZSA+IDAKKyAgICAgICAgICAgICAgICB8fCB3aWR0aCAhPSBOb3RT
cGVjaWZpZWQgfHwgaGVpZ2h0ICE9IE5vdFNwZWNpZmllZCB8fCB1c2VyU2NhbGFibGUgIT0gTm90
U3BlY2lmaWVkOworICAgICAgICB9CisgICAgfTsKKworICAgIHZvaWQgZXh0cmFjdFZpZXdwb3J0
QXJndW1lbnRzKGNvbnN0IFN0cmluZyYgZmVhdHVyZXMsIFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1
bWVudHMpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTE1ldGFF
bGVtZW50LmNwcAppbmRleCA2MTRmZjY3Li5mMGQ0NDJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGFFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50
LmNwcApAQCAtNjcsOCArNjcsMTQgQEAgdm9pZCBIVE1MTWV0YUVsZW1lbnQ6OnByb2Nlc3MoKQog
ICAgICAgICBkb2N1bWVudCgpLT5wcm9jZXNzRm9ybWF0RGV0ZWN0aW9uKG1fY29udGVudCk7CiAg
ICAgLy8gR2V0IHRoZSBkb2N1bWVudCB0byBwcm9jZXNzIHRoZSB0YWcsIGJ1dCBvbmx5IGlmIHdl
J3JlIGFjdHVhbGx5IHBhcnQgb2YgRE9NIHRyZWUgKGNoYW5naW5nIGEgbWV0YSB0YWcgd2hpbGUK
ICAgICAvLyBpdCdzIG5vdCBpbiB0aGUgdHJlZSBzaG91bGRuJ3QgaGF2ZSBhbnkgZWZmZWN0IG9u
IHRoZSBkb2N1bWVudCkKLSAgICBpZiAoaW5Eb2N1bWVudCgpICYmICFtX2VxdWl2LmlzTnVsbCgp
ICYmICFtX2NvbnRlbnQuaXNOdWxsKCkpCi0gICAgICAgIGRvY3VtZW50KCktPnByb2Nlc3NIdHRw
RXF1aXYobV9lcXVpdiwgbV9jb250ZW50KTsKKyAgICBpZiAoaW5Eb2N1bWVudCgpICYmICFtX2Nv
bnRlbnQuaXNOdWxsKCkpIHsKKyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKKyAgICAgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKG5hbWUoKSwgInZpZXdwb3J0IikpCisgICAgICAgICAgICBkb2N1
bWVudCgpLT5wcm9jZXNzVmlld3BvcnRNZXRhVGFnKG1fY29udGVudCk7CisjZW5kaWYKKyAgICAg
ICAgaWYgKCFtX2VxdWl2LmlzTnVsbCgpKQorICAgICAgICAgICAgZG9jdW1lbnQoKS0+cHJvY2Vz
c0h0dHBFcXVpdihtX2VxdWl2LCBtX2NvbnRlbnQpOworICAgIH0KIH0KIAogU3RyaW5nIEhUTUxN
ZXRhRWxlbWVudDo6Y29udGVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCA5OTUwNWI4Li5iNzYyOGYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTcyLDYgKzcyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKICAgICBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKICAgICBjbGFzcyBTdHJpbmc7CisgICAgc3Ry
dWN0IFZpZXdwb3J0QXJndW1lbnRzOwogICAgIGNsYXNzIFdpZGdldDsKIAogICAgIHR5cGVkZWYg
dm9pZCAoUG9saWN5Q2hlY2tlcjo6KkZyYW1lUG9saWN5RnVuY3Rpb24pKFBvbGljeUFjdGlvbik7
CkBAIC0yNTcsNiArMjU4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KCkgeyB9CiAKICAgICAgICAgdmlydHVhbCBib29s
IGFsbG93SmF2YVNjcmlwdChib29sIGVuYWJsZWRQZXJTZXR0aW5ncykgeyByZXR1cm4gZW5hYmxl
ZFBlclNldHRpbmdzOyB9CisjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQpCisgICAgICAgIHZpcnR1
YWwgdm9pZCByZWNlaXZlVmlld3BvcnRBcmd1bWVudHMoY29uc3QgVmlld3BvcnRBcmd1bWVudHMm
KSB7IH0KKyNlbmRpZgogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51066</attachid>
            <date>2010-03-18 11:51:19 -0700</date>
            <delta_ts>2010-03-18 12:53:46 -0700</delta_ts>
            <desc>fix conflicts and style errors</desc>
            <filename>36312.patch</filename>
            <type>text/plain</type>
            <size>12121</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2E0OThiZC4uODk2MWU1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAwOS0xMi0xNyAgWW9uZyBMaSAgPHlv
bGlAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQcm9jZXNzICJ2aWV3cG9ydCIgbWV0YSB0YWcgd2hlbiBFTkFCTEUoTUVUQV9WSUVXUE9S
VCkgaXMgdHJ1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzYzMTIKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0TWV0YVRhZyk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpzZXRWaWV3cG9ydEZlYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6aXNT
ZXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFZpZXdwb3J0QXJndW1lbnRzKToK
KyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzOjpWaWV3cG9ydEFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydEFy
Z3VtZW50czo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6Omhh
c0N1c3RvbUFyZ3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWV0YUVsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnQ6OnJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyk6CisKIDIwMTAtMDMtMTcgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZp
c2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCBiNTdmZmFmLi5jZGEwMDRmIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01OCw2
ICs1OCw3IEBACiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSAiSFRNTEFsbENvbGxlY3Rpb24uaCIKQEAgLTEzNCw2ICsxMzUsNyBAQAogI2luY2x1ZGUg
IlhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiWE1MVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiaHRtbGVk
aXRpbmcuaCIKKyNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KQEAgLTQ3NTcsNiArNDc1OSwyMSBAQCB2b2lkIERvY3VtZW50Ojpk
aXNwbGF5QnVmZmVyTW9kaWZpZWRCeUVuY29kaW5nKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxl
bikgY29ucwogICAgICAgICBtX2RlY29kZXItPmVuY29kaW5nKCkuZGlzcGxheUJ1ZmZlcihidWZm
ZXIsIGxlbik7CiB9CiAKKyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKK3ZvaWQgRG9jdW1lbnQ6
OnByb2Nlc3NWaWV3cG9ydE1ldGFUYWcoY29uc3QgU3RyaW5nJiBmZWF0dXJlcykKK3sKKyAgICBp
ZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBGcmFtZUxvYWRlciogbG9hZGVyID0g
bV9mcmFtZS0+bG9hZGVyKCk7CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFZpZXdwb3J0QXJndW1lbnRzIGFyZ3VtZW50czsKKyAgICBleHRyYWN0Vmlld3BvcnRBcmd1
bWVudHMoZmVhdHVyZXMsIGFyZ3VtZW50cyk7CisgICAgbG9hZGVyLT5jbGllbnQoKS0+cmVjZWl2
ZVZpZXdwb3J0QXJndW1lbnRzKGFyZ3VtZW50cyk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShY
SFRNTE1QKQogYm9vbCBEb2N1bWVudDo6aXNYSFRNTE1QRG9jdW1lbnQoKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
aW5kZXggZGY4N2ViZC4uYmYxZGRlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC05NDksNiArOTQ5LDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFVzaW5nR2VvbG9jYXRpb24oYm9vbCBmKSB7IG1fdXNpbmdHZW9sb2Nh
dGlvbiA9IGY7IH0KICAgICBib29sIHVzaW5nR2VvbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3VzaW5nR2VvbG9jYXRpb247IH07CiAKKyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKKyAgICB2
b2lkIHByb2Nlc3NWaWV3cG9ydE1ldGFUYWcoY29uc3QgU3RyaW5nICYgZmVhdHVyZXMpOworI2Vu
ZGlmICAgIAorCiAjaWYgRU5BQkxFKFdNTCkKICAgICB2b2lkIHNldENvbnRhaW5zV01MQ29udGVu
dChib29sIHZhbHVlKSB7IG1fY29udGFpbnNXTUxDb250ZW50ID0gdmFsdWU7IH0KICAgICBib29s
IGNvbnRhaW5zV01MQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNXTUxDb250ZW50
OyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAgYi9XZWJD
b3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOTI3OTU0MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9tL1ZpZXdwb3J0
QXJndW1lbnRzLmNwcApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiwgTGltaXRlZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgorCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgdm9pZCBz
ZXRWaWV3cG9ydEZlYXR1cmUoY29uc3QgU3RyaW5nJiBrZXlTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dmFsdWVTdHJpbmcsIFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpCit7CisgICAgZmxvYXQg
dmFsdWUgPSAtMTsKKworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZVN0cmluZywgInll
cyIpKQorICAgICAgICB2YWx1ZSA9IDE7CisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
dmFsdWVTdHJpbmcsICJkZWZhdWx0IikpIHsKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHZhbHVlU3RyaW5nLCAiZGV2aWNlLXdpZHRoIikpCisgICAgICAgIHZhbHVlID0gVmlld3Bv
cnRBcmd1bWVudHM6OkRldmljZVdpZHRoOworICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHZhbHVlU3RyaW5nLCAiZGV2aWNlLWhlaWdodCIpKQorICAgICAgICB2YWx1ZSA9IFZpZXdwb3J0
QXJndW1lbnRzOjpEZXZpY2VIZWlnaHQ7CisgICAgZWxzZSBpZiAodmFsdWVTdHJpbmcubGVuZ3Ro
KCkpCisgICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlU3RyaW5nLnRvRG91
YmxlKCkpOworCisgICAgaWYgKGtleVN0cmluZyA9PSAiaW5pdGlhbC1zY2FsZSIpCisgICAgICAg
IGFyZ3VtZW50cy5pbml0aWFsU2NhbGUgPSB2YWx1ZTsKKyAgICBlbHNlIGlmIChrZXlTdHJpbmcg
PT0gIm1pbmltdW0tc2NhbGUiKQorICAgICAgICBhcmd1bWVudHMubWluaW11bVNjYWxlID0gdmFs
dWU7CisgICAgZWxzZSBpZiAoa2V5U3RyaW5nID09ICJtYXhpbXVtLXNjYWxlIikKKyAgICAgICAg
YXJndW1lbnRzLm1heGltdW1TY2FsZSA9IHZhbHVlOworICAgIGVsc2UgaWYgKGtleVN0cmluZyA9
PSAidXNlci1zY2FsYWJsZSIpCisgICAgICAgIGFyZ3VtZW50cy51c2VyU2NhbGFibGUgPSBzdGF0
aWNfY2FzdDxpbnQ+KHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXlTdHJpbmcgPT0gIndpZHRoIikK
KyAgICAgICAgYXJndW1lbnRzLndpZHRoID0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSk7CisgICAg
ZWxzZSBpZiAoa2V5U3RyaW5nID09ICJoZWlnaHQiKQorICAgICAgICBhcmd1bWVudHMuaGVpZ2h0
ID0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1Nl
cGFyYXRvcihVQ2hhciBjKQoreworICAgIHJldHVybiBjID09ICcgJyB8fCBjID09ICdcdCcgfHwg
YyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8fCBjID09ICc9JyB8fCBjID09ICcsJyB8fCBjID09ICdc
MCc7Cit9CisKK3ZvaWQgZXh0cmFjdFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYgZmVhdHVyZXMsIFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpCit7CisgICAgLy8g
VHJlYWQgbGlnaHRseSBpbiB0aGlzIGNvZGUgLS0gaXQgd2FzIHNwZWNpZmljYWxseSBkZXNpZ25l
ZCB0byBtaW1pYyBXaW4gSUUncyBwYXJzaW5nIGJlaGF2aW9yLgorICAgIGludCBrZXlCZWdpbiwg
a2V5RW5kOworICAgIGludCB2YWx1ZUJlZ2luLCB2YWx1ZUVuZDsKKyAgICAKKyAgICBpbnQgaSA9
IDA7CisgICAgaW50IGxlbmd0aCA9IGZlYXR1cmVzLmxlbmd0aCgpOworICAgIFN0cmluZyBidWZm
ZXIgPSBmZWF0dXJlcy5sb3dlcigpOworICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7CisgICAgICAg
IC8vIHNraXAgdG8gZmlyc3Qgbm9uLXNlcGFyYXRvciwgYnV0IGRvbid0IHNraXAgcGFzdCB0aGUg
ZW5kIG9mIHRoZSBzdHJpbmcKKyAgICAgICAgd2hpbGUgKGlzU2VwYXJhdG9yKGJ1ZmZlcltpXSkg
JiYgaSA8IGxlbmd0aCkKKyAgICAgICAgICAgICsraTsKKyAgICAgICAga2V5QmVnaW4gPSBpOwor
ICAgICAgICAKKyAgICAgICAgLy8gc2tpcCB0byBmaXJzdCBzZXBhcmF0b3IKKyAgICAgICAgd2hp
bGUgKCFpc1NlcGFyYXRvcihidWZmZXJbaV0pICYmIGkgPCBsZW5ndGgpCisgICAgICAgICAgICAr
K2k7CisgICAgICAgIGtleUVuZCA9IGk7CisgICAgICAgIAorICAgICAgICAvLyBza2lwIHRvIGZp
cnN0ICc9JywgYnV0IGRvbid0IHNraXAgcGFzdCBhICcsJyBvciB0aGUgZW5kIG9mIHRoZSBzdHJp
bmcKKyAgICAgICAgd2hpbGUgKGJ1ZmZlcltpXSAhPSAnPScgJiYgYnVmZmVyW2ldICE9ICcsJyAm
JiBpIDwgbGVuZ3RoKQorICAgICAgICAgICAgKytpOworICAgICAgICAKKyAgICAgICAgLy8gc2tp
cCB0byBmaXJzdCBub24tc2VwYXJhdG9yLCBidXQgZG9uJ3Qgc2tpcCBwYXN0IGEgJywnIG9yIHRo
ZSBlbmQgb2YgdGhlIHN0cmluZworICAgICAgICB3aGlsZSAoaXNTZXBhcmF0b3IoYnVmZmVyW2ld
KSAmJiBidWZmZXJbaV0gIT0gJywnICYmIGkgPCBsZW5ndGgpCisgICAgICAgICAgICArK2k7CisK
KyAgICAgICAgdmFsdWVCZWdpbiA9IGk7CisgICAgICAgIAorICAgICAgICAvLyBza2lwIHRvIGZp
cnN0IHNlcGFyYXRvcgorICAgICAgICB3aGlsZSAoIWlzU2VwYXJhdG9yKGJ1ZmZlcltpXSkgJiYg
aSA8IGxlbmd0aCkKKyAgICAgICAgICAgICsraTsKKworICAgICAgICB2YWx1ZUVuZCA9IGk7Cisg
ICAgICAgIAorICAgICAgICBTdHJpbmcga2V5U3RyaW5nKGJ1ZmZlci5zdWJzdHJpbmcoa2V5QmVn
aW4sIGtleUVuZCAtIGtleUJlZ2luKSk7CisgICAgICAgIFN0cmluZyB2YWx1ZVN0cmluZyhidWZm
ZXIuc3Vic3RyaW5nKHZhbHVlQmVnaW4sIHZhbHVlRW5kIC0gdmFsdWVCZWdpbikpOworICAgICAg
ICBzZXRWaWV3cG9ydEZlYXR1cmUoa2V5U3RyaW5nLCB2YWx1ZVN0cmluZywgYXJndW1lbnRzKTsK
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmggYi9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MGRiMWMKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCkBAIC0wLDAgKzEsNzMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24sIExpbWl0ZWQgMjAwOS4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZXdwb3J0QXJndW1lbnRzX2gKKyNkZWZpbmUgVmll
d3BvcnRBcmd1bWVudHNfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFN0cmluZzsK
Kworc3RydWN0IFZpZXdwb3J0QXJndW1lbnRzIHsKKyAgICBlbnVtIHsKKyAgICAgICAgTm90U3Bl
Y2lmaWVkID0gLTEsCisgICAgICAgIERldmljZVdpZHRoID0gLTIsCisgICAgICAgIERldmljZUhl
aWdodCA9IC0zLAorICAgIH07CisKKyAgICBpbnQgd2lkdGg7CisgICAgaW50IGhlaWdodDsKKyAg
ICBpbnQgdXNlclNjYWxhYmxlOworICAgIGZsb2F0IGluaXRpYWxTY2FsZTsKKyAgICBmbG9hdCBt
aW5pbXVtU2NhbGU7CisgICAgZmxvYXQgbWF4aW11bVNjYWxlOworCisgICAgVmlld3BvcnRBcmd1
bWVudHMoKQorICAgIHsKKyAgICAgICAgY2xlYXIoKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFy
KCkKKyAgICB7CisgICAgICAgIGluaXRpYWxTY2FsZSA9IG1pbmltdW1TY2FsZSA9IG1heGltdW1T
Y2FsZSA9IC0xOworICAgICAgICB3aWR0aCA9IGhlaWdodCA9IHVzZXJTY2FsYWJsZSA9IE5vdFNw
ZWNpZmllZDsKKyAgICB9CisKKyAgICBib29sIGhhc0N1c3RvbUFyZ3VtZW50KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBpbml0aWFsU2NhbGUgPiAwIHx8IG1pbmltdW1TY2FsZSA+IDAg
fHwgbWF4aW11bVNjYWxlID4gMAorICAgICAgICAgICAgfHwgd2lkdGggIT0gTm90U3BlY2lmaWVk
IHx8IGhlaWdodCAhPSBOb3RTcGVjaWZpZWQgfHwgdXNlclNjYWxhYmxlICE9IE5vdFNwZWNpZmll
ZDsKKyAgICB9Cit9OworCit2b2lkIGV4dHJhY3RWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBTdHJp
bmcmIGZlYXR1cmVzLCBWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzKTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MTWV0
YUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKaW5kZXggY2Y2
NjdjYS4uMGQzYzc3NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5j
cHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKQEAgLTY1LDggKzY1LDE0
IEBAIHZvaWQgSFRNTE1ldGFFbGVtZW50Ojpwcm9jZXNzKCkKIHsKICAgICAvLyBHZXQgdGhlIGRv
Y3VtZW50IHRvIHByb2Nlc3MgdGhlIHRhZywgYnV0IG9ubHkgaWYgd2UncmUgYWN0dWFsbHkgcGFy
dCBvZiBET00gdHJlZSAoY2hhbmdpbmcgYSBtZXRhIHRhZyB3aGlsZQogICAgIC8vIGl0J3Mgbm90
IGluIHRoZSB0cmVlIHNob3VsZG4ndCBoYXZlIGFueSBlZmZlY3Qgb24gdGhlIGRvY3VtZW50KQot
ICAgIGlmIChpbkRvY3VtZW50KCkgJiYgIW1fZXF1aXYuaXNOdWxsKCkgJiYgIW1fY29udGVudC5p
c051bGwoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+cHJvY2Vzc0h0dHBFcXVpdihtX2VxdWl2LCBt
X2NvbnRlbnQpOworICAgIGlmIChpbkRvY3VtZW50KCkgJiYgIW1fY29udGVudC5pc051bGwoKSkg
eworI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQorICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UobmFtZSgpLCAidmlld3BvcnQiKSkKKyAgICAgICAgICAgIGRvY3VtZW50KCktPnByb2Nlc3NW
aWV3cG9ydE1ldGFUYWcobV9jb250ZW50KTsKKyNlbmRpZgorICAgICAgICBpZiAoIW1fZXF1aXYu
aXNOdWxsKCkpCisgICAgICAgICAgICBkb2N1bWVudCgpLT5wcm9jZXNzSHR0cEVxdWl2KG1fZXF1
aXYsIG1fY29udGVudCk7CisgICAgfQogfQogCiBTdHJpbmcgSFRNTE1ldGFFbGVtZW50Ojpjb250
ZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmggYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDQzOTdmMTIuLjQ1
MTRiZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNzEsNiArNzEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2hhcmVkQnVmZmVyOwogICAgIGNsYXNzIFN1
YnN0aXR1dGVEYXRhOwogICAgIGNsYXNzIFN0cmluZzsKKyAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1
bWVudHM7CiAgICAgY2xhc3MgV2lkZ2V0OwogCiAgICAgdHlwZWRlZiB2b2lkIChQb2xpY3lDaGVj
a2VyOjoqRnJhbWVQb2xpY3lGdW5jdGlvbikoUG9saWN5QWN0aW9uKTsKQEAgLTI2OSw2ICsyNzAs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90QWxs
b3dTY3JpcHQoKSB7IH0KICAgICAgICAgLy8gVGhpcyBjYWxsYmFjayBpcyBzaW1pbGFyLCBidXQg
Zm9yIHBsdWdpbnMuCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWROb3RBbGxvd1BsdWdpbnMoKSB7
IH0KKworI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVj
ZWl2ZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJikgeyB9CisjZW5k
aWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51075</attachid>
            <date>2010-03-18 12:53:46 -0700</date>
            <delta_ts>2010-03-22 12:31:53 -0700</delta_ts>
            <desc>fix one more style error</desc>
            <filename>36312.patch</filename>
            <type>text/plain</type>
            <size>12133</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2E0OThiZC4uODk2MWU1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAwOS0xMi0xNyAgWW9uZyBMaSAgPHlv
bGlAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQcm9jZXNzICJ2aWV3cG9ydCIgbWV0YSB0YWcgd2hlbiBFTkFCTEUoTUVUQV9WSUVXUE9S
VCkgaXMgdHJ1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzYzMTIKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0TWV0YVRhZyk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpzZXRWaWV3cG9ydEZlYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6aXNT
ZXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFZpZXdwb3J0QXJndW1lbnRzKToK
KyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzOjpWaWV3cG9ydEFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydEFy
Z3VtZW50czo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6Omhh
c0N1c3RvbUFyZ3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWV0YUVsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnQ6OnJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyk6CisKIDIwMTAtMDMtMTcgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZp
c2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCBiNTdmZmFmLi5jMDI1ODQ5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01OCw2
ICs1OCw3IEBACiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSAiSFRNTEFsbENvbGxlY3Rpb24uaCIKQEAgLTEyNiw2ICsxMjcsNyBAQAogI2luY2x1ZGUg
IlRyZWVXYWxrZXIuaCIKICNpbmNsdWRlICJVSUV2ZW50LmgiCiAjaW5jbHVkZSAiVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmgiCisjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRl
ICJXZWJLaXRBbmltYXRpb25FdmVudC5oIgogI2luY2x1ZGUgIldlYktpdFRyYW5zaXRpb25FdmVu
dC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKQEAgLTQ3NTcsNiArNDc1OSwyMSBAQCB2b2lk
IERvY3VtZW50OjpkaXNwbGF5QnVmZmVyTW9kaWZpZWRCeUVuY29kaW5nKFVDaGFyKiBidWZmZXIs
IHVuc2lnbmVkIGxlbikgY29ucwogICAgICAgICBtX2RlY29kZXItPmVuY29kaW5nKCkuZGlzcGxh
eUJ1ZmZlcihidWZmZXIsIGxlbik7CiB9CiAKKyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKK3Zv
aWQgRG9jdW1lbnQ6OnByb2Nlc3NWaWV3cG9ydE1ldGFUYWcoY29uc3QgU3RyaW5nJiBmZWF0dXJl
cykKK3sKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBGcmFtZUxvYWRl
ciogbG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCk7CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIFZpZXdwb3J0QXJndW1lbnRzIGFyZ3VtZW50czsKKyAgICBleHRyYWN0
Vmlld3BvcnRBcmd1bWVudHMoZmVhdHVyZXMsIGFyZ3VtZW50cyk7CisgICAgbG9hZGVyLT5jbGll
bnQoKS0+cmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKGFyZ3VtZW50cyk7Cit9CisjZW5kaWYKKwog
I2lmIEVOQUJMRShYSFRNTE1QKQogYm9vbCBEb2N1bWVudDo6aXNYSFRNTE1QRG9jdW1lbnQoKSBj
b25zdAogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggZGY4N2ViZC4uYmYxZGRlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC05NDksNiArOTQ5
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzaW5nR2VvbG9jYXRpb24oYm9vbCBmKSB7IG1f
dXNpbmdHZW9sb2NhdGlvbiA9IGY7IH0KICAgICBib29sIHVzaW5nR2VvbG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3VzaW5nR2VvbG9jYXRpb247IH07CiAKKyNpZiBFTkFCTEUoTUVUQV9WSUVX
UE9SVCkKKyAgICB2b2lkIHByb2Nlc3NWaWV3cG9ydE1ldGFUYWcoY29uc3QgU3RyaW5nICYgZmVh
dHVyZXMpOworI2VuZGlmICAgIAorCiAjaWYgRU5BQkxFKFdNTCkKICAgICB2b2lkIHNldENvbnRh
aW5zV01MQ29udGVudChib29sIHZhbHVlKSB7IG1fY29udGFpbnNXTUxDb250ZW50ID0gdmFsdWU7
IH0KICAgICBib29sIGNvbnRhaW5zV01MQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFp
bnNXTUxDb250ZW50OyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50
cy5jcHAgYi9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uOTI3OTU0MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
ZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiwgTGltaXRlZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgor
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgdm9pZCBzZXRWaWV3cG9ydEZlYXR1cmUoY29uc3QgU3RyaW5nJiBrZXlTdHJpbmcsIGNv
bnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpCit7
CisgICAgZmxvYXQgdmFsdWUgPSAtMTsKKworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1
ZVN0cmluZywgInllcyIpKQorICAgICAgICB2YWx1ZSA9IDE7CisgICAgZWxzZSBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UodmFsdWVTdHJpbmcsICJkZWZhdWx0IikpIHsKKyAgICB9IGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKHZhbHVlU3RyaW5nLCAiZGV2aWNlLXdpZHRoIikpCisgICAgICAgIHZh
bHVlID0gVmlld3BvcnRBcmd1bWVudHM6OkRldmljZVdpZHRoOworICAgIGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHZhbHVlU3RyaW5nLCAiZGV2aWNlLWhlaWdodCIpKQorICAgICAgICB2YWx1
ZSA9IFZpZXdwb3J0QXJndW1lbnRzOjpEZXZpY2VIZWlnaHQ7CisgICAgZWxzZSBpZiAodmFsdWVT
dHJpbmcubGVuZ3RoKCkpCisgICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVl
U3RyaW5nLnRvRG91YmxlKCkpOworCisgICAgaWYgKGtleVN0cmluZyA9PSAiaW5pdGlhbC1zY2Fs
ZSIpCisgICAgICAgIGFyZ3VtZW50cy5pbml0aWFsU2NhbGUgPSB2YWx1ZTsKKyAgICBlbHNlIGlm
IChrZXlTdHJpbmcgPT0gIm1pbmltdW0tc2NhbGUiKQorICAgICAgICBhcmd1bWVudHMubWluaW11
bVNjYWxlID0gdmFsdWU7CisgICAgZWxzZSBpZiAoa2V5U3RyaW5nID09ICJtYXhpbXVtLXNjYWxl
IikKKyAgICAgICAgYXJndW1lbnRzLm1heGltdW1TY2FsZSA9IHZhbHVlOworICAgIGVsc2UgaWYg
KGtleVN0cmluZyA9PSAidXNlci1zY2FsYWJsZSIpCisgICAgICAgIGFyZ3VtZW50cy51c2VyU2Nh
bGFibGUgPSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXlTdHJpbmcg
PT0gIndpZHRoIikKKyAgICAgICAgYXJndW1lbnRzLndpZHRoID0gc3RhdGljX2Nhc3Q8aW50Pih2
YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5U3RyaW5nID09ICJoZWlnaHQiKQorICAgICAgICBhcmd1
bWVudHMuaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgYm9vbCBpc1NlcGFyYXRvcihVQ2hhciBjKQoreworICAgIHJldHVybiBjID09ICcgJyB8fCBj
ID09ICdcdCcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8fCBjID09ICc9JyB8fCBjID09ICcs
JyB8fCBjID09ICdcMCc7Cit9CisKK3ZvaWQgZXh0cmFjdFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYgZmVhdHVyZXMsIFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMp
Cit7CisgICAgLy8gVHJlYWQgbGlnaHRseSBpbiB0aGlzIGNvZGUgLS0gaXQgd2FzIHNwZWNpZmlj
YWxseSBkZXNpZ25lZCB0byBtaW1pYyBXaW4gSUUncyBwYXJzaW5nIGJlaGF2aW9yLgorICAgIGlu
dCBrZXlCZWdpbiwga2V5RW5kOworICAgIGludCB2YWx1ZUJlZ2luLCB2YWx1ZUVuZDsKKyAgICAK
KyAgICBpbnQgaSA9IDA7CisgICAgaW50IGxlbmd0aCA9IGZlYXR1cmVzLmxlbmd0aCgpOworICAg
IFN0cmluZyBidWZmZXIgPSBmZWF0dXJlcy5sb3dlcigpOworICAgIHdoaWxlIChpIDwgbGVuZ3Ro
KSB7CisgICAgICAgIC8vIHNraXAgdG8gZmlyc3Qgbm9uLXNlcGFyYXRvciwgYnV0IGRvbid0IHNr
aXAgcGFzdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcKKyAgICAgICAgd2hpbGUgKGlzU2VwYXJhdG9y
KGJ1ZmZlcltpXSkgJiYgaSA8IGxlbmd0aCkKKyAgICAgICAgICAgICsraTsKKyAgICAgICAga2V5
QmVnaW4gPSBpOworICAgICAgICAKKyAgICAgICAgLy8gc2tpcCB0byBmaXJzdCBzZXBhcmF0b3IK
KyAgICAgICAgd2hpbGUgKCFpc1NlcGFyYXRvcihidWZmZXJbaV0pICYmIGkgPCBsZW5ndGgpCisg
ICAgICAgICAgICArK2k7CisgICAgICAgIGtleUVuZCA9IGk7CisgICAgICAgIAorICAgICAgICAv
LyBza2lwIHRvIGZpcnN0ICc9JywgYnV0IGRvbid0IHNraXAgcGFzdCBhICcsJyBvciB0aGUgZW5k
IG9mIHRoZSBzdHJpbmcKKyAgICAgICAgd2hpbGUgKGJ1ZmZlcltpXSAhPSAnPScgJiYgYnVmZmVy
W2ldICE9ICcsJyAmJiBpIDwgbGVuZ3RoKQorICAgICAgICAgICAgKytpOworICAgICAgICAKKyAg
ICAgICAgLy8gc2tpcCB0byBmaXJzdCBub24tc2VwYXJhdG9yLCBidXQgZG9uJ3Qgc2tpcCBwYXN0
IGEgJywnIG9yIHRoZSBlbmQgb2YgdGhlIHN0cmluZworICAgICAgICB3aGlsZSAoaXNTZXBhcmF0
b3IoYnVmZmVyW2ldKSAmJiBidWZmZXJbaV0gIT0gJywnICYmIGkgPCBsZW5ndGgpCisgICAgICAg
ICAgICArK2k7CisKKyAgICAgICAgdmFsdWVCZWdpbiA9IGk7CisgICAgICAgIAorICAgICAgICAv
LyBza2lwIHRvIGZpcnN0IHNlcGFyYXRvcgorICAgICAgICB3aGlsZSAoIWlzU2VwYXJhdG9yKGJ1
ZmZlcltpXSkgJiYgaSA8IGxlbmd0aCkKKyAgICAgICAgICAgICsraTsKKworICAgICAgICB2YWx1
ZUVuZCA9IGk7CisgICAgICAgIAorICAgICAgICBTdHJpbmcga2V5U3RyaW5nKGJ1ZmZlci5zdWJz
dHJpbmcoa2V5QmVnaW4sIGtleUVuZCAtIGtleUJlZ2luKSk7CisgICAgICAgIFN0cmluZyB2YWx1
ZVN0cmluZyhidWZmZXIuc3Vic3RyaW5nKHZhbHVlQmVnaW4sIHZhbHVlRW5kIC0gdmFsdWVCZWdp
bikpOworICAgICAgICBzZXRWaWV3cG9ydEZlYXR1cmUoa2V5U3RyaW5nLCB2YWx1ZVN0cmluZywg
YXJndW1lbnRzKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmggYi9XZWJDb3JlL2RvbS9WaWV3cG9y
dEFyZ3VtZW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MGRiMWMK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCkBAIC0w
LDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24sIExpbWl0
ZWQgMjAwOS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZXdwb3J0QXJndW1lbnRzX2gK
KyNkZWZpbmUgVmlld3BvcnRBcmd1bWVudHNfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFN0cmluZzsKKworc3RydWN0IFZpZXdwb3J0QXJndW1lbnRzIHsKKyAgICBlbnVtIHsKKyAg
ICAgICAgTm90U3BlY2lmaWVkID0gLTEsCisgICAgICAgIERldmljZVdpZHRoID0gLTIsCisgICAg
ICAgIERldmljZUhlaWdodCA9IC0zLAorICAgIH07CisKKyAgICBpbnQgd2lkdGg7CisgICAgaW50
IGhlaWdodDsKKyAgICBpbnQgdXNlclNjYWxhYmxlOworICAgIGZsb2F0IGluaXRpYWxTY2FsZTsK
KyAgICBmbG9hdCBtaW5pbXVtU2NhbGU7CisgICAgZmxvYXQgbWF4aW11bVNjYWxlOworCisgICAg
Vmlld3BvcnRBcmd1bWVudHMoKQorICAgIHsKKyAgICAgICAgY2xlYXIoKTsKKyAgICB9CisKKyAg
ICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIGluaXRpYWxTY2FsZSA9IG1pbmltdW1TY2Fs
ZSA9IG1heGltdW1TY2FsZSA9IC0xOworICAgICAgICB3aWR0aCA9IGhlaWdodCA9IHVzZXJTY2Fs
YWJsZSA9IE5vdFNwZWNpZmllZDsKKyAgICB9CisKKyAgICBib29sIGhhc0N1c3RvbUFyZ3VtZW50
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBpbml0aWFsU2NhbGUgPiAwIHx8IG1pbmlt
dW1TY2FsZSA+IDAgfHwgbWF4aW11bVNjYWxlID4gMAorICAgICAgICAgICAgfHwgd2lkdGggIT0g
Tm90U3BlY2lmaWVkIHx8IGhlaWdodCAhPSBOb3RTcGVjaWZpZWQgfHwgdXNlclNjYWxhYmxlICE9
IE5vdFNwZWNpZmllZDsKKyAgICB9Cit9OworCit2b2lkIGV4dHJhY3RWaWV3cG9ydEFyZ3VtZW50
cyhjb25zdCBTdHJpbmcmIGZlYXR1cmVzLCBWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzKTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5j
cHAKaW5kZXggY2Y2NjdjYS4uMGQzYzc3NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxN
ZXRhRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKQEAg
LTY1LDggKzY1LDE0IEBAIHZvaWQgSFRNTE1ldGFFbGVtZW50Ojpwcm9jZXNzKCkKIHsKICAgICAv
LyBHZXQgdGhlIGRvY3VtZW50IHRvIHByb2Nlc3MgdGhlIHRhZywgYnV0IG9ubHkgaWYgd2UncmUg
YWN0dWFsbHkgcGFydCBvZiBET00gdHJlZSAoY2hhbmdpbmcgYSBtZXRhIHRhZyB3aGlsZQogICAg
IC8vIGl0J3Mgbm90IGluIHRoZSB0cmVlIHNob3VsZG4ndCBoYXZlIGFueSBlZmZlY3Qgb24gdGhl
IGRvY3VtZW50KQotICAgIGlmIChpbkRvY3VtZW50KCkgJiYgIW1fZXF1aXYuaXNOdWxsKCkgJiYg
IW1fY29udGVudC5pc051bGwoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+cHJvY2Vzc0h0dHBFcXVp
dihtX2VxdWl2LCBtX2NvbnRlbnQpOworICAgIGlmIChpbkRvY3VtZW50KCkgJiYgIW1fY29udGVu
dC5pc051bGwoKSkgeworI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQorICAgICAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UobmFtZSgpLCAidmlld3BvcnQiKSkKKyAgICAgICAgICAgIGRvY3VtZW50
KCktPnByb2Nlc3NWaWV3cG9ydE1ldGFUYWcobV9jb250ZW50KTsKKyNlbmRpZgorICAgICAgICBp
ZiAoIW1fZXF1aXYuaXNOdWxsKCkpCisgICAgICAgICAgICBkb2N1bWVudCgpLT5wcm9jZXNzSHR0
cEVxdWl2KG1fZXF1aXYsIG1fY29udGVudCk7CisgICAgfQogfQogCiBTdHJpbmcgSFRNTE1ldGFF
bGVtZW50Ojpjb250ZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmggYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IDQzOTdmMTIuLjQ1MTRiZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNzEs
NiArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2hhcmVkQnVmZmVyOwog
ICAgIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogICAgIGNsYXNzIFN0cmluZzsKKyAgICBzdHJ1Y3Qg
Vmlld3BvcnRBcmd1bWVudHM7CiAgICAgY2xhc3MgV2lkZ2V0OwogCiAgICAgdHlwZWRlZiB2b2lk
IChQb2xpY3lDaGVja2VyOjoqRnJhbWVQb2xpY3lGdW5jdGlvbikoUG9saWN5QWN0aW9uKTsKQEAg
LTI2OSw2ICsyNzAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkTm90QWxsb3dTY3JpcHQoKSB7IH0KICAgICAgICAgLy8gVGhpcyBjYWxsYmFjayBpcyBz
aW1pbGFyLCBidXQgZm9yIHBsdWdpbnMuCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWROb3RBbGxv
d1BsdWdpbnMoKSB7IH0KKworI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQorICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRz
JikgeyB9CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="34283"
          type_id="1"
          status="-"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51332</attachid>
            <date>2010-03-22 12:31:53 -0700</date>
            <delta_ts>2010-03-25 11:50:33 -0700</delta_ts>
            <desc>Patch 1 of 2</desc>
            <filename>patch1.patch</filename>
            <type>text/plain</type>
            <size>12742</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjM1MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMDMtMjIgIFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MzEyCisKKyAgICAgICAgUGF0Y2ggMSBvZiAy
LgorCisgICAgICAgIFByb2Nlc3MgInZpZXdwb3J0IiBtZXRhIHRhZyB3aGVuIEVOQUJMRShNRVRB
X1ZJRVdQT1JUKSBpcyB0cnVlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNzVmlld3BvcnRNZXRhVGFnKTogQWRkZWQuCisg
ICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRWaWV3cG9ydEZlYXR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNTZXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFZp
ZXdwb3J0QXJndW1lbnRzKToKKyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6KToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWaWV3cG9ydEFyZ3VtZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6Vmll
d3BvcnRBcmd1bWVudHM6Omhhc0N1c3RvbUFyZ3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZXRhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0YUVsZW1lbnQ6OnByb2Nl
c3MpOiBNb2RpZmllZCB0byBjYWxsCisgICAgICAgIERvY3VtZW50Ojpwcm9jZXNzVmlld3BvcnRN
ZXRhVGFnIHdoZW4gdGhlIG5hbWUgYXR0cmlidXRlCisgICAgICAgIGlzIGVxdWFsIHRvICJ2aWV3
cG9ydCIuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVmlld3BvcnRBcmd1
bWVudHMpOiBBZGRlZC4KKwogMjAxMC0wMy0yMiAgSmFrdWIgV2llY3pvcmVrICA8ZmF3MjE3QGdt
YWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDU2MzIyKQorKysgV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiRm9jdXND
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5o
IgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgi
CiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEFsbENvbGxlY3Rpb24uaCIK
QEAgLTE0MCw2ICsxNDEsMTAgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAorI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQorI2lu
Y2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSUykKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgiCiAjZW5kaWYKQEAg
LTQ3NzcsNiArNDc4MiwyMiBAQCB2b2lkIERvY3VtZW50OjplbnF1ZXVlUG9wc3RhdGVFdmVudChQ
YXNzCiAgICAgZGlzcGF0Y2hXaW5kb3dFdmVudChQb3BTdGF0ZUV2ZW50OjpjcmVhdGUoc3RhdGVP
YmplY3QpKTsKIH0KIAorI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQordm9pZCBEb2N1bWVudDo6
cHJvY2Vzc1ZpZXdwb3J0TWV0YVRhZyhjb25zdCBTdHJpbmcmIGZlYXR1cmVzKQoreworICAgIGlm
ICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9
IG1fZnJhbWUtPmxvYWRlcigpOworICAgIGlmICghbG9hZGVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBWaWV3cG9ydEFyZ3VtZW50cyBhcmd1bWVudHM7CisgICAgZXh0cmFjdFZpZXdwb3J0QXJn
dW1lbnRzKGZlYXR1cmVzLCBhcmd1bWVudHMpOworICAgIGxvYWRlci0+Y2xpZW50KCktPmRpc3Bh
dGNoRGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKGFyZ3VtZW50cyk7Cit9CisjZW5kaWYKKwog
I2lmIEVOQUJMRShYSFRNTE1QKQogYm9vbCBEb2N1bWVudDo6aXNYSFRNTE1QRG9jdW1lbnQoKSBj
b25zdAogewpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA1NjMyMikKKysrIFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk1MSw2ICs5NTEsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0VXNpbmdHZW9sb2NhdGlvbihib29sIGYpIHsgbV91c2luZ0dlb2xvY2F0aW9uID0gZjsg
fQogICAgIGJvb2wgdXNpbmdHZW9sb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdXNpbmdHZW9s
b2NhdGlvbjsgfTsKIAorI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQorICAgIHZvaWQgcHJvY2Vz
c1ZpZXdwb3J0TWV0YVRhZyhjb25zdCBTdHJpbmcmIGZlYXR1cmVzKTsKKyNlbmRpZiAgICAKKwog
I2lmIEVOQUJMRShXTUwpCiAgICAgdm9pZCBzZXRDb250YWluc1dNTENvbnRlbnQoYm9vbCB2YWx1
ZSkgeyBtX2NvbnRhaW5zV01MQ29udGVudCA9IHZhbHVlOyB9CiAgICAgYm9vbCBjb250YWluc1dN
TENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRhaW5zV01MQ29udGVudDsgfQpJbmRleDog
V2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL1Zp
ZXdwb3J0QXJndW1lbnRzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpZXdwb3J0QXJn
dW1lbnRzLmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyB2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShjb25zdCBTdHJpbmcmIGtl
eVN0cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgVmlld3BvcnRBcmd1bWVudHMmIGFy
Z3VtZW50cykKK3sKKyAgICBmbG9hdCB2YWx1ZSA9IC0xLjA7CisKKyAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UodmFsdWVTdHJpbmcsICJ5ZXMiKSkKKyAgICAgICAgdmFsdWUgPSAxOworICAgIGVs
c2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlU3RyaW5nLCAiZGVmYXVsdCIpKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBXaHkgYXJlIHdlIGhhbmRsaW5nIHRoaXMgY2FzZT8gVGhpcyBkb2VzIG5v
dCBhcHBlYXIgdG8gY29uZm9ybSB0bworICAgICAgICAvLyA8aHR0cDovL2RldmVsb3Blci5hcHBs
ZS5jb20vc2FmYXJpL2xpYnJhcnkvZG9jdW1lbnRhdGlvbi9BcHBsZUFwcGxpY2F0aW9ucy9SZWZl
cmVuY2UvU2FmYXJpSFRNTFJlZi9BcnRpY2xlcy9NZXRhVGFncy5odG1sPi4KKyAgICB9IGVsc2Ug
aWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlU3RyaW5nLCAiZGV2aWNlLXdpZHRoIikpCisgICAg
ICAgIHZhbHVlID0gVmlld3BvcnRBcmd1bWVudHM6OkRldmljZVdpZHRoOworICAgIGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlU3RyaW5nLCAiZGV2aWNlLWhlaWdodCIpKQorICAgICAg
ICB2YWx1ZSA9IFZpZXdwb3J0QXJndW1lbnRzOjpEZXZpY2VIZWlnaHQ7CisgICAgZWxzZSBpZiAo
dmFsdWVTdHJpbmcubGVuZ3RoKCkpCisgICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHZhbHVlU3RyaW5nLnRvRG91YmxlKCkpOworCisgICAgaWYgKGtleVN0cmluZyA9PSAiaW5pdGlh
bC1zY2FsZSIpCisgICAgICAgIGFyZ3VtZW50cy5pbml0aWFsU2NhbGUgPSB2YWx1ZTsKKyAgICBl
bHNlIGlmIChrZXlTdHJpbmcgPT0gIm1pbmltdW0tc2NhbGUiKQorICAgICAgICBhcmd1bWVudHMu
bWluaW11bVNjYWxlID0gdmFsdWU7CisgICAgZWxzZSBpZiAoa2V5U3RyaW5nID09ICJtYXhpbXVt
LXNjYWxlIikKKyAgICAgICAgYXJndW1lbnRzLm1heGltdW1TY2FsZSA9IHZhbHVlOworICAgIGVs
c2UgaWYgKGtleVN0cmluZyA9PSAidXNlci1zY2FsYWJsZSIpCisgICAgICAgIGFyZ3VtZW50cy51
c2VyU2NhbGFibGUgPSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXlT
dHJpbmcgPT0gIndpZHRoIikKKyAgICAgICAgYXJndW1lbnRzLndpZHRoID0gc3RhdGljX2Nhc3Q8
aW50Pih2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5U3RyaW5nID09ICJoZWlnaHQiKQorICAgICAg
ICBhcmd1bWVudHMuaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSk7Cit9CisKK3N0YXRp
YyBpbmxpbmUgYm9vbCBpc1NlcGFyYXRvcihVQ2hhciBjKQoreworICAgIHJldHVybiBjID09ICcg
JyB8fCBjID09ICdcdCcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8fCBjID09ICc9JyB8fCBj
ID09ICcsJyB8fCBjID09ICdcMCc7Cit9CisKK3ZvaWQgZXh0cmFjdFZpZXdwb3J0QXJndW1lbnRz
KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgZmVhdHVyZXMsIFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1
bWVudHMpCit7CisgICAgLy8gVHJlYWQgbGlnaHRseSBpbiB0aGlzIGNvZGUgLS0gaXQgd2FzIHNw
ZWNpZmljYWxseSBkZXNpZ25lZCB0byBtaW1pYyBXaW4gSUUncyBwYXJzaW5nIGJlaGF2aW9yLgor
ICAgIGludCBrZXlCZWdpbiwga2V5RW5kOworICAgIGludCB2YWx1ZUJlZ2luLCB2YWx1ZUVuZDsK
KworICAgIGludCBpID0gMDsKKyAgICBpbnQgbGVuZ3RoID0gZmVhdHVyZXMubGVuZ3RoKCk7Cisg
ICAgU3RyaW5nIGJ1ZmZlciA9IGZlYXR1cmVzLmxvd2VyKCk7CisgICAgd2hpbGUgKGkgPCBsZW5n
dGgpIHsKKyAgICAgICAgLy8gU2tpcCB0byB0aGUgZmlyc3Qgbm9uLXNlcGFyYXRvciwgYnV0IGRv
bid0IHNraXAgcGFzdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuCisgICAgICAgIHdoaWxlIChpc1Nl
cGFyYXRvcihidWZmZXJbaV0pICYmIGkgPCBsZW5ndGgpCisgICAgICAgICAgICArK2k7CisgICAg
ICAgIGtleUJlZ2luID0gaTsKKworICAgICAgICAvLyBTa2lwIHRvIHRoZSBmaXJzdCBzZXBhcmF0
b3IuCisgICAgICAgIHdoaWxlICghaXNTZXBhcmF0b3IoYnVmZmVyW2ldKSAmJiBpIDwgbGVuZ3Ro
KQorICAgICAgICAgICAgKytpOworICAgICAgICBrZXlFbmQgPSBpOworCisgICAgICAgIC8vIFNr
aXAgdG8gdGhlIGZpcnN0ICc9JywgYnV0IGRvbid0IHNraXAgcGFzdCBhICcsJyBvciB0aGUgZW5k
IG9mIHRoZSBzdHJpbmcuCisgICAgICAgIHdoaWxlIChidWZmZXJbaV0gIT0gJz0nICYmIGJ1ZmZl
cltpXSAhPSAnLCcgJiYgaSA8IGxlbmd0aCkKKyAgICAgICAgICAgICsraTsKKworICAgICAgICAv
LyBTa2lwIHRvIHRoZSBmaXJzdCBub24tc2VwYXJhdG9yLCBidXQgZG9uJ3Qgc2tpcCBwYXN0IGEg
JywnIG9yIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KKyAgICAgICAgd2hpbGUgKGlzU2VwYXJhdG9y
KGJ1ZmZlcltpXSkgJiYgYnVmZmVyW2ldICE9ICcsJyAmJiBpIDwgbGVuZ3RoKQorICAgICAgICAg
ICAgKytpOworCisgICAgICAgIHZhbHVlQmVnaW4gPSBpOworCisgICAgICAgIC8vIFNraXAgdG8g
dGhlIGZpcnN0IHNlcGFyYXRvci4KKyAgICAgICAgd2hpbGUgKCFpc1NlcGFyYXRvcihidWZmZXJb
aV0pICYmIGkgPCBsZW5ndGgpCisgICAgICAgICAgICArK2k7CisKKyAgICAgICAgdmFsdWVFbmQg
PSBpOworCisgICAgICAgIFN0cmluZyBrZXlTdHJpbmcgPSBidWZmZXIuc3Vic3RyaW5nKGtleUJl
Z2luLCBrZXlFbmQgLSBrZXlCZWdpbik7CisgICAgICAgIFN0cmluZyB2YWx1ZVN0cmluZyA9IGJ1
ZmZlci5zdWJzdHJpbmcodmFsdWVCZWdpbiwgdmFsdWVFbmQgLSB2YWx1ZUJlZ2luKTsKKyAgICAg
ICAgc2V0Vmlld3BvcnRGZWF0dXJlKGtleVN0cmluZywgdmFsdWVTdHJpbmcsIGFyZ3VtZW50cyk7
CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9W
aWV3cG9ydEFyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJn
dW1lbnRzLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgVmlld3BvcnRBcmd1bWVudHNfaAorI2RlZmluZSBWaWV3cG9ydEFyZ3VtZW50c19oCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU3RyaW5nOworCitzdHJ1Y3QgVmlld3BvcnRBcmd1
bWVudHMgeworICAgIGVudW0geworICAgICAgICBOb3RTcGVjaWZpZWQgPSAtMSwKKyAgICAgICAg
RGV2aWNlV2lkdGggPSAtMiwKKyAgICAgICAgRGV2aWNlSGVpZ2h0ID0gLTMsCisgICAgfTsKKwor
ICAgIGludCB3aWR0aDsKKyAgICBpbnQgaGVpZ2h0OworICAgIGludCB1c2VyU2NhbGFibGU7Cisg
ICAgZmxvYXQgaW5pdGlhbFNjYWxlOworICAgIGZsb2F0IG1pbmltdW1TY2FsZTsKKyAgICBmbG9h
dCBtYXhpbXVtU2NhbGU7CisKKyAgICBWaWV3cG9ydEFyZ3VtZW50cygpCisgICAgeworICAgICAg
ICBjbGVhcigpOworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgaW5p
dGlhbFNjYWxlID0gbWluaW11bVNjYWxlID0gbWF4aW11bVNjYWxlID0gLTE7CisgICAgICAgIHdp
ZHRoID0gaGVpZ2h0ID0gdXNlclNjYWxhYmxlID0gTm90U3BlY2lmaWVkOworICAgIH0KKworICAg
IGJvb2wgaGFzQ3VzdG9tQXJndW1lbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlu
aXRpYWxTY2FsZSA+IDAgfHwgbWluaW11bVNjYWxlID4gMCB8fCBtYXhpbXVtU2NhbGUgPiAwIHx8
IHdpZHRoICE9IE5vdFNwZWNpZmllZCB8fCBoZWlnaHQgIT0gTm90U3BlY2lmaWVkIHx8IHVzZXJT
Y2FsYWJsZSAhPSBOb3RTcGVjaWZpZWQ7CisgICAgfQorfTsKKwordm9pZCBleHRyYWN0Vmlld3Bv
cnRBcmd1bWVudHMoY29uc3QgU3RyaW5nJiBmZWF0dXJlcywgVmlld3BvcnRBcmd1bWVudHMmKTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MTWV0YUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWV0YUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA1NjMyMikKKysrIFdlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw4ICs2NSwxNCBAQCB2b2lkIEhUTUxNZXRhRWxl
bWVudDo6cHJvY2VzcygpCiB7CiAgICAgLy8gR2V0IHRoZSBkb2N1bWVudCB0byBwcm9jZXNzIHRo
ZSB0YWcsIGJ1dCBvbmx5IGlmIHdlJ3JlIGFjdHVhbGx5IHBhcnQgb2YgRE9NIHRyZWUgKGNoYW5n
aW5nIGEgbWV0YSB0YWcgd2hpbGUKICAgICAvLyBpdCdzIG5vdCBpbiB0aGUgdHJlZSBzaG91bGRu
J3QgaGF2ZSBhbnkgZWZmZWN0IG9uIHRoZSBkb2N1bWVudCkKLSAgICBpZiAoaW5Eb2N1bWVudCgp
ICYmICFtX2VxdWl2LmlzTnVsbCgpICYmICFtX2NvbnRlbnQuaXNOdWxsKCkpCi0gICAgICAgIGRv
Y3VtZW50KCktPnByb2Nlc3NIdHRwRXF1aXYobV9lcXVpdiwgbV9jb250ZW50KTsKKyAgICBpZiAo
aW5Eb2N1bWVudCgpICYmICFtX2NvbnRlbnQuaXNOdWxsKCkpIHsKKyNpZiBFTkFCTEUoTUVUQV9W
SUVXUE9SVCkKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUoKSwgInZpZXdwb3J0
IikpCisgICAgICAgICAgICBkb2N1bWVudCgpLT5wcm9jZXNzVmlld3BvcnRNZXRhVGFnKG1fY29u
dGVudCk7CisjZW5kaWYKKyAgICAgICAgaWYgKCFtX2VxdWl2LmlzTnVsbCgpKQorICAgICAgICAg
ICAgZG9jdW1lbnQoKS0+cHJvY2Vzc0h0dHBFcXVpdihtX2VxdWl2LCBtX2NvbnRlbnQpOworICAg
IH0KIH0KIAogU3RyaW5nIEhUTUxNZXRhRWxlbWVudDo6Y29udGVudCgpIGNvbnN0CkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDU2MzIyKQorKysgV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2hhcmVkQnVmZmVyOwogICAgIGNsYXNz
IFN1YnN0aXR1dGVEYXRhOwogICAgIGNsYXNzIFN0cmluZzsKKyNpZiBFTkFCTEUoTUVUQV9WSUVX
UE9SVCkKKyAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CisjZW5kaWYKICAgICBjbGFzcyBX
aWRnZXQ7CiAKICAgICB0eXBlZGVmIHZvaWQgKFBvbGljeUNoZWNrZXI6OipGcmFtZVBvbGljeUZ1
bmN0aW9uKShQb2xpY3lBY3Rpb24pOwpAQCAtMjY5LDYgKzI3MiwxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWROb3RBbGxvd1NjcmlwdCgpIHsgfQogICAg
ICAgICAvLyBUaGlzIGNhbGxiYWNrIGlzIHNpbWlsYXIsIGJ1dCBmb3IgcGx1Z2lucy4KICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZE5vdEFsbG93UGx1Z2lucygpIHsgfQorCisjaWYgRU5BQkxFKE1F
VEFfVklFV1BPUlQpCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVWaWV3
cG9ydEFyZ3VtZW50cyhjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYpIHsgfQorI2VuZGlmCisKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51336</attachid>
            <date>2010-03-22 12:47:47 -0700</date>
            <delta_ts>2010-03-22 14:37:15 -0700</delta_ts>
            <desc>Patch 2 of 2: Mac and Qt DRT changes and test case</desc>
            <filename>patch2_1.patch</filename>
            <type>text/plain</type>
            <size>22643</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNTYzNTEpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTAtMDMtMjIgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjMxMgorCisgICAgICAgIFBhdGNoIDIg
b2YgMi4KKworICAgICAgICBBZGRzIGZpbGVzIFdlYlZpZXdwb3J0QXJndW1lbnRzLmggYW5kIFdl
YlZpZXdwb3J0QXJndW1lbnRzLmNwcAorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisKIDIwMTAtMDMtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgogCiAgICAgICAgICogU3RyaW5nc05vdFRvQmVMb2NhbGl6ZWQudHh0OiBVcGRhdGVkIGZvciBy
ZWNlbnQgY2hhbmdlcy4KSW5kZXg6IFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDU2MzIyKQorKysgV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQsNiArMzQ0LDggQEAKIAkJQzBCMUY3RTkxMEFD
OEUzMTAwQzkyNUQ5IC8qIFdlYlNjcmlwdFdvcmxkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBCMUY3RTYxMEFDOEUzMTAwQzkyNUQ5IC8qIFdlYlNj
cmlwdFdvcmxkLm1tICovOyB9OwogCQlDMEIxRjdFQTEwQUM4RTMxMDBDOTI1RDkgLyogV2ViU2Ny
aXB0V29ybGRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzBCMUY3RTcxMEFDOEUzMTAwQzkyNUQ5IC8qIFdlYlNjcmlwdFdvcmxkSW50ZXJu
YWwuaCAqLzsgfTsKIAkJQzBCODhFOEIxMEEwOEYzRDAwRkJCM0Y1IC8qIFdlYkZyYW1lTG9hZERl
bGVnYXRlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzBCODhFOEExMEEwOEYzRDAwRkJCM0Y1IC8qIFdlYkZyYW1lTG9hZERlbGVnYXRlUHJp
dmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUNFMTlDRTc4MTE1NDNDQ0MwMDJCNkJDNyAvKiBXZWJWaWV3cG9ydEFyZ3VtZW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxOUNFNzYxMTU0M0ND
QzAwMkI2QkM3IC8qIFdlYlZpZXdwb3J0QXJndW1lbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0UxOUNFNzkxMTU0M0NDQzAwMkI2QkM3IC8q
IFdlYlZpZXdwb3J0QXJndW1lbnRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0UxOUNFNzcxMTU0M0NDQzAwMkI2QkM3IC8qIFdlYlZpZXdwb3J0QXJn
dW1lbnRzLm1tICovOyB9OwogCQlERDdDREVFNzBBMjNCQTlFMDAwNjk5MjggLyogV2ViVHlwZXNJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REQ3Q0RFRTYwQTIzQkE5RTAwMDY5OTI4IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCAqLzsgfTsKIAkJ
REQ4OTY4MjAwOUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDg5NjgxRTA5QUE4NzI0
MDA5N0U3RjAgLyogV2ViRWxlbWVudERpY3Rpb25hcnkuaCAqLzsgfTsKIAkJREQ4OTY4MjEwOUFB
ODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQ4OTY4MUYwOUFBODcyNDAwOTdFN0YwIC8q
IFdlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tICovOyB9OwpAQCAtNjQzLDYgKzY0NSw4IEBACiAJCUMw
QjFGN0U2MTBBQzhFMzEwMEM5MjVEOSAvKiBXZWJTY3JpcHRXb3JsZC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNjcmlwdFdvcmxkLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMEIxRjdFNzEwQUM4RTMxMDBDOTI1RDkgLyogV2ViU2NyaXB0
V29ybGRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTY3Jp
cHRXb3JsZEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwQjg4RThB
MTBBMDhGM0QwMEZCQjNGNSAvKiBXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMTlDRTc2MTE1NDNDQ0MwMDJCNkJDNyAv
KiBXZWJWaWV3cG9ydEFyZ3VtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJWaWV3cG9ydEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RTE5Q0U3NzExNTQzQ0NDMDAyQjZCQzcgLyogV2ViVmlld3BvcnRBcmd1bWVudHMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWV3cG9ydEFyZ3VtZW50cy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQ3Q0RFRTYwQTIzQkE5RTAwMDY5OTI4
IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViVHlwZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERDg5Njgx
RTA5QUE4NzI0MDA5N0U3RjAgLyogV2ViRWxlbWVudERpY3Rpb25hcnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJFbGVtZW50RGljdGlvbmFy
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKIAkJREQ4OTY4MUYwOUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJFbGVtZW50RGljdGlvbmFyeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0xMTgyLDYgKzExODYsOCBAQAogCQkJCUJDOTdF
N0UxMTA5NjNEMjYwMDEwRDM2MSAvKiBXZWJWaWV3RXZlbnRIYW5kbGluZy5tbSAqLywKIAkJCQk5
MzBEMDJCQjA2Mjc1RjY0MDA3NjcwMUUgLyogV2ViVmlld0ludGVybmFsLmggKi8sCiAJCQkJNTFB
OEI1N0QwNDI4MzUzQTAwQ0EyRDNBIC8qIFdlYlZpZXdQcml2YXRlLmggKi8sCisJCQkJQ0UxOUNF
NzYxMTU0M0NDQzAwMkI2QkM3IC8qIFdlYlZpZXdwb3J0QXJndW1lbnRzLmggKi8sCisJCQkJQ0Ux
OUNFNzcxMTU0M0NDQzAwMkI2QkM3IC8qIFdlYlZpZXdwb3J0QXJndW1lbnRzLm1tICovLAogCQkJ
CTBGRDNCMEY2MTA3NkMzRjcwMDAzOUI5NiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLywKIAkJ
CQkwRkQzQjBGNzEwNzZDM0Y3MDAwMzlCOTYgLyogV2ViV2luZG93QW5pbWF0aW9uLm0gKi8sCiAJ
CQkpOwpAQCAtMTU1Myw2ICsxNTU5LDcgQEAKIAkJCQk5Mzk4MTA3MTA4MjRCRjAxMDA4REYwMzgg
LyogV2ViVmlld1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDNCMEY4MTA3NkMzRjcw
MDAzOUI5NiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjQ0
ODRGMTAzMzhFOEMwMDMwRTU1RSAvKiBXZWJXb3JrZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0UxOUNFNzgxMTU0M0NDQzAwMkI2QkM3IC8qIFdlYlZpZXdwb3J0QXJndW1lbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTE5MTIsNiArMTkxOSw3IEBACiAJCQkJOTM5ODEwRTgwODI0QkYw
MTAwOERGMDM4IC8qIFdlYlZpZXdGYWN0b3J5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEM0Iw
RjkxMDc2QzNGNzAwMDM5Qjk2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDFGNDQ4NTAxMDMzOEU4QzAwMzBFNTVFIC8qIFdlYldvcmtlcnNQcml2YXRlLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJQ0UxOUNFNzkxMTU0M0NDQzAwMkI2QkM3IC8qIFdlYlZpZXdwb3J0
QXJndW1lbnRzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNTYzNTEpCisrKyBX
ZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEw
LTAzLTIyICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzYzMTIKKworICAgICAgICBQYXRjaCAyIG9mIDIuCisKKyAgICAgICAg
SW1wbGVtZW50cyBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVmlld3Bv
cnRBcmd1bWVudHMKKyAgICAgICAgdG8gc3VwcG9ydCB0ZXN0aW5nIHdpdGggTWFjIERSVC4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMpOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaDoKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NhY2hlRnJh
bWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnNdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXdwb3J0QXJndW1lbnRzLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld3BvcnRB
cmd1bWVudHMubW06IEFkZGVkLgorICAgICAgICAoLVtXZWJWaWV3cG9ydEFyZ3VtZW50c1ByaXZh
dGUgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJWaWV3cG9ydEFyZ3VtZW50cyBpbml0V2l0aFdp
ZHRoOmhlaWdodDp1c2VyU2NhbGFibGU6aW5pdGlhbFNjYWxlOm1pbmltdW1TY2FsZTptYXhpbXVt
U2NhbGU6XSk6CisgICAgICAgICgtW1dlYlZpZXdwb3J0QXJndW1lbnRzIHdpZHRoXSk6CisgICAg
ICAgICgtW1dlYlZpZXdwb3J0QXJndW1lbnRzIGhlaWdodF0pOgorICAgICAgICAoLVtXZWJWaWV3
cG9ydEFyZ3VtZW50cyB1c2VyU2NhbGFibGVdKToKKyAgICAgICAgKC1bV2ViVmlld3BvcnRBcmd1
bWVudHMgaW5pdGlhbFNjYWxlXSk6CisgICAgICAgICgtW1dlYlZpZXdwb3J0QXJndW1lbnRzIG1p
bmltdW1TY2FsZV0pOgorICAgICAgICAoLVtXZWJWaWV3cG9ydEFyZ3VtZW50cyBtYXhpbXVtU2Nh
bGVdKToKKyAgICAgICAgKC1bV2ViVmlld3BvcnRBcmd1bWVudHMgZGVhbGxvY10pOgorCiAyMDEw
LTAzLTIyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1NjMyMikKKysrIFdlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNiArNDUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU3RyaW5n
OwogICAgIGNsYXNzIFJlc291cmNlTG9hZGVyOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
KyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKKyAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7
CisjZW5kaWYKIH0KIAogdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcj4sIFJldGFpblB0cjxXZWJSZXNvdXJjZT4gPiBSZXNvdXJjZU1hcDsKQEAgLTIwNSw2ICsy
MDgsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3Rp
ZmljYXRpb24oYm9vbCBsaXN0ZW4pOwogCisjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQpCisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJik7CisjZW5kaWYKKwogI2lmIEVOQUJMRShNQUNfSkFW
QV9CUklER0UpCiAgICAgdmlydHVhbCBqb2JqZWN0IGphdmFBcHBsZXQoTlNWaWV3Kik7CiAjZW5k
aWYKSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQkocmV2aXNpb24gNTYzMjIpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiArMTE5LDEw
IEBACiAjaW1wb3J0IDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAKKyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKKyNpbXBvcnQgPFdl
YkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KKyNlbmRpZgorCiAjaWYgRU5BQkxFKE1BQ19KQVZB
X0JSSURHRSkKICNpbXBvcnQgIldlYkphdmFQbHVnSW4uaCIKICNlbmRpZgpAQCAtOTIyLDYgKzky
NiwyNCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zCiAgICAgICAg
IENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnRGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlld0RpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnQ6KSk7CiB9CiAKKyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0
IFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpCit7CisgICAgV2ViVmlldyogd2ViVmlldyA9
IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7ICAgCisgICAgV2ViRnJhbWVMb2FkRGVsZWdh
dGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVM
b2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CisgICAgaWYgKCFpbXBsZW1lbnRh
dGlvbnMtPmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50c0ZvckZyYW1lRnVuYykKKyAgICAgICAg
cmV0dXJuOworICAgIFdlYlZpZXdwb3J0QXJndW1lbnRzKiBkYXRhID0gW1tXZWJWaWV3cG9ydEFy
Z3VtZW50cyBhbGxvY10gaW5pdFdpdGhXaWR0aDphcmd1bWVudHMud2lkdGgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWlnaHQ6YXJndW1lbnRzLmhlaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJTY2FsYWJsZTphcmd1bWVudHMu
dXNlclNjYWxhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFNjYWxlOmFyZ3VtZW50cy5pbml0aWFsU2NhbGUK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtaW5pbXVtU2NhbGU6YXJndW1lbnRzLm1pbmltdW1TY2FsZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGlt
dW1TY2FsZTphcmd1bWVudHMubWF4aW11bVNjYWxlXTsKKyAgICBDYWxsRnJhbWVMb2FkRGVsZWdh
dGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHNGb3JGcmFtZUZ1
bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50
czpmb3JGcmFtZTopLCBkYXRhLCBtX3dlYkZyYW1lLmdldCgpKTsKKyAgICBbZGF0YSByZWxlYXNl
XTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKICAgICBSZXRhaW5QdHI8V2ViU2Vj
dXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2luKEFkb3B0TlMsIFtbV2ViU2VjdXJpdHlPcmln
aW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW5dKTsKSW5kZXg6
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9u
Q2FjaGluZy5oCShyZXZpc2lvbiA1NjMyMikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxl
Z2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw5
IEBAIHN0cnVjdCBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW8KICAgICBJTVAgZGlk
RmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWVGdW5jOwogICAgIElNUCBkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50RnVuYzsKICAgICBJTVAgZGlkUnVuSW5zZWN1cmVDb250ZW50RnVuYzsKKyNpZiBF
TkFCTEUoTUVUQV9WSUVXUE9SVCkKKyAgICBJTVAgZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRz
Rm9yRnJhbWVGdW5jOworI2VuZGlmCiB9OwogCiBzdHJ1Y3QgV2ViU2NyaXB0RGVidWdEZWxlZ2F0
ZUltcGxlbWVudGF0aW9uQ2FjaGUgewpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9u
IDU2MzIyKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTE0MTgsNiArMTQxOCw5IEBAIC0gKHZvaWQpX2NhY2hlRnJhbWVMb2FkRGVsZWdhdGVJbXBs
ZW1lbnQKICAgICBjYWNoZS0+d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlRnVuYyA9IGdldE1l
dGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6d2luZG93U2NyaXB0T2JqZWN0QXZhaWxh
YmxlOikpOwogICAgIGNhY2hlLT5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50RnVuYyA9IGdldE1l
dGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXdEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50
OikpOwogICAgIGNhY2hlLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGdW5jID0gZ2V0TWV0aG9kKGRl
bGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSdW5JbnNlY3VyZUNvbnRlbnQ6KSk7CisjaWYg
RU5BQkxFKE1FVEFfVklFV1BPUlQpCisgICAgY2FjaGUtPmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3Vt
ZW50c0ZvckZyYW1lRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6
ZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzOmZvckZyYW1lOikpOworI2VuZGlmCiB9CiAKIC0g
KHZvaWQpX2NhY2hlU2NyaXB0RGVidWdEZWxlZ2F0ZUltcGxlbWVudGF0aW9ucwpJbmRleDogV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdwb3J0QXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdwb3J0QXJndW1lbnRzLmgJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld3BvcnRBcmd1bWVudHMuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggaW4gTW90aW9uIExp
bWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKwor
QGNsYXNzIFdlYkZyYW1lOworQGNsYXNzIFdlYlZpZXc7CitAY2xhc3MgV2ViVmlld3BvcnRBcmd1
bWVudHNQcml2YXRlOworCitAaW50ZXJmYWNlIFdlYlZpZXdwb3J0QXJndW1lbnRzIDogTlNPYmpl
Y3QKK3sKK0Bwcml2YXRlCisgICAgV2ViVmlld3BvcnRBcmd1bWVudHNQcml2YXRlICpfcHJpdmF0
ZTsKK30KKworLSAoaWQpaW5pdFdpdGhXaWR0aDooaW50KXdpZHRoIGhlaWdodDooaW50KWhlaWdo
dCB1c2VyU2NhbGFibGU6KGludCl1c2VyU2NhbGFibGUgaW5pdGlhbFNjYWxlOihmbG9hdClpbml0
aWFsU2NhbGUgbWluaW11bVNjYWxlOihmbG9hdCltaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOihm
bG9hdCltYXhpbXVtU2NhbGU7CistIChpbnQpd2lkdGg7CistIChpbnQpaGVpZ2h0OworLSAoaW50
KXVzZXJTY2FsYWJsZTsKKy0gKGZsb2F0KWluaXRpYWxTY2FsZTsKKy0gKGZsb2F0KW1pbmltdW1T
Y2FsZTsKKy0gKGZsb2F0KW1heGltdW1TY2FsZTsKKworQGVuZApJbmRleDogV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXdwb3J0QXJndW1lbnRzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3cG9ydEFyZ3VtZW50cy5tbQkocmV2aXNpb24gMCkKKysrIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3cG9ydEFyZ3VtZW50cy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIGluIE1vdGlvbiBMaW1pdGVk
IDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2ltcG9ydCAiV2ViVmlld3BvcnRBcmd1bWVudHMuaCIKKworQGludGVy
ZmFjZSBXZWJWaWV3cG9ydEFyZ3VtZW50c1ByaXZhdGUgOiBOU09iamVjdAoreworQHB1YmxpYwor
ICAgIGludCB3aWR0aDsKKyAgICBpbnQgaGVpZ2h0OworICAgIGludCB1c2VyU2NhbGFibGU7Cisg
ICAgZmxvYXQgaW5pdGlhbFNjYWxlOworICAgIGZsb2F0IG1pbmltdW1TY2FsZTsKKyAgICBmbG9h
dCBtYXhpbXVtU2NhbGU7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYlZpZXdwb3J0
QXJndW1lbnRzUHJpdmF0ZQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbc3VwZXIgZGVhbGxv
Y107Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYlZpZXdwb3J0QXJndW1lbnRzCisK
Ky0gKGlkKWluaXRXaXRoV2lkdGg6KGludCl3aWR0aCBoZWlnaHQ6KGludCloZWlnaHQgdXNlclNj
YWxhYmxlOihpbnQpdXNlclNjYWxhYmxlIGluaXRpYWxTY2FsZTooZmxvYXQpaW5pdGlhbFNjYWxl
IG1pbmltdW1TY2FsZTooZmxvYXQpbWluaW11bVNjYWxlIG1heGltdW1TY2FsZTooZmxvYXQpbWF4
aW11bVNjYWxlOworeworICAgIF9wcml2YXRlID0gW1tXZWJWaWV3cG9ydEFyZ3VtZW50c1ByaXZh
dGUgYWxsb2NdIGluaXRdOworCisgICAgX3ByaXZhdGUtPndpZHRoID0gd2lkdGg7CisgICAgX3By
aXZhdGUtPmhlaWdodCA9IGhlaWdodDsKKyAgICBfcHJpdmF0ZS0+dXNlclNjYWxhYmxlID0gdXNl
clNjYWxhYmxlOworICAgIF9wcml2YXRlLT5pbml0aWFsU2NhbGUgPSBpbml0aWFsU2NhbGU7Cisg
ICAgX3ByaXZhdGUtPm1pbmltdW1TY2FsZSA9IG1pbmltdW1TY2FsZTsKKyAgICBfcHJpdmF0ZS0+
bWF4aW11bVNjYWxlID0gbWF4aW11bVNjYWxlOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0g
KGludCl3aWR0aAoreworICAgIHJldHVybiBfcHJpdmF0ZS0+d2lkdGg7Cit9CisKKy0gKGludClo
ZWlnaHQKK3sKKyAgICByZXR1cm4gX3ByaXZhdGUtPmhlaWdodDsKK30KKworLSAoaW50KXVzZXJT
Y2FsYWJsZQoreworICAgIHJldHVybiBfcHJpdmF0ZS0+dXNlclNjYWxhYmxlOworfQorCistIChm
bG9hdClpbml0aWFsU2NhbGUKK3sKKyAgICByZXR1cm4gX3ByaXZhdGUtPmluaXRpYWxTY2FsZTsK
K30KKworLSAoZmxvYXQpbWluaW11bVNjYWxlCit7CisgICAgcmV0dXJuIF9wcml2YXRlLT5taW5p
bXVtU2NhbGU7Cit9CisKKy0gKGZsb2F0KW1heGltdW1TY2FsZQoreworICAgIHJldHVybiBfcHJp
dmF0ZS0+bWF4aW11bVNjYWxlOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX3ByaXZh
dGUgcmVsZWFzZV07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCitAZW5kCkluZGV4OiBXZWJL
aXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDU2MzUxKQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE4IEBACisyMDEwLTAzLTIyICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYzMTIKKworICAgICAgICBQYXRjaCAyIG9m
IDIuCisKKyAgICAgICAgSW1wbGVtZW50cyBGcmFtZUNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZl
Vmlld3BvcnRBcmd1bWVudHMgdG8gc3VwcG9ydCB0ZXN0aW5nCisgICAgICAgIHdpdGggUXQgRFJU
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVW
aWV3cG9ydEFyZ3VtZW50cyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5oOgorCiAyMDEwLTAzLTIyICBKYWt1YiBXaWVjem9yZWsgIDxqd2llY3pvcmVrQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCShy
ZXZpc2lvbiA1NjMyMikKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsMTAgQEAKICNpbmNsdWRlIDxR
TmV0d29ya1JlcGx5PgogI2luY2x1ZGUgInF3ZWJoaXN0b3J5X3AuaCIKIAorI2lmIEVOQUJMRShN
RVRBX1ZJRVdQT1JUKQorI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCisjZW5kaWYKKwog
c3RhdGljIGJvb2wgZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzID0gZmFsc2U7CiBzdGF0aWMgYm9v
bCBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gZmFsc2U7CiAKQEAgLTY4Niw2ICs2OTAsMTYg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRSdW5JbnNlY3VyZQogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKKyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMoY29uc3QgV2Vi
Q29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKQoreworICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxs
YmFja3MpCisgICAgICAgIHByaW50ZigiJXMgLSBkaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHNG
b3JGcmFtZVxuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3Vs
dChtX2ZyYW1lKSkpOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCiB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNhdmVWaWV3U3RhdGVUb0l0ZW0oV2ViQ29yZTo6SGlzdG9y
eUl0ZW0qIGl0ZW0pCiB7CiAgICAgUVdlYkhpc3RvcnlJdGVtIGhpc3RvcnlJdGVtKG5ldyBRV2Vi
SGlzdG9yeUl0ZW1Qcml2YXRlKGl0ZW0pKTsKSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkocmV2aXNpb24gNTYzMjIpCisrKyBXZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw2ICs1MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBOYXZpZ2F0aW9u
QWN0aW9uOwogICAgIGNsYXNzIFN0cmluZzsKICAgICBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKKyNp
ZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKKyAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7Cisj
ZW5kaWYKIAogICAgIHN0cnVjdCBMb2FkRXJyb3JSZXNldFRva2VuOwogCkBAIC0yMDksNiArMjEy
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wpOwogCisjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQp
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50
cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYpOworI2VuZGlmCisKICAgICAgICAg
UVN0cmluZyBjaG9vc2VGaWxlKGNvbnN0IFFTdHJpbmcmIG9sZEZpbGUpOwogCiAgICAgcHJpdmF0
ZToKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2MzUxKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDMtMjIgIERhbmllbCBCYXRlcyAg
PGRiYXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjMxMgor
CisgICAgICAgIFBhdGNoIDIgb2YgMi4KKworICAgICAgICBJbXBsZW1lbnRzIGRlbGVnYXRlIG1l
dGhvZCBkaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMgZm9yIE1hYyBEUlQuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW0Zy
YW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6ZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzOmZvckZy
YW1lOl0pOgorCiAyMDEwLTAzLTIyICBDaHJpcyBKZXJkb25layAgPGNqZXJkb25la0B3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tCShyZXZp
c2lvbiA1NjMyMikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWRE
ZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTAgQEAKICNpbXBvcnQgPFdl
YktpdC9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAKKyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKKyNpbXBvcnQgPFdlYktpdC9XZWJWaWV3
cG9ydEFyZ3VtZW50cy5oPgorI2VuZGlmCisKIEBpbnRlcmZhY2UgTlNVUkwgKERSVEV4dHJhcykK
IC0gKE5TU3RyaW5nICopX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdDsKIEBl
bmQKQEAgLTM4NSw0ICszODksMTQgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVy
IGRpZFJ1bgogICAgICAgICBwcmludGYgKCJkaWRSdW5JbnNlY3VyZUNvbnRlbnRcbiIpOwogfQog
CisjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQpCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilz
ZW5kZXIgZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzOihXZWJWaWV3cG9ydEFyZ3VtZW50cyAq
KWFyZ3VtZW50cyBmb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQoreworICAgIGlmICghZG9uZSAm
JiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgeworICAg
ICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAt
IGRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50c0ZvckZyYW1lIiwgW2ZyYW1lIF9kcnRfZGVzY3Jp
cHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKKyAgICAgICAgcHJpbnRmKCIlc1xuIiwgW3N0
cmluZyBVVEY4U3RyaW5nXSk7CisgICAgfQorfQorI2VuZGlmCisKIEBlbmQKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDU2MzUxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDMtMjIgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjMxMgorCisgICAgICAgIFBhdGNo
IDIgb2YgMi4KKworICAgICAgICBUZXN0cyB0aGF0IHRoZSBGcmFtZUNsaWVudCBpcyBub3RpZmll
ZCB3aGVuIHRoZSBwYWdlIGNvbnRhaW5zCisgICAgICAgIHRoZSB2aWV3cG9ydCBtZXRhIHRhZy4g
SW5jbHVkZXMgZXhwZWN0ZWQgZmFpbHVyZSByZXN1bHRzIGZvcgorICAgICAgICBwb3J0cyB0aGF0
IGRvIG5vdCBlbmFibGUgTUVUQV9WSUVXUE9SVC4KKworICAgICAgICAqIGZhc3QvbG9hZGVyL21l
dGEtdmlld3BvcnQtdGFnLWV4cGVjdGVkLnR4dDogQWRkZWQgZXhwZWN0ZWQgZmFpbHVyZSByZXN1
bHRzLgorICAgICAgICAqIGZhc3QvbG9hZGVyL21ldGEtdmlld3BvcnQtdGFnLmh0bWw6IEFkZGVk
LgorCiAyMDEwLTAzLTIyICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgQ2hyb21pdW0gZXhwZWN0YXRpb25zIHR3ZWFrLgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvbWV0YS12aWV3cG9ydC10YWctZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL21ldGEtdmlld3BvcnQtdGFnLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL21ldGEtdmll
d3BvcnQtdGFnLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACittYWlu
IGZyYW1lIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRI
YW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEZpbmlzaExvYWRGb3JG
cmFtZQorVGhpcyB0ZXN0cyB0aGF0IHRoZSBGcmFtZUNsaWVudCBpcyBub3RpZmllZCB3aGVuIHRo
ZSBwYWdlIGNvbnRhaW5zIHRoZSB2aWV3cG9ydCBtZXRhIHRhZy4gVGhpcyB0ZXN0IGNhbm5vdCBi
ZSBydW4gYnkgaGFuZC4KKworTm90ZSwgd2UgZXhwZWN0IHRoaXMgdGVzdCB0byBmYWlsIG9uIGFs
bCBwb3J0cyB0aGF0IGhhdmUgbm90IGNvbXBpbGVkIHdpdGggTUVUQV9WSUVXUE9SVCBlbmFibGVk
LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbWV0YS12aWV3cG9ydC10YWcuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9tZXRhLXZpZXdwb3J0LXRhZy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbWV0YS12aWV3cG9y
dC10YWcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBGcmFtZUxvYWRDYWxsYmFja3MoKTsKK30KKzwvc2NyaXB0PgorPG1ldGEgbmFtZT0idmlld3Bv
cnQiIGNvbnRlbnQ9IndpZHRoID0gNTUwIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0
cyB0aGF0IHRoZSBGcmFtZUNsaWVudCBpcyBub3RpZmllZCB3aGVuIHRoZSBwYWdlIGNvbnRhaW5z
IHRoZSB2aWV3cG9ydCBtZXRhIHRhZy4gVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gYnkgaGFuZC48
L3A+Cis8cD5Ob3RlLCB3ZSBleHBlY3QgdGhpcyB0ZXN0IHRvIGZhaWwgb24gYWxsIHBvcnRzIHRo
YXQgaGF2ZSBub3QgY29tcGlsZWQgd2l0aCBNRVRBX1ZJRVdQT1JUIGVuYWJsZWQuPC9wPgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51356</attachid>
            <date>2010-03-22 14:37:15 -0700</date>
            <delta_ts>2010-03-29 11:38:19 -0700</delta_ts>
            <desc>Patch 2 of 2: Mac and Qt DRT changes and test case</desc>
            <filename>patch2_2.patch</filename>
            <type>text/plain</type>
            <size>22642</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNTYzNTEpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTAtMDMtMjIgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjMxMgorCisgICAgICAgIFBhdGNoIDIg
b2YgMi4KKworICAgICAgICBBZGRzIGZpbGVzIFdlYlZpZXdwb3J0QXJndW1lbnRzLmggYW5kIFdl
YlZpZXdwb3J0QXJndW1lbnRzLmNwcAorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisKIDIwMTAtMDMtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgogCiAgICAgICAgICogU3RyaW5nc05vdFRvQmVMb2NhbGl6ZWQudHh0OiBVcGRhdGVkIGZvciBy
ZWNlbnQgY2hhbmdlcy4KSW5kZXg6IFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDU2MzIyKQorKysgV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQsNiArMzQ0LDggQEAKIAkJQzBCMUY3RTkxMEFD
OEUzMTAwQzkyNUQ5IC8qIFdlYlNjcmlwdFdvcmxkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBCMUY3RTYxMEFDOEUzMTAwQzkyNUQ5IC8qIFdlYlNj
cmlwdFdvcmxkLm1tICovOyB9OwogCQlDMEIxRjdFQTEwQUM4RTMxMDBDOTI1RDkgLyogV2ViU2Ny
aXB0V29ybGRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzBCMUY3RTcxMEFDOEUzMTAwQzkyNUQ5IC8qIFdlYlNjcmlwdFdvcmxkSW50ZXJu
YWwuaCAqLzsgfTsKIAkJQzBCODhFOEIxMEEwOEYzRDAwRkJCM0Y1IC8qIFdlYkZyYW1lTG9hZERl
bGVnYXRlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzBCODhFOEExMEEwOEYzRDAwRkJCM0Y1IC8qIFdlYkZyYW1lTG9hZERlbGVnYXRlUHJp
dmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUNFMTlDRTc4MTE1NDNDQ0MwMDJCNkJDNyAvKiBXZWJWaWV3cG9ydEFyZ3VtZW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxOUNFNzYxMTU0M0ND
QzAwMkI2QkM3IC8qIFdlYlZpZXdwb3J0QXJndW1lbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0UxOUNFNzkxMTU0M0NDQzAwMkI2QkM3IC8q
IFdlYlZpZXdwb3J0QXJndW1lbnRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0UxOUNFNzcxMTU0M0NDQzAwMkI2QkM3IC8qIFdlYlZpZXdwb3J0QXJn
dW1lbnRzLm1tICovOyB9OwogCQlERDdDREVFNzBBMjNCQTlFMDAwNjk5MjggLyogV2ViVHlwZXNJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REQ3Q0RFRTYwQTIzQkE5RTAwMDY5OTI4IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCAqLzsgfTsKIAkJ
REQ4OTY4MjAwOUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDg5NjgxRTA5QUE4NzI0
MDA5N0U3RjAgLyogV2ViRWxlbWVudERpY3Rpb25hcnkuaCAqLzsgfTsKIAkJREQ4OTY4MjEwOUFB
ODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQ4OTY4MUYwOUFBODcyNDAwOTdFN0YwIC8q
IFdlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tICovOyB9OwpAQCAtNjQzLDYgKzY0NSw4IEBACiAJCUMw
QjFGN0U2MTBBQzhFMzEwMEM5MjVEOSAvKiBXZWJTY3JpcHRXb3JsZC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNjcmlwdFdvcmxkLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMEIxRjdFNzEwQUM4RTMxMDBDOTI1RDkgLyogV2ViU2NyaXB0
V29ybGRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTY3Jp
cHRXb3JsZEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwQjg4RThB
MTBBMDhGM0QwMEZCQjNGNSAvKiBXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMTlDRTc2MTE1NDNDQ0MwMDJCNkJDNyAv
KiBXZWJWaWV3cG9ydEFyZ3VtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJWaWV3cG9ydEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RTE5Q0U3NzExNTQzQ0NDMDAyQjZCQzcgLyogV2ViVmlld3BvcnRBcmd1bWVudHMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWV3cG9ydEFyZ3VtZW50cy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQ3Q0RFRTYwQTIzQkE5RTAwMDY5OTI4
IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViVHlwZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERDg5Njgx
RTA5QUE4NzI0MDA5N0U3RjAgLyogV2ViRWxlbWVudERpY3Rpb25hcnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJFbGVtZW50RGljdGlvbmFy
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKIAkJREQ4OTY4MUYwOUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJFbGVtZW50RGljdGlvbmFyeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0xMTgyLDYgKzExODYsOCBAQAogCQkJCUJDOTdF
N0UxMTA5NjNEMjYwMDEwRDM2MSAvKiBXZWJWaWV3RXZlbnRIYW5kbGluZy5tbSAqLywKIAkJCQk5
MzBEMDJCQjA2Mjc1RjY0MDA3NjcwMUUgLyogV2ViVmlld0ludGVybmFsLmggKi8sCiAJCQkJNTFB
OEI1N0QwNDI4MzUzQTAwQ0EyRDNBIC8qIFdlYlZpZXdQcml2YXRlLmggKi8sCisJCQkJQ0UxOUNF
NzYxMTU0M0NDQzAwMkI2QkM3IC8qIFdlYlZpZXdwb3J0QXJndW1lbnRzLmggKi8sCisJCQkJQ0Ux
OUNFNzcxMTU0M0NDQzAwMkI2QkM3IC8qIFdlYlZpZXdwb3J0QXJndW1lbnRzLm1tICovLAogCQkJ
CTBGRDNCMEY2MTA3NkMzRjcwMDAzOUI5NiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLywKIAkJ
CQkwRkQzQjBGNzEwNzZDM0Y3MDAwMzlCOTYgLyogV2ViV2luZG93QW5pbWF0aW9uLm0gKi8sCiAJ
CQkpOwpAQCAtMTU1Myw2ICsxNTU5LDcgQEAKIAkJCQk5Mzk4MTA3MTA4MjRCRjAxMDA4REYwMzgg
LyogV2ViVmlld1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDNCMEY4MTA3NkMzRjcw
MDAzOUI5NiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjQ0
ODRGMTAzMzhFOEMwMDMwRTU1RSAvKiBXZWJXb3JrZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0UxOUNFNzgxMTU0M0NDQzAwMkI2QkM3IC8qIFdlYlZpZXdwb3J0QXJndW1lbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTE5MTIsNiArMTkxOSw3IEBACiAJCQkJOTM5ODEwRTgwODI0QkYw
MTAwOERGMDM4IC8qIFdlYlZpZXdGYWN0b3J5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEM0Iw
RjkxMDc2QzNGNzAwMDM5Qjk2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDFGNDQ4NTAxMDMzOEU4QzAwMzBFNTVFIC8qIFdlYldvcmtlcnNQcml2YXRlLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJQ0UxOUNFNzkxMTU0M0NDQzAwMkI2QkM3IC8qIFdlYlZpZXdwb3J0
QXJndW1lbnRzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNTYzNTEpCisrKyBX
ZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEw
LTAzLTIyICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzYzMTIKKworICAgICAgICBQYXRjaCAyIG9mIDIuCisKKyAgICAgICAg
SW1wbGVtZW50cyBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVmlld3Bv
cnRBcmd1bWVudHMKKyAgICAgICAgdG8gc3VwcG9ydCB0ZXN0aW5nIHdpdGggTWFjIERSVC4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMpOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaDoKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NhY2hlRnJh
bWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnNdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXdwb3J0QXJndW1lbnRzLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld3BvcnRB
cmd1bWVudHMubW06IEFkZGVkLgorICAgICAgICAoLVtXZWJWaWV3cG9ydEFyZ3VtZW50c1ByaXZh
dGUgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJWaWV3cG9ydEFyZ3VtZW50cyBpbml0V2l0aFdp
ZHRoOmhlaWdodDp1c2VyU2NhbGFibGU6aW5pdGlhbFNjYWxlOm1pbmltdW1TY2FsZTptYXhpbXVt
U2NhbGU6XSk6CisgICAgICAgICgtW1dlYlZpZXdwb3J0QXJndW1lbnRzIHdpZHRoXSk6CisgICAg
ICAgICgtW1dlYlZpZXdwb3J0QXJndW1lbnRzIGhlaWdodF0pOgorICAgICAgICAoLVtXZWJWaWV3
cG9ydEFyZ3VtZW50cyB1c2VyU2NhbGFibGVdKToKKyAgICAgICAgKC1bV2ViVmlld3BvcnRBcmd1
bWVudHMgaW5pdGlhbFNjYWxlXSk6CisgICAgICAgICgtW1dlYlZpZXdwb3J0QXJndW1lbnRzIG1p
bmltdW1TY2FsZV0pOgorICAgICAgICAoLVtXZWJWaWV3cG9ydEFyZ3VtZW50cyBtYXhpbXVtU2Nh
bGVdKToKKyAgICAgICAgKC1bV2ViVmlld3BvcnRBcmd1bWVudHMgZGVhbGxvY10pOgorCiAyMDEw
LTAzLTIyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1NjMyMikKKysrIFdlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNiArNDUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU3RyaW5n
OwogICAgIGNsYXNzIFJlc291cmNlTG9hZGVyOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
KyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKKyAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7
CisjZW5kaWYKIH0KIAogdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcj4sIFJldGFpblB0cjxXZWJSZXNvdXJjZT4gPiBSZXNvdXJjZU1hcDsKQEAgLTIwNSw2ICsy
MDgsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3Rp
ZmljYXRpb24oYm9vbCBsaXN0ZW4pOwogCisjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQpCisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJik7CisjZW5kaWYKKwogI2lmIEVOQUJMRShNQUNfSkFW
QV9CUklER0UpCiAgICAgdmlydHVhbCBqb2JqZWN0IGphdmFBcHBsZXQoTlNWaWV3Kik7CiAjZW5k
aWYKSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQkocmV2aXNpb24gNTYzMjIpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiArMTE5LDEw
IEBACiAjaW1wb3J0IDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAKKyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKKyNpbXBvcnQgPFdl
YkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KKyNlbmRpZgorCiAjaWYgRU5BQkxFKE1BQ19KQVZB
X0JSSURHRSkKICNpbXBvcnQgIldlYkphdmFQbHVnSW4uaCIKICNlbmRpZgpAQCAtOTIyLDYgKzky
NiwyNCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zCiAgICAgICAg
IENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnRGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlld0RpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnQ6KSk7CiB9CiAKKyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0
IFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpCit7CisgICAgV2ViVmlldyogd2ViVmlldyA9
IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7ICAgCisgICAgV2ViRnJhbWVMb2FkRGVsZWdh
dGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVM
b2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CisgICAgaWYgKCFpbXBsZW1lbnRh
dGlvbnMtPmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50c0ZvckZyYW1lRnVuYykKKyAgICAgICAg
cmV0dXJuOworICAgIFdlYlZpZXdwb3J0QXJndW1lbnRzKiBkYXRhID0gW1tXZWJWaWV3cG9ydEFy
Z3VtZW50cyBhbGxvY10gaW5pdFdpdGhXaWR0aDphcmd1bWVudHMud2lkdGgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWlnaHQ6YXJndW1lbnRzLmhlaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJTY2FsYWJsZTphcmd1bWVudHMu
dXNlclNjYWxhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFNjYWxlOmFyZ3VtZW50cy5pbml0aWFsU2NhbGUK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtaW5pbXVtU2NhbGU6YXJndW1lbnRzLm1pbmltdW1TY2FsZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGlt
dW1TY2FsZTphcmd1bWVudHMubWF4aW11bVNjYWxlXTsKKyAgICBDYWxsRnJhbWVMb2FkRGVsZWdh
dGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHNGb3JGcmFtZUZ1
bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50
czpmb3JGcmFtZTopLCBkYXRhLCBtX3dlYkZyYW1lLmdldCgpKTsKKyAgICBbZGF0YSByZWxlYXNl
XTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKICAgICBSZXRhaW5QdHI8V2ViU2Vj
dXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2luKEFkb3B0TlMsIFtbV2ViU2VjdXJpdHlPcmln
aW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW5dKTsKSW5kZXg6
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9u
Q2FjaGluZy5oCShyZXZpc2lvbiA1NjMyMikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxl
Z2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw5
IEBAIHN0cnVjdCBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW8KICAgICBJTVAgZGlk
RmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWVGdW5jOwogICAgIElNUCBkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50RnVuYzsKICAgICBJTVAgZGlkUnVuSW5zZWN1cmVDb250ZW50RnVuYzsKKyNpZiBF
TkFCTEUoTUVUQV9WSUVXUE9SVCkKKyAgICBJTVAgZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRz
Rm9yRnJhbWVGdW5jOworI2VuZGlmCiB9OwogCiBzdHJ1Y3QgV2ViU2NyaXB0RGVidWdEZWxlZ2F0
ZUltcGxlbWVudGF0aW9uQ2FjaGUgewpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9u
IDU2MzIyKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTE0MTgsNiArMTQxOCw5IEBAIC0gKHZvaWQpX2NhY2hlRnJhbWVMb2FkRGVsZWdhdGVJbXBs
ZW1lbnQKICAgICBjYWNoZS0+d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlRnVuYyA9IGdldE1l
dGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6d2luZG93U2NyaXB0T2JqZWN0QXZhaWxh
YmxlOikpOwogICAgIGNhY2hlLT5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50RnVuYyA9IGdldE1l
dGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXdEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50
OikpOwogICAgIGNhY2hlLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGdW5jID0gZ2V0TWV0aG9kKGRl
bGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSdW5JbnNlY3VyZUNvbnRlbnQ6KSk7CisjaWYg
RU5BQkxFKE1FVEFfVklFV1BPUlQpCisgICAgY2FjaGUtPmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3Vt
ZW50c0ZvckZyYW1lRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6
ZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzOmZvckZyYW1lOikpOworI2VuZGlmCiB9CiAKIC0g
KHZvaWQpX2NhY2hlU2NyaXB0RGVidWdEZWxlZ2F0ZUltcGxlbWVudGF0aW9ucwpJbmRleDogV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdwb3J0QXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdwb3J0QXJndW1lbnRzLmgJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld3BvcnRBcmd1bWVudHMuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggaW4gTW90aW9uIExp
bWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKwor
QGNsYXNzIFdlYkZyYW1lOworQGNsYXNzIFdlYlZpZXc7CitAY2xhc3MgV2ViVmlld3BvcnRBcmd1
bWVudHNQcml2YXRlOworCitAaW50ZXJmYWNlIFdlYlZpZXdwb3J0QXJndW1lbnRzIDogTlNPYmpl
Y3QgeworQHByaXZhdGUKKyAgICBXZWJWaWV3cG9ydEFyZ3VtZW50c1ByaXZhdGUgKl9wcml2YXRl
OworfQorCistIChpZClpbml0V2l0aFdpZHRoOihpbnQpd2lkdGggaGVpZ2h0OihpbnQpaGVpZ2h0
IHVzZXJTY2FsYWJsZTooaW50KXVzZXJTY2FsYWJsZSBpbml0aWFsU2NhbGU6KGZsb2F0KWluaXRp
YWxTY2FsZSBtaW5pbXVtU2NhbGU6KGZsb2F0KW1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6KGZs
b2F0KW1heGltdW1TY2FsZTsKKy0gKGludCl3aWR0aDsKKy0gKGludCloZWlnaHQ7CistIChpbnQp
dXNlclNjYWxhYmxlOworLSAoZmxvYXQpaW5pdGlhbFNjYWxlOworLSAoZmxvYXQpbWluaW11bVNj
YWxlOworLSAoZmxvYXQpbWF4aW11bVNjYWxlOworCitAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld3BvcnRBcmd1bWVudHMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXdwb3J0QXJndW1lbnRzLm1tCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdwb3J0QXJndW1lbnRzLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggaW4gTW90aW9uIExpbWl0ZWQg
MjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW1wb3J0ICJXZWJWaWV3cG9ydEFyZ3VtZW50cy5oIgorCitAaW50ZXJm
YWNlIFdlYlZpZXdwb3J0QXJndW1lbnRzUHJpdmF0ZSA6IE5TT2JqZWN0Cit7CitAcHVibGljCisg
ICAgaW50IHdpZHRoOworICAgIGludCBoZWlnaHQ7CisgICAgaW50IHVzZXJTY2FsYWJsZTsKKyAg
ICBmbG9hdCBpbml0aWFsU2NhbGU7CisgICAgZmxvYXQgbWluaW11bVNjYWxlOworICAgIGZsb2F0
IG1heGltdW1TY2FsZTsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViVmlld3BvcnRB
cmd1bWVudHNQcml2YXRlCisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtzdXBlciBkZWFsbG9j
XTsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViVmlld3BvcnRBcmd1bWVudHMKKwor
LSAoaWQpaW5pdFdpdGhXaWR0aDooaW50KXdpZHRoIGhlaWdodDooaW50KWhlaWdodCB1c2VyU2Nh
bGFibGU6KGludCl1c2VyU2NhbGFibGUgaW5pdGlhbFNjYWxlOihmbG9hdClpbml0aWFsU2NhbGUg
bWluaW11bVNjYWxlOihmbG9hdCltaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOihmbG9hdCltYXhp
bXVtU2NhbGU7Cit7CisgICAgX3ByaXZhdGUgPSBbW1dlYlZpZXdwb3J0QXJndW1lbnRzUHJpdmF0
ZSBhbGxvY10gaW5pdF07CisKKyAgICBfcHJpdmF0ZS0+d2lkdGggPSB3aWR0aDsKKyAgICBfcHJp
dmF0ZS0+aGVpZ2h0ID0gaGVpZ2h0OworICAgIF9wcml2YXRlLT51c2VyU2NhbGFibGUgPSB1c2Vy
U2NhbGFibGU7CisgICAgX3ByaXZhdGUtPmluaXRpYWxTY2FsZSA9IGluaXRpYWxTY2FsZTsKKyAg
ICBfcHJpdmF0ZS0+bWluaW11bVNjYWxlID0gbWluaW11bVNjYWxlOworICAgIF9wcml2YXRlLT5t
YXhpbXVtU2NhbGUgPSBtYXhpbXVtU2NhbGU7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAo
aW50KXdpZHRoCit7CisgICAgcmV0dXJuIF9wcml2YXRlLT53aWR0aDsKK30KKworLSAoaW50KWhl
aWdodAoreworICAgIHJldHVybiBfcHJpdmF0ZS0+aGVpZ2h0OworfQorCistIChpbnQpdXNlclNj
YWxhYmxlCit7CisgICAgcmV0dXJuIF9wcml2YXRlLT51c2VyU2NhbGFibGU7Cit9CisKKy0gKGZs
b2F0KWluaXRpYWxTY2FsZQoreworICAgIHJldHVybiBfcHJpdmF0ZS0+aW5pdGlhbFNjYWxlOwor
fQorCistIChmbG9hdCltaW5pbXVtU2NhbGUKK3sKKyAgICByZXR1cm4gX3ByaXZhdGUtPm1pbmlt
dW1TY2FsZTsKK30KKworLSAoZmxvYXQpbWF4aW11bVNjYWxlCit7CisgICAgcmV0dXJuIF9wcml2
YXRlLT5tYXhpbXVtU2NhbGU7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtfcHJpdmF0
ZSByZWxlYXNlXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKK0BlbmQKSW5kZXg6IFdlYktp
dC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNp
b24gNTYzNTEpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTAtMDMtMjIgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjMxMgorCisgICAgICAgIFBhdGNoIDIgb2Yg
Mi4KKworICAgICAgICBJbXBsZW1lbnRzIEZyYW1lQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVW
aWV3cG9ydEFyZ3VtZW50cyB0byBzdXBwb3J0IHRlc3RpbmcKKyAgICAgICAgd2l0aCBRdCBEUlQu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVZp
ZXdwb3J0QXJndW1lbnRzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0Lmg6CisKIDIwMTAtMDMtMjIgIEpha3ViIFdpZWN6b3JlayAgPGp3aWVjem9yZWtAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHJl
dmlzaW9uIDU2MzIyKQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3NiwxMCBAQAogI2luY2x1ZGUgPFFO
ZXR3b3JrUmVwbHk+CiAjaW5jbHVkZSAicXdlYmhpc3RvcnlfcC5oIgogCisjaWYgRU5BQkxFKE1F
VEFfVklFV1BPUlQpCisjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKKyNlbmRpZgorCiBz
dGF0aWMgYm9vbCBkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MgPSBmYWxzZTsKIHN0YXRpYyBib29s
IGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSBmYWxzZTsKIApAQCAtNjg2LDYgKzY5MCwxNiBA
QCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZFJ1bkluc2VjdXJlCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAorI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQordm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBXZWJD
b3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYpCit7CisgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxi
YWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50c0Zv
ckZyYW1lXG4iLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0
KG1fZnJhbWUpKSk7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnRRdDo6c2F2ZVZpZXdTdGF0ZVRvSXRlbShXZWJDb3JlOjpIaXN0b3J5
SXRlbSogaXRlbSkKIHsKICAgICBRV2ViSGlzdG9yeUl0ZW0gaGlzdG9yeUl0ZW0obmV3IFFXZWJI
aXN0b3J5SXRlbVByaXZhdGUoaXRlbSkpOwpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA1NjMyMikKKysrIFdlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDYgKzUxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE5hdmlnYXRpb25B
Y3Rpb247CiAgICAgY2xhc3MgU3RyaW5nOwogICAgIGNsYXNzIFJlc291cmNlTG9hZGVyOworI2lm
IEVOQUJMRShNRVRBX1ZJRVdQT1JUKQorICAgIHN0cnVjdCBWaWV3cG9ydEFyZ3VtZW50czsKKyNl
bmRpZgogCiAgICAgc3RydWN0IExvYWRFcnJvclJlc2V0VG9rZW47CiAKQEAgLTIwOSw2ICsyMTIs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
ckZvckljb25Ob3RpZmljYXRpb24oYm9vbCk7CiAKKyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRz
KGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJik7CisjZW5kaWYKKwogICAgICAgICBR
U3RyaW5nIGNob29zZUZpbGUoY29uc3QgUVN0cmluZyYgb2xkRmlsZSk7CiAKICAgICBwcml2YXRl
OgpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gNTYzNTEpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMy0yMiAgRGFuaWVsIEJhdGVzICA8
ZGJhdGVzQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MzEyCisK
KyAgICAgICAgUGF0Y2ggMiBvZiAyLgorCisgICAgICAgIEltcGxlbWVudHMgZGVsZWdhdGUgbWV0
aG9kIGRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyBmb3IgTWFjIERSVC4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bRnJh
bWVMb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHM6Zm9yRnJh
bWU6XSk6CisKIDIwMTAtMDMtMjIgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0JKHJldmlz
aW9uIDU2MzIyKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERl
bGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxMCBAQAogI2ltcG9ydCA8V2Vi
S2l0L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMu
aD4KIAorI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQorI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdw
b3J0QXJndW1lbnRzLmg+CisjZW5kaWYKKwogQGludGVyZmFjZSBOU1VSTCAoRFJURXh0cmFzKQog
LSAoTlNTdHJpbmcgKilfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0OwogQGVu
ZApAQCAtMzg1LDQgKzM4OSwxNCBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIg
ZGlkUnVuCiAgICAgICAgIHByaW50ZiAoImRpZFJ1bkluc2VjdXJlQ29udGVudFxuIik7CiB9CiAK
KyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNl
bmRlciBkaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHM6KFdlYlZpZXdwb3J0QXJndW1lbnRzICop
YXJndW1lbnRzIGZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCit7CisgICAgaWYgKCFkb25lICYm
IGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAg
ICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0g
ZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzRm9yRnJhbWUiLCBbZnJhbWUgX2RydF9kZXNjcmlw
dGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdF1dOworICAgICAgICBwcmludGYoIiVzXG4iLCBbc3Ry
aW5nIFVURjhTdHJpbmddKTsKKyAgICB9Cit9CisjZW5kaWYKKwogQGVuZApJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gNTYzNTEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOCBAQAorMjAxMC0wMy0yMiAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MzEyCisKKyAgICAgICAgUGF0Y2gg
MiBvZiAyLgorCisgICAgICAgIFRlc3RzIHRoYXQgdGhlIEZyYW1lQ2xpZW50IGlzIG5vdGlmaWVk
IHdoZW4gdGhlIHBhZ2UgY29udGFpbnMKKyAgICAgICAgdGhlIHZpZXdwb3J0IG1ldGEgdGFnLiBJ
bmNsdWRlcyBleHBlY3RlZCBmYWlsdXJlIHJlc3VsdHMgZm9yCisgICAgICAgIHBvcnRzIHRoYXQg
ZG8gbm90IGVuYWJsZSBNRVRBX1ZJRVdQT1JULgorCisgICAgICAgICogZmFzdC9sb2FkZXIvbWV0
YS12aWV3cG9ydC10YWctZXhwZWN0ZWQudHh0OiBBZGRlZCBleHBlY3RlZCBmYWlsdXJlIHJlc3Vs
dHMuCisgICAgICAgICogZmFzdC9sb2FkZXIvbWV0YS12aWV3cG9ydC10YWcuaHRtbDogQWRkZWQu
CisKIDIwMTAtMDMtMjIgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCBDaHJvbWl1bSBleHBlY3RhdGlvbnMgdHdlYWsuCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9tZXRhLXZpZXdwb3J0LXRhZy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbWV0YS12aWV3cG9ydC10YWctZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbWV0YS12aWV3
cG9ydC10YWctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKK21haW4g
ZnJhbWUgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEhh
bmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkRmluaXNoTG9hZEZvckZy
YW1lCitUaGlzIHRlc3RzIHRoYXQgdGhlIEZyYW1lQ2xpZW50IGlzIG5vdGlmaWVkIHdoZW4gdGhl
IHBhZ2UgY29udGFpbnMgdGhlIHZpZXdwb3J0IG1ldGEgdGFnLiBUaGlzIHRlc3QgY2Fubm90IGJl
IHJ1biBieSBoYW5kLgorCitOb3RlLCB3ZSBleHBlY3QgdGhpcyB0ZXN0IHRvIGZhaWwgb24gYWxs
IHBvcnRzIHRoYXQgaGF2ZSBub3QgY29tcGlsZWQgd2l0aCBNRVRBX1ZJRVdQT1JUIGVuYWJsZWQu
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9tZXRhLXZpZXdwb3J0LXRhZy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL21ldGEtdmlld3BvcnQtdGFnLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9tZXRhLXZpZXdwb3J0
LXRhZy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEZyYW1lTG9hZENhbGxiYWNrcygpOworfQorPC9zY3JpcHQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9y
dCIgY29udGVudD0id2lkdGggPSA1NTAiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3Rz
IHRoYXQgdGhlIEZyYW1lQ2xpZW50IGlzIG5vdGlmaWVkIHdoZW4gdGhlIHBhZ2UgY29udGFpbnMg
dGhlIHZpZXdwb3J0IG1ldGEgdGFnLiBUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biBieSBoYW5kLjwv
cD4KKzxwPk5vdGUsIHdlIGV4cGVjdCB0aGlzIHRlc3QgdG8gZmFpbCBvbiBhbGwgcG9ydHMgdGhh
dCBoYXZlIG5vdCBjb21waWxlZCB3aXRoIE1FVEFfVklFV1BPUlQgZW5hYmxlZC48L3A+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51666</attachid>
            <date>2010-03-25 11:50:33 -0700</date>
            <delta_ts>2010-03-26 09:38:09 -0700</delta_ts>
            <desc>Patch 1 of 2</desc>
            <filename>patch1.patch</filename>
            <type>text/plain</type>
            <size>12741</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjU1MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMDMtMjUgIFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MzEyCisKKyAgICAgICAgUGF0Y2ggMSBvZiAy
LgorCisgICAgICAgIFByb2Nlc3MgInZpZXdwb3J0IiBtZXRhIHRhZyB3aGVuIEVOQUJMRShNRVRB
X1ZJRVdQT1JUKSBpcyB0cnVlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNzVmlld3BvcnRNZXRhVGFnKTogQWRkZWQuCisg
ICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRWaWV3cG9ydEZlYXR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNTZXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFZp
ZXdwb3J0QXJndW1lbnRzKToKKyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6KToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWaWV3cG9ydEFyZ3VtZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6Vmll
d3BvcnRBcmd1bWVudHM6Omhhc0N1c3RvbUFyZ3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZXRhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0YUVsZW1lbnQ6OnByb2Nl
c3MpOiBNb2RpZmllZCB0byBjYWxsCisgICAgICAgIERvY3VtZW50Ojpwcm9jZXNzVmlld3BvcnRN
ZXRhVGFnIHdoZW4gdGhlIG5hbWUgYXR0cmlidXRlCisgICAgICAgIGlzIGVxdWFsIHRvICJ2aWV3
cG9ydCIuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVmlld3BvcnRBcmd1
bWVudHMpOiBBZGRlZC4KKwogMjAxMC0wMy0yNSAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5l
LnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4u
CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1NjU1MykKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIkZvY3VzQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIK
KyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxBbGxDb2xsZWN0aW9uLmgiCkBA
IC0xNDEsNiArMTQyLDEwIEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKKyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKKyNpbmNs
dWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoU0hBUkVEX1dP
UktFUlMpCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIgogI2VuZGlmCkBAIC00
Nzg0LDYgKzQ3ODksMjIgQEAgdm9pZCBEb2N1bWVudDo6ZW5xdWV1ZVBvcHN0YXRlRXZlbnQoUGFz
cwogICAgIGRpc3BhdGNoV2luZG93RXZlbnQoUG9wU3RhdGVFdmVudDo6Y3JlYXRlKHN0YXRlT2Jq
ZWN0KSk7CiB9CiAKKyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKK3ZvaWQgRG9jdW1lbnQ6OnBy
b2Nlc3NWaWV3cG9ydE1ldGFUYWcoY29uc3QgU3RyaW5nJiBmZWF0dXJlcykKK3sKKyAgICBpZiAo
IW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBt
X2ZyYW1lLT5sb2FkZXIoKTsKKyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgVmlld3BvcnRBcmd1bWVudHMgYXJndW1lbnRzOworICAgIGV4dHJhY3RWaWV3cG9ydEFyZ3Vt
ZW50cyhmZWF0dXJlcywgYXJndW1lbnRzKTsKKyAgICBsb2FkZXItPmNsaWVudCgpLT5kaXNwYXRj
aERpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cygmYXJndW1lbnRzKTsKK30KKyNlbmRpZgorCiAj
aWYgRU5BQkxFKFhIVE1MTVApCiBib29sIERvY3VtZW50Ojppc1hIVE1MTVBEb2N1bWVudCgpIGNv
bnN0CiB7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDU2NTUzKQorKysgV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTUxLDYgKzk1MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRVc2luZ0dlb2xvY2F0aW9uKGJvb2wgZikgeyBtX3VzaW5nR2VvbG9jYXRpb24gPSBmOyB9
CiAgICAgYm9vbCB1c2luZ0dlb2xvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2luZ0dlb2xv
Y2F0aW9uOyB9OwogCisjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQpCisgICAgdm9pZCBwcm9jZXNz
Vmlld3BvcnRNZXRhVGFnKGNvbnN0IFN0cmluZyYgZmVhdHVyZXMpOworI2VuZGlmICAgIAorCiAj
aWYgRU5BQkxFKFdNTCkKICAgICB2b2lkIHNldENvbnRhaW5zV01MQ29udGVudChib29sIHZhbHVl
KSB7IG1fY29udGFpbnNXTUxDb250ZW50ID0gdmFsdWU7IH0KICAgICBib29sIGNvbnRhaW5zV01M
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNXTUxDb250ZW50OyB9CkluZGV4OiBX
ZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vVmlld3BvcnRBcmd1bWVudHMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vVmll
d3BvcnRBcmd1bWVudHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlld3BvcnRBcmd1
bWVudHMuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIHZvaWQgc2V0Vmlld3BvcnRGZWF0dXJlKGNvbnN0IFN0cmluZyYga2V5
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBWaWV3cG9ydEFyZ3VtZW50cyYgYXJn
dW1lbnRzKQoreworICAgIGZsb2F0IHZhbHVlID0gLTEuMDsKKworICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZSh2YWx1ZVN0cmluZywgInllcyIpKQorICAgICAgICB2YWx1ZSA9IDE7CisgICAgZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWVTdHJpbmcsICJkZWZhdWx0IikpIHsKKyAgICAg
ICAgLy8gRklYTUU6IFdoeSBhcmUgd2UgaGFuZGxpbmcgdGhpcyBjYXNlPyBUaGlzIGRvZXMgbm90
IGFwcGVhciB0byBjb25mb3JtIHRvCisgICAgICAgIC8vIDxodHRwOi8vZGV2ZWxvcGVyLmFwcGxl
LmNvbS9zYWZhcmkvbGlicmFyeS9kb2N1bWVudGF0aW9uL0FwcGxlQXBwbGljYXRpb25zL1JlZmVy
ZW5jZS9TYWZhcmlIVE1MUmVmL0FydGljbGVzL01ldGFUYWdzLmh0bWw+LgorICAgIH0gZWxzZSBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWVTdHJpbmcsICJkZXZpY2Utd2lkdGgiKSkKKyAgICAg
ICAgdmFsdWUgPSBWaWV3cG9ydEFyZ3VtZW50czo6RGV2aWNlV2lkdGg7CisgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWVTdHJpbmcsICJkZXZpY2UtaGVpZ2h0IikpCisgICAgICAg
IHZhbHVlID0gVmlld3BvcnRBcmd1bWVudHM6OkRldmljZUhlaWdodDsKKyAgICBlbHNlIGlmICh2
YWx1ZVN0cmluZy5sZW5ndGgoKSkKKyAgICAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
dmFsdWVTdHJpbmcudG9Eb3VibGUoKSk7CisKKyAgICBpZiAoa2V5U3RyaW5nID09ICJpbml0aWFs
LXNjYWxlIikKKyAgICAgICAgYXJndW1lbnRzLmluaXRpYWxTY2FsZSA9IHZhbHVlOworICAgIGVs
c2UgaWYgKGtleVN0cmluZyA9PSAibWluaW11bS1zY2FsZSIpCisgICAgICAgIGFyZ3VtZW50cy5t
aW5pbXVtU2NhbGUgPSB2YWx1ZTsKKyAgICBlbHNlIGlmIChrZXlTdHJpbmcgPT0gIm1heGltdW0t
c2NhbGUiKQorICAgICAgICBhcmd1bWVudHMubWF4aW11bVNjYWxlID0gdmFsdWU7CisgICAgZWxz
ZSBpZiAoa2V5U3RyaW5nID09ICJ1c2VyLXNjYWxhYmxlIikKKyAgICAgICAgYXJndW1lbnRzLnVz
ZXJTY2FsYWJsZSA9IHN0YXRpY19jYXN0PGludD4odmFsdWUpOworICAgIGVsc2UgaWYgKGtleVN0
cmluZyA9PSAid2lkdGgiKQorICAgICAgICBhcmd1bWVudHMud2lkdGggPSBzdGF0aWNfY2FzdDxp
bnQ+KHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXlTdHJpbmcgPT0gImhlaWdodCIpCisgICAgICAg
IGFyZ3VtZW50cy5oZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKTsKK30KKworc3RhdGlj
IGlubGluZSBib29sIGlzU2VwYXJhdG9yKFVDaGFyIGMpCit7CisgICAgcmV0dXJuIGMgPT0gJyAn
IHx8IGMgPT0gJ1x0JyB8fCBjID09ICdcbicgfHwgYyA9PSAnXHInIHx8IGMgPT0gJz0nIHx8IGMg
PT0gJywnIHx8IGMgPT0gJ1wwJzsKK30KKwordm9pZCBleHRyYWN0Vmlld3BvcnRBcmd1bWVudHMo
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJiBmZWF0dXJlcywgVmlld3BvcnRBcmd1bWVudHMmIGFyZ3Vt
ZW50cykKK3sKKyAgICAvLyBUcmVhZCBsaWdodGx5IGluIHRoaXMgY29kZSAtLSBpdCB3YXMgc3Bl
Y2lmaWNhbGx5IGRlc2lnbmVkIHRvIG1pbWljIFdpbiBJRSdzIHBhcnNpbmcgYmVoYXZpb3IuCisg
ICAgaW50IGtleUJlZ2luLCBrZXlFbmQ7CisgICAgaW50IHZhbHVlQmVnaW4sIHZhbHVlRW5kOwor
CisgICAgaW50IGkgPSAwOworICAgIGludCBsZW5ndGggPSBmZWF0dXJlcy5sZW5ndGgoKTsKKyAg
ICBTdHJpbmcgYnVmZmVyID0gZmVhdHVyZXMubG93ZXIoKTsKKyAgICB3aGlsZSAoaSA8IGxlbmd0
aCkgeworICAgICAgICAvLyBTa2lwIHRvIHRoZSBmaXJzdCBub24tc2VwYXJhdG9yLCBidXQgZG9u
J3Qgc2tpcCBwYXN0IHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KKyAgICAgICAgd2hpbGUgKGlzU2Vw
YXJhdG9yKGJ1ZmZlcltpXSkgJiYgaSA8IGxlbmd0aCkKKyAgICAgICAgICAgICsraTsKKyAgICAg
ICAga2V5QmVnaW4gPSBpOworCisgICAgICAgIC8vIFNraXAgdG8gdGhlIGZpcnN0IHNlcGFyYXRv
ci4KKyAgICAgICAgd2hpbGUgKCFpc1NlcGFyYXRvcihidWZmZXJbaV0pICYmIGkgPCBsZW5ndGgp
CisgICAgICAgICAgICArK2k7CisgICAgICAgIGtleUVuZCA9IGk7CisKKyAgICAgICAgLy8gU2tp
cCB0byB0aGUgZmlyc3QgJz0nLCBidXQgZG9uJ3Qgc2tpcCBwYXN0IGEgJywnIG9yIHRoZSBlbmQg
b2YgdGhlIHN0cmluZy4KKyAgICAgICAgd2hpbGUgKGJ1ZmZlcltpXSAhPSAnPScgJiYgYnVmZmVy
W2ldICE9ICcsJyAmJiBpIDwgbGVuZ3RoKQorICAgICAgICAgICAgKytpOworCisgICAgICAgIC8v
IFNraXAgdG8gdGhlIGZpcnN0IG5vbi1zZXBhcmF0b3IsIGJ1dCBkb24ndCBza2lwIHBhc3QgYSAn
LCcgb3IgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLgorICAgICAgICB3aGlsZSAoaXNTZXBhcmF0b3Io
YnVmZmVyW2ldKSAmJiBidWZmZXJbaV0gIT0gJywnICYmIGkgPCBsZW5ndGgpCisgICAgICAgICAg
ICArK2k7CisKKyAgICAgICAgdmFsdWVCZWdpbiA9IGk7CisKKyAgICAgICAgLy8gU2tpcCB0byB0
aGUgZmlyc3Qgc2VwYXJhdG9yLgorICAgICAgICB3aGlsZSAoIWlzU2VwYXJhdG9yKGJ1ZmZlcltp
XSkgJiYgaSA8IGxlbmd0aCkKKyAgICAgICAgICAgICsraTsKKworICAgICAgICB2YWx1ZUVuZCA9
IGk7CisKKyAgICAgICAgU3RyaW5nIGtleVN0cmluZyA9IGJ1ZmZlci5zdWJzdHJpbmcoa2V5QmVn
aW4sIGtleUVuZCAtIGtleUJlZ2luKTsKKyAgICAgICAgU3RyaW5nIHZhbHVlU3RyaW5nID0gYnVm
ZmVyLnN1YnN0cmluZyh2YWx1ZUJlZ2luLCB2YWx1ZUVuZCAtIHZhbHVlQmVnaW4pOworICAgICAg
ICBzZXRWaWV3cG9ydEZlYXR1cmUoa2V5U3RyaW5nLCB2YWx1ZVN0cmluZywgYXJndW1lbnRzKTsK
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL1Zp
ZXdwb3J0QXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1
bWVudHMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBWaWV3cG9ydEFyZ3VtZW50c19oCisjZGVmaW5lIFZpZXdwb3J0QXJndW1lbnRzX2gKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTdHJpbmc7CisKK3N0cnVjdCBWaWV3cG9ydEFyZ3Vt
ZW50cyB7CisgICAgZW51bSB7CisgICAgICAgIE5vdFNwZWNpZmllZCA9IC0xLAorICAgICAgICBE
ZXZpY2VXaWR0aCA9IC0yLAorICAgICAgICBEZXZpY2VIZWlnaHQgPSAtMywKKyAgICB9OworCisg
ICAgaW50IHdpZHRoOworICAgIGludCBoZWlnaHQ7CisgICAgaW50IHVzZXJTY2FsYWJsZTsKKyAg
ICBmbG9hdCBpbml0aWFsU2NhbGU7CisgICAgZmxvYXQgbWluaW11bVNjYWxlOworICAgIGZsb2F0
IG1heGltdW1TY2FsZTsKKworICAgIFZpZXdwb3J0QXJndW1lbnRzKCkKKyAgICB7CisgICAgICAg
IGNsZWFyKCk7CisgICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBpbml0
aWFsU2NhbGUgPSBtaW5pbXVtU2NhbGUgPSBtYXhpbXVtU2NhbGUgPSAtMTsKKyAgICAgICAgd2lk
dGggPSBoZWlnaHQgPSB1c2VyU2NhbGFibGUgPSBOb3RTcGVjaWZpZWQ7CisgICAgfQorCisgICAg
Ym9vbCBoYXNDdXN0b21Bcmd1bWVudCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaW5p
dGlhbFNjYWxlID4gMCB8fCBtaW5pbXVtU2NhbGUgPiAwIHx8IG1heGltdW1TY2FsZSA+IDAgfHwg
d2lkdGggIT0gTm90U3BlY2lmaWVkIHx8IGhlaWdodCAhPSBOb3RTcGVjaWZpZWQgfHwgdXNlclNj
YWxhYmxlICE9IE5vdFNwZWNpZmllZDsKKyAgICB9Cit9OworCit2b2lkIGV4dHJhY3RWaWV3cG9y
dEFyZ3VtZW50cyhjb25zdCBTdHJpbmcmIGZlYXR1cmVzLCBWaWV3cG9ydEFyZ3VtZW50cyYpOwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxNZXRhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxl
bWVudC5jcHAJKHJldmlzaW9uIDU2NTUzKQorKysgV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDggKzY1LDE0IEBAIHZvaWQgSFRNTE1ldGFFbGVt
ZW50Ojpwcm9jZXNzKCkKIHsKICAgICAvLyBHZXQgdGhlIGRvY3VtZW50IHRvIHByb2Nlc3MgdGhl
IHRhZywgYnV0IG9ubHkgaWYgd2UncmUgYWN0dWFsbHkgcGFydCBvZiBET00gdHJlZSAoY2hhbmdp
bmcgYSBtZXRhIHRhZyB3aGlsZQogICAgIC8vIGl0J3Mgbm90IGluIHRoZSB0cmVlIHNob3VsZG4n
dCBoYXZlIGFueSBlZmZlY3Qgb24gdGhlIGRvY3VtZW50KQotICAgIGlmIChpbkRvY3VtZW50KCkg
JiYgIW1fZXF1aXYuaXNOdWxsKCkgJiYgIW1fY29udGVudC5pc051bGwoKSkKLSAgICAgICAgZG9j
dW1lbnQoKS0+cHJvY2Vzc0h0dHBFcXVpdihtX2VxdWl2LCBtX2NvbnRlbnQpOworICAgIGlmIChp
bkRvY3VtZW50KCkgJiYgIW1fY29udGVudC5pc051bGwoKSkgeworI2lmIEVOQUJMRShNRVRBX1ZJ
RVdQT1JUKQorICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSgpLCAidmlld3BvcnQi
KSkKKyAgICAgICAgICAgIGRvY3VtZW50KCktPnByb2Nlc3NWaWV3cG9ydE1ldGFUYWcobV9jb250
ZW50KTsKKyNlbmRpZgorICAgICAgICBpZiAoIW1fZXF1aXYuaXNOdWxsKCkpCisgICAgICAgICAg
ICBkb2N1bWVudCgpLT5wcm9jZXNzSHR0cEVxdWl2KG1fZXF1aXYsIG1fY29udGVudCk7CisgICAg
fQogfQogCiBTdHJpbmcgSFRNTE1ldGFFbGVtZW50Ojpjb250ZW50KCkgY29uc3QKSW5kZXg6IFdl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNTY1NTMpCisrKyBXZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTaGFyZWRCdWZmZXI7CiAgICAgY2xhc3Mg
U3Vic3RpdHV0ZURhdGE7CiAgICAgY2xhc3MgU3RyaW5nOworI2lmIEVOQUJMRShNRVRBX1ZJRVdQ
T1JUKQorICAgIHN0cnVjdCBWaWV3cG9ydEFyZ3VtZW50czsKKyNlbmRpZgogICAgIGNsYXNzIFdp
ZGdldDsKIAogICAgIHR5cGVkZWYgdm9pZCAoUG9saWN5Q2hlY2tlcjo6KkZyYW1lUG9saWN5RnVu
Y3Rpb24pKFBvbGljeUFjdGlvbik7CkBAIC0yNjksNiArMjcyLDExIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZE5vdEFsbG93U2NyaXB0KCkgeyB9CiAgICAg
ICAgIC8vIFRoaXMgY2FsbGJhY2sgaXMgc2ltaWxhciwgYnV0IGZvciBwbHVnaW5zLgogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkTm90QWxsb3dQbHVnaW5zKCkgeyB9CisKKyNpZiBFTkFCTEUoTUVU
QV9WSUVXUE9SVCkKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVZpZXdw
b3J0QXJndW1lbnRzKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzKikgeyB9CisjZW5kaWYKKwogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51667</attachid>
            <date>2010-03-25 11:52:35 -0700</date>
            <delta_ts>2010-03-26 09:38:09 -0700</delta_ts>
            <desc>Patch 2 of 2: Mac and Qt DRT changes and test case</desc>
            <filename>patch2.patch</filename>
            <type>text/plain</type>
            <size>22632</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNTY1NTMpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTAtMDMtMjUgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjMxMgorCisgICAgICAgIFBhdGNoIDIg
b2YgMi4KKworICAgICAgICBBZGRzIGZpbGVzIFdlYlZpZXdwb3J0QXJndW1lbnRzLmggYW5kIFdl
YlZpZXdwb3J0QXJndW1lbnRzLmNwcAorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisKIDIwMTAtMDMtMjIgIEtldmluIERlY2tlciAgPGtkZWNrZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IFdlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDU2NTUzKQorKysgV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNDEs
NiArMzQxLDggQEAKIAkJQzBCMUY3RTkxMEFDOEUzMTAwQzkyNUQ5IC8qIFdlYlNjcmlwdFdvcmxk
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBCMUY3
RTYxMEFDOEUzMTAwQzkyNUQ5IC8qIFdlYlNjcmlwdFdvcmxkLm1tICovOyB9OwogCQlDMEIxRjdF
QTEwQUM4RTMxMDBDOTI1RDkgLyogV2ViU2NyaXB0V29ybGRJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBCMUY3RTcxMEFDOEUzMTAwQzky
NUQ5IC8qIFdlYlNjcmlwdFdvcmxkSW50ZXJuYWwuaCAqLzsgfTsKIAkJQzBCODhFOEIxMEEwOEYz
RDAwRkJCM0Y1IC8qIFdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBCODhFOEExMEEwOEYzRDAwRkJCM0Y1
IC8qIFdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFMTlDRTc4MTE1NDNDQ0MwMDJCNkJDNyAvKiBX
ZWJWaWV3cG9ydEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0UxOUNFNzYxMTU0M0NDQzAwMkI2QkM3IC8qIFdlYlZpZXdwb3J0QXJndW1l
bnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0UxOUNFNzkxMTU0M0NDQzAwMkI2QkM3IC8qIFdlYlZpZXdwb3J0QXJndW1lbnRzLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxOUNFNzcxMTU0M0ND
QzAwMkI2QkM3IC8qIFdlYlZpZXdwb3J0QXJndW1lbnRzLm1tICovOyB9OwogCQlERDdDREVFNzBB
MjNCQTlFMDAwNjk5MjggLyogV2ViVHlwZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQ3Q0RFRTYwQTIzQkE5RTAwMDY5OTI4IC8qIFdl
YlR5cGVzSW50ZXJuYWwuaCAqLzsgfTsKIAkJREQ4OTY4MjAwOUFBODcyNDAwOTdFN0YwIC8qIFdl
YkVsZW1lbnREaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBERDg5NjgxRTA5QUE4NzI0MDA5N0U3RjAgLyogV2ViRWxlbWVudERpY3Rpb25h
cnkuaCAqLzsgfTsKIAkJREQ4OTY4MjEwOUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0
aW9uYXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REQ4OTY4MUYwOUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tICovOyB9
OwpAQCAtNjQwLDYgKzY0Miw4IEBACiAJCUMwQjFGN0U2MTBBQzhFMzEwMEM5MjVEOSAvKiBXZWJT
Y3JpcHRXb3JsZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
YlNjcmlwdFdvcmxkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEIxRjdFNzEw
QUM4RTMxMDBDOTI1RDkgLyogV2ViU2NyaXB0V29ybGRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTY3JpcHRXb3JsZEludGVybmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUMwQjg4RThBMTBBMDhGM0QwMEZCQjNGNSAvKiBXZWJGcmFtZUxv
YWREZWxlZ2F0ZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
RnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNFMTlDRTc2MTE1NDNDQ0MwMDJCNkJDNyAvKiBXZWJWaWV3cG9ydEFyZ3VtZW50cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWV3cG9ydEFyZ3VtZW50cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTE5Q0U3NzExNTQzQ0NDMDAyQjZCQzcgLyogV2Vi
Vmlld3BvcnRBcmd1bWVudHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJWaWV3cG9ydEFyZ3VtZW50cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJREQ3Q0RFRTYwQTIzQkE5RTAwMDY5OTI4IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVHlwZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlERDg5NjgxRTA5QUE4NzI0MDA5N0U3RjAgLyogV2ViRWxlbWVu
dERpY3Rpb25hcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJFbGVtZW50RGljdGlvbmFyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJREQ4OTY4MUYwOUFBODcyNDAwOTdFN0Yw
IC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFbGVtZW50RGljdGlvbmFyeS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0x
MTc1LDYgKzExNzksOCBAQAogCQkJCUJDOTdFN0UxMTA5NjNEMjYwMDEwRDM2MSAvKiBXZWJWaWV3
RXZlbnRIYW5kbGluZy5tbSAqLywKIAkJCQk5MzBEMDJCQjA2Mjc1RjY0MDA3NjcwMUUgLyogV2Vi
Vmlld0ludGVybmFsLmggKi8sCiAJCQkJNTFBOEI1N0QwNDI4MzUzQTAwQ0EyRDNBIC8qIFdlYlZp
ZXdQcml2YXRlLmggKi8sCisJCQkJQ0UxOUNFNzYxMTU0M0NDQzAwMkI2QkM3IC8qIFdlYlZpZXdw
b3J0QXJndW1lbnRzLmggKi8sCisJCQkJQ0UxOUNFNzcxMTU0M0NDQzAwMkI2QkM3IC8qIFdlYlZp
ZXdwb3J0QXJndW1lbnRzLm1tICovLAogCQkJCTBGRDNCMEY2MTA3NkMzRjcwMDAzOUI5NiAvKiBX
ZWJXaW5kb3dBbmltYXRpb24uaCAqLywKIAkJCQkwRkQzQjBGNzEwNzZDM0Y3MDAwMzlCOTYgLyog
V2ViV2luZG93QW5pbWF0aW9uLm0gKi8sCiAJCQkpOwpAQCAtMTU0Myw2ICsxNTQ5LDcgQEAKIAkJ
CQk5Mzk4MTA3MTA4MjRCRjAxMDA4REYwMzggLyogV2ViVmlld1ByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRDNCMEY4MTA3NkMzRjcwMDAzOUI5NiAvKiBXZWJXaW5kb3dBbmltYXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjQ0ODRGMTAzMzhFOEMwMDMwRTU1RSAvKiBXZWJXb3Jr
ZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0UxOUNFNzgxMTU0M0NDQzAwMkI2QkM3
IC8qIFdlYlZpZXdwb3J0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE5MDAsNiArMTkw
Nyw3IEBACiAJCQkJOTM5ODEwRTgwODI0QkYwMTAwOERGMDM4IC8qIFdlYlZpZXdGYWN0b3J5Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEM0IwRjkxMDc2QzNGNzAwMDM5Qjk2IC8qIFdlYldpbmRv
d0FuaW1hdGlvbi5tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGNDQ4NTAxMDMzOEU4QzAwMzBFNTVF
IC8qIFdlYldvcmtlcnNQcml2YXRlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0UxOUNFNzkxMTU0
M0NDQzAwMkI2QkM3IC8qIFdlYlZpZXdwb3J0QXJndW1lbnRzLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cklu
ZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5n
ZUxvZwkocmV2aXNpb24gNTY1NTMpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEwLTAzLTI1ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNA
cmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYzMTIKKworICAgICAg
ICBQYXRjaCAyIG9mIDIuCisKKyAgICAgICAgSW1wbGVtZW50cyBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMKKyAgICAgICAgdG8gc3VwcG9y
dCB0ZXN0aW5nIHdpdGggTWFjIERSVC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlVmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGVsZWdhdGVJ
bXBsZW1lbnRhdGlvbkNhY2hpbmcuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dlYlZpZXcgX2NhY2hlRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnNd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdwb3J0QXJndW1lbnRzLmg6IEFkZGVkLgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlld3BvcnRBcmd1bWVudHMubW06IEFkZGVkLgorICAgICAgICAo
LVtXZWJWaWV3cG9ydEFyZ3VtZW50c1ByaXZhdGUgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJW
aWV3cG9ydEFyZ3VtZW50cyBpbml0V2l0aFdpZHRoOmhlaWdodDp1c2VyU2NhbGFibGU6aW5pdGlh
bFNjYWxlOm1pbmltdW1TY2FsZTptYXhpbXVtU2NhbGU6XSk6CisgICAgICAgICgtW1dlYlZpZXdw
b3J0QXJndW1lbnRzIHdpZHRoXSk6CisgICAgICAgICgtW1dlYlZpZXdwb3J0QXJndW1lbnRzIGhl
aWdodF0pOgorICAgICAgICAoLVtXZWJWaWV3cG9ydEFyZ3VtZW50cyB1c2VyU2NhbGFibGVdKToK
KyAgICAgICAgKC1bV2ViVmlld3BvcnRBcmd1bWVudHMgaW5pdGlhbFNjYWxlXSk6CisgICAgICAg
ICgtW1dlYlZpZXdwb3J0QXJndW1lbnRzIG1pbmltdW1TY2FsZV0pOgorICAgICAgICAoLVtXZWJW
aWV3cG9ydEFyZ3VtZW50cyBtYXhpbXVtU2NhbGVdKToKKyAgICAgICAgKC1bV2ViVmlld3BvcnRB
cmd1bWVudHMgZGVhbGxvY10pOgorCiAyMDEwLTAzLTI0ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4IGFmdGVyIHI1NjQ3NC4KSW5kZXg6IFdlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9u
IDU2NTUzKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBTdHJpbmc7CiAgICAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiAgICAgY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OworI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQorICAgIHN0cnVjdCBW
aWV3cG9ydEFyZ3VtZW50czsKKyNlbmRpZgogfQogCiB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyPiwgUmV0YWluUHRyPFdlYlJlc291cmNlPiA+IFJlc291cmNl
TWFwOwpAQCAtMjA1LDYgKzIwOCwxMCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbihib29sIGxpc3Rlbik7CiAKKyNpZiBFTkFCTEUoTUVU
QV9WSUVXUE9SVCkKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVmlld3BvcnRB
cmd1bWVudHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMqKTsKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKE1BQ19KQVZBX0JSSURHRSkKICAgICB2aXJ0dWFsIGpvYmplY3QgamF2YUFwcGxl
dChOU1ZpZXcqKTsKICNlbmRpZgpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA1NjU1MykKKysrIFdlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTExOCw2ICsxMTgsMTAgQEAKICNpbXBvcnQgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oPgogI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KIAorI2lmIEVOQUJMRShNRVRBX1ZJRVdQ
T1JUKQorI2ltcG9ydCA8V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50cy5oPgorI2VuZGlmCisKICNp
ZiBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQogI2ltcG9ydCAiV2ViSmF2YVBsdWdJbi5oIgogI2Vu
ZGlmCkBAIC05MjEsNiArOTI1LDI0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERp
c3BsYXlJbnMKICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+
ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3
RGlkRGlzcGxheUluc2VjdXJlQ29udGVudDopKTsKIH0KIAorI2lmIEVOQUJMRShNRVRBX1ZJRVdQ
T1JUKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVmlld3Bv
cnRBcmd1bWVudHMoY29uc3QgVmlld3BvcnRBcmd1bWVudHMqIGFyZ3VtZW50cykKK3sKKyAgICBX
ZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsgICAKKyAgICBX
ZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9
IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKKyAg
ICBpZiAoIWltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzRm9yRnJh
bWVGdW5jKQorICAgICAgICByZXR1cm47CisgICAgV2ViVmlld3BvcnRBcmd1bWVudHMqIGRhdGEg
PSBbW1dlYlZpZXdwb3J0QXJndW1lbnRzIGFsbG9jXSBpbml0V2l0aFdpZHRoOmFyZ3VtZW50cy0+
d2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6YXJndW1lbnRzLT5oZWlnaHQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vy
U2NhbGFibGU6YXJndW1lbnRzLT51c2VyU2NhbGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsU2NhbGU6YXJn
dW1lbnRzLT5pbml0aWFsU2NhbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtU2NhbGU6YXJndW1lbnRzLT5taW5p
bXVtU2NhbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYXhpbXVtU2NhbGU6YXJndW1lbnRzLT5tYXhpbXVtU2NhbGVdOwor
ICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFJlY2VpdmVWaWV3
cG9ydEFyZ3VtZW50c0ZvckZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlk
UmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzOmZvckZyYW1lOiksIGRhdGEsIG1fd2ViRnJhbWUuZ2V0
KCkpOworICAgIFtkYXRhIHJlbGVhc2VdOworfQorI2VuZGlmCisKIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogb3JpZ2luKQog
ewogICAgIFJldGFpblB0cjxXZWJTZWN1cml0eU9yaWdpbj4gd2ViU2VjdXJpdHlPcmlnaW4oQWRv
cHROUywgW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5
T3JpZ2luOm9yaWdpbl0pOwpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1w
bGVtZW50YXRpb25DYWNoaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgJKHJldmlzaW9uIDU2NTUzKQorKysgV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgJKHdvcmtp
bmcgY29weSkKQEAgLTczLDYgKzczLDkgQEAgc3RydWN0IFdlYkZyYW1lTG9hZERlbGVnYXRlSW1w
bGVtZW50YXRpbwogICAgIElNUCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZUZ1bmM7CiAg
ICAgSU1QIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGdW5jOwogICAgIElNUCBkaWRSdW5JbnNl
Y3VyZUNvbnRlbnRGdW5jOworI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQorICAgIElNUCBkaWRS
ZWNlaXZlVmlld3BvcnRBcmd1bWVudHNGb3JGcmFtZUZ1bmM7CisjZW5kaWYKIH07CiAKIHN0cnVj
dCBXZWJTY3JpcHREZWJ1Z0RlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSB7CkluZGV4OiBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQkocmV2aXNpb24gNTY1NTMpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQxOCw2ICsxNDE4LDkgQEAgLSAodm9pZClfY2Fj
aGVGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudAogICAgIGNhY2hlLT53aW5kb3dTY3JpcHRPYmpl
Y3RBdmFpbGFibGVGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzp3
aW5kb3dTY3JpcHRPYmplY3RBdmFpbGFibGU6KSk7CiAgICAgY2FjaGUtPmRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnRGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlld0Rp
ZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQ6KSk7CiAgICAgY2FjaGUtPmRpZFJ1bkluc2VjdXJlQ29u
dGVudEZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJ1bklu
c2VjdXJlQ29udGVudDopKTsKKyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKKyAgICBjYWNoZS0+
ZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzRm9yRnJhbWVGdW5jID0gZ2V0TWV0aG9kKGRlbGVn
YXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHM6Zm9yRnJh
bWU6KSk7CisjZW5kaWYKIH0KIAogLSAodm9pZClfY2FjaGVTY3JpcHREZWJ1Z0RlbGVnYXRlSW1w
bGVtZW50YXRpb25zCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld3BvcnRBcmd1bWVu
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld3BvcnRBcmd1bWVu
dHMuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3cG9ydEFyZ3Vt
ZW50cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSBSZXNlYXJjaCBpbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5oPgorCitAY2xhc3MgV2ViRnJhbWU7CitAY2xhc3MgV2ViVmlldzsK
K0BjbGFzcyBXZWJWaWV3cG9ydEFyZ3VtZW50c1ByaXZhdGU7CisKK0BpbnRlcmZhY2UgV2ViVmll
d3BvcnRBcmd1bWVudHMgOiBOU09iamVjdCB7CitAcHJpdmF0ZQorICAgIFdlYlZpZXdwb3J0QXJn
dW1lbnRzUHJpdmF0ZSAqX3ByaXZhdGU7Cit9CisKKy0gKGlkKWluaXRXaXRoV2lkdGg6KGludCl3
aWR0aCBoZWlnaHQ6KGludCloZWlnaHQgdXNlclNjYWxhYmxlOihpbnQpdXNlclNjYWxhYmxlIGlu
aXRpYWxTY2FsZTooZmxvYXQpaW5pdGlhbFNjYWxlIG1pbmltdW1TY2FsZTooZmxvYXQpbWluaW11
bVNjYWxlIG1heGltdW1TY2FsZTooZmxvYXQpbWF4aW11bVNjYWxlOworLSAoaW50KXdpZHRoOwor
LSAoaW50KWhlaWdodDsKKy0gKGludCl1c2VyU2NhbGFibGU7CistIChmbG9hdClpbml0aWFsU2Nh
bGU7CistIChmbG9hdCltaW5pbXVtU2NhbGU7CistIChmbG9hdCltYXhpbXVtU2NhbGU7CisKK0Bl
bmQKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3cG9ydEFyZ3VtZW50cy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld3BvcnRBcmd1bWVudHMubW0JKHJl
dmlzaW9uIDApCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld3BvcnRBcmd1bWVudHMubW0J
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNl
YXJjaCBpbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgIldlYlZpZXdwb3J0
QXJndW1lbnRzLmgiCisKK0BpbnRlcmZhY2UgV2ViVmlld3BvcnRBcmd1bWVudHNQcml2YXRlIDog
TlNPYmplY3QKK3sKK0BwdWJsaWMKKyAgICBpbnQgd2lkdGg7CisgICAgaW50IGhlaWdodDsKKyAg
ICBpbnQgdXNlclNjYWxhYmxlOworICAgIGZsb2F0IGluaXRpYWxTY2FsZTsKKyAgICBmbG9hdCBt
aW5pbXVtU2NhbGU7CisgICAgZmxvYXQgbWF4aW11bVNjYWxlOworfQorCitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBXZWJWaWV3cG9ydEFyZ3VtZW50c1ByaXZhdGUKKworLSAodm9pZClkZWFsbG9j
Cit7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBX
ZWJWaWV3cG9ydEFyZ3VtZW50cworCistIChpZClpbml0V2l0aFdpZHRoOihpbnQpd2lkdGggaGVp
Z2h0OihpbnQpaGVpZ2h0IHVzZXJTY2FsYWJsZTooaW50KXVzZXJTY2FsYWJsZSBpbml0aWFsU2Nh
bGU6KGZsb2F0KWluaXRpYWxTY2FsZSBtaW5pbXVtU2NhbGU6KGZsb2F0KW1pbmltdW1TY2FsZSBt
YXhpbXVtU2NhbGU6KGZsb2F0KW1heGltdW1TY2FsZTsKK3sKKyAgICBfcHJpdmF0ZSA9IFtbV2Vi
Vmlld3BvcnRBcmd1bWVudHNQcml2YXRlIGFsbG9jXSBpbml0XTsKKworICAgIF9wcml2YXRlLT53
aWR0aCA9IHdpZHRoOworICAgIF9wcml2YXRlLT5oZWlnaHQgPSBoZWlnaHQ7CisgICAgX3ByaXZh
dGUtPnVzZXJTY2FsYWJsZSA9IHVzZXJTY2FsYWJsZTsKKyAgICBfcHJpdmF0ZS0+aW5pdGlhbFNj
YWxlID0gaW5pdGlhbFNjYWxlOworICAgIF9wcml2YXRlLT5taW5pbXVtU2NhbGUgPSBtaW5pbXVt
U2NhbGU7CisgICAgX3ByaXZhdGUtPm1heGltdW1TY2FsZSA9IG1heGltdW1TY2FsZTsKKworICAg
IHJldHVybiBzZWxmOworfQorCistIChpbnQpd2lkdGgKK3sKKyAgICByZXR1cm4gX3ByaXZhdGUt
PndpZHRoOworfQorCistIChpbnQpaGVpZ2h0Cit7CisgICAgcmV0dXJuIF9wcml2YXRlLT5oZWln
aHQ7Cit9CisKKy0gKGludCl1c2VyU2NhbGFibGUKK3sKKyAgICByZXR1cm4gX3ByaXZhdGUtPnVz
ZXJTY2FsYWJsZTsKK30KKworLSAoZmxvYXQpaW5pdGlhbFNjYWxlCit7CisgICAgcmV0dXJuIF9w
cml2YXRlLT5pbml0aWFsU2NhbGU7Cit9CisKKy0gKGZsb2F0KW1pbmltdW1TY2FsZQoreworICAg
IHJldHVybiBfcHJpdmF0ZS0+bWluaW11bVNjYWxlOworfQorCistIChmbG9hdCltYXhpbXVtU2Nh
bGUKK3sKKyAgICByZXR1cm4gX3ByaXZhdGUtPm1heGltdW1TY2FsZTsKK30KKworLSAodm9pZClk
ZWFsbG9jCit7CisgICAgW19wcml2YXRlIHJlbGVhc2VdOworICAgIFtzdXBlciBkZWFsbG9jXTsK
K30KKworQGVuZApJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NjU1MykKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wMy0yNSAgRGFuaWVsIEJhdGVz
ICA8ZGJhdGVzQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MzEy
CisKKyAgICAgICAgUGF0Y2ggMiBvZiAyLgorCisgICAgICAgIEltcGxlbWVudHMgRnJhbWVDbGll
bnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzIHRvIHN1cHBvcnQgdGVzdGlu
ZworICAgICAgICB3aXRoIFF0IERSVC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKwogMjAxMC0wMy0yNSAgVG9yIEFybmUg
VmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA1NjU1MykKKysrIFdlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzYsNiArNzYsMTAgQEAKICNpbmNsdWRlIDxRTmV0d29ya1JlcGx5PgogI2luY2x1ZGUgInF3ZWJo
aXN0b3J5X3AuaCIKIAorI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQorI2luY2x1ZGUgIlZpZXdw
b3J0QXJndW1lbnRzLmgiCisjZW5kaWYKKwogc3RhdGljIGJvb2wgZHVtcEZyYW1lTG9hZGVyQ2Fs
bGJhY2tzID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0g
ZmFsc2U7CiAKQEAgLTY4Niw2ICs2OTAsMTYgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aWRSdW5JbnNlY3VyZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKKyNpZiBFTkFCTEUoTUVU
QV9WSUVXUE9SVCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRSZWNlaXZl
Vmlld3BvcnRBcmd1bWVudHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMqKQorewor
ICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCisgICAgICAgIHByaW50ZigiJXMgLSBk
aWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHNGb3JGcmFtZVxuIiwgcVByaW50YWJsZShkcnREZXNj
cmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOworCisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKyNlbmRpZgorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNhdmVWaWV3
U3RhdGVUb0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0pCiB7CiAgICAgUVdlYkhpc3Rv
cnlJdGVtIGhpc3RvcnlJdGVtKG5ldyBRV2ViSGlzdG9yeUl0ZW1Qcml2YXRlKGl0ZW0pKTsKSW5k
ZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAko
cmV2aXNpb24gNTY1NTMpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwogICAgIGNsYXNzIFN0cmluZzsKICAg
ICBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKKyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKKyAgICBz
dHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CisjZW5kaWYKIAogICAgIHN0cnVjdCBMb2FkRXJyb3JS
ZXNldFRva2VuOwogCkBAIC0yMDksNiArMjEyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wpOwog
CisjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQpCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3Vt
ZW50cyopOworI2VuZGlmCisKICAgICAgICAgUVN0cmluZyBjaG9vc2VGaWxlKGNvbnN0IFFTdHJp
bmcmIG9sZEZpbGUpOwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2NTUzKQor
KysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDMtMjUgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNjMxMgorCisgICAgICAgIFBhdGNoIDIgb2YgMi4KKworICAg
ICAgICBJbXBsZW1lbnRzIGRlbGVnYXRlIG1ldGhvZCBkaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVu
dHMgZm9yIE1hYyBEUlQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2Fk
RGVsZWdhdGUubW06CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6ZGlkUmVj
ZWl2ZVZpZXdwb3J0QXJndW1lbnRzOmZvckZyYW1lOl0pOgorCiAyMDEwLTAzLTIyICBKZXN1cyBT
YW5jaGV6LVBhbGVuY2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0JKHJldmlzaW9uIDU2NTUz
KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxMCBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYlNl
Y3VyaXR5T3JpZ2luUHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAorI2lm
IEVOQUJMRShNRVRBX1ZJRVdQT1JUKQorI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdwb3J0QXJndW1l
bnRzLmg+CisjZW5kaWYKKwogQGludGVyZmFjZSBOU1VSTCAoRFJURXh0cmFzKQogLSAoTlNTdHJp
bmcgKilfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0OwogQGVuZApAQCAtMzg1
LDQgKzM4OSwxNCBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkUnVuCiAg
ICAgICAgIHByaW50ZiAoImRpZFJ1bkluc2VjdXJlQ29udGVudFxuIik7CiB9CiAKKyNpZiBFTkFC
TEUoTUVUQV9WSUVXUE9SVCkKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRS
ZWNlaXZlVmlld3BvcnRBcmd1bWVudHM6KFdlYlZpZXdwb3J0QXJndW1lbnRzICopYXJndW1lbnRz
IGZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCit7CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRU
ZXN0Q29udHJvbGxlci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIE5TU3Ry
aW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gZGlkUmVjZWl2
ZVZpZXdwb3J0QXJndW1lbnRzRm9yRnJhbWUiLCBbZnJhbWUgX2RydF9kZXNjcmlwdGlvblN1aXRh
YmxlRm9yVGVzdFJlc3VsdF1dOworICAgICAgICBwcmludGYoIiVzXG4iLCBbc3RyaW5nIFVURjhT
dHJpbmddKTsKKyAgICB9Cit9CisjZW5kaWYKKwogQGVuZApJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTY1
NTMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAxMC0wMy0yNSAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MzEyCisKKyAgICAgICAgUGF0Y2ggMiBvZiAyLgor
CisgICAgICAgIFRlc3RzIHRoYXQgdGhlIEZyYW1lQ2xpZW50IGlzIG5vdGlmaWVkIHdoZW4gdGhl
IHBhZ2UgY29udGFpbnMKKyAgICAgICAgdGhlIHZpZXdwb3J0IG1ldGEgdGFnLiBJbmNsdWRlcyBl
eHBlY3RlZCBmYWlsdXJlIHJlc3VsdHMgZm9yCisgICAgICAgIHBvcnRzIHRoYXQgZG8gbm90IGVu
YWJsZSBNRVRBX1ZJRVdQT1JULgorCisgICAgICAgICogZmFzdC9sb2FkZXIvbWV0YS12aWV3cG9y
dC10YWctZXhwZWN0ZWQudHh0OiBBZGRlZCBleHBlY3RlZCBmYWlsdXJlIHJlc3VsdHMuCisgICAg
ICAgICogZmFzdC9sb2FkZXIvbWV0YS12aWV3cG9ydC10YWcuaHRtbDogQWRkZWQuCisKIDIwMTAt
MDMtMjUgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL21ldGEtdmlld3BvcnQtdGFnLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9tZXRhLXZpZXdwb3J0LXRhZy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9tZXRhLXZpZXdwb3J0LXRhZy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorbWFpbiBmcmFtZSAtIGRp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkSGFuZGxlT25sb2Fk
RXZlbnRzRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKK1RoaXMg
dGVzdHMgdGhhdCB0aGUgRnJhbWVDbGllbnQgaXMgbm90aWZpZWQgd2hlbiB0aGUgcGFnZSBjb250
YWlucyB0aGUgdmlld3BvcnQgbWV0YSB0YWcuIFRoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIGJ5IGhh
bmQuCisKK05vdGUsIHdlIGV4cGVjdCB0aGlzIHRlc3QgdG8gZmFpbCBvbiBhbGwgcG9ydHMgdGhh
dCBoYXZlIG5vdCBjb21waWxlZCB3aXRoIE1FVEFfVklFV1BPUlQgZW5hYmxlZC4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL21ldGEtdmlld3BvcnQtdGFnLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbWV0YS12aWV3cG9ydC10YWcuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL21ldGEtdmlld3BvcnQtdGFnLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRnJhbWVMb2Fk
Q2FsbGJhY2tzKCk7Cit9Cis8L3NjcmlwdD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50
PSJ3aWR0aCA9IDU1MCI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB0aGUg
RnJhbWVDbGllbnQgaXMgbm90aWZpZWQgd2hlbiB0aGUgcGFnZSBjb250YWlucyB0aGUgdmlld3Bv
cnQgbWV0YSB0YWcuIFRoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIGJ5IGhhbmQuPC9wPgorPHA+Tm90
ZSwgd2UgZXhwZWN0IHRoaXMgdGVzdCB0byBmYWlsIG9uIGFsbCBwb3J0cyB0aGF0IGhhdmUgbm90
IGNvbXBpbGVkIHdpdGggTUVUQV9WSUVXUE9SVCBlbmFibGVkLjwvcD4KKzwvYm9keT4KKzwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51752</attachid>
            <date>2010-03-26 09:38:09 -0700</date>
            <delta_ts>2010-03-26 09:48:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Bug36312_032610.patch</filename>
            <type>text/plain</type>
            <size>22733</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjYyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTAtMDMtMjYgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjMxMgorCisgICAgICAgIEFkZHMg
c3VwcG9ydCBmb3IgdGhlIHZpZXdwb3J0IG1ldGEgdGFnLiBUaGUgY29kZSBpcyBsYXJnZWx5IGRl
cml2ZWQgaW4gd2hvbGUKKyAgICAgICAgb3IgaW4gcGFydCBmcm9tIHRoZSBXZWJDb3JlLTUyOC4x
NSBzb3VyY2UgcHVibGlzaGVkIGFzIHBhcnQgb2YgdGhlIGlQaG9uZSAzLjEuMworICAgICAgICBz
b3VyY2UgY29kZSA8aHR0cDovL3d3dy5vcGVuc291cmNlLmFwcGxlLmNvbS9zb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLTUyOC4xNS8+LgorCisgICAgICAgICogQW5kcm9pZC5tazogQWRkZWQgZmlsZSBW
aWV3cG9ydEFyZ3VtZW50cy5jcHAuCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZGVkIGZp
bGVzIFZpZXdwb3J0QXJndW1lbnRzLmNwcCBhbmQgVmlld3BvcnRBcmd1bWVudHMuaC4KKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBEaXR0by4K
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTZXBhcmF0b3IpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNzQXJndW1lbnRzKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0KTogQWRkZWQuCisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRWaWV3cG9ydEZlYXR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6dmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjp2aWV3cG9ydEVycm9yTWVzc2FnZUxldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9y
dFZpZXdwb3J0V2FybmluZyk6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzOjopOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZpZXdwb3J0
QXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpoYXNDdXN0
b21Bcmd1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50Ojpwcm9jZXNzKTogTW9kaWZpZWQgdG8gY2FsbCBE
b2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0LgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3Vt
ZW50cyk6IEFkZGVkLgorCiAyMDEwLTAzLTI2ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5v
a2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KSW5kZXg6IFdl
YkNvcmUvQW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQubWsJKHJldmlz
aW9uIDU2NTUzKQorKysgV2ViQ29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMs
NiArMTczLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJZG9t
L1RyZWVXYWxrZXIuY3BwIFwKIAlkb20vVUlFdmVudC5jcHAgXAogCWRvbS9VSUV2ZW50V2l0aEtl
eVN0YXRlLmNwcCBcCisgICAgICAgIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAgXAogCWRvbS9X
ZWJLaXRBbmltYXRpb25FdmVudC5jcHAgXAogCWRvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3Bw
IFwKIAlkb20vV2hlZWxFdmVudC5jcHAgXApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA1NjU1MykKKysr
IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTg2NSw2ICs4NjUsOCBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvZG9tL1VJRXZlbnQuaCBcCiAJV2ViQ29y
ZS9kb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5jcHAgXAogCVdlYkNvcmUvZG9tL1VJRXZlbnRXaXRo
S2V5U3RhdGUuaCBcCisgICAgICAgIFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcCBc
CisgICAgICAgIFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmggXAogCVdlYkNvcmUvZG9t
L1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCBcCiAJV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0aW9u
RXZlbnQuaCBcCiAJV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCBcCkluZGV4
OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lw
aQkocmV2aXNpb24gNTY1NTMpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMTIyNiw2ICsxMjI2LDggQEAKICAgICAgICAgICAgICdkb20vVUlFdmVudC5oJywKICAg
ICAgICAgICAgICdkb20vVUlFdmVudFdpdGhLZXlTdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ2Rv
bS9VSUV2ZW50V2l0aEtleVN0YXRlLmgnLAorICAgICAgICAgICAgJ2RvbS9WaWV3cG9ydEFyZ3Vt
ZW50cy5jcHAnLAorICAgICAgICAgICAgJ2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oJywKICAgICAg
ICAgICAgICdkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20v
V2ViS2l0QW5pbWF0aW9uRXZlbnQuaCcsCiAgICAgICAgICAgICAnZG9tL1dlYktpdFRyYW5zaXRp
b25FdmVudC5jcHAnLApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA1NjU1MykKKysrIFdlYkNvcmUvV2ViQ29yZS5w
cm8JKHdvcmtpbmcgY29weSkKQEAgLTUzMiw2ICs1MzIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBk
b20vVHJlZVdhbGtlci5jcHAgXAogICAgIGRvbS9VSUV2ZW50LmNwcCBcCiAgICAgZG9tL1VJRXZl
bnRXaXRoS2V5U3RhdGUuY3BwIFwKKyAgICBkb20vVmlld3BvcnRBcmd1bWVudHMuY3BwIFwKICAg
ICBkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIFwKICAgICBkb20vV2ViS2l0VHJhbnNpdGlv
bkV2ZW50LmNwcCBcCiAgICAgZG9tL1doZWVsRXZlbnQuY3BwIFwKQEAgLTEyNDMsNiArMTI0NCw3
IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9UcmVlV2Fsa2VyLmggXAogICAgIGRvbS9VSUV2ZW50
LmggXAogICAgIGRvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmggXAorICAgIGRvbS9WaWV3cG9ydEFy
Z3VtZW50cy5oIFwKICAgICBkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBcCiAgICAgZG9tL1dl
YktpdFRyYW5zaXRpb25FdmVudC5oIFwKICAgICBkb20vV2hlZWxFdmVudC5oIFwKSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNTY1NTMpCisrKyBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQ3
Myw2ICsyOTQ3MywxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxkb21cVmlld3BvcnRBcmd1bWVudHMuY3BwIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFZpZXdwb3J0QXJndW1l
bnRzLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlxkb21cV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0K
SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA1NjU1MykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC00Njk4LDYgKzQ2OTgsOCBAQAogCQlDRTRDMDBFNDEwRjZGN0JBMDBD
QTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTRDMDBFMzEwRjZGN0JBMDBDQTM4RjUgLyogSFRNTE5v
U2NyaXB0RWxlbWVudC5jcHAgKi87IH07CiAJCUNFNEMwMEU2MTBGNkY3QzEwMENBMzhGNSAvKiBI
VE1MTm9TY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTRDMDBFNTEwRjZGN0MxMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVu
dC5oICovOyB9OwogCQlDRTU0RkQzODEwMTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0U291cmNlUHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
NTRGRDM3MTAxNkQ5QTYwMDhCNDRDOCAvKiBTY3JpcHRTb3VyY2VQcm92aWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFNzE5OTU0MTE1QzEy
MDMwMERBRTc4OSAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3MTk5NTIxMTVDMTIwMzAwREFFNzg5IC8qIFZpZXdw
b3J0QXJndW1lbnRzLmggKi87IH07CisJCUNFNzE5OTU1MTE1QzEyMDMwMERBRTc4OSAvKiBWaWV3
cG9ydEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRTcxOTk1MzExNUMxMjAzMDBEQUU3ODkgLyogVmlld3BvcnRBcmd1bWVudHMuY3Bw
ICovOyB9OwogCQlEMDFBMjdBRDEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMDFBMjdB
QjEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5jcHAgKi87IH07CiAJCUQwMUEy
N0FFMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMDFBMjdBQzEwQzlCRkQ4MDAwMjZBNDIg
LyogU3BhY2VTcGxpdFN0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUQwNUNFRDI5MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0Nv
bW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RDA1Q0VEMjcwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5jcHAgKi87IH07
CkBAIC0xMDA0NSw2ICsxMDA0Nyw4IEBACiAJCUNFNEMwMEUzMTBGNkY3QkEwMENBMzhGNSAvKiBI
VE1MTm9TY3JpcHRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTRDMDBFNTEwRjZGN0MxMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MTm9TY3JpcHRFbGVtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTRGRDM3MTAxNkQ5QTYwMDhCNDRDOCAvKiBTY3Jp
cHRTb3VyY2VQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jp
cHRTb3VyY2VQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTcxOTk1
MjExNUMxMjAzMDBEQUU3ODkgLyogVmlld3BvcnRBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVmlld3BvcnRBcmd1bWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0U3MTk5NTMxMTVDMTIwMzAwREFFNzg5IC8qIFZpZXdwb3J0QXJndW1lbnRz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZXdwb3J0QXJndW1l
bnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAxQTI3QUIxMEM5QkZEODAw
MDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3BhY2VTcGxpdFN0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQwMUEyN0FDMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwYWNlU3BsaXRTdHJpbmcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA1Q0VEMjcwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1h
dEJsb2NrQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Rm9ybWF0QmxvY2tDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2
MjExLDYgKzE2MjE1LDggQEAKIAkJCQkxNDFCOTRFRTA5RUM0MjVBMDAwRTk0MTMgLyogVUlFdmVu
dC5pZGwgKi8sCiAJCQkJOTMzNTRBM0IwQjI0RjhDOTAwM0Y2REVBIC8qIFVJRXZlbnRXaXRoS2V5
U3RhdGUuY3BwICovLAogCQkJCTg1MDMxQjM5MEE0NEVGQzcwMEY5OTJFMCAvKiBVSUV2ZW50V2l0
aEtleVN0YXRlLmggKi8sCisJCQkJQ0U3MTk5NTMxMTVDMTIwMzAwREFFNzg5IC8qIFZpZXdwb3J0
QXJndW1lbnRzLmNwcCAqLywKKwkJCQlDRTcxOTk1MjExNUMxMjAzMDBEQUU3ODkgLyogVmlld3Bv
cnRBcmd1bWVudHMuaCAqLywKIAkJCQkzMUMwRkYxQjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0
QW5pbWF0aW9uRXZlbnQuY3BwICovLAogCQkJCTMxQzBGRjFDMEU0Q0VCNkUwMDdENkZFNSAvKiBX
ZWJLaXRBbmltYXRpb25FdmVudC5oICovLAogCQkJCTMxQzBGRjFEMEU0Q0VCNkUwMDdENkZFNSAv
KiBXZWJLaXRBbmltYXRpb25FdmVudC5pZGwgKi8sCkBAIC0xODc2NSw2ICsxODc3MSw3IEBACiAJ
CQkJQTUxM0IzRDcxMTRCMTY2NjAwMUM0MjlCIC8qIEtleUV2ZW50Q29jb2EuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTYyQ0QzMjVBMTE1N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTQ3NzhCODAxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUNFNzE5OTU0MTE1QzEyMDMwMERBRTc4OSAvKiBWaWV3cG9y
dEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDk4MCw2ICsyMDk4Nyw3IEBACiAJCQkJ
QTUxM0IzRDgxMTRCMTY2QTAwMUM0MjlCIC8qIEtleUV2ZW50Q29jb2EubW0gaW4gU291cmNlcyAq
LywKIAkJCQk2MkNEMzI1OTExNTdFNTdDMDA2M0IwQTcgLyogQ3VzdG9tRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTQ3NzhCN0YxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0U3MTk5NTUxMTVDMTIwMzAwREFFNzg5IC8qIFZpZXdw
b3J0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24g
NTY1NTMpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
Nyw2ICsxMjcsNyBAQAogI2luY2x1ZGUgIlRyZWVXYWxrZXIuaCIKICNpbmNsdWRlICJVSUV2ZW50
LmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgiCisjaW5jbHVkZSAiVmlld3Bv
cnRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJXZWJLaXRBbmltYXRpb25FdmVudC5oIgogI2luY2x1
ZGUgIldlYktpdFRyYW5zaXRpb25FdmVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKQEAg
LTIyODIsNiArMjI4Myw3OCBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KGNvbnN0
IFN0CiAgICAgfQogfQogCisvLyBUaG91Z2ggaXNzcGFjZSgpIGNvbnNpZGVycyBcdCBhbmQgXHYg
dG8gYmUgd2hpdGVzcGFjZSwgV2luIElFIGRvZXNuJ3QuCitzdGF0aWMgYm9vbCBpc1NlcGFyYXRv
cihVQ2hhciBjKQoreworICAgIHJldHVybiBjID09ICcgJyB8fCBjID09ICdcdCcgfHwgYyA9PSAn
XG4nIHx8IGMgPT0gJ1xyJyB8fCBjID09ICc9JyB8fCBjID09ICcsJyB8fCBjID09ICdcMCc7Cit9
CisKK3ZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NBcmd1bWVudHMoY29uc3QgU3RyaW5nJiBmZWF0dXJl
cywgdm9pZCogZGF0YSwgQXJndW1lbnRzQ2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgLy8gVHJl
YWQgbGlnaHRseSBpbiB0aGlzIGNvZGUgLS0gaXQgd2FzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0
byBtaW1pYyBXaW4gSUUncyBwYXJzaW5nIGJlaGF2aW9yLgorICAgIGludCBrZXlCZWdpbiwga2V5
RW5kOworICAgIGludCB2YWx1ZUJlZ2luLCB2YWx1ZUVuZDsKKworICAgIGludCBpID0gMDsKKyAg
ICBpbnQgbGVuZ3RoID0gZmVhdHVyZXMubGVuZ3RoKCk7CisgICAgU3RyaW5nIGJ1ZmZlciA9IGZl
YXR1cmVzLmxvd2VyKCk7CisgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAgLy8gc2tp
cCB0byBmaXJzdCBub24tc2VwYXJhdG9yLCBidXQgZG9uJ3Qgc2tpcCBwYXN0IHRoZSBlbmQgb2Yg
dGhlIHN0cmluZworICAgICAgICB3aGlsZSAoaXNTZXBhcmF0b3IoYnVmZmVyW2ldKSkgeworICAg
ICAgICAgICAgaWYgKGkgPj0gbGVuZ3RoKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIGtleUJlZ2luID0gaTsKKworICAgICAgICAv
LyBza2lwIHRvIGZpcnN0IHNlcGFyYXRvcgorICAgICAgICB3aGlsZSAoIWlzU2VwYXJhdG9yKGJ1
ZmZlcltpXSkpCisgICAgICAgICAgICBpKys7CisgICAgICAgIGtleUVuZCA9IGk7CisKKyAgICAg
ICAgLy8gc2tpcCB0byBmaXJzdCAnPScsIGJ1dCBkb24ndCBza2lwIHBhc3QgYSAnLCcgb3IgdGhl
IGVuZCBvZiB0aGUgc3RyaW5nCisgICAgICAgIHdoaWxlIChidWZmZXJbaV0gIT0gJz0nKSB7Cisg
ICAgICAgICAgICBpZiAoYnVmZmVyW2ldID09ICcsJyB8fCBpID49IGxlbmd0aCkKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IHNraXAgdG8gZmlyc3Qgbm9uLXNlcGFyYXRvciwgYnV0IGRvbid0IHNraXAgcGFzdCBhICcsJyBv
ciB0aGUgZW5kIG9mIHRoZSBzdHJpbmcKKyAgICAgICAgd2hpbGUgKGlzU2VwYXJhdG9yKGJ1ZmZl
cltpXSkpIHsKKyAgICAgICAgICAgIGlmIChidWZmZXJbaV0gPT0gJywnIHx8IGkgPj0gbGVuZ3Ro
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9Cisg
ICAgICAgIHZhbHVlQmVnaW4gPSBpOworCisgICAgICAgIC8vIHNraXAgdG8gZmlyc3Qgc2VwYXJh
dG9yCisgICAgICAgIHdoaWxlICghaXNTZXBhcmF0b3IoYnVmZmVyW2ldKSkKKyAgICAgICAgICAg
IGkrKzsKKyAgICAgICAgdmFsdWVFbmQgPSBpOworCisgICAgICAgIEFTU0VSVChpIDw9IGxlbmd0
aCk7CisKKyAgICAgICAgU3RyaW5nIGtleVN0cmluZyA9IGJ1ZmZlci5zdWJzdHJpbmcoa2V5QmVn
aW4sIGtleUVuZCAtIGtleUJlZ2luKTsKKyAgICAgICAgU3RyaW5nIHZhbHVlU3RyaW5nID0gYnVm
ZmVyLnN1YnN0cmluZyh2YWx1ZUJlZ2luLCB2YWx1ZUVuZCAtIHZhbHVlQmVnaW4pOworICAgICAg
ICBjYWxsYmFjayhrZXlTdHJpbmcsIHZhbHVlU3RyaW5nLCB0aGlzLCBkYXRhKTsKKyAgICB9Cit9
CisKK3ZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NWaWV3cG9ydChjb25zdCBTdHJpbmcmIGZlYXR1cmVz
KQoreworICAgIEFTU0VSVCghZmVhdHVyZXMuaXNOdWxsKCkpOworCisgICAgRnJhbWUgKmZyYW1l
ID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAg
ICBWaWV3cG9ydEFyZ3VtZW50cyBhcmd1bWVudHM7CisgICAgcHJvY2Vzc0FyZ3VtZW50cyhmZWF0
dXJlcywgKHZvaWQqKSZhcmd1bWVudHMsICZzZXRWaWV3cG9ydEZlYXR1cmUpOworCisgICAgaWYg
KGZyYW1lLT5wYWdlKCkpCisgICAgICAgIGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQo
KS0+ZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKGZyYW1lLCBhcmd1bWVudHMpOworfQorCiBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIERvY3VtZW50OjpwcmVwYXJlTW91c2VFdmVudChj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSW50UG9pbnQmIGRvY3VtZW50UG9p
bnQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiB7CiAgICAgQVNTRVJUKCFyZW5k
ZXJlcigpIHx8IHJlbmRlcmVyKCktPmlzUmVuZGVyVmlldygpKTsKSW5kZXg6IFdlYkNvcmUvZG9t
L0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNp
b24gNTY1NTMpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
OTgsNyArNjk4LDggQEAgcHVibGljOgogICAgICAqIEBwYXJhbSBjb250ZW50IFRoZSBoZWFkZXIg
dmFsdWUgKHZhbHVlIG9mIHRoZSBtZXRhIHRhZydzICJjb250ZW50IiBhdHRyaWJ1dGUpCiAgICAg
ICovCiAgICAgdm9pZCBwcm9jZXNzSHR0cEVxdWl2KGNvbnN0IFN0cmluZyYgZXF1aXYsIGNvbnN0
IFN0cmluZyYgY29udGVudCk7Ci0gICAgCisgICAgdm9pZCBwcm9jZXNzVmlld3BvcnQoY29uc3Qg
U3RyaW5nJiBmZWF0dXJlcyk7CisKICAgICAvLyBSZXR1cm5zIHRoZSBvd25pbmcgZWxlbWVudCBp
biB0aGUgcGFyZW50IGRvY3VtZW50LgogICAgIC8vIFJldHVybnMgMCBpZiB0aGlzIGlzIHRoZSB0
b3AgbGV2ZWwgZG9jdW1lbnQuCiAgICAgRWxlbWVudCogb3duZXJFbGVtZW50KCkgY29uc3Q7CkBA
IC05NzIsNiArOTczLDEwIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNsZWFyWE1MVmVyc2lvbigp
IHsgbV94bWxWZXJzaW9uID0gU3RyaW5nKCk7IH0KIAogcHJpdmF0ZToKKworICAgIHR5cGVkZWYg
dm9pZCAoKkFyZ3VtZW50c0NhbGxiYWNrKShjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3Qg
U3RyaW5nJiB2YWx1ZVN0cmluZywgRG9jdW1lbnQqLCB2b2lkKiBkYXRhKTsKKyAgICB2b2lkIHBy
b2Nlc3NBcmd1bWVudHMoY29uc3QgU3RyaW5nJiBmZWF0dXJlcywgdm9pZCogZGF0YSwgQXJndW1l
bnRzQ2FsbGJhY2spOworCiAgICAgdmlydHVhbCBib29sIGlzRG9jdW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRldGVybWluZVBhcnNlTW9kZSgpIHsgfQpJbmRleDogV2ViQ29yZS9kb20vVmll
d3BvcnRBcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJn
dW1lbnRzLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBB
bnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwMSBE
aXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNiBBbGV4
ZXkgUHJvc2t1cnlha292IChhcEB3ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOCBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNp
bmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2lu
Y2x1ZGUgIlRva2VuaXplci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgc2V0Vmll
d3BvcnRGZWF0dXJlKGNvbnN0IFN0cmluZyYga2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVl
U3RyaW5nLCBEb2N1bWVudCogZG9jdW1lbnQsIHZvaWQqIGRhdGEpCit7CisgICAgVmlld3BvcnRB
cmd1bWVudHMqIGFyZ3VtZW50cyA9IHN0YXRpY19jYXN0PFZpZXdwb3J0QXJndW1lbnRzKj4oZGF0
YSk7CisgICAgZmxvYXQgdmFsdWUgPSBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVVbmRlZmluZWQ7
CisgICAgYm9vbCBkaWRVc2VDb25zdGFudHMgPSBmYWxzZTsKKworICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZSh2YWx1ZVN0cmluZywgInllcyIpKQorICAgICAgICB2YWx1ZSA9IDE7CisgICAgZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWVTdHJpbmcsICJkZXZpY2Utd2lkdGgiKSkgewor
ICAgICAgICBkaWRVc2VDb25zdGFudHMgPSB0cnVlOworICAgICAgICBpZiAoZG9jdW1lbnQtPnBh
Z2UoKSkKKyAgICAgICAgICAgIHZhbHVlID0gZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCktPndp
bmRvd1JlY3QoKS53aWR0aCgpOworICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFs
dWVTdHJpbmcsICJkZXZpY2UtaGVpZ2h0IikpIHsKKyAgICAgICAgZGlkVXNlQ29uc3RhbnRzID0g
dHJ1ZTsKKyAgICAgICAgaWYgKGRvY3VtZW50LT5wYWdlKCkpCisgICAgICAgICAgICB2YWx1ZSA9
IGRvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLT53aW5kb3dSZWN0KCkuaGVpZ2h0KCk7CisgICAg
fSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZVN0cmluZywgImRlZmF1bHQiKSkgLy8g
VGhpcyBhbGxvd3MgdXMgdG8gZGlzdGluZ3Vpc2ggdGhlIG9taXNzaW9uIG9mIGEga2V5IGZyb20g
YXNraW5nIGZvciB0aGUgZGVmYXVsdCB2YWx1ZS4KKyAgICAgICAgdmFsdWUgPSAtMjsKKyAgICBl
bHNlIGlmICh2YWx1ZVN0cmluZy5sZW5ndGgoKSAhPSAwKSAvLyBsaXN0aW5nIGEga2V5IHdpdGgg
bm8gdmFsdWUgaXMgc2hvcnRoYW5kIGZvciBrZXk9ZGVmYXVsdAorICAgICAgICB2YWx1ZSA9IHZh
bHVlU3RyaW5nLnRvRmxvYXQoKTsKKworICAgIGlmIChrZXlTdHJpbmcgPT0gImluaXRpYWwtc2Nh
bGUiKQorICAgICAgICBhcmd1bWVudHMtPmluaXRpYWxTY2FsZSA9IHZhbHVlOworICAgIGVsc2Ug
aWYgKGtleVN0cmluZyA9PSAibWluaW11bS1zY2FsZSIpCisgICAgICAgIGFyZ3VtZW50cy0+bWlu
aW11bVNjYWxlID0gdmFsdWU7CisgICAgZWxzZSBpZiAoa2V5U3RyaW5nID09ICJtYXhpbXVtLXNj
YWxlIikgeworICAgICAgICBhcmd1bWVudHMtPm1heGltdW1TY2FsZSA9IHZhbHVlOworICAgICAg
ICBpZiAodmFsdWUgPiAxMC4wKQorICAgICAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRv
Y3VtZW50LCBNYXhpbXVtU2NhbGVUb29MYXJnZUVycm9yLCBrZXlTdHJpbmcpOworICAgIH0gZWxz
ZSBpZiAoa2V5U3RyaW5nID09ICJ1c2VyLXNjYWxhYmxlIikKKyAgICAgICAgYXJndW1lbnRzLT51
c2VyU2NhbGFibGUgPSB2YWx1ZTsKKyAgICBlbHNlIGlmIChrZXlTdHJpbmcgPT0gIndpZHRoIikg
eworICAgICAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKSAmJiB2YWx1ZSA9PSBkb2N1bWVudC0+cGFn
ZSgpLT5jaHJvbWUoKS0+d2luZG93UmVjdCgpLndpZHRoKCkgJiYgIWRpZFVzZUNvbnN0YW50cykK
KyAgICAgICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgRGV2aWNlV2lkdGhT
aG91bGRCZVVzZWRXYXJuaW5nLCBrZXlTdHJpbmcpOworICAgICAgICBlbHNlIGlmIChkb2N1bWVu
dC0+cGFnZSgpICYmIHZhbHVlID09IGRvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLT53aW5kb3dS
ZWN0KCkuaGVpZ2h0KCkgJiYgIWRpZFVzZUNvbnN0YW50cykKKyAgICAgICAgICAgIHJlcG9ydFZp
ZXdwb3J0V2FybmluZyhkb2N1bWVudCwgRGV2aWNlSGVpZ2h0U2hvdWxkQmVVc2VkV2FybmluZywg
a2V5U3RyaW5nKTsKKworICAgICAgICBhcmd1bWVudHMtPndpZHRoID0gdmFsdWU7CisgICAgfSBl
bHNlIGlmIChrZXlTdHJpbmcgPT0gImhlaWdodCIpIHsKKyAgICAgICAgaWYgKGRvY3VtZW50LT5w
YWdlKCkgJiYgdmFsdWUgPT0gZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCktPndpbmRvd1JlY3Qo
KS53aWR0aCgpICYmICFkaWRVc2VDb25zdGFudHMpCisgICAgICAgICAgICByZXBvcnRWaWV3cG9y
dFdhcm5pbmcoZG9jdW1lbnQsIERldmljZVdpZHRoU2hvdWxkQmVVc2VkV2FybmluZywga2V5U3Ry
aW5nKTsKKyAgICAgICAgZWxzZSBpZiAoZG9jdW1lbnQtPnBhZ2UoKSAmJiB2YWx1ZSA9PSBkb2N1
bWVudC0+cGFnZSgpLT5jaHJvbWUoKS0+d2luZG93UmVjdCgpLmhlaWdodCgpICYmICFkaWRVc2VD
b25zdGFudHMpCisgICAgICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQsIERl
dmljZUhlaWdodFNob3VsZEJlVXNlZFdhcm5pbmcsIGtleVN0cmluZyk7CisgICAgICAgIAorICAg
ICAgICBhcmd1bWVudHMtPmhlaWdodCA9IHZhbHVlOworICAgIH0gZWxzZQorICAgICAgICByZXBv
cnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQsIFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRF
cnJvciwga2V5U3RyaW5nKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIHZpZXdwb3J0RXJyb3JN
ZXNzYWdlVGVtcGxhdGUoVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlKQoreworICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBjb25zdCBlcnJvcnNbXSA9IHsgCisgICAgICAgICJWaWV3cG9ydCB3aWR0
aCBvciBoZWlnaHQgc2V0IHRvIHBoeXNpY2FsIGRldmljZSB3aWR0aCwgdHJ5IHVzaW5nIFwiZGV2
aWNlLXdpZHRoXCIgY29uc3RhbnQgaW5zdGVhZCBmb3IgZnV0dXJlIGNvbXBhdGliaWxpdHkuIiwK
KyAgICAgICAgIlZpZXdwb3J0IGhlaWdodCBvciBoZWlnaHQgc2V0IHRvIHBoeXNpY2FsIGRldmlj
ZSBoZWlnaHQsIHRyeSB1c2luZyBcImRldmljZS1oZWlnaHRcIiBjb25zdGFudCBpbnN0ZWFkIGZv
ciBmdXR1cmUgY29tcGF0aWJpbGl0eS4iLAorICAgICAgICAiVmlld3BvcnQgYXJndW1lbnQgXCIl
cmVwbGFjZW1lbnRcIiBub3QgcmVjb2duaXplZC4gQ29udGVudCBpZ25vcmVkLiIsCisgICAgICAg
ICJWaWV3cG9ydCBtYXhpbXVtLXNjYWxlIGNhbm5vdCBiZSBsYXJnZXIgdGhhbiAxMC4wLiAgVGhl
IG1heGltdW0tc2NhbGUgd2lsbCBiZSBzZXQgdG8gMTAuMC4iCisgICAgfTsKKworICAgIHJldHVy
biBlcnJvcnNbZXJyb3JDb2RlXTsKK30KKworc3RhdGljIE1lc3NhZ2VMZXZlbCB2aWV3cG9ydEVy
cm9yTWVzc2FnZUxldmVsKFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSkKK3sKKyAgICByZXR1
cm4gZXJyb3JDb2RlID09IFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRFcnJvciB8fCBlcnJv
ckNvZGUgPT0gTWF4aW11bVNjYWxlVG9vTGFyZ2VFcnJvciA/IEVycm9yTWVzc2FnZUxldmVsIDog
VGlwTWVzc2FnZUxldmVsOworfQorCit2b2lkIHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1bWVu
dCogZG9jdW1lbnQsIFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudCkKK3sKKyAgICBUb2tlbml6ZXIqIHRva2VuaXplciA9IGRvY3VtZW50LT50b2tl
bml6ZXIoKTsKKworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOworICAgIGlm
ICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBtZXNzYWdlID0gdmlld3Bv
cnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShlcnJvckNvZGUpOworICAgIG1lc3NhZ2UucmVwbGFjZSgi
JXJlcGxhY2VtZW50IiwgcmVwbGFjZW1lbnQpOworCisgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5j
b25zb2xlKCktPmFkZE1lc3NhZ2UoSFRNTE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCB2
aWV3cG9ydEVycm9yTWVzc2FnZUxldmVsKGVycm9yQ29kZSksIG1lc3NhZ2UsIHRva2VuaXplciA/
IHRva2VuaXplci0+bGluZU51bWJlcigpICsgMSA6IDAsIGRvY3VtZW50LT51cmwoKS5zdHJpbmco
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL1ZpZXdw
b3J0QXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVu
dHMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFy
cyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2
aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxs
ZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1
cnlha292IChhcEB3ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDov
L3d3dy50b3JjaG1vYmlsZS5jb20vKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBWaWV3cG9ydEFyZ3VtZW50c19oCisj
ZGVmaW5lIFZpZXdwb3J0QXJndW1lbnRzX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBEb2N1bWVudDsKK2NsYXNzIFN0cmluZzsKKworZW51bSBWaWV3cG9ydEVycm9yQ29kZSB7Cisg
ICAgRGV2aWNlV2lkdGhTaG91bGRCZVVzZWRXYXJuaW5nLAorICAgIERldmljZUhlaWdodFNob3Vs
ZEJlVXNlZFdhcm5pbmcsCisgICAgVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudEVycm9yLAor
ICAgIE1heGltdW1TY2FsZVRvb0xhcmdlRXJyb3IKK307CisKK3N0cnVjdCBWaWV3cG9ydEFyZ3Vt
ZW50cyB7CisKKyAgICBlbnVtIHsgVmFsdWVVbmRlZmluZWQgPSAtMSB9OworCisgICAgVmlld3Bv
cnRBcmd1bWVudHMoKQorICAgICAgICA6IGluaXRpYWxTY2FsZShWYWx1ZVVuZGVmaW5lZCkKKyAg
ICAgICAgLCBtaW5pbXVtU2NhbGUoVmFsdWVVbmRlZmluZWQpCisgICAgICAgICwgbWF4aW11bVNj
YWxlKFZhbHVlVW5kZWZpbmVkKQorICAgICAgICAsIHdpZHRoKFZhbHVlVW5kZWZpbmVkKQorICAg
ICAgICAsIGhlaWdodChWYWx1ZVVuZGVmaW5lZCkKKyAgICAgICAgLCB1c2VyU2NhbGFibGUoVmFs
dWVVbmRlZmluZWQpCisgICAgeworICAgIH0KKworICAgIGZsb2F0IGluaXRpYWxTY2FsZTsKKyAg
ICBmbG9hdCBtaW5pbXVtU2NhbGU7CisgICAgZmxvYXQgbWF4aW11bVNjYWxlOworICAgIGZsb2F0
IHdpZHRoOworICAgIGZsb2F0IGhlaWdodDsKKworICAgIGZsb2F0IHVzZXJTY2FsYWJsZTsKKwor
ICAgIGJvb2wgaGFzQ3VzdG9tQXJndW1lbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IGluaXRpYWxTY2FsZSAhPSBWYWx1ZVVuZGVmaW5lZCB8fCBtaW5pbXVtU2NhbGUgIT0gVmFsdWVV
bmRlZmluZWQgfHwgbWF4aW11bVNjYWxlICE9IFZhbHVlVW5kZWZpbmVkIHx8IHdpZHRoICE9IFZh
bHVlVW5kZWZpbmVkIHx8IGhlaWdodCAhPSBWYWx1ZVVuZGVmaW5lZCB8fCB1c2VyU2NhbGFibGUg
IT0gVmFsdWVVbmRlZmluZWQ7CisgICAgfQorfTsKKwordm9pZCBzZXRWaWV3cG9ydEZlYXR1cmUo
Y29uc3QgU3RyaW5nJiBrZXlTdHJpbmcsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIERvY3Vt
ZW50Kiwgdm9pZCogZGF0YSk7Cit2b2lkIHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1bWVudCos
IFZpZXdwb3J0RXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVmlld3BvcnRBcmd1bWVudHNfaApJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxNZXRhRWxlbWVudC5jcHAJKHJldmlzaW9uIDU2NTUzKQorKysgV2ViQ29yZS9odG1s
L0hUTUxNZXRhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDkgKzYzLDE1IEBAIHZv
aWQgSFRNTE1ldGFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWUKIAogdm9pZCBIVE1MTWV0YUVs
ZW1lbnQ6OnByb2Nlc3MoKQogeworICAgIGlmICghaW5Eb2N1bWVudCgpIHx8IG1fY29udGVudC5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5h
bWUoKSwgInZpZXdwb3J0IikpCisgICAgICAgIGRvY3VtZW50KCktPnByb2Nlc3NWaWV3cG9ydCht
X2NvbnRlbnQpOworCiAgICAgLy8gR2V0IHRoZSBkb2N1bWVudCB0byBwcm9jZXNzIHRoZSB0YWcs
IGJ1dCBvbmx5IGlmIHdlJ3JlIGFjdHVhbGx5IHBhcnQgb2YgRE9NIHRyZWUgKGNoYW5naW5nIGEg
bWV0YSB0YWcgd2hpbGUKICAgICAvLyBpdCdzIG5vdCBpbiB0aGUgdHJlZSBzaG91bGRuJ3QgaGF2
ZSBhbnkgZWZmZWN0IG9uIHRoZSBkb2N1bWVudCkKLSAgICBpZiAoaW5Eb2N1bWVudCgpICYmICFt
X2VxdWl2LmlzTnVsbCgpICYmICFtX2NvbnRlbnQuaXNOdWxsKCkpCisgICAgaWYgKCFtX2VxdWl2
LmlzTnVsbCgpKQogICAgICAgICBkb2N1bWVudCgpLT5wcm9jZXNzSHR0cEVxdWl2KG1fZXF1aXYs
IG1fY29udGVudCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDU2NTUzKQor
KysgV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBXaWRnZXQ7CiAKICAgICBzdHJ1
Y3QgRnJhbWVMb2FkUmVxdWVzdDsKKyAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CiAgICAg
c3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQpAQCAtMTQ1LDYgKzE0Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgc2V0VG9vbFRpcChjb25zdCBTdHJpbmcmLCBUZXh0RGlyZWN0aW9uKSA9IDA7CiAK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyhGcmFtZSos
IGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJikgY29uc3QgeyB9CisKICAgICAgICAgdmlydHVhbCB2
b2lkIHByaW50KEZyYW1lKikgPSAwOwogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51753</attachid>
            <date>2010-03-26 09:48:05 -0700</date>
            <delta_ts>2010-03-26 10:48:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Bug36312_032610_1.patch</filename>
            <type>text/plain</type>
            <size>22707</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjYyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTAtMDMtMjYgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjMxMgorCisgICAgICAgIEFkZHMg
c3VwcG9ydCBmb3IgdGhlIHZpZXdwb3J0IG1ldGEgdGFnLiBUaGUgY29kZSBpcyBsYXJnZWx5IGRl
cml2ZWQgaW4gd2hvbGUKKyAgICAgICAgb3IgaW4gcGFydCBmcm9tIHRoZSBXZWJDb3JlLTUyOC4x
NSBzb3VyY2UgcHVibGlzaGVkIGFzIHBhcnQgb2YgdGhlIGlQaG9uZSAzLjEuMworICAgICAgICBz
b3VyY2UgY29kZSA8aHR0cDovL3d3dy5vcGVuc291cmNlLmFwcGxlLmNvbS9zb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLTUyOC4xNS8+LgorCisgICAgICAgICogQW5kcm9pZC5tazogQWRkZWQgZmlsZSBW
aWV3cG9ydEFyZ3VtZW50cy5jcHAuCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZGVkIGZp
bGVzIFZpZXdwb3J0QXJndW1lbnRzLmNwcCBhbmQgVmlld3BvcnRBcmd1bWVudHMuaC4KKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBEaXR0by4K
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTZXBhcmF0b3IpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNzQXJndW1lbnRzKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0KTogQWRkZWQuCisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRWaWV3cG9ydEZlYXR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6dmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjp2aWV3cG9ydEVycm9yTWVzc2FnZUxldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9y
dFZpZXdwb3J0V2FybmluZyk6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzOjopOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZpZXdwb3J0
QXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpoYXNDdXN0
b21Bcmd1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50Ojpwcm9jZXNzKTogTW9kaWZpZWQgdG8gY2FsbCBE
b2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0LgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3Vt
ZW50cyk6IEFkZGVkLgorCiAyMDEwLTAzLTI2ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5v
a2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KSW5kZXg6IFdl
YkNvcmUvQW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQubWsJKHJldmlz
aW9uIDU2NTUzKQorKysgV2ViQ29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMs
NiArMTczLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJZG9t
L1RyZWVXYWxrZXIuY3BwIFwKIAlkb20vVUlFdmVudC5jcHAgXAogCWRvbS9VSUV2ZW50V2l0aEtl
eVN0YXRlLmNwcCBcCisJZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcCBcCiAJZG9tL1dlYktpdEFu
aW1hdGlvbkV2ZW50LmNwcCBcCiAJZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgXAogCWRv
bS9XaGVlbEV2ZW50LmNwcCBcCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDU2NTUzKQorKysgV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtODY1LDYgKzg2NSw4IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9kb20vVUlFdmVudC5oIFwKIAlXZWJDb3JlL2RvbS9V
SUV2ZW50V2l0aEtleVN0YXRlLmNwcCBcCiAJV2ViQ29yZS9kb20vVUlFdmVudFdpdGhLZXlTdGF0
ZS5oIFwKKwlXZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAgXAorCVdlYkNvcmUvZG9t
L1ZpZXdwb3J0QXJndW1lbnRzLmggXAogCVdlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50
LmNwcCBcCiAJV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBcCiAJV2ViQ29yZS9k
b20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNTY1NTMpCisr
KyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTIyNiw2ICsxMjI2LDgg
QEAKICAgICAgICAgICAgICdkb20vVUlFdmVudC5oJywKICAgICAgICAgICAgICdkb20vVUlFdmVu
dFdpdGhLZXlTdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ2RvbS9VSUV2ZW50V2l0aEtleVN0YXRl
LmgnLAorICAgICAgICAgICAgJ2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAnLAorICAgICAgICAg
ICAgJ2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oJywKICAgICAgICAgICAgICdkb20vV2ViS2l0QW5p
bWF0aW9uRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQu
aCcsCiAgICAgICAgICAgICAnZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAnLApJbmRleDog
V2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShy
ZXZpc2lvbiA1NjU1MykKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAg
LTUzMiw2ICs1MzIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vVHJlZVdhbGtlci5jcHAgXAog
ICAgIGRvbS9VSUV2ZW50LmNwcCBcCiAgICAgZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuY3BwIFwK
KyAgICBkb20vVmlld3BvcnRBcmd1bWVudHMuY3BwIFwKICAgICBkb20vV2ViS2l0QW5pbWF0aW9u
RXZlbnQuY3BwIFwKICAgICBkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCBcCiAgICAgZG9t
L1doZWVsRXZlbnQuY3BwIFwKQEAgLTEyNDMsNiArMTI0NCw3IEBAIEhFQURFUlMgKz0gXAogICAg
IGRvbS9UcmVlV2Fsa2VyLmggXAogICAgIGRvbS9VSUV2ZW50LmggXAogICAgIGRvbS9VSUV2ZW50
V2l0aEtleVN0YXRlLmggXAorICAgIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5oIFwKICAgICBkb20v
V2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBcCiAgICAgZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5o
IFwKICAgICBkb20vV2hlZWxFdmVudC5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkocmV2aXNpb24gNTY1NTMpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQ3Myw2ICsyOTQ3MywxNCBAQAogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cVmll
d3BvcnRBcmd1bWVudHMuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cZG9tXFZpZXdwb3J0QXJndW1lbnRzLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cV2ViS2l0QW5pbWF0
aW9uRXZlbnQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1NjU1MykKKysrIFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00Njk4
LDYgKzQ2OTgsOCBAQAogCQlDRTRDMDBFNDEwRjZGN0JBMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTRDMDBFMzEwRjZGN0JBMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAgKi87
IH07CiAJCUNFNEMwMEU2MTBGNkY3QzEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTRDMDBFNTEw
RjZGN0MxMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5oICovOyB9OwogCQlDRTU0RkQz
ODEwMTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0U291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNTRGRDM3MTAxNkQ5QTYwMDhCNDRD
OCAvKiBTY3JpcHRTb3VyY2VQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUNFNzE5OTU0MTE1QzEyMDMwMERBRTc4OSAvKiBWaWV3cG9y
dEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0U3MTk5NTIxMTVDMTIwMzAwREFFNzg5IC8qIFZpZXdwb3J0QXJndW1lbnRzLmggKi87IH07
CisJCUNFNzE5OTU1MTE1QzEyMDMwMERBRTc4OSAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTcxOTk1MzExNUMx
MjAzMDBEQUU3ODkgLyogVmlld3BvcnRBcmd1bWVudHMuY3BwICovOyB9OwogCQlEMDFBMjdBRDEw
QzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMDFBMjdBQjEwQzlCRkQ4MDAwMjZBNDIgLyog
U3BhY2VTcGxpdFN0cmluZy5jcHAgKi87IH07CiAJCUQwMUEyN0FFMTBDOUJGRDgwMDAyNkE0MiAv
KiBTcGFjZVNwbGl0U3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBEMDFBMjdBQzEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUQwNUNF
RDI5MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDA1Q0VEMjcwQTQwQkIyQzAwQzVB
RjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5jcHAgKi87IH07CkBAIC0xMDA0NSw2ICsxMDA0Nyw4
IEBACiAJCUNFNEMwMEUzMTBGNkY3QkEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxOb1NjcmlwdEVsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTRDMDBFNTEwRjZGN0MxMDBD
QTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIVE1MTm9TY3JpcHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFNTRGRDM3MTAxNkQ5QTYwMDhCNDRDOCAvKiBTY3JpcHRTb3VyY2VQcm92aWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRTb3VyY2VQcm92aWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTcxOTk1MjExNUMxMjAzMDBEQUU3ODkgLyog
Vmlld3BvcnRBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmll
d3BvcnRBcmd1bWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U3MTk5NTMx
MTVDMTIwMzAwREFFNzg5IC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZXdwb3J0QXJndW1lbnRzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDAxQTI3QUIxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRT
dHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BhY2VTcGxp
dFN0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMUEyN0FDMTBDOUJG
RDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNwYWNlU3BsaXRTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRDA1Q0VEMjcwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0QmxvY2tDb21tYW5kLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjExLDYgKzE2MjE1LDggQEAKIAkJ
CQkxNDFCOTRFRTA5RUM0MjVBMDAwRTk0MTMgLyogVUlFdmVudC5pZGwgKi8sCiAJCQkJOTMzNTRB
M0IwQjI0RjhDOTAwM0Y2REVBIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuY3BwICovLAogCQkJCTg1
MDMxQjM5MEE0NEVGQzcwMEY5OTJFMCAvKiBVSUV2ZW50V2l0aEtleVN0YXRlLmggKi8sCisJCQkJ
Q0U3MTk5NTMxMTVDMTIwMzAwREFFNzg5IC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCAqLywKKwkJ
CQlDRTcxOTk1MjExNUMxMjAzMDBEQUU3ODkgLyogVmlld3BvcnRBcmd1bWVudHMuaCAqLywKIAkJ
CQkzMUMwRkYxQjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwICov
LAogCQkJCTMxQzBGRjFDMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5o
ICovLAogCQkJCTMxQzBGRjFEMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVu
dC5pZGwgKi8sCkBAIC0xODc2NSw2ICsxODc3MSw3IEBACiAJCQkJQTUxM0IzRDcxMTRCMTY2NjAw
MUM0MjlCIC8qIEtleUV2ZW50Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTYyQ0QzMjVBMTE1
N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ3NzhC
ODAxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUNFNzE5OTU0MTE1QzEyMDMwMERBRTc4OSAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yMDk4MCw2ICsyMDk4Nyw3IEBACiAJCQkJQTUxM0IzRDgxMTRCMTY2QTAwMUM0
MjlCIC8qIEtleUV2ZW50Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk2MkNEMzI1OTExNTdF
NTdDMDA2M0IwQTcgLyogQ3VzdG9tRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ3NzhC
N0YxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0U3MTk5NTUxMTVDMTIwMzAwREFFNzg5IC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNTY1NTMpCisrKyBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsxMjcsNyBAQAogI2luY2x1
ZGUgIlRyZWVXYWxrZXIuaCIKICNpbmNsdWRlICJVSUV2ZW50LmgiCiAjaW5jbHVkZSAiVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmgiCisjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNs
dWRlICJXZWJLaXRBbmltYXRpb25FdmVudC5oIgogI2luY2x1ZGUgIldlYktpdFRyYW5zaXRpb25F
dmVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKQEAgLTIyODIsNiArMjI4Myw3OCBAQCB2
b2lkIERvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KGNvbnN0IFN0CiAgICAgfQogfQogCisvLyBU
aG91Z2ggaXNzcGFjZSgpIGNvbnNpZGVycyBcdCBhbmQgXHYgdG8gYmUgd2hpdGVzcGFjZSwgV2lu
IElFIGRvZXNuJ3QuCitzdGF0aWMgYm9vbCBpc1NlcGFyYXRvcihVQ2hhciBjKQoreworICAgIHJl
dHVybiBjID09ICcgJyB8fCBjID09ICdcdCcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8fCBj
ID09ICc9JyB8fCBjID09ICcsJyB8fCBjID09ICdcMCc7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnBy
b2Nlc3NBcmd1bWVudHMoY29uc3QgU3RyaW5nJiBmZWF0dXJlcywgdm9pZCogZGF0YSwgQXJndW1l
bnRzQ2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgLy8gVHJlYWQgbGlnaHRseSBpbiB0aGlzIGNv
ZGUgLS0gaXQgd2FzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBtaW1pYyBXaW4gSUUncyBwYXJz
aW5nIGJlaGF2aW9yLgorICAgIGludCBrZXlCZWdpbiwga2V5RW5kOworICAgIGludCB2YWx1ZUJl
Z2luLCB2YWx1ZUVuZDsKKworICAgIGludCBpID0gMDsKKyAgICBpbnQgbGVuZ3RoID0gZmVhdHVy
ZXMubGVuZ3RoKCk7CisgICAgU3RyaW5nIGJ1ZmZlciA9IGZlYXR1cmVzLmxvd2VyKCk7CisgICAg
d2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAgLy8gc2tpcCB0byBmaXJzdCBub24tc2VwYXJh
dG9yLCBidXQgZG9uJ3Qgc2tpcCBwYXN0IHRoZSBlbmQgb2YgdGhlIHN0cmluZworICAgICAgICB3
aGlsZSAoaXNTZXBhcmF0b3IoYnVmZmVyW2ldKSkgeworICAgICAgICAgICAgaWYgKGkgPj0gbGVu
Z3RoKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9
CisgICAgICAgIGtleUJlZ2luID0gaTsKKworICAgICAgICAvLyBza2lwIHRvIGZpcnN0IHNlcGFy
YXRvcgorICAgICAgICB3aGlsZSAoIWlzU2VwYXJhdG9yKGJ1ZmZlcltpXSkpCisgICAgICAgICAg
ICBpKys7CisgICAgICAgIGtleUVuZCA9IGk7CisKKyAgICAgICAgLy8gc2tpcCB0byBmaXJzdCAn
PScsIGJ1dCBkb24ndCBza2lwIHBhc3QgYSAnLCcgb3IgdGhlIGVuZCBvZiB0aGUgc3RyaW5nCisg
ICAgICAgIHdoaWxlIChidWZmZXJbaV0gIT0gJz0nKSB7CisgICAgICAgICAgICBpZiAoYnVmZmVy
W2ldID09ICcsJyB8fCBpID49IGxlbmd0aCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGkrKzsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHNraXAgdG8gZmlyc3Qgbm9uLXNl
cGFyYXRvciwgYnV0IGRvbid0IHNraXAgcGFzdCBhICcsJyBvciB0aGUgZW5kIG9mIHRoZSBzdHJp
bmcKKyAgICAgICAgd2hpbGUgKGlzU2VwYXJhdG9yKGJ1ZmZlcltpXSkpIHsKKyAgICAgICAgICAg
IGlmIChidWZmZXJbaV0gPT0gJywnIHx8IGkgPj0gbGVuZ3RoKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIHZhbHVlQmVnaW4gPSBp
OworCisgICAgICAgIC8vIHNraXAgdG8gZmlyc3Qgc2VwYXJhdG9yCisgICAgICAgIHdoaWxlICgh
aXNTZXBhcmF0b3IoYnVmZmVyW2ldKSkKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgdmFsdWVF
bmQgPSBpOworCisgICAgICAgIEFTU0VSVChpIDw9IGxlbmd0aCk7CisKKyAgICAgICAgU3RyaW5n
IGtleVN0cmluZyA9IGJ1ZmZlci5zdWJzdHJpbmcoa2V5QmVnaW4sIGtleUVuZCAtIGtleUJlZ2lu
KTsKKyAgICAgICAgU3RyaW5nIHZhbHVlU3RyaW5nID0gYnVmZmVyLnN1YnN0cmluZyh2YWx1ZUJl
Z2luLCB2YWx1ZUVuZCAtIHZhbHVlQmVnaW4pOworICAgICAgICBjYWxsYmFjayhrZXlTdHJpbmcs
IHZhbHVlU3RyaW5nLCB0aGlzLCBkYXRhKTsKKyAgICB9Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnBy
b2Nlc3NWaWV3cG9ydChjb25zdCBTdHJpbmcmIGZlYXR1cmVzKQoreworICAgIEFTU0VSVCghZmVh
dHVyZXMuaXNOdWxsKCkpOworCisgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAg
ICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBWaWV3cG9ydEFyZ3VtZW50cyBh
cmd1bWVudHM7CisgICAgcHJvY2Vzc0FyZ3VtZW50cyhmZWF0dXJlcywgKHZvaWQqKSZhcmd1bWVu
dHMsICZzZXRWaWV3cG9ydEZlYXR1cmUpOworCisgICAgaWYgKGZyYW1lLT5wYWdlKCkpCisgICAg
ICAgIGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVZpZXdwb3J0
QXJndW1lbnRzKGZyYW1lLCBhcmd1bWVudHMpOworfQorCiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzIERvY3VtZW50OjpwcmVwYXJlTW91c2VFdmVudChjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgSW50UG9pbnQmIGRvY3VtZW50UG9pbnQsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZlbnQpCiB7CiAgICAgQVNTRVJUKCFyZW5kZXJlcigpIHx8IHJlbmRlcmVyKCkt
PmlzUmVuZGVyVmlldygpKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNTY1NTMpCisrKyBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OTgsNyArNjk4LDggQEAgcHVibGlj
OgogICAgICAqIEBwYXJhbSBjb250ZW50IFRoZSBoZWFkZXIgdmFsdWUgKHZhbHVlIG9mIHRoZSBt
ZXRhIHRhZydzICJjb250ZW50IiBhdHRyaWJ1dGUpCiAgICAgICovCiAgICAgdm9pZCBwcm9jZXNz
SHR0cEVxdWl2KGNvbnN0IFN0cmluZyYgZXF1aXYsIGNvbnN0IFN0cmluZyYgY29udGVudCk7Ci0g
ICAgCisgICAgdm9pZCBwcm9jZXNzVmlld3BvcnQoY29uc3QgU3RyaW5nJiBmZWF0dXJlcyk7CisK
ICAgICAvLyBSZXR1cm5zIHRoZSBvd25pbmcgZWxlbWVudCBpbiB0aGUgcGFyZW50IGRvY3VtZW50
LgogICAgIC8vIFJldHVybnMgMCBpZiB0aGlzIGlzIHRoZSB0b3AgbGV2ZWwgZG9jdW1lbnQuCiAg
ICAgRWxlbWVudCogb3duZXJFbGVtZW50KCkgY29uc3Q7CkBAIC05NzIsNiArOTczLDEwIEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIGNsZWFyWE1MVmVyc2lvbigpIHsgbV94bWxWZXJzaW9uID0gU3Ry
aW5nKCk7IH0KIAogcHJpdmF0ZToKKworICAgIHR5cGVkZWYgdm9pZCAoKkFyZ3VtZW50c0NhbGxi
YWNrKShjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywg
RG9jdW1lbnQqLCB2b2lkKiBkYXRhKTsKKyAgICB2b2lkIHByb2Nlc3NBcmd1bWVudHMoY29uc3Qg
U3RyaW5nJiBmZWF0dXJlcywgdm9pZCogZGF0YSwgQXJndW1lbnRzQ2FsbGJhY2spOworCiAgICAg
dmlydHVhbCBib29sIGlzRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGVybWluZVBh
cnNlTW9kZSgpIHsgfQpJbmRleDogV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25v
bGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlz
dG9Aa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJA
a2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEB3
ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBU
b3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1v
YmlsZS5jb20vKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpZXdwb3J0QXJn
dW1lbnRzLmgiCisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDb25zb2xlLmgiCisj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2Uu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlRva2VuaXplci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgc2V0Vmlld3BvcnRGZWF0dXJlKGNvbnN0IFN0
cmluZyYga2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBEb2N1bWVudCogZG9j
dW1lbnQsIHZvaWQqIGRhdGEpCit7CisgICAgVmlld3BvcnRBcmd1bWVudHMqIGFyZ3VtZW50cyA9
IHN0YXRpY19jYXN0PFZpZXdwb3J0QXJndW1lbnRzKj4oZGF0YSk7CisgICAgZmxvYXQgdmFsdWUg
PSBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVVbmRlZmluZWQ7CisgICAgYm9vbCBkaWRVc2VDb25z
dGFudHMgPSBmYWxzZTsKKworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZVN0cmluZywg
InllcyIpKQorICAgICAgICB2YWx1ZSA9IDE7CisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UodmFsdWVTdHJpbmcsICJkZXZpY2Utd2lkdGgiKSkgeworICAgICAgICBkaWRVc2VDb25zdGFu
dHMgPSB0cnVlOworICAgICAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKSkKKyAgICAgICAgICAgIHZh
bHVlID0gZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCktPndpbmRvd1JlY3QoKS53aWR0aCgpOwor
ICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWVTdHJpbmcsICJkZXZpY2UtaGVp
Z2h0IikpIHsKKyAgICAgICAgZGlkVXNlQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgaWYgKGRv
Y3VtZW50LT5wYWdlKCkpCisgICAgICAgICAgICB2YWx1ZSA9IGRvY3VtZW50LT5wYWdlKCktPmNo
cm9tZSgpLT53aW5kb3dSZWN0KCkuaGVpZ2h0KCk7CisgICAgfSBlbHNlIGlmIChlcXVhbElnbm9y
aW5nQ2FzZSh2YWx1ZVN0cmluZywgImRlZmF1bHQiKSkgLy8gVGhpcyBhbGxvd3MgdXMgdG8gZGlz
dGluZ3Vpc2ggdGhlIG9taXNzaW9uIG9mIGEga2V5IGZyb20gYXNraW5nIGZvciB0aGUgZGVmYXVs
dCB2YWx1ZS4KKyAgICAgICAgdmFsdWUgPSAtMjsKKyAgICBlbHNlIGlmICh2YWx1ZVN0cmluZy5s
ZW5ndGgoKSkgLy8gbGlzdGluZyBhIGtleSB3aXRoIG5vIHZhbHVlIGlzIHNob3J0aGFuZCBmb3Ig
a2V5PWRlZmF1bHQKKyAgICAgICAgdmFsdWUgPSB2YWx1ZVN0cmluZy50b0Zsb2F0KCk7CisKKyAg
ICBpZiAoa2V5U3RyaW5nID09ICJpbml0aWFsLXNjYWxlIikKKyAgICAgICAgYXJndW1lbnRzLT5p
bml0aWFsU2NhbGUgPSB2YWx1ZTsKKyAgICBlbHNlIGlmIChrZXlTdHJpbmcgPT0gIm1pbmltdW0t
c2NhbGUiKQorICAgICAgICBhcmd1bWVudHMtPm1pbmltdW1TY2FsZSA9IHZhbHVlOworICAgIGVs
c2UgaWYgKGtleVN0cmluZyA9PSAibWF4aW11bS1zY2FsZSIpIHsKKyAgICAgICAgYXJndW1lbnRz
LT5tYXhpbXVtU2NhbGUgPSB2YWx1ZTsKKyAgICAgICAgaWYgKHZhbHVlID4gMTAuMCkKKyAgICAg
ICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgTWF4aW11bVNjYWxlVG9vTGFy
Z2VFcnJvciwga2V5U3RyaW5nKTsKKyAgICB9IGVsc2UgaWYgKGtleVN0cmluZyA9PSAidXNlci1z
Y2FsYWJsZSIpCisgICAgICAgIGFyZ3VtZW50cy0+dXNlclNjYWxhYmxlID0gdmFsdWU7CisgICAg
ZWxzZSBpZiAoa2V5U3RyaW5nID09ICJ3aWR0aCIpIHsKKyAgICAgICAgaWYgKGRvY3VtZW50LT5w
YWdlKCkgJiYgdmFsdWUgPT0gZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCktPndpbmRvd1JlY3Qo
KS53aWR0aCgpICYmICFkaWRVc2VDb25zdGFudHMpCisgICAgICAgICAgICByZXBvcnRWaWV3cG9y
dFdhcm5pbmcoZG9jdW1lbnQsIERldmljZVdpZHRoU2hvdWxkQmVVc2VkV2FybmluZywga2V5U3Ry
aW5nKTsKKyAgICAgICAgZWxzZSBpZiAoZG9jdW1lbnQtPnBhZ2UoKSAmJiB2YWx1ZSA9PSBkb2N1
bWVudC0+cGFnZSgpLT5jaHJvbWUoKS0+d2luZG93UmVjdCgpLmhlaWdodCgpICYmICFkaWRVc2VD
b25zdGFudHMpCisgICAgICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQsIERl
dmljZUhlaWdodFNob3VsZEJlVXNlZFdhcm5pbmcsIGtleVN0cmluZyk7CisKKyAgICAgICAgYXJn
dW1lbnRzLT53aWR0aCA9IHZhbHVlOworICAgIH0gZWxzZSBpZiAoa2V5U3RyaW5nID09ICJoZWln
aHQiKSB7CisgICAgICAgIGlmIChkb2N1bWVudC0+cGFnZSgpICYmIHZhbHVlID09IGRvY3VtZW50
LT5wYWdlKCktPmNocm9tZSgpLT53aW5kb3dSZWN0KCkud2lkdGgoKSAmJiAhZGlkVXNlQ29uc3Rh
bnRzKQorICAgICAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBEZXZpY2VX
aWR0aFNob3VsZEJlVXNlZFdhcm5pbmcsIGtleVN0cmluZyk7CisgICAgICAgIGVsc2UgaWYgKGRv
Y3VtZW50LT5wYWdlKCkgJiYgdmFsdWUgPT0gZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCktPndp
bmRvd1JlY3QoKS5oZWlnaHQoKSAmJiAhZGlkVXNlQ29uc3RhbnRzKQorICAgICAgICAgICAgcmVw
b3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBEZXZpY2VIZWlnaHRTaG91bGRCZVVzZWRXYXJu
aW5nLCBrZXlTdHJpbmcpOworICAgICAgICAKKyAgICAgICAgYXJndW1lbnRzLT5oZWlnaHQgPSB2
YWx1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50
LCBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50RXJyb3IsIGtleVN0cmluZyk7Cit9CisKK3N0
YXRpYyBjb25zdCBjaGFyKiB2aWV3cG9ydEVycm9yTWVzc2FnZVRlbXBsYXRlKFZpZXdwb3J0RXJy
b3JDb2RlIGVycm9yQ29kZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXJyb3Jz
W10gPSB7IAorICAgICAgICAiVmlld3BvcnQgd2lkdGggb3IgaGVpZ2h0IHNldCB0byBwaHlzaWNh
bCBkZXZpY2Ugd2lkdGgsIHRyeSB1c2luZyBcImRldmljZS13aWR0aFwiIGNvbnN0YW50IGluc3Rl
YWQgZm9yIGZ1dHVyZSBjb21wYXRpYmlsaXR5LiIsCisgICAgICAgICJWaWV3cG9ydCBoZWlnaHQg
b3IgaGVpZ2h0IHNldCB0byBwaHlzaWNhbCBkZXZpY2UgaGVpZ2h0LCB0cnkgdXNpbmcgXCJkZXZp
Y2UtaGVpZ2h0XCIgY29uc3RhbnQgaW5zdGVhZCBmb3IgZnV0dXJlIGNvbXBhdGliaWxpdHkuIiwK
KyAgICAgICAgIlZpZXdwb3J0IGFyZ3VtZW50IFwiJXJlcGxhY2VtZW50XCIgbm90IHJlY29nbml6
ZWQuIENvbnRlbnQgaWdub3JlZC4iLAorICAgICAgICAiVmlld3BvcnQgbWF4aW11bS1zY2FsZSBj
YW5ub3QgYmUgbGFyZ2VyIHRoYW4gMTAuMC4gIFRoZSBtYXhpbXVtLXNjYWxlIHdpbGwgYmUgc2V0
IHRvIDEwLjAuIgorICAgIH07CisKKyAgICByZXR1cm4gZXJyb3JzW2Vycm9yQ29kZV07Cit9CisK
K3N0YXRpYyBNZXNzYWdlTGV2ZWwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChWaWV3cG9ydEVy
cm9yQ29kZSBlcnJvckNvZGUpCit7CisgICAgcmV0dXJuIGVycm9yQ29kZSA9PSBVbnJlY29nbml6
ZWRWaWV3cG9ydEFyZ3VtZW50RXJyb3IgfHwgZXJyb3JDb2RlID09IE1heGltdW1TY2FsZVRvb0xh
cmdlRXJyb3IgPyBFcnJvck1lc3NhZ2VMZXZlbCA6IFRpcE1lc3NhZ2VMZXZlbDsKK30KKwordm9p
ZCByZXBvcnRWaWV3cG9ydFdhcm5pbmcoRG9jdW1lbnQqIGRvY3VtZW50LCBWaWV3cG9ydEVycm9y
Q29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCit7CisgICAgVG9rZW5p
emVyKiB0b2tlbml6ZXIgPSBkb2N1bWVudC0+dG9rZW5pemVyKCk7CisKKyAgICBGcmFtZSogZnJh
bWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47
CisKKyAgICBTdHJpbmcgbWVzc2FnZSA9IHZpZXdwb3J0RXJyb3JNZXNzYWdlVGVtcGxhdGUoZXJy
b3JDb2RlKTsKKyAgICBtZXNzYWdlLnJlcGxhY2UoIiVyZXBsYWNlbWVudCIsIHJlcGxhY2VtZW50
KTsKKworICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEhUTUxN
ZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChl
cnJvckNvZGUpLCBtZXNzYWdlLCB0b2tlbml6ZXIgPyB0b2tlbml6ZXItPmxpbmVOdW1iZXIoKSAr
IDEgOiAwLCBkb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisg
KiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisg
KiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiAg
ICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKKyAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVG9yY2ggTW9iaWxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisK
KyNpZm5kZWYgVmlld3BvcnRBcmd1bWVudHNfaAorI2RlZmluZSBWaWV3cG9ydEFyZ3VtZW50c19o
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBTdHJpbmc7
CisKK2VudW0gVmlld3BvcnRFcnJvckNvZGUgeworICAgIERldmljZVdpZHRoU2hvdWxkQmVVc2Vk
V2FybmluZywKKyAgICBEZXZpY2VIZWlnaHRTaG91bGRCZVVzZWRXYXJuaW5nLAorICAgIFVucmVj
b2duaXplZFZpZXdwb3J0QXJndW1lbnRFcnJvciwKKyAgICBNYXhpbXVtU2NhbGVUb29MYXJnZUVy
cm9yCit9OworCitzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHMgeworCisgICAgZW51bSB7IFZhbHVl
VW5kZWZpbmVkID0gLTEgfTsKKworICAgIFZpZXdwb3J0QXJndW1lbnRzKCkKKyAgICAgICAgOiBp
bml0aWFsU2NhbGUoVmFsdWVVbmRlZmluZWQpCisgICAgICAgICwgbWluaW11bVNjYWxlKFZhbHVl
VW5kZWZpbmVkKQorICAgICAgICAsIG1heGltdW1TY2FsZShWYWx1ZVVuZGVmaW5lZCkKKyAgICAg
ICAgLCB3aWR0aChWYWx1ZVVuZGVmaW5lZCkKKyAgICAgICAgLCBoZWlnaHQoVmFsdWVVbmRlZmlu
ZWQpCisgICAgICAgICwgdXNlclNjYWxhYmxlKFZhbHVlVW5kZWZpbmVkKQorICAgIHsKKyAgICB9
CisKKyAgICBmbG9hdCBpbml0aWFsU2NhbGU7CisgICAgZmxvYXQgbWluaW11bVNjYWxlOworICAg
IGZsb2F0IG1heGltdW1TY2FsZTsKKyAgICBmbG9hdCB3aWR0aDsKKyAgICBmbG9hdCBoZWlnaHQ7
CisKKyAgICBmbG9hdCB1c2VyU2NhbGFibGU7CisKKyAgICBib29sIGhhc0N1c3RvbUFyZ3VtZW50
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBpbml0aWFsU2NhbGUgIT0gVmFsdWVVbmRl
ZmluZWQgfHwgbWluaW11bVNjYWxlICE9IFZhbHVlVW5kZWZpbmVkIHx8IG1heGltdW1TY2FsZSAh
PSBWYWx1ZVVuZGVmaW5lZCB8fCB3aWR0aCAhPSBWYWx1ZVVuZGVmaW5lZCB8fCBoZWlnaHQgIT0g
VmFsdWVVbmRlZmluZWQgfHwgdXNlclNjYWxhYmxlICE9IFZhbHVlVW5kZWZpbmVkOworICAgIH0K
K307CisKK3ZvaWQgc2V0Vmlld3BvcnRGZWF0dXJlKGNvbnN0IFN0cmluZyYga2V5U3RyaW5nLCBj
b25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBEb2N1bWVudCosIHZvaWQqIGRhdGEpOwordm9pZCBy
ZXBvcnRWaWV3cG9ydFdhcm5pbmcoRG9jdW1lbnQqLCBWaWV3cG9ydEVycm9yQ29kZSwgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFZpZXdwb3J0QXJndW1lbnRzX2gKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA1NjU1MykKKysrIFdlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Myw5ICs2MywxNSBAQCB2b2lkIEhUTUxNZXRhRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvRG9jdW1lCiAKIHZvaWQgSFRNTE1ldGFFbGVtZW50Ojpwcm9jZXNzKCkKIHsKKyAgICBp
ZiAoIWluRG9jdW1lbnQoKSB8fCBtX2NvbnRlbnQuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lKCksICJ2aWV3cG9ydCIpKQorICAgICAg
ICBkb2N1bWVudCgpLT5wcm9jZXNzVmlld3BvcnQobV9jb250ZW50KTsKKwogICAgIC8vIEdldCB0
aGUgZG9jdW1lbnQgdG8gcHJvY2VzcyB0aGUgdGFnLCBidXQgb25seSBpZiB3ZSdyZSBhY3R1YWxs
eSBwYXJ0IG9mIERPTSB0cmVlIChjaGFuZ2luZyBhIG1ldGEgdGFnIHdoaWxlCiAgICAgLy8gaXQn
cyBub3QgaW4gdGhlIHRyZWUgc2hvdWxkbid0IGhhdmUgYW55IGVmZmVjdCBvbiB0aGUgZG9jdW1l
bnQpCi0gICAgaWYgKGluRG9jdW1lbnQoKSAmJiAhbV9lcXVpdi5pc051bGwoKSAmJiAhbV9jb250
ZW50LmlzTnVsbCgpKQorICAgIGlmICghbV9lcXVpdi5pc051bGwoKSkKICAgICAgICAgZG9jdW1l
bnQoKS0+cHJvY2Vzc0h0dHBFcXVpdihtX2VxdWl2LCBtX2NvbnRlbnQpOwogfQogCkluZGV4OiBX
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCShyZXZpc2lvbiA1NjU1MykKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgV2lkZ2V0OwogCiAgICAgc3RydWN0IEZyYW1lTG9hZFJlcXVlc3Q7CisgICAg
c3RydWN0IFZpZXdwb3J0QXJndW1lbnRzOwogICAgIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKQEAgLTE0NSw2ICsxNDYsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFRvb2xUaXAoY29uc3Qg
U3RyaW5nJiwgVGV4dERpcmVjdGlvbikgPSAwOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlVmlld3BvcnRBcmd1bWVudHMoRnJhbWUqLCBjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYp
IGNvbnN0IHsgfQorCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmludChGcmFtZSopID0gMDsKIAog
I2lmIEVOQUJMRShEQVRBQkFTRSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51758</attachid>
            <date>2010-03-26 10:48:25 -0700</date>
            <delta_ts>2010-03-26 10:57:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Bug36312_032610_2.patch</filename>
            <type>text/plain</type>
            <size>22731</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjYyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTAtMDMtMjYgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjMxMgorCisgICAgICAgIEFkZHMg
c3VwcG9ydCBmb3IgdGhlIHZpZXdwb3J0IG1ldGEgdGFnLiBUaGUgY29kZSBpcyBsYXJnZWx5IGRl
cml2ZWQgaW4gd2hvbGUKKyAgICAgICAgb3IgaW4gcGFydCBmcm9tIHRoZSBXZWJDb3JlLTUyOC4x
NSBzb3VyY2UgcHVibGlzaGVkIGFzIHBhcnQgb2YgdGhlIGlQaG9uZSAzLjEuMworICAgICAgICBz
b3VyY2UgY29kZSA8aHR0cDovL3d3dy5vcGVuc291cmNlLmFwcGxlLmNvbS9zb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLTUyOC4xNS8+LgorCisgICAgICAgICogQW5kcm9pZC5tazogQWRkZWQgZmlsZSBW
aWV3cG9ydEFyZ3VtZW50cy5jcHAuCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZGVkIGZp
bGVzIFZpZXdwb3J0QXJndW1lbnRzLmNwcCBhbmQgVmlld3BvcnRBcmd1bWVudHMuaC4KKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBEaXR0by4K
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTZXBhcmF0b3IpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNzQXJndW1lbnRzKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0KTogQWRkZWQuCisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRWaWV3cG9ydEZlYXR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6dmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjp2aWV3cG9ydEVycm9yTWVzc2FnZUxldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9y
dFZpZXdwb3J0V2FybmluZyk6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzOjopOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZpZXdwb3J0
QXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpoYXNDdXN0
b21Bcmd1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50Ojpwcm9jZXNzKTogTW9kaWZpZWQgdG8gY2FsbCBE
b2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0LgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3Vt
ZW50cyk6IEFkZGVkLgorCiAyMDEwLTAzLTI2ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5v
a2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KSW5kZXg6IFdl
YkNvcmUvQW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQubWsJKHJldmlz
aW9uIDU2NTUzKQorKysgV2ViQ29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMs
NiArMTczLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJZG9t
L1RyZWVXYWxrZXIuY3BwIFwKIAlkb20vVUlFdmVudC5jcHAgXAogCWRvbS9VSUV2ZW50V2l0aEtl
eVN0YXRlLmNwcCBcCisJZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcCBcCiAJZG9tL1dlYktpdEFu
aW1hdGlvbkV2ZW50LmNwcCBcCiAJZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgXAogCWRv
bS9XaGVlbEV2ZW50LmNwcCBcCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDU2NTUzKQorKysgV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtODY1LDYgKzg2NSw4IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9kb20vVUlFdmVudC5oIFwKIAlXZWJDb3JlL2RvbS9V
SUV2ZW50V2l0aEtleVN0YXRlLmNwcCBcCiAJV2ViQ29yZS9kb20vVUlFdmVudFdpdGhLZXlTdGF0
ZS5oIFwKKwlXZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAgXAorCVdlYkNvcmUvZG9t
L1ZpZXdwb3J0QXJndW1lbnRzLmggXAogCVdlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50
LmNwcCBcCiAJV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBcCiAJV2ViQ29yZS9k
b20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNTY1NTMpCisr
KyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTIyNiw2ICsxMjI2LDgg
QEAKICAgICAgICAgICAgICdkb20vVUlFdmVudC5oJywKICAgICAgICAgICAgICdkb20vVUlFdmVu
dFdpdGhLZXlTdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ2RvbS9VSUV2ZW50V2l0aEtleVN0YXRl
LmgnLAorICAgICAgICAgICAgJ2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAnLAorICAgICAgICAg
ICAgJ2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oJywKICAgICAgICAgICAgICdkb20vV2ViS2l0QW5p
bWF0aW9uRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQu
aCcsCiAgICAgICAgICAgICAnZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAnLApJbmRleDog
V2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShy
ZXZpc2lvbiA1NjU1MykKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAg
LTUzMiw2ICs1MzIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vVHJlZVdhbGtlci5jcHAgXAog
ICAgIGRvbS9VSUV2ZW50LmNwcCBcCiAgICAgZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuY3BwIFwK
KyAgICBkb20vVmlld3BvcnRBcmd1bWVudHMuY3BwIFwKICAgICBkb20vV2ViS2l0QW5pbWF0aW9u
RXZlbnQuY3BwIFwKICAgICBkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCBcCiAgICAgZG9t
L1doZWVsRXZlbnQuY3BwIFwKQEAgLTEyNDMsNiArMTI0NCw3IEBAIEhFQURFUlMgKz0gXAogICAg
IGRvbS9UcmVlV2Fsa2VyLmggXAogICAgIGRvbS9VSUV2ZW50LmggXAogICAgIGRvbS9VSUV2ZW50
V2l0aEtleVN0YXRlLmggXAorICAgIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5oIFwKICAgICBkb20v
V2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBcCiAgICAgZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5o
IFwKICAgICBkb20vV2hlZWxFdmVudC5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkocmV2aXNpb24gNTY1NTMpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQ3Myw2ICsyOTQ3MywxNCBAQAogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cVmll
d3BvcnRBcmd1bWVudHMuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cZG9tXFZpZXdwb3J0QXJndW1lbnRzLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cV2ViS2l0QW5pbWF0
aW9uRXZlbnQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1NjU1MykKKysrIFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00Njk4
LDYgKzQ2OTgsOCBAQAogCQlDRTRDMDBFNDEwRjZGN0JBMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTRDMDBFMzEwRjZGN0JBMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAgKi87
IH07CiAJCUNFNEMwMEU2MTBGNkY3QzEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTRDMDBFNTEw
RjZGN0MxMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5oICovOyB9OwogCQlDRTU0RkQz
ODEwMTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0U291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNTRGRDM3MTAxNkQ5QTYwMDhCNDRD
OCAvKiBTY3JpcHRTb3VyY2VQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUNFNzE5OTU0MTE1QzEyMDMwMERBRTc4OSAvKiBWaWV3cG9y
dEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0U3MTk5NTIxMTVDMTIwMzAwREFFNzg5IC8qIFZpZXdwb3J0QXJndW1lbnRzLmggKi87IH07
CisJCUNFNzE5OTU1MTE1QzEyMDMwMERBRTc4OSAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTcxOTk1MzExNUMx
MjAzMDBEQUU3ODkgLyogVmlld3BvcnRBcmd1bWVudHMuY3BwICovOyB9OwogCQlEMDFBMjdBRDEw
QzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMDFBMjdBQjEwQzlCRkQ4MDAwMjZBNDIgLyog
U3BhY2VTcGxpdFN0cmluZy5jcHAgKi87IH07CiAJCUQwMUEyN0FFMTBDOUJGRDgwMDAyNkE0MiAv
KiBTcGFjZVNwbGl0U3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBEMDFBMjdBQzEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUQwNUNF
RDI5MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDA1Q0VEMjcwQTQwQkIyQzAwQzVB
RjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5jcHAgKi87IH07CkBAIC0xMDA0NSw2ICsxMDA0Nyw4
IEBACiAJCUNFNEMwMEUzMTBGNkY3QkEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxOb1NjcmlwdEVsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTRDMDBFNTEwRjZGN0MxMDBD
QTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIVE1MTm9TY3JpcHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFNTRGRDM3MTAxNkQ5QTYwMDhCNDRDOCAvKiBTY3JpcHRTb3VyY2VQcm92aWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRTb3VyY2VQcm92aWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTcxOTk1MjExNUMxMjAzMDBEQUU3ODkgLyog
Vmlld3BvcnRBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmll
d3BvcnRBcmd1bWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U3MTk5NTMx
MTVDMTIwMzAwREFFNzg5IC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZXdwb3J0QXJndW1lbnRzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDAxQTI3QUIxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRT
dHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BhY2VTcGxp
dFN0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMUEyN0FDMTBDOUJG
RDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNwYWNlU3BsaXRTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRDA1Q0VEMjcwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0QmxvY2tDb21tYW5kLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjExLDYgKzE2MjE1LDggQEAKIAkJ
CQkxNDFCOTRFRTA5RUM0MjVBMDAwRTk0MTMgLyogVUlFdmVudC5pZGwgKi8sCiAJCQkJOTMzNTRB
M0IwQjI0RjhDOTAwM0Y2REVBIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuY3BwICovLAogCQkJCTg1
MDMxQjM5MEE0NEVGQzcwMEY5OTJFMCAvKiBVSUV2ZW50V2l0aEtleVN0YXRlLmggKi8sCisJCQkJ
Q0U3MTk5NTMxMTVDMTIwMzAwREFFNzg5IC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCAqLywKKwkJ
CQlDRTcxOTk1MjExNUMxMjAzMDBEQUU3ODkgLyogVmlld3BvcnRBcmd1bWVudHMuaCAqLywKIAkJ
CQkzMUMwRkYxQjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwICov
LAogCQkJCTMxQzBGRjFDMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5o
ICovLAogCQkJCTMxQzBGRjFEMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVu
dC5pZGwgKi8sCkBAIC0xODc2NSw2ICsxODc3MSw3IEBACiAJCQkJQTUxM0IzRDcxMTRCMTY2NjAw
MUM0MjlCIC8qIEtleUV2ZW50Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTYyQ0QzMjVBMTE1
N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ3NzhC
ODAxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUNFNzE5OTU0MTE1QzEyMDMwMERBRTc4OSAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yMDk4MCw2ICsyMDk4Nyw3IEBACiAJCQkJQTUxM0IzRDgxMTRCMTY2QTAwMUM0
MjlCIC8qIEtleUV2ZW50Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk2MkNEMzI1OTExNTdF
NTdDMDA2M0IwQTcgLyogQ3VzdG9tRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ3NzhC
N0YxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0U3MTk5NTUxMTVDMTIwMzAwREFFNzg5IC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNTY1NTMpCisrKyBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsxMjcsNyBAQAogI2luY2x1
ZGUgIlRyZWVXYWxrZXIuaCIKICNpbmNsdWRlICJVSUV2ZW50LmgiCiAjaW5jbHVkZSAiVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmgiCisjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNs
dWRlICJXZWJLaXRBbmltYXRpb25FdmVudC5oIgogI2luY2x1ZGUgIldlYktpdFRyYW5zaXRpb25F
dmVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKQEAgLTIyODIsNiArMjI4Myw3OCBAQCB2
b2lkIERvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KGNvbnN0IFN0CiAgICAgfQogfQogCisvLyBU
aG91Z2ggaXNzcGFjZSgpIGNvbnNpZGVycyBcdCBhbmQgXHYgdG8gYmUgd2hpdGVzcGFjZSwgV2lu
IElFIGRvZXNuJ3QuCitzdGF0aWMgYm9vbCBpc1NlcGFyYXRvcihVQ2hhciBjKQoreworICAgIHJl
dHVybiBjID09ICcgJyB8fCBjID09ICdcdCcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8fCBj
ID09ICc9JyB8fCBjID09ICcsJyB8fCBjID09ICdcMCc7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnBy
b2Nlc3NBcmd1bWVudHMoY29uc3QgU3RyaW5nJiBmZWF0dXJlcywgdm9pZCogZGF0YSwgQXJndW1l
bnRzQ2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgLy8gVHJlYWQgbGlnaHRseSBpbiB0aGlzIGNv
ZGUgLS0gaXQgd2FzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBtaW1pYyBXaW4gSUUncyBwYXJz
aW5nIGJlaGF2aW9yLgorICAgIGludCBrZXlCZWdpbiwga2V5RW5kOworICAgIGludCB2YWx1ZUJl
Z2luLCB2YWx1ZUVuZDsKKworICAgIGludCBpID0gMDsKKyAgICBpbnQgbGVuZ3RoID0gZmVhdHVy
ZXMubGVuZ3RoKCk7CisgICAgU3RyaW5nIGJ1ZmZlciA9IGZlYXR1cmVzLmxvd2VyKCk7CisgICAg
d2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAgLy8gc2tpcCB0byBmaXJzdCBub24tc2VwYXJh
dG9yLCBidXQgZG9uJ3Qgc2tpcCBwYXN0IHRoZSBlbmQgb2YgdGhlIHN0cmluZworICAgICAgICB3
aGlsZSAoaXNTZXBhcmF0b3IoYnVmZmVyW2ldKSkgeworICAgICAgICAgICAgaWYgKGkgPj0gbGVu
Z3RoKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9
CisgICAgICAgIGtleUJlZ2luID0gaTsKKworICAgICAgICAvLyBza2lwIHRvIGZpcnN0IHNlcGFy
YXRvcgorICAgICAgICB3aGlsZSAoIWlzU2VwYXJhdG9yKGJ1ZmZlcltpXSkpCisgICAgICAgICAg
ICBpKys7CisgICAgICAgIGtleUVuZCA9IGk7CisKKyAgICAgICAgLy8gc2tpcCB0byBmaXJzdCAn
PScsIGJ1dCBkb24ndCBza2lwIHBhc3QgYSAnLCcgb3IgdGhlIGVuZCBvZiB0aGUgc3RyaW5nCisg
ICAgICAgIHdoaWxlIChidWZmZXJbaV0gIT0gJz0nKSB7CisgICAgICAgICAgICBpZiAoYnVmZmVy
W2ldID09ICcsJyB8fCBpID49IGxlbmd0aCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGkrKzsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHNraXAgdG8gZmlyc3Qgbm9uLXNl
cGFyYXRvciwgYnV0IGRvbid0IHNraXAgcGFzdCBhICcsJyBvciB0aGUgZW5kIG9mIHRoZSBzdHJp
bmcKKyAgICAgICAgd2hpbGUgKGlzU2VwYXJhdG9yKGJ1ZmZlcltpXSkpIHsKKyAgICAgICAgICAg
IGlmIChidWZmZXJbaV0gPT0gJywnIHx8IGkgPj0gbGVuZ3RoKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIHZhbHVlQmVnaW4gPSBp
OworCisgICAgICAgIC8vIHNraXAgdG8gZmlyc3Qgc2VwYXJhdG9yCisgICAgICAgIHdoaWxlICgh
aXNTZXBhcmF0b3IoYnVmZmVyW2ldKSkKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgdmFsdWVF
bmQgPSBpOworCisgICAgICAgIEFTU0VSVChpIDw9IGxlbmd0aCk7CisKKyAgICAgICAgU3RyaW5n
IGtleVN0cmluZyA9IGJ1ZmZlci5zdWJzdHJpbmcoa2V5QmVnaW4sIGtleUVuZCAtIGtleUJlZ2lu
KTsKKyAgICAgICAgU3RyaW5nIHZhbHVlU3RyaW5nID0gYnVmZmVyLnN1YnN0cmluZyh2YWx1ZUJl
Z2luLCB2YWx1ZUVuZCAtIHZhbHVlQmVnaW4pOworICAgICAgICBjYWxsYmFjayhrZXlTdHJpbmcs
IHZhbHVlU3RyaW5nLCB0aGlzLCBkYXRhKTsKKyAgICB9Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnBy
b2Nlc3NWaWV3cG9ydChjb25zdCBTdHJpbmcmIGZlYXR1cmVzKQoreworICAgIEFTU0VSVCghZmVh
dHVyZXMuaXNOdWxsKCkpOworCisgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAg
ICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBWaWV3cG9ydEFyZ3VtZW50cyBh
cmd1bWVudHM7CisgICAgcHJvY2Vzc0FyZ3VtZW50cyhmZWF0dXJlcywgKHZvaWQqKSZhcmd1bWVu
dHMsICZzZXRWaWV3cG9ydEZlYXR1cmUpOworCisgICAgaWYgKGZyYW1lLT5wYWdlKCkpCisgICAg
ICAgIGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVZpZXdwb3J0
QXJndW1lbnRzKGZyYW1lLCBhcmd1bWVudHMpOworfQorCiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzIERvY3VtZW50OjpwcmVwYXJlTW91c2VFdmVudChjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgSW50UG9pbnQmIGRvY3VtZW50UG9pbnQsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZlbnQpCiB7CiAgICAgQVNTRVJUKCFyZW5kZXJlcigpIHx8IHJlbmRlcmVyKCkt
PmlzUmVuZGVyVmlldygpKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNTY1NTMpCisrKyBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OTgsNyArNjk4LDggQEAgcHVibGlj
OgogICAgICAqIEBwYXJhbSBjb250ZW50IFRoZSBoZWFkZXIgdmFsdWUgKHZhbHVlIG9mIHRoZSBt
ZXRhIHRhZydzICJjb250ZW50IiBhdHRyaWJ1dGUpCiAgICAgICovCiAgICAgdm9pZCBwcm9jZXNz
SHR0cEVxdWl2KGNvbnN0IFN0cmluZyYgZXF1aXYsIGNvbnN0IFN0cmluZyYgY29udGVudCk7Ci0g
ICAgCisgICAgdm9pZCBwcm9jZXNzVmlld3BvcnQoY29uc3QgU3RyaW5nJiBmZWF0dXJlcyk7CisK
ICAgICAvLyBSZXR1cm5zIHRoZSBvd25pbmcgZWxlbWVudCBpbiB0aGUgcGFyZW50IGRvY3VtZW50
LgogICAgIC8vIFJldHVybnMgMCBpZiB0aGlzIGlzIHRoZSB0b3AgbGV2ZWwgZG9jdW1lbnQuCiAg
ICAgRWxlbWVudCogb3duZXJFbGVtZW50KCkgY29uc3Q7CkBAIC05NzIsNiArOTczLDEwIEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIGNsZWFyWE1MVmVyc2lvbigpIHsgbV94bWxWZXJzaW9uID0gU3Ry
aW5nKCk7IH0KIAogcHJpdmF0ZToKKworICAgIHR5cGVkZWYgdm9pZCAoKkFyZ3VtZW50c0NhbGxi
YWNrKShjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywg
RG9jdW1lbnQqLCB2b2lkKiBkYXRhKTsKKyAgICB2b2lkIHByb2Nlc3NBcmd1bWVudHMoY29uc3Qg
U3RyaW5nJiBmZWF0dXJlcywgdm9pZCogZGF0YSwgQXJndW1lbnRzQ2FsbGJhY2spOworCiAgICAg
dmlydHVhbCBib29sIGlzRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGVybWluZVBh
cnNlTW9kZSgpIHsgfQpJbmRleDogV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25v
bGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlz
dG9Aa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJA
a2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEB3
ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBU
b3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1v
YmlsZS5jb20vKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpZXdwb3J0QXJn
dW1lbnRzLmgiCisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDb25zb2xlLmgiCisj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJG
cmFtZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgIlRva2VuaXplci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgc2V0
Vmlld3BvcnRGZWF0dXJlKGNvbnN0IFN0cmluZyYga2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZh
bHVlU3RyaW5nLCBEb2N1bWVudCogZG9jdW1lbnQsIHZvaWQqIGRhdGEpCit7CisgICAgVmlld3Bv
cnRBcmd1bWVudHMqIGFyZ3VtZW50cyA9IHN0YXRpY19jYXN0PFZpZXdwb3J0QXJndW1lbnRzKj4o
ZGF0YSk7CisgICAgZmxvYXQgdmFsdWUgPSBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVVbmRlZmlu
ZWQ7CisgICAgYm9vbCBkaWRVc2VDb25zdGFudHMgPSBmYWxzZTsKKworICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSh2YWx1ZVN0cmluZywgInllcyIpKQorICAgICAgICB2YWx1ZSA9IDE7CisgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWVTdHJpbmcsICJkZXZpY2Utd2lkdGgiKSkg
eworICAgICAgICBkaWRVc2VDb25zdGFudHMgPSB0cnVlOworICAgICAgICBpZiAoZG9jdW1lbnQt
PnBhZ2UoKSkKKyAgICAgICAgICAgIHZhbHVlID0gZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkt
PndpbmRvd1JlY3QoKS53aWR0aCgpOworICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
dmFsdWVTdHJpbmcsICJkZXZpY2UtaGVpZ2h0IikpIHsKKyAgICAgICAgZGlkVXNlQ29uc3RhbnRz
ID0gdHJ1ZTsKKyAgICAgICAgaWYgKGRvY3VtZW50LT5wYWdlKCkpCisgICAgICAgICAgICB2YWx1
ZSA9IGRvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLT53aW5kb3dSZWN0KCkuaGVpZ2h0KCk7Cisg
ICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZVN0cmluZywgImRlZmF1bHQiKSkg
Ly8gVGhpcyBhbGxvd3MgdXMgdG8gZGlzdGluZ3Vpc2ggdGhlIG9taXNzaW9uIG9mIGEga2V5IGZy
b20gYXNraW5nIGZvciB0aGUgZGVmYXVsdCB2YWx1ZS4KKyAgICAgICAgdmFsdWUgPSAtMjsKKyAg
ICBlbHNlIGlmICh2YWx1ZVN0cmluZy5sZW5ndGgoKSkgLy8gbGlzdGluZyBhIGtleSB3aXRoIG5v
IHZhbHVlIGlzIHNob3J0aGFuZCBmb3Iga2V5PWRlZmF1bHQKKyAgICAgICAgdmFsdWUgPSB2YWx1
ZVN0cmluZy50b0Zsb2F0KCk7CisKKyAgICBpZiAoa2V5U3RyaW5nID09ICJpbml0aWFsLXNjYWxl
IikKKyAgICAgICAgYXJndW1lbnRzLT5pbml0aWFsU2NhbGUgPSB2YWx1ZTsKKyAgICBlbHNlIGlm
IChrZXlTdHJpbmcgPT0gIm1pbmltdW0tc2NhbGUiKQorICAgICAgICBhcmd1bWVudHMtPm1pbmlt
dW1TY2FsZSA9IHZhbHVlOworICAgIGVsc2UgaWYgKGtleVN0cmluZyA9PSAibWF4aW11bS1zY2Fs
ZSIpIHsKKyAgICAgICAgYXJndW1lbnRzLT5tYXhpbXVtU2NhbGUgPSB2YWx1ZTsKKyAgICAgICAg
aWYgKHZhbHVlID4gMTAuMCkKKyAgICAgICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1
bWVudCwgTWF4aW11bVNjYWxlVG9vTGFyZ2VFcnJvciwga2V5U3RyaW5nKTsKKyAgICB9IGVsc2Ug
aWYgKGtleVN0cmluZyA9PSAidXNlci1zY2FsYWJsZSIpCisgICAgICAgIGFyZ3VtZW50cy0+dXNl
clNjYWxhYmxlID0gdmFsdWU7CisgICAgZWxzZSBpZiAoa2V5U3RyaW5nID09ICJ3aWR0aCIpIHsK
KyAgICAgICAgaWYgKGRvY3VtZW50LT5wYWdlKCkgJiYgdmFsdWUgPT0gZG9jdW1lbnQtPnBhZ2Uo
KS0+Y2hyb21lKCktPndpbmRvd1JlY3QoKS53aWR0aCgpICYmICFkaWRVc2VDb25zdGFudHMpCisg
ICAgICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQsIERldmljZVdpZHRoU2hv
dWxkQmVVc2VkV2FybmluZywga2V5U3RyaW5nKTsKKyAgICAgICAgZWxzZSBpZiAoZG9jdW1lbnQt
PnBhZ2UoKSAmJiB2YWx1ZSA9PSBkb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS0+d2luZG93UmVj
dCgpLmhlaWdodCgpICYmICFkaWRVc2VDb25zdGFudHMpCisgICAgICAgICAgICByZXBvcnRWaWV3
cG9ydFdhcm5pbmcoZG9jdW1lbnQsIERldmljZUhlaWdodFNob3VsZEJlVXNlZFdhcm5pbmcsIGtl
eVN0cmluZyk7CisKKyAgICAgICAgYXJndW1lbnRzLT53aWR0aCA9IHZhbHVlOworICAgIH0gZWxz
ZSBpZiAoa2V5U3RyaW5nID09ICJoZWlnaHQiKSB7CisgICAgICAgIGlmIChkb2N1bWVudC0+cGFn
ZSgpICYmIHZhbHVlID09IGRvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLT53aW5kb3dSZWN0KCku
d2lkdGgoKSAmJiAhZGlkVXNlQ29uc3RhbnRzKQorICAgICAgICAgICAgcmVwb3J0Vmlld3BvcnRX
YXJuaW5nKGRvY3VtZW50LCBEZXZpY2VXaWR0aFNob3VsZEJlVXNlZFdhcm5pbmcsIGtleVN0cmlu
Zyk7CisgICAgICAgIGVsc2UgaWYgKGRvY3VtZW50LT5wYWdlKCkgJiYgdmFsdWUgPT0gZG9jdW1l
bnQtPnBhZ2UoKS0+Y2hyb21lKCktPndpbmRvd1JlY3QoKS5oZWlnaHQoKSAmJiAhZGlkVXNlQ29u
c3RhbnRzKQorICAgICAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBEZXZp
Y2VIZWlnaHRTaG91bGRCZVVzZWRXYXJuaW5nLCBrZXlTdHJpbmcpOworICAgICAgICAKKyAgICAg
ICAgYXJndW1lbnRzLT5oZWlnaHQgPSB2YWx1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVwb3J0
Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50RXJy
b3IsIGtleVN0cmluZyk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiB2aWV3cG9ydEVycm9yTWVz
c2FnZVRlbXBsYXRlKFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSkKK3sKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3QgZXJyb3JzW10gPSB7IAorICAgICAgICAiVmlld3BvcnQgd2lkdGgg
b3IgaGVpZ2h0IHNldCB0byBwaHlzaWNhbCBkZXZpY2Ugd2lkdGgsIHRyeSB1c2luZyBcImRldmlj
ZS13aWR0aFwiIGNvbnN0YW50IGluc3RlYWQgZm9yIGZ1dHVyZSBjb21wYXRpYmlsaXR5LiIsCisg
ICAgICAgICJWaWV3cG9ydCBoZWlnaHQgb3IgaGVpZ2h0IHNldCB0byBwaHlzaWNhbCBkZXZpY2Ug
aGVpZ2h0LCB0cnkgdXNpbmcgXCJkZXZpY2UtaGVpZ2h0XCIgY29uc3RhbnQgaW5zdGVhZCBmb3Ig
ZnV0dXJlIGNvbXBhdGliaWxpdHkuIiwKKyAgICAgICAgIlZpZXdwb3J0IGFyZ3VtZW50IFwiJXJl
cGxhY2VtZW50XCIgbm90IHJlY29nbml6ZWQuIENvbnRlbnQgaWdub3JlZC4iLAorICAgICAgICAi
Vmlld3BvcnQgbWF4aW11bS1zY2FsZSBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gMTAuMC4gIFRoZSBt
YXhpbXVtLXNjYWxlIHdpbGwgYmUgc2V0IHRvIDEwLjAuIgorICAgIH07CisKKyAgICByZXR1cm4g
ZXJyb3JzW2Vycm9yQ29kZV07Cit9CisKK3N0YXRpYyBNZXNzYWdlTGV2ZWwgdmlld3BvcnRFcnJv
ck1lc3NhZ2VMZXZlbChWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUpCit7CisgICAgcmV0dXJu
IGVycm9yQ29kZSA9PSBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50RXJyb3IgfHwgZXJyb3JD
b2RlID09IE1heGltdW1TY2FsZVRvb0xhcmdlRXJyb3IgPyBFcnJvck1lc3NhZ2VMZXZlbCA6IFRp
cE1lc3NhZ2VMZXZlbDsKK30KKwordm9pZCByZXBvcnRWaWV3cG9ydFdhcm5pbmcoRG9jdW1lbnQq
IGRvY3VtZW50LCBWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnQpCit7CisgICAgVG9rZW5pemVyKiB0b2tlbml6ZXIgPSBkb2N1bWVudC0+dG9rZW5p
emVyKCk7CisKKyAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBpZiAo
IWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmcgbWVzc2FnZSA9IHZpZXdwb3J0
RXJyb3JNZXNzYWdlVGVtcGxhdGUoZXJyb3JDb2RlKTsKKyAgICBtZXNzYWdlLnJlcGxhY2UoIiVy
ZXBsYWNlbWVudCIsIHJlcGxhY2VtZW50KTsKKworICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29u
c29sZSgpLT5hZGRNZXNzYWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgdmll
d3BvcnRFcnJvck1lc3NhZ2VMZXZlbChlcnJvckNvZGUpLCBtZXNzYWdlLCB0b2tlbml6ZXIgPyB0
b2tlbml6ZXItPmxpbmVOdW1iZXIoKSArIDEgOiAwLCBkb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9WaWV3cG9y
dEFyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlz
dG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVy
IChtdWVsbGVyQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5
YWtvdiAoYXBAd2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93
d3cudG9yY2htb2JpbGUuY29tLykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgVmlld3BvcnRBcmd1bWVudHNfaAorI2Rl
ZmluZSBWaWV3cG9ydEFyZ3VtZW50c19oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
RG9jdW1lbnQ7CitjbGFzcyBTdHJpbmc7CisKK2VudW0gVmlld3BvcnRFcnJvckNvZGUgeworICAg
IERldmljZVdpZHRoU2hvdWxkQmVVc2VkV2FybmluZywKKyAgICBEZXZpY2VIZWlnaHRTaG91bGRC
ZVVzZWRXYXJuaW5nLAorICAgIFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRFcnJvciwKKyAg
ICBNYXhpbXVtU2NhbGVUb29MYXJnZUVycm9yCit9OworCitzdHJ1Y3QgVmlld3BvcnRBcmd1bWVu
dHMgeworCisgICAgZW51bSB7IFZhbHVlVW5kZWZpbmVkID0gLTEgfTsKKworICAgIFZpZXdwb3J0
QXJndW1lbnRzKCkKKyAgICAgICAgOiBpbml0aWFsU2NhbGUoVmFsdWVVbmRlZmluZWQpCisgICAg
ICAgICwgbWluaW11bVNjYWxlKFZhbHVlVW5kZWZpbmVkKQorICAgICAgICAsIG1heGltdW1TY2Fs
ZShWYWx1ZVVuZGVmaW5lZCkKKyAgICAgICAgLCB3aWR0aChWYWx1ZVVuZGVmaW5lZCkKKyAgICAg
ICAgLCBoZWlnaHQoVmFsdWVVbmRlZmluZWQpCisgICAgICAgICwgdXNlclNjYWxhYmxlKFZhbHVl
VW5kZWZpbmVkKQorICAgIHsKKyAgICB9CisKKyAgICBmbG9hdCBpbml0aWFsU2NhbGU7CisgICAg
ZmxvYXQgbWluaW11bVNjYWxlOworICAgIGZsb2F0IG1heGltdW1TY2FsZTsKKyAgICBmbG9hdCB3
aWR0aDsKKyAgICBmbG9hdCBoZWlnaHQ7CisKKyAgICBmbG9hdCB1c2VyU2NhbGFibGU7CisKKyAg
ICBib29sIGhhc0N1c3RvbUFyZ3VtZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBp
bml0aWFsU2NhbGUgIT0gVmFsdWVVbmRlZmluZWQgfHwgbWluaW11bVNjYWxlICE9IFZhbHVlVW5k
ZWZpbmVkIHx8IG1heGltdW1TY2FsZSAhPSBWYWx1ZVVuZGVmaW5lZCB8fCB3aWR0aCAhPSBWYWx1
ZVVuZGVmaW5lZCB8fCBoZWlnaHQgIT0gVmFsdWVVbmRlZmluZWQgfHwgdXNlclNjYWxhYmxlICE9
IFZhbHVlVW5kZWZpbmVkOworICAgIH0KK307CisKK3ZvaWQgc2V0Vmlld3BvcnRGZWF0dXJlKGNv
bnN0IFN0cmluZyYga2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBEb2N1bWVu
dCosIHZvaWQqIGRhdGEpOwordm9pZCByZXBvcnRWaWV3cG9ydFdhcm5pbmcoRG9jdW1lbnQqLCBW
aWV3cG9ydEVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCk7CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFZpZXdwb3J0QXJndW1lbnRzX2gKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MTWV0YUVsZW1lbnQuY3BwCShyZXZpc2lvbiA1NjU1MykKKysrIFdlYkNvcmUvaHRtbC9I
VE1MTWV0YUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw5ICs2MywxNSBAQCB2b2lk
IEhUTUxNZXRhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lCiAKIHZvaWQgSFRNTE1ldGFFbGVt
ZW50Ojpwcm9jZXNzKCkKIHsKKyAgICBpZiAoIWluRG9jdW1lbnQoKSB8fCBtX2NvbnRlbnQuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1l
KCksICJ2aWV3cG9ydCIpKQorICAgICAgICBkb2N1bWVudCgpLT5wcm9jZXNzVmlld3BvcnQobV9j
b250ZW50KTsKKwogICAgIC8vIEdldCB0aGUgZG9jdW1lbnQgdG8gcHJvY2VzcyB0aGUgdGFnLCBi
dXQgb25seSBpZiB3ZSdyZSBhY3R1YWxseSBwYXJ0IG9mIERPTSB0cmVlIChjaGFuZ2luZyBhIG1l
dGEgdGFnIHdoaWxlCiAgICAgLy8gaXQncyBub3QgaW4gdGhlIHRyZWUgc2hvdWxkbid0IGhhdmUg
YW55IGVmZmVjdCBvbiB0aGUgZG9jdW1lbnQpCi0gICAgaWYgKGluRG9jdW1lbnQoKSAmJiAhbV9l
cXVpdi5pc051bGwoKSAmJiAhbV9jb250ZW50LmlzTnVsbCgpKQorICAgIGlmICghbV9lcXVpdi5p
c051bGwoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+cHJvY2Vzc0h0dHBFcXVpdihtX2VxdWl2LCBt
X2NvbnRlbnQpOwogfQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiA1NjU1MykKKysr
IFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgV2lkZ2V0OwogCiAgICAgc3RydWN0
IEZyYW1lTG9hZFJlcXVlc3Q7CisgICAgc3RydWN0IFZpZXdwb3J0QXJndW1lbnRzOwogICAgIHN0
cnVjdCBXaW5kb3dGZWF0dXJlczsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
QEAgLTE0NSw2ICsxNDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIHNldFRvb2xUaXAoY29uc3QgU3RyaW5nJiwgVGV4dERpcmVjdGlvbikgPSAwOwogCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMoRnJhbWUqLCBj
b25zdCBWaWV3cG9ydEFyZ3VtZW50cyYpIGNvbnN0IHsgfQorCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwcmludChGcmFtZSopID0gMDsKIAogI2lmIEVOQUJMRShEQVRBQkFTRSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51761</attachid>
            <date>2010-03-26 10:57:22 -0700</date>
            <delta_ts>2010-04-16 17:16:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Bug36312_032610_2.patch</filename>
            <type>text/plain</type>
            <size>22731</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjYyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTAtMDMtMjYgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjMxMgorCisgICAgICAgIEFkZHMg
c3VwcG9ydCBmb3IgdGhlIHZpZXdwb3J0IG1ldGEgdGFnLiBUaGUgY29kZSBpcyBsYXJnZWx5IGRl
cml2ZWQgaW4gd2hvbGUKKyAgICAgICAgb3IgaW4gcGFydCBmcm9tIHRoZSBXZWJDb3JlLTUyOC4x
NSBzb3VyY2UgcHVibGlzaGVkIGFzIHBhcnQgb2YgdGhlIGlQaG9uZSAzLjEuMworICAgICAgICBz
b3VyY2UgY29kZSA8aHR0cDovL3d3dy5vcGVuc291cmNlLmFwcGxlLmNvbS9zb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLTUyOC4xNS8+LgorCisgICAgICAgICogQW5kcm9pZC5tazogQWRkZWQgZmlsZSBW
aWV3cG9ydEFyZ3VtZW50cy5jcHAuCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZGVkIGZp
bGVzIFZpZXdwb3J0QXJndW1lbnRzLmNwcCBhbmQgVmlld3BvcnRBcmd1bWVudHMuaC4KKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBEaXR0by4K
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTZXBhcmF0b3IpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNzQXJndW1lbnRzKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0KTogQWRkZWQuCisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRWaWV3cG9ydEZlYXR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6dmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjp2aWV3cG9ydEVycm9yTWVzc2FnZUxldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9y
dFZpZXdwb3J0V2FybmluZyk6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzOjopOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZpZXdwb3J0
QXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpoYXNDdXN0
b21Bcmd1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50Ojpwcm9jZXNzKTogTW9kaWZpZWQgdG8gY2FsbCBE
b2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0LgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3Vt
ZW50cyk6IEFkZGVkLgorCiAyMDEwLTAzLTI2ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5v
a2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KSW5kZXg6IFdl
YkNvcmUvQW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQubWsJKHJldmlz
aW9uIDU2NTUzKQorKysgV2ViQ29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMs
NiArMTczLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJZG9t
L1RyZWVXYWxrZXIuY3BwIFwKIAlkb20vVUlFdmVudC5jcHAgXAogCWRvbS9VSUV2ZW50V2l0aEtl
eVN0YXRlLmNwcCBcCisJZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcCBcCiAJZG9tL1dlYktpdEFu
aW1hdGlvbkV2ZW50LmNwcCBcCiAJZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgXAogCWRv
bS9XaGVlbEV2ZW50LmNwcCBcCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDU2NTUzKQorKysgV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtODY1LDYgKzg2NSw4IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9kb20vVUlFdmVudC5oIFwKIAlXZWJDb3JlL2RvbS9V
SUV2ZW50V2l0aEtleVN0YXRlLmNwcCBcCiAJV2ViQ29yZS9kb20vVUlFdmVudFdpdGhLZXlTdGF0
ZS5oIFwKKwlXZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAgXAorCVdlYkNvcmUvZG9t
L1ZpZXdwb3J0QXJndW1lbnRzLmggXAogCVdlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50
LmNwcCBcCiAJV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBcCiAJV2ViQ29yZS9k
b20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNTY1NTMpCisr
KyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTIyNiw2ICsxMjI2LDgg
QEAKICAgICAgICAgICAgICdkb20vVUlFdmVudC5oJywKICAgICAgICAgICAgICdkb20vVUlFdmVu
dFdpdGhLZXlTdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ2RvbS9VSUV2ZW50V2l0aEtleVN0YXRl
LmgnLAorICAgICAgICAgICAgJ2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAnLAorICAgICAgICAg
ICAgJ2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oJywKICAgICAgICAgICAgICdkb20vV2ViS2l0QW5p
bWF0aW9uRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQu
aCcsCiAgICAgICAgICAgICAnZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAnLApJbmRleDog
V2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShy
ZXZpc2lvbiA1NjU1MykKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAg
LTUzMiw2ICs1MzIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vVHJlZVdhbGtlci5jcHAgXAog
ICAgIGRvbS9VSUV2ZW50LmNwcCBcCiAgICAgZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuY3BwIFwK
KyAgICBkb20vVmlld3BvcnRBcmd1bWVudHMuY3BwIFwKICAgICBkb20vV2ViS2l0QW5pbWF0aW9u
RXZlbnQuY3BwIFwKICAgICBkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCBcCiAgICAgZG9t
L1doZWVsRXZlbnQuY3BwIFwKQEAgLTEyNDMsNiArMTI0NCw3IEBAIEhFQURFUlMgKz0gXAogICAg
IGRvbS9UcmVlV2Fsa2VyLmggXAogICAgIGRvbS9VSUV2ZW50LmggXAogICAgIGRvbS9VSUV2ZW50
V2l0aEtleVN0YXRlLmggXAorICAgIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5oIFwKICAgICBkb20v
V2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBcCiAgICAgZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5o
IFwKICAgICBkb20vV2hlZWxFdmVudC5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkocmV2aXNpb24gNTY1NTMpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQ3Myw2ICsyOTQ3MywxNCBAQAogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cVmll
d3BvcnRBcmd1bWVudHMuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cZG9tXFZpZXdwb3J0QXJndW1lbnRzLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cV2ViS2l0QW5pbWF0
aW9uRXZlbnQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1NjU1MykKKysrIFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00Njk4
LDYgKzQ2OTgsOCBAQAogCQlDRTRDMDBFNDEwRjZGN0JBMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTRDMDBFMzEwRjZGN0JBMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAgKi87
IH07CiAJCUNFNEMwMEU2MTBGNkY3QzEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTRDMDBFNTEw
RjZGN0MxMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5oICovOyB9OwogCQlDRTU0RkQz
ODEwMTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0U291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNTRGRDM3MTAxNkQ5QTYwMDhCNDRD
OCAvKiBTY3JpcHRTb3VyY2VQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUNFNzE5OTU0MTE1QzEyMDMwMERBRTc4OSAvKiBWaWV3cG9y
dEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0U3MTk5NTIxMTVDMTIwMzAwREFFNzg5IC8qIFZpZXdwb3J0QXJndW1lbnRzLmggKi87IH07
CisJCUNFNzE5OTU1MTE1QzEyMDMwMERBRTc4OSAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTcxOTk1MzExNUMx
MjAzMDBEQUU3ODkgLyogVmlld3BvcnRBcmd1bWVudHMuY3BwICovOyB9OwogCQlEMDFBMjdBRDEw
QzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMDFBMjdBQjEwQzlCRkQ4MDAwMjZBNDIgLyog
U3BhY2VTcGxpdFN0cmluZy5jcHAgKi87IH07CiAJCUQwMUEyN0FFMTBDOUJGRDgwMDAyNkE0MiAv
KiBTcGFjZVNwbGl0U3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBEMDFBMjdBQzEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUQwNUNF
RDI5MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDA1Q0VEMjcwQTQwQkIyQzAwQzVB
RjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5jcHAgKi87IH07CkBAIC0xMDA0NSw2ICsxMDA0Nyw4
IEBACiAJCUNFNEMwMEUzMTBGNkY3QkEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxOb1NjcmlwdEVsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTRDMDBFNTEwRjZGN0MxMDBD
QTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIVE1MTm9TY3JpcHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFNTRGRDM3MTAxNkQ5QTYwMDhCNDRDOCAvKiBTY3JpcHRTb3VyY2VQcm92aWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRTb3VyY2VQcm92aWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTcxOTk1MjExNUMxMjAzMDBEQUU3ODkgLyog
Vmlld3BvcnRBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmll
d3BvcnRBcmd1bWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U3MTk5NTMx
MTVDMTIwMzAwREFFNzg5IC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZXdwb3J0QXJndW1lbnRzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDAxQTI3QUIxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRT
dHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BhY2VTcGxp
dFN0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMUEyN0FDMTBDOUJG
RDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNwYWNlU3BsaXRTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRDA1Q0VEMjcwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0QmxvY2tDb21tYW5kLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjExLDYgKzE2MjE1LDggQEAKIAkJ
CQkxNDFCOTRFRTA5RUM0MjVBMDAwRTk0MTMgLyogVUlFdmVudC5pZGwgKi8sCiAJCQkJOTMzNTRB
M0IwQjI0RjhDOTAwM0Y2REVBIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuY3BwICovLAogCQkJCTg1
MDMxQjM5MEE0NEVGQzcwMEY5OTJFMCAvKiBVSUV2ZW50V2l0aEtleVN0YXRlLmggKi8sCisJCQkJ
Q0U3MTk5NTMxMTVDMTIwMzAwREFFNzg5IC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCAqLywKKwkJ
CQlDRTcxOTk1MjExNUMxMjAzMDBEQUU3ODkgLyogVmlld3BvcnRBcmd1bWVudHMuaCAqLywKIAkJ
CQkzMUMwRkYxQjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwICov
LAogCQkJCTMxQzBGRjFDMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5o
ICovLAogCQkJCTMxQzBGRjFEMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVu
dC5pZGwgKi8sCkBAIC0xODc2NSw2ICsxODc3MSw3IEBACiAJCQkJQTUxM0IzRDcxMTRCMTY2NjAw
MUM0MjlCIC8qIEtleUV2ZW50Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTYyQ0QzMjVBMTE1
N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ3NzhC
ODAxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUNFNzE5OTU0MTE1QzEyMDMwMERBRTc4OSAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yMDk4MCw2ICsyMDk4Nyw3IEBACiAJCQkJQTUxM0IzRDgxMTRCMTY2QTAwMUM0
MjlCIC8qIEtleUV2ZW50Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk2MkNEMzI1OTExNTdF
NTdDMDA2M0IwQTcgLyogQ3VzdG9tRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ3NzhC
N0YxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0U3MTk5NTUxMTVDMTIwMzAwREFFNzg5IC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNTY1NTMpCisrKyBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsxMjcsNyBAQAogI2luY2x1
ZGUgIlRyZWVXYWxrZXIuaCIKICNpbmNsdWRlICJVSUV2ZW50LmgiCiAjaW5jbHVkZSAiVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmgiCisjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNs
dWRlICJXZWJLaXRBbmltYXRpb25FdmVudC5oIgogI2luY2x1ZGUgIldlYktpdFRyYW5zaXRpb25F
dmVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKQEAgLTIyODIsNiArMjI4Myw3OCBAQCB2
b2lkIERvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KGNvbnN0IFN0CiAgICAgfQogfQogCisvLyBU
aG91Z2ggaXNzcGFjZSgpIGNvbnNpZGVycyBcdCBhbmQgXHYgdG8gYmUgd2hpdGVzcGFjZSwgV2lu
IElFIGRvZXNuJ3QuCitzdGF0aWMgYm9vbCBpc1NlcGFyYXRvcihVQ2hhciBjKQoreworICAgIHJl
dHVybiBjID09ICcgJyB8fCBjID09ICdcdCcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8fCBj
ID09ICc9JyB8fCBjID09ICcsJyB8fCBjID09ICdcMCc7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnBy
b2Nlc3NBcmd1bWVudHMoY29uc3QgU3RyaW5nJiBmZWF0dXJlcywgdm9pZCogZGF0YSwgQXJndW1l
bnRzQ2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgLy8gVHJlYWQgbGlnaHRseSBpbiB0aGlzIGNv
ZGUgLS0gaXQgd2FzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBtaW1pYyBXaW4gSUUncyBwYXJz
aW5nIGJlaGF2aW9yLgorICAgIGludCBrZXlCZWdpbiwga2V5RW5kOworICAgIGludCB2YWx1ZUJl
Z2luLCB2YWx1ZUVuZDsKKworICAgIGludCBpID0gMDsKKyAgICBpbnQgbGVuZ3RoID0gZmVhdHVy
ZXMubGVuZ3RoKCk7CisgICAgU3RyaW5nIGJ1ZmZlciA9IGZlYXR1cmVzLmxvd2VyKCk7CisgICAg
d2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAgLy8gc2tpcCB0byBmaXJzdCBub24tc2VwYXJh
dG9yLCBidXQgZG9uJ3Qgc2tpcCBwYXN0IHRoZSBlbmQgb2YgdGhlIHN0cmluZworICAgICAgICB3
aGlsZSAoaXNTZXBhcmF0b3IoYnVmZmVyW2ldKSkgeworICAgICAgICAgICAgaWYgKGkgPj0gbGVu
Z3RoKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9
CisgICAgICAgIGtleUJlZ2luID0gaTsKKworICAgICAgICAvLyBza2lwIHRvIGZpcnN0IHNlcGFy
YXRvcgorICAgICAgICB3aGlsZSAoIWlzU2VwYXJhdG9yKGJ1ZmZlcltpXSkpCisgICAgICAgICAg
ICBpKys7CisgICAgICAgIGtleUVuZCA9IGk7CisKKyAgICAgICAgLy8gc2tpcCB0byBmaXJzdCAn
PScsIGJ1dCBkb24ndCBza2lwIHBhc3QgYSAnLCcgb3IgdGhlIGVuZCBvZiB0aGUgc3RyaW5nCisg
ICAgICAgIHdoaWxlIChidWZmZXJbaV0gIT0gJz0nKSB7CisgICAgICAgICAgICBpZiAoYnVmZmVy
W2ldID09ICcsJyB8fCBpID49IGxlbmd0aCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGkrKzsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHNraXAgdG8gZmlyc3Qgbm9uLXNl
cGFyYXRvciwgYnV0IGRvbid0IHNraXAgcGFzdCBhICcsJyBvciB0aGUgZW5kIG9mIHRoZSBzdHJp
bmcKKyAgICAgICAgd2hpbGUgKGlzU2VwYXJhdG9yKGJ1ZmZlcltpXSkpIHsKKyAgICAgICAgICAg
IGlmIChidWZmZXJbaV0gPT0gJywnIHx8IGkgPj0gbGVuZ3RoKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIHZhbHVlQmVnaW4gPSBp
OworCisgICAgICAgIC8vIHNraXAgdG8gZmlyc3Qgc2VwYXJhdG9yCisgICAgICAgIHdoaWxlICgh
aXNTZXBhcmF0b3IoYnVmZmVyW2ldKSkKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgdmFsdWVF
bmQgPSBpOworCisgICAgICAgIEFTU0VSVChpIDw9IGxlbmd0aCk7CisKKyAgICAgICAgU3RyaW5n
IGtleVN0cmluZyA9IGJ1ZmZlci5zdWJzdHJpbmcoa2V5QmVnaW4sIGtleUVuZCAtIGtleUJlZ2lu
KTsKKyAgICAgICAgU3RyaW5nIHZhbHVlU3RyaW5nID0gYnVmZmVyLnN1YnN0cmluZyh2YWx1ZUJl
Z2luLCB2YWx1ZUVuZCAtIHZhbHVlQmVnaW4pOworICAgICAgICBjYWxsYmFjayhrZXlTdHJpbmcs
IHZhbHVlU3RyaW5nLCB0aGlzLCBkYXRhKTsKKyAgICB9Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnBy
b2Nlc3NWaWV3cG9ydChjb25zdCBTdHJpbmcmIGZlYXR1cmVzKQoreworICAgIEFTU0VSVCghZmVh
dHVyZXMuaXNOdWxsKCkpOworCisgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAg
ICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBWaWV3cG9ydEFyZ3VtZW50cyBh
cmd1bWVudHM7CisgICAgcHJvY2Vzc0FyZ3VtZW50cyhmZWF0dXJlcywgKHZvaWQqKSZhcmd1bWVu
dHMsICZzZXRWaWV3cG9ydEZlYXR1cmUpOworCisgICAgaWYgKGZyYW1lLT5wYWdlKCkpCisgICAg
ICAgIGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVZpZXdwb3J0
QXJndW1lbnRzKGZyYW1lLCBhcmd1bWVudHMpOworfQorCiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzIERvY3VtZW50OjpwcmVwYXJlTW91c2VFdmVudChjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgSW50UG9pbnQmIGRvY3VtZW50UG9pbnQsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZlbnQpCiB7CiAgICAgQVNTRVJUKCFyZW5kZXJlcigpIHx8IHJlbmRlcmVyKCkt
PmlzUmVuZGVyVmlldygpKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNTY1NTMpCisrKyBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OTgsNyArNjk4LDggQEAgcHVibGlj
OgogICAgICAqIEBwYXJhbSBjb250ZW50IFRoZSBoZWFkZXIgdmFsdWUgKHZhbHVlIG9mIHRoZSBt
ZXRhIHRhZydzICJjb250ZW50IiBhdHRyaWJ1dGUpCiAgICAgICovCiAgICAgdm9pZCBwcm9jZXNz
SHR0cEVxdWl2KGNvbnN0IFN0cmluZyYgZXF1aXYsIGNvbnN0IFN0cmluZyYgY29udGVudCk7Ci0g
ICAgCisgICAgdm9pZCBwcm9jZXNzVmlld3BvcnQoY29uc3QgU3RyaW5nJiBmZWF0dXJlcyk7CisK
ICAgICAvLyBSZXR1cm5zIHRoZSBvd25pbmcgZWxlbWVudCBpbiB0aGUgcGFyZW50IGRvY3VtZW50
LgogICAgIC8vIFJldHVybnMgMCBpZiB0aGlzIGlzIHRoZSB0b3AgbGV2ZWwgZG9jdW1lbnQuCiAg
ICAgRWxlbWVudCogb3duZXJFbGVtZW50KCkgY29uc3Q7CkBAIC05NzIsNiArOTczLDEwIEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIGNsZWFyWE1MVmVyc2lvbigpIHsgbV94bWxWZXJzaW9uID0gU3Ry
aW5nKCk7IH0KIAogcHJpdmF0ZToKKworICAgIHR5cGVkZWYgdm9pZCAoKkFyZ3VtZW50c0NhbGxi
YWNrKShjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywg
RG9jdW1lbnQqLCB2b2lkKiBkYXRhKTsKKyAgICB2b2lkIHByb2Nlc3NBcmd1bWVudHMoY29uc3Qg
U3RyaW5nJiBmZWF0dXJlcywgdm9pZCogZGF0YSwgQXJndW1lbnRzQ2FsbGJhY2spOworCiAgICAg
dmlydHVhbCBib29sIGlzRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGVybWluZVBh
cnNlTW9kZSgpIHsgfQpJbmRleDogV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25v
bGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlz
dG9Aa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJA
a2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEB3
ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBU
b3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1v
YmlsZS5jb20vKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpZXdwb3J0QXJn
dW1lbnRzLmgiCisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDb25zb2xlLmgiCisj
aW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJG
cmFtZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgIlRva2VuaXplci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgc2V0
Vmlld3BvcnRGZWF0dXJlKGNvbnN0IFN0cmluZyYga2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZh
bHVlU3RyaW5nLCBEb2N1bWVudCogZG9jdW1lbnQsIHZvaWQqIGRhdGEpCit7CisgICAgVmlld3Bv
cnRBcmd1bWVudHMqIGFyZ3VtZW50cyA9IHN0YXRpY19jYXN0PFZpZXdwb3J0QXJndW1lbnRzKj4o
ZGF0YSk7CisgICAgZmxvYXQgdmFsdWUgPSBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVVbmRlZmlu
ZWQ7CisgICAgYm9vbCBkaWRVc2VDb25zdGFudHMgPSBmYWxzZTsKKworICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSh2YWx1ZVN0cmluZywgInllcyIpKQorICAgICAgICB2YWx1ZSA9IDE7CisgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWVTdHJpbmcsICJkZXZpY2Utd2lkdGgiKSkg
eworICAgICAgICBkaWRVc2VDb25zdGFudHMgPSB0cnVlOworICAgICAgICBpZiAoZG9jdW1lbnQt
PnBhZ2UoKSkKKyAgICAgICAgICAgIHZhbHVlID0gZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkt
PndpbmRvd1JlY3QoKS53aWR0aCgpOworICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
dmFsdWVTdHJpbmcsICJkZXZpY2UtaGVpZ2h0IikpIHsKKyAgICAgICAgZGlkVXNlQ29uc3RhbnRz
ID0gdHJ1ZTsKKyAgICAgICAgaWYgKGRvY3VtZW50LT5wYWdlKCkpCisgICAgICAgICAgICB2YWx1
ZSA9IGRvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLT53aW5kb3dSZWN0KCkuaGVpZ2h0KCk7Cisg
ICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZVN0cmluZywgImRlZmF1bHQiKSkg
Ly8gVGhpcyBhbGxvd3MgdXMgdG8gZGlzdGluZ3Vpc2ggdGhlIG9taXNzaW9uIG9mIGEga2V5IGZy
b20gYXNraW5nIGZvciB0aGUgZGVmYXVsdCB2YWx1ZS4KKyAgICAgICAgdmFsdWUgPSAtMjsKKyAg
ICBlbHNlIGlmICh2YWx1ZVN0cmluZy5sZW5ndGgoKSkgLy8gbGlzdGluZyBhIGtleSB3aXRoIG5v
IHZhbHVlIGlzIHNob3J0aGFuZCBmb3Iga2V5PWRlZmF1bHQKKyAgICAgICAgdmFsdWUgPSB2YWx1
ZVN0cmluZy50b0Zsb2F0KCk7CisKKyAgICBpZiAoa2V5U3RyaW5nID09ICJpbml0aWFsLXNjYWxl
IikKKyAgICAgICAgYXJndW1lbnRzLT5pbml0aWFsU2NhbGUgPSB2YWx1ZTsKKyAgICBlbHNlIGlm
IChrZXlTdHJpbmcgPT0gIm1pbmltdW0tc2NhbGUiKQorICAgICAgICBhcmd1bWVudHMtPm1pbmlt
dW1TY2FsZSA9IHZhbHVlOworICAgIGVsc2UgaWYgKGtleVN0cmluZyA9PSAibWF4aW11bS1zY2Fs
ZSIpIHsKKyAgICAgICAgYXJndW1lbnRzLT5tYXhpbXVtU2NhbGUgPSB2YWx1ZTsKKyAgICAgICAg
aWYgKHZhbHVlID4gMTAuMCkKKyAgICAgICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1
bWVudCwgTWF4aW11bVNjYWxlVG9vTGFyZ2VFcnJvciwga2V5U3RyaW5nKTsKKyAgICB9IGVsc2Ug
aWYgKGtleVN0cmluZyA9PSAidXNlci1zY2FsYWJsZSIpCisgICAgICAgIGFyZ3VtZW50cy0+dXNl
clNjYWxhYmxlID0gdmFsdWU7CisgICAgZWxzZSBpZiAoa2V5U3RyaW5nID09ICJ3aWR0aCIpIHsK
KyAgICAgICAgaWYgKGRvY3VtZW50LT5wYWdlKCkgJiYgdmFsdWUgPT0gZG9jdW1lbnQtPnBhZ2Uo
KS0+Y2hyb21lKCktPndpbmRvd1JlY3QoKS53aWR0aCgpICYmICFkaWRVc2VDb25zdGFudHMpCisg
ICAgICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQsIERldmljZVdpZHRoU2hv
dWxkQmVVc2VkV2FybmluZywga2V5U3RyaW5nKTsKKyAgICAgICAgZWxzZSBpZiAoZG9jdW1lbnQt
PnBhZ2UoKSAmJiB2YWx1ZSA9PSBkb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS0+d2luZG93UmVj
dCgpLmhlaWdodCgpICYmICFkaWRVc2VDb25zdGFudHMpCisgICAgICAgICAgICByZXBvcnRWaWV3
cG9ydFdhcm5pbmcoZG9jdW1lbnQsIERldmljZUhlaWdodFNob3VsZEJlVXNlZFdhcm5pbmcsIGtl
eVN0cmluZyk7CisKKyAgICAgICAgYXJndW1lbnRzLT53aWR0aCA9IHZhbHVlOworICAgIH0gZWxz
ZSBpZiAoa2V5U3RyaW5nID09ICJoZWlnaHQiKSB7CisgICAgICAgIGlmIChkb2N1bWVudC0+cGFn
ZSgpICYmIHZhbHVlID09IGRvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLT53aW5kb3dSZWN0KCku
d2lkdGgoKSAmJiAhZGlkVXNlQ29uc3RhbnRzKQorICAgICAgICAgICAgcmVwb3J0Vmlld3BvcnRX
YXJuaW5nKGRvY3VtZW50LCBEZXZpY2VXaWR0aFNob3VsZEJlVXNlZFdhcm5pbmcsIGtleVN0cmlu
Zyk7CisgICAgICAgIGVsc2UgaWYgKGRvY3VtZW50LT5wYWdlKCkgJiYgdmFsdWUgPT0gZG9jdW1l
bnQtPnBhZ2UoKS0+Y2hyb21lKCktPndpbmRvd1JlY3QoKS5oZWlnaHQoKSAmJiAhZGlkVXNlQ29u
c3RhbnRzKQorICAgICAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBEZXZp
Y2VIZWlnaHRTaG91bGRCZVVzZWRXYXJuaW5nLCBrZXlTdHJpbmcpOworICAgICAgICAKKyAgICAg
ICAgYXJndW1lbnRzLT5oZWlnaHQgPSB2YWx1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVwb3J0
Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50RXJy
b3IsIGtleVN0cmluZyk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiB2aWV3cG9ydEVycm9yTWVz
c2FnZVRlbXBsYXRlKFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSkKK3sKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3QgZXJyb3JzW10gPSB7IAorICAgICAgICAiVmlld3BvcnQgd2lkdGgg
b3IgaGVpZ2h0IHNldCB0byBwaHlzaWNhbCBkZXZpY2Ugd2lkdGgsIHRyeSB1c2luZyBcImRldmlj
ZS13aWR0aFwiIGNvbnN0YW50IGluc3RlYWQgZm9yIGZ1dHVyZSBjb21wYXRpYmlsaXR5LiIsCisg
ICAgICAgICJWaWV3cG9ydCBoZWlnaHQgb3IgaGVpZ2h0IHNldCB0byBwaHlzaWNhbCBkZXZpY2Ug
aGVpZ2h0LCB0cnkgdXNpbmcgXCJkZXZpY2UtaGVpZ2h0XCIgY29uc3RhbnQgaW5zdGVhZCBmb3Ig
ZnV0dXJlIGNvbXBhdGliaWxpdHkuIiwKKyAgICAgICAgIlZpZXdwb3J0IGFyZ3VtZW50IFwiJXJl
cGxhY2VtZW50XCIgbm90IHJlY29nbml6ZWQuIENvbnRlbnQgaWdub3JlZC4iLAorICAgICAgICAi
Vmlld3BvcnQgbWF4aW11bS1zY2FsZSBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gMTAuMC4gIFRoZSBt
YXhpbXVtLXNjYWxlIHdpbGwgYmUgc2V0IHRvIDEwLjAuIgorICAgIH07CisKKyAgICByZXR1cm4g
ZXJyb3JzW2Vycm9yQ29kZV07Cit9CisKK3N0YXRpYyBNZXNzYWdlTGV2ZWwgdmlld3BvcnRFcnJv
ck1lc3NhZ2VMZXZlbChWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUpCit7CisgICAgcmV0dXJu
IGVycm9yQ29kZSA9PSBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50RXJyb3IgfHwgZXJyb3JD
b2RlID09IE1heGltdW1TY2FsZVRvb0xhcmdlRXJyb3IgPyBFcnJvck1lc3NhZ2VMZXZlbCA6IFRp
cE1lc3NhZ2VMZXZlbDsKK30KKwordm9pZCByZXBvcnRWaWV3cG9ydFdhcm5pbmcoRG9jdW1lbnQq
IGRvY3VtZW50LCBWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnQpCit7CisgICAgVG9rZW5pemVyKiB0b2tlbml6ZXIgPSBkb2N1bWVudC0+dG9rZW5p
emVyKCk7CisKKyAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBpZiAo
IWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmcgbWVzc2FnZSA9IHZpZXdwb3J0
RXJyb3JNZXNzYWdlVGVtcGxhdGUoZXJyb3JDb2RlKTsKKyAgICBtZXNzYWdlLnJlcGxhY2UoIiVy
ZXBsYWNlbWVudCIsIHJlcGxhY2VtZW50KTsKKworICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29u
c29sZSgpLT5hZGRNZXNzYWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgdmll
d3BvcnRFcnJvck1lc3NhZ2VMZXZlbChlcnJvckNvZGUpLCBtZXNzYWdlLCB0b2tlbml6ZXIgPyB0
b2tlbml6ZXItPmxpbmVOdW1iZXIoKSArIDEgOiAwLCBkb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9WaWV3cG9y
dEFyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlz
dG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVy
IChtdWVsbGVyQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5
YWtvdiAoYXBAd2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93
d3cudG9yY2htb2JpbGUuY29tLykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgVmlld3BvcnRBcmd1bWVudHNfaAorI2Rl
ZmluZSBWaWV3cG9ydEFyZ3VtZW50c19oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
RG9jdW1lbnQ7CitjbGFzcyBTdHJpbmc7CisKK2VudW0gVmlld3BvcnRFcnJvckNvZGUgeworICAg
IERldmljZVdpZHRoU2hvdWxkQmVVc2VkV2FybmluZywKKyAgICBEZXZpY2VIZWlnaHRTaG91bGRC
ZVVzZWRXYXJuaW5nLAorICAgIFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRFcnJvciwKKyAg
ICBNYXhpbXVtU2NhbGVUb29MYXJnZUVycm9yCit9OworCitzdHJ1Y3QgVmlld3BvcnRBcmd1bWVu
dHMgeworCisgICAgZW51bSB7IFZhbHVlVW5kZWZpbmVkID0gLTEgfTsKKworICAgIFZpZXdwb3J0
QXJndW1lbnRzKCkKKyAgICAgICAgOiBpbml0aWFsU2NhbGUoVmFsdWVVbmRlZmluZWQpCisgICAg
ICAgICwgbWluaW11bVNjYWxlKFZhbHVlVW5kZWZpbmVkKQorICAgICAgICAsIG1heGltdW1TY2Fs
ZShWYWx1ZVVuZGVmaW5lZCkKKyAgICAgICAgLCB3aWR0aChWYWx1ZVVuZGVmaW5lZCkKKyAgICAg
ICAgLCBoZWlnaHQoVmFsdWVVbmRlZmluZWQpCisgICAgICAgICwgdXNlclNjYWxhYmxlKFZhbHVl
VW5kZWZpbmVkKQorICAgIHsKKyAgICB9CisKKyAgICBmbG9hdCBpbml0aWFsU2NhbGU7CisgICAg
ZmxvYXQgbWluaW11bVNjYWxlOworICAgIGZsb2F0IG1heGltdW1TY2FsZTsKKyAgICBmbG9hdCB3
aWR0aDsKKyAgICBmbG9hdCBoZWlnaHQ7CisKKyAgICBmbG9hdCB1c2VyU2NhbGFibGU7CisKKyAg
ICBib29sIGhhc0N1c3RvbUFyZ3VtZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBp
bml0aWFsU2NhbGUgIT0gVmFsdWVVbmRlZmluZWQgfHwgbWluaW11bVNjYWxlICE9IFZhbHVlVW5k
ZWZpbmVkIHx8IG1heGltdW1TY2FsZSAhPSBWYWx1ZVVuZGVmaW5lZCB8fCB3aWR0aCAhPSBWYWx1
ZVVuZGVmaW5lZCB8fCBoZWlnaHQgIT0gVmFsdWVVbmRlZmluZWQgfHwgdXNlclNjYWxhYmxlICE9
IFZhbHVlVW5kZWZpbmVkOworICAgIH0KK307CisKK3ZvaWQgc2V0Vmlld3BvcnRGZWF0dXJlKGNv
bnN0IFN0cmluZyYga2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBEb2N1bWVu
dCosIHZvaWQqIGRhdGEpOwordm9pZCByZXBvcnRWaWV3cG9ydFdhcm5pbmcoRG9jdW1lbnQqLCBW
aWV3cG9ydEVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCk7CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFZpZXdwb3J0QXJndW1lbnRzX2gKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MTWV0YUVsZW1lbnQuY3BwCShyZXZpc2lvbiA1NjU1MykKKysrIFdlYkNvcmUvaHRtbC9I
VE1MTWV0YUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw5ICs2MywxNSBAQCB2b2lk
IEhUTUxNZXRhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lCiAKIHZvaWQgSFRNTE1ldGFFbGVt
ZW50Ojpwcm9jZXNzKCkKIHsKKyAgICBpZiAoIWluRG9jdW1lbnQoKSB8fCBtX2NvbnRlbnQuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1l
KCksICJ2aWV3cG9ydCIpKQorICAgICAgICBkb2N1bWVudCgpLT5wcm9jZXNzVmlld3BvcnQobV9j
b250ZW50KTsKKwogICAgIC8vIEdldCB0aGUgZG9jdW1lbnQgdG8gcHJvY2VzcyB0aGUgdGFnLCBi
dXQgb25seSBpZiB3ZSdyZSBhY3R1YWxseSBwYXJ0IG9mIERPTSB0cmVlIChjaGFuZ2luZyBhIG1l
dGEgdGFnIHdoaWxlCiAgICAgLy8gaXQncyBub3QgaW4gdGhlIHRyZWUgc2hvdWxkbid0IGhhdmUg
YW55IGVmZmVjdCBvbiB0aGUgZG9jdW1lbnQpCi0gICAgaWYgKGluRG9jdW1lbnQoKSAmJiAhbV9l
cXVpdi5pc051bGwoKSAmJiAhbV9jb250ZW50LmlzTnVsbCgpKQorICAgIGlmICghbV9lcXVpdi5p
c051bGwoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+cHJvY2Vzc0h0dHBFcXVpdihtX2VxdWl2LCBt
X2NvbnRlbnQpOwogfQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiA1NjU1MykKKysr
IFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgV2lkZ2V0OwogCiAgICAgc3RydWN0
IEZyYW1lTG9hZFJlcXVlc3Q7CisgICAgc3RydWN0IFZpZXdwb3J0QXJndW1lbnRzOwogICAgIHN0
cnVjdCBXaW5kb3dGZWF0dXJlczsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
QEAgLTE0NSw2ICsxNDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIHNldFRvb2xUaXAoY29uc3QgU3RyaW5nJiwgVGV4dERpcmVjdGlvbikgPSAwOwogCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMoRnJhbWUqLCBj
b25zdCBWaWV3cG9ydEFyZ3VtZW50cyYpIGNvbnN0IHsgfQorCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwcmludChGcmFtZSopID0gMDsKIAogI2lmIEVOQUJMRShEQVRBQkFTRSkK
</data>
<flag name="review"
          id="35099"
          type_id="1"
          status="+"
          setter="manyoso"
    />
          </attachment>
      

    </bug>

</bugzilla>