<?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>68330</bug_id>
          
          <creation_ts>2011-09-18 20:10:03 -0700</creation_ts>
          <short_desc>Expose rangeFromLocationAndLength and locationAndLengthFromRange via internals object</short_desc>
          <delta_ts>2011-10-17 11:27:57 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>69964</dependson>
          <blocked>68333</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>inferno</cc>
    
    <cc>leviw</cc>
    
    <cc>mitz</cc>
    
    <cc>morrita</cc>
    
    <cc>ossy</cc>
    
    <cc>sullivan</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>469219</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-18 20:10:03 -0700</bug_when>
    <thetext>TextIterator is one of the most important class in the editing component yet it&apos;s very under-tested as exemplified by the number of security and non-security bugs we had in this class. To mitigate this issue, I&apos;d like to expose rangeFromLocationAndLength and locationAndLengthFromRange via window.internals. This allows us to test common usage of TextIterator throughly (Source/WebKit code only use TextIterator through these two functions) and fuzz-test them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469220</commentid>
    <comment_count>1</comment_count>
      <attachid>107802</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-18 20:15:02 -0700</bug_when>
    <thetext>Created attachment 107802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469221</commentid>
    <comment_count>2</comment_count>
      <attachid>107802</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-18 20:17:37 -0700</bug_when>
    <thetext>Comment on attachment 107802
Patch

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

&gt; LayoutTests/editing/text-iterator/range-to-from-location-and-length-expected.txt:12
&gt; +PASS locationAndLengthFromRange(range(p.childNodes[2], 6, p, 3)) is [11, 1]
&gt; +FAIL internals.rangeFromLocationAndLength(document, 11, 2).toArray() should be [object Text],6,[object HTMLDivElement],0. Was [object Text],6,[object HTMLParagraphElement],3.

Notice that the the last case contradicts the previous case (locationAndLengthFromRange returns location=11, length=1 for what rangeFromLocationAndLength returned).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469222</commentid>
    <comment_count>3</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-09-18 20:23:20 -0700</bug_when>
    <thetext>If you have a plan to expose more TextIterator API to JS,
It better have separate TextIterator.idl for that.

Well, it&apos;s not only for TextIterator though.
Maybe we should have NodeInternals, ElementInternals or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469223</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-18 20:35:40 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; If you have a plan to expose more TextIterator API to JS,
&gt; It better have separate TextIterator.idl for that.

I had thought about it but I think that&apos;s an overkill. These two functions will probably provide a pretty decent test coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469225</commentid>
    <comment_count>5</comment_count>
      <attachid>107802</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-09-18 20:59:53 -0700</bug_when>
    <thetext>Comment on attachment 107802
Patch

Attachment 107802 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9735802</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469231</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-18 21:31:01 -0700</bug_when>
    <thetext>These functions are invoked through editing APIs almost directly. Is unit testing necessary here, or should we just make textInputController based tests cross platform?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469232</commentid>
    <comment_count>7</comment_count>
      <attachid>107803</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-18 21:31:55 -0700</bug_when>
    <thetext>Created attachment 107803
Fixed Windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469233</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-18 21:36:49 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; These functions are invoked through editing APIs almost directly. Is unit testing necessary here, or should we just make textInputController based tests cross platform?

True but given the number of and severity of bugs we&apos;ve had, I&apos;d like to test these functions directly. In my experience, it&apos;s quite tricky to get textInputController call these two functions with arbitrary range/location/length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469234</commentid>
    <comment_count>9</comment_count>
      <attachid>107803</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-09-18 22:00:31 -0700</bug_when>
    <thetext>Comment on attachment 107803
Fixed Windows build

Attachment 107803 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9734848</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469488</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-19 10:22:08 -0700</bug_when>
    <thetext>Any reviewers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469496</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-19 10:38:04 -0700</bug_when>
    <thetext>It might be useful to provide some concrete examples where having an internals method makes a big difference. Also, some guidelines for when it&apos;s appropriate to use these would be great.

Unit testing doesn&apos;t work with frequent refactoring well, so adding unit tests for internal methods should be carefully considered. For instance, what does one do if they want to remove or significantly refactor rangeFromLocationAndLength and locationAndLengthFromRange functions in the future? Most practically, all tests that used these shortcuts will be simply removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469502</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-19 10:43:11 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; It might be useful to provide some concrete examples where having an internals method makes a big difference. Also, some guidelines for when it&apos;s appropriate to use these would be great.
&gt; 
&gt; Unit testing doesn&apos;t work with frequent refactoring well, so adding unit tests for internal methods should be carefully considered. For instance, what does one do if they want to remove or significantly refactor rangeFromLocationAndLength and locationAndLengthFromRange functions in the future? Most practically, all tests that used these shortcuts will be simply removed.

I think these two functions have pretty clear interface, and I don&apos;t see any reason we should be modifying them in near future. Also TextIterator is exposed as WebTextIterator in mac port so it seems unlikely that we ever get rid of TextIterator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469513</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-19 10:50:28 -0700</bug_when>
    <thetext>I actually don&apos;t see the interface of these functions as very clear - it&apos;s more like &quot;do whatever it takes to make OS X input methods happy&quot;.

WebTextIterator works with DOMRanges, not with locations and lengths, so I don&apos;t see how it&apos;s relevant here.

Anyway, it&apos;s not very productive to discuss this kind of costs, let&apos;s discuss the benefits. What are the specific cases where having an internals method makes a big difference. Also, some guidelines for when it&apos;s appropriate to use these would be great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469562</commentid>
    <comment_count>14</comment_count>
      <attachid>107893</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-19 11:29:24 -0700</bug_when>
    <thetext>Created attachment 107893
Fixed GTK build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469590</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-19 12:07:51 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Anyway, it&apos;s not very productive to discuss this kind of costs, let&apos;s discuss the benefits. What are the specific cases where having an internals method makes a big difference. Also, some guidelines for when it&apos;s appropriate to use these would be great.

That sounds like a discussion more appropriately done on webkit-dev.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469607</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-19 12:35:09 -0700</bug_when>
    <thetext>Webkit-dev is also fine, but we need to document usage guidelines for exposed rangeFromLocationAndLength and locationAndLengthFromRange in this bug for posterity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469623</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-19 13:08:04 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Webkit-dev is also fine, but we need to document usage guidelines for exposed rangeFromLocationAndLength and locationAndLengthFromRange in this bug for posterity.

Oh sure. I think internals.rangeFromLocationAndLength and internals.locationFromRange and internals.lengthFromRange should only be used to test those functions and other editing tests where relative locations of text need to be queried.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471121</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-21 13:36:30 -0700</bug_when>
    <thetext>Any reviewers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471135</commentid>
    <comment_count>19</comment_count>
      <attachid>107893</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-21 13:57:18 -0700</bug_when>
    <thetext>Comment on attachment 107893
Fixed GTK build

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

&gt; Source/WebCore/editing/TextIterator.cpp:2388
&gt; +PassRefPtr&lt;Range&gt; TextIterator::rangeFromLocationAndLength(Frame* frame, int rangeLocation, int rangeLength)
&gt; +{
&gt; +    Element* selectionRoot = frame-&gt;selection()-&gt;rootEditableElement();
&gt; +    Element* scope = selectionRoot ? selectionRoot : frame-&gt;document()-&gt;documentElement();
&gt; +
&gt; +    frame-&gt;document()-&gt;updateLayoutIgnorePendingStylesheets();
&gt; +
&gt; +    return rangeFromLocationAndLength(scope, rangeLocation, rangeLength);
&gt; +}

Exposing these to internals seems OK.

But the base for the location and length here seems an unclear concept. The heuristic for this came from WebFrame.mm originally. It was also copied into code for other ports and I’m not sure it was right for them.

Now with the code in here, at a level I think might possibly be a bit too low, I suspect the name of the function is not specific enough. Further, the comment with the rationale was left behind in WebFrame.mm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471147</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-21 14:09:38 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; But the base for the location and length here seems an unclear concept. The heuristic for this came from WebFrame.mm originally. It was also copied into code for other ports and I’m not sure it was right for them.

Yeah, I don&apos;t quite understand why it&apos;s needed. These functions are (or at least appears to be) only used for IME but IME won&apos;t show up on non-editable region so I don&apos;t understand why we&apos;d need to fallback to document when there&apos;s no root editable element.

&gt; Now with the code in here, at a level I think might possibly be a bit too low, I suspect the name of the function is not specific enough. Further, the comment with the rationale was left behind in WebFrame.mm.

Yeah, I don&apos;t like leaving the comment behind either but I think it&apos;s better than duplicating the same code in every single port as done today :(  Also I really wanted to make interface for rangeFromLocationAndLength and locationAndLengthFromRange symmetric.

Do you have suggestions as to how to proceed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471183</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-21 14:57:30 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Do you have suggestions as to how to proceed?

A few thoughts:

1) Change the name of the function. Since it’s not just a map of a range to a location and length within a document, but rather a map of a range to a location and length within an editable region. Maybe there should also be a function that maps a range to the range of the editable region?

2) Consider a different location for the function. I’m not sure this makes sense as a TextIterator function. Generally speaking TextIterator seems a little lower level than editable region boundaries. But I could be wrong on this one.

3) Make sure the comment stays with the function. Move it inside. The name of the function should allude to what the comment says anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475182</commentid>
    <comment_count>22</comment_count>
      <attachid>107893</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-09-28 19:25:48 -0700</bug_when>
    <thetext>Comment on attachment 107893
Fixed GTK build

FYI: TestWEbKitAPI is coming. I think it&apos;s worth considering to locate these internal API test there.
http://trac.webkit.org/browser/trunk/Tools/TestWebKitAPI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475187</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-28 19:28:18 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 107893 [details])
&gt; FYI: TestWEbKitAPI is coming. I think it&apos;s worth considering to locate these internal API test there.
&gt; http://trac.webkit.org/browser/trunk/Tools/TestWebKitAPI

But TextIterator requires DOM nodes, Document, Frame, renderers, etc... so I don&apos;t think we can unit-test it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482603</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-12 12:24:47 -0700</bug_when>
    <thetext>On my second thought, this automatic determination of the &quot;scope&quot; element is very odd. I think we should modify locationAndLengthFromRange to take &quot;scope&quot; element instead like rangeFromLocationAndLength.

Even though this would mean we&apos;ll duplicate some code, it&apos;ll be a cleaner API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484036</commentid>
    <comment_count>25</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-10-14 10:03:58 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; On my second thought, this automatic determination of the &quot;scope&quot; element is very odd. I think we should modify locationAndLengthFromRange to take &quot;scope&quot; element instead like rangeFromLocationAndLength.
&gt; 
&gt; Even though this would mean we&apos;ll duplicate some code, it&apos;ll be a cleaner API.

This patch is no longer valid if you land the fix for https://bugs.webkit.org/show_bug.cgi?id=69964</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484295</commentid>
    <comment_count>26</comment_count>
      <attachid>111076</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-14 14:25:01 -0700</bug_when>
    <thetext>Created attachment 111076
new patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484307</commentid>
    <comment_count>27</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-14 14:36:15 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Created an attachment (id=111076) [details]
&gt; new patch

This patch is not going to build on Win/GTK so no review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484494</commentid>
    <comment_count>28</comment_count>
      <attachid>111076</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-10-14 23:19:03 -0700</bug_when>
    <thetext>Comment on attachment 111076
new patch

Attachment 111076 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10074206</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484687</commentid>
    <comment_count>29</comment_count>
      <attachid>111157</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-15 17:33:51 -0700</bug_when>
    <thetext>Created attachment 111157
Adds internals binding</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484906</commentid>
    <comment_count>30</comment_count>
      <attachid>111157</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-16 21:50:42 -0700</bug_when>
    <thetext>Comment on attachment 111157
Adds internals binding

Yay! Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484942</commentid>
    <comment_count>31</comment_count>
      <attachid>111157</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-16 23:04:08 -0700</bug_when>
    <thetext>Comment on attachment 111157
Adds internals binding

Clearing flags on attachment: 111157

Committed r97587: &lt;http://trac.webkit.org/changeset/97587&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484944</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-16 23:04:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485004</commentid>
    <comment_count>33</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-10-17 02:05:23 -0700</bug_when>
    <thetext>It broke the GTK build:

./.libs/libWebCoreInternals.a(libWebCoreInternals_la-Internals.o): In function `WebCore::Internals::locationFromRange(WebCore::Element*, WebCore::Range const*, int&amp;)&apos;:
Internals.cpp:(.text+0x10fc): undefined reference to `WebCore::TextIterator::getLocationAndLengthFromRange(WebCore::Element*, WebCore::Range const*, unsigned int&amp;, unsigned int&amp;)&apos;
./.libs/libWebCoreInternals.a(libWebCoreInternals_la-Internals.o): In function `WebCore::Internals::lengthFromRange(WebCore::Element*, WebCore::Range const*, int&amp;)&apos;:
Internals.cpp:(.text+0x116c): undefined reference to `WebCore::TextIterator::getLocationAndLengthFromRange(WebCore::Element*, WebCore::Range const*, unsigned int&amp;, unsigned int&amp;)&apos;

Reopen to fix the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485215</commentid>
    <comment_count>34</comment_count>
      <attachid>111076</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-10-17 09:31:47 -0700</bug_when>
    <thetext>Comment on attachment 111076
new patch

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

Look good to me.

&gt; LayoutTests/editing/text-iterator/range-to-from-location-and-length.html:18
&gt; +    testFailed(&apos;This test requires internals object&apos;);

I prefer the early return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485313</commentid>
    <comment_count>35</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-17 11:27:57 -0700</bug_when>
    <thetext>Build fixes have been landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107802</attachid>
            <date>2011-09-18 20:15:02 -0700</date>
            <delta_ts>2011-09-18 21:31:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68330-20110918201501.patch</filename>
            <type>text/plain</type>
            <size>21681</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NDAwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDktMTggIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXhwb3NlIHJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoIGFuZCBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZSB2aWEgaW50ZXJuYWxz
IG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjgzMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgsIGxvY2F0aW9uRnJvbVJhbmdlLCBhbmQgbGVu
Z3RoRnJvbVJhbmdlIHRvIHdpbmRvdy5pbnRlcm5hbHMuCisKKyAgICAgICAgQWxzbyBhZGQgdGhl
IHZlcnNpb24gb2YgcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggdGhhdCBhdXRvbWF0aWNhbGx5
IGNvbXB1dGVzIHRoZSBzY29wZSBlbGVtZW50CisgICAgICAgIGFuZCB1c2UgaW4gU291cmNlL1dl
YktpdC4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3RleHQtaXRlcmF0b3IvcmFuZ2UtdG8tZnJv
bS1sb2NhdGlvbi1hbmQtbGVuZ3RoLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgor
ICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgpOgorICAgICAgICAqIGVkaXRp
bmcvVGV4dEl0ZXJhdG9yLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmxvY2F0aW9uRnJvbVJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6bGVuZ3RoRnJvbVJhbmdlKToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMS0w
OS0xOCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSB0byBm
aXggdGhlIENocm9taXVtIE1hYyBidWlsZCBhZnRlciByOTUzOTEuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkocmV2aXNpb24gOTUwNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgkod29ya2luZyBjb3B5KQpAQCAtMjk5LDcgKzI5OSw3IEBAIF9fWk43V2ViQ29yZTEyU3BlbGxD
aGVja2VyOGRpZENoZWNrRWlSS04KIF9fWk43V2ViQ29yZTEyVGV4dEVuY29kaW5nQzFFUktOM1dU
RjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjExcmFuZ2VMZW5ndGhFUEtOU181
UmFuZ2VFYgogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNmxvY2F0aW9uQW5kTGVuZ3RoRnJv
bVJhbmdlRVBLTlNfNVJhbmdlRVJtUzRfCi1fX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI2cmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGhFUE5TXzdFbGVtZW50RWlpYgorX19aTjdXZWJDb3JlMTJU
ZXh0SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBOU181RnJhbWVFaWkKIF9f
Wk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yN2FkdmFuY2VFdgogX19aTjdXZWJDb3JlMTJUZXh0SXRl
cmF0b3I4c3VicmFuZ2VFUE5TXzVSYW5nZUVpaQogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3JD
MUVQS05TXzVSYW5nZUVOU18yMFRleHRJdGVyYXRvckJlaGF2aW9yRQpAQCAtODUyLDYgKzg1Miw3
IEBAIF9fWk43V2ViQ29yZTdUZXh0UnVuMjFzX2FsbG93c1JvdW5kaW5nSGEKIF9fWk43V2ViQ29y
ZTdUZXh0UnVuMjJzZXRBbGxvd3NSb3VuZGluZ0hhY2tzRWIKIF9fWk43V2ViQ29yZTdjb29raWVz
RVBLTlNfOERvY3VtZW50RVJLTlNfNEtVUkxFCiBfX1pON1dlYkNvcmU3bnNDb2xvckVSS05TXzVD
b2xvckUKK19fWk43V2ViQ29yZTd0b1JhbmdlRU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNvcmU4
RG9jdW1lbnQxMWNyZWF0ZVJhbmdlRXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDEydXBkYXRlTGF5
b3V0RXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDEzc3ZnRXh0ZW5zaW9uc0V2CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCShyZXZpc2lvbiA5NTA3NikKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjM3Nyw2ICsyMzc3LDE2IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6c3VicmFu
Z2UKICAgICByZXR1cm4gY2hhcmFjdGVyU3VicmFuZ2UoZW50aXJlUmFuZ2VJdGVyYXRvciwgY2hh
cmFjdGVyT2Zmc2V0LCBjaGFyYWN0ZXJDb3VudCk7CiB9CiAKK1Bhc3NSZWZQdHI8UmFuZ2U+IFRl
eHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRnJhbWUqIGZyYW1lLCBpbnQg
cmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoKQoreworICAgIEVsZW1lbnQqIHNlbGVjdGlv
blJvb3QgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICBF
bGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZnJhbWUtPmRv
Y3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworCisgICAgZnJhbWUtPmRvY3VtZW50KCktPnVw
ZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworCisgICAgcmV0dXJuIHJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCByYW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCk7
Cit9CisKIFBhc3NSZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoRWxlbWVudCogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5n
dGgsIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQogewogICAgIFJlZlB0cjxSYW5nZT4g
cmVzdWx0UmFuZ2UgPSBzY29wZS0+ZG9jdW1lbnQoKS0+Y3JlYXRlUmFuZ2UoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAkocmV2aXNpb24gOTUwNzYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2
ICs5OCw3IEBAIHB1YmxpYzoKICAgICBOb2RlKiBub2RlKCkgY29uc3Q7CiAgICAgIAogICAgIHN0
YXRpYyBpbnQgcmFuZ2VMZW5ndGgoY29uc3QgUmFuZ2UqLCBib29sIHNwYWNlc0ZvclJlcGxhY2Vk
RWxlbWVudHMgPSBmYWxzZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKEZyYW1lKiwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxl
bmd0aCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKEVsZW1lbnQqIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3Ro
LCBib29sIHNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgPSBmYWxzZSk7CiAgICAgc3RhdGljIGJv
b2wgbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoY29uc3QgUmFuZ2UqLCBzaXplX3QmIGxvY2F0
aW9uLCBzaXplX3QmIGxlbmd0aCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHN1YnJh
bmdlKFJhbmdlKiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3Rl
ckNvdW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9u
IDk1MDc2KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJTaGFkb3dDb250ZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNs
dWRlICJUZXh0SXRlcmF0b3IuaCIKIAogI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKICNpbmNsdWRl
ICJDb2xvckNob29zZXIuaCIKQEAgLTM2NSw0ICszNjYsNDAgQEAgdm9pZCBJbnRlcm5hbHM6OnNl
dFN1Z2dlc3RlZFZhbHVlKEVsZW1lbgogICAgIGlucHV0RWxlbWVudC0+c2V0U3VnZ2VzdGVkVmFs
dWUodmFsdWUpOwogfQogCitQYXNzUmVmUHRyPFJhbmdlPiBJbnRlcm5hbHM6OnJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKERvY3VtZW50KiBkb2N1bWVudCwgaW50IHJhbmdlTG9jYXRpb24sIGlu
dCByYW5nZUxlbmd0aCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFkb2N1bWVudCkg
eworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgoZG9jdW1lbnQtPmZyYW1lKCksIHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoKTsKK30KKwor
dW5zaWduZWQgSW50ZXJuYWxzOjpsb2NhdGlvbkZyb21SYW5nZShjb25zdCBSYW5nZSogcmFuZ2Us
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghcmFuZ2UpIHsKKyAgICAgICAgZWMgPSBJ
TlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHNpemVf
dCBsb2NhdGlvbiA9IDA7CisgICAgc2l6ZV90IGxlbmd0aCA9IDA7CisgICAgVGV4dEl0ZXJhdG9y
Ojpsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyYW5nZSwgbG9jYXRpb24sIGxlbmd0aCk7Cisg
ICAgcmV0dXJuIGxvY2F0aW9uOworfQorCit1bnNpZ25lZCBJbnRlcm5hbHM6Omxlbmd0aEZyb21S
YW5nZShjb25zdCBSYW5nZSogcmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICgh
cmFuZ2UpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIHNpemVfdCBsb2NhdGlvbiA9IDA7CisgICAgc2l6ZV90IGxlbmd0
aCA9IDA7CisgICAgVGV4dEl0ZXJhdG9yOjpsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyYW5n
ZSwgbG9jYXRpb24sIGxlbmd0aCk7CisgICAgcmV0dXJuIGxlbmd0aDsKK30KKwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiA5NTA3NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDEw
IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgc3VnZ2VzdGVkVmFsdWUoRWxlbWVudCogaW5wdXRFbGVt
ZW50LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRTdWdnZXN0ZWRWYWx1ZShFbGVtZW50
KiBpbnB1dEVsZW1lbnQsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIFBh
c3NSZWZQdHI8UmFuZ2U+IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKERvY3VtZW50KiwgaW50
IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHVu
c2lnbmVkIGxvY2F0aW9uRnJvbVJhbmdlKGNvbnN0IFJhbmdlKiwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHVuc2lnbmVkIGxlbmd0aEZyb21SYW5nZShjb25zdCBSYW5nZSosIEV4Y2VwdGlvbkNvZGUm
KTsKKwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpbnRlcm5hbHNJZDsKIAogcHJpdmF0ZToKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9uIDk1MDc2KQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC02
MSw2ICs2MSwxMCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYm9vbGVhbiB3YXNMYXN0Q2hh
bmdlVXNlckVkaXQoaW4gRWxlbWVudCB0ZXh0RmllbGQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsK
ICAgICAgICAgRE9NU3RyaW5nIHN1Z2dlc3RlZFZhbHVlKGluIEVsZW1lbnQgaW5wdXRFbGVtZW50
KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgc2V0U3VnZ2VzdGVkVmFsdWUo
aW4gRWxlbWVudCBpbnB1dEVsZW1lbnQsIGluIERPTVN0cmluZyB2YWx1ZSkgcmFpc2VzIChET01F
eGNlcHRpb24pOworCisgICAgICAgIFJhbmdlIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGlu
IERvY3VtZW50IGRvY3VtZW50LCBpbiBsb25nIHJhbmdlTG9jYXRpb24sIGluIGxvbmcgcmFuZ2VM
ZW5ndGgpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb2Nh
dGlvbkZyb21SYW5nZShpbiBSYW5nZSByYW5nZSkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAg
ICAgICB1bnNpZ25lZCBsb25nIGxlbmd0aEZyb21SYW5nZShpbiBSYW5nZSByYW5nZSkgcmFpc2Vz
IChET01FeGNlcHRpb24pOwogICAgIH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1
NDAwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTEtMDktMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgRXhwb3NlIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIGFuZCBsb2NhdGlvbkFu
ZExlbmd0aEZyb21SYW5nZSB2aWEgaW50ZXJuYWxzIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgzMzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFRvUmFuZ2UpOgorCiAyMDExLTA5
LTE3ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZy
YW1lTG9hZGVyQ2xpZW50IEJhY2tGb3J3YXJkTGlzdC1yZWxhdGVkIG1ldGhvZHMgYXJlIHVuc3Vl
ZApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQkocmV2aXNpb24gOTUwNzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3Nyw5ICsz
NzcsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBjb252ZXJ0VG9SYW5nZShGcmFtZSogCiAgICAgLy8g
ZGlyZWN0bHkgaW4gdGhlIGRvY3VtZW50IERPTSwgc28gc2VyaWFsaXphdGlvbiBpcyBwcm9ibGVt
YXRpYy4gT3VyIHNvbHV0aW9uIGlzCiAgICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVs
ZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLgogICAg
IC8vIFRoYXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQgY29udGV4dC4KLSAg
ICBFbGVtZW50KiBzZWxlY3Rpb25Sb290ID0gZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFi
bGVFbGVtZW50KCk7Ci0gICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0
aW9uUm9vdCA6IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICByZXR1
cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgbnNyYW5n
ZS5sb2NhdGlvbiwgbnNyYW5nZS5sZW5ndGgpOworICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLCBuc3JhbmdlLmxvY2F0aW9uLCBuc3Jhbmdl
Lmxlbmd0aCk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIFdlYkNvcmU6OkludFJlY3Qm
IHJlc3VsdFJlY3QpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gOTU0
MDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDExLTA5LTE4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgorCisgICAgICAgIEV4cG9zZSByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCBhbmQgbG9j
YXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UgdmlhIGludGVybmFscyBvYmplY3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MzMwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZSk6CisgICAgICAgICogc3JjL21hYy9XZWJTdWJzdHJpbmdVdGlsLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJTdWJzdHJpbmdVdGlsOjphdHRyaWJ1dGVkU3Vic3RyaW5nSW5SYW5nZSk6CisK
IDIwMTEtMDktMTcgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgRnJhbWVMb2FkZXJDbGllbnQgQmFja0ZvcndhcmRMaXN0LXJlbGF0ZWQgbWV0aG9kcyBh
cmUgdW5zdWVkCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5jcHAJKHJldmlzaW9uIDk1MDc2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwNiw5ICsxMTA2LDcgQEAgYm9vbCBX
ZWJGcmFtZUltcGw6OmZpcnN0UmVjdEZvckNoYXJhY3RlcgogICAgIGlmICgobG9jYXRpb24gKyBs
ZW5ndGggPCBsb2NhdGlvbikgJiYgKGxvY2F0aW9uICsgbGVuZ3RoKSkKICAgICAgICAgbGVuZ3Ro
ID0gMDsKIAotICAgIEVsZW1lbnQqIHNlbGVjdGlvblJvb3QgPSBmcmFtZSgpLT5zZWxlY3Rpb24o
KS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwotICAgIEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9u
Um9vdCA/IHNlbGVjdGlvblJvb3QgOiBmcmFtZSgpLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1l
bnQoKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aChzY29wZSwgbG9jYXRpb24sIGxlbmd0aCk7CisgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJh
bWUoKSwgbG9jYXRpb24sIGxlbmd0aCk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIEludFJlY3QgaW50UmVjdCA9IGZyYW1lKCktPmVkaXRvcigpLT5maXJzdFJl
Y3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9tYWMvV2ViU3Vic3RyaW5nVXRpbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9tYWMvV2ViU3Vic3RyaW5nVXRpbC5tbQkocmV2aXNpb24gOTUwNzYpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9tYWMvV2ViU3Vic3RyaW5nVXRpbC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsMTMgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBOU0F0dHJpYnV0
ZWRTdHJpbmcqIFdlYlN1YnN0cmluZ1V0aWw6OmF0dHJpYnV0ZWRTdWJzdHJpbmdJblJhbmdlKFdl
YkZyYW1lKiB3ZWJGcmFtZSwgc2l6ZV90IGxvY2F0aW9uLCBzaXplX3QgbGVuZ3RoKQogewogICAg
IEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KHdlYkZyYW1lKS0+ZnJh
bWUoKTsKLSAgICBpZiAoZnJhbWUtPnZpZXcoKS0+bmVlZHNMYXlvdXQoKSkKLSAgICAgICAgZnJh
bWUtPnZpZXcoKS0+bGF5b3V0KCk7Ci0KLSAgICBFbGVtZW50KiBzZWxlY3Rpb25Sb290ID0gZnJh
bWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50KCk7Ci0gICAgc2VsZWN0aW9uUm9v
dCA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZnJhbWUtPmRvY3VtZW50KCktPmRv
Y3VtZW50RWxlbWVudCgpOwotCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZShUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNlbGVjdGlvblJvb3QsIGxvY2F0aW9uLCBsZW5n
dGgpKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlKFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgoZnJhbWUsIGxvY2F0aW9uLCBsZW5ndGgpKTsKICAgICBpZiAoIXJhbmdl
KQogICAgICAgICByZXR1cm4gbmlsOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA5
NTQwMCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDExLTA5LTE4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgorCisgICAgICAgIEV4cG9zZSByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCBhbmQgbG9jYXRp
b25BbmRMZW5ndGhGcm9tUmFuZ2UgdmlhIGludGVybmFscyBvYmplY3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MzMwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSk6CisKIDIwMTEtMDktMTcgIE1paGFpIFBhcnBh
cml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQg
QmFja0ZvcndhcmRMaXN0LXJlbGF0ZWQgbWV0aG9kcyBhcmUgdW5zdWVkCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0ay5jcHAJKHJldmlzaW9uIDk1MDc2KQorKysgU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTkxLDkgKzU5MSw3IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpmaXJz
dFJlY3QKICAgICBpZiAoIWVkaXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRWxl
bWVudCogc2VsZWN0aW9uUm9vdCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxl
bWVudCgpOwotICAgIEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJv
b3QgOiBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2Nv
cGUsIGxvY2F0aW9uLCBsZW5ndGgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLCBsb2NhdGlvbiwgbGVuZ3Ro
KTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDk1NDAwKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMTggIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXhwb3NlIHJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoIGFuZCBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZSB2aWEgaW50ZXJuYWxzIG9i
amVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njgz
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9jb252ZXJ0VG9ET01SYW5n
ZTpdKToKKwogMjAxMS0wOS0xNyAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBGcmFtZUxvYWRlckNsaWVudCBCYWNrRm9yd2FyZExpc3QtcmVsYXRlZCBt
ZXRob2RzIGFyZSB1bnN1ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQkocmV2aXNpb24gOTUwNzYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OTUsOSArNjk1LDcgQEAgLSAoUGFzc1JlZlB0cjxSYW5n
ZT4pX2NvbnZlcnRUb0RPTVJhbmdlOgogICAgIC8vIGRpcmVjdGx5IGluIHRoZSBkb2N1bWVudCBE
T00sIHNvIHNlcmlhbGl6YXRpb24gaXMgcHJvYmxlbWF0aWMuIE91ciBzb2x1dGlvbiBpcwogICAg
IC8vIHRvIHVzZSB0aGUgcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9mIHRoZSBzZWxlY3Rpb24gc3Rh
cnQgYXMgdGhlIHBvc2l0aW9uYWwgYmFzZS4KICAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQn
cyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuCi0gICAgRWxlbWVudCogc2VsZWN0aW9uUm9vdCA9
IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50KCk7
Ci0gICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IF9w
cml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwotICAgIHJl
dHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBuc3Jh
bmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoX3ByaXZhdGUtPmNvcmVGcmFtZSwgbnNyYW5nZS5s
b2NhdGlvbiwgbnNyYW5nZS5sZW5ndGgpOwogfQogCiAtIChET01SYW5nZSAqKWNvbnZlcnROU1Jh
bmdlVG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNp
b24gOTU0MDApCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDExLTA5LTE4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgorCisgICAgICAgIEV4cG9zZSByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCBhbmQgbG9j
YXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UgdmlhIGludGVybmFscyBvYmplY3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MzMwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UpOgorCiAyMDExLTA5LTE3ICBNaWhhaSBQYXJw
YXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50
IEJhY2tGb3J3YXJkTGlzdC1yZWxhdGVkIG1ldGhvZHMgYXJlIHVuc3VlZApJbmRleDogU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5jcHAJKHJldmlzaW9uIDk1MDc2KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYxNiwxMCArNjE2LDcgQEAgUVZhcmlhbnRMaXN0IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpm
aQogICAgIGlmICgobG9jYXRpb24gKyBsZW5ndGggPCBsb2NhdGlvbikgJiYgKGxvY2F0aW9uICsg
bGVuZ3RoKSkKICAgICAgICAgbGVuZ3RoID0gMDsKIAotICAgIEVsZW1lbnQqIHNlbGVjdGlvblJv
b3QgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBFbGVt
ZW50KiBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZnJhbWUtPmRvY3Vt
ZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBsb2NhdGlvbiwgbGVu
Z3RoKTsKLQorICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLCBsb2NhdGlvbiwgbGVuZ3RoKTsKICAgICBpZiAoIXJh
bmdlKQogICAgICAgICByZXR1cm4gUVZhcmlhbnRMaXN0KCk7CiAKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDk1NDAwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTEtMDktMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgRXhwb3NlIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIGFuZCBsb2NhdGlvbkFu
ZExlbmd0aEZyb21SYW5nZSB2aWEgaW50ZXJuYWxzIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgzMzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBzaW1wbGUgdGVzdCB0aGF0IHVzZXMg
aW50ZXJuYWxzLnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoLCBpbnRlcm5hbHMubG9jYXRpb25G
cm9tUmFuZ2UsCisgICAgICAgIGFuZCBpbnRlcm5hbHMubGVuZ3RoRnJvbVJhbmdlLgorCisgICAg
ICAgICogZWRpdGluZy90ZXh0LWl0ZXJhdG9yL3JhbmdlLXRvLWZyb20tbG9jYXRpb24tYW5kLWxl
bmd0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdGV4dC1pdGVyYXRv
ci9yYW5nZS10by1mcm9tLWxvY2F0aW9uLWFuZC1sZW5ndGguaHRtbDogQWRkZWQuCisKIDIwMTEt
MDktMTggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzg2MDI4MT4gRGVjb21wb3NlZCB0ZXh0IGlzIGRpc3BsYXllZCBpbmNvcnJlY3Rs
eSB3aGVuIFZlcmRhbmEgaXMgc3BlY2lmaWVkCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Rl
eHQtaXRlcmF0b3IvcmFuZ2UtdG8tZnJvbS1sb2NhdGlvbi1hbmQtbGVuZ3RoLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvcmFuZ2Ut
dG8tZnJvbS1sb2NhdGlvbi1hbmQtbGVuZ3RoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9yYW5nZS10by1mcm9tLWxvY2F0aW9u
LWFuZC1sZW5ndGgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACitQ
QVNTIGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMCwgcC5m
aXJzdENoaWxkLCAzKSkgaXMgWzAsIDFdCitQQVNTIGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdl
KHJhbmdlKHAuZmlyc3RDaGlsZCwgMSwgcC5maXJzdENoaWxkLCA0KSkgaXMgWzAsIDJdCitQQVNT
IGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMiwgcC5maXJz
dENoaWxkLCAzKSkgaXMgWzAsIDFdCitQQVNTIGludGVybmFscy5yYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aChkb2N1bWVudCwgMCwgMSkudG9BcnJheSgpIGlzIFtwLmZpcnN0Q2hpbGQsIDIsIHAu
Zmlyc3RDaGlsZCwgM10KK1BBU1MgbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5m
aXJzdENoaWxkLCAyLCBwLmZpcnN0Q2hpbGQsIDcpKSBpcyBbMCwgNV0KK1BBU1MgbG9jYXRpb25B
bmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5maXJzdENoaWxkLCAyLCBwLCAxKSkgaXMgWzAsIDVd
CitQQVNTIGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMiwg
cCwgMikpIGlzIFswLCA2XQorUEFTUyBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyYW5nZShw
LmZpcnN0Q2hpbGQsIDIsIHAuY2hpbGROb2Rlc1syXSwgMSkpIGlzIFswLCA2XQorUEFTUyBpbnRl
cm5hbHMucmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQsIDEsIDQpLnRvQXJyYXko
KSBpcyBbcC5maXJzdENoaWxkLCAzLCBwLmZpcnN0Q2hpbGQsIDddCitQQVNTIGludGVybmFscy5y
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChkb2N1bWVudCwgMCwgNikudG9BcnJheSgpIGlzIFtw
LmZpcnN0Q2hpbGQsIDIsIHAuY2hpbGROb2Rlc1syXSwgMV0KK1BBU1MgbG9jYXRpb25BbmRMZW5n
dGhGcm9tUmFuZ2UocmFuZ2UocC5jaGlsZE5vZGVzWzJdLCA2LCBwLCAzKSkgaXMgWzExLCAxXQor
RkFJTCBpbnRlcm5hbHMucmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQsIDExLCAy
KS50b0FycmF5KCkgc2hvdWxkIGJlIFtvYmplY3QgVGV4dF0sNixbb2JqZWN0IEhUTUxEaXZFbGVt
ZW50XSwwLiBXYXMgW29iamVjdCBUZXh0XSw2LFtvYmplY3QgSFRNTFBhcmFncmFwaEVsZW1lbnRd
LDMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9yL3JhbmdlLXRvLWZyb20tbG9j
YXRpb24tYW5kLWxlbmd0aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcv
dGV4dC1pdGVyYXRvci9yYW5nZS10by1mcm9tLWxvY2F0aW9uLWFuZC1sZW5ndGguaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9yYW5nZS10by1m
cm9tLWxvY2F0aW9uLWFuZC1sZW5ndGguaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU+Cis8cD4g
IGhlbGxvPGJyPgord29ybGQuPC9wPgorPGJsb2NrcXVvdGU+PGRpdj58PGJyPjwvZGl2PjwvYmxv
Y2txdW90ZT4KKzxlbT53ZWJraXQ8L2VtPgorPC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisKK2lmICghd2luZG93LmludGVybmFscykKKyAgICB0ZXN0RmFpbGVkKCdU
aGlzIHRlc3QgcmVxdWlyZXMgaW50ZXJuYWxzIG9iamVjdCcpOworZWxzZSB7CisKKyAgICBmdW5j
dGlvbiByYW5nZShzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQsIGVuZENvbnRhaW5lciwgZW5k
T2Zmc2V0KSB7CisgICAgICAgIHZhciByYW5nZSA9ICBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgICAgICByYW5nZS5zZXRTdGFydChzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQpOworICAg
ICAgICByYW5nZS5zZXRFbmQoZW5kQ29udGFpbmVyLCBlbmRPZmZzZXQpOworICAgICAgICByZXR1
cm4gcmFuZ2U7CisgICAgfQorCisgICAgZnVuY3Rpb24gbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFu
Z2UocmFuZ2UpIHsKKyAgICAgICAgdmFyIGxvY2F0aW9uID0gaW50ZXJuYWxzLmxvY2F0aW9uRnJv
bVJhbmdlKHJhbmdlKTsKKyAgICAgICAgdmFyIGxlbmd0aCA9IGludGVybmFscy5sZW5ndGhGcm9t
UmFuZ2UocmFuZ2UpOworICAgICAgICByZXR1cm4gW2xvY2F0aW9uLCBsZW5ndGhdOworICAgIH0K
KworICAgIFJhbmdlLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkgeworICAgICAgICBy
ZXR1cm4gW3RoaXMuc3RhcnRDb250YWluZXIsIHRoaXMuc3RhcnRPZmZzZXQsIHRoaXMuZW5kQ29u
dGFpbmVyLCB0aGlzLmVuZE9mZnNldF07CisgICAgfQorCisgICAgdmFyIHAgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCcjdGVzdCBwJyk7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJyN0ZXN0IGRpdicpOworICAgIHZhciByID0gaW50ZXJuYWxzLnJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoKGRvY3VtZW50LCAwLCAxKTsKKyAgICBzaG91bGRCZSgnbG9jYXRpb25BbmRM
ZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5maXJzdENoaWxkLCAwLCBwLmZpcnN0Q2hpbGQsIDMpKScs
ICdbMCwgMV0nKTsKKyAgICBzaG91bGRCZSgnbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFu
Z2UocC5maXJzdENoaWxkLCAxLCBwLmZpcnN0Q2hpbGQsIDQpKScsICdbMCwgMl0nKTsKKyAgICBz
aG91bGRCZSgnbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5maXJzdENoaWxkLCAy
LCBwLmZpcnN0Q2hpbGQsIDMpKScsICdbMCwgMV0nKTsKKyAgICBzaG91bGRCZSgnaW50ZXJuYWxz
LnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGRvY3VtZW50LCAwLCAxKS50b0FycmF5KCknLCAn
W3AuZmlyc3RDaGlsZCwgMiwgcC5maXJzdENoaWxkLCAzXScpOworCisgICAgc2hvdWxkQmUoJ2xv
Y2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMiwgcC5maXJzdENo
aWxkLCA3KSknLCAnWzAsIDVdJyk7CisgICAgc2hvdWxkQmUoJ2xvY2F0aW9uQW5kTGVuZ3RoRnJv
bVJhbmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMiwgcCwgMSkpJywgJ1swLCA1XScpOworICAgIHNo
b3VsZEJlKCdsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyYW5nZShwLmZpcnN0Q2hpbGQsIDIs
IHAsIDIpKScsICdbMCwgNl0nKTsKKyAgICBzaG91bGRCZSgnbG9jYXRpb25BbmRMZW5ndGhGcm9t
UmFuZ2UocmFuZ2UocC5maXJzdENoaWxkLCAyLCBwLmNoaWxkTm9kZXNbMl0sIDEpKScsICdbMCwg
Nl0nKTsKKyAgICBzaG91bGRCZSgnaW50ZXJuYWxzLnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KGRvY3VtZW50LCAxLCA0KS50b0FycmF5KCknLCAnW3AuZmlyc3RDaGlsZCwgMywgcC5maXJzdENo
aWxkLCA3XScpOworICAgIHNob3VsZEJlKCdpbnRlcm5hbHMucmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoZG9jdW1lbnQsIDAsIDYpLnRvQXJyYXkoKScsICdbcC5maXJzdENoaWxkLCAyLCBwLmNo
aWxkTm9kZXNbMl0sIDFdJyk7CisKKyAgICBzaG91bGRCZSgnbG9jYXRpb25BbmRMZW5ndGhGcm9t
UmFuZ2UocmFuZ2UocC5jaGlsZE5vZGVzWzJdLCA2LCBwLCAzKSknLCAnWzExLCAxXScpOworICAg
IHNob3VsZEJlKCdpbnRlcm5hbHMucmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQs
IDExLCAyKS50b0FycmF5KCknLCAnW3AuY2hpbGROb2Rlc1syXSwgNiwgZGl2LCAwXScpOworCisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUn
OworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107803</attachid>
            <date>2011-09-18 21:31:55 -0700</date>
            <delta_ts>2011-09-19 11:29:19 -0700</delta_ts>
            <desc>Fixed Windows build</desc>
            <filename>bug-68330-20110918213154.patch</filename>
            <type>text/plain</type>
            <size>23589</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NDAwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDktMTggIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXhwb3NlIHJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoIGFuZCBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZSB2aWEgaW50ZXJuYWxz
IG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjgzMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgsIGxvY2F0aW9uRnJvbVJhbmdlLCBhbmQgbGVu
Z3RoRnJvbVJhbmdlIHRvIHdpbmRvdy5pbnRlcm5hbHMuCisKKyAgICAgICAgQWxzbyBhZGQgdGhl
IHZlcnNpb24gb2YgcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggdGhhdCBhdXRvbWF0aWNhbGx5
IGNvbXB1dGVzIHRoZSBzY29wZSBlbGVtZW50CisgICAgICAgIGFuZCB1c2UgaW4gU291cmNlL1dl
YktpdC4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3RleHQtaXRlcmF0b3IvcmFuZ2UtdG8tZnJv
bS1sb2NhdGlvbi1hbmQtbGVuZ3RoLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgor
ICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgpOgorICAgICAgICAqIGVkaXRp
bmcvVGV4dEl0ZXJhdG9yLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmxvY2F0aW9uRnJvbVJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6bGVuZ3RoRnJvbVJhbmdlKToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMS0w
OS0xOCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSB0byBm
aXggdGhlIENocm9taXVtIE1hYyBidWlsZCBhZnRlciByOTUzOTEuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkocmV2aXNpb24gOTUwNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgkod29ya2luZyBjb3B5KQpAQCAtMjk5LDcgKzI5OSw3IEBAIF9fWk43V2ViQ29yZTEyU3BlbGxD
aGVja2VyOGRpZENoZWNrRWlSS04KIF9fWk43V2ViQ29yZTEyVGV4dEVuY29kaW5nQzFFUktOM1dU
RjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjExcmFuZ2VMZW5ndGhFUEtOU181
UmFuZ2VFYgogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNmxvY2F0aW9uQW5kTGVuZ3RoRnJv
bVJhbmdlRVBLTlNfNVJhbmdlRVJtUzRfCi1fX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI2cmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGhFUE5TXzdFbGVtZW50RWlpYgorX19aTjdXZWJDb3JlMTJU
ZXh0SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBOU181RnJhbWVFaWkKIF9f
Wk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yN2FkdmFuY2VFdgogX19aTjdXZWJDb3JlMTJUZXh0SXRl
cmF0b3I4c3VicmFuZ2VFUE5TXzVSYW5nZUVpaQogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3JD
MUVQS05TXzVSYW5nZUVOU18yMFRleHRJdGVyYXRvckJlaGF2aW9yRQpAQCAtODUyLDYgKzg1Miw3
IEBAIF9fWk43V2ViQ29yZTdUZXh0UnVuMjFzX2FsbG93c1JvdW5kaW5nSGEKIF9fWk43V2ViQ29y
ZTdUZXh0UnVuMjJzZXRBbGxvd3NSb3VuZGluZ0hhY2tzRWIKIF9fWk43V2ViQ29yZTdjb29raWVz
RVBLTlNfOERvY3VtZW50RVJLTlNfNEtVUkxFCiBfX1pON1dlYkNvcmU3bnNDb2xvckVSS05TXzVD
b2xvckUKK19fWk43V2ViQ29yZTd0b1JhbmdlRU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNvcmU4
RG9jdW1lbnQxMWNyZWF0ZVJhbmdlRXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDEydXBkYXRlTGF5
b3V0RXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDEzc3ZnRXh0ZW5zaW9uc0V2CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCShyZXZpc2lvbiA5NTA3NikKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjM3Nyw2ICsyMzc3LDE2IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6c3VicmFu
Z2UKICAgICByZXR1cm4gY2hhcmFjdGVyU3VicmFuZ2UoZW50aXJlUmFuZ2VJdGVyYXRvciwgY2hh
cmFjdGVyT2Zmc2V0LCBjaGFyYWN0ZXJDb3VudCk7CiB9CiAKK1Bhc3NSZWZQdHI8UmFuZ2U+IFRl
eHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoRnJhbWUqIGZyYW1lLCBpbnQg
cmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoKQoreworICAgIEVsZW1lbnQqIHNlbGVjdGlv
blJvb3QgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICBF
bGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZnJhbWUtPmRv
Y3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworCisgICAgZnJhbWUtPmRvY3VtZW50KCktPnVw
ZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworCisgICAgcmV0dXJuIHJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCByYW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCk7
Cit9CisKIFBhc3NSZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoRWxlbWVudCogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5n
dGgsIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQogewogICAgIFJlZlB0cjxSYW5nZT4g
cmVzdWx0UmFuZ2UgPSBzY29wZS0+ZG9jdW1lbnQoKS0+Y3JlYXRlUmFuZ2UoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAkocmV2aXNpb24gOTUwNzYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2
ICs5OCw3IEBAIHB1YmxpYzoKICAgICBOb2RlKiBub2RlKCkgY29uc3Q7CiAgICAgIAogICAgIHN0
YXRpYyBpbnQgcmFuZ2VMZW5ndGgoY29uc3QgUmFuZ2UqLCBib29sIHNwYWNlc0ZvclJlcGxhY2Vk
RWxlbWVudHMgPSBmYWxzZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKEZyYW1lKiwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxl
bmd0aCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKEVsZW1lbnQqIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3Ro
LCBib29sIHNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgPSBmYWxzZSk7CiAgICAgc3RhdGljIGJv
b2wgbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoY29uc3QgUmFuZ2UqLCBzaXplX3QmIGxvY2F0
aW9uLCBzaXplX3QmIGxlbmd0aCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHN1YnJh
bmdlKFJhbmdlKiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3Rl
ckNvdW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9u
IDk1MDc2KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJTaGFkb3dDb250ZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNs
dWRlICJUZXh0SXRlcmF0b3IuaCIKIAogI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKICNpbmNsdWRl
ICJDb2xvckNob29zZXIuaCIKQEAgLTM2NSw0ICszNjYsNDAgQEAgdm9pZCBJbnRlcm5hbHM6OnNl
dFN1Z2dlc3RlZFZhbHVlKEVsZW1lbgogICAgIGlucHV0RWxlbWVudC0+c2V0U3VnZ2VzdGVkVmFs
dWUodmFsdWUpOwogfQogCitQYXNzUmVmUHRyPFJhbmdlPiBJbnRlcm5hbHM6OnJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKERvY3VtZW50KiBkb2N1bWVudCwgaW50IHJhbmdlTG9jYXRpb24sIGlu
dCByYW5nZUxlbmd0aCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFkb2N1bWVudCkg
eworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgoZG9jdW1lbnQtPmZyYW1lKCksIHJhbmdlTG9jYXRpb24sIHJhbmdlTGVuZ3RoKTsKK30KKwor
dW5zaWduZWQgSW50ZXJuYWxzOjpsb2NhdGlvbkZyb21SYW5nZShjb25zdCBSYW5nZSogcmFuZ2Us
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghcmFuZ2UpIHsKKyAgICAgICAgZWMgPSBJ
TlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHNpemVf
dCBsb2NhdGlvbiA9IDA7CisgICAgc2l6ZV90IGxlbmd0aCA9IDA7CisgICAgVGV4dEl0ZXJhdG9y
Ojpsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyYW5nZSwgbG9jYXRpb24sIGxlbmd0aCk7Cisg
ICAgcmV0dXJuIGxvY2F0aW9uOworfQorCit1bnNpZ25lZCBJbnRlcm5hbHM6Omxlbmd0aEZyb21S
YW5nZShjb25zdCBSYW5nZSogcmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICgh
cmFuZ2UpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIHNpemVfdCBsb2NhdGlvbiA9IDA7CisgICAgc2l6ZV90IGxlbmd0
aCA9IDA7CisgICAgVGV4dEl0ZXJhdG9yOjpsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyYW5n
ZSwgbG9jYXRpb24sIGxlbmd0aCk7CisgICAgcmV0dXJuIGxlbmd0aDsKK30KKwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiA5NTA3NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDEw
IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgc3VnZ2VzdGVkVmFsdWUoRWxlbWVudCogaW5wdXRFbGVt
ZW50LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRTdWdnZXN0ZWRWYWx1ZShFbGVtZW50
KiBpbnB1dEVsZW1lbnQsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIFBh
c3NSZWZQdHI8UmFuZ2U+IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKERvY3VtZW50KiwgaW50
IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHVu
c2lnbmVkIGxvY2F0aW9uRnJvbVJhbmdlKGNvbnN0IFJhbmdlKiwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHVuc2lnbmVkIGxlbmd0aEZyb21SYW5nZShjb25zdCBSYW5nZSosIEV4Y2VwdGlvbkNvZGUm
KTsKKwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpbnRlcm5hbHNJZDsKIAogcHJpdmF0ZToKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9uIDk1MDc2KQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC02
MSw2ICs2MSwxMCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYm9vbGVhbiB3YXNMYXN0Q2hh
bmdlVXNlckVkaXQoaW4gRWxlbWVudCB0ZXh0RmllbGQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsK
ICAgICAgICAgRE9NU3RyaW5nIHN1Z2dlc3RlZFZhbHVlKGluIEVsZW1lbnQgaW5wdXRFbGVtZW50
KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgc2V0U3VnZ2VzdGVkVmFsdWUo
aW4gRWxlbWVudCBpbnB1dEVsZW1lbnQsIGluIERPTVN0cmluZyB2YWx1ZSkgcmFpc2VzIChET01F
eGNlcHRpb24pOworCisgICAgICAgIFJhbmdlIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGlu
IERvY3VtZW50IGRvY3VtZW50LCBpbiBsb25nIHJhbmdlTG9jYXRpb24sIGluIGxvbmcgcmFuZ2VM
ZW5ndGgpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb2Nh
dGlvbkZyb21SYW5nZShpbiBSYW5nZSByYW5nZSkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAg
ICAgICB1bnNpZ25lZCBsb25nIGxlbmd0aEZyb21SYW5nZShpbiBSYW5nZSByYW5nZSkgcmFpc2Vz
IChET01FeGNlcHRpb24pOwogICAgIH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1
NDAwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTEtMDktMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgRXhwb3NlIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIGFuZCBsb2NhdGlvbkFu
ZExlbmd0aEZyb21SYW5nZSB2aWEgaW50ZXJuYWxzIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgzMzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFRvUmFuZ2UpOgorICAgICAgICAq
IHdpbi9XZWJLaXQyLmRlZjoKKwogMjAxMS0wOS0xNyAgTWloYWkgUGFycGFyaXRhICA8bWloYWlw
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBGcmFtZUxvYWRlckNsaWVudCBCYWNrRm9yd2FyZExp
c3QtcmVsYXRlZCBtZXRob2RzIGFyZSB1bnN1ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDk1MDc2
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zNzcsOSArMzc3LDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gY29u
dmVydFRvUmFuZ2UoRnJhbWUqIAogICAgIC8vIGRpcmVjdGx5IGluIHRoZSBkb2N1bWVudCBET00s
IHNvIHNlcmlhbGl6YXRpb24gaXMgcHJvYmxlbWF0aWMuIE91ciBzb2x1dGlvbiBpcwogICAgIC8v
IHRvIHVzZSB0aGUgcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9mIHRoZSBzZWxlY3Rpb24gc3RhcnQg
YXMgdGhlIHBvc2l0aW9uYWwgYmFzZS4KICAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBp
ZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuCi0gICAgRWxlbWVudCogc2VsZWN0aW9uUm9vdCA9IGZy
YW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwotICAgIEVsZW1lbnQqIHNj
b3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBmcmFtZS0+ZG9jdW1lbnQoKS0+
ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgoc2NvcGUsIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3RoKTsK
KyAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFt
ZSwgbnNyYW5nZS5sb2NhdGlvbiwgbnNyYW5nZS5sZW5ndGgpOwogfQogICAgIAogdm9pZCBXZWJQ
YWdlOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0
X3QgbGVuZ3RoLCBXZWJDb3JlOjpJbnRSZWN0JiByZXN1bHRSZWN0KQpJbmRleDogU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyLmRlZgkocmV2aXNpb24gOTUwNzYpCisrKyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
Mi5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTE1OCwxMCArMTU4LDEyIEBAIEVYUE9SVFMKICAgICAg
ICAgP2lzUHJlbG9hZGVkQENhY2hlZFJlc291cmNlTG9hZGVyQFdlYkNvcmVAQFFCRV9OQUJWU3Ry
aW5nQFdURkBAQFoKICAgICAgICAgP2pzU3RyaW5nU2xvd0Nhc2VAV2ViQ29yZUBAWUE/QVZKU1Zh
bHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAQUFWPyRIYXNoTWFwQFBBVlN0cmluZ0ltcGxAV1RGQEBW
PyRXZWFrQFZKU1N0cmluZ0BKU0NAQEBKU0NAQFVTdHJpbmdIYXNoQDJAVT8kSGFzaFRyYWl0c0BQ
QVZTdHJpbmdJbXBsQFdURkBAQDJAVT8kSGFzaFRyYWl0c0BWPyRXZWFrQFZKU1N0cmluZ0BKU0NA
QEBKU0NAQEAyQEBXVEZAQFBBVlN0cmluZ0ltcGxANkBAWgogICAgICAgICA/bGFzdENoYW5nZVdh
c1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKKyAg
ICAgICAgP2xvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlQFRleHRJdGVyYXRvckBXZWJDb3JlQEBT
QV9OUEJWUmFuZ2VAMkBBQUkxQFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyQFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNv
cmVAQCQwQUBAV1RGQEBQQVZOb2RlQDJAQFoKICAgICAgICAgP21lbW9yeUNhY2hlQFdlYkNvcmVA
QFlBUEFWTWVtb3J5Q2FjaGVAMUBYWgogICAgICAgICA/cGFnZUBEb2N1bWVudEBXZWJDb3JlQEBR
QkVQQVZQYWdlQDJAWFoKICAgICAgICAgP3JlbW92ZVNoYWRvd1Jvb3RARWxlbWVudEBXZWJDb3Jl
QEBRQUVYWFoKKyAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoQFRleHRJdGVyYXRv
ckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29yZUBAQFdURkBAUEFWRnJh
bWVAMkBISEBaCiAgICAgICAgID9zZXREaXNhYmxlZEBNZW1vcnlDYWNoZUBXZWJDb3JlQEBRQUVY
X05AWgogICAgICAgICA/c2V0RE9NRXhjZXB0aW9uQFdlYkNvcmVAQFlBWFBBVkV4ZWNTdGF0ZUBK
U0NAQEhAWgogICAgICAgICA/c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxz
QEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWEhIQFoKQEAgLTE3Niw2ICsxNzgsNyBA
QCBFWFBPUlRTCiAgICAgICAgID90b0pTQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4
ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWQ2xpZW50UmVjdEAxQEBaCiAgICAg
ICAgID90b0pTQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpT
RE9NR2xvYmFsT2JqZWN0QDFAUEFWTm9kZUAxQEBaCiAgICAgICAgID90b0pTQFdlYkNvcmVAQFlB
P0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFW
UmFuZ2VAMUBAWgorICAgICAgICA/dG9SYW5nZUBXZWJDb3JlQEBZQVBBVlJhbmdlQDFAVkpTVmFs
dWVASlNDQEBAWgogICAgICAgICA/dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
QERvY3VtZW50QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/dmlld0BEb2N1bWVudEBXZWJDb3Jl
QEBRQkVQQVZGcmFtZVZpZXdAMkBYWgogICAgICAgICA/dmlydHVhbEZ1bmN0aW9uVG9QcmV2ZW50
V2Vha1Z0YWJsZUBKU0RPTVdyYXBwZXJAV2ViQ29yZUBATUFFWFhaCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkocmV2aXNpb24gOTU0MDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTA5LTE4ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEV4cG9zZSByYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aCBhbmQgbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UgdmlhIGlu
dGVybmFscyBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY4MzMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJ
bXBsOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSk6CisgICAgICAgICogc3JjL21hYy9XZWJT
dWJzdHJpbmdVdGlsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJTdWJzdHJpbmdVdGlsOjphdHRy
aWJ1dGVkU3Vic3RyaW5nSW5SYW5nZSk6CisKIDIwMTEtMDktMTcgIE1paGFpIFBhcnBhcml0YSAg
PG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQgQmFja0Zv
cndhcmRMaXN0LXJlbGF0ZWQgbWV0aG9kcyBhcmUgdW5zdWVkCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDk1MDc2KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTEwNiw5ICsxMTA2LDcgQEAgYm9vbCBXZWJGcmFtZUltcGw6OmZpcnN0UmVjdEZvckNoYXJh
Y3RlcgogICAgIGlmICgobG9jYXRpb24gKyBsZW5ndGggPCBsb2NhdGlvbikgJiYgKGxvY2F0aW9u
ICsgbGVuZ3RoKSkKICAgICAgICAgbGVuZ3RoID0gMDsKIAotICAgIEVsZW1lbnQqIHNlbGVjdGlv
blJvb3QgPSBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwotICAg
IEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBmcmFtZSgp
LT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgbG9jYXRp
b24sIGxlbmd0aCk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUoKSwgbG9jYXRpb24sIGxlbmd0aCk7CiAgICAg
aWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEludFJlY3QgaW50UmVjdCA9
IGZyYW1lKCktPmVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9tYWMvV2ViU3Vic3RyaW5nVXRpbC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9tYWMvV2ViU3Vic3RyaW5nVXRp
bC5tbQkocmV2aXNpb24gOTUwNzYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9tYWMv
V2ViU3Vic3RyaW5nVXRpbC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTYsMTMgKzU2LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBOU0F0dHJpYnV0ZWRTdHJpbmcqIFdlYlN1YnN0cmluZ1V0aWw6OmF0
dHJpYnV0ZWRTdWJzdHJpbmdJblJhbmdlKFdlYkZyYW1lKiB3ZWJGcmFtZSwgc2l6ZV90IGxvY2F0
aW9uLCBzaXplX3QgbGVuZ3RoKQogewogICAgIEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PFdl
YkZyYW1lSW1wbCo+KHdlYkZyYW1lKS0+ZnJhbWUoKTsKLSAgICBpZiAoZnJhbWUtPnZpZXcoKS0+
bmVlZHNMYXlvdXQoKSkKLSAgICAgICAgZnJhbWUtPnZpZXcoKS0+bGF5b3V0KCk7Ci0KLSAgICBF
bGVtZW50KiBzZWxlY3Rpb25Sb290ID0gZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVF
bGVtZW50KCk7Ci0gICAgc2VsZWN0aW9uUm9vdCA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25S
b290IDogZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwotCi0gICAgUmVmUHRy
PFJhbmdlPiByYW5nZShUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNl
bGVjdGlvblJvb3QsIGxvY2F0aW9uLCBsZW5ndGgpKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
KFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUsIGxvY2F0aW9u
LCBsZW5ndGgpKTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gbmlsOwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NTQwMCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTA5LTE4ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEV4cG9zZSByYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aCBhbmQgbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UgdmlhIGludGVy
bmFscyBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY4MzMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSk6
CisKIDIwMTEtMDktMTcgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQgQmFja0ZvcndhcmRMaXN0LXJlbGF0ZWQgbWV0aG9k
cyBhcmUgdW5zdWVkCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAJKHJldmlzaW9uIDk1
MDc2KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTkxLDkgKzU5MSw3IEBAIGJvb2wgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpmaXJzdFJlY3QKICAgICBpZiAoIWVkaXRvcikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRWxlbWVudCogc2VsZWN0aW9uUm9vdCA9IGZyYW1lLT5z
ZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwotICAgIEVsZW1lbnQqIHNjb3BlID0g
c2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1l
bnRFbGVtZW50KCk7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIGxvY2F0aW9uLCBsZW5ndGgpOworICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoKGZyYW1lLCBsb2NhdGlvbiwgbGVuZ3RoKTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NDAwKQorKysg
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTEtMDktMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgRXhwb3NlIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIGFuZCBsb2NhdGlvbkFuZExlbmd0
aEZyb21SYW5nZSB2aWEgaW50ZXJuYWxzIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgzMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgt
W1dlYkZyYW1lIF9jb252ZXJ0VG9ET01SYW5nZTpdKToKKwogMjAxMS0wOS0xNyAgTWloYWkgUGFy
cGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGcmFtZUxvYWRlckNsaWVu
dCBCYWNrRm9yd2FyZExpc3QtcmVsYXRlZCBtZXRob2RzIGFyZSB1bnN1ZWQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gOTUwNzYpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OTUsOSAr
Njk1LDcgQEAgLSAoUGFzc1JlZlB0cjxSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOgogICAgIC8v
IGRpcmVjdGx5IGluIHRoZSBkb2N1bWVudCBET00sIHNvIHNlcmlhbGl6YXRpb24gaXMgcHJvYmxl
bWF0aWMuIE91ciBzb2x1dGlvbiBpcwogICAgIC8vIHRvIHVzZSB0aGUgcm9vdCBlZGl0YWJsZSBl
bGVtZW50IG9mIHRoZSBzZWxlY3Rpb24gc3RhcnQgYXMgdGhlIHBvc2l0aW9uYWwgYmFzZS4KICAg
ICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuCi0g
ICAgRWxlbWVudCogc2VsZWN0aW9uUm9vdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlv
bigpLT5yb290RWRpdGFibGVFbGVtZW50KCk7Ci0gICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rp
b25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCkt
PmRvY3VtZW50RWxlbWVudCgpOwotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBuc3JhbmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7
CisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoX3By
aXZhdGUtPmNvcmVGcmFtZSwgbnNyYW5nZS5sb2NhdGlvbiwgbnNyYW5nZS5sZW5ndGgpOwogfQog
CiAtIChET01SYW5nZSAqKWNvbnZlcnROU1JhbmdlVG9ET01SYW5nZTooTlNSYW5nZSluc3Jhbmdl
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gOTU0MDApCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTA5LTE4ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEV4cG9zZSByYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aCBhbmQgbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UgdmlhIGlu
dGVybmFscyBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY4MzMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Up
OgorCiAyMDExLTA5LTE3ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50IEJhY2tGb3J3YXJkTGlzdC1yZWxhdGVkIG1ldGhv
ZHMgYXJlIHVuc3VlZApJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHJldmlzaW9uIDk1MDc2
KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxNiwxMCArNjE2LDcgQEAgUVZhcmlhbnRMaXN0
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpmaQogICAgIGlmICgobG9jYXRpb24gKyBsZW5ndGgg
PCBsb2NhdGlvbikgJiYgKGxvY2F0aW9uICsgbGVuZ3RoKSkKICAgICAgICAgbGVuZ3RoID0gMDsK
IAotICAgIEVsZW1lbnQqIHNlbGVjdGlvblJvb3QgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RF
ZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBz
ZWxlY3Rpb25Sb290IDogZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwotICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKHNjb3BlLCBsb2NhdGlvbiwgbGVuZ3RoKTsKLQorICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLCBsb2Nh
dGlvbiwgbGVuZ3RoKTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gUVZhcmlhbnRM
aXN0KCk7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NDAwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDktMTggIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXhwb3NlIHJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoIGFuZCBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZSB2aWEgaW50ZXJuYWxz
IG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjgzMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSBzaW1wbGUgdGVzdCB0aGF0IHVzZXMgaW50ZXJuYWxzLnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoLCBpbnRlcm5hbHMubG9jYXRpb25Gcm9tUmFuZ2UsCisgICAgICAgIGFuZCBpbnRlcm5h
bHMubGVuZ3RoRnJvbVJhbmdlLgorCisgICAgICAgICogZWRpdGluZy90ZXh0LWl0ZXJhdG9yL3Jh
bmdlLXRvLWZyb20tbG9jYXRpb24tYW5kLWxlbmd0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvdGV4dC1pdGVyYXRvci9yYW5nZS10by1mcm9tLWxvY2F0aW9uLWFuZC1s
ZW5ndGguaHRtbDogQWRkZWQuCisKIDIwMTEtMDktMTggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzg2MDI4MT4gRGVjb21wb3NlZCB0
ZXh0IGlzIGRpc3BsYXllZCBpbmNvcnJlY3RseSB3aGVuIFZlcmRhbmEgaXMgc3BlY2lmaWVkCklu
ZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvcmFuZ2UtdG8tZnJvbS1sb2Nh
dGlvbi1hbmQtbGVuZ3RoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3RleHQtaXRlcmF0b3IvcmFuZ2UtdG8tZnJvbS1sb2NhdGlvbi1hbmQtbGVuZ3RoLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVy
YXRvci9yYW5nZS10by1mcm9tLWxvY2F0aW9uLWFuZC1sZW5ndGgtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACitQQVNTIGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdl
KHJhbmdlKHAuZmlyc3RDaGlsZCwgMCwgcC5maXJzdENoaWxkLCAzKSkgaXMgWzAsIDFdCitQQVNT
IGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMSwgcC5maXJz
dENoaWxkLCA0KSkgaXMgWzAsIDJdCitQQVNTIGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJh
bmdlKHAuZmlyc3RDaGlsZCwgMiwgcC5maXJzdENoaWxkLCAzKSkgaXMgWzAsIDFdCitQQVNTIGlu
dGVybmFscy5yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChkb2N1bWVudCwgMCwgMSkudG9BcnJh
eSgpIGlzIFtwLmZpcnN0Q2hpbGQsIDIsIHAuZmlyc3RDaGlsZCwgM10KK1BBU1MgbG9jYXRpb25B
bmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5maXJzdENoaWxkLCAyLCBwLmZpcnN0Q2hpbGQsIDcp
KSBpcyBbMCwgNV0KK1BBU1MgbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5maXJz
dENoaWxkLCAyLCBwLCAxKSkgaXMgWzAsIDVdCitQQVNTIGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJh
bmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMiwgcCwgMikpIGlzIFswLCA2XQorUEFTUyBsb2NhdGlv
bkFuZExlbmd0aEZyb21SYW5nZShyYW5nZShwLmZpcnN0Q2hpbGQsIDIsIHAuY2hpbGROb2Rlc1sy
XSwgMSkpIGlzIFswLCA2XQorUEFTUyBpbnRlcm5hbHMucmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgoZG9jdW1lbnQsIDEsIDQpLnRvQXJyYXkoKSBpcyBbcC5maXJzdENoaWxkLCAzLCBwLmZpcnN0
Q2hpbGQsIDddCitQQVNTIGludGVybmFscy5yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChkb2N1
bWVudCwgMCwgNikudG9BcnJheSgpIGlzIFtwLmZpcnN0Q2hpbGQsIDIsIHAuY2hpbGROb2Rlc1sy
XSwgMV0KK1BBU1MgbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5jaGlsZE5vZGVz
WzJdLCA2LCBwLCAzKSkgaXMgWzExLCAxXQorRkFJTCBpbnRlcm5hbHMucmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgoZG9jdW1lbnQsIDExLCAyKS50b0FycmF5KCkgc2hvdWxkIGJlIFtvYmplY3Qg
VGV4dF0sNixbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwwLiBXYXMgW29iamVjdCBUZXh0XSw2LFtv
YmplY3QgSFRNTFBhcmFncmFwaEVsZW1lbnRdLDMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0
LWl0ZXJhdG9yL3JhbmdlLXRvLWZyb20tbG9jYXRpb24tYW5kLWxlbmd0aC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9yYW5nZS10by1mcm9tLWxv
Y2F0aW9uLWFuZC1sZW5ndGguaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvdGV4dC1pdGVyYXRvci9yYW5nZS10by1mcm9tLWxvY2F0aW9uLWFuZC1sZW5ndGguaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0
ZXN0IiBjb250ZW50ZWRpdGFibGU+Cis8cD4gIGhlbGxvPGJyPgord29ybGQuPC9wPgorPGJsb2Nr
cXVvdGU+PGRpdj58PGJyPjwvZGl2PjwvYmxvY2txdW90ZT4KKzxlbT53ZWJraXQ8L2VtPgorPC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2lmICghd2luZG93Lmlu
dGVybmFscykKKyAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3QgcmVxdWlyZXMgaW50ZXJuYWxzIG9i
amVjdCcpOworZWxzZSB7CisKKyAgICBmdW5jdGlvbiByYW5nZShzdGFydENvbnRhaW5lciwgc3Rh
cnRPZmZzZXQsIGVuZENvbnRhaW5lciwgZW5kT2Zmc2V0KSB7CisgICAgICAgIHZhciByYW5nZSA9
ICBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgICAgICByYW5nZS5zZXRTdGFydChzdGFydENv
bnRhaW5lciwgc3RhcnRPZmZzZXQpOworICAgICAgICByYW5nZS5zZXRFbmQoZW5kQ29udGFpbmVy
LCBlbmRPZmZzZXQpOworICAgICAgICByZXR1cm4gcmFuZ2U7CisgICAgfQorCisgICAgZnVuY3Rp
b24gbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UpIHsKKyAgICAgICAgdmFyIGxvY2F0
aW9uID0gaW50ZXJuYWxzLmxvY2F0aW9uRnJvbVJhbmdlKHJhbmdlKTsKKyAgICAgICAgdmFyIGxl
bmd0aCA9IGludGVybmFscy5sZW5ndGhGcm9tUmFuZ2UocmFuZ2UpOworICAgICAgICByZXR1cm4g
W2xvY2F0aW9uLCBsZW5ndGhdOworICAgIH0KKworICAgIFJhbmdlLnByb3RvdHlwZS50b0FycmF5
ID0gZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gW3RoaXMuc3RhcnRDb250YWluZXIsIHRo
aXMuc3RhcnRPZmZzZXQsIHRoaXMuZW5kQ29udGFpbmVyLCB0aGlzLmVuZE9mZnNldF07CisgICAg
fQorCisgICAgdmFyIHAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdGVzdCBwJyk7CisgICAg
dmFyIGRpdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0ZXN0IGRpdicpOworICAgIHZhciBy
ID0gaW50ZXJuYWxzLnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGRvY3VtZW50LCAwLCAxKTsK
KyAgICBzaG91bGRCZSgnbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5maXJzdENo
aWxkLCAwLCBwLmZpcnN0Q2hpbGQsIDMpKScsICdbMCwgMV0nKTsKKyAgICBzaG91bGRCZSgnbG9j
YXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5maXJzdENoaWxkLCAxLCBwLmZpcnN0Q2hp
bGQsIDQpKScsICdbMCwgMl0nKTsKKyAgICBzaG91bGRCZSgnbG9jYXRpb25BbmRMZW5ndGhGcm9t
UmFuZ2UocmFuZ2UocC5maXJzdENoaWxkLCAyLCBwLmZpcnN0Q2hpbGQsIDMpKScsICdbMCwgMV0n
KTsKKyAgICBzaG91bGRCZSgnaW50ZXJuYWxzLnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGRv
Y3VtZW50LCAwLCAxKS50b0FycmF5KCknLCAnW3AuZmlyc3RDaGlsZCwgMiwgcC5maXJzdENoaWxk
LCAzXScpOworCisgICAgc2hvdWxkQmUoJ2xvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdl
KHAuZmlyc3RDaGlsZCwgMiwgcC5maXJzdENoaWxkLCA3KSknLCAnWzAsIDVdJyk7CisgICAgc2hv
dWxkQmUoJ2xvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMiwg
cCwgMSkpJywgJ1swLCA1XScpOworICAgIHNob3VsZEJlKCdsb2NhdGlvbkFuZExlbmd0aEZyb21S
YW5nZShyYW5nZShwLmZpcnN0Q2hpbGQsIDIsIHAsIDIpKScsICdbMCwgNl0nKTsKKyAgICBzaG91
bGRCZSgnbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5maXJzdENoaWxkLCAyLCBw
LmNoaWxkTm9kZXNbMl0sIDEpKScsICdbMCwgNl0nKTsKKyAgICBzaG91bGRCZSgnaW50ZXJuYWxz
LnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGRvY3VtZW50LCAxLCA0KS50b0FycmF5KCknLCAn
W3AuZmlyc3RDaGlsZCwgMywgcC5maXJzdENoaWxkLCA3XScpOworICAgIHNob3VsZEJlKCdpbnRl
cm5hbHMucmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQsIDAsIDYpLnRvQXJyYXko
KScsICdbcC5maXJzdENoaWxkLCAyLCBwLmNoaWxkTm9kZXNbMl0sIDFdJyk7CisKKyAgICBzaG91
bGRCZSgnbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5jaGlsZE5vZGVzWzJdLCA2
LCBwLCAzKSknLCAnWzExLCAxXScpOworICAgIHNob3VsZEJlKCdpbnRlcm5hbHMucmFuZ2VGcm9t
TG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQsIDExLCAyKS50b0FycmF5KCknLCAnW3AuY2hpbGRO
b2Rlc1syXSwgNiwgZGl2LCAwXScpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
c3QnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107893</attachid>
            <date>2011-09-19 11:29:24 -0700</date>
            <delta_ts>2011-10-14 10:22:41 -0700</delta_ts>
            <desc>Fixed GTK build</desc>
            <filename>bug-68330-20110919112923.patch</filename>
            <type>text/plain</type>
            <size>25266</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDk1NDQ1
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDkt
MTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXhwb3NlIHJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIGFuZCBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZSB2
aWEgaW50ZXJuYWxzIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjgzMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTEtMDkt
MTcgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxd
IEJ1bXAgbWluaW11bSByZXF1aXJlbWVudCBmb3IgY2Fpcm8gdG8gMS4xMC4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDk1NDI3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDktMTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXhwb3NlIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
IGFuZCBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZSB2aWEgaW50ZXJuYWxzIG9iamVjdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgzMzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgcmFuZ2VGcm9t
TG9jYXRpb25BbmRMZW5ndGgsIGxvY2F0aW9uRnJvbVJhbmdlLCBhbmQgbGVuZ3RoRnJvbVJhbmdl
IHRvIHdpbmRvdy5pbnRlcm5hbHMuCisKKyAgICAgICAgQWxzbyBhZGQgdGhlIHZlcnNpb24gb2Yg
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggdGhhdCBhdXRvbWF0aWNhbGx5IGNvbXB1dGVzIHRo
ZSBzY29wZSBlbGVtZW50CisgICAgICAgIGFuZCB1c2UgaW4gU291cmNlL1dlYktpdC4KKworICAg
ICAgICBUZXN0OiBlZGl0aW5nL3RleHQtaXRlcmF0b3IvcmFuZ2UtdG8tZnJvbS1sb2NhdGlvbi1h
bmQtbGVuZ3RoLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGVk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJh
dG9yLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OmxvY2F0aW9uRnJvbVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6bGVuZ3RoRnJvbVJhbmdlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5o
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMS0wOS0xOSAgQWRlbWFy
IGRlIFNvdXphIFJlaXMgSnIuICA8YWRlbWFyLnJlaXNAb3BlbmJvc3NhLm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkOiBkb3MydW5peCBvbiBiaW5kaW5ncy9qcy9KU0V4Y2VwdGlvbkJhc2UuaApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDk1NDI3KQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBfX1pO
N1dlYkNvcmUxMlNwZWxsQ2hlY2tlcjhkaWRDaGVja0VpUktOCiBfX1pON1dlYkNvcmUxMlRleHRF
bmNvZGluZ0MxRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IxMXJh
bmdlTGVuZ3RoRVBLTlNfNVJhbmdlRWIKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjZsb2Nh
dGlvbkFuZExlbmd0aEZyb21SYW5nZUVQS05TXzVSYW5nZUVSbVM0XwotX19aTjdXZWJDb3JlMTJU
ZXh0SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBOU183RWxlbWVudEVpaWIK
K19fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEVQ
TlNfNUZyYW1lRWlpCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjdhZHZhbmNlRXYKIF9fWk43
V2ViQ29yZTEyVGV4dEl0ZXJhdG9yOHN1YnJhbmdlRVBOU181UmFuZ2VFaWkKIF9fWk43V2ViQ29y
ZTEyVGV4dEl0ZXJhdG9yQzFFUEtOU181UmFuZ2VFTlNfMjBUZXh0SXRlcmF0b3JCZWhhdmlvckUK
QEAgLTg1MSw2ICs4NTEsNyBAQCBfX1pON1dlYkNvcmU3VGV4dFJ1bjIxc19hbGxvd3NSb3VuZGlu
Z0hhCiBfX1pON1dlYkNvcmU3VGV4dFJ1bjIyc2V0QWxsb3dzUm91bmRpbmdIYWNrc0ViCiBfX1pO
N1dlYkNvcmU3Y29va2llc0VQS05TXzhEb2N1bWVudEVSS05TXzRLVVJMRQogX19aTjdXZWJDb3Jl
N25zQ29sb3JFUktOU181Q29sb3JFCitfX1pON1dlYkNvcmU3dG9SYW5nZUVOM0pTQzdKU1ZhbHVl
RQogX19aTjdXZWJDb3JlOERvY3VtZW50MTFjcmVhdGVSYW5nZUV2CiBfX1pON1dlYkNvcmU4RG9j
dW1lbnQxMnVwZGF0ZUxheW91dEV2CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxM3N2Z0V4dGVuc2lv
bnNFdgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkocmV2aXNp
b24gOTU0MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzNzcsNiArMjM3NywxNiBAQCBQYXNzUmVmUHRyPFJhbmdlPiBUZXh0
SXRlcmF0b3I6OnN1YnJhbmdlCiAgICAgcmV0dXJuIGNoYXJhY3RlclN1YnJhbmdlKGVudGlyZVJh
bmdlSXRlcmF0b3IsIGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyQ291bnQpOwogfQogCitQYXNz
UmVmUHRyPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEZy
YW1lKiBmcmFtZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCkKK3sKKyAgICBF
bGVtZW50KiBzZWxlY3Rpb25Sb290ID0gZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVF
bGVtZW50KCk7CisgICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9u
Um9vdCA6IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKKworICAgIGZyYW1l
LT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKwor
ICAgIHJldHVybiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgcmFuZ2VMb2NhdGlv
biwgcmFuZ2VMZW5ndGgpOworfQorCiBQYXNzUmVmUHRyPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQqIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlv
biwgaW50IHJhbmdlTGVuZ3RoLCBib29sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbikKIHsKICAg
ICBSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gc2NvcGUtPmRvY3VtZW50KCktPmNyZWF0ZVJh
bmdlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgJKHJldmlzaW9u
IDk1NDI3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTgsNiArOTgsNyBAQCBwdWJsaWM6CiAgICAgTm9kZSogbm9kZSgpIGNvbnN0
OwogICAgICAKICAgICBzdGF0aWMgaW50IHJhbmdlTGVuZ3RoKGNvbnN0IFJhbmdlKiwgYm9vbCBz
cGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzID0gZmFsc2UpOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChGcmFtZSosIGludCByYW5nZUxvY2F0
aW9uLCBpbnQgcmFuZ2VMZW5ndGgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiByYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50KiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24s
IGludCByYW5nZUxlbmd0aCwgYm9vbCBzcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzID0gZmFsc2Up
OwogICAgIHN0YXRpYyBib29sIGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKGNvbnN0IFJhbmdl
Kiwgc2l6ZV90JiBsb2NhdGlvbiwgc2l6ZV90JiBsZW5ndGgpOwogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFJhbmdlPiBzdWJyYW5nZShSYW5nZSogZW50aXJlUmFuZ2UsIGludCBjaGFyYWN0ZXJPZmZz
ZXQsIGludCBjaGFyYWN0ZXJDb3VudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCShyZXZpc2lvbiA5NTQyNykKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q29udGVudEVsZW1lbnQuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAKICNpZiBFTkFCTEUoSU5QVVRf
Q09MT1IpCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCkBAIC0zNjUsNCArMzY2LDQwIEBAIHZv
aWQgSW50ZXJuYWxzOjpzZXRTdWdnZXN0ZWRWYWx1ZShFbGVtZW4KICAgICBpbnB1dEVsZW1lbnQt
PnNldFN1Z2dlc3RlZFZhbHVlKHZhbHVlKTsKIH0KIAorUGFzc1JlZlB0cjxSYW5nZT4gSW50ZXJu
YWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChEb2N1bWVudCogZG9jdW1lbnQsIGludCBy
YW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IGlmICghZG9jdW1lbnQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKGRvY3VtZW50LT5mcmFtZSgpLCByYW5nZUxvY2F0aW9uLCByYW5n
ZUxlbmd0aCk7Cit9CisKK3Vuc2lnbmVkIEludGVybmFsczo6bG9jYXRpb25Gcm9tUmFuZ2UoY29u
c3QgUmFuZ2UqIHJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIXJhbmdlKSB7
CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICBzaXplX3QgbG9jYXRpb24gPSAwOworICAgIHNpemVfdCBsZW5ndGggPSAwOwor
ICAgIFRleHRJdGVyYXRvcjo6bG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UsIGxvY2F0
aW9uLCBsZW5ndGgpOworICAgIHJldHVybiBsb2NhdGlvbjsKK30KKwordW5zaWduZWQgSW50ZXJu
YWxzOjpsZW5ndGhGcm9tUmFuZ2UoY29uc3QgUmFuZ2UqIHJhbmdlLCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBpZiAoIXJhbmdlKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJS
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBzaXplX3QgbG9jYXRpb24gPSAwOwor
ICAgIHNpemVfdCBsZW5ndGggPSAwOworICAgIFRleHRJdGVyYXRvcjo6bG9jYXRpb25BbmRMZW5n
dGhGcm9tUmFuZ2UocmFuZ2UsIGxvY2F0aW9uLCBsZW5ndGgpOworICAgIHJldHVybiBsZW5ndGg7
Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkocmV2aXNpb24gOTU0
MjcpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkp
CkBAIC04OCw2ICs4OCwxMCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHN1Z2dlc3RlZFZhbHVlKEVs
ZW1lbnQqIGlucHV0RWxlbWVudCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0U3VnZ2Vz
dGVkVmFsdWUoRWxlbWVudCogaW5wdXRFbGVtZW50LCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CiAKKyAgICBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChEb2N1bWVudCosIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB1bnNpZ25lZCBsb2NhdGlvbkZyb21SYW5nZShjb25zdCBSYW5nZSosIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB1bnNpZ25lZCBsZW5ndGhGcm9tUmFuZ2UoY29uc3QgUmFuZ2Uq
LCBFeGNlcHRpb25Db2RlJik7CisKICAgICBzdGF0aWMgY29uc3QgY2hhciogaW50ZXJuYWxzSWQ7
CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZp
c2lvbiA5NTQyNykKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTAgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGJv
b2xlYW4gd2FzTGFzdENoYW5nZVVzZXJFZGl0KGluIEVsZW1lbnQgdGV4dEZpZWxkKSByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CiAgICAgICAgIERPTVN0cmluZyBzdWdnZXN0ZWRWYWx1ZShpbiBFbGVt
ZW50IGlucHV0RWxlbWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNl
dFN1Z2dlc3RlZFZhbHVlKGluIEVsZW1lbnQgaW5wdXRFbGVtZW50LCBpbiBET01TdHJpbmcgdmFs
dWUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICBSYW5nZSByYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9uZyByYW5nZUxvY2F0aW9u
LCBpbiBsb25nIHJhbmdlTGVuZ3RoKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHVu
c2lnbmVkIGxvbmcgbG9jYXRpb25Gcm9tUmFuZ2UoaW4gUmFuZ2UgcmFuZ2UpIHJhaXNlcyAoRE9N
RXhjZXB0aW9uKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsZW5ndGhGcm9tUmFuZ2UoaW4gUmFu
Z2UgcmFuZ2UpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCShyZXZpc2lvbiA5NTQyNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTA5LTE5ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgorCisgICAgICAgIEV4cG9zZSByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aCBhbmQgbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UgdmlhIGludGVybmFscyBvYmplY3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MzMwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb1Jh
bmdlKToKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6CisKIDIwMTEtMDktMTkgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEZpeCBk
aXN0Y2hlY2sgYnVpbGQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDk1NDI3KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zNzcsOSArMzc3LDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gY29udmVydFRvUmFuZ2UoRnJh
bWUqCiAgICAgLy8gZGlyZWN0bHkgaW4gdGhlIGRvY3VtZW50IERPTSwgc28gc2VyaWFsaXphdGlv
biBpcyBwcm9ibGVtYXRpYy4gT3VyIHNvbHV0aW9uIGlzCiAgICAgLy8gdG8gdXNlIHRoZSByb290
IGVkaXRhYmxlIGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25h
bCBiYXNlLgogICAgIC8vIFRoYXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQg
Y29udGV4dC4KLSAgICBFbGVtZW50KiBzZWxlY3Rpb25Sb290ID0gZnJhbWUtPnNlbGVjdGlvbigp
LT5yb290RWRpdGFibGVFbGVtZW50KCk7Ci0gICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rpb25S
b290ID8gc2VsZWN0aW9uUm9vdCA6IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQo
KTsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChz
Y29wZSwgbnNyYW5nZS5sb2NhdGlvbiwgbnNyYW5nZS5sZW5ndGgpOworICAgIHJldHVybiBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLCBuc3JhbmdlLmxvY2F0
aW9uLCBuc3JhbmdlLmxlbmd0aCk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2U6OmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIFdlYkNv
cmU6OkludFJlY3QmIHJlc3VsdFJlY3QpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
Mi5kZWYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCShyZXZp
c2lvbiA5NTQyNykKKysrIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgkod29ya2luZyBj
b3B5KQpAQCAtMTU4LDEwICsxNTgsMTIgQEAgRVhQT1JUUwogICAgICAgICA/aXNQcmVsb2FkZWRA
Q2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJpbmdAV1RGQEBAWgogICAg
ICAgICA/anNTdHJpbmdTbG93Q2FzZUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVj
U3RhdGVAM0BBQVY/JEhhc2hNYXBAUEFWU3RyaW5nSW1wbEBXVEZAQFY/JFdlYWtAVkpTU3RyaW5n
QEpTQ0BAQEpTQ0BAVVN0cmluZ0hhc2hAMkBVPyRIYXNoVHJhaXRzQFBBVlN0cmluZ0ltcGxAV1RG
QEBAMkBVPyRIYXNoVHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAQDJAQFdURkBA
UEFWU3RyaW5nSW1wbEA2QEBaCiAgICAgICAgID9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgorICAgICAgICA/bG9jYXRpb25B
bmRMZW5ndGhGcm9tUmFuZ2VAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBX05QQlZSYW5nZUAyQEFB
STFAWgogICAgICAgICA/bWFya2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29y
ZUBAUUFFP0FWPyRWZWN0b3JAUEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBB
Vk5vZGVAMkBAWgogICAgICAgICA/bWVtb3J5Q2FjaGVAV2ViQ29yZUBAWUFQQVZNZW1vcnlDYWNo
ZUAxQFhaCiAgICAgICAgID9wYWdlQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VAMkBYWgog
ICAgICAgICA/cmVtb3ZlU2hhZG93Um9vdEBFbGVtZW50QFdlYkNvcmVAQFFBRVhYWgorICAgICAg
ICA/cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FW
PyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZGcmFtZUAyQEhIQFoKICAgICAg
ICAgP3NldERpc2FibGVkQE1lbW9yeUNhY2hlQFdlYkNvcmVAQFFBRVhfTkBaCiAgICAgICAgID9z
ZXRET01FeGNlcHRpb25AV2ViQ29yZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BASEBaCiAgICAgICAg
ID9zZXRSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0c0Zyb21JbnRlcm5hbHNASW5zcGVjdG9yQ29udHJv
bGxlckBXZWJDb3JlQEBRQUVYSEhAWgpAQCAtMTc2LDYgKzE3OCw3IEBAIEVYUE9SVFMKICAgICAg
ICAgP3RvSlNAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNE
T01HbG9iYWxPYmplY3RAMUBQQVZDbGllbnRSZWN0QDFAQFoKICAgICAgICAgP3RvSlNAV2ViQ29y
ZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RA
MUBQQVZOb2RlQDFAQFoKICAgICAgICAgP3RvSlNAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BA
UEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVZSYW5nZUAxQEBaCisgICAg
ICAgID90b1JhbmdlQFdlYkNvcmVAQFlBUEFWUmFuZ2VAMUBWSlNWYWx1ZUBKU0NAQEBaCiAgICAg
ICAgID91cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNARG9jdW1lbnRAV2ViQ29y
ZUBAUUFFWFhaCiAgICAgICAgID92aWV3QERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVkZyYW1lVmll
d0AyQFhaCiAgICAgICAgID92aXJ0dWFsRnVuY3Rpb25Ub1ByZXZlbnRXZWFrVnRhYmxlQEpTRE9N
V3JhcHBlckBXZWJDb3JlQEBNQUVYWFoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShy
ZXZpc2lvbiA5NTQyNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDktMTkgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXhwb3NlIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoIGFuZCBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZSB2aWEgaW50ZXJuYWxzIG9iamVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgzMzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJG
cmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKiBzcmMvbWFjL1dlYlN1YnN0cmluZ1V0aWwubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlN1YnN0cmluZ1V0aWw6OmF0dHJpYnV0ZWRTdWJzdHJpbmdJ
blJhbmdlKToKKwogMjAxMS0wOS0xOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk1NDE2LgpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lv
biA5NTQyNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMDYsOSArMTEwNiw3IEBAIGJvb2wgV2ViRnJhbWVJbXBsOjpm
aXJzdFJlY3RGb3JDaGFyYWN0ZXIKICAgICBpZiAoKGxvY2F0aW9uICsgbGVuZ3RoIDwgbG9jYXRp
b24pICYmIChsb2NhdGlvbiArIGxlbmd0aCkpCiAgICAgICAgIGxlbmd0aCA9IDA7CiAKLSAgICBF
bGVtZW50KiBzZWxlY3Rpb25Sb290ID0gZnJhbWUoKS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJs
ZUVsZW1lbnQoKTsKLSAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rp
b25Sb290IDogZnJhbWUoKS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgUmVm
UHRyPFJhbmdlPiByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgoc2NvcGUsIGxvY2F0aW9uLCBsZW5ndGgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lKCksIGxvY2F0aW9u
LCBsZW5ndGgpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBJ
bnRSZWN0IGludFJlY3QgPSBmcmFtZSgpLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFu
Z2UuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbWFjL1dlYlN1YnN0
cmluZ1V0aWwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbWFj
L1dlYlN1YnN0cmluZ1V0aWwubW0JKHJldmlzaW9uIDk1NDI3KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvbWFjL1dlYlN1YnN0cmluZ1V0aWwubW0JKHdvcmtpbmcgY29weSkKQEAgLTU2
LDEzICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogTlNBdHRyaWJ1dGVkU3RyaW5nKiBXZWJT
dWJzdHJpbmdVdGlsOjphdHRyaWJ1dGVkU3Vic3RyaW5nSW5SYW5nZShXZWJGcmFtZSogd2ViRnJh
bWUsIHNpemVfdCBsb2NhdGlvbiwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBGcmFtZSogZnJhbWUg
PSBzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPih3ZWJGcmFtZSktPmZyYW1lKCk7Ci0gICAgaWYg
KGZyYW1lLT52aWV3KCktPm5lZWRzTGF5b3V0KCkpCi0gICAgICAgIGZyYW1lLT52aWV3KCktPmxh
eW91dCgpOwotCi0gICAgRWxlbWVudCogc2VsZWN0aW9uUm9vdCA9IGZyYW1lLT5zZWxlY3Rpb24o
KS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwotICAgIHNlbGVjdGlvblJvb3QgPSBzZWxlY3Rpb25S
b290ID8gc2VsZWN0aW9uUm9vdCA6IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQo
KTsKLQotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UoVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aChzZWxlY3Rpb25Sb290LCBsb2NhdGlvbiwgbGVuZ3RoKSk7CisgICAgUmVm
UHRyPFJhbmdlPiByYW5nZShUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KGZyYW1lLCBsb2NhdGlvbiwgbGVuZ3RoKSk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIApJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gOTU0MjcpCisrKyBTb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxMS0wOS0xOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBF
eHBvc2UgcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggYW5kIGxvY2F0aW9uQW5kTGVuZ3RoRnJv
bVJhbmdlIHZpYSBpbnRlcm5hbHMgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02ODMzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Zmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2UpOgorCiAyMDExLTA5LTE5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBGaXggZGlzdGNoZWNrIGJ1aWxkCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAJKHJldmlzaW9uIDk1NDI3KQorKysgU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTkxLDkgKzU5MSw3IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjpmaXJzdFJlY3QKICAgICBpZiAoIWVkaXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgRWxlbWVudCogc2VsZWN0aW9uUm9vdCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+cm9v
dEVkaXRhYmxlRWxlbWVudCgpOwotICAgIEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/
IHNlbGVjdGlvblJvb3QgOiBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0g
ICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoc2NvcGUsIGxvY2F0aW9uLCBsZW5ndGgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLCBsb2Nh
dGlvbiwgbGVuZ3RoKTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NDI3KQorKysgU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMTkg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXhwb3NlIHJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoIGFuZCBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZSB2aWEg
aW50ZXJuYWxzIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjgzMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9jb252
ZXJ0VG9ET01SYW5nZTpdKToKKwogMjAxMS0wOS0xNyAgTWloYWkgUGFycGFyaXRhICA8bWloYWlw
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBGcmFtZUxvYWRlckNsaWVudCBCYWNrRm9yd2FyZExp
c3QtcmVsYXRlZCBtZXRob2RzIGFyZSB1bnN1ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQkocmV2aXNpb24gOTU0MjcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OTUsOSArNjk1LDcgQEAgLSAoUGFz
c1JlZlB0cjxSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOgogICAgIC8vIGRpcmVjdGx5IGluIHRo
ZSBkb2N1bWVudCBET00sIHNvIHNlcmlhbGl6YXRpb24gaXMgcHJvYmxlbWF0aWMuIE91ciBzb2x1
dGlvbiBpcwogICAgIC8vIHRvIHVzZSB0aGUgcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9mIHRoZSBz
ZWxlY3Rpb24gc3RhcnQgYXMgdGhlIHBvc2l0aW9uYWwgYmFzZS4KICAgICAvLyBUaGF0IGZpdHMg
d2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuCi0gICAgRWxlbWVudCogc2Vs
ZWN0aW9uUm9vdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFi
bGVFbGVtZW50KCk7Ci0gICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0
aW9uUm9vdCA6IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVu
dCgpOwotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KHNjb3BlLCBuc3JhbmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgcmV0dXJuIFRl
eHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoX3ByaXZhdGUtPmNvcmVGcmFt
ZSwgbnNyYW5nZS5sb2NhdGlvbiwgbnNyYW5nZS5sZW5ndGgpOwogfQogCiAtIChET01SYW5nZSAq
KWNvbnZlcnROU1JhbmdlVG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gOTU0MjcpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTA5LTE5ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEV4cG9zZSByYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aCBhbmQgbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UgdmlhIGludGVybmFscyBvYmplY3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MzMwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UpOgorCiAyMDExLTA5LTE3
ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZyYW1l
TG9hZGVyQ2xpZW50IEJhY2tGb3J3YXJkTGlzdC1yZWxhdGVkIG1ldGhvZHMgYXJlIHVuc3VlZApJ
bmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHJldmlzaW9uIDk1NDI3KQorKysgU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYxNiwxMCArNjE2LDcgQEAgUVZhcmlhbnRMaXN0IER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpmaQogICAgIGlmICgobG9jYXRpb24gKyBsZW5ndGggPCBsb2NhdGlvbikgJiYg
KGxvY2F0aW9uICsgbGVuZ3RoKSkKICAgICAgICAgbGVuZ3RoID0gMDsKIAotICAgIEVsZW1lbnQq
IHNlbGVjdGlvblJvb3QgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQo
KTsKLSAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDog
ZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwotICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBs
b2NhdGlvbiwgbGVuZ3RoKTsKLQorICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBUZXh0SXRlcmF0
b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLCBsb2NhdGlvbiwgbGVuZ3RoKTsK
ICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gUVZhcmlhbnRMaXN0KCk7CiAKSW5kZXg6
IFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgkocmV2aXNpb24gOTU0MjcpCisrKyBTb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw4IEBAIF9aTjdX
ZWJDb3JlMTFNZW1vcnlDYWNoZTExc2V0RGlzYWJsZWRFYjsKIF9aTjdXZWJDb3JlMTFtZW1vcnlD
YWNoZUV2OwogX1pON1dlYkNvcmUxMkpTRE9NV3JhcHBlcjM0dmlydHVhbEZ1bmN0aW9uVG9QcmV2
ZW50V2Vha1Z0YWJsZUV2OwogX1pON1dlYkNvcmUxMlJlbmRlck9iamVjdDIzYWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3RFYjsKK19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNmxvY2F0aW9uQW5kTGVu
Z3RoRnJvbVJhbmdlRVBLTlNfNVJhbmdlRVJtUzRfOworX1pON1dlYkNvcmUxMlRleHRJdGVyYXRv
cjI2cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhFUE5TXzVGcmFtZUVpaTsKIF9aTjdXZWJDb3Jl
MTNjcmVhdGVXcmFwcGVyRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RF
UE5TXzROb2RlRTsKIF9aTjdXZWJDb3JlMTVzZXRET01FeGNlcHRpb25FUE4zSlNDOUV4ZWNTdGF0
ZUVpOwogX1pON1dlYkNvcmUxNkhUTUxJbnB1dEVsZW1lbnQxN3NldFN1Z2dlc3RlZFZhbHVlRVJL
TjNXVEY2U3RyaW5nRTsKQEAgLTYyLDYgKzY0LDcgQEAgX1pON1dlYkNvcmU2SlNOb2RlNnNfaW5m
b0U7CiBfWk43V2ViQ29yZTZ0b05vZGVFTjNKU0M3SlNWYWx1ZUU7CiBfWk43V2ViQ29yZTdFbGVt
ZW50MTZlbnN1cmVTaGFkb3dSb290RXY7CiBfWk43V2ViQ29yZTdFbGVtZW50MTZyZW1vdmVTaGFk
b3dSb290RXY7CitfWk43V2ViQ29yZTd0b1JhbmdlRU4zSlNDN0pTVmFsdWVFOwogX1pON1dlYkNv
cmU5SlNFbGVtZW50M3B1dEVQTjNKU0M5RXhlY1N0YXRlRVJLTlMxXzEwSWRlbnRpZmllckVOUzFf
N0pTVmFsdWVFUk5TMV8xNVB1dFByb3BlcnR5U2xvdEU7CiBfWk43V2ViQ29yZTlKU0VsZW1lbnQ2
c19pbmZvRTsKIF9aTjdXZWJDb3JlOXRvRWxlbWVudEVOM0pTQzdKU1ZhbHVlRTsKQEAgLTgwLDMg
KzgzLDQgQEAgbG9jYWw6CiBfWio7CiBjdGkqOwogfTsKKwpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTU0
MjcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxMS0wOS0xOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAg
ICAgICBFeHBvc2UgcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggYW5kIGxvY2F0aW9uQW5kTGVu
Z3RoRnJvbVJhbmdlIHZpYSBpbnRlcm5hbHMgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODMzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHNpbXBsZSB0ZXN0IHRoYXQgdXNlcyBpbnRl
cm5hbHMucmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgsIGludGVybmFscy5sb2NhdGlvbkZyb21S
YW5nZSwKKyAgICAgICAgYW5kIGludGVybmFscy5sZW5ndGhGcm9tUmFuZ2UuCisKKyAgICAgICAg
KiBlZGl0aW5nL3RleHQtaXRlcmF0b3IvcmFuZ2UtdG8tZnJvbS1sb2NhdGlvbi1hbmQtbGVuZ3Ro
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy90ZXh0LWl0ZXJhdG9yL3Jh
bmdlLXRvLWZyb20tbG9jYXRpb24tYW5kLWxlbmd0aC5odG1sOiBBZGRlZC4KKwogMjAxMS0wOS0x
OSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCBza2lwIGluc3BlY3Rvci90aW1lbGluZS90aW1lbGluZS1hbmltYXRpb24tZnJhbWUu
aHRtbCBvbiB3aW4gcGxhdGZvcm0uCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRl
cmF0b3IvcmFuZ2UtdG8tZnJvbS1sb2NhdGlvbi1hbmQtbGVuZ3RoLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvcmFuZ2UtdG8tZnJv
bS1sb2NhdGlvbi1hbmQtbGVuZ3RoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9yYW5nZS10by1mcm9tLWxvY2F0aW9uLWFuZC1s
ZW5ndGgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACitQQVNTIGxv
Y2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMCwgcC5maXJzdENo
aWxkLCAzKSkgaXMgWzAsIDFdCitQQVNTIGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdl
KHAuZmlyc3RDaGlsZCwgMSwgcC5maXJzdENoaWxkLCA0KSkgaXMgWzAsIDJdCitQQVNTIGxvY2F0
aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMiwgcC5maXJzdENoaWxk
LCAzKSkgaXMgWzAsIDFdCitQQVNTIGludGVybmFscy5yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChkb2N1bWVudCwgMCwgMSkudG9BcnJheSgpIGlzIFtwLmZpcnN0Q2hpbGQsIDIsIHAuZmlyc3RD
aGlsZCwgM10KK1BBU1MgbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5maXJzdENo
aWxkLCAyLCBwLmZpcnN0Q2hpbGQsIDcpKSBpcyBbMCwgNV0KK1BBU1MgbG9jYXRpb25BbmRMZW5n
dGhGcm9tUmFuZ2UocmFuZ2UocC5maXJzdENoaWxkLCAyLCBwLCAxKSkgaXMgWzAsIDVdCitQQVNT
IGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMiwgcCwgMikp
IGlzIFswLCA2XQorUEFTUyBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyYW5nZShwLmZpcnN0
Q2hpbGQsIDIsIHAuY2hpbGROb2Rlc1syXSwgMSkpIGlzIFswLCA2XQorUEFTUyBpbnRlcm5hbHMu
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQsIDEsIDQpLnRvQXJyYXkoKSBpcyBb
cC5maXJzdENoaWxkLCAzLCBwLmZpcnN0Q2hpbGQsIDddCitQQVNTIGludGVybmFscy5yYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aChkb2N1bWVudCwgMCwgNikudG9BcnJheSgpIGlzIFtwLmZpcnN0
Q2hpbGQsIDIsIHAuY2hpbGROb2Rlc1syXSwgMV0KK1BBU1MgbG9jYXRpb25BbmRMZW5ndGhGcm9t
UmFuZ2UocmFuZ2UocC5jaGlsZE5vZGVzWzJdLCA2LCBwLCAzKSkgaXMgWzExLCAxXQorRkFJTCBp
bnRlcm5hbHMucmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQsIDExLCAyKS50b0Fy
cmF5KCkgc2hvdWxkIGJlIFtvYmplY3QgVGV4dF0sNixbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSww
LiBXYXMgW29iamVjdCBUZXh0XSw2LFtvYmplY3QgSFRNTFBhcmFncmFwaEVsZW1lbnRdLDMuCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9yL3JhbmdlLXRvLWZyb20tbG9jYXRpb24t
YW5kLWxlbmd0aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1p
dGVyYXRvci9yYW5nZS10by1mcm9tLWxvY2F0aW9uLWFuZC1sZW5ndGguaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9yYW5nZS10by1mcm9tLWxv
Y2F0aW9uLWFuZC1sZW5ndGguaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU+Cis8cD4gIGhlbGxv
PGJyPgord29ybGQuPC9wPgorPGJsb2NrcXVvdGU+PGRpdj58PGJyPjwvZGl2PjwvYmxvY2txdW90
ZT4KKzxlbT53ZWJraXQ8L2VtPgorPC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisKK2lmICghd2luZG93LmludGVybmFscykKKyAgICB0ZXN0RmFpbGVkKCdUaGlzIHRl
c3QgcmVxdWlyZXMgaW50ZXJuYWxzIG9iamVjdCcpOworZWxzZSB7CisKKyAgICBmdW5jdGlvbiBy
YW5nZShzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQsIGVuZENvbnRhaW5lciwgZW5kT2Zmc2V0
KSB7CisgICAgICAgIHZhciByYW5nZSA9ICBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgICAg
ICByYW5nZS5zZXRTdGFydChzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQpOworICAgICAgICBy
YW5nZS5zZXRFbmQoZW5kQ29udGFpbmVyLCBlbmRPZmZzZXQpOworICAgICAgICByZXR1cm4gcmFu
Z2U7CisgICAgfQorCisgICAgZnVuY3Rpb24gbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFu
Z2UpIHsKKyAgICAgICAgdmFyIGxvY2F0aW9uID0gaW50ZXJuYWxzLmxvY2F0aW9uRnJvbVJhbmdl
KHJhbmdlKTsKKyAgICAgICAgdmFyIGxlbmd0aCA9IGludGVybmFscy5sZW5ndGhGcm9tUmFuZ2Uo
cmFuZ2UpOworICAgICAgICByZXR1cm4gW2xvY2F0aW9uLCBsZW5ndGhdOworICAgIH0KKworICAg
IFJhbmdlLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4g
W3RoaXMuc3RhcnRDb250YWluZXIsIHRoaXMuc3RhcnRPZmZzZXQsIHRoaXMuZW5kQ29udGFpbmVy
LCB0aGlzLmVuZE9mZnNldF07CisgICAgfQorCisgICAgdmFyIHAgPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCcjdGVzdCBwJyk7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
JyN0ZXN0IGRpdicpOworICAgIHZhciByID0gaW50ZXJuYWxzLnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKGRvY3VtZW50LCAwLCAxKTsKKyAgICBzaG91bGRCZSgnbG9jYXRpb25BbmRMZW5ndGhG
cm9tUmFuZ2UocmFuZ2UocC5maXJzdENoaWxkLCAwLCBwLmZpcnN0Q2hpbGQsIDMpKScsICdbMCwg
MV0nKTsKKyAgICBzaG91bGRCZSgnbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5m
aXJzdENoaWxkLCAxLCBwLmZpcnN0Q2hpbGQsIDQpKScsICdbMCwgMl0nKTsKKyAgICBzaG91bGRC
ZSgnbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5maXJzdENoaWxkLCAyLCBwLmZp
cnN0Q2hpbGQsIDMpKScsICdbMCwgMV0nKTsKKyAgICBzaG91bGRCZSgnaW50ZXJuYWxzLnJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGRvY3VtZW50LCAwLCAxKS50b0FycmF5KCknLCAnW3AuZmly
c3RDaGlsZCwgMiwgcC5maXJzdENoaWxkLCAzXScpOworCisgICAgc2hvdWxkQmUoJ2xvY2F0aW9u
QW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMiwgcC5maXJzdENoaWxkLCA3
KSknLCAnWzAsIDVdJyk7CisgICAgc2hvdWxkQmUoJ2xvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdl
KHJhbmdlKHAuZmlyc3RDaGlsZCwgMiwgcCwgMSkpJywgJ1swLCA1XScpOworICAgIHNob3VsZEJl
KCdsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyYW5nZShwLmZpcnN0Q2hpbGQsIDIsIHAsIDIp
KScsICdbMCwgNl0nKTsKKyAgICBzaG91bGRCZSgnbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2Uo
cmFuZ2UocC5maXJzdENoaWxkLCAyLCBwLmNoaWxkTm9kZXNbMl0sIDEpKScsICdbMCwgNl0nKTsK
KyAgICBzaG91bGRCZSgnaW50ZXJuYWxzLnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGRvY3Vt
ZW50LCAxLCA0KS50b0FycmF5KCknLCAnW3AuZmlyc3RDaGlsZCwgMywgcC5maXJzdENoaWxkLCA3
XScpOworICAgIHNob3VsZEJlKCdpbnRlcm5hbHMucmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgo
ZG9jdW1lbnQsIDAsIDYpLnRvQXJyYXkoKScsICdbcC5maXJzdENoaWxkLCAyLCBwLmNoaWxkTm9k
ZXNbMl0sIDFdJyk7CisKKyAgICBzaG91bGRCZSgnbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2Uo
cmFuZ2UocC5jaGlsZE5vZGVzWzJdLCA2LCBwLCAzKSknLCAnWzExLCAxXScpOworICAgIHNob3Vs
ZEJlKCdpbnRlcm5hbHMucmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQsIDExLCAy
KS50b0FycmF5KCknLCAnW3AuY2hpbGROb2Rlc1syXSwgNiwgZGl2LCAwXScpOworCisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworfQor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111076</attachid>
            <date>2011-10-14 14:25:01 -0700</date>
            <delta_ts>2011-10-17 09:31:46 -0700</delta_ts>
            <desc>new patch</desc>
            <filename>bug-68330-20111014142500.patch</filename>
            <type>text/plain</type>
            <size>11706</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3NTAwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMTAtMTQgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXhwb3NlIHJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoIGFuZCBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZSB2aWEgaW50ZXJuYWxz
IG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjgzMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgsIGxvY2F0aW9uRnJvbVJhbmdlLCBhbmQgbGVu
Z3RoRnJvbVJhbmdlIHRvIHdpbmRvdy5pbnRlcm5hbHMuCisKKyAgICAgICAgVGVzdDogZWRpdGlu
Zy90ZXh0LWl0ZXJhdG9yL3JhbmdlLXRvLWZyb20tbG9jYXRpb24tYW5kLWxlbmd0aC5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNjcm9sbEVsZW1lbnRUb1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmxvY2F0aW9uRnJvbVJhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6bGVuZ3RoRnJvbVJhbmdlKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAx
MS0xMC0xNCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBNYWMg
YnVpbGQgZml4IGFmdGVyIHI5NzQ5Ny4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lv
biA5NzQ4MCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkp
CkBAIC04NjgsNiArODY4LDcgQEAgX19aTjdXZWJDb3JlN1RleHRSdW4yMnNldEFsbG93c1JvdW5k
aW5nSAogX19aTjdXZWJDb3JlN2Nvb2tpZXNFUEtOU184RG9jdW1lbnRFUktOU180S1VSTEUKIF9f
Wk43V2ViQ29yZTduc0NvbG9yRVJLTlNfNUNvbG9yRQogX19aTjdXZWJDb3JlN3JlcGxhY2VFUk4z
V1RGNlN0cmluZ0VSS05TXzE3UmVndWxhckV4cHJlc3Npb25FUktTMV8KK19fWk43V2ViQ29yZTd0
b1JhbmdlRU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxMWNyZWF0ZVJhbmdl
RXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDEydXBkYXRlTGF5b3V0RXYKIF9fWk43V2ViQ29yZThE
b2N1bWVudDEzc3ZnRXh0ZW5zaW9uc0V2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCShyZXZpc2lvbiA5NzQ4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTggKzQxLDIxIEBACiAjaW5jbHVkZSAiSW50
UmVjdC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgotI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKLSNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1
cmVFdmVudC5oIgotI2VuZGlmCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJP
YmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCi0jaWYgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCi0jaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKLSNlbmRpZgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q29udGVudEVsZW1lbnQuaCIKICNpbmNs
dWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisKKyNpZiBFTkFC
TEUoR0VTVFVSRV9FVkVOVFMpCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIKKyNl
bmRpZgorCisjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCisjaW5jbHVkZSAiU2Nyb2xsQW5p
bWF0b3IuaCIKKyNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQogI2luY2x1ZGUgIkNv
bG9yQ2hvb3Nlci5oIgpAQCAtNDE0LDYgKzQxNywxNiBAQCB2b2lkIEludGVybmFsczo6c2V0U3Vn
Z2VzdGVkVmFsdWUoRWxlbWVuCiAgICAgaW5wdXRFbGVtZW50LT5zZXRTdWdnZXN0ZWRWYWx1ZSh2
YWx1ZSk7CiB9CiAKK3ZvaWQgSW50ZXJuYWxzOjpzY3JvbGxFbGVtZW50VG9SZWN0KEVsZW1lbnQq
IGVsZW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBsb25nIHcsIGxvbmcgaCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5kb2N1bWVudCgpIHx8ICFlbGVt
ZW50LT5kb2N1bWVudCgpLT52aWV3KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19F
UlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBl
bGVtZW50LT5kb2N1bWVudCgpLT52aWV3KCk7CisgICAgZnJhbWVWaWV3LT5zY3JvbGxFbGVtZW50
VG9SZWN0KGVsZW1lbnQsIEludFJlY3QoeCwgeSwgdywgaCkpOworfQorCiB2b2lkIEludGVybmFs
czo6cGFpbnRDb250cm9sVGludHMoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKSB7CkBAIC00MjUs
MTQgKzQzOCwzOSBAQCB2b2lkIEludGVybmFsczo6cGFpbnRDb250cm9sVGludHMoRG9jdW1lCiAg
ICAgZnJhbWVWaWV3LT5wYWludENvbnRyb2xUaW50cygpOwogfQogCi12b2lkIEludGVybmFsczo6
c2Nyb2xsRWxlbWVudFRvUmVjdChFbGVtZW50KiBlbGVtZW50LCBsb25nIHgsIGxvbmcgeSwgbG9u
ZyB3LCBsb25nIGgsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxSYW5nZT4gSW50ZXJu
YWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50KiBzY29wZSwgaW50IHJhbmdl
TG9jYXRpb24sIGludCByYW5nZUxlbmd0aCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYg
KCFlbGVtZW50IHx8ICFlbGVtZW50LT5kb2N1bWVudCgpIHx8ICFlbGVtZW50LT5kb2N1bWVudCgp
LT52aWV3KCkpIHsKKyAgICBpZiAoIXNjb3BlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NF
U1NfRVJSOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBG
cmFtZVZpZXcqIGZyYW1lVmlldyA9IGVsZW1lbnQtPmRvY3VtZW50KCktPnZpZXcoKTsKLSAgICBm
cmFtZVZpZXctPnNjcm9sbEVsZW1lbnRUb1JlY3QoZWxlbWVudCwgSW50UmVjdCh4LCB5LCB3LCBo
KSk7CisKKyAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChzY29wZSwgcmFuZ2VMb2NhdGlvbiwgcmFuZ2VMZW5ndGgpOworfQorCit1bnNpZ25lZCBJbnRl
cm5hbHM6OmxvY2F0aW9uRnJvbVJhbmdlKEVsZW1lbnQqIHNjb3BlLCBjb25zdCBSYW5nZSogcmFu
Z2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghc2NvcGUgfHwgIXJhbmdlKSB7Cisg
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICBzaXplX3QgbG9jYXRpb24gPSAwOworICAgIHNpemVfdCB1bnVzZWRMZW5ndGggPSAw
OworICAgIFRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2Uoc2NvcGUs
IHJhbmdlLCBsb2NhdGlvbiwgdW51c2VkTGVuZ3RoKTsKKyAgICByZXR1cm4gbG9jYXRpb247CiB9
CiAKK3Vuc2lnbmVkIEludGVybmFsczo6bGVuZ3RoRnJvbVJhbmdlKEVsZW1lbnQqIHNjb3BlLCBj
b25zdCBSYW5nZSogcmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghc2NvcGUg
fHwgIXJhbmdlKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKKyAgICBzaXplX3QgdW51c2VkTG9jYXRpb24gPSAwOworICAgIHNp
emVfdCBsZW5ndGggPSAwOworICAgIFRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhG
cm9tUmFuZ2Uoc2NvcGUsIHJhbmdlLCB1bnVzZWRMb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICByZXR1
cm4gbGVuZ3RoOworfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZp
c2lvbiA5NzQ4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkyLDEwICs5MiwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdWdnZXN0
ZWRWYWx1ZShFbGVtZW50KiBpbnB1dEVsZW1lbnQsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2b2lkIHNjcm9sbEVsZW1lbnRUb1JlY3QoRWxlbWVudCosIGxvbmcgeCwgbG9u
ZyB5LCBsb25nIHcsIGxvbmcgaCwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGludGVybmFsc0lkOwotCiAgICAgdm9pZCBwYWludENvbnRyb2xUaW50cyhEb2N1bWVu
dCosIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQqIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJh
bmdlTGVuZ3RoLCBFeGNlcHRpb25Db2RlJik7CisgICAgdW5zaWduZWQgbG9jYXRpb25Gcm9tUmFu
Z2UoRWxlbWVudCogc2NvcGUsIGNvbnN0IFJhbmdlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHVu
c2lnbmVkIGxlbmd0aEZyb21SYW5nZShFbGVtZW50KiBzY29wZSwgY29uc3QgUmFuZ2UqLCBFeGNl
cHRpb25Db2RlJik7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogaW50ZXJuYWxzSWQ7CisKIHBy
aXZhdGU6CiAgICAgSW50ZXJuYWxzKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwJKHJldmlzaW9uIDk3NDgwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2NywxMCBAQCBtb2R1bGUgd2luZG93
IHsKICAgICAgICAgdm9pZCBwYWludENvbnRyb2xUaW50cyhpbiBEb2N1bWVudCBkb2N1bWVudCkg
cmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgICAgIHZvaWQgc2Nyb2xsRWxlbWVudFRvUmVj
dChpbiBFbGVtZW50IGVsZW1lbnQsIGluIGxvbmcgeCwgaW4gbG9uZyB5LCBpbiBsb25nIHcsIGlu
IGxvbmcgaCkgcmFpc2VzIChET01FeGNlcHRpb24pOworCisgICAgICAgIFJhbmdlIHJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoKGluIEVsZW1lbnQgc2NvcGUsIGluIGxvbmcgcmFuZ2VMb2NhdGlv
biwgaW4gbG9uZyByYW5nZUxlbmd0aCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICB1
bnNpZ25lZCBsb25nIGxvY2F0aW9uRnJvbVJhbmdlKGluIEVsZW1lbnQgc2NvcGUsIGluIFJhbmdl
IHJhbmdlKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbGVu
Z3RoRnJvbVJhbmdlKGluIEVsZW1lbnQgc2NvcGUsIGluIFJhbmdlIHJhbmdlKSByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CiAgICAgfTsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTc1MDApCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAx
MS0xMC0xNCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBFeHBv
c2UgcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggYW5kIGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJh
bmdlIHZpYSBpbnRlcm5hbHMgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02ODMzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIGJhc2ljIHRlc3QgdGhhdCB1c2VzIGludGVybmFscy5yYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aCwgaW50ZXJuYWxzLmxvY2F0aW9uRnJvbVJhbmdlLAorICAg
ICAgICBhbmQgaW50ZXJuYWxzLmxlbmd0aEZyb21SYW5nZS4KKworICAgICAgICAqIGVkaXRpbmcv
dGV4dC1pdGVyYXRvci9yYW5nZS10by1mcm9tLWxvY2F0aW9uLWFuZC1sZW5ndGgtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3RleHQtaXRlcmF0b3IvcmFuZ2UtdG8tZnJv
bS1sb2NhdGlvbi1hbmQtbGVuZ3RoLmh0bWw6IEFkZGVkLgorCiAyMDExLTEwLTE0ICBCcmlhbiBT
YWxvbW9uICA8YnNhbG9tb25AZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW0gc2tpYV0g
QWRkIG1lZGlhL3ZpZGVvLXBsYXlpbmctYW5kLXBhdXNlLmh0bWwgdG8gdGVzdCBleHBlY3RhdGlv
bnMgcGVuZGluZyByZWJhc2VsaW5lCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRl
cmF0b3IvcmFuZ2UtdG8tZnJvbS1sb2NhdGlvbi1hbmQtbGVuZ3RoLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvcmFuZ2UtdG8tZnJv
bS1sb2NhdGlvbi1hbmQtbGVuZ3RoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9yYW5nZS10by1mcm9tLWxvY2F0aW9uLWFuZC1s
ZW5ndGgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACitQQVNTIGxv
Y2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMCwgcC5maXJzdENo
aWxkLCAzKSkgaXMgWzAsIDFdCitQQVNTIGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdl
KHAuZmlyc3RDaGlsZCwgMSwgcC5maXJzdENoaWxkLCA0KSkgaXMgWzAsIDJdCitQQVNTIGxvY2F0
aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMiwgcC5maXJzdENoaWxk
LCAzKSkgaXMgWzAsIDFdCitQQVNTIGludGVybmFscy5yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChjb250YWluZXIsIDAsIDEpLnRvQXJyYXkoKSBpcyBbcC5maXJzdENoaWxkLCAyLCBwLmZpcnN0
Q2hpbGQsIDNdCitQQVNTIGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlKHAuZmlyc3RD
aGlsZCwgMiwgcC5maXJzdENoaWxkLCA3KSkgaXMgWzAsIDVdCitQQVNTIGxvY2F0aW9uQW5kTGVu
Z3RoRnJvbVJhbmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMiwgcCwgMSkpIGlzIFswLCA1XQorUEFT
UyBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyYW5nZShwLmZpcnN0Q2hpbGQsIDIsIHAsIDIp
KSBpcyBbMCwgNl0KK1BBU1MgbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5maXJz
dENoaWxkLCAyLCBwLmNoaWxkTm9kZXNbMl0sIDEpKSBpcyBbMCwgNl0KK1BBU1MgaW50ZXJuYWxz
LnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGNvbnRhaW5lciwgMSwgNCkudG9BcnJheSgpIGlz
IFtwLmZpcnN0Q2hpbGQsIDMsIHAuZmlyc3RDaGlsZCwgN10KK1BBU1MgaW50ZXJuYWxzLnJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGNvbnRhaW5lciwgMCwgNikudG9BcnJheSgpIGlzIFtwLmZp
cnN0Q2hpbGQsIDIsIHAuY2hpbGROb2Rlc1syXSwgMV0KK1BBU1MgbG9jYXRpb25BbmRMZW5ndGhG
cm9tUmFuZ2UocmFuZ2UocC5jaGlsZE5vZGVzWzJdLCA2LCBwLCAzKSkgaXMgWzExLCAxXQorRkFJ
TCBpbnRlcm5hbHMucmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoY29udGFpbmVyLCAxMSwgMiku
dG9BcnJheSgpIHNob3VsZCBiZSBbb2JqZWN0IFRleHRdLDYsW29iamVjdCBIVE1MRGl2RWxlbWVu
dF0sMC4gV2FzIFtvYmplY3QgVGV4dF0sNixbb2JqZWN0IEhUTUxQYXJhZ3JhcGhFbGVtZW50XSwz
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9yYW5nZS10by1mcm9tLWxvY2F0
aW9uLWFuZC1sZW5ndGguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Rl
eHQtaXRlcmF0b3IvcmFuZ2UtdG8tZnJvbS1sb2NhdGlvbi1hbmQtbGVuZ3RoLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvcmFuZ2UtdG8tZnJv
bS1sb2NhdGlvbi1hbmQtbGVuZ3RoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGVzdCIgY29udGVudGVkaXRhYmxlPgorPHA+ICBo
ZWxsbzxicj4KK3dvcmxkLjwvcD4KKzxibG9ja3F1b3RlPjxkaXY+fDxicj48L2Rpdj48L2Jsb2Nr
cXVvdGU+Cis8ZW0+d2Via2l0PC9lbT4KKzwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorCitpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgdGVzdEZhaWxlZCgnVGhp
cyB0ZXN0IHJlcXVpcmVzIGludGVybmFscyBvYmplY3QnKTsKK2Vsc2UgeworICAgIHZhciBjb250
YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOworCisgICAgZnVuY3Rpb24g
cmFuZ2Uoc3RhcnRDb250YWluZXIsIHN0YXJ0T2Zmc2V0LCBlbmRDb250YWluZXIsIGVuZE9mZnNl
dCkgeworICAgICAgICB2YXIgcmFuZ2UgPSAgZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICAg
ICAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnRDb250YWluZXIsIHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAg
cmFuZ2Uuc2V0RW5kKGVuZENvbnRhaW5lciwgZW5kT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIHJh
bmdlOworICAgIH0KKworICAgIGZ1bmN0aW9uIGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJh
bmdlKSB7CisgICAgICAgIHZhciBsb2NhdGlvbiA9IGludGVybmFscy5sb2NhdGlvbkZyb21SYW5n
ZShjb250YWluZXIsIHJhbmdlKTsKKyAgICAgICAgdmFyIGxlbmd0aCA9IGludGVybmFscy5sZW5n
dGhGcm9tUmFuZ2UoY29udGFpbmVyLCByYW5nZSk7CisgICAgICAgIHJldHVybiBbbG9jYXRpb24s
IGxlbmd0aF07CisgICAgfQorCisgICAgUmFuZ2UucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlv
biAoKSB7CisgICAgICAgIHJldHVybiBbdGhpcy5zdGFydENvbnRhaW5lciwgdGhpcy5zdGFydE9m
ZnNldCwgdGhpcy5lbmRDb250YWluZXIsIHRoaXMuZW5kT2Zmc2V0XTsKKyAgICB9CisKKyAgICB2
YXIgcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN0ZXN0IHAnKTsKKyAgICB2YXIgZGl2ID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3Rlc3QgZGl2Jyk7CisgICAgdmFyIHIgPSBpbnRlcm5h
bHMucmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoY29udGFpbmVyLCAwLCAxKTsKKyAgICBzaG91
bGRCZSgnbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5maXJzdENoaWxkLCAwLCBw
LmZpcnN0Q2hpbGQsIDMpKScsICdbMCwgMV0nKTsKKyAgICBzaG91bGRCZSgnbG9jYXRpb25BbmRM
ZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5maXJzdENoaWxkLCAxLCBwLmZpcnN0Q2hpbGQsIDQpKScs
ICdbMCwgMl0nKTsKKyAgICBzaG91bGRCZSgnbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFu
Z2UocC5maXJzdENoaWxkLCAyLCBwLmZpcnN0Q2hpbGQsIDMpKScsICdbMCwgMV0nKTsKKyAgICBz
aG91bGRCZSgnaW50ZXJuYWxzLnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGNvbnRhaW5lciwg
MCwgMSkudG9BcnJheSgpJywgJ1twLmZpcnN0Q2hpbGQsIDIsIHAuZmlyc3RDaGlsZCwgM10nKTsK
KworICAgIHNob3VsZEJlKCdsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyYW5nZShwLmZpcnN0
Q2hpbGQsIDIsIHAuZmlyc3RDaGlsZCwgNykpJywgJ1swLCA1XScpOworICAgIHNob3VsZEJlKCds
b2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyYW5nZShwLmZpcnN0Q2hpbGQsIDIsIHAsIDEpKScs
ICdbMCwgNV0nKTsKKyAgICBzaG91bGRCZSgnbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFu
Z2UocC5maXJzdENoaWxkLCAyLCBwLCAyKSknLCAnWzAsIDZdJyk7CisgICAgc2hvdWxkQmUoJ2xv
Y2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMiwgcC5jaGlsZE5v
ZGVzWzJdLCAxKSknLCAnWzAsIDZdJyk7CisgICAgc2hvdWxkQmUoJ2ludGVybmFscy5yYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aChjb250YWluZXIsIDEsIDQpLnRvQXJyYXkoKScsICdbcC5maXJz
dENoaWxkLCAzLCBwLmZpcnN0Q2hpbGQsIDddJyk7CisgICAgc2hvdWxkQmUoJ2ludGVybmFscy5y
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChjb250YWluZXIsIDAsIDYpLnRvQXJyYXkoKScsICdb
cC5maXJzdENoaWxkLCAyLCBwLmNoaWxkTm9kZXNbMl0sIDFdJyk7CisKKyAgICBzaG91bGRCZSgn
bG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5jaGlsZE5vZGVzWzJdLCA2LCBwLCAz
KSknLCAnWzExLCAxXScpOworICAgIHNob3VsZEJlKCdpbnRlcm5hbHMucmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgoY29udGFpbmVyLCAxMSwgMikudG9BcnJheSgpJywgJ1twLmNoaWxkTm9kZXNb
Ml0sIDYsIGRpdiwgMF0nKTsKKworICAgIGNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUn
OworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="109063"
          type_id="1"
          status="+"
          setter="enrica"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111157</attachid>
            <date>2011-10-15 17:33:51 -0700</date>
            <delta_ts>2011-10-16 23:04:08 -0700</delta_ts>
            <desc>Adds internals binding</desc>
            <filename>bug-68330-20111015173350.patch</filename>
            <type>text/plain</type>
            <size>15530</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3NTY3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMTAtMTQgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXhwb3NlIHJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoIGFuZCBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZSB2aWEgaW50ZXJuYWxz
IG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjgzMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgsIGxvY2F0aW9uRnJvbVJhbmdlLCBhbmQgbGVu
Z3RoRnJvbVJhbmdlIHRvIHdpbmRvdy5pbnRlcm5hbHMuCisKKyAgICAgICAgVGVzdDogZWRpdGlu
Zy90ZXh0LWl0ZXJhdG9yL3JhbmdlLXRvLWZyb20tbG9jYXRpb24tYW5kLWxlbmd0aC5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNjcm9sbEVsZW1lbnRUb1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmxvY2F0aW9uRnJvbVJhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6bGVuZ3RoRnJvbVJhbmdlKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAx
MS0xMC0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTihyOTc1MzMpOiBmYXN0L2Zvcm1zL3NlbGVjdC1zY3JpcHQtb25jaGFuZ2UuaHRtbCBmYWls
ZWQgYWZ0ZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA5NzU2NykKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC04NjgsNiArODY4
LDcgQEAgX19aTjdXZWJDb3JlN1RleHRSdW4yMnNldEFsbG93c1JvdW5kaW5nSAogX19aTjdXZWJD
b3JlN2Nvb2tpZXNFUEtOU184RG9jdW1lbnRFUktOU180S1VSTEUKIF9fWk43V2ViQ29yZTduc0Nv
bG9yRVJLTlNfNUNvbG9yRQogX19aTjdXZWJDb3JlN3JlcGxhY2VFUk4zV1RGNlN0cmluZ0VSS05T
XzE3UmVndWxhckV4cHJlc3Npb25FUktTMV8KK19fWk43V2ViQ29yZTd0b1JhbmdlRU4zSlNDN0pT
VmFsdWVFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxMWNyZWF0ZVJhbmdlRXYKIF9fWk43V2ViQ29y
ZThEb2N1bWVudDEydXBkYXRlTGF5b3V0RXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDEzc3ZnRXh0
ZW5zaW9uc0V2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lv
biA5NzU2NykKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsMTggKzQxLDIxIEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1
ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2lmIEVOQUJM
RShHRVNUVVJFX0VWRU5UUykKLSNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgotI2Vu
ZGlmCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNs
dWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0j
aW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKLSNlbmRpZgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiU2hhZG93Q29udGVudEVsZW1lbnQuaCIKICNpbmNsdWRlICJTaGFkb3dSb290
LmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVO
VFMpCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCisjaWYgRU5B
QkxFKFNNT09USF9TQ1JPTExJTkcpCisjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKKyNlbmRp
ZgogCiAjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQogI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgpA
QCAtNDE0LDYgKzQxNywxNiBAQCB2b2lkIEludGVybmFsczo6c2V0U3VnZ2VzdGVkVmFsdWUoRWxl
bWVuCiAgICAgaW5wdXRFbGVtZW50LT5zZXRTdWdnZXN0ZWRWYWx1ZSh2YWx1ZSk7CiB9CiAKK3Zv
aWQgSW50ZXJuYWxzOjpzY3JvbGxFbGVtZW50VG9SZWN0KEVsZW1lbnQqIGVsZW1lbnQsIGxvbmcg
eCwgbG9uZyB5LCBsb25nIHcsIGxvbmcgaCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYg
KCFlbGVtZW50IHx8ICFlbGVtZW50LT5kb2N1bWVudCgpIHx8ICFlbGVtZW50LT5kb2N1bWVudCgp
LT52aWV3KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBlbGVtZW50LT5kb2N1bWVu
dCgpLT52aWV3KCk7CisgICAgZnJhbWVWaWV3LT5zY3JvbGxFbGVtZW50VG9SZWN0KGVsZW1lbnQs
IEludFJlY3QoeCwgeSwgdywgaCkpOworfQorCiB2b2lkIEludGVybmFsczo6cGFpbnRDb250cm9s
VGludHMoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAo
IWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKSB7CkBAIC00MjUsMTQgKzQzOCwzOSBAQCB2
b2lkIEludGVybmFsczo6cGFpbnRDb250cm9sVGludHMoRG9jdW1lCiAgICAgZnJhbWVWaWV3LT5w
YWludENvbnRyb2xUaW50cygpOwogfQogCi12b2lkIEludGVybmFsczo6c2Nyb2xsRWxlbWVudFRv
UmVjdChFbGVtZW50KiBlbGVtZW50LCBsb25nIHgsIGxvbmcgeSwgbG9uZyB3LCBsb25nIGgsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxSYW5nZT4gSW50ZXJuYWxzOjpyYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aChFbGVtZW50KiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCBy
YW5nZUxlbmd0aCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFlbGVtZW50IHx8ICFl
bGVtZW50LT5kb2N1bWVudCgpIHx8ICFlbGVtZW50LT5kb2N1bWVudCgpLT52aWV3KCkpIHsKKyAg
ICBpZiAoIXNjb3BlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBGcmFtZVZpZXcqIGZyYW1l
VmlldyA9IGVsZW1lbnQtPmRvY3VtZW50KCktPnZpZXcoKTsKLSAgICBmcmFtZVZpZXctPnNjcm9s
bEVsZW1lbnRUb1JlY3QoZWxlbWVudCwgSW50UmVjdCh4LCB5LCB3LCBoKSk7CisKKyAgICByZXR1
cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgcmFuZ2VM
b2NhdGlvbiwgcmFuZ2VMZW5ndGgpOworfQorCit1bnNpZ25lZCBJbnRlcm5hbHM6OmxvY2F0aW9u
RnJvbVJhbmdlKEVsZW1lbnQqIHNjb3BlLCBjb25zdCBSYW5nZSogcmFuZ2UsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGlmICghc2NvcGUgfHwgIXJhbmdlKSB7CisgICAgICAgIGVjID0gSU5W
QUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBzaXplX3Qg
bG9jYXRpb24gPSAwOworICAgIHNpemVfdCB1bnVzZWRMZW5ndGggPSAwOworICAgIFRleHRJdGVy
YXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2Uoc2NvcGUsIHJhbmdlLCBsb2NhdGlv
biwgdW51c2VkTGVuZ3RoKTsKKyAgICByZXR1cm4gbG9jYXRpb247CiB9CiAKK3Vuc2lnbmVkIElu
dGVybmFsczo6bGVuZ3RoRnJvbVJhbmdlKEVsZW1lbnQqIHNjb3BlLCBjb25zdCBSYW5nZSogcmFu
Z2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghc2NvcGUgfHwgIXJhbmdlKSB7Cisg
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICBzaXplX3QgdW51c2VkTG9jYXRpb24gPSAwOworICAgIHNpemVfdCBsZW5ndGggPSAw
OworICAgIFRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2Uoc2NvcGUs
IHJhbmdlLCB1bnVzZWRMb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICByZXR1cm4gbGVuZ3RoOworfQog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiA5NzU2NykKKysr
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTky
LDEwICs5MiwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdWdnZXN0ZWRWYWx1ZShFbGVtZW50
KiBpbnB1dEVsZW1lbnQsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lk
IHNjcm9sbEVsZW1lbnRUb1JlY3QoRWxlbWVudCosIGxvbmcgeCwgbG9uZyB5LCBsb25nIHcsIGxv
bmcgaCwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGludGVybmFs
c0lkOwotCiAgICAgdm9pZCBwYWludENvbnRyb2xUaW50cyhEb2N1bWVudCosIEV4Y2VwdGlvbkNv
ZGUmKTsKIAorICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KEVsZW1lbnQqIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoLCBFeGNl
cHRpb25Db2RlJik7CisgICAgdW5zaWduZWQgbG9jYXRpb25Gcm9tUmFuZ2UoRWxlbWVudCogc2Nv
cGUsIGNvbnN0IFJhbmdlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHVuc2lnbmVkIGxlbmd0aEZy
b21SYW5nZShFbGVtZW50KiBzY29wZSwgY29uc3QgUmFuZ2UqLCBFeGNlcHRpb25Db2RlJik7CisK
KyAgICBzdGF0aWMgY29uc3QgY2hhciogaW50ZXJuYWxzSWQ7CisKIHByaXZhdGU6CiAgICAgSW50
ZXJuYWxzKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlz
aW9uIDk3NTY3KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Nyw2ICs2NywxMCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgdm9p
ZCBwYWludENvbnRyb2xUaW50cyhpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNl
cHRpb24pOwogCiAgICAgICAgIHZvaWQgc2Nyb2xsRWxlbWVudFRvUmVjdChpbiBFbGVtZW50IGVs
ZW1lbnQsIGluIGxvbmcgeCwgaW4gbG9uZyB5LCBpbiBsb25nIHcsIGluIGxvbmcgaCkgcmFpc2Vz
IChET01FeGNlcHRpb24pOworCisgICAgICAgIFJhbmdlIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoKGluIEVsZW1lbnQgc2NvcGUsIGluIGxvbmcgcmFuZ2VMb2NhdGlvbiwgaW4gbG9uZyByYW5n
ZUxlbmd0aCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICB1bnNpZ25lZCBsb25nIGxv
Y2F0aW9uRnJvbVJhbmdlKGluIEVsZW1lbnQgc2NvcGUsIGluIFJhbmdlIHJhbmdlKSByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoRnJvbVJhbmdlKGlu
IEVsZW1lbnQgc2NvcGUsIGluIFJhbmdlIHJhbmdlKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAg
ICAgfTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgkocmV2aXNpb24gOTc1NjcpCisr
KyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTE1Niwx
NCArMTU2LDE2IEBAIEVYUE9SVFMKICAgICAgICAgP2V4dGVybmFsUmVwcmVzZW50YXRpb25AV2Vi
Q29yZUBAWUE/QVZTdHJpbmdAV1RGQEBQQVZFbGVtZW50QDFASUBaCiAgICAgICAgID9nZXRDYWNo
ZWRET01TdHJ1Y3R1cmVAV2ViQ29yZUBAWUFQQVZTdHJ1Y3R1cmVASlNDQEBQQVZKU0RPTUdsb2Jh
bE9iamVjdEAxQFBCVUNsYXNzSW5mb0AzQEBaCiAgICAgICAgID9nZXRFbGVtZW50QnlJZEBUcmVl
U2NvcGVAV2ViQ29yZUBAUUJFUEFWRWxlbWVudEAyQEFCVkF0b21pY1N0cmluZ0BXVEZAQEBaCisg
ICAgICAgID9nZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZUBUZXh0SXRlcmF0b3JAV2ViQ29y
ZUBAU0FfTlBBVkVsZW1lbnRAMkBQQlZSYW5nZUAyQEFBSTJAWgogICAgICAgICA/aXNQcmVsb2Fk
ZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJpbmdAV1RGQEBAWgog
ICAgICAgICA/anNTdHJpbmdTbG93Q2FzZUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZF
eGVjU3RhdGVAM0BBQVY/JEhhc2hNYXBAUEFWU3RyaW5nSW1wbEBXVEZAQFY/JFdlYWtAVkpTU3Ry
aW5nQEpTQ0BAQEpTQ0BAVVN0cmluZ0hhc2hAMkBVPyRIYXNoVHJhaXRzQFBBVlN0cmluZ0ltcGxA
V1RGQEBAMkBVPyRIYXNoVHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAQDJAQFdU
RkBAUEFWU3RyaW5nSW1wbEA2QEBaCiAgICAgICAgID9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/bWFya2Vy
c0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JAUEFW
RG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBBVk5vZGVAMkBAWgogICAgICAgICA/
cGFnZUBEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZQYWdlQDJAWFoKICAgICAgICAgP3BhaW50Q29u
dHJvbFRpbnRzQEZyYW1lVmlld0BXZWJDb3JlQEBBQUVYWFoKLSAgICAgICAgP3Njcm9sbEVsZW1l
bnRUb1JlY3RARnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQUJWSW50UmVjdEAy
QEBaCisgICAgICAgID9yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2Vi
Q29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRA
MkBISF9OQFoKICAgICAgICAgP3JlbW92ZVNoYWRvd1Jvb3RARWxlbWVudEBXZWJDb3JlQEBRQUVY
WFoKKyAgICAgICAgP3Njcm9sbEVsZW1lbnRUb1JlY3RARnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhQ
QVZFbGVtZW50QDJAQUJWSW50UmVjdEAyQEBaCiAgICAgICAgID9zZXRET01FeGNlcHRpb25AV2Vi
Q29yZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BASEBaCiAgICAgICAgID9zZXRSZXNvdXJjZXNEYXRh
U2l6ZUxpbWl0c0Zyb21JbnRlcm5hbHNASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVY
SEhAWgogICAgICAgICA/c2V0U2Nyb2xsYmFyc1N1cHByZXNzZWRAU2Nyb2xsVmlld0BXZWJDb3Jl
QEBRQUVYX04wQFoKQEAgLTE3Nyw2ICsxNzksNyBAQCBFWFBPUlRTCiAgICAgICAgID90b0pTQFdl
YkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2Jq
ZWN0QDFAUEFWQ2xpZW50UmVjdEAxQEBaCiAgICAgICAgID90b0pTQFdlYkNvcmVAQFlBP0FWSlNW
YWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWTm9kZUAx
QEBaCiAgICAgICAgID90b0pTQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0
ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWUmFuZ2VAMUBAWgorICAgICAgICA/dG9SYW5n
ZUBXZWJDb3JlQEBZQVBBVlJhbmdlQDFAVkpTVmFsdWVASlNDQEBAWgogICAgICAgICA/dXBkYXRl
TGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQERvY3VtZW50QFdlYkNvcmVAQFFBRVhYWgog
ICAgICAgICA/dmlld0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZGcmFtZVZpZXdAMkBYWgogICAg
ICAgICA/dmlydHVhbEZ1bmN0aW9uVG9QcmV2ZW50V2Vha1Z0YWJsZUBKU0RPTVdyYXBwZXJAV2Vi
Q29yZUBATUFFWFhaCkluZGV4OiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIJKHJldmlzaW9uIDk3NTY3
KQorKysgU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsOCBAQCBfWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfN0ludFJlY3RFCiBf
Wk43V2ViQ29yZTExRXZlbnRUYXJnZXQxN3RvR2VuZXJhdGVkU3RyZWFtRXY7CiBfWk43V2ViQ29y
ZTExRXZlbnRUYXJnZXQ4dG9TdHJlYW1FdjsKIF9aTjdXZWJDb3JlMTJKU0RPTVdyYXBwZXIzNHZp
cnR1YWxGdW5jdGlvblRvUHJldmVudFdlYWtWdGFibGVFdjsKLV9aTks3V2ViQ29yZTEyUmVuZGVy
T2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEViOworX1pON1dlYkNvcmUxMlRleHRJdGVy
YXRvcjI2cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhFUE5TXzdFbGVtZW50RWlpYjsKK19aTjdX
ZWJDb3JlMTJUZXh0SXRlcmF0b3IyOWdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlRVBOU183
RWxlbWVudEVQS05TXzVSYW5nZUVSbVM2XzsKIF9aTjdXZWJDb3JlMTNjcmVhdGVXcmFwcGVyRVBO
M0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzROb2RlRTsKIF9aTjdX
ZWJDb3JlMTVzZXRET01FeGNlcHRpb25FUE4zSlNDOUV4ZWNTdGF0ZUVpOwogX1pON1dlYkNvcmUx
NkhUTUxJbnB1dEVsZW1lbnQxN3NldFN1Z2dlc3RlZFZhbHVlRVJLTjNXVEY2U3RyaW5nRTsKQEAg
LTYwLDkgKzYxLDExIEBAIF9aTjdXZWJDb3JlNkpTTm9kZTZzX2luZm9FOwogX1pON1dlYkNvcmU2
dG9Ob2RlRU4zSlNDN0pTVmFsdWVFOwogX1pON1dlYkNvcmU3RWxlbWVudDE2ZW5zdXJlU2hhZG93
Um9vdEV2OwogX1pON1dlYkNvcmU3RWxlbWVudDE2cmVtb3ZlU2hhZG93Um9vdEV2OworX1pON1dl
YkNvcmU3dG9SYW5nZUVOM0pTQzdKU1ZhbHVlRTsKIF9aTjdXZWJDb3JlOUpTRWxlbWVudDEwcHV0
VmlydHVhbEVQTjNKU0M5RXhlY1N0YXRlRVJLTlMxXzEwSWRlbnRpZmllckVOUzFfN0pTVmFsdWVF
Uk5TMV8xNVB1dFByb3BlcnR5U2xvdEU7CiBfWk43V2ViQ29yZTlKU0VsZW1lbnQ2c19pbmZvRTsK
IF9aTjdXZWJDb3JlOXRvRWxlbWVudEVOM0pTQzdKU1ZhbHVlRTsKK19aTks3V2ViQ29yZTEyUmVu
ZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEViOwogX1pOSzdXZWJDb3JlMTZIVE1M
SW5wdXRFbGVtZW50MTRzdWdnZXN0ZWRWYWx1ZUV2OwogX1pOSzdXZWJDb3JlMjBDYWNoZWRSZXNv
dXJjZUxvYWRlcjExaXNQcmVsb2FkZWRFUktOM1dURjZTdHJpbmdFOwogX1pOSzdXZWJDb3JlMjZI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDIxbGFzdENoYW5nZVdhc1VzZXJFZGl0RXY7CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA5NzU2NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTEwLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgorCisgICAgICAgIEV4cG9zZSByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCBh
bmQgbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UgdmlhIGludGVybmFscyBvYmplY3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MzMwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgYmFzaWMgdGVz
dCB0aGF0IHVzZXMgaW50ZXJuYWxzLnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoLCBpbnRlcm5h
bHMubG9jYXRpb25Gcm9tUmFuZ2UsCisgICAgICAgIGFuZCBpbnRlcm5hbHMubGVuZ3RoRnJvbVJh
bmdlLgorCisgICAgICAgICogZWRpdGluZy90ZXh0LWl0ZXJhdG9yL3JhbmdlLXRvLWZyb20tbG9j
YXRpb24tYW5kLWxlbmd0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcv
dGV4dC1pdGVyYXRvci9yYW5nZS10by1mcm9tLWxvY2F0aW9uLWFuZC1sZW5ndGguaHRtbDogQWRk
ZWQuCisKIDIwMTEtMTAtMTUgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBKUyBUZXN0IEhhcm5lc3M6IE1ha2UgY29uc29sZSBhbmQgZGVzY3JpcHRpb24gZWxl
bWVudHMgb3B0aW9uYWwgaW4gdGhlIEhUTUwKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdGV4
dC1pdGVyYXRvci9yYW5nZS10by1mcm9tLWxvY2F0aW9uLWFuZC1sZW5ndGgtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9yYW5nZS10
by1mcm9tLWxvY2F0aW9uLWFuZC1sZW5ndGgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9yL3JhbmdlLXRvLWZyb20tbG9jYXRpb24t
YW5kLWxlbmd0aC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKK1BB
U1MgbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5maXJzdENoaWxkLCAwLCBwLmZp
cnN0Q2hpbGQsIDMpKSBpcyBbMCwgMV0KK1BBU1MgbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2Uo
cmFuZ2UocC5maXJzdENoaWxkLCAxLCBwLmZpcnN0Q2hpbGQsIDQpKSBpcyBbMCwgMl0KK1BBU1Mg
bG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5maXJzdENoaWxkLCAyLCBwLmZpcnN0
Q2hpbGQsIDMpKSBpcyBbMCwgMV0KK1BBU1MgaW50ZXJuYWxzLnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKGNvbnRhaW5lciwgMCwgMSkudG9BcnJheSgpIGlzIFtwLmZpcnN0Q2hpbGQsIDIsIHAu
Zmlyc3RDaGlsZCwgM10KK1BBU1MgbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5m
aXJzdENoaWxkLCAyLCBwLmZpcnN0Q2hpbGQsIDcpKSBpcyBbMCwgNV0KK1BBU1MgbG9jYXRpb25B
bmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5maXJzdENoaWxkLCAyLCBwLCAxKSkgaXMgWzAsIDVd
CitQQVNTIGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMiwg
cCwgMikpIGlzIFswLCA2XQorUEFTUyBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyYW5nZShw
LmZpcnN0Q2hpbGQsIDIsIHAuY2hpbGROb2Rlc1syXSwgMSkpIGlzIFswLCA2XQorUEFTUyBpbnRl
cm5hbHMucmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoY29udGFpbmVyLCAxLCA0KS50b0FycmF5
KCkgaXMgW3AuZmlyc3RDaGlsZCwgMywgcC5maXJzdENoaWxkLCA3XQorUEFTUyBpbnRlcm5hbHMu
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoY29udGFpbmVyLCAwLCA2KS50b0FycmF5KCkgaXMg
W3AuZmlyc3RDaGlsZCwgMiwgcC5jaGlsZE5vZGVzWzJdLCAxXQorUEFTUyBsb2NhdGlvbkFuZExl
bmd0aEZyb21SYW5nZShyYW5nZShwLmNoaWxkTm9kZXNbMl0sIDYsIHAsIDMpKSBpcyBbMTEsIDFd
CitGQUlMIGludGVybmFscy5yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChjb250YWluZXIsIDEx
LCAyKS50b0FycmF5KCkgc2hvdWxkIGJlIFtvYmplY3QgVGV4dF0sNixbb2JqZWN0IEhUTUxEaXZF
bGVtZW50XSwwLiBXYXMgW29iamVjdCBUZXh0XSw2LFtvYmplY3QgSFRNTFBhcmFncmFwaEVsZW1l
bnRdLDMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9yL3JhbmdlLXRvLWZyb20t
bG9jYXRpb24tYW5kLWxlbmd0aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRp
bmcvdGV4dC1pdGVyYXRvci9yYW5nZS10by1mcm9tLWxvY2F0aW9uLWFuZC1sZW5ndGguaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9yYW5nZS10
by1mcm9tLWxvY2F0aW9uLWFuZC1sZW5ndGguaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU+Cis8
cD4gIGhlbGxvPGJyPgord29ybGQuPC9wPgorPGJsb2NrcXVvdGU+PGRpdj58PGJyPjwvZGl2Pjwv
YmxvY2txdW90ZT4KKzxlbT53ZWJraXQ8L2VtPgorPC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisKK2lmICghd2luZG93LmludGVybmFscykKKyAgICB0ZXN0RmFpbGVk
KCdUaGlzIHRlc3QgcmVxdWlyZXMgaW50ZXJuYWxzIG9iamVjdCcpOworZWxzZSB7CisgICAgdmFy
IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7CisKKyAgICBmdW5j
dGlvbiByYW5nZShzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQsIGVuZENvbnRhaW5lciwgZW5k
T2Zmc2V0KSB7CisgICAgICAgIHZhciByYW5nZSA9ICBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgICAgICByYW5nZS5zZXRTdGFydChzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQpOworICAg
ICAgICByYW5nZS5zZXRFbmQoZW5kQ29udGFpbmVyLCBlbmRPZmZzZXQpOworICAgICAgICByZXR1
cm4gcmFuZ2U7CisgICAgfQorCisgICAgZnVuY3Rpb24gbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFu
Z2UocmFuZ2UpIHsKKyAgICAgICAgdmFyIGxvY2F0aW9uID0gaW50ZXJuYWxzLmxvY2F0aW9uRnJv
bVJhbmdlKGNvbnRhaW5lciwgcmFuZ2UpOworICAgICAgICB2YXIgbGVuZ3RoID0gaW50ZXJuYWxz
Lmxlbmd0aEZyb21SYW5nZShjb250YWluZXIsIHJhbmdlKTsKKyAgICAgICAgcmV0dXJuIFtsb2Nh
dGlvbiwgbGVuZ3RoXTsKKyAgICB9CisKKyAgICBSYW5nZS5wcm90b3R5cGUudG9BcnJheSA9IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIFt0aGlzLnN0YXJ0Q29udGFpbmVyLCB0aGlzLnN0
YXJ0T2Zmc2V0LCB0aGlzLmVuZENvbnRhaW5lciwgdGhpcy5lbmRPZmZzZXRdOworICAgIH0KKwor
ICAgIHZhciBwID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3Rlc3QgcCcpOworICAgIHZhciBk
aXYgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdGVzdCBkaXYnKTsKKyAgICB2YXIgciA9IGlu
dGVybmFscy5yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChjb250YWluZXIsIDAsIDEpOworICAg
IHNob3VsZEJlKCdsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyYW5nZShwLmZpcnN0Q2hpbGQs
IDAsIHAuZmlyc3RDaGlsZCwgMykpJywgJ1swLCAxXScpOworICAgIHNob3VsZEJlKCdsb2NhdGlv
bkFuZExlbmd0aEZyb21SYW5nZShyYW5nZShwLmZpcnN0Q2hpbGQsIDEsIHAuZmlyc3RDaGlsZCwg
NCkpJywgJ1swLCAyXScpOworICAgIHNob3VsZEJlKCdsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5n
ZShyYW5nZShwLmZpcnN0Q2hpbGQsIDIsIHAuZmlyc3RDaGlsZCwgMykpJywgJ1swLCAxXScpOwor
ICAgIHNob3VsZEJlKCdpbnRlcm5hbHMucmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoY29udGFp
bmVyLCAwLCAxKS50b0FycmF5KCknLCAnW3AuZmlyc3RDaGlsZCwgMiwgcC5maXJzdENoaWxkLCAz
XScpOworCisgICAgc2hvdWxkQmUoJ2xvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlKHAu
Zmlyc3RDaGlsZCwgMiwgcC5maXJzdENoaWxkLCA3KSknLCAnWzAsIDVdJyk7CisgICAgc2hvdWxk
QmUoJ2xvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlKHAuZmlyc3RDaGlsZCwgMiwgcCwg
MSkpJywgJ1swLCA1XScpOworICAgIHNob3VsZEJlKCdsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5n
ZShyYW5nZShwLmZpcnN0Q2hpbGQsIDIsIHAsIDIpKScsICdbMCwgNl0nKTsKKyAgICBzaG91bGRC
ZSgnbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UocC5maXJzdENoaWxkLCAyLCBwLmNo
aWxkTm9kZXNbMl0sIDEpKScsICdbMCwgNl0nKTsKKyAgICBzaG91bGRCZSgnaW50ZXJuYWxzLnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGNvbnRhaW5lciwgMSwgNCkudG9BcnJheSgpJywgJ1tw
LmZpcnN0Q2hpbGQsIDMsIHAuZmlyc3RDaGlsZCwgN10nKTsKKyAgICBzaG91bGRCZSgnaW50ZXJu
YWxzLnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGNvbnRhaW5lciwgMCwgNikudG9BcnJheSgp
JywgJ1twLmZpcnN0Q2hpbGQsIDIsIHAuY2hpbGROb2Rlc1syXSwgMV0nKTsKKworICAgIHNob3Vs
ZEJlKCdsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyYW5nZShwLmNoaWxkTm9kZXNbMl0sIDYs
IHAsIDMpKScsICdbMTEsIDFdJyk7CisgICAgc2hvdWxkQmUoJ2ludGVybmFscy5yYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aChjb250YWluZXIsIDExLCAyKS50b0FycmF5KCknLCAnW3AuY2hpbGRO
b2Rlc1syXSwgNiwgZGl2LCAwXScpOworCisgICAgY29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAn
bm9uZSc7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>