<?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>142805</bug_id>
          
          <creation_ts>2015-03-17 17:43:12 -0700</creation_ts>
          <short_desc>Switching between two SVG images with no intrinsic sizes causes them to get the default SVG size instead of the container size</short_desc>
          <delta_ts>2015-03-19 01:14:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</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>142859</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ossy</cc>
    
    <cc>rego</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1078052</commentid>
    <comment_count>0</comment_count>
      <attachid>248890</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-17 17:43:12 -0700</bug_when>
    <thetext>Created attachment 248890
test case

Open the attached test case. 

Expected: No red color is displayed and the size of the green rectangle should be 300x100 pixels.

Switching from SVG with intrinsic size to an SVG with no intrinsic size or vice versa seems to work as expected.  The problem happens when switching between two images with no-intrisinc sizes back and forth. In this case we use the old layout of the SVG image but we set the SVG size to the default SVG intrinsic size which is 300x150 pixels. In the attached test case, the container size is 300x100 pixels. The old layout can display the SVG in 300x100 pixels. But because we change the image size to be 300x150 pixels, the SVG gets scaled down by (1,100/150).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078063</commentid>
    <comment_count>1</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-17 18:22:03 -0700</bug_when>
    <thetext>Another example of this problem can be seen in http://snapsvg.io/demos/. When switching between the items in the side bar on the left. Currently we do not display the SVG with the smaller size and we leave dirt behind from the SVG with the bigger size. This bug addresses the layout issue which is responsible for not showing the smaller SVG image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078264</commentid>
    <comment_count>2</comment_count>
      <attachid>248947</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-18 11:51:07 -0700</bug_when>
    <thetext>Created attachment 248947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078281</commentid>
    <comment_count>3</comment_count>
      <attachid>248954</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-18 13:06:50 -0700</bug_when>
    <thetext>Created attachment 248954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078346</commentid>
    <comment_count>4</comment_count>
      <attachid>248954</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-03-18 16:25:29 -0700</bug_when>
    <thetext>Comment on attachment 248954
Patch

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

&gt; Source/WebCore/rendering/RenderImage.cpp:350
&gt; +    LayoutRect repaintRect;
&gt; +    if (rect) {
&gt; +        // The image changed rect is in source image coordinates (pre-zooming),
&gt; +        // so map from the bounds of the image to the contentsBox.
&gt; +        repaintRect = enclosingIntRect(mapRect(*rect, FloatRect(FloatPoint(), imageResource().imageSize(1.0f)), contentBoxRect()));
&gt; +        // Guard against too-large changed rects.
&gt; +        repaintRect.intersect(contentBoxRect());
&gt; +    } else
&gt; +        repaintRect = contentBoxRect();
&gt;          
&gt; -        repaintRectangle(repaintRect);
&gt; +    repaintRectangle(repaintRect);

I would have written this more like this:

    LayoutRect repaintRect = contentBoxRect();
    if (rect) {
        // The image changed rect is in source image coordinates (pre-zooming),
        // so map from the bounds of the image to the contentsBox.
        repaintRect.intersect(enclosingIntRect(mapRect(*rect, FloatRect(FloatPoint(), imageResource().imageSize(1)), repaintRect)));
    }

But also, I don’t understand why there is a call to enclosingIntRect here.

&gt; Source/WebCore/rendering/RenderImage.h:51
&gt; +    ImageSizeChangeType setImageSizeForAltText(CachedImage* newImage = 0);

nullptr

&gt; Source/WebCore/rendering/RenderImage.h:115
&gt; +    void repaintOrMarkForLayout(ImageSizeChangeType, const IntRect* = 0);

nullptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078376</commentid>
    <comment_count>5</comment_count>
      <attachid>248954</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-18 17:07:06 -0700</bug_when>
    <thetext>Comment on attachment 248954
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderImage.cpp:350
&gt;&gt; +    repaintRectangle(repaintRect);
&gt; 
&gt; I would have written this more like this:
&gt; 
&gt;     LayoutRect repaintRect = contentBoxRect();
&gt;     if (rect) {
&gt;         // The image changed rect is in source image coordinates (pre-zooming),
&gt;         // so map from the bounds of the image to the contentsBox.
&gt;         repaintRect.intersect(enclosingIntRect(mapRect(*rect, FloatRect(FloatPoint(), imageResource().imageSize(1)), repaintRect)));
&gt;     }
&gt; 
&gt; But also, I don’t understand why there is a call to enclosingIntRect here.

Done.

I think enclosingIntRect is used because LayoutRect::interest() takes a LayoutRect&amp; as a parameter.  And mapRect takes FloatRect&amp; and returns also FloatRect.  There is no implicit copy constructor in LayoutRect to convert from FloatRect to LayoutRect.  But there is copy constructor to convert from IntRect to LayoutRect.  When I remove the call to enclosingIntRect(), the compiler gives the error: &quot;No viable conversion from FloatRect to const LayoutRect&quot;

&gt;&gt; Source/WebCore/rendering/RenderImage.h:51
&gt;&gt; +    ImageSizeChangeType setImageSizeForAltText(CachedImage* newImage = 0);
&gt; 
&gt; nullptr

Done.

&gt;&gt; Source/WebCore/rendering/RenderImage.h:115
&gt;&gt; +    void repaintOrMarkForLayout(ImageSizeChangeType, const IntRect* = 0);
&gt; 
&gt; nullptr

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078377</commentid>
    <comment_count>6</comment_count>
      <attachid>248989</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-18 17:09:33 -0700</bug_when>
    <thetext>Created attachment 248989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078381</commentid>
    <comment_count>7</comment_count>
      <attachid>248992</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-18 17:18:51 -0700</bug_when>
    <thetext>Created attachment 248992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078397</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-03-18 18:00:53 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 248954 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=248954&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/RenderImage.cpp:350
&gt; &gt;&gt; +    repaintRectangle(repaintRect);
&gt; &gt; 
&gt; &gt; I would have written this more like this:
&gt; &gt; 
&gt; &gt;     LayoutRect repaintRect = contentBoxRect();
&gt; &gt;     if (rect) {
&gt; &gt;         // The image changed rect is in source image coordinates (pre-zooming),
&gt; &gt;         // so map from the bounds of the image to the contentsBox.
&gt; &gt;         repaintRect.intersect(enclosingIntRect(mapRect(*rect, FloatRect(FloatPoint(), imageResource().imageSize(1)), repaintRect)));
&gt; &gt;     }
&gt; &gt; 
&gt; &gt; But also, I don’t understand why there is a call to enclosingIntRect here.
&gt; 
&gt; Done.
&gt; 
&gt; I think enclosingIntRect is used because LayoutRect::interest() takes a
&gt; LayoutRect&amp; as a parameter.  And mapRect takes FloatRect&amp; and returns also
&gt; FloatRect.  There is no implicit copy constructor in LayoutRect to convert
&gt; from FloatRect to LayoutRect.

That&apos;s because this is lossy. LayoutRect has a resolution of 1/64th pixels. You can explicitly create a LayoutRect from a FloatRect though.

&gt; But there is copy constructor to convert from
&gt; IntRect to LayoutRect.

Which is non-lossy.

&gt; When I remove the call to enclosingIntRect(), the
&gt; compiler gives the error: &quot;No viable conversion from FloatRect to const LayoutRect&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078405</commentid>
    <comment_count>9</comment_count>
      <attachid>248992</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-18 18:15:36 -0700</bug_when>
    <thetext>Comment on attachment 248992
Patch

Rejecting attachment 248992 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 248992, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.

Full output: http://webkit-queues.appspot.com/results/4796037164171264</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078411</commentid>
    <comment_count>10</comment_count>
      <attachid>249005</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-18 18:22:29 -0700</bug_when>
    <thetext>Created attachment 249005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078422</commentid>
    <comment_count>11</comment_count>
      <attachid>249005</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-18 19:15:38 -0700</bug_when>
    <thetext>Comment on attachment 249005
Patch

Clearing flags on attachment: 249005

Committed r181720: &lt;http://trac.webkit.org/changeset/181720&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078423</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-18 19:15:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078466</commentid>
    <comment_count>13</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2015-03-18 23:10:39 -0700</bug_when>
    <thetext>This broke GTK+ build. It&apos;s been fixed in:
http://trac.webkit.org/changeset/181729</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078469</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-18 23:14:03 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; This broke GTK+ build. It&apos;s been fixed in:
&gt; http://trac.webkit.org/changeset/181729

bug142859 fixed it too 3 hours before, but there were nobody to review it. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078487</commentid>
    <comment_count>15</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2015-03-19 01:05:08 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; This broke GTK+ build. It&apos;s been fixed in:
&gt; &gt; http://trac.webkit.org/changeset/181729
&gt; 
&gt; bug142859 fixed it too 3 hours before, but there were nobody to review it. :(

Sorry, didn&apos;t realize there was a fix already.
It was so simple that I just go ahead as the GTK+ EWS was getting into troubles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078488</commentid>
    <comment_count>16</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-19 01:14:28 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (In reply to comment #13)
&gt; &gt; &gt; This broke GTK+ build. It&apos;s been fixed in:
&gt; &gt; &gt; http://trac.webkit.org/changeset/181729
&gt; &gt; 
&gt; &gt; bug142859 fixed it too 3 hours before, but there were nobody to review it. :(
&gt; 
&gt; Sorry, didn&apos;t realize there was a fix already.
&gt; It was so simple that I just go ahead as the GTK+ EWS was getting into
&gt; troubles.

Not problem, thanks for the fix. :) I commented &quot;:(&quot; because the fix
was already done, but nobody reviewed and landed in for a long period.

To avoid parallel fixing and long build break period I suggested commenting
the original bug and pinging reviewers on #webkit until it is reviewed and
landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>248890</attachid>
            <date>2015-03-17 17:43:12 -0700</date>
            <delta_ts>2015-03-17 17:43:12 -0700</delta_ts>
            <desc>test case</desc>
            <filename>test084.html</filename>
            <type>text/html</type>
            <size>1980</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICA8c3R5bGU+CiAgICBkaXYgewogICAgICB3
aWR0aDogMzAwcHg7CiAgICAgIGhlaWdodDogMTAwcHg7CiAgICAgIGJhY2tncm91bmQtY29sb3I6
IHJlZDsKICAgIH0KICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5IG9ubG9hZD0iY2hhbmdlSW1hZ2Uo
J3JlZCcpIj4KICA8ZGl2PgogICAgPGltZyBoZWlnaHQ9IjEwMCIgaWQ9ImltYWdlXzEiIG9ubG9h
ZD0ib25sb2FkSW1hZ2UoKSI+CiAgPC9kaXY+CiAgPHNjcmlwdD4KICAgIGZ1bmN0aW9uIG9ubG9h
ZEltYWdlKCkgewogICAgICB2YXIgY29sb3JzID0gWyJyZWQiLCAiZ3JlZW4iLCAib3JhbmdlIiwg
InllbGxvdyIsICJncmVlbiJdOwoKICAgICAgaWYgKHR5cGVvZiBvbmxvYWRJbWFnZS5jb3VudGVy
ID09ICd1bmRlZmluZWQnKQogICAgICAgIG9ubG9hZEltYWdlLmNvdW50ZXIgPSAwOwoKICAgICAg
aWYgKCsrb25sb2FkSW1hZ2UuY291bnRlciA9PSBjb2xvcnMubGVuZ3RoKQogICAgICAgIHJldHVy
bjsKCiAgICAgIGNoYW5nZUltYWdlKGNvbG9yc1tvbmxvYWRJbWFnZS5jb3VudGVyXSk7CiAgICB9
ICAgIAogICAgZnVuY3Rpb24gY2hhbmdlSW1hZ2UobmFtZSkgewogICAgICB2YXIgaW1hZ2UgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2VfMScpOwogICAgICBzd2l0Y2ggKG5hbWUpIHsK
ICAgICAgY2FzZSAncmVkJzoKICAgICAgICBpbWFnZS5zcmMgPSAiZGF0YTppbWFnZS9zdmcreG1s
LCBcCiAgICAgICAgICA8c3ZnIHZlcnNpb249JzEuMScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjAwIDIwMCcgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAn
PiBcCiAgICAgICAgICAgIDxyZWN0IHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J3Jl
ZCcvPiBcCiAgICAgICAgICAgIDxyZWN0IHg9JzI1JScgeT0nMjUlJyB3aWR0aD0nNTAlJyBoZWln
aHQ9JzUwJScgZmlsbD0nbGltZScvPiBcCiAgICAgICAgICA8L3N2Zz4iOwogICAgICAgIGJyZWFr
OwoKICAgICAgY2FzZSAnZ3JlZW4nOgogICAgICAgIGltYWdlLnNyYyA9ICJkYXRhOmltYWdlL3N2
Zyt4bWwsIFwKICAgICAgICAgIDxzdmcgdmVyc2lvbj0nMS4xJyB4bWxucz0naHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmcnPiBcCiAgICAgICAgICAgIDxyZWN0IHdpZHRoPScxMDAlJyBoZWlnaHQ9
JzEwMCUnIGZpbGw9J2dyZWVuJy8+IFwKICAgICAgICAgICAgPHJlY3QgeD0nMjUlJyB5PScyNSUn
IHdpZHRoPSc1MCUnIGhlaWdodD0nNTAlJyBmaWxsPSdsaW1lJy8+IFwKICAgICAgICAgIDwvc3Zn
PiI7CiAgICAgICAgYnJlYWs7CgogICAgICBjYXNlICdvcmFuZ2UnOgogICAgICAgIGltYWdlLnNy
YyA9ICJkYXRhOmltYWdlL3N2Zyt4bWwsIFwKICAgICAgICAgIDxzdmcgdmVyc2lvbj0nMS4xJyB4
bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPiBcCiAgICAgICAgICAgIDxyZWN0IHdp
ZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J29yYW5nZScvPiBcCiAgICAgICAgICAgIDxy
ZWN0IHg9JzI1JScgeT0nMjUlJyB3aWR0aD0nNTAlJyBoZWlnaHQ9JzUwJScgZmlsbD0nbGltZScv
PiBcCiAgICAgICAgICA8L3N2Zz4iOwogICAgICAgIGJyZWFrOwoKICAgICAgY2FzZSAneWVsbG93
JzoKICAgICAgICBpbWFnZS5zcmMgPSAiZGF0YTppbWFnZS9zdmcreG1sLCBcCiAgICAgICAgICA8
c3ZnIHZlcnNpb249JzEuMScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz4gXAog
ICAgICAgICAgICA8cmVjdCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmaWxsPSd5ZWxsb3cn
Lz4gXAogICAgICAgICAgICA8cmVjdCB4PScyNSUnIHk9JzI1JScgd2lkdGg9JzUwJScgaGVpZ2h0
PSc1MCUnIGZpbGw9J2xpbWUnLz4gXAogICAgICAgICAgPC9zdmc+IjsKICAgICAgICBicmVhazsK
ICAgICAgfQogICAgfQogIDwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248947</attachid>
            <date>2015-03-18 11:51:07 -0700</date>
            <delta_ts>2015-03-18 13:06:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142805-20150318115036.patch</filename>
            <type>text/plain</type>
            <size>21188</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBACisyMDE1LTAzLTE4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoaW5n
IGJldHdlZW4gdHdvIFNWRyBpbWFnZXMgd2l0aCBubyBpbnRyaW5zaWMgc2l6ZXMgY2F1c2VzIHRo
ZW0gdG8gZ2V0IHRoZSBkZWZhdWx0IFNWRyBzaXplIGluc3RlYWQgb2YgdGhlIGNvbnRhaW5lciBz
aXplLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQy
ODA1LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgVGhlIGJ1ZyBoYXBwZW5zIGR1ZSB0byB3cm9uZyBsb2dpYyBpbiBSZW5kZXJJbWFnZTo6
aW1hZ2VEaW1lbnNpb25zQ2hhbmdlZCgpLgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGRlY2lkZXMg
dG8gc2V0TmVlZHNMYXlvdXQoKSBpZiB0aGUgaW50cmluc2ljIHNpemUgb2YgdGhlIGltYWdlCisg
ICAgICAgIGNoYW5nZXMuIElmIHRoZSBzaXplIGRvZXMgbm90IGNoYW5nZSwgaXQgb25seSByZXBh
aW50cyB0aGUgaW1hZ2UgcmVjdGFuZ2xlLgorICAgICAgICBXaGVuIHN3aXRjaGluZyB0aGUgc3Jj
IG9mIHRoZSBhbiBpbWFnZSBiZXR3ZWVuIHR3byBTVkcgaW1hZ2VzIGFuZCBib3RoIG9mCisgICAg
ICAgIHRoZW0gaGF2ZSBubyBpbnRyaW5zaWMgc2l6ZSwgd2UgZG8gbm90IHVwZGF0ZUlubmVyQ29u
dGVudFJlY3QoKSBhbmQgdGhpcworICAgICAgICBtZWFucyBhbiBTVkdJbWFnZUZvckNvbnRhaW5l
ciBpcyBub3QgZ29pbmcgdG8gYmUgY3JlYXRlZCBmb3IgdGhpcyBpbWFnZS4KKyAgICAgICAgU28g
dGhlIFNWR19kZWZhdWx0X2ludHJpbnNpY19zaXplICgzMDB4MTUwKSBpcyB1c2VkIGluc3RlYWQu
IFdoZW4gdGhlIGltYWdlCisgICAgICAgIGlzIGRyYXduLCBpdCBpcyBkcmF3biBkaXJlY3RseSBm
cm9tIHRoZSBTVkdJbWFnZS4gQW5kIHRoaXMgbWVhbnMgdGhlIGRyYXdpbmcKKyAgICAgICAgaGFz
IHRvIGJlIHNjYWxlZCBieSBjb250YWluZXJfc2l6ZSAvIFNWR19kZWZhdWx0X2ludHJpbnNpY19z
aXplLgorICAgICAgICAKKyAgICAgICAgQWZ0ZXIgZmlndXJpbmcgb3V0IHRoYXQgSSBuZWVkIHRv
IHVwZGF0ZUlubmVyQ29udGVudFJlY3QoKSB0byBmaXggdGhpcyBidWcsCisgICAgICAgIEkgZm91
bmQgb3V0IEJsaW5rIGhhcyBhbHJlYWR5IGNoYW5nZWQgdGhpcyBjb2RlIHRvIGRvIHRoZSBzYW1l
IHRoaW5nLiBCdXQgCisgICAgICAgIHRoZXkgYWxzbyBkaWQgbW9yZSBjbGVhbi11cCBpbiB0aGlz
IGZ1bmN0aW9uLiBIZXJlIGlzIHRoZSBsaW5rCisgICAgICAgIGh0dHBzOi8vY29kZXJldmlldy5j
aHJvbWl1bS5vcmcvMTE0MzIzMDA0LiBJIHRoaW5rIHRoZWlyIGNoYW5nZSBzZWVtcyBjb3JyZWN0
CisgICAgICAgIGFsdGhvdWdoIHRoZXkgZGlkIG5vdCBzYXkgd2hhdCBleGFjdGx5IHRoZXkgd2Vy
ZSB0cnlpbmcgdG8gZml4LgorICAgICAgICAKKyAgICAgICAgVGhlIHBsYW4gZm9yIHJlcGFpbnRP
ck1hcmtGb3JMYXlvdXQoKSwgd2hpY2ggaXMgdGhlIG5ldyBuYW1lIG9mIHRoaXMgZnVuY3Rpb24s
CisgICAgICAgIGlzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAtLSBzZXROZWVkTGF5b3V0
KCkgaWYgdGhlIGludHJpbnNpYyBzaXplIGNoYW5nZXMgYW5kIGl0IGFmZmVjdHMgdGhlIHNpemUK
KyAgICAgICAgICAgICAgIG9mIHRoZSBpbWFnZS4KKyAgICAgICAgICAgIC0tIHVwZGF0ZUlubmVy
Q29udGVudFJlY3QoKSBpZiB0aGUgaW50cmluc2ljIHNpemUgZGlkIG5vdCBjaGFuZ2UgYnV0IHRo
ZQorICAgICAgICAgICAgICAgaW1hZ2UgaGFzIGV4aXRpbmcgbGF5b3V0LgorICAgICAgICAgICAg
LS0gcmVwYWludCB0aGUgaW1hZ2UgcmVjdGFuZ2xlIGlmIGxheW91dCBpcyBub3QgbmVlZGVkLgor
ICAgICAgICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIGFsc28gcmVtb3ZlcyB0aGUgY2FsbCB0
byBjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24oKSwgd2hpY2ggaXMKKyAgICAgICAgYWxtb3N0
IHJ1bm5pbmcgYSBsYXlvdXQgZm9yIHRoZSBpbWFnZS4gVGhpcyBjYWxsIGZpZ3VyZXMgb3V0IHdo
ZXRoZXIgdGhlIGltYWdlCisgICAgICAgIG5lZWRzIHRvIHNldE5lZWRzTGF5b3V0KCkuIFRoaXMg
Y2FsbCBpcyB1bm5lY2Vzc2FyeTsgdGhlIGltYWdlIG5lZWRzIHRvIHJ1biBhCisgICAgICAgIGxh
eW91dCBpZiB0aGUgaW50cmluc2ljIHNpemUgaGFzIGNoYW5nZWQgYW5kIGl0IGFmZmVjdHMgdGhl
IHNpemUgb2YgdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgVGVzdDog
c3ZnL2FzLWltYWdlL3N2Zy1uby1pbnRyaW5zaWMtc2l6ZS1zd2l0Y2hpbmcuaHRtbAorCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckltYWdlOjpzdHlsZURpZENoYW5nZSk6IENoYW5nZSB0aGUgZnVuY3Rpb24gY2FsbC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQpOiBSZW5hbWUgbG9jYWwgdmFy
aWFibGUgYW5kIGNoYW5nZSB0aGUKKyAgICAgICAgZnVuY3Rpb24gY2FsbC4KKyAgICAgICAgCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6dXBkYXRlSW50cmluc2ljU2l6ZUlmTmVlZGVk
KTogU2ltcGxpZnkgdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgc2V0SW50cmluc2ljU2l6ZSgpIHdp
dGggdGhlIG5ldyBzaXplIHVubGVzcyB0aGUgaW1hZ2UgaXMgaW4gYW4gZXJyb3Igc3RhdGUuCisg
ICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnJlcGFpbnRPck1hcmtGb3JM
YXlvdXQpOiBUaGlzIGEgYmV0dGVyIG5hbWUgZm9yIHRoaXMKKyAgICAgICAgZnVuY3Rpb24gc2lu
Y2UgaXQgaXMgY2FsbGVkIGV2ZW4gaWYgdGhlIGludHJpbnNpYyBzaXplIHdhcyBub3QgY2hhbmdl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZURpbWVuc2lvbnNDaGFuZ2Vk
KTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6
IFJlbmFtZSBpbWFnZURpbWVuc2lvbnNDaGFuZ2VkKCkgYW5kIGNoYW5nZSB0aGUgCisgICAgICAg
IHVwZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZCgpIHRvIHJldHVybiB2b2lkLgorICAgICAgICAK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6cGFpbnQpOiBDb2RlIGNsZWFu
dXAuIFRoaXMgZnVuY3Rpb24gY2FuCisgICAgICAgIG9ubHkgaGFuZGxlIHRoZSBwYWludCBwaGFz
ZXMgUGFpbnRQaGFzZUZvcmVncm91bmQgYW5kIFBhaW50UGhhc2VTZWxlY3Rpb24uCisgICAgICAg
IFVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIHNpbXBsaWZ5IHRoZSBsb2dpYyBhbmQgb3JkZXIgb2Yg
cGFpbnRpbmcgdGhlcmUuCisKIDIwMTUtMDMtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBbTWFjXVtpT1NdIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKCkg
LyBzdG9wU2hhcmVkVGltZXIoKSBhcmUgZXhwZW5zaXZlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9uIDE4MTUxMykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOSwxMiAr
MjA5LDEyIEBAIHZvaWQgUmVuZGVySW1hZ2U6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGkKICAgICBS
ZW5kZXJSZXBsYWNlZDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwogICAgIGlmICht
X25lZWRzVG9TZXRTaXplRm9yQWx0VGV4dCkgewogICAgICAgICBpZiAoIW1fYWx0VGV4dC5pc0Vt
cHR5KCkgJiYgc2V0SW1hZ2VTaXplRm9yQWx0VGV4dChpbWFnZVJlc291cmNlKCkuY2FjaGVkSW1h
Z2UoKSkpCi0gICAgICAgICAgICBpbWFnZURpbWVuc2lvbnNDaGFuZ2VkKHRydWUgLyogaW1hZ2VT
aXplQ2hhbmdlZCAqLyk7CisgICAgICAgICAgICByZXBhaW50T3JNYXJrRm9yTGF5b3V0KHRydWUg
LyogaW1hZ2VTaXplQ2hhbmdlZEZvckFsdFRleHQgKi8pOwogICAgICAgICBtX25lZWRzVG9TZXRT
aXplRm9yQWx0VGV4dCA9IGZhbHNlOwogICAgIH0KICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVO
VEFUSU9OKQogICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91dCAmJiBvbGRTdHls
ZS0+aW1hZ2VPcmllbnRhdGlvbigpICE9IHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKQotICAg
ICAgICByZXR1cm4gaW1hZ2VEaW1lbnNpb25zQ2hhbmdlZCh0cnVlIC8qIGltYWdlU2l6ZUNoYW5n
ZWQgKi8pOworICAgICAgICByZXR1cm4gcmVwYWludE9yTWFya0ZvckxheW91dCh0cnVlIC8qIGlt
YWdlU2l6ZUNoYW5nZWRGb3JBbHRUZXh0ICovKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19J
TUFHRV9SRVNPTFVUSU9OKQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGkKICAgICAgICAgJiYgKG9sZFN0eWxlLT5pbWFnZVJlc29sdXRp
b24oKSAhPSBzdHlsZSgpLmltYWdlUmVzb2x1dGlvbigpCiAgICAgICAgICAgICB8fCBvbGRTdHls
ZS0+aW1hZ2VSZXNvbHV0aW9uU25hcCgpICE9IHN0eWxlKCkuaW1hZ2VSZXNvbHV0aW9uU25hcCgp
CiAgICAgICAgICAgICB8fCBvbGRTdHlsZS0+aW1hZ2VSZXNvbHV0aW9uU291cmNlKCkgIT0gc3R5
bGUoKS5pbWFnZVJlc29sdXRpb25Tb3VyY2UoKSkpCi0gICAgICAgIGltYWdlRGltZW5zaW9uc0No
YW5nZWQodHJ1ZSAvKiBpbWFnZVNpemVDaGFuZ2VkICovKTsKKyAgICAgICAgcmVwYWludE9yTWFy
a0ZvckxheW91dCh0cnVlIC8qIGltYWdlU2l6ZUNoYW5nZWRGb3JBbHRUZXh0ICovKTsKICNlbmRp
ZgogfQogCkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2Vk
KFdyYXBwZWRJbQogICAgICAgICBtX2RpZEluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQaXhlbENv
dW50ID0gdHJ1ZTsKICAgICB9CiAKLSAgICBib29sIGltYWdlU2l6ZUNoYW5nZWQgPSBmYWxzZTsK
KyAgICBib29sIGltYWdlU2l6ZUNoYW5nZWRGb3JBbHRUZXh0ID0gZmFsc2U7CiAKICAgICAvLyBT
ZXQgaW1hZ2UgZGltZW5zaW9ucywgdGFraW5nIGludG8gYWNjb3VudCB0aGUgc2l6ZSBvZiB0aGUg
YWx0IHRleHQuCiAgICAgaWYgKGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkpIHsKQEAg
LTI1OCwyMCArMjU4LDE3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVk
SW0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAg
ICBpbWFnZVNpemVDaGFuZ2VkID0gc2V0SW1hZ2VTaXplRm9yQWx0VGV4dChpbWFnZVJlc291cmNl
KCkuY2FjaGVkSW1hZ2UoKSk7CisgICAgICAgIGltYWdlU2l6ZUNoYW5nZWRGb3JBbHRUZXh0ID0g
c2V0SW1hZ2VTaXplRm9yQWx0VGV4dChpbWFnZVJlc291cmNlKCkuY2FjaGVkSW1hZ2UoKSk7CiAg
ICAgfQogCi0gICAgaW1hZ2VEaW1lbnNpb25zQ2hhbmdlZChpbWFnZVNpemVDaGFuZ2VkLCByZWN0
KTsKKyAgICByZXBhaW50T3JNYXJrRm9yTGF5b3V0KGltYWdlU2l6ZUNoYW5nZWRGb3JBbHRUZXh0
LCByZWN0KTsKIH0KIAotYm9vbCBSZW5kZXJJbWFnZTo6dXBkYXRlSW50cmluc2ljU2l6ZUlmTmVl
ZGVkKGNvbnN0IExheW91dFNpemUmIG5ld1NpemUsIGJvb2wgaW1hZ2VTaXplQ2hhbmdlZCkKK3Zv
aWQgUmVuZGVySW1hZ2U6OnVwZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZChjb25zdCBMYXlvdXRT
aXplJiBuZXdTaXplKQogewotICAgIGlmIChuZXdTaXplID09IGludHJpbnNpY1NpemUoKSAmJiAh
aW1hZ2VTaXplQ2hhbmdlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChpbWFnZVJl
c291cmNlKCkuZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gaW1hZ2VTaXplQ2hhbmdl
ZDsKKyAgICBpZiAoaW1hZ2VSZXNvdXJjZSgpLmVycm9yT2NjdXJyZWQoKSB8fCAhbV9pbWFnZVJl
c291cmNlLT5oYXNJbWFnZSgpKQorICAgICAgICByZXR1cm47CiAgICAgc2V0SW50cmluc2ljU2l6
ZShuZXdTaXplKTsKLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBSZW5kZXJJbWFnZTo6dXBk
YXRlSW5uZXJDb250ZW50UmVjdCgpCkBAIC0yODIsNyArMjc5LDcgQEAgdm9pZCBSZW5kZXJJbWFn
ZTo6dXBkYXRlSW5uZXJDb250ZW50UmVjdAogICAgICAgICBpbWFnZVJlc291cmNlKCkuc2V0Q29u
dGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnRhaW5lclNpemUpOwogfQogCi12b2lkIFJlbmRlcklt
YWdlOjppbWFnZURpbWVuc2lvbnNDaGFuZ2VkKGJvb2wgaW1hZ2VTaXplQ2hhbmdlZCwgY29uc3Qg
SW50UmVjdCogcmVjdCkKK3ZvaWQgUmVuZGVySW1hZ2U6OnJlcGFpbnRPck1hcmtGb3JMYXlvdXQo
Ym9vbCBpbWFnZVNpemVDaGFuZ2VkRm9yQWx0VGV4dCwgY29uc3QgSW50UmVjdCogcmVjdCkKIHsK
ICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCiAgICAgZG91YmxlIHNjYWxlID0gc3R5
bGUoKS5pbWFnZVJlc29sdXRpb24oKTsKQEAgLTI5MCwxMCArMjg3LDEzIEBAIHZvaWQgUmVuZGVy
SW1hZ2U6OmltYWdlRGltZW5zaW9uc0NoYW5nZWQKICAgICAgICAgc2NhbGUgPSByb3VuZEZvcklt
cHJlY2lzZUNvbnZlcnNpb248aW50PihzY2FsZSk7CiAgICAgaWYgKHNjYWxlIDw9IDApCiAgICAg
ICAgIHNjYWxlID0gMTsKLSAgICBib29sIGludHJpbnNpY1NpemVDaGFuZ2VkID0gdXBkYXRlSW50
cmluc2ljU2l6ZUlmTmVlZGVkKGltYWdlUmVzb3VyY2UoKS5pbnRyaW5zaWNTaXplKHN0eWxlKCku
ZWZmZWN0aXZlWm9vbSgpIC8gc2NhbGUpLCBpbWFnZVNpemVDaGFuZ2VkKTsKKyAgICBMYXlvdXRT
aXplIG5ld0ludHJpbnNpY1NpemUgPSBpbWFnZVJlc291cmNlKCkuaW50cmluc2ljU2l6ZShzdHls
ZSgpLmVmZmVjdGl2ZVpvb20oKSAvIHNjYWxlKTsKICNlbHNlCi0gICAgYm9vbCBpbnRyaW5zaWNT
aXplQ2hhbmdlZCA9IHVwZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZChpbWFnZVJlc291cmNlKCku
aW50cmluc2ljU2l6ZShzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSksIGltYWdlU2l6ZUNoYW5nZWQp
OworICAgIExheW91dFNpemUgbmV3SW50cmluc2ljU2l6ZSA9IGltYWdlUmVzb3VyY2UoKS5pbnRy
aW5zaWNTaXplKHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKICNlbmRpZgorICAgIExheW91dFNp
emUgb2xkSW50cmluc2ljU2l6ZSA9IGludHJpbnNpY1NpemUoKTsKKworICAgIHVwZGF0ZUludHJp
bnNpY1NpemVJZk5lZWRlZChuZXdJbnRyaW5zaWNTaXplKTsKIAogICAgIC8vIEluIHRoZSBjYXNl
IG9mIGdlbmVyYXRlZCBpbWFnZSBjb250ZW50IHVzaW5nIDpiZWZvcmUvOmFmdGVyL2NvbnRlbnQs
IHdlIG1pZ2h0IG5vdCBiZQogICAgIC8vIGluIHRoZSByZW5kZXIgdHJlZSB5ZXQuIEluIHRoYXQg
Y2FzZSwgd2UganVzdCBuZWVkIHRvIHVwZGF0ZSBvdXIgaW50cmluc2ljIHNpemUuCkBAIC0zMDIs
NjYgKzMwMiw1NSBAQCB2b2lkIFJlbmRlckltYWdlOjppbWFnZURpbWVuc2lvbnNDaGFuZ2VkCiAg
ICAgaWYgKCFjb250YWluaW5nQmxvY2soKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBz
aG91bGRSZXBhaW50ID0gdHJ1ZTsKLSAgICBpZiAoaW50cmluc2ljU2l6ZUNoYW5nZWQpIHsKLSAg
ICAgICAgaWYgKCFwcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoKSkKLSAgICAgICAgICAgIHNl
dFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSh0cnVlKTsKLQotICAgICAgICBib29sIGhhc092
ZXJyaWRlU2l6ZSA9IGhhc092ZXJyaWRlSGVpZ2h0KCkgfHwgaGFzT3ZlcnJpZGVXaWR0aCgpOwot
ICAgICAgICBpZiAoIWhhc092ZXJyaWRlU2l6ZSAmJiAhaW1hZ2VTaXplQ2hhbmdlZCkgewotICAg
ICAgICAgICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVkVmFsdWVzOwotICAg
ICAgICAgICAgY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKGNvbXB1dGVkVmFsdWVzKTsKLSAg
ICAgICAgICAgIExheW91dFVuaXQgbmV3V2lkdGggPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudDsK
LSAgICAgICAgICAgIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KGhlaWdodCgpLCAwLCBjb21wdXRlZFZh
bHVlcyk7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IG5ld0hlaWdodCA9IGNvbXB1dGVkVmFsdWVz
Lm1fZXh0ZW50OwotCi0gICAgICAgICAgICBpbWFnZVNpemVDaGFuZ2VkID0gd2lkdGgoKSAhPSBu
ZXdXaWR0aCB8fCBoZWlnaHQoKSAhPSBuZXdIZWlnaHQ7Ci0gICAgICAgIH0KKyAgICBib29sIGlt
YWdlU291cmNlSGFzQ2hhbmdlZFNpemUgPSBvbGRJbnRyaW5zaWNTaXplICE9IG5ld0ludHJpbnNp
Y1NpemUgfHwgaW1hZ2VTaXplQ2hhbmdlZEZvckFsdFRleHQ7CiAKLSAgICAgICAgLy8gRklYTUU6
IFdlIG9ubHkgbmVlZCB0byByZWNvbXB1dGUgdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBwcmVmZXJy
ZWQgc2l6ZQotICAgICAgICAvLyBpZiB0aGUgY29udGFpbmluZyBibG9jaydzIHNpemUgZGVwZW5k
cyBvbiB0aGUgaW1hZ2UncyBzaXplIChpLmUuLCB0aGUgY29udGFpbmVyIHVzZXMgc2hyaW5rLXRv
LWZpdCBzaXppbmcpLgotICAgICAgICAvLyBUaGVyZSdzIG5vIGVhc3kgd2F5IHRvIGRldGVjdCB0
aGF0IHNocmluay10by1maXQgaXMgbmVlZGVkLCBhbHdheXMgZm9yY2UgYSBsYXlvdXQuCi0gICAg
ICAgIGJvb2wgY29udGFpbmluZ0Jsb2NrTmVlZHNUb1JlY29tcHV0ZVByZWZlcnJlZFNpemUgPQot
ICAgICAgICAgICAgc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5pc1BlcmNlbnQoKQotICAgICAgICAg
ICAgfHwgc3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgoKS5pc1BlcmNlbnQoKQotICAgICAgICAgICAg
fHwgc3R5bGUoKS5sb2dpY2FsTWluV2lkdGgoKS5pc1BlcmNlbnQoKTsKLQotICAgICAgICBib29s
IGxheW91dFNpemVEZXBlbmRzT25JbnRyaW5zaWNTaXplID0gc3R5bGUoKS5hc3BlY3RSYXRpb1R5
cGUoKSA9PSBBc3BlY3RSYXRpb0Zyb21JbnRyaW5zaWM7Ci0KLSAgICAgICAgaWYgKGltYWdlU2l6
ZUNoYW5nZWQgfHwgaGFzT3ZlcnJpZGVTaXplIHx8IGNvbnRhaW5pbmdCbG9ja05lZWRzVG9SZWNv
bXB1dGVQcmVmZXJyZWRTaXplIHx8IGxheW91dFNpemVEZXBlbmRzT25JbnRyaW5zaWNTaXplKSB7
Ci0gICAgICAgICAgICBzaG91bGRSZXBhaW50ID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIXNl
bGZOZWVkc0xheW91dCgpKQotICAgICAgICAgICAgICAgIHNldE5lZWRzTGF5b3V0KCk7Ci0gICAg
ICAgIH0KKyAgICBpZiAoaW1hZ2VTb3VyY2VIYXNDaGFuZ2VkU2l6ZSkKKyAgICAgICAgc2V0UHJl
ZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KHRydWUpOwogCi0gICAgICAgIGlmIChldmVySGFkTGF5
b3V0KCkgJiYgIXNlbGZOZWVkc0xheW91dCgpKSB7Ci0gICAgICAgICAgICAvLyBUaGUgaW5uZXIg
Y29udGVudCByZWN0YW5nbGUgaXMgY2FsY3VsYXRlZCBkdXJpbmcgbGF5b3V0LCBidXQgbWF5IG5l
ZWQgYW4gdXBkYXRlIG5vdwotICAgICAgICAgICAgLy8gKHVubGVzcyB0aGUgYm94IGhhcyBhbHJl
YWR5IGJlZW4gc2NoZWR1bGVkIGZvciBsYXlvdXQpLiBJbiBvcmRlciB0byBjYWxjdWxhdGUgaXQs
IHdlCi0gICAgICAgICAgICAvLyBtYXkgbmVlZCB2YWx1ZXMgZnJvbSB0aGUgY29udGFpbmluZyBi
bG9jaywgdGhvdWdoLCBzbyBtYWtlIHN1cmUgdGhhdCB3ZSdyZSBub3QgdG9vCi0gICAgICAgICAg
ICAvLyBlYXJseS4gSXQgbWF5IGJlIHRoYXQgbGF5b3V0IGhhc24ndCBldmVuIHRha2VuIHBsYWNl
IG9uY2UgeWV0LgotCi0gICAgICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIG5vdCBoYXZlIHRv
IHRyaWdnZXIgYW5vdGhlciBjYWxsIHRvIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcigpCi0g
ICAgICAgICAgICAvLyBmcm9tIGhlcmUsIHNpbmNlIGl0J3MgYWxyZWFkeSBiZWluZyBkb25lIGR1
cmluZyBsYXlvdXQuCi0gICAgICAgICAgICB1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCk7Ci0gICAg
ICAgIH0KKyAgICAvLyBJZiB0aGUgYWN0dWFsIGFyZWEgb2NjdXBpZWQgYnkgdGhlIGltYWdlIGhh
cyBjaGFuZ2VkIGFuZCBpdCBpcyBub3QgY29uc3RyYWluZWQgYnkgc3R5bGUgdGhlbiBhIGxheW91
dCBpcyByZXF1aXJlZC4KKyAgICBib29sIGltYWdlU2l6ZUlzQ29uc3RyYWluZWQgPSBzdHlsZSgp
LmxvZ2ljYWxXaWR0aCgpLmlzU3BlY2lmaWVkKCkgJiYgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCku
aXNTcGVjaWZpZWQoKTsKKyAgICBib29sIG5lZWRzTGF5b3V0ID0gIWltYWdlU2l6ZUlzQ29uc3Ry
YWluZWQgJiYgaW1hZ2VTb3VyY2VIYXNDaGFuZ2VkU2l6ZTsKKworICAgIC8vIEZJWE1FOiBXZSBv
bmx5IG5lZWQgdG8gcmVjb21wdXRlIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgcHJlZmVycmVkIHNp
emUKKyAgICAvLyBpZiB0aGUgY29udGFpbmluZyBibG9jaydzIHNpemUgZGVwZW5kcyBvbiB0aGUg
aW1hZ2UncyBzaXplIChpLmUuLCB0aGUgY29udGFpbmVyIHVzZXMgc2hyaW5rLXRvLWZpdCBzaXpp
bmcpLgorICAgIC8vIFRoZXJlJ3Mgbm8gZWFzeSB3YXkgdG8gZGV0ZWN0IHRoYXQgc2hyaW5rLXRv
LWZpdCBpcyBuZWVkZWQsIGFsd2F5cyBmb3JjZSBhIGxheW91dC4KKyAgICBib29sIGNvbnRhaW5p
bmdCbG9ja05lZWRzVG9SZWNvbXB1dGVQcmVmZXJyZWRTaXplID0KKyAgICAgICAgc3R5bGUoKS5s
b2dpY2FsV2lkdGgoKS5pc1BlcmNlbnQoKQorICAgICAgICB8fCBzdHlsZSgpLmxvZ2ljYWxNYXhX
aWR0aCgpLmlzUGVyY2VudCgpCisgICAgICAgIHx8IHN0eWxlKCkubG9naWNhbE1pbldpZHRoKCku
aXNQZXJjZW50KCk7CisKKyAgICBib29sIGxheW91dFNpemVEZXBlbmRzT25JbnRyaW5zaWNTaXpl
ID0gc3R5bGUoKS5hc3BlY3RSYXRpb1R5cGUoKSA9PSBBc3BlY3RSYXRpb0Zyb21JbnRyaW5zaWM7
CisKKyAgICBpZiAobmVlZHNMYXlvdXQgfHwgY29udGFpbmluZ0Jsb2NrTmVlZHNUb1JlY29tcHV0
ZVByZWZlcnJlZFNpemUgfHwgbGF5b3V0U2l6ZURlcGVuZHNPbkludHJpbnNpY1NpemUpIHsKKyAg
ICAgICAgc2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
IChzaG91bGRSZXBhaW50KSB7Ci0gICAgICAgIExheW91dFJlY3QgcmVwYWludFJlY3Q7Ci0gICAg
ICAgIGlmIChyZWN0KSB7Ci0gICAgICAgICAgICAvLyBUaGUgaW1hZ2UgY2hhbmdlZCByZWN0IGlz
IGluIHNvdXJjZSBpbWFnZSBjb29yZGluYXRlcyAocHJlLXpvb21pbmcpLAotICAgICAgICAgICAg
Ly8gc28gbWFwIGZyb20gdGhlIGJvdW5kcyBvZiB0aGUgaW1hZ2UgdG8gdGhlIGNvbnRlbnRzQm94
LgotICAgICAgICAgICAgcmVwYWludFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1hcFJlY3QoKnJl
Y3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlUmVzb3VyY2UoKS5pbWFnZVNpemUoMS4w
ZikpLCBjb250ZW50Qm94UmVjdCgpKSk7Ci0gICAgICAgICAgICAvLyBHdWFyZCBhZ2FpbnN0IHRv
by1sYXJnZSBjaGFuZ2VkIHJlY3RzLgotICAgICAgICAgICAgcmVwYWludFJlY3QuaW50ZXJzZWN0
KGNvbnRlbnRCb3hSZWN0KCkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlcGFpbnRS
ZWN0ID0gY29udGVudEJveFJlY3QoKTsKKyAgICBpZiAoZXZlckhhZExheW91dCgpICYmICFzZWxm
TmVlZHNMYXlvdXQoKSkgeworICAgICAgICAvLyBUaGUgaW5uZXIgY29udGVudCByZWN0YW5nbGUg
aXMgY2FsY3VsYXRlZCBkdXJpbmcgbGF5b3V0LCBidXQgbWF5IG5lZWQgYW4gdXBkYXRlIG5vdwor
ICAgICAgICAvLyAodW5sZXNzIHRoZSBib3ggaGFzIGFscmVhZHkgYmVlbiBzY2hlZHVsZWQgZm9y
IGxheW91dCkuIEluIG9yZGVyIHRvIGNhbGN1bGF0ZSBpdCwgd2UKKyAgICAgICAgLy8gbWF5IG5l
ZWQgdmFsdWVzIGZyb20gdGhlIGNvbnRhaW5pbmcgYmxvY2ssIHRob3VnaCwgc28gbWFrZSBzdXJl
IHRoYXQgd2UncmUgbm90IHRvbworICAgICAgICAvLyBlYXJseS4gSXQgbWF5IGJlIHRoYXQgbGF5
b3V0IGhhc24ndCBldmVuIHRha2VuIHBsYWNlIG9uY2UgeWV0LgorCisgICAgICAgIC8vIEZJWE1F
OiB3ZSBzaG91bGQgbm90IGhhdmUgdG8gdHJpZ2dlciBhbm90aGVyIGNhbGwgdG8gc2V0Q29udGFp
bmVyU2l6ZUZvclJlbmRlcmVyKCkKKyAgICAgICAgLy8gZnJvbSBoZXJlLCBzaW5jZSBpdCdzIGFs
cmVhZHkgYmVpbmcgZG9uZSBkdXJpbmcgbGF5b3V0LgorICAgICAgICB1cGRhdGVJbm5lckNvbnRl
bnRSZWN0KCk7CisgICAgfQorCisgICAgTGF5b3V0UmVjdCByZXBhaW50UmVjdDsKKyAgICBpZiAo
cmVjdCkgeworICAgICAgICAvLyBUaGUgaW1hZ2UgY2hhbmdlZCByZWN0IGlzIGluIHNvdXJjZSBp
bWFnZSBjb29yZGluYXRlcyAocHJlLXpvb21pbmcpLAorICAgICAgICAvLyBzbyBtYXAgZnJvbSB0
aGUgYm91bmRzIG9mIHRoZSBpbWFnZSB0byB0aGUgY29udGVudHNCb3guCisgICAgICAgIHJlcGFp
bnRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtYXBSZWN0KCpyZWN0LCBGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBpbWFnZVJlc291cmNlKCkuaW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJveFJlY3Qo
KSkpOworICAgICAgICAvLyBHdWFyZCBhZ2FpbnN0IHRvby1sYXJnZSBjaGFuZ2VkIHJlY3RzLgor
ICAgICAgICByZXBhaW50UmVjdC5pbnRlcnNlY3QoY29udGVudEJveFJlY3QoKSk7CisgICAgfSBl
bHNlCisgICAgICAgIHJlcGFpbnRSZWN0ID0gY29udGVudEJveFJlY3QoKTsKICAgICAgICAgCi0g
ICAgICAgIHJlcGFpbnRSZWN0YW5nbGUocmVwYWludFJlY3QpOworICAgIHJlcGFpbnRSZWN0YW5n
bGUocmVwYWludFJlY3QpOwogCi0gICAgICAgIC8vIFRlbGwgYW55IHBvdGVudGlhbCBjb21wb3Np
dGluZyBsYXllcnMgdGhhdCB0aGUgaW1hZ2UgbmVlZHMgdXBkYXRpbmcuCi0gICAgICAgIGNvbnRl
bnRDaGFuZ2VkKEltYWdlQ2hhbmdlZCk7Ci0gICAgfQorICAgIC8vIFRlbGwgYW55IHBvdGVudGlh
bCBjb21wb3NpdGluZyBsYXllcnMgdGhhdCB0aGUgaW1hZ2UgbmVlZHMgdXBkYXRpbmcuCisgICAg
Y29udGVudENoYW5nZWQoSW1hZ2VDaGFuZ2VkKTsKIH0KIAogdm9pZCBSZW5kZXJJbWFnZTo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIG5ld0ltYWdlKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmgJKHJldmlzaW9uIDE4MTUxMykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsOCArMTA3
LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2hhZG93Q29udHJvbHNOZWVkQ3VzdG9t
TGF5b3V0TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBJbnRTaXplIGlt
YWdlU2l6ZUZvckVycm9yKENhY2hlZEltYWdlKikgY29uc3Q7Ci0gICAgdm9pZCBpbWFnZURpbWVu
c2lvbnNDaGFuZ2VkKGJvb2wgaW1hZ2VTaXplQ2hhbmdlZCwgY29uc3QgSW50UmVjdCogPSAwKTsK
LSAgICBib29sIHVwZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZChjb25zdCBMYXlvdXRTaXplJiwg
Ym9vbCBpbWFnZVNpemVDaGFuZ2VkKTsKKyAgICB2b2lkIHJlcGFpbnRPck1hcmtGb3JMYXlvdXQo
Ym9vbCBpbWFnZVNpemVDaGFuZ2VkLCBjb25zdCBJbnRSZWN0KiA9IDApOworICAgIHZvaWQgdXBk
YXRlSW50cmluc2ljU2l6ZUlmTmVlZGVkKGNvbnN0IExheW91dFNpemUmKTsKICAgICAvLyBVcGRh
dGUgdGhlIHNpemUgb2YgdGhlIGltYWdlIHRvIGJlIHJlbmRlcmVkLiBPYmplY3QtZml0IG1heSBj
YXVzZSB0aGlzIHRvIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBDU1MgYm94J3MgY29udGVudCByZWN0
LgogICAgIHZvaWQgdXBkYXRlSW5uZXJDb250ZW50UmVjdCgpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5j
cHAJKHJldmlzaW9uIDE4MTUxMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDEwIEBA
IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50JiBSZW5kZXJTVkdGb3JlaWcKIAogdm9pZCBSZW5kZXJT
VkdGb3JlaWduT2JqZWN0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmKQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
Ci0gICAgICAgIHx8IChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgJiYg
cGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rpb24pKQorICAgIGlmIChwYWludElu
Zm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5w
aGFzZSAhPSBQYWludFBoYXNlU2VsZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBQYWlu
dEluZm8gY2hpbGRQYWludEluZm8ocGFpbnRJbmZvKTsKQEAgLTY1LDMwICs2NywzMCBAQCB2b2lk
IFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OnBhaW50KFBhaW50CiAgICAgICAgIGNoaWxkUGFpbnRJ
bmZvLmNvbnRleHQtPmNsaXAobV92aWV3cG9ydCk7CiAKICAgICBTVkdSZW5kZXJpbmdDb250ZXh0
IHJlbmRlcmluZ0NvbnRleHQ7Ci0gICAgYm9vbCBjb250aW51ZVJlbmRlcmluZyA9IHRydWU7CiAg
ICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkgewogICAgICAg
ICByZW5kZXJpbmdDb250ZXh0LnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoKnRoaXMsIGNoaWxk
UGFpbnRJbmZvKTsKLSAgICAgICAgY29udGludWVSZW5kZXJpbmcgPSByZW5kZXJpbmdDb250ZXh0
LmlzUmVuZGVyaW5nUHJlcGFyZWQoKTsKKyAgICAgICAgaWYgKCFyZW5kZXJpbmdDb250ZXh0Lmlz
UmVuZGVyaW5nUHJlcGFyZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAoY29udGludWVSZW5kZXJpbmcpIHsKLSAgICAgICAgLy8gUGFpbnQgYWxsIHBoYXNlcyBvZiBG
TyBlbGVtZW50cyBhdG9taWNhbGx5LCBhcyB0aG91Z2ggdGhlIEZPIGVsZW1lbnQgZXN0YWJsaXNo
ZWQgaXRzCi0gICAgICAgIC8vIG93biBzdGFja2luZyBjb250ZXh0LgotICAgICAgICBib29sIHBy
ZXNlcnZlUGhhc2UgPSBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbiB8fCBw
YWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVRleHRDbGlwOwotICAgICAgICBMYXlvdXRQb2lu
dCBjaGlsZFBvaW50ID0gSW50UG9pbnQoKTsKLSAgICAgICAgY2hpbGRQYWludEluZm8ucGhhc2Ug
PSBwcmVzZXJ2ZVBoYXNlID8gcGFpbnRJbmZvLnBoYXNlIDogUGFpbnRQaGFzZUJsb2NrQmFja2dy
b3VuZDsKLSAgICAgICAgUmVuZGVyQmxvY2s6OnBhaW50KGNoaWxkUGFpbnRJbmZvLCBJbnRQb2lu
dCgpKTsKLSAgICAgICAgaWYgKCFwcmVzZXJ2ZVBoYXNlKSB7Ci0gICAgICAgICAgICBjaGlsZFBh
aW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHM7Ci0gICAgICAg
ICAgICBSZW5kZXJCbG9jazo6cGFpbnQoY2hpbGRQYWludEluZm8sIGNoaWxkUG9pbnQpOwotICAg
ICAgICAgICAgY2hpbGRQYWludEluZm8ucGhhc2UgPSBQYWludFBoYXNlRmxvYXQ7Ci0gICAgICAg
ICAgICBSZW5kZXJCbG9jazo6cGFpbnQoY2hpbGRQYWludEluZm8sIGNoaWxkUG9pbnQpOwotICAg
ICAgICAgICAgY2hpbGRQYWludEluZm8ucGhhc2UgPSBQYWludFBoYXNlRm9yZWdyb3VuZDsKLSAg
ICAgICAgICAgIFJlbmRlckJsb2NrOjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQb2ludCk7
Ci0gICAgICAgICAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VPdXRsaW5lOwot
ICAgICAgICAgICAgUmVuZGVyQmxvY2s6OnBhaW50KGNoaWxkUGFpbnRJbmZvLCBjaGlsZFBvaW50
KTsKLSAgICAgICAgfQorICAgIExheW91dFBvaW50IGNoaWxkUG9pbnQgPSBJbnRQb2ludCgpOwor
ICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbikgeworICAgICAg
ICBSZW5kZXJCbG9jazo6cGFpbnQoY2hpbGRQYWludEluZm8sIGNoaWxkUG9pbnQpOworICAgICAg
ICByZXR1cm47CiAgICAgfQorCisgICAgLy8gUGFpbnQgYWxsIHBoYXNlcyBvZiBGTyBlbGVtZW50
cyBhdG9taWNhbGx5LCBhcyB0aG91Z2ggdGhlIEZPIGVsZW1lbnQgZXN0YWJsaXNoZWQgaXRzCisg
ICAgLy8gb3duIHN0YWNraW5nIGNvbnRleHQuCisgICAgY2hpbGRQYWludEluZm8ucGhhc2UgPSBQ
YWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kOworICAgIFJlbmRlckJsb2NrOjpwYWludChjaGlsZFBh
aW50SW5mbywgY2hpbGRQb2ludCk7CisgICAgY2hpbGRQYWludEluZm8ucGhhc2UgPSBQYWludFBo
YXNlQ2hpbGRCbG9ja0JhY2tncm91bmRzOworICAgIFJlbmRlckJsb2NrOjpwYWludChjaGlsZFBh
aW50SW5mbywgY2hpbGRQb2ludCk7CisgICAgY2hpbGRQYWludEluZm8ucGhhc2UgPSBQYWludFBo
YXNlRmxvYXQ7CisgICAgUmVuZGVyQmxvY2s6OnBhaW50KGNoaWxkUGFpbnRJbmZvLCBjaGlsZFBv
aW50KTsKKyAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VGb3JlZ3JvdW5kOwor
ICAgIFJlbmRlckJsb2NrOjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQb2ludCk7CisgICAg
Y2hpbGRQYWludEluZm8ucGhhc2UgPSBQYWludFBoYXNlT3V0bGluZTsKKyAgICBSZW5kZXJCbG9j
azo6cGFpbnQoY2hpbGRQYWludEluZm8sIGNoaWxkUG9pbnQpOwogfQogCiBMYXlvdXRSZWN0IFJl
bmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODE2NzQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0wMy0xOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJv
dWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFN3aXRjaGluZyBiZXR3ZWVuIHR3byBTVkcg
aW1hZ2VzIHdpdGggbm8gaW50cmluc2ljIHNpemVzIGNhdXNlcyB0aGVtIHRvIGdldCB0aGUgZGVm
YXVsdCBTVkcgc2l6ZSBpbnN0ZWFkIG9mIHRoZSBjb250YWluZXIgc2l6ZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjgwNS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN2Zy9hcy1pbWFnZS9zdmct
bm8taW50cmluc2ljLXNpemUtc3dpdGNoaW5nLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy9hcy1pbWFnZS9zdmctbm8taW50cmluc2ljLXNpemUtc3dpdGNoaW5nLmh0bWw6IEFk
ZGVkLgorICAgICAgICBFbnN1cmUgdGhhdCBzd2l0Y2hpbmcgdGhlIHNvdXJjZSBvZiBhbiA8aW1n
PiBlbGVtZW50IGJldHdlZW4gdHdvIFNWRyBpbWFnZXMsCisgICAgICAgIHdoaWNoIGhhdmUgbm8g
aW50cmluc2ljIHNpemVzLCBnZXRzIHRoZSBpbWFnZSB0aGUgc2l6ZSBvZiB0aGUgY29udGFpbmVy
IGFuZAorICAgICAgICBub3QgdGhlIGRlZmF1bHQgU1ZHIGludHJpbnNpYyBzaXplIHdoaWNoIGlz
IDMwMHgxNTAgcGl4ZWxzLgorCiAyMDE1LTAzLTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBh
cHBsZS5jb20+CiAKICAgICAgICAgRnVuY3Rpb24gYm9kaWVzIHNob3VsZCBhbHdheXMgaW5jbHVk
ZSBicmFjZXMKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctbm8taW50cmluc2lj
LXNpemUtc3dpdGNoaW5nLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
c3ZnL2FzLWltYWdlL3N2Zy1uby1pbnRyaW5zaWMtc2l6ZS1zd2l0Y2hpbmctZXhwZWN0ZWQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctbm8taW50cmlu
c2ljLXNpemUtc3dpdGNoaW5nLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAg
ZGl2Lm91dGVyIHsKKyAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgIGhlaWdodDogMTAwcHg7Cisg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB9CisgICAgZGl2LmlubmVyIHsKKyAg
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgIGxlZnQ6IDc1cHg7CisgICAgICB0b3A6IDI1
cHg7CisgICAgICB3aWR0aDogMTUwcHg7CisgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBsaW1lOworICAgIH0KKyAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
ICA8ZGl2IGNsYXNzPSJvdXRlciI+CisgICAgPGRpdiBjbGFzcz0iaW5uZXIiPjwvZGl2PgorICA8
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9z
dmctbm8taW50cmluc2ljLXNpemUtc3dpdGNoaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1uby1pbnRyaW5zaWMtc2l6ZS1zd2l0Y2hpbmcuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctbm8taW50cmluc2lj
LXNpemUtc3dpdGNoaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgZGl2IHsKKyAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiByZWQ7CisgICAgfQorICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJjaGFu
Z2VJbWFnZSgnb3JhbmdlJykiPgorICA8ZGl2PgorICAgIDxpbWcgaGVpZ2h0PSIxMDAiIGlkPSJp
bWFnZV8xIiBvbmxvYWQ9Im9ubG9hZEltYWdlKCkiPgorICA8L2Rpdj4KKyAgPHNjcmlwdD4KKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICAKKyAgICBmdW5jdGlvbiBvbmxvYWRJbWFnZSgpIHsKKyAgICAgIHZhciBjb2xvcnMg
PSBbIm9yYW5nZSIsICJncmVlbiIsICJzYWxtb24iLCAieWVsbG93IiwgImdyZWVuIl07CisKKyAg
ICAgIGlmICh0eXBlb2Ygb25sb2FkSW1hZ2UuY291bnRlciA9PSAndW5kZWZpbmVkJykKKyAgICAg
ICAgb25sb2FkSW1hZ2UuY291bnRlciA9IDA7CisKKyAgICAgIGlmICgrK29ubG9hZEltYWdlLmNv
dW50ZXIgPT0gY29sb3JzLmxlbmd0aCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICAgIH0KKworICAgICAgY2hhbmdlSW1hZ2UoY29sb3JzW29ubG9hZEltYWdlLmNvdW50ZXJdKTsK
KyAgICB9ICAgIAorICAgIGZ1bmN0aW9uIGNoYW5nZUltYWdlKG5hbWUpIHsKKyAgICAgIHZhciBp
bWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZV8xJyk7CisgICAgICBzd2l0Y2gg
KG5hbWUpIHsKKyAgICAgIGNhc2UgJ29yYW5nZSc6CisgICAgICAgIGltYWdlLnNyYyA9ICJkYXRh
OmltYWdlL3N2Zyt4bWwsIFwKKyAgICAgICAgICA8c3ZnIHZlcnNpb249JzEuMScgeG1sbnM9J2h0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjAwIDIwMCcgd2lkdGg9JzEw
MCcgaGVpZ2h0PScxMDAnPiBcCisgICAgICAgICAgICA8cmVjdCB3aWR0aD0nMTAwJScgaGVpZ2h0
PScxMDAlJyBmaWxsPSdvcmFuZ2UnLz4gXAorICAgICAgICAgICAgPHJlY3QgeD0nMjUlJyB5PScy
NSUnIHdpZHRoPSc1MCUnIGhlaWdodD0nNTAlJyBmaWxsPSdsaW1lJy8+IFwKKyAgICAgICAgICA8
L3N2Zz4iOworICAgICAgICBicmVhazsKKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgaW1hZ2Uu
c3JjID0gImRhdGE6aW1hZ2Uvc3ZnK3htbCwgXAorICAgICAgICAgIDxzdmcgdmVyc2lvbj0nMS4x
JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPiBcCisgICAgICAgICAgICA8cmVj
dCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmaWxsPSciICsgbmFtZSArICInLz4gXAorICAg
ICAgICAgICAgPHJlY3QgeD0nMjUlJyB5PScyNSUnIHdpZHRoPSc1MCUnIGhlaWdodD0nNTAlJyBm
aWxsPSdsaW1lJy8+IFwKKyAgICAgICAgICA8L3N2Zz4iOworICAgICAgICBicmVhazsKKyAgICAg
IH0KKyAgICB9CisgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248954</attachid>
            <date>2015-03-18 13:06:50 -0700</date>
            <delta_ts>2015-03-18 17:09:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142805-20150318130619.patch</filename>
            <type>text/plain</type>
            <size>22541</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE1LTAzLTE4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoaW5n
IGJldHdlZW4gdHdvIFNWRyBpbWFnZXMgd2l0aCBubyBpbnRyaW5zaWMgc2l6ZXMgY2F1c2VzIHRo
ZW0gdG8gZ2V0IHRoZSBkZWZhdWx0IFNWRyBzaXplIGluc3RlYWQgb2YgdGhlIGNvbnRhaW5lciBz
aXplLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQy
ODA1LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgVGhlIGJ1ZyBoYXBwZW5zIGR1ZSB0byB3cm9uZyBsb2dpYyBpbiBSZW5kZXJJbWFnZTo6
aW1hZ2VEaW1lbnNpb25zQ2hhbmdlZCgpLgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGRlY2lkZXMg
dG8gc2V0TmVlZHNMYXlvdXQoKSBpZiB0aGUgaW50cmluc2ljIHNpemUgb2YgdGhlIGltYWdlCisg
ICAgICAgIGNoYW5nZXMuIElmIHRoZSBzaXplIGRvZXMgbm90IGNoYW5nZSwgaXQgb25seSByZXBh
aW50cyB0aGUgaW1hZ2UgcmVjdGFuZ2xlLgorICAgICAgICBXaGVuIHN3aXRjaGluZyB0aGUgc3Jj
IG9mIHRoZSBhbiBpbWFnZSBiZXR3ZWVuIHR3byBTVkcgaW1hZ2VzIGFuZCBib3RoIG9mCisgICAg
ICAgIHRoZW0gaGF2ZSBubyBpbnRyaW5zaWMgc2l6ZSwgd2UgZG8gbm90IHVwZGF0ZUlubmVyQ29u
dGVudFJlY3QoKSBhbmQgdGhpcworICAgICAgICBtZWFucyBhbiBTVkdJbWFnZUZvckNvbnRhaW5l
ciBpcyBub3QgZ29pbmcgdG8gYmUgY3JlYXRlZCBmb3IgdGhpcyBpbWFnZS4KKyAgICAgICAgV2hl
biB0aGUgaW1hZ2UgaXMgZHJhd24sIGl0IGlzIGRyYXduIGRpcmVjdGx5IGZyb20gdGhlIFNWR0lt
YWdlLiBBbmQgdGhpcworICAgICAgICBtZWFucyB0aGUgZHJhd2luZyBoYXMgdG8gYmUgc2NhbGVk
IGJ5IGNvbnRhaW5lcl9zaXplIC8gU1ZHX2RlZmF1bHRfaW50cmluc2ljX3NpemUKKyAgICAgICAg
CisgICAgICAgIEFmdGVyIGZpZ3VyaW5nIG91dCB0aGF0IEkgbmVlZCB0byB1cGRhdGVJbm5lckNv
bnRlbnRSZWN0KCkgdG8gZml4IHRoaXMgYnVnLAorICAgICAgICBJIGZvdW5kIG91dCBCbGluayBo
YXMgYWxyZWFkeSBjaGFuZ2VkIHRoaXMgY29kZSB0byBkbyB0aGUgc2FtZSB0aGluZy4gQnV0IAor
ICAgICAgICB0aGV5IGFsc28gZGlkIG1vcmUgY2xlYW4tdXAgaW4gdGhpcyBmdW5jdGlvbi4gSGVy
ZSBpcyB0aGUgbGluaworICAgICAgICBodHRwczovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEx
NDMyMzAwNC4gSSB0aGluayB0aGVpciBjaGFuZ2Ugc2VlbXMgY29ycmVjdAorICAgICAgICBhbHRo
b3VnaCB0aGV5IGRpZCBub3Qgc2F5IHdoYXQgZXhhY3RseSB0aGV5IHdlcmUgdHJ5aW5nIHRvIGZp
eC4KKyAgICAgICAgCisgICAgICAgIFRoZSBwbGFuIGZvciByZXBhaW50T3JNYXJrRm9yTGF5b3V0
KCksIHdoaWNoIGlzIHRoZSBuZXcgbmFtZSBvZiB0aGlzIGZ1bmN0aW9uLAorICAgICAgICBpcyB0
aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgLS0gc2V0TmVlZExheW91dCgpIGlmIHRoZSBpbnRy
aW5zaWMgc2l6ZSBjaGFuZ2VzIGFuZCBpdCBhZmZlY3RzIHRoZSBzaXplCisgICAgICAgICAgICAg
ICBvZiB0aGUgaW1hZ2UuCisgICAgICAgICAgICAtLSB1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCkg
aWYgdGhlIGludHJpbnNpYyBzaXplIGRpZCBub3QgY2hhbmdlIGJ1dCB0aGUKKyAgICAgICAgICAg
ICAgIGltYWdlIGhhcyBleGl0aW5nIGxheW91dC4KKyAgICAgICAgICAgIC0tIHJlcGFpbnQgdGhl
IGltYWdlIHJlY3RhbmdsZSBpZiBsYXlvdXQgaXMgbm90IG5lZWRlZC4KKyAgICAgICAgICAgIAor
ICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIHJlbW92ZXMgdGhlIGNhbGwgdG8gY29tcHV0ZUxvZ2lj
YWxXaWR0aEluUmVnaW9uKCksIHdoaWNoIGlzCisgICAgICAgIGFsbW9zdCBydW5uaW5nIGEgbGF5
b3V0IGZvciB0aGUgaW1hZ2UuIFRoaXMgY2FsbCBmaWd1cmVzIG91dCB3aGV0aGVyIHRoZSBpbWFn
ZQorICAgICAgICBuZWVkcyB0byBzZXROZWVkc0xheW91dCgpLiBUaGlzIGNhbGwgaXMgdW5uZWNl
c3Nhcnk7IHRoZSBpbWFnZSBuZWVkcyB0byBydW4gYQorICAgICAgICBsYXlvdXQgaWYgdGhlIGlu
dHJpbnNpYyBzaXplIGhhcyBjaGFuZ2VkIGFuZCBpdCBhZmZlY3RzIHRoZSBzaXplIG9mIHRoZSBp
bWFnZS4KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFRlc3Q6IHN2Zy9hcy1pbWFnZS9z
dmctbm8taW50cmluc2ljLXNpemUtc3dpdGNoaW5nLmh0bWwKKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6c3R5bGVE
aWRDaGFuZ2UpOiBDaGFuZ2UgdGhlIGZ1bmN0aW9uIGNhbGwuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKTogUmVuYW1lIGxvY2FsIHZhcmlhYmxlIGFuZCBjaGFu
Z2UgdGhlCisgICAgICAgIGZ1bmN0aW9uIGNhbGwuCisgICAgICAgIAorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2U6OnVwZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZCk6IFNpbXBsaWZ5IHRo
aXMgZnVuY3Rpb24uCisgICAgICAgIENhbGwgc2V0SW50cmluc2ljU2l6ZSgpIHdpdGggdGhlIG5l
dyBzaXplIHVubGVzcyB0aGUgaW1hZ2UgaXMgaW4gZXJyb3Igc3RhdGUuCisgICAgICAgIAorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnJlcGFpbnRPck1hcmtGb3JMYXlvdXQpOiBUaGlz
IGEgYmV0dGVyIG5hbWUgZm9yIHRoaXMKKyAgICAgICAgZnVuY3Rpb24gc2luY2UgaXQgaXMgY2Fs
bGVkIGV2ZW4gaWYgdGhlIGludHJpbnNpYyBzaXplIHdhcyBub3QgY2hhbmdlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZURpbWVuc2lvbnNDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6IFJlbmFtZSBpbWFn
ZURpbWVuc2lvbnNDaGFuZ2VkKCkgYW5kIGNoYW5nZSB0aGUgCisgICAgICAgIHVwZGF0ZUludHJp
bnNpY1NpemVJZk5lZWRlZCgpIHRvIHJldHVybiB2b2lkLgorICAgICAgICAKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6cGFpbnQpOiBDb2RlIGNsZWFudXAuIFRoaXMgZnVu
Y3Rpb24gY2FuCisgICAgICAgIG9ubHkgaGFuZGxlIHRoZSBwYWludCBwaGFzZXMgUGFpbnRQaGFz
ZUZvcmVncm91bmQgYW5kIFBhaW50UGhhc2VTZWxlY3Rpb24uCisgICAgICAgIFVzZSB0aGlzIGlu
Zm9ybWF0aW9uIHRvIHNpbXBsaWZ5IHRoZSBsb2dpYyBhbmQgb3JkZXIgb2YgcGFpbnRpbmcgdGhl
cmUuCisKIDIwMTUtMDMtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTWFjXVtpT1NdIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKCkgLyBzdG9wU2hhcmVk
VGltZXIoKSBhcmUgZXhwZW5zaXZlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAJKHJldmlzaW9uIDE4MTUxMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw3ICsxODAsNyBAQCBJbnRT
aXplIFJlbmRlckltYWdlOjppbWFnZVNpemVGb3JFcnJvcihDCiAKIC8vIFNldHMgdGhlIGltYWdl
IGhlaWdodCBhbmQgd2lkdGggdG8gZml0IHRoZSBhbHQgdGV4dC4gIFJldHVybnMgdHJ1ZSBpZiB0
aGUKIC8vIGltYWdlIHNpemUgY2hhbmdlZC4KLWJvb2wgUmVuZGVySW1hZ2U6OnNldEltYWdlU2l6
ZUZvckFsdFRleHQoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlIC8qID0gMCAqLykKK0ltYWdlU2l6ZUNo
YW5nZVR5cGUgUmVuZGVySW1hZ2U6OnNldEltYWdlU2l6ZUZvckFsdFRleHQoQ2FjaGVkSW1hZ2Uq
IG5ld0ltYWdlIC8qID0gMCAqLykKIHsKICAgICBJbnRTaXplIGltYWdlU2l6ZTsKICAgICBpZiAo
bmV3SW1hZ2UgJiYgbmV3SW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIodGhpcykpCkBAIC0xOTgsMTAg
KzE5OCwxMCBAQCBib29sIFJlbmRlckltYWdlOjpzZXRJbWFnZVNpemVGb3JBbHRUZXh0CiAgICAg
fQogCiAgICAgaWYgKGltYWdlU2l6ZSA9PSBpbnRyaW5zaWNTaXplKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEltYWdlU2l6ZUNoYW5nZU5vbmU7CiAKICAgICBzZXRJ
bnRyaW5zaWNTaXplKGltYWdlU2l6ZSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIElt
YWdlU2l6ZUNoYW5nZUZvckFsdFRleHQ7CiB9CiAKIHZvaWQgUmVuZGVySW1hZ2U6OnN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUp
CkBAIC0yMDksMTIgKzIwOSwxMiBAQCB2b2lkIFJlbmRlckltYWdlOjpzdHlsZURpZENoYW5nZShT
dHlsZURpCiAgICAgUmVuZGVyUmVwbGFjZWQ6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxl
KTsKICAgICBpZiAobV9uZWVkc1RvU2V0U2l6ZUZvckFsdFRleHQpIHsKICAgICAgICAgaWYgKCFt
X2FsdFRleHQuaXNFbXB0eSgpICYmIHNldEltYWdlU2l6ZUZvckFsdFRleHQoaW1hZ2VSZXNvdXJj
ZSgpLmNhY2hlZEltYWdlKCkpKQotICAgICAgICAgICAgaW1hZ2VEaW1lbnNpb25zQ2hhbmdlZCh0
cnVlIC8qIGltYWdlU2l6ZUNoYW5nZWQgKi8pOworICAgICAgICAgICAgcmVwYWludE9yTWFya0Zv
ckxheW91dChJbWFnZVNpemVDaGFuZ2VGb3JBbHRUZXh0KTsKICAgICAgICAgbV9uZWVkc1RvU2V0
U2l6ZUZvckFsdFRleHQgPSBmYWxzZTsKICAgICB9CiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklF
TlRBVElPTikKICAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VMYXlvdXQgJiYgb2xkU3R5
bGUtPmltYWdlT3JpZW50YXRpb24oKSAhPSBzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSkKLSAg
ICAgICAgcmV0dXJuIGltYWdlRGltZW5zaW9uc0NoYW5nZWQodHJ1ZSAvKiBpbWFnZVNpemVDaGFu
Z2VkICovKTsKKyAgICAgICAgcmV0dXJuIHJlcGFpbnRPck1hcmtGb3JMYXlvdXQoSW1hZ2VTaXpl
Q2hhbmdlRm9yQWx0VGV4dCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xV
VElPTikKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpzdHlsZURpZENoYW5n
ZShTdHlsZURpCiAgICAgICAgICYmIChvbGRTdHlsZS0+aW1hZ2VSZXNvbHV0aW9uKCkgIT0gc3R5
bGUoKS5pbWFnZVJlc29sdXRpb24oKQogICAgICAgICAgICAgfHwgb2xkU3R5bGUtPmltYWdlUmVz
b2x1dGlvblNuYXAoKSAhPSBzdHlsZSgpLmltYWdlUmVzb2x1dGlvblNuYXAoKQogICAgICAgICAg
ICAgfHwgb2xkU3R5bGUtPmltYWdlUmVzb2x1dGlvblNvdXJjZSgpICE9IHN0eWxlKCkuaW1hZ2VS
ZXNvbHV0aW9uU291cmNlKCkpKQotICAgICAgICBpbWFnZURpbWVuc2lvbnNDaGFuZ2VkKHRydWUg
LyogaW1hZ2VTaXplQ2hhbmdlZCAqLyk7CisgICAgICAgIHJlcGFpbnRPck1hcmtGb3JMYXlvdXQo
SW1hZ2VTaXplQ2hhbmdlRm9yQWx0VGV4dDsKICNlbmRpZgogfQogCkBAIC0yNDYsNyArMjQ2LDcg
QEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbQogICAgICAgICBtX2Rp
ZEluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQaXhlbENvdW50ID0gdHJ1ZTsKICAgICB9CiAKLSAg
ICBib29sIGltYWdlU2l6ZUNoYW5nZWQgPSBmYWxzZTsKKyAgICBJbWFnZVNpemVDaGFuZ2VUeXBl
IGltYWdlU2l6ZUNoYW5nZSA9IEltYWdlU2l6ZUNoYW5nZU5vbmU7CiAKICAgICAvLyBTZXQgaW1h
Z2UgZGltZW5zaW9ucywgdGFraW5nIGludG8gYWNjb3VudCB0aGUgc2l6ZSBvZiB0aGUgYWx0IHRl
eHQuCiAgICAgaWYgKGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkpIHsKQEAgLTI1OCwy
MCArMjU4LDE3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW0KICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpbWFn
ZVNpemVDaGFuZ2VkID0gc2V0SW1hZ2VTaXplRm9yQWx0VGV4dChpbWFnZVJlc291cmNlKCkuY2Fj
aGVkSW1hZ2UoKSk7CisgICAgICAgIGltYWdlU2l6ZUNoYW5nZSA9IHNldEltYWdlU2l6ZUZvckFs
dFRleHQoaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCkpOwogICAgIH0KIAotICAgIGltYWdl
RGltZW5zaW9uc0NoYW5nZWQoaW1hZ2VTaXplQ2hhbmdlZCwgcmVjdCk7CisgICAgcmVwYWludE9y
TWFya0ZvckxheW91dChpbWFnZVNpemVDaGFuZ2UsIHJlY3QpOwogfQogCi1ib29sIFJlbmRlcklt
YWdlOjp1cGRhdGVJbnRyaW5zaWNTaXplSWZOZWVkZWQoY29uc3QgTGF5b3V0U2l6ZSYgbmV3U2l6
ZSwgYm9vbCBpbWFnZVNpemVDaGFuZ2VkKQordm9pZCBSZW5kZXJJbWFnZTo6dXBkYXRlSW50cmlu
c2ljU2l6ZUlmTmVlZGVkKGNvbnN0IExheW91dFNpemUmIG5ld1NpemUpCiB7Ci0gICAgaWYgKG5l
d1NpemUgPT0gaW50cmluc2ljU2l6ZSgpICYmICFpbWFnZVNpemVDaGFuZ2VkKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkpCi0g
ICAgICAgIHJldHVybiBpbWFnZVNpemVDaGFuZ2VkOworICAgIGlmIChpbWFnZVJlc291cmNlKCku
ZXJyb3JPY2N1cnJlZCgpIHx8ICFtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkpCisgICAgICAg
IHJldHVybjsKICAgICBzZXRJbnRyaW5zaWNTaXplKG5ld1NpemUpOwotICAgIHJldHVybiB0cnVl
OwogfQogCiB2b2lkIFJlbmRlckltYWdlOjp1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCkKQEAgLTI4
Miw3ICsyNzksNyBAQCB2b2lkIFJlbmRlckltYWdlOjp1cGRhdGVJbm5lckNvbnRlbnRSZWN0CiAg
ICAgICAgIGltYWdlUmVzb3VyY2UoKS5zZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29udGFp
bmVyU2l6ZSk7CiB9CiAKLXZvaWQgUmVuZGVySW1hZ2U6OmltYWdlRGltZW5zaW9uc0NoYW5nZWQo
Ym9vbCBpbWFnZVNpemVDaGFuZ2VkLCBjb25zdCBJbnRSZWN0KiByZWN0KQordm9pZCBSZW5kZXJJ
bWFnZTo6cmVwYWludE9yTWFya0ZvckxheW91dChJbWFnZVNpemVDaGFuZ2VUeXBlIGltYWdlU2l6
ZUNoYW5nZSwgY29uc3QgSW50UmVjdCogcmVjdCkKIHsKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JF
U09MVVRJT04pCiAgICAgZG91YmxlIHNjYWxlID0gc3R5bGUoKS5pbWFnZVJlc29sdXRpb24oKTsK
QEAgLTI5MCwxMCArMjg3LDEzIEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlRGltZW5zaW9uc0No
YW5nZWQKICAgICAgICAgc2NhbGUgPSByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb248aW50Pihz
Y2FsZSk7CiAgICAgaWYgKHNjYWxlIDw9IDApCiAgICAgICAgIHNjYWxlID0gMTsKLSAgICBib29s
IGludHJpbnNpY1NpemVDaGFuZ2VkID0gdXBkYXRlSW50cmluc2ljU2l6ZUlmTmVlZGVkKGltYWdl
UmVzb3VyY2UoKS5pbnRyaW5zaWNTaXplKHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpIC8gc2NhbGUp
LCBpbWFnZVNpemVDaGFuZ2VkKTsKKyAgICBMYXlvdXRTaXplIG5ld0ludHJpbnNpY1NpemUgPSBp
bWFnZVJlc291cmNlKCkuaW50cmluc2ljU2l6ZShzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSAvIHNj
YWxlKTsKICNlbHNlCi0gICAgYm9vbCBpbnRyaW5zaWNTaXplQ2hhbmdlZCA9IHVwZGF0ZUludHJp
bnNpY1NpemVJZk5lZWRlZChpbWFnZVJlc291cmNlKCkuaW50cmluc2ljU2l6ZShzdHlsZSgpLmVm
ZmVjdGl2ZVpvb20oKSksIGltYWdlU2l6ZUNoYW5nZWQpOworICAgIExheW91dFNpemUgbmV3SW50
cmluc2ljU2l6ZSA9IGltYWdlUmVzb3VyY2UoKS5pbnRyaW5zaWNTaXplKHN0eWxlKCkuZWZmZWN0
aXZlWm9vbSgpKTsKICNlbmRpZgorICAgIExheW91dFNpemUgb2xkSW50cmluc2ljU2l6ZSA9IGlu
dHJpbnNpY1NpemUoKTsKKworICAgIHVwZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZChuZXdJbnRy
aW5zaWNTaXplKTsKIAogICAgIC8vIEluIHRoZSBjYXNlIG9mIGdlbmVyYXRlZCBpbWFnZSBjb250
ZW50IHVzaW5nIDpiZWZvcmUvOmFmdGVyL2NvbnRlbnQsIHdlIG1pZ2h0IG5vdCBiZQogICAgIC8v
IGluIHRoZSByZW5kZXIgdHJlZSB5ZXQuIEluIHRoYXQgY2FzZSwgd2UganVzdCBuZWVkIHRvIHVw
ZGF0ZSBvdXIgaW50cmluc2ljIHNpemUuCkBAIC0zMDIsNjYgKzMwMiw1NSBAQCB2b2lkIFJlbmRl
ckltYWdlOjppbWFnZURpbWVuc2lvbnNDaGFuZ2VkCiAgICAgaWYgKCFjb250YWluaW5nQmxvY2so
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91bGRSZXBhaW50ID0gdHJ1ZTsKLSAg
ICBpZiAoaW50cmluc2ljU2l6ZUNoYW5nZWQpIHsKLSAgICAgICAgaWYgKCFwcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzRGlydHkoKSkKLSAgICAgICAgICAgIHNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNE
aXJ0eSh0cnVlKTsKLQotICAgICAgICBib29sIGhhc092ZXJyaWRlU2l6ZSA9IGhhc092ZXJyaWRl
SGVpZ2h0KCkgfHwgaGFzT3ZlcnJpZGVXaWR0aCgpOwotICAgICAgICBpZiAoIWhhc092ZXJyaWRl
U2l6ZSAmJiAhaW1hZ2VTaXplQ2hhbmdlZCkgewotICAgICAgICAgICAgTG9naWNhbEV4dGVudENv
bXB1dGVkVmFsdWVzIGNvbXB1dGVkVmFsdWVzOwotICAgICAgICAgICAgY29tcHV0ZUxvZ2ljYWxX
aWR0aEluUmVnaW9uKGNvbXB1dGVkVmFsdWVzKTsKLSAgICAgICAgICAgIExheW91dFVuaXQgbmV3
V2lkdGggPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudDsKLSAgICAgICAgICAgIGNvbXB1dGVMb2dp
Y2FsSGVpZ2h0KGhlaWdodCgpLCAwLCBjb21wdXRlZFZhbHVlcyk7Ci0gICAgICAgICAgICBMYXlv
dXRVbml0IG5ld0hlaWdodCA9IGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50OworICAgIGJvb2wgaW1h
Z2VTb3VyY2VIYXNDaGFuZ2VkU2l6ZSA9IG9sZEludHJpbnNpY1NpemUgIT0gbmV3SW50cmluc2lj
U2l6ZSB8fCBpbWFnZVNpemVDaGFuZ2UgIT0gSW1hZ2VTaXplQ2hhbmdlTm9uZTsKIAotICAgICAg
ICAgICAgaW1hZ2VTaXplQ2hhbmdlZCA9IHdpZHRoKCkgIT0gbmV3V2lkdGggfHwgaGVpZ2h0KCkg
IT0gbmV3SGVpZ2h0OwotICAgICAgICB9CisgICAgaWYgKGltYWdlU291cmNlSGFzQ2hhbmdlZFNp
emUpCisgICAgICAgIHNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSh0cnVlKTsKIAotICAg
ICAgICAvLyBGSVhNRTogV2Ugb25seSBuZWVkIHRvIHJlY29tcHV0ZSB0aGUgY29udGFpbmluZyBi
bG9jaydzIHByZWZlcnJlZCBzaXplCi0gICAgICAgIC8vIGlmIHRoZSBjb250YWluaW5nIGJsb2Nr
J3Mgc2l6ZSBkZXBlbmRzIG9uIHRoZSBpbWFnZSdzIHNpemUgKGkuZS4sIHRoZSBjb250YWluZXIg
dXNlcyBzaHJpbmstdG8tZml0IHNpemluZykuCi0gICAgICAgIC8vIFRoZXJlJ3Mgbm8gZWFzeSB3
YXkgdG8gZGV0ZWN0IHRoYXQgc2hyaW5rLXRvLWZpdCBpcyBuZWVkZWQsIGFsd2F5cyBmb3JjZSBh
IGxheW91dC4KLSAgICAgICAgYm9vbCBjb250YWluaW5nQmxvY2tOZWVkc1RvUmVjb21wdXRlUHJl
ZmVycmVkU2l6ZSA9Ci0gICAgICAgICAgICBzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzUGVyY2Vu
dCgpCi0gICAgICAgICAgICB8fCBzdHlsZSgpLmxvZ2ljYWxNYXhXaWR0aCgpLmlzUGVyY2VudCgp
Ci0gICAgICAgICAgICB8fCBzdHlsZSgpLmxvZ2ljYWxNaW5XaWR0aCgpLmlzUGVyY2VudCgpOwot
Ci0gICAgICAgIGJvb2wgbGF5b3V0U2l6ZURlcGVuZHNPbkludHJpbnNpY1NpemUgPSBzdHlsZSgp
LmFzcGVjdFJhdGlvVHlwZSgpID09IEFzcGVjdFJhdGlvRnJvbUludHJpbnNpYzsKLQotICAgICAg
ICBpZiAoaW1hZ2VTaXplQ2hhbmdlZCB8fCBoYXNPdmVycmlkZVNpemUgfHwgY29udGFpbmluZ0Js
b2NrTmVlZHNUb1JlY29tcHV0ZVByZWZlcnJlZFNpemUgfHwgbGF5b3V0U2l6ZURlcGVuZHNPbklu
dHJpbnNpY1NpemUpIHsKLSAgICAgICAgICAgIHNob3VsZFJlcGFpbnQgPSBmYWxzZTsKLSAgICAg
ICAgICAgIGlmICghc2VsZk5lZWRzTGF5b3V0KCkpCi0gICAgICAgICAgICAgICAgc2V0TmVlZHNM
YXlvdXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChldmVySGFkTGF5b3V0KCkgJiYgIXNl
bGZOZWVkc0xheW91dCgpKSB7Ci0gICAgICAgICAgICAvLyBUaGUgaW5uZXIgY29udGVudCByZWN0
YW5nbGUgaXMgY2FsY3VsYXRlZCBkdXJpbmcgbGF5b3V0LCBidXQgbWF5IG5lZWQgYW4gdXBkYXRl
IG5vdwotICAgICAgICAgICAgLy8gKHVubGVzcyB0aGUgYm94IGhhcyBhbHJlYWR5IGJlZW4gc2No
ZWR1bGVkIGZvciBsYXlvdXQpLiBJbiBvcmRlciB0byBjYWxjdWxhdGUgaXQsIHdlCi0gICAgICAg
ICAgICAvLyBtYXkgbmVlZCB2YWx1ZXMgZnJvbSB0aGUgY29udGFpbmluZyBibG9jaywgdGhvdWdo
LCBzbyBtYWtlIHN1cmUgdGhhdCB3ZSdyZSBub3QgdG9vCi0gICAgICAgICAgICAvLyBlYXJseS4g
SXQgbWF5IGJlIHRoYXQgbGF5b3V0IGhhc24ndCBldmVuIHRha2VuIHBsYWNlIG9uY2UgeWV0Lgot
Ci0gICAgICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIG5vdCBoYXZlIHRvIHRyaWdnZXIgYW5v
dGhlciBjYWxsIHRvIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcigpCi0gICAgICAgICAgICAv
LyBmcm9tIGhlcmUsIHNpbmNlIGl0J3MgYWxyZWFkeSBiZWluZyBkb25lIGR1cmluZyBsYXlvdXQu
Ci0gICAgICAgICAgICB1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCk7Ci0gICAgICAgIH0KKyAgICAv
LyBJZiB0aGUgYWN0dWFsIGFyZWEgb2NjdXBpZWQgYnkgdGhlIGltYWdlIGhhcyBjaGFuZ2VkIGFu
ZCBpdCBpcyBub3QgY29uc3RyYWluZWQgYnkgc3R5bGUgdGhlbiBhIGxheW91dCBpcyByZXF1aXJl
ZC4KKyAgICBib29sIGltYWdlU2l6ZUlzQ29uc3RyYWluZWQgPSBzdHlsZSgpLmxvZ2ljYWxXaWR0
aCgpLmlzU3BlY2lmaWVkKCkgJiYgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNTcGVjaWZpZWQo
KTsKKyAgICBib29sIG5lZWRzTGF5b3V0ID0gIWltYWdlU2l6ZUlzQ29uc3RyYWluZWQgJiYgaW1h
Z2VTb3VyY2VIYXNDaGFuZ2VkU2l6ZTsKKworICAgIC8vIEZJWE1FOiBXZSBvbmx5IG5lZWQgdG8g
cmVjb21wdXRlIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgcHJlZmVycmVkIHNpemUKKyAgICAvLyBp
ZiB0aGUgY29udGFpbmluZyBibG9jaydzIHNpemUgZGVwZW5kcyBvbiB0aGUgaW1hZ2UncyBzaXpl
IChpLmUuLCB0aGUgY29udGFpbmVyIHVzZXMgc2hyaW5rLXRvLWZpdCBzaXppbmcpLgorICAgIC8v
IFRoZXJlJ3Mgbm8gZWFzeSB3YXkgdG8gZGV0ZWN0IHRoYXQgc2hyaW5rLXRvLWZpdCBpcyBuZWVk
ZWQsIGFsd2F5cyBmb3JjZSBhIGxheW91dC4KKyAgICBib29sIGNvbnRhaW5pbmdCbG9ja05lZWRz
VG9SZWNvbXB1dGVQcmVmZXJyZWRTaXplID0KKyAgICAgICAgc3R5bGUoKS5sb2dpY2FsV2lkdGgo
KS5pc1BlcmNlbnQoKQorICAgICAgICB8fCBzdHlsZSgpLmxvZ2ljYWxNYXhXaWR0aCgpLmlzUGVy
Y2VudCgpCisgICAgICAgIHx8IHN0eWxlKCkubG9naWNhbE1pbldpZHRoKCkuaXNQZXJjZW50KCk7
CisKKyAgICBib29sIGxheW91dFNpemVEZXBlbmRzT25JbnRyaW5zaWNTaXplID0gc3R5bGUoKS5h
c3BlY3RSYXRpb1R5cGUoKSA9PSBBc3BlY3RSYXRpb0Zyb21JbnRyaW5zaWM7CisKKyAgICBpZiAo
bmVlZHNMYXlvdXQgfHwgY29udGFpbmluZ0Jsb2NrTmVlZHNUb1JlY29tcHV0ZVByZWZlcnJlZFNp
emUgfHwgbGF5b3V0U2l6ZURlcGVuZHNPbkludHJpbnNpY1NpemUpIHsKKyAgICAgICAgc2V0TmVl
ZHNMYXlvdXQoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChzaG91bGRSZXBh
aW50KSB7Ci0gICAgICAgIExheW91dFJlY3QgcmVwYWludFJlY3Q7Ci0gICAgICAgIGlmIChyZWN0
KSB7Ci0gICAgICAgICAgICAvLyBUaGUgaW1hZ2UgY2hhbmdlZCByZWN0IGlzIGluIHNvdXJjZSBp
bWFnZSBjb29yZGluYXRlcyAocHJlLXpvb21pbmcpLAotICAgICAgICAgICAgLy8gc28gbWFwIGZy
b20gdGhlIGJvdW5kcyBvZiB0aGUgaW1hZ2UgdG8gdGhlIGNvbnRlbnRzQm94LgotICAgICAgICAg
ICAgcmVwYWludFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1hcFJlY3QoKnJlY3QsIEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIGltYWdlUmVzb3VyY2UoKS5pbWFnZVNpemUoMS4wZikpLCBjb250ZW50
Qm94UmVjdCgpKSk7Ci0gICAgICAgICAgICAvLyBHdWFyZCBhZ2FpbnN0IHRvby1sYXJnZSBjaGFu
Z2VkIHJlY3RzLgotICAgICAgICAgICAgcmVwYWludFJlY3QuaW50ZXJzZWN0KGNvbnRlbnRCb3hS
ZWN0KCkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlcGFpbnRSZWN0ID0gY29udGVu
dEJveFJlY3QoKTsKKyAgICBpZiAoZXZlckhhZExheW91dCgpICYmICFzZWxmTmVlZHNMYXlvdXQo
KSkgeworICAgICAgICAvLyBUaGUgaW5uZXIgY29udGVudCByZWN0YW5nbGUgaXMgY2FsY3VsYXRl
ZCBkdXJpbmcgbGF5b3V0LCBidXQgbWF5IG5lZWQgYW4gdXBkYXRlIG5vdworICAgICAgICAvLyAo
dW5sZXNzIHRoZSBib3ggaGFzIGFscmVhZHkgYmVlbiBzY2hlZHVsZWQgZm9yIGxheW91dCkuIElu
IG9yZGVyIHRvIGNhbGN1bGF0ZSBpdCwgd2UKKyAgICAgICAgLy8gbWF5IG5lZWQgdmFsdWVzIGZy
b20gdGhlIGNvbnRhaW5pbmcgYmxvY2ssIHRob3VnaCwgc28gbWFrZSBzdXJlIHRoYXQgd2UncmUg
bm90IHRvbworICAgICAgICAvLyBlYXJseS4gSXQgbWF5IGJlIHRoYXQgbGF5b3V0IGhhc24ndCBl
dmVuIHRha2VuIHBsYWNlIG9uY2UgeWV0LgorCisgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQg
bm90IGhhdmUgdG8gdHJpZ2dlciBhbm90aGVyIGNhbGwgdG8gc2V0Q29udGFpbmVyU2l6ZUZvclJl
bmRlcmVyKCkKKyAgICAgICAgLy8gZnJvbSBoZXJlLCBzaW5jZSBpdCdzIGFscmVhZHkgYmVpbmcg
ZG9uZSBkdXJpbmcgbGF5b3V0LgorICAgICAgICB1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCk7Cisg
ICAgfQorCisgICAgTGF5b3V0UmVjdCByZXBhaW50UmVjdDsKKyAgICBpZiAocmVjdCkgeworICAg
ICAgICAvLyBUaGUgaW1hZ2UgY2hhbmdlZCByZWN0IGlzIGluIHNvdXJjZSBpbWFnZSBjb29yZGlu
YXRlcyAocHJlLXpvb21pbmcpLAorICAgICAgICAvLyBzbyBtYXAgZnJvbSB0aGUgYm91bmRzIG9m
IHRoZSBpbWFnZSB0byB0aGUgY29udGVudHNCb3guCisgICAgICAgIHJlcGFpbnRSZWN0ID0gZW5j
bG9zaW5nSW50UmVjdChtYXBSZWN0KCpyZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFn
ZVJlc291cmNlKCkuaW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJveFJlY3QoKSkpOworICAgICAg
ICAvLyBHdWFyZCBhZ2FpbnN0IHRvby1sYXJnZSBjaGFuZ2VkIHJlY3RzLgorICAgICAgICByZXBh
aW50UmVjdC5pbnRlcnNlY3QoY29udGVudEJveFJlY3QoKSk7CisgICAgfSBlbHNlCisgICAgICAg
IHJlcGFpbnRSZWN0ID0gY29udGVudEJveFJlY3QoKTsKICAgICAgICAgCi0gICAgICAgIHJlcGFp
bnRSZWN0YW5nbGUocmVwYWludFJlY3QpOworICAgIHJlcGFpbnRSZWN0YW5nbGUocmVwYWludFJl
Y3QpOwogCi0gICAgICAgIC8vIFRlbGwgYW55IHBvdGVudGlhbCBjb21wb3NpdGluZyBsYXllcnMg
dGhhdCB0aGUgaW1hZ2UgbmVlZHMgdXBkYXRpbmcuCi0gICAgICAgIGNvbnRlbnRDaGFuZ2VkKElt
YWdlQ2hhbmdlZCk7Ci0gICAgfQorICAgIC8vIFRlbGwgYW55IHBvdGVudGlhbCBjb21wb3NpdGlu
ZyBsYXllcnMgdGhhdCB0aGUgaW1hZ2UgbmVlZHMgdXBkYXRpbmcuCisgICAgY29udGVudENoYW5n
ZWQoSW1hZ2VDaGFuZ2VkKTsKIH0KIAogdm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UqIG5ld0ltYWdlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmgJKHJldmlzaW9uIDE4MTUxMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywxMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBIVE1MQXJlYUVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVu
dDsKIAorZW51bSBJbWFnZVNpemVDaGFuZ2VUeXBlIHsKKyAgICBJbWFnZVNpemVDaGFuZ2VOb25l
LAorICAgIEltYWdlU2l6ZUNoYW5nZUZvckFsdFRleHQKK307CisKIGNsYXNzIFJlbmRlckltYWdl
IDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKICAgICBSZW5kZXJJbWFnZShFbGVt
ZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmLCBTdHlsZUltYWdlKiA9IG51bGxwdHIsIGNvbnN0IGZs
b2F0ID0gMS4wZik7CkBAIC00Myw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZW5kZXJJ
bWFnZVJlc291cmNlJiBpbWFnZVJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gKm1faW1hZ2VSZXNv
dXJjZTsgfQogICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGlt
YWdlUmVzb3VyY2UoKS5jYWNoZWRJbWFnZSgpOyB9CiAKLSAgICBib29sIHNldEltYWdlU2l6ZUZv
ckFsdFRleHQoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlID0gMCk7CisgICAgSW1hZ2VTaXplQ2hhbmdl
VHlwZSBzZXRJbWFnZVNpemVGb3JBbHRUZXh0KENhY2hlZEltYWdlKiBuZXdJbWFnZSA9IDApOwog
CiAgICAgdm9pZCB1cGRhdGVBbHRUZXh0KCk7CiAKQEAgLTEwNyw4ICsxMTIsOCBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBzaGFkb3dDb250cm9sc05lZWRDdXN0b21MYXlvdXRNZXRyaWNz
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIEludFNpemUgaW1hZ2VTaXplRm9yRXJy
b3IoQ2FjaGVkSW1hZ2UqKSBjb25zdDsKLSAgICB2b2lkIGltYWdlRGltZW5zaW9uc0NoYW5nZWQo
Ym9vbCBpbWFnZVNpemVDaGFuZ2VkLCBjb25zdCBJbnRSZWN0KiA9IDApOwotICAgIGJvb2wgdXBk
YXRlSW50cmluc2ljU2l6ZUlmTmVlZGVkKGNvbnN0IExheW91dFNpemUmLCBib29sIGltYWdlU2l6
ZUNoYW5nZWQpOworICAgIHZvaWQgcmVwYWludE9yTWFya0ZvckxheW91dChJbWFnZVNpemVDaGFu
Z2VUeXBlLCBjb25zdCBJbnRSZWN0KiA9IDApOworICAgIHZvaWQgdXBkYXRlSW50cmluc2ljU2l6
ZUlmTmVlZGVkKGNvbnN0IExheW91dFNpemUmKTsKICAgICAvLyBVcGRhdGUgdGhlIHNpemUgb2Yg
dGhlIGltYWdlIHRvIGJlIHJlbmRlcmVkLiBPYmplY3QtZml0IG1heSBjYXVzZSB0aGlzIHRvIGJl
IGRpZmZlcmVudCBmcm9tIHRoZSBDU1MgYm94J3MgY29udGVudCByZWN0LgogICAgIHZvaWQgdXBk
YXRlSW5uZXJDb250ZW50UmVjdCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAJKHJldmlzaW9uIDE4
MTUxMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDEwIEBAIFNWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50JiBSZW5kZXJTVkdGb3JlaWcKIAogdm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogewotICAg
IGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpCi0gICAgICAgIHx8IChw
YWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNl
ICE9IFBhaW50UGhhc2VTZWxlY3Rpb24pKQorICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFp
bnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocGFpbnRJbmZvLnBo
YXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBo
YXNlU2VsZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBQYWludEluZm8gY2hpbGRQYWlu
dEluZm8ocGFpbnRJbmZvKTsKQEAgLTY1LDMwICs2NywzMCBAQCB2b2lkIFJlbmRlclNWR0ZvcmVp
Z25PYmplY3Q6OnBhaW50KFBhaW50CiAgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmNs
aXAobV92aWV3cG9ydCk7CiAKICAgICBTVkdSZW5kZXJpbmdDb250ZXh0IHJlbmRlcmluZ0NvbnRl
eHQ7Ci0gICAgYm9vbCBjb250aW51ZVJlbmRlcmluZyA9IHRydWU7CiAgICAgaWYgKHBhaW50SW5m
by5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkgewogICAgICAgICByZW5kZXJpbmdDb250
ZXh0LnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoKnRoaXMsIGNoaWxkUGFpbnRJbmZvKTsKLSAg
ICAgICAgY29udGludWVSZW5kZXJpbmcgPSByZW5kZXJpbmdDb250ZXh0LmlzUmVuZGVyaW5nUHJl
cGFyZWQoKTsKKyAgICAgICAgaWYgKCFyZW5kZXJpbmdDb250ZXh0LmlzUmVuZGVyaW5nUHJlcGFy
ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoY29udGludWVSZW5k
ZXJpbmcpIHsKLSAgICAgICAgLy8gUGFpbnQgYWxsIHBoYXNlcyBvZiBGTyBlbGVtZW50cyBhdG9t
aWNhbGx5LCBhcyB0aG91Z2ggdGhlIEZPIGVsZW1lbnQgZXN0YWJsaXNoZWQgaXRzCi0gICAgICAg
IC8vIG93biBzdGFja2luZyBjb250ZXh0LgotICAgICAgICBib29sIHByZXNlcnZlUGhhc2UgPSBw
YWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbiB8fCBwYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZVRleHRDbGlwOwotICAgICAgICBMYXlvdXRQb2ludCBjaGlsZFBvaW50ID0g
SW50UG9pbnQoKTsKLSAgICAgICAgY2hpbGRQYWludEluZm8ucGhhc2UgPSBwcmVzZXJ2ZVBoYXNl
ID8gcGFpbnRJbmZvLnBoYXNlIDogUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZDsKLSAgICAgICAg
UmVuZGVyQmxvY2s6OnBhaW50KGNoaWxkUGFpbnRJbmZvLCBJbnRQb2ludCgpKTsKLSAgICAgICAg
aWYgKCFwcmVzZXJ2ZVBoYXNlKSB7Ci0gICAgICAgICAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9
IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHM7Ci0gICAgICAgICAgICBSZW5kZXJCbG9j
azo6cGFpbnQoY2hpbGRQYWludEluZm8sIGNoaWxkUG9pbnQpOwotICAgICAgICAgICAgY2hpbGRQ
YWludEluZm8ucGhhc2UgPSBQYWludFBoYXNlRmxvYXQ7Ci0gICAgICAgICAgICBSZW5kZXJCbG9j
azo6cGFpbnQoY2hpbGRQYWludEluZm8sIGNoaWxkUG9pbnQpOwotICAgICAgICAgICAgY2hpbGRQ
YWludEluZm8ucGhhc2UgPSBQYWludFBoYXNlRm9yZWdyb3VuZDsKLSAgICAgICAgICAgIFJlbmRl
ckJsb2NrOjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQb2ludCk7Ci0gICAgICAgICAgICBj
aGlsZFBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VPdXRsaW5lOwotICAgICAgICAgICAgUmVu
ZGVyQmxvY2s6OnBhaW50KGNoaWxkUGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKLSAgICAgICAgfQor
ICAgIExheW91dFBvaW50IGNoaWxkUG9pbnQgPSBJbnRQb2ludCgpOworICAgIGlmIChwYWludElu
Zm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbikgeworICAgICAgICBSZW5kZXJCbG9jazo6
cGFpbnQoY2hpbGRQYWludEluZm8sIGNoaWxkUG9pbnQpOworICAgICAgICByZXR1cm47CiAgICAg
fQorCisgICAgLy8gUGFpbnQgYWxsIHBoYXNlcyBvZiBGTyBlbGVtZW50cyBhdG9taWNhbGx5LCBh
cyB0aG91Z2ggdGhlIEZPIGVsZW1lbnQgZXN0YWJsaXNoZWQgaXRzCisgICAgLy8gb3duIHN0YWNr
aW5nIGNvbnRleHQuCisgICAgY2hpbGRQYWludEluZm8ucGhhc2UgPSBQYWludFBoYXNlQmxvY2tC
YWNrZ3JvdW5kOworICAgIFJlbmRlckJsb2NrOjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQ
b2ludCk7CisgICAgY2hpbGRQYWludEluZm8ucGhhc2UgPSBQYWludFBoYXNlQ2hpbGRCbG9ja0Jh
Y2tncm91bmRzOworICAgIFJlbmRlckJsb2NrOjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQ
b2ludCk7CisgICAgY2hpbGRQYWludEluZm8ucGhhc2UgPSBQYWludFBoYXNlRmxvYXQ7CisgICAg
UmVuZGVyQmxvY2s6OnBhaW50KGNoaWxkUGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKKyAgICBjaGls
ZFBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VGb3JlZ3JvdW5kOworICAgIFJlbmRlckJsb2Nr
OjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQb2ludCk7CisgICAgY2hpbGRQYWludEluZm8u
cGhhc2UgPSBQYWludFBoYXNlT3V0bGluZTsKKyAgICBSZW5kZXJCbG9jazo6cGFpbnQoY2hpbGRQ
YWludEluZm8sIGNoaWxkUG9pbnQpOwogfQogCiBMYXlvdXRSZWN0IFJlbmRlclNWR0ZvcmVpZ25P
YmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODE2
NzQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxNS0wMy0xOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFN3aXRjaGluZyBiZXR3ZWVuIHR3byBTVkcgaW1hZ2VzIHdpdGggbm8g
aW50cmluc2ljIHNpemVzIGNhdXNlcyB0aGVtIHRvIGdldCB0aGUgZGVmYXVsdCBTVkcgc2l6ZSBp
bnN0ZWFkIG9mIHRoZSBjb250YWluZXIgc2l6ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjgwNS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN2Zy9hcy1pbWFnZS9zdmctbm8taW50cmluc2ljLXNp
emUtc3dpdGNoaW5nLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hcy1pbWFn
ZS9zdmctbm8taW50cmluc2ljLXNpemUtc3dpdGNoaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICBF
bnN1cmUgdGhhdCBzd2l0Y2hpbmcgdGhlIHNvdXJjZSBvZiBhbiA8aW1nPiBlbGVtZW50IGJldHdl
ZW4gdHdvIFNWRyBpbWFnZXMsCisgICAgICAgIHdoaWNoIGhhdmUgbm8gaW50cmluc2ljIHNpemVz
LCBnZXRzIHRoZSBpbWFnZSB0aGUgc2l6ZSBvZiB0aGUgY29udGFpbmVyIGFuZAorICAgICAgICBu
b3QgdGhlIGRlZmF1bHQgU1ZHIGludHJpbnNpYyBzaXplIHdoaWNoIGlzIDMwMHgxNTAgcGl4ZWxz
LgorCiAyMDE1LTAzLTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRnVuY3Rpb24gYm9kaWVzIHNob3VsZCBhbHdheXMgaW5jbHVkZSBicmFjZXMKSW5kZXg6
IExheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctbm8taW50cmluc2ljLXNpemUtc3dpdGNoaW5n
LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2
Zy1uby1pbnRyaW5zaWMtc2l6ZS1zd2l0Y2hpbmctZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctbm8taW50cmluc2ljLXNpemUtc3dpdGNo
aW5nLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgZGl2Lm91dGVyIHsKKyAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsKKyAgICB9CisgICAgZGl2LmlubmVyIHsKKyAgICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKKyAgICAgIGxlZnQ6IDc1cHg7CisgICAgICB0b3A6IDI1cHg7CisgICAgICB3aWR0
aDogMTUwcHg7CisgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBs
aW1lOworICAgIH0KKyAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGNsYXNzPSJv
dXRlciI+CisgICAgPGRpdiBjbGFzcz0iaW5uZXIiPjwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctbm8taW50cmluc2lj
LXNpemUtc3dpdGNoaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FzLWlt
YWdlL3N2Zy1uby1pbnRyaW5zaWMtc2l6ZS1zd2l0Y2hpbmcuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctbm8taW50cmluc2ljLXNpemUtc3dpdGNoaW5n
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgZGl2IHsKKyAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAg
fQorICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJjaGFuZ2VJbWFnZSgnb3Jhbmdl
JykiPgorICA8ZGl2PgorICAgIDxpbWcgaGVpZ2h0PSIxMDAiIGlkPSJpbWFnZV8xIiBvbmxvYWQ9
Im9ubG9hZEltYWdlKCkiPgorICA8L2Rpdj4KKyAgPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAKKyAgICBm
dW5jdGlvbiBvbmxvYWRJbWFnZSgpIHsKKyAgICAgIHZhciBjb2xvcnMgPSBbIm9yYW5nZSIsICJn
cmVlbiIsICJzYWxtb24iLCAieWVsbG93IiwgImdyZWVuIl07CisKKyAgICAgIGlmICh0eXBlb2Yg
b25sb2FkSW1hZ2UuY291bnRlciA9PSAndW5kZWZpbmVkJykKKyAgICAgICAgb25sb2FkSW1hZ2Uu
Y291bnRlciA9IDA7CisKKyAgICAgIGlmICgrK29ubG9hZEltYWdlLmNvdW50ZXIgPT0gY29sb3Jz
Lmxlbmd0aCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAg
Y2hhbmdlSW1hZ2UoY29sb3JzW29ubG9hZEltYWdlLmNvdW50ZXJdKTsKKyAgICB9ICAgIAorICAg
IGZ1bmN0aW9uIGNoYW5nZUltYWdlKG5hbWUpIHsKKyAgICAgIHZhciBpbWFnZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdpbWFnZV8xJyk7CisgICAgICBzd2l0Y2ggKG5hbWUpIHsKKyAgICAg
IGNhc2UgJ29yYW5nZSc6CisgICAgICAgIGltYWdlLnNyYyA9ICJkYXRhOmltYWdlL3N2Zyt4bWws
IFwKKyAgICAgICAgICA8c3ZnIHZlcnNpb249JzEuMScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjAwIDIwMCcgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAn
PiBcCisgICAgICAgICAgICA8cmVjdCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmaWxsPSdv
cmFuZ2UnLz4gXAorICAgICAgICAgICAgPHJlY3QgeD0nMjUlJyB5PScyNSUnIHdpZHRoPSc1MCUn
IGhlaWdodD0nNTAlJyBmaWxsPSdsaW1lJy8+IFwKKyAgICAgICAgICA8L3N2Zz4iOworICAgICAg
ICBicmVhazsKKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgaW1hZ2Uuc3JjID0gImRhdGE6aW1h
Z2Uvc3ZnK3htbCwgXAorICAgICAgICAgIDxzdmcgdmVyc2lvbj0nMS4xJyB4bWxucz0naHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmcnPiBcCisgICAgICAgICAgICA8cmVjdCB3aWR0aD0nMTAwJScg
aGVpZ2h0PScxMDAlJyBmaWxsPSciICsgbmFtZSArICInLz4gXAorICAgICAgICAgICAgPHJlY3Qg
eD0nMjUlJyB5PScyNSUnIHdpZHRoPSc1MCUnIGhlaWdodD0nNTAlJyBmaWxsPSdsaW1lJy8+IFwK
KyAgICAgICAgICA8L3N2Zz4iOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgIDwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248989</attachid>
            <date>2015-03-18 17:09:33 -0700</date>
            <delta_ts>2015-03-18 17:18:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142805-20150318170902.patch</filename>
            <type>text/plain</type>
            <size>22846</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE1LTAzLTE4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoaW5n
IGJldHdlZW4gdHdvIFNWRyBpbWFnZXMgd2l0aCBubyBpbnRyaW5zaWMgc2l6ZXMgY2F1c2VzIHRo
ZW0gdG8gZ2V0IHRoZSBkZWZhdWx0IFNWRyBzaXplIGluc3RlYWQgb2YgdGhlIGNvbnRhaW5lciBz
aXplLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQy
ODA1LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgVGhlIGJ1ZyBoYXBwZW5zIGR1ZSB0byB3cm9uZyBsb2dpYyBpbiBSZW5kZXJJbWFnZTo6
aW1hZ2VEaW1lbnNpb25zQ2hhbmdlZCgpLgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGRlY2lkZXMg
dG8gc2V0TmVlZHNMYXlvdXQoKSBpZiB0aGUgaW50cmluc2ljIHNpemUgb2YgdGhlIGltYWdlCisg
ICAgICAgIGNoYW5nZXMuIElmIHRoZSBzaXplIGRvZXMgbm90IGNoYW5nZSwgaXQgb25seSByZXBh
aW50cyB0aGUgaW1hZ2UgcmVjdGFuZ2xlLgorICAgICAgICBXaGVuIHN3aXRjaGluZyB0aGUgc3Jj
IG9mIHRoZSBhbiBpbWFnZSBiZXR3ZWVuIHR3byBTVkcgaW1hZ2VzIGFuZCBib3RoIG9mCisgICAg
ICAgIHRoZW0gaGF2ZSBubyBpbnRyaW5zaWMgc2l6ZSwgd2UgZG8gbm90IHVwZGF0ZUlubmVyQ29u
dGVudFJlY3QoKSBhbmQgdGhpcworICAgICAgICBtZWFucyBhbiBTVkdJbWFnZUZvckNvbnRhaW5l
ciBpcyBub3QgZ29pbmcgdG8gYmUgY3JlYXRlZCBmb3IgdGhpcyBpbWFnZS4KKyAgICAgICAgV2hl
biB0aGUgaW1hZ2UgaXMgZHJhd24sIGl0IGlzIGRyYXduIGRpcmVjdGx5IGZyb20gdGhlIFNWR0lt
YWdlLiBBbmQgdGhpcworICAgICAgICBtZWFucyB0aGUgZHJhd2luZyBoYXMgdG8gYmUgc2NhbGVk
IGJ5IGNvbnRhaW5lcl9zaXplIC8gU1ZHX2RlZmF1bHRfaW50cmluc2ljX3NpemUKKyAgICAgICAg
CisgICAgICAgIEFmdGVyIGZpZ3VyaW5nIG91dCB0aGF0IEkgbmVlZCB0byB1cGRhdGVJbm5lckNv
bnRlbnRSZWN0KCkgdG8gZml4IHRoaXMgYnVnLAorICAgICAgICBJIGZvdW5kIG91dCBCbGluayBo
YXMgYWxyZWFkeSBjaGFuZ2VkIHRoaXMgY29kZSB0byBkbyB0aGUgc2FtZSB0aGluZy4gQnV0IAor
ICAgICAgICB0aGV5IGFsc28gZGlkIG1vcmUgY2xlYW4tdXAgaW4gdGhpcyBmdW5jdGlvbi4gSGVy
ZSBpcyB0aGUgbGluaworICAgICAgICBodHRwczovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEx
NDMyMzAwNC4gSSB0aGluayB0aGVpciBjaGFuZ2Ugc2VlbXMgY29ycmVjdAorICAgICAgICBhbHRo
b3VnaCB0aGV5IGRpZCBub3Qgc2F5IHdoYXQgZXhhY3RseSB0aGV5IHdlcmUgdHJ5aW5nIHRvIGZp
eC4KKyAgICAgICAgCisgICAgICAgIFRoZSBwbGFuIGZvciByZXBhaW50T3JNYXJrRm9yTGF5b3V0
KCksIHdoaWNoIGlzIHRoZSBuZXcgbmFtZSBvZiB0aGlzIGZ1bmN0aW9uLAorICAgICAgICBpcyB0
aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgLS0gc2V0TmVlZExheW91dCgpIGlmIHRoZSBpbnRy
aW5zaWMgc2l6ZSBjaGFuZ2VzIGFuZCBpdCBhZmZlY3RzIHRoZSBzaXplCisgICAgICAgICAgICAg
ICBvZiB0aGUgaW1hZ2UuCisgICAgICAgICAgICAtLSB1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCkg
aWYgdGhlIGludHJpbnNpYyBzaXplIGRpZCBub3QgY2hhbmdlIGJ1dCB0aGUKKyAgICAgICAgICAg
ICAgIGltYWdlIGhhcyBleGl0aW5nIGxheW91dC4KKyAgICAgICAgICAgIC0tIHJlcGFpbnQgdGhl
IGltYWdlIHJlY3RhbmdsZSBpZiBsYXlvdXQgaXMgbm90IG5lZWRlZC4KKyAgICAgICAgICAgIAor
ICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIHJlbW92ZXMgdGhlIGNhbGwgdG8gY29tcHV0ZUxvZ2lj
YWxXaWR0aEluUmVnaW9uKCksIHdoaWNoIGlzCisgICAgICAgIGFsbW9zdCBydW5uaW5nIGEgbGF5
b3V0IGZvciB0aGUgaW1hZ2UuIFRoaXMgY2FsbCBmaWd1cmVzIG91dCB3aGV0aGVyIHRoZSBpbWFn
ZQorICAgICAgICBuZWVkcyB0byBzZXROZWVkc0xheW91dCgpLiBUaGlzIGNhbGwgaXMgdW5uZWNl
c3Nhcnk7IHRoZSBpbWFnZSBuZWVkcyB0byBydW4gYQorICAgICAgICBsYXlvdXQgaWYgdGhlIGlu
dHJpbnNpYyBzaXplIGhhcyBjaGFuZ2VkIGFuZCBpdCBhZmZlY3RzIHRoZSBzaXplIG9mIHRoZSBp
bWFnZS4KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFRlc3Q6IHN2Zy9hcy1pbWFnZS9z
dmctbm8taW50cmluc2ljLXNpemUtc3dpdGNoaW5nLmh0bWwKKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6c3R5bGVE
aWRDaGFuZ2UpOiBDaGFuZ2UgdGhlIGZ1bmN0aW9uIGNhbGwuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKTogUmVuYW1lIGxvY2FsIHZhcmlhYmxlIGFuZCBjaGFu
Z2UgdGhlCisgICAgICAgIGZ1bmN0aW9uIGNhbGwuCisgICAgICAgIAorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2U6OnVwZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZCk6IFNpbXBsaWZ5IHRo
aXMgZnVuY3Rpb24uCisgICAgICAgIENhbGwgc2V0SW50cmluc2ljU2l6ZSgpIHdpdGggdGhlIG5l
dyBzaXplIHVubGVzcyB0aGUgaW1hZ2UgaXMgaW4gZXJyb3Igc3RhdGUuCisgICAgICAgIAorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnJlcGFpbnRPck1hcmtGb3JMYXlvdXQpOiBUaGlz
IGEgYmV0dGVyIG5hbWUgZm9yIHRoaXMKKyAgICAgICAgZnVuY3Rpb24gc2luY2UgaXQgaXMgY2Fs
bGVkIGV2ZW4gaWYgdGhlIGludHJpbnNpYyBzaXplIHdhcyBub3QgY2hhbmdlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZURpbWVuc2lvbnNDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6IFJlbmFtZSBpbWFn
ZURpbWVuc2lvbnNDaGFuZ2VkKCkgYW5kIGNoYW5nZSB0aGUgCisgICAgICAgIHVwZGF0ZUludHJp
bnNpY1NpemVJZk5lZWRlZCgpIHRvIHJldHVybiB2b2lkLgorICAgICAgICAKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6cGFpbnQpOiBDb2RlIGNsZWFudXAuIFRoaXMgZnVu
Y3Rpb24gY2FuCisgICAgICAgIG9ubHkgaGFuZGxlIHRoZSBwYWludCBwaGFzZXMgUGFpbnRQaGFz
ZUZvcmVncm91bmQgYW5kIFBhaW50UGhhc2VTZWxlY3Rpb24uCisgICAgICAgIFVzZSB0aGlzIGlu
Zm9ybWF0aW9uIHRvIHNpbXBsaWZ5IHRoZSBsb2dpYyBhbmQgb3JkZXIgb2YgcGFpbnRpbmcgdGhl
cmUuCisKIDIwMTUtMDMtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTWFjXVtpT1NdIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKCkgLyBzdG9wU2hhcmVk
VGltZXIoKSBhcmUgZXhwZW5zaXZlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAJKHJldmlzaW9uIDE4MTUxMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw3ICsxODAsNyBAQCBJbnRT
aXplIFJlbmRlckltYWdlOjppbWFnZVNpemVGb3JFcnJvcihDCiAKIC8vIFNldHMgdGhlIGltYWdl
IGhlaWdodCBhbmQgd2lkdGggdG8gZml0IHRoZSBhbHQgdGV4dC4gIFJldHVybnMgdHJ1ZSBpZiB0
aGUKIC8vIGltYWdlIHNpemUgY2hhbmdlZC4KLWJvb2wgUmVuZGVySW1hZ2U6OnNldEltYWdlU2l6
ZUZvckFsdFRleHQoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlIC8qID0gMCAqLykKK0ltYWdlU2l6ZUNo
YW5nZVR5cGUgUmVuZGVySW1hZ2U6OnNldEltYWdlU2l6ZUZvckFsdFRleHQoQ2FjaGVkSW1hZ2Uq
IG5ld0ltYWdlIC8qID0gMCAqLykKIHsKICAgICBJbnRTaXplIGltYWdlU2l6ZTsKICAgICBpZiAo
bmV3SW1hZ2UgJiYgbmV3SW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIodGhpcykpCkBAIC0xOTgsMTAg
KzE5OCwxMCBAQCBib29sIFJlbmRlckltYWdlOjpzZXRJbWFnZVNpemVGb3JBbHRUZXh0CiAgICAg
fQogCiAgICAgaWYgKGltYWdlU2l6ZSA9PSBpbnRyaW5zaWNTaXplKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEltYWdlU2l6ZUNoYW5nZU5vbmU7CiAKICAgICBzZXRJ
bnRyaW5zaWNTaXplKGltYWdlU2l6ZSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIElt
YWdlU2l6ZUNoYW5nZUZvckFsdFRleHQ7CiB9CiAKIHZvaWQgUmVuZGVySW1hZ2U6OnN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUp
CkBAIC0yMDksMTIgKzIwOSwxMiBAQCB2b2lkIFJlbmRlckltYWdlOjpzdHlsZURpZENoYW5nZShT
dHlsZURpCiAgICAgUmVuZGVyUmVwbGFjZWQ6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxl
KTsKICAgICBpZiAobV9uZWVkc1RvU2V0U2l6ZUZvckFsdFRleHQpIHsKICAgICAgICAgaWYgKCFt
X2FsdFRleHQuaXNFbXB0eSgpICYmIHNldEltYWdlU2l6ZUZvckFsdFRleHQoaW1hZ2VSZXNvdXJj
ZSgpLmNhY2hlZEltYWdlKCkpKQotICAgICAgICAgICAgaW1hZ2VEaW1lbnNpb25zQ2hhbmdlZCh0
cnVlIC8qIGltYWdlU2l6ZUNoYW5nZWQgKi8pOworICAgICAgICAgICAgcmVwYWludE9yTWFya0Zv
ckxheW91dChJbWFnZVNpemVDaGFuZ2VGb3JBbHRUZXh0KTsKICAgICAgICAgbV9uZWVkc1RvU2V0
U2l6ZUZvckFsdFRleHQgPSBmYWxzZTsKICAgICB9CiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklF
TlRBVElPTikKICAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VMYXlvdXQgJiYgb2xkU3R5
bGUtPmltYWdlT3JpZW50YXRpb24oKSAhPSBzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSkKLSAg
ICAgICAgcmV0dXJuIGltYWdlRGltZW5zaW9uc0NoYW5nZWQodHJ1ZSAvKiBpbWFnZVNpemVDaGFu
Z2VkICovKTsKKyAgICAgICAgcmV0dXJuIHJlcGFpbnRPck1hcmtGb3JMYXlvdXQoSW1hZ2VTaXpl
Q2hhbmdlRm9yQWx0VGV4dCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xV
VElPTikKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpzdHlsZURpZENoYW5n
ZShTdHlsZURpCiAgICAgICAgICYmIChvbGRTdHlsZS0+aW1hZ2VSZXNvbHV0aW9uKCkgIT0gc3R5
bGUoKS5pbWFnZVJlc29sdXRpb24oKQogICAgICAgICAgICAgfHwgb2xkU3R5bGUtPmltYWdlUmVz
b2x1dGlvblNuYXAoKSAhPSBzdHlsZSgpLmltYWdlUmVzb2x1dGlvblNuYXAoKQogICAgICAgICAg
ICAgfHwgb2xkU3R5bGUtPmltYWdlUmVzb2x1dGlvblNvdXJjZSgpICE9IHN0eWxlKCkuaW1hZ2VS
ZXNvbHV0aW9uU291cmNlKCkpKQotICAgICAgICBpbWFnZURpbWVuc2lvbnNDaGFuZ2VkKHRydWUg
LyogaW1hZ2VTaXplQ2hhbmdlZCAqLyk7CisgICAgICAgIHJlcGFpbnRPck1hcmtGb3JMYXlvdXQo
SW1hZ2VTaXplQ2hhbmdlRm9yQWx0VGV4dDsKICNlbmRpZgogfQogCkBAIC0yNDYsNyArMjQ2LDcg
QEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbQogICAgICAgICBtX2Rp
ZEluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQaXhlbENvdW50ID0gdHJ1ZTsKICAgICB9CiAKLSAg
ICBib29sIGltYWdlU2l6ZUNoYW5nZWQgPSBmYWxzZTsKKyAgICBJbWFnZVNpemVDaGFuZ2VUeXBl
IGltYWdlU2l6ZUNoYW5nZSA9IEltYWdlU2l6ZUNoYW5nZU5vbmU7CiAKICAgICAvLyBTZXQgaW1h
Z2UgZGltZW5zaW9ucywgdGFraW5nIGludG8gYWNjb3VudCB0aGUgc2l6ZSBvZiB0aGUgYWx0IHRl
eHQuCiAgICAgaWYgKGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkpIHsKQEAgLTI1OCwy
MCArMjU4LDE3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW0KICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpbWFn
ZVNpemVDaGFuZ2VkID0gc2V0SW1hZ2VTaXplRm9yQWx0VGV4dChpbWFnZVJlc291cmNlKCkuY2Fj
aGVkSW1hZ2UoKSk7CisgICAgICAgIGltYWdlU2l6ZUNoYW5nZSA9IHNldEltYWdlU2l6ZUZvckFs
dFRleHQoaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCkpOwogICAgIH0KIAotICAgIGltYWdl
RGltZW5zaW9uc0NoYW5nZWQoaW1hZ2VTaXplQ2hhbmdlZCwgcmVjdCk7CisgICAgcmVwYWludE9y
TWFya0ZvckxheW91dChpbWFnZVNpemVDaGFuZ2UsIHJlY3QpOwogfQogCi1ib29sIFJlbmRlcklt
YWdlOjp1cGRhdGVJbnRyaW5zaWNTaXplSWZOZWVkZWQoY29uc3QgTGF5b3V0U2l6ZSYgbmV3U2l6
ZSwgYm9vbCBpbWFnZVNpemVDaGFuZ2VkKQordm9pZCBSZW5kZXJJbWFnZTo6dXBkYXRlSW50cmlu
c2ljU2l6ZUlmTmVlZGVkKGNvbnN0IExheW91dFNpemUmIG5ld1NpemUpCiB7Ci0gICAgaWYgKG5l
d1NpemUgPT0gaW50cmluc2ljU2l6ZSgpICYmICFpbWFnZVNpemVDaGFuZ2VkKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkpCi0g
ICAgICAgIHJldHVybiBpbWFnZVNpemVDaGFuZ2VkOworICAgIGlmIChpbWFnZVJlc291cmNlKCku
ZXJyb3JPY2N1cnJlZCgpIHx8ICFtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkpCisgICAgICAg
IHJldHVybjsKICAgICBzZXRJbnRyaW5zaWNTaXplKG5ld1NpemUpOwotICAgIHJldHVybiB0cnVl
OwogfQogCiB2b2lkIFJlbmRlckltYWdlOjp1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCkKQEAgLTI4
Miw3ICsyNzksNyBAQCB2b2lkIFJlbmRlckltYWdlOjp1cGRhdGVJbm5lckNvbnRlbnRSZWN0CiAg
ICAgICAgIGltYWdlUmVzb3VyY2UoKS5zZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29udGFp
bmVyU2l6ZSk7CiB9CiAKLXZvaWQgUmVuZGVySW1hZ2U6OmltYWdlRGltZW5zaW9uc0NoYW5nZWQo
Ym9vbCBpbWFnZVNpemVDaGFuZ2VkLCBjb25zdCBJbnRSZWN0KiByZWN0KQordm9pZCBSZW5kZXJJ
bWFnZTo6cmVwYWludE9yTWFya0ZvckxheW91dChJbWFnZVNpemVDaGFuZ2VUeXBlIGltYWdlU2l6
ZUNoYW5nZSwgY29uc3QgSW50UmVjdCogcmVjdCkKIHsKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JF
U09MVVRJT04pCiAgICAgZG91YmxlIHNjYWxlID0gc3R5bGUoKS5pbWFnZVJlc29sdXRpb24oKTsK
QEAgLTI5MCwxMCArMjg3LDEzIEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlRGltZW5zaW9uc0No
YW5nZWQKICAgICAgICAgc2NhbGUgPSByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb248aW50Pihz
Y2FsZSk7CiAgICAgaWYgKHNjYWxlIDw9IDApCiAgICAgICAgIHNjYWxlID0gMTsKLSAgICBib29s
IGludHJpbnNpY1NpemVDaGFuZ2VkID0gdXBkYXRlSW50cmluc2ljU2l6ZUlmTmVlZGVkKGltYWdl
UmVzb3VyY2UoKS5pbnRyaW5zaWNTaXplKHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpIC8gc2NhbGUp
LCBpbWFnZVNpemVDaGFuZ2VkKTsKKyAgICBMYXlvdXRTaXplIG5ld0ludHJpbnNpY1NpemUgPSBp
bWFnZVJlc291cmNlKCkuaW50cmluc2ljU2l6ZShzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSAvIHNj
YWxlKTsKICNlbHNlCi0gICAgYm9vbCBpbnRyaW5zaWNTaXplQ2hhbmdlZCA9IHVwZGF0ZUludHJp
bnNpY1NpemVJZk5lZWRlZChpbWFnZVJlc291cmNlKCkuaW50cmluc2ljU2l6ZShzdHlsZSgpLmVm
ZmVjdGl2ZVpvb20oKSksIGltYWdlU2l6ZUNoYW5nZWQpOworICAgIExheW91dFNpemUgbmV3SW50
cmluc2ljU2l6ZSA9IGltYWdlUmVzb3VyY2UoKS5pbnRyaW5zaWNTaXplKHN0eWxlKCkuZWZmZWN0
aXZlWm9vbSgpKTsKICNlbmRpZgorICAgIExheW91dFNpemUgb2xkSW50cmluc2ljU2l6ZSA9IGlu
dHJpbnNpY1NpemUoKTsKKworICAgIHVwZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZChuZXdJbnRy
aW5zaWNTaXplKTsKIAogICAgIC8vIEluIHRoZSBjYXNlIG9mIGdlbmVyYXRlZCBpbWFnZSBjb250
ZW50IHVzaW5nIDpiZWZvcmUvOmFmdGVyL2NvbnRlbnQsIHdlIG1pZ2h0IG5vdCBiZQogICAgIC8v
IGluIHRoZSByZW5kZXIgdHJlZSB5ZXQuIEluIHRoYXQgY2FzZSwgd2UganVzdCBuZWVkIHRvIHVw
ZGF0ZSBvdXIgaW50cmluc2ljIHNpemUuCkBAIC0zMDIsNjYgKzMwMiw1MiBAQCB2b2lkIFJlbmRl
ckltYWdlOjppbWFnZURpbWVuc2lvbnNDaGFuZ2VkCiAgICAgaWYgKCFjb250YWluaW5nQmxvY2so
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91bGRSZXBhaW50ID0gdHJ1ZTsKLSAg
ICBpZiAoaW50cmluc2ljU2l6ZUNoYW5nZWQpIHsKLSAgICAgICAgaWYgKCFwcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzRGlydHkoKSkKLSAgICAgICAgICAgIHNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNE
aXJ0eSh0cnVlKTsKLQotICAgICAgICBib29sIGhhc092ZXJyaWRlU2l6ZSA9IGhhc092ZXJyaWRl
SGVpZ2h0KCkgfHwgaGFzT3ZlcnJpZGVXaWR0aCgpOwotICAgICAgICBpZiAoIWhhc092ZXJyaWRl
U2l6ZSAmJiAhaW1hZ2VTaXplQ2hhbmdlZCkgewotICAgICAgICAgICAgTG9naWNhbEV4dGVudENv
bXB1dGVkVmFsdWVzIGNvbXB1dGVkVmFsdWVzOwotICAgICAgICAgICAgY29tcHV0ZUxvZ2ljYWxX
aWR0aEluUmVnaW9uKGNvbXB1dGVkVmFsdWVzKTsKLSAgICAgICAgICAgIExheW91dFVuaXQgbmV3
V2lkdGggPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudDsKLSAgICAgICAgICAgIGNvbXB1dGVMb2dp
Y2FsSGVpZ2h0KGhlaWdodCgpLCAwLCBjb21wdXRlZFZhbHVlcyk7Ci0gICAgICAgICAgICBMYXlv
dXRVbml0IG5ld0hlaWdodCA9IGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50OworICAgIGJvb2wgaW1h
Z2VTb3VyY2VIYXNDaGFuZ2VkU2l6ZSA9IG9sZEludHJpbnNpY1NpemUgIT0gbmV3SW50cmluc2lj
U2l6ZSB8fCBpbWFnZVNpemVDaGFuZ2UgIT0gSW1hZ2VTaXplQ2hhbmdlTm9uZTsKIAotICAgICAg
ICAgICAgaW1hZ2VTaXplQ2hhbmdlZCA9IHdpZHRoKCkgIT0gbmV3V2lkdGggfHwgaGVpZ2h0KCkg
IT0gbmV3SGVpZ2h0OwotICAgICAgICB9CisgICAgaWYgKGltYWdlU291cmNlSGFzQ2hhbmdlZFNp
emUpCisgICAgICAgIHNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSh0cnVlKTsKIAotICAg
ICAgICAvLyBGSVhNRTogV2Ugb25seSBuZWVkIHRvIHJlY29tcHV0ZSB0aGUgY29udGFpbmluZyBi
bG9jaydzIHByZWZlcnJlZCBzaXplCi0gICAgICAgIC8vIGlmIHRoZSBjb250YWluaW5nIGJsb2Nr
J3Mgc2l6ZSBkZXBlbmRzIG9uIHRoZSBpbWFnZSdzIHNpemUgKGkuZS4sIHRoZSBjb250YWluZXIg
dXNlcyBzaHJpbmstdG8tZml0IHNpemluZykuCi0gICAgICAgIC8vIFRoZXJlJ3Mgbm8gZWFzeSB3
YXkgdG8gZGV0ZWN0IHRoYXQgc2hyaW5rLXRvLWZpdCBpcyBuZWVkZWQsIGFsd2F5cyBmb3JjZSBh
IGxheW91dC4KLSAgICAgICAgYm9vbCBjb250YWluaW5nQmxvY2tOZWVkc1RvUmVjb21wdXRlUHJl
ZmVycmVkU2l6ZSA9Ci0gICAgICAgICAgICBzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzUGVyY2Vu
dCgpCi0gICAgICAgICAgICB8fCBzdHlsZSgpLmxvZ2ljYWxNYXhXaWR0aCgpLmlzUGVyY2VudCgp
Ci0gICAgICAgICAgICB8fCBzdHlsZSgpLmxvZ2ljYWxNaW5XaWR0aCgpLmlzUGVyY2VudCgpOwot
Ci0gICAgICAgIGJvb2wgbGF5b3V0U2l6ZURlcGVuZHNPbkludHJpbnNpY1NpemUgPSBzdHlsZSgp
LmFzcGVjdFJhdGlvVHlwZSgpID09IEFzcGVjdFJhdGlvRnJvbUludHJpbnNpYzsKLQotICAgICAg
ICBpZiAoaW1hZ2VTaXplQ2hhbmdlZCB8fCBoYXNPdmVycmlkZVNpemUgfHwgY29udGFpbmluZ0Js
b2NrTmVlZHNUb1JlY29tcHV0ZVByZWZlcnJlZFNpemUgfHwgbGF5b3V0U2l6ZURlcGVuZHNPbklu
dHJpbnNpY1NpemUpIHsKLSAgICAgICAgICAgIHNob3VsZFJlcGFpbnQgPSBmYWxzZTsKLSAgICAg
ICAgICAgIGlmICghc2VsZk5lZWRzTGF5b3V0KCkpCi0gICAgICAgICAgICAgICAgc2V0TmVlZHNM
YXlvdXQoKTsKLSAgICAgICAgfQorICAgIC8vIElmIHRoZSBhY3R1YWwgYXJlYSBvY2N1cGllZCBi
eSB0aGUgaW1hZ2UgaGFzIGNoYW5nZWQgYW5kIGl0IGlzIG5vdCBjb25zdHJhaW5lZCBieSBzdHls
ZSB0aGVuIGEgbGF5b3V0IGlzIHJlcXVpcmVkLgorICAgIGJvb2wgaW1hZ2VTaXplSXNDb25zdHJh
aW5lZCA9IHN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNTcGVjaWZpZWQoKSAmJiBzdHlsZSgpLmxv
Z2ljYWxIZWlnaHQoKS5pc1NwZWNpZmllZCgpOworICAgIGJvb2wgbmVlZHNMYXlvdXQgPSAhaW1h
Z2VTaXplSXNDb25zdHJhaW5lZCAmJiBpbWFnZVNvdXJjZUhhc0NoYW5nZWRTaXplOwogCi0gICAg
ICAgIGlmIChldmVySGFkTGF5b3V0KCkgJiYgIXNlbGZOZWVkc0xheW91dCgpKSB7Ci0gICAgICAg
ICAgICAvLyBUaGUgaW5uZXIgY29udGVudCByZWN0YW5nbGUgaXMgY2FsY3VsYXRlZCBkdXJpbmcg
bGF5b3V0LCBidXQgbWF5IG5lZWQgYW4gdXBkYXRlIG5vdwotICAgICAgICAgICAgLy8gKHVubGVz
cyB0aGUgYm94IGhhcyBhbHJlYWR5IGJlZW4gc2NoZWR1bGVkIGZvciBsYXlvdXQpLiBJbiBvcmRl
ciB0byBjYWxjdWxhdGUgaXQsIHdlCi0gICAgICAgICAgICAvLyBtYXkgbmVlZCB2YWx1ZXMgZnJv
bSB0aGUgY29udGFpbmluZyBibG9jaywgdGhvdWdoLCBzbyBtYWtlIHN1cmUgdGhhdCB3ZSdyZSBu
b3QgdG9vCi0gICAgICAgICAgICAvLyBlYXJseS4gSXQgbWF5IGJlIHRoYXQgbGF5b3V0IGhhc24n
dCBldmVuIHRha2VuIHBsYWNlIG9uY2UgeWV0LgotCi0gICAgICAgICAgICAvLyBGSVhNRTogd2Ug
c2hvdWxkIG5vdCBoYXZlIHRvIHRyaWdnZXIgYW5vdGhlciBjYWxsIHRvIHNldENvbnRhaW5lclNp
emVGb3JSZW5kZXJlcigpCi0gICAgICAgICAgICAvLyBmcm9tIGhlcmUsIHNpbmNlIGl0J3MgYWxy
ZWFkeSBiZWluZyBkb25lIGR1cmluZyBsYXlvdXQuCi0gICAgICAgICAgICB1cGRhdGVJbm5lckNv
bnRlbnRSZWN0KCk7Ci0gICAgICAgIH0KKyAgICAvLyBGSVhNRTogV2Ugb25seSBuZWVkIHRvIHJl
Y29tcHV0ZSB0aGUgY29udGFpbmluZyBibG9jaydzIHByZWZlcnJlZCBzaXplCisgICAgLy8gaWYg
dGhlIGNvbnRhaW5pbmcgYmxvY2sncyBzaXplIGRlcGVuZHMgb24gdGhlIGltYWdlJ3Mgc2l6ZSAo
aS5lLiwgdGhlIGNvbnRhaW5lciB1c2VzIHNocmluay10by1maXQgc2l6aW5nKS4KKyAgICAvLyBU
aGVyZSdzIG5vIGVhc3kgd2F5IHRvIGRldGVjdCB0aGF0IHNocmluay10by1maXQgaXMgbmVlZGVk
LCBhbHdheXMgZm9yY2UgYSBsYXlvdXQuCisgICAgYm9vbCBjb250YWluaW5nQmxvY2tOZWVkc1Rv
UmVjb21wdXRlUHJlZmVycmVkU2l6ZSA9CisgICAgICAgIHN0eWxlKCkubG9naWNhbFdpZHRoKCku
aXNQZXJjZW50KCkKKyAgICAgICAgfHwgc3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgoKS5pc1BlcmNl
bnQoKQorICAgICAgICB8fCBzdHlsZSgpLmxvZ2ljYWxNaW5XaWR0aCgpLmlzUGVyY2VudCgpOwor
CisgICAgYm9vbCBsYXlvdXRTaXplRGVwZW5kc09uSW50cmluc2ljU2l6ZSA9IHN0eWxlKCkuYXNw
ZWN0UmF0aW9UeXBlKCkgPT0gQXNwZWN0UmF0aW9Gcm9tSW50cmluc2ljOworCisgICAgaWYgKG5l
ZWRzTGF5b3V0IHx8IGNvbnRhaW5pbmdCbG9ja05lZWRzVG9SZWNvbXB1dGVQcmVmZXJyZWRTaXpl
IHx8IGxheW91dFNpemVEZXBlbmRzT25JbnRyaW5zaWNTaXplKSB7CisgICAgICAgIHNldE5lZWRz
TGF5b3V0KCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoc2hvdWxkUmVwYWlu
dCkgewotICAgICAgICBMYXlvdXRSZWN0IHJlcGFpbnRSZWN0OwotICAgICAgICBpZiAocmVjdCkg
ewotICAgICAgICAgICAgLy8gVGhlIGltYWdlIGNoYW5nZWQgcmVjdCBpcyBpbiBzb3VyY2UgaW1h
Z2UgY29vcmRpbmF0ZXMgKHByZS16b29taW5nKSwKLSAgICAgICAgICAgIC8vIHNvIG1hcCBmcm9t
IHRoZSBib3VuZHMgb2YgdGhlIGltYWdlIHRvIHRoZSBjb250ZW50c0JveC4KLSAgICAgICAgICAg
IHJlcGFpbnRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtYXBSZWN0KCpyZWN0LCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBpbWFnZVJlc291cmNlKCkuaW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJv
eFJlY3QoKSkpOwotICAgICAgICAgICAgLy8gR3VhcmQgYWdhaW5zdCB0b28tbGFyZ2UgY2hhbmdl
ZCByZWN0cy4KLSAgICAgICAgICAgIHJlcGFpbnRSZWN0LmludGVyc2VjdChjb250ZW50Qm94UmVj
dCgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXBhaW50UmVjdCA9IGNvbnRlbnRC
b3hSZWN0KCk7Ci0gICAgICAgIAotICAgICAgICByZXBhaW50UmVjdGFuZ2xlKHJlcGFpbnRSZWN0
KTsKKyAgICBpZiAoZXZlckhhZExheW91dCgpICYmICFzZWxmTmVlZHNMYXlvdXQoKSkgeworICAg
ICAgICAvLyBUaGUgaW5uZXIgY29udGVudCByZWN0YW5nbGUgaXMgY2FsY3VsYXRlZCBkdXJpbmcg
bGF5b3V0LCBidXQgbWF5IG5lZWQgYW4gdXBkYXRlIG5vdworICAgICAgICAvLyAodW5sZXNzIHRo
ZSBib3ggaGFzIGFscmVhZHkgYmVlbiBzY2hlZHVsZWQgZm9yIGxheW91dCkuIEluIG9yZGVyIHRv
IGNhbGN1bGF0ZSBpdCwgd2UKKyAgICAgICAgLy8gbWF5IG5lZWQgdmFsdWVzIGZyb20gdGhlIGNv
bnRhaW5pbmcgYmxvY2ssIHRob3VnaCwgc28gbWFrZSBzdXJlIHRoYXQgd2UncmUgbm90IHRvbwor
ICAgICAgICAvLyBlYXJseS4gSXQgbWF5IGJlIHRoYXQgbGF5b3V0IGhhc24ndCBldmVuIHRha2Vu
IHBsYWNlIG9uY2UgeWV0LgogCi0gICAgICAgIC8vIFRlbGwgYW55IHBvdGVudGlhbCBjb21wb3Np
dGluZyBsYXllcnMgdGhhdCB0aGUgaW1hZ2UgbmVlZHMgdXBkYXRpbmcuCi0gICAgICAgIGNvbnRl
bnRDaGFuZ2VkKEltYWdlQ2hhbmdlZCk7CisgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgbm90
IGhhdmUgdG8gdHJpZ2dlciBhbm90aGVyIGNhbGwgdG8gc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRl
cmVyKCkKKyAgICAgICAgLy8gZnJvbSBoZXJlLCBzaW5jZSBpdCdzIGFscmVhZHkgYmVpbmcgZG9u
ZSBkdXJpbmcgbGF5b3V0LgorICAgICAgICB1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCk7CiAgICAg
fQorCisgICAgTGF5b3V0UmVjdCByZXBhaW50UmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7CisgICAg
aWYgKHJlY3QpIHsKKyAgICAgICAgLy8gVGhlIGltYWdlIGNoYW5nZWQgcmVjdCBpcyBpbiBzb3Vy
Y2UgaW1hZ2UgY29vcmRpbmF0ZXMgKHByZS16b29taW5nKSwKKyAgICAgICAgLy8gc28gbWFwIGZy
b20gdGhlIGJvdW5kcyBvZiB0aGUgaW1hZ2UgdG8gdGhlIGNvbnRlbnRzQm94LgorICAgICAgICBy
ZXBhaW50UmVjdC5pbnRlcnNlY3QoZW5jbG9zaW5nSW50UmVjdChtYXBSZWN0KCpyZWN0LCBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVJlc291cmNlKCkuaW1hZ2VTaXplKDEuMGYpKSwgcmVw
YWludFJlY3QpKSk7CisgICAgfQorICAgICAgICAKKyAgICByZXBhaW50UmVjdGFuZ2xlKHJlcGFp
bnRSZWN0KTsKKworICAgIC8vIFRlbGwgYW55IHBvdGVudGlhbCBjb21wb3NpdGluZyBsYXllcnMg
dGhhdCB0aGUgaW1hZ2UgbmVlZHMgdXBkYXRpbmcuCisgICAgY29udGVudENoYW5nZWQoSW1hZ2VD
aGFuZ2VkKTsKIH0KIAogdm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqIG5ld0ltYWdlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmgJKHJldmlzaW9uIDE4MTUxMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywxMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBIVE1MQXJlYUVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIAorZW51
bSBJbWFnZVNpemVDaGFuZ2VUeXBlIHsKKyAgICBJbWFnZVNpemVDaGFuZ2VOb25lLAorICAgIElt
YWdlU2l6ZUNoYW5nZUZvckFsdFRleHQKK307CisKIGNsYXNzIFJlbmRlckltYWdlIDogcHVibGlj
IFJlbmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKICAgICBSZW5kZXJJbWFnZShFbGVtZW50JiwgUmVm
PFJlbmRlclN0eWxlPiYmLCBTdHlsZUltYWdlKiA9IG51bGxwdHIsIGNvbnN0IGZsb2F0ID0gMS4w
Zik7CkBAIC00Myw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZW5kZXJJbWFnZVJlc291
cmNlJiBpbWFnZVJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gKm1faW1hZ2VSZXNvdXJjZTsgfQog
ICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGltYWdlUmVzb3Vy
Y2UoKS5jYWNoZWRJbWFnZSgpOyB9CiAKLSAgICBib29sIHNldEltYWdlU2l6ZUZvckFsdFRleHQo
Q2FjaGVkSW1hZ2UqIG5ld0ltYWdlID0gMCk7CisgICAgSW1hZ2VTaXplQ2hhbmdlVHlwZSBzZXRJ
bWFnZVNpemVGb3JBbHRUZXh0KENhY2hlZEltYWdlKiBuZXdJbWFnZSA9IG51bGxwdHIpOwogCiAg
ICAgdm9pZCB1cGRhdGVBbHRUZXh0KCk7CiAKQEAgLTc0LDcgKzc5LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqKSBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNo
YW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0
KiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwYWludEludG9SZWN0KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIGZpbmFsOwpAQCAtMTA3LDggKzEx
Miw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHNoYWRvd0NvbnRyb2xzTmVlZEN1c3Rv
bUxheW91dE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgSW50U2l6ZSBp
bWFnZVNpemVGb3JFcnJvcihDYWNoZWRJbWFnZSopIGNvbnN0OwotICAgIHZvaWQgaW1hZ2VEaW1l
bnNpb25zQ2hhbmdlZChib29sIGltYWdlU2l6ZUNoYW5nZWQsIGNvbnN0IEludFJlY3QqID0gMCk7
Ci0gICAgYm9vbCB1cGRhdGVJbnRyaW5zaWNTaXplSWZOZWVkZWQoY29uc3QgTGF5b3V0U2l6ZSYs
IGJvb2wgaW1hZ2VTaXplQ2hhbmdlZCk7CisgICAgdm9pZCByZXBhaW50T3JNYXJrRm9yTGF5b3V0
KEltYWdlU2l6ZUNoYW5nZVR5cGUsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cik7CisgICAgdm9p
ZCB1cGRhdGVJbnRyaW5zaWNTaXplSWZOZWVkZWQoY29uc3QgTGF5b3V0U2l6ZSYpOwogICAgIC8v
IFVwZGF0ZSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgdG8gYmUgcmVuZGVyZWQuIE9iamVjdC1maXQg
bWF5IGNhdXNlIHRoaXMgdG8gYmUgZGlmZmVyZW50IGZyb20gdGhlIENTUyBib3gncyBjb250ZW50
IHJlY3QuCiAgICAgdm9pZCB1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMTgxNTEzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMs
MTAgQEAgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQmIFJlbmRlclNWR0ZvcmVpZwogCiB2b2lkIFJl
bmRlclNWR0ZvcmVpZ25PYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2Fi
bGVkKCkKLSAgICAgICAgfHwgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3Vu
ZCAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZVNlbGVjdGlvbikpCisgICAgaWYgKHBh
aW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgJiYgcGFpbnRJ
bmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAg
IFBhaW50SW5mbyBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOwpAQCAtNjUsMzAgKzY3LDMwIEBA
IHZvaWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6cGFpbnQoUGFpbnQKICAgICAgICAgY2hpbGRQ
YWludEluZm8uY29udGV4dC0+Y2xpcChtX3ZpZXdwb3J0KTsKIAogICAgIFNWR1JlbmRlcmluZ0Nv
bnRleHQgcmVuZGVyaW5nQ29udGV4dDsKLSAgICBib29sIGNvbnRpbnVlUmVuZGVyaW5nID0gdHJ1
ZTsKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CiAg
ICAgICAgIHJlbmRlcmluZ0NvbnRleHQucHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCgqdGhpcywg
Y2hpbGRQYWludEluZm8pOwotICAgICAgICBjb250aW51ZVJlbmRlcmluZyA9IHJlbmRlcmluZ0Nv
bnRleHQuaXNSZW5kZXJpbmdQcmVwYXJlZCgpOworICAgICAgICBpZiAoIXJlbmRlcmluZ0NvbnRl
eHQuaXNSZW5kZXJpbmdQcmVwYXJlZCgpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChjb250aW51ZVJlbmRlcmluZykgewotICAgICAgICAvLyBQYWludCBhbGwgcGhhc2Vz
IG9mIEZPIGVsZW1lbnRzIGF0b21pY2FsbHksIGFzIHRob3VnaCB0aGUgRk8gZWxlbWVudCBlc3Rh
Ymxpc2hlZCBpdHMKLSAgICAgICAgLy8gb3duIHN0YWNraW5nIGNvbnRleHQuCi0gICAgICAgIGJv
b2wgcHJlc2VydmVQaGFzZSA9IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9u
IHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlVGV4dENsaXA7Ci0gICAgICAgIExheW91
dFBvaW50IGNoaWxkUG9pbnQgPSBJbnRQb2ludCgpOwotICAgICAgICBjaGlsZFBhaW50SW5mby5w
aGFzZSA9IHByZXNlcnZlUGhhc2UgPyBwYWludEluZm8ucGhhc2UgOiBQYWludFBoYXNlQmxvY2tC
YWNrZ3JvdW5kOwotICAgICAgICBSZW5kZXJCbG9jazo6cGFpbnQoY2hpbGRQYWludEluZm8sIElu
dFBvaW50KCkpOwotICAgICAgICBpZiAoIXByZXNlcnZlUGhhc2UpIHsKLSAgICAgICAgICAgIGNo
aWxkUGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kczsKLSAg
ICAgICAgICAgIFJlbmRlckJsb2NrOjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQb2ludCk7
Ci0gICAgICAgICAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VGbG9hdDsKLSAg
ICAgICAgICAgIFJlbmRlckJsb2NrOjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQb2ludCk7
Ci0gICAgICAgICAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VGb3JlZ3JvdW5k
OwotICAgICAgICAgICAgUmVuZGVyQmxvY2s6OnBhaW50KGNoaWxkUGFpbnRJbmZvLCBjaGlsZFBv
aW50KTsKLSAgICAgICAgICAgIGNoaWxkUGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZU91dGxp
bmU7Ci0gICAgICAgICAgICBSZW5kZXJCbG9jazo6cGFpbnQoY2hpbGRQYWludEluZm8sIGNoaWxk
UG9pbnQpOwotICAgICAgICB9CisgICAgTGF5b3V0UG9pbnQgY2hpbGRQb2ludCA9IEludFBvaW50
KCk7CisgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKSB7Cisg
ICAgICAgIFJlbmRlckJsb2NrOjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQb2ludCk7Cisg
ICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICAvLyBQYWludCBhbGwgcGhhc2VzIG9mIEZPIGVs
ZW1lbnRzIGF0b21pY2FsbHksIGFzIHRob3VnaCB0aGUgRk8gZWxlbWVudCBlc3RhYmxpc2hlZCBp
dHMKKyAgICAvLyBvd24gc3RhY2tpbmcgY29udGV4dC4KKyAgICBjaGlsZFBhaW50SW5mby5waGFz
ZSA9IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQ7CisgICAgUmVuZGVyQmxvY2s6OnBhaW50KGNo
aWxkUGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKKyAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9IFBh
aW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHM7CisgICAgUmVuZGVyQmxvY2s6OnBhaW50KGNo
aWxkUGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKKyAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9IFBh
aW50UGhhc2VGbG9hdDsKKyAgICBSZW5kZXJCbG9jazo6cGFpbnQoY2hpbGRQYWludEluZm8sIGNo
aWxkUG9pbnQpOworICAgIGNoaWxkUGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZUZvcmVncm91
bmQ7CisgICAgUmVuZGVyQmxvY2s6OnBhaW50KGNoaWxkUGFpbnRJbmZvLCBjaGlsZFBvaW50KTsK
KyAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VPdXRsaW5lOworICAgIFJlbmRl
ckJsb2NrOjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQb2ludCk7CiB9CiAKIExheW91dFJl
Y3QgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE4MTY3NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE1LTAzLTE4ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoaW5nIGJldHdlZW4gdHdv
IFNWRyBpbWFnZXMgd2l0aCBubyBpbnRyaW5zaWMgc2l6ZXMgY2F1c2VzIHRoZW0gdG8gZ2V0IHRo
ZSBkZWZhdWx0IFNWRyBzaXplIGluc3RlYWQgb2YgdGhlIGNvbnRhaW5lciBzaXplLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyODA1LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3ZnL2FzLWltYWdl
L3N2Zy1uby1pbnRyaW5zaWMtc2l6ZS1zd2l0Y2hpbmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogc3ZnL2FzLWltYWdlL3N2Zy1uby1pbnRyaW5zaWMtc2l6ZS1zd2l0Y2hpbmcuaHRt
bDogQWRkZWQuCisgICAgICAgIEVuc3VyZSB0aGF0IHN3aXRjaGluZyB0aGUgc291cmNlIG9mIGFu
IDxpbWc+IGVsZW1lbnQgYmV0d2VlbiB0d28gU1ZHIGltYWdlcywKKyAgICAgICAgd2hpY2ggaGF2
ZSBubyBpbnRyaW5zaWMgc2l6ZXMsIGdldHMgdGhlIGltYWdlIHRoZSBzaXplIG9mIHRoZSBjb250
YWluZXIgYW5kCisgICAgICAgIG5vdCB0aGUgZGVmYXVsdCBTVkcgaW50cmluc2ljIHNpemUgd2hp
Y2ggaXMgMzAweDE1MCBwaXhlbHMuCisKIDIwMTUtMDMtMTcgIEdlb2ZmcmV5IEdhcmVuICA8Z2dh
cmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBGdW5jdGlvbiBib2RpZXMgc2hvdWxkIGFsd2F5cyBp
bmNsdWRlIGJyYWNlcwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1uby1pbnRy
aW5zaWMtc2l6ZS1zd2l0Y2hpbmctZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLW5vLWludHJpbnNpYy1zaXplLXN3aXRjaGluZy1leHBlY3Rl
ZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1uby1p
bnRyaW5zaWMtc2l6ZS1zd2l0Y2hpbmctZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4K
KyAgICBkaXYub3V0ZXIgeworICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgaGVpZ2h0OiAxMDBw
eDsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKyAgICBkaXYuaW5uZXIg
eworICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgbGVmdDogNzVweDsKKyAgICAgIHRv
cDogMjVweDsKKyAgICAgIHdpZHRoOiAxNTBweDsKKyAgICAgIGhlaWdodDogNTBweDsKKyAgICAg
IGJhY2tncm91bmQtY29sb3I6IGxpbWU7CisgICAgfQorICA8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+CisgIDxkaXYgY2xhc3M9Im91dGVyIj4KKyAgICA8ZGl2IGNsYXNzPSJpbm5lciI+PC9kaXY+
CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FzLWlt
YWdlL3N2Zy1uby1pbnRyaW5zaWMtc2l6ZS1zd2l0Y2hpbmcuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLW5vLWludHJpbnNpYy1zaXplLXN3aXRjaGluZy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1uby1pbnRy
aW5zaWMtc2l6ZS1zd2l0Y2hpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgICBkaXYgewor
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgIGJhY2tncm91
bmQtY29sb3I6IHJlZDsKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
ImNoYW5nZUltYWdlKCdvcmFuZ2UnKSI+CisgIDxkaXY+CisgICAgPGltZyBoZWlnaHQ9IjEwMCIg
aWQ9ImltYWdlXzEiIG9ubG9hZD0ib25sb2FkSW1hZ2UoKSI+CisgIDwvZGl2PgorICA8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgIAorICAgIGZ1bmN0aW9uIG9ubG9hZEltYWdlKCkgeworICAgICAgdmFyIGNv
bG9ycyA9IFsib3JhbmdlIiwgImdyZWVuIiwgInNhbG1vbiIsICJ5ZWxsb3ciLCAiZ3JlZW4iXTsK
KworICAgICAgaWYgKHR5cGVvZiBvbmxvYWRJbWFnZS5jb3VudGVyID09ICd1bmRlZmluZWQnKQor
ICAgICAgICBvbmxvYWRJbWFnZS5jb3VudGVyID0gMDsKKworICAgICAgaWYgKCsrb25sb2FkSW1h
Z2UuY291bnRlciA9PSBjb2xvcnMubGVuZ3RoKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgcmV0dXJu
OworICAgICAgfQorCisgICAgICBjaGFuZ2VJbWFnZShjb2xvcnNbb25sb2FkSW1hZ2UuY291bnRl
cl0pOworICAgIH0gICAgCisgICAgZnVuY3Rpb24gY2hhbmdlSW1hZ2UobmFtZSkgeworICAgICAg
dmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlXzEnKTsKKyAgICAgIHN3
aXRjaCAobmFtZSkgeworICAgICAgY2FzZSAnb3JhbmdlJzoKKyAgICAgICAgaW1hZ2Uuc3JjID0g
ImRhdGE6aW1hZ2Uvc3ZnK3htbCwgXAorICAgICAgICAgIDxzdmcgdmVyc2lvbj0nMS4xJyB4bWxu
cz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyMDAgMjAwJyB3aWR0
aD0nMTAwJyBoZWlnaHQ9JzEwMCc+IFwKKyAgICAgICAgICAgIDxyZWN0IHdpZHRoPScxMDAlJyBo
ZWlnaHQ9JzEwMCUnIGZpbGw9J29yYW5nZScvPiBcCisgICAgICAgICAgICA8cmVjdCB4PScyNSUn
IHk9JzI1JScgd2lkdGg9JzUwJScgaGVpZ2h0PSc1MCUnIGZpbGw9J2xpbWUnLz4gXAorICAgICAg
ICAgIDwvc3ZnPiI7CisgICAgICAgIGJyZWFrOworCisgICAgICBkZWZhdWx0OgorICAgICAgICBp
bWFnZS5zcmMgPSAiZGF0YTppbWFnZS9zdmcreG1sLCBcCisgICAgICAgICAgPHN2ZyB2ZXJzaW9u
PScxLjEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+IFwKKyAgICAgICAgICAg
IDxyZWN0IHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9JyIgKyBuYW1lICsgIicvPiBc
CisgICAgICAgICAgICA8cmVjdCB4PScyNSUnIHk9JzI1JScgd2lkdGg9JzUwJScgaGVpZ2h0PSc1
MCUnIGZpbGw9J2xpbWUnLz4gXAorICAgICAgICAgIDwvc3ZnPiI7CisgICAgICAgIGJyZWFrOwor
ICAgICAgfQorICAgIH0KKyAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248992</attachid>
            <date>2015-03-18 17:18:51 -0700</date>
            <delta_ts>2015-03-18 18:22:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142805-20150318171819.patch</filename>
            <type>text/plain</type>
            <size>22846</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE1LTAzLTE4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoaW5n
IGJldHdlZW4gdHdvIFNWRyBpbWFnZXMgd2l0aCBubyBpbnRyaW5zaWMgc2l6ZXMgY2F1c2VzIHRo
ZW0gdG8gZ2V0IHRoZSBkZWZhdWx0IFNWRyBzaXplIGluc3RlYWQgb2YgdGhlIGNvbnRhaW5lciBz
aXplLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQy
ODA1LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgVGhlIGJ1ZyBoYXBwZW5zIGR1ZSB0byB3cm9uZyBsb2dpYyBpbiBSZW5kZXJJbWFnZTo6
aW1hZ2VEaW1lbnNpb25zQ2hhbmdlZCgpLgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGRlY2lkZXMg
dG8gc2V0TmVlZHNMYXlvdXQoKSBpZiB0aGUgaW50cmluc2ljIHNpemUgb2YgdGhlIGltYWdlCisg
ICAgICAgIGNoYW5nZXMuIElmIHRoZSBzaXplIGRvZXMgbm90IGNoYW5nZSwgaXQgb25seSByZXBh
aW50cyB0aGUgaW1hZ2UgcmVjdGFuZ2xlLgorICAgICAgICBXaGVuIHN3aXRjaGluZyB0aGUgc3Jj
IG9mIHRoZSBhbiBpbWFnZSBiZXR3ZWVuIHR3byBTVkcgaW1hZ2VzIGFuZCBib3RoIG9mCisgICAg
ICAgIHRoZW0gaGF2ZSBubyBpbnRyaW5zaWMgc2l6ZSwgd2UgZG8gbm90IHVwZGF0ZUlubmVyQ29u
dGVudFJlY3QoKSBhbmQgdGhpcworICAgICAgICBtZWFucyBhbiBTVkdJbWFnZUZvckNvbnRhaW5l
ciBpcyBub3QgZ29pbmcgdG8gYmUgY3JlYXRlZCBmb3IgdGhpcyBpbWFnZS4KKyAgICAgICAgV2hl
biB0aGUgaW1hZ2UgaXMgZHJhd24sIGl0IGlzIGRyYXduIGRpcmVjdGx5IGZyb20gdGhlIFNWR0lt
YWdlLiBBbmQgdGhpcworICAgICAgICBtZWFucyB0aGUgZHJhd2luZyBoYXMgdG8gYmUgc2NhbGVk
IGJ5IGNvbnRhaW5lcl9zaXplIC8gU1ZHX2RlZmF1bHRfaW50cmluc2ljX3NpemUKKyAgICAgICAg
CisgICAgICAgIEFmdGVyIGZpZ3VyaW5nIG91dCB0aGF0IEkgbmVlZCB0byB1cGRhdGVJbm5lckNv
bnRlbnRSZWN0KCkgdG8gZml4IHRoaXMgYnVnLAorICAgICAgICBJIGZvdW5kIG91dCBCbGluayBo
YXMgYWxyZWFkeSBjaGFuZ2VkIHRoaXMgY29kZSB0byBkbyB0aGUgc2FtZSB0aGluZy4gQnV0IAor
ICAgICAgICB0aGV5IGFsc28gZGlkIG1vcmUgY2xlYW4tdXAgaW4gdGhpcyBmdW5jdGlvbi4gSGVy
ZSBpcyB0aGUgbGluaworICAgICAgICBodHRwczovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEx
NDMyMzAwNC4gSSB0aGluayB0aGVpciBjaGFuZ2Ugc2VlbXMgY29ycmVjdAorICAgICAgICBhbHRo
b3VnaCB0aGV5IGRpZCBub3Qgc2F5IHdoYXQgZXhhY3RseSB0aGV5IHdlcmUgdHJ5aW5nIHRvIGZp
eC4KKyAgICAgICAgCisgICAgICAgIFRoZSBwbGFuIGZvciByZXBhaW50T3JNYXJrRm9yTGF5b3V0
KCksIHdoaWNoIGlzIHRoZSBuZXcgbmFtZSBvZiB0aGlzIGZ1bmN0aW9uLAorICAgICAgICBpcyB0
aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgLS0gc2V0TmVlZExheW91dCgpIGlmIHRoZSBpbnRy
aW5zaWMgc2l6ZSBjaGFuZ2VzIGFuZCBpdCBhZmZlY3RzIHRoZSBzaXplCisgICAgICAgICAgICAg
ICBvZiB0aGUgaW1hZ2UuCisgICAgICAgICAgICAtLSB1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCkg
aWYgdGhlIGludHJpbnNpYyBzaXplIGRpZCBub3QgY2hhbmdlIGJ1dCB0aGUKKyAgICAgICAgICAg
ICAgIGltYWdlIGhhcyBleGl0aW5nIGxheW91dC4KKyAgICAgICAgICAgIC0tIHJlcGFpbnQgdGhl
IGltYWdlIHJlY3RhbmdsZSBpZiBsYXlvdXQgaXMgbm90IG5lZWRlZC4KKyAgICAgICAgICAgIAor
ICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIHJlbW92ZXMgdGhlIGNhbGwgdG8gY29tcHV0ZUxvZ2lj
YWxXaWR0aEluUmVnaW9uKCksIHdoaWNoIGlzCisgICAgICAgIGFsbW9zdCBydW5uaW5nIGEgbGF5
b3V0IGZvciB0aGUgaW1hZ2UuIFRoaXMgY2FsbCBmaWd1cmVzIG91dCB3aGV0aGVyIHRoZSBpbWFn
ZQorICAgICAgICBuZWVkcyB0byBzZXROZWVkc0xheW91dCgpLiBUaGlzIGNhbGwgaXMgdW5uZWNl
c3Nhcnk7IHRoZSBpbWFnZSBuZWVkcyB0byBydW4gYQorICAgICAgICBsYXlvdXQgaWYgdGhlIGlu
dHJpbnNpYyBzaXplIGhhcyBjaGFuZ2VkIGFuZCBpdCBhZmZlY3RzIHRoZSBzaXplIG9mIHRoZSBp
bWFnZS4KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFRlc3Q6IHN2Zy9hcy1pbWFnZS9z
dmctbm8taW50cmluc2ljLXNpemUtc3dpdGNoaW5nLmh0bWwKKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6c3R5bGVE
aWRDaGFuZ2UpOiBDaGFuZ2UgdGhlIGZ1bmN0aW9uIGNhbGwuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKTogUmVuYW1lIGxvY2FsIHZhcmlhYmxlIGFuZCBjaGFu
Z2UgdGhlCisgICAgICAgIGZ1bmN0aW9uIGNhbGwuCisgICAgICAgIAorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2U6OnVwZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZCk6IFNpbXBsaWZ5IHRo
aXMgZnVuY3Rpb24uCisgICAgICAgIENhbGwgc2V0SW50cmluc2ljU2l6ZSgpIHdpdGggdGhlIG5l
dyBzaXplIHVubGVzcyB0aGUgaW1hZ2UgaXMgaW4gZXJyb3Igc3RhdGUuCisgICAgICAgIAorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnJlcGFpbnRPck1hcmtGb3JMYXlvdXQpOiBUaGlz
IGEgYmV0dGVyIG5hbWUgZm9yIHRoaXMKKyAgICAgICAgZnVuY3Rpb24gc2luY2UgaXQgaXMgY2Fs
bGVkIGV2ZW4gaWYgdGhlIGludHJpbnNpYyBzaXplIHdhcyBub3QgY2hhbmdlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZURpbWVuc2lvbnNDaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6IFJlbmFtZSBpbWFn
ZURpbWVuc2lvbnNDaGFuZ2VkKCkgYW5kIGNoYW5nZSB0aGUgCisgICAgICAgIHVwZGF0ZUludHJp
bnNpY1NpemVJZk5lZWRlZCgpIHRvIHJldHVybiB2b2lkLgorICAgICAgICAKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6cGFpbnQpOiBDb2RlIGNsZWFudXAuIFRoaXMgZnVu
Y3Rpb24gY2FuCisgICAgICAgIG9ubHkgaGFuZGxlIHRoZSBwYWludCBwaGFzZXMgUGFpbnRQaGFz
ZUZvcmVncm91bmQgYW5kIFBhaW50UGhhc2VTZWxlY3Rpb24uCisgICAgICAgIFVzZSB0aGlzIGlu
Zm9ybWF0aW9uIHRvIHNpbXBsaWZ5IHRoZSBsb2dpYyBhbmQgb3JkZXIgb2YgcGFpbnRpbmcgdGhl
cmUuCisKIDIwMTUtMDMtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTWFjXVtpT1NdIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKCkgLyBzdG9wU2hhcmVk
VGltZXIoKSBhcmUgZXhwZW5zaXZlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAJKHJldmlzaW9uIDE4MTUxMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw3ICsxODAsNyBAQCBJbnRT
aXplIFJlbmRlckltYWdlOjppbWFnZVNpemVGb3JFcnJvcihDCiAKIC8vIFNldHMgdGhlIGltYWdl
IGhlaWdodCBhbmQgd2lkdGggdG8gZml0IHRoZSBhbHQgdGV4dC4gIFJldHVybnMgdHJ1ZSBpZiB0
aGUKIC8vIGltYWdlIHNpemUgY2hhbmdlZC4KLWJvb2wgUmVuZGVySW1hZ2U6OnNldEltYWdlU2l6
ZUZvckFsdFRleHQoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlIC8qID0gMCAqLykKK0ltYWdlU2l6ZUNo
YW5nZVR5cGUgUmVuZGVySW1hZ2U6OnNldEltYWdlU2l6ZUZvckFsdFRleHQoQ2FjaGVkSW1hZ2Uq
IG5ld0ltYWdlIC8qID0gMCAqLykKIHsKICAgICBJbnRTaXplIGltYWdlU2l6ZTsKICAgICBpZiAo
bmV3SW1hZ2UgJiYgbmV3SW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIodGhpcykpCkBAIC0xOTgsMTAg
KzE5OCwxMCBAQCBib29sIFJlbmRlckltYWdlOjpzZXRJbWFnZVNpemVGb3JBbHRUZXh0CiAgICAg
fQogCiAgICAgaWYgKGltYWdlU2l6ZSA9PSBpbnRyaW5zaWNTaXplKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEltYWdlU2l6ZUNoYW5nZU5vbmU7CiAKICAgICBzZXRJ
bnRyaW5zaWNTaXplKGltYWdlU2l6ZSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIElt
YWdlU2l6ZUNoYW5nZUZvckFsdFRleHQ7CiB9CiAKIHZvaWQgUmVuZGVySW1hZ2U6OnN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUp
CkBAIC0yMDksMTIgKzIwOSwxMiBAQCB2b2lkIFJlbmRlckltYWdlOjpzdHlsZURpZENoYW5nZShT
dHlsZURpCiAgICAgUmVuZGVyUmVwbGFjZWQ6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxl
KTsKICAgICBpZiAobV9uZWVkc1RvU2V0U2l6ZUZvckFsdFRleHQpIHsKICAgICAgICAgaWYgKCFt
X2FsdFRleHQuaXNFbXB0eSgpICYmIHNldEltYWdlU2l6ZUZvckFsdFRleHQoaW1hZ2VSZXNvdXJj
ZSgpLmNhY2hlZEltYWdlKCkpKQotICAgICAgICAgICAgaW1hZ2VEaW1lbnNpb25zQ2hhbmdlZCh0
cnVlIC8qIGltYWdlU2l6ZUNoYW5nZWQgKi8pOworICAgICAgICAgICAgcmVwYWludE9yTWFya0Zv
ckxheW91dChJbWFnZVNpemVDaGFuZ2VGb3JBbHRUZXh0KTsKICAgICAgICAgbV9uZWVkc1RvU2V0
U2l6ZUZvckFsdFRleHQgPSBmYWxzZTsKICAgICB9CiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklF
TlRBVElPTikKICAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VMYXlvdXQgJiYgb2xkU3R5
bGUtPmltYWdlT3JpZW50YXRpb24oKSAhPSBzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSkKLSAg
ICAgICAgcmV0dXJuIGltYWdlRGltZW5zaW9uc0NoYW5nZWQodHJ1ZSAvKiBpbWFnZVNpemVDaGFu
Z2VkICovKTsKKyAgICAgICAgcmV0dXJuIHJlcGFpbnRPck1hcmtGb3JMYXlvdXQoSW1hZ2VTaXpl
Q2hhbmdlRm9yQWx0VGV4dCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xV
VElPTikKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpzdHlsZURpZENoYW5n
ZShTdHlsZURpCiAgICAgICAgICYmIChvbGRTdHlsZS0+aW1hZ2VSZXNvbHV0aW9uKCkgIT0gc3R5
bGUoKS5pbWFnZVJlc29sdXRpb24oKQogICAgICAgICAgICAgfHwgb2xkU3R5bGUtPmltYWdlUmVz
b2x1dGlvblNuYXAoKSAhPSBzdHlsZSgpLmltYWdlUmVzb2x1dGlvblNuYXAoKQogICAgICAgICAg
ICAgfHwgb2xkU3R5bGUtPmltYWdlUmVzb2x1dGlvblNvdXJjZSgpICE9IHN0eWxlKCkuaW1hZ2VS
ZXNvbHV0aW9uU291cmNlKCkpKQotICAgICAgICBpbWFnZURpbWVuc2lvbnNDaGFuZ2VkKHRydWUg
LyogaW1hZ2VTaXplQ2hhbmdlZCAqLyk7CisgICAgICAgIHJlcGFpbnRPck1hcmtGb3JMYXlvdXQo
SW1hZ2VTaXplQ2hhbmdlRm9yQWx0VGV4dDsKICNlbmRpZgogfQogCkBAIC0yNDYsNyArMjQ2LDcg
QEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbQogICAgICAgICBtX2Rp
ZEluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQaXhlbENvdW50ID0gdHJ1ZTsKICAgICB9CiAKLSAg
ICBib29sIGltYWdlU2l6ZUNoYW5nZWQgPSBmYWxzZTsKKyAgICBJbWFnZVNpemVDaGFuZ2VUeXBl
IGltYWdlU2l6ZUNoYW5nZSA9IEltYWdlU2l6ZUNoYW5nZU5vbmU7CiAKICAgICAvLyBTZXQgaW1h
Z2UgZGltZW5zaW9ucywgdGFraW5nIGludG8gYWNjb3VudCB0aGUgc2l6ZSBvZiB0aGUgYWx0IHRl
eHQuCiAgICAgaWYgKGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkpIHsKQEAgLTI1OCwy
MCArMjU4LDE3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW0KICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpbWFn
ZVNpemVDaGFuZ2VkID0gc2V0SW1hZ2VTaXplRm9yQWx0VGV4dChpbWFnZVJlc291cmNlKCkuY2Fj
aGVkSW1hZ2UoKSk7CisgICAgICAgIGltYWdlU2l6ZUNoYW5nZSA9IHNldEltYWdlU2l6ZUZvckFs
dFRleHQoaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCkpOwogICAgIH0KIAotICAgIGltYWdl
RGltZW5zaW9uc0NoYW5nZWQoaW1hZ2VTaXplQ2hhbmdlZCwgcmVjdCk7CisgICAgcmVwYWludE9y
TWFya0ZvckxheW91dChpbWFnZVNpemVDaGFuZ2UsIHJlY3QpOwogfQogCi1ib29sIFJlbmRlcklt
YWdlOjp1cGRhdGVJbnRyaW5zaWNTaXplSWZOZWVkZWQoY29uc3QgTGF5b3V0U2l6ZSYgbmV3U2l6
ZSwgYm9vbCBpbWFnZVNpemVDaGFuZ2VkKQordm9pZCBSZW5kZXJJbWFnZTo6dXBkYXRlSW50cmlu
c2ljU2l6ZUlmTmVlZGVkKGNvbnN0IExheW91dFNpemUmIG5ld1NpemUpCiB7Ci0gICAgaWYgKG5l
d1NpemUgPT0gaW50cmluc2ljU2l6ZSgpICYmICFpbWFnZVNpemVDaGFuZ2VkKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkpCi0g
ICAgICAgIHJldHVybiBpbWFnZVNpemVDaGFuZ2VkOworICAgIGlmIChpbWFnZVJlc291cmNlKCku
ZXJyb3JPY2N1cnJlZCgpIHx8ICFtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkpCisgICAgICAg
IHJldHVybjsKICAgICBzZXRJbnRyaW5zaWNTaXplKG5ld1NpemUpOwotICAgIHJldHVybiB0cnVl
OwogfQogCiB2b2lkIFJlbmRlckltYWdlOjp1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCkKQEAgLTI4
Miw3ICsyNzksNyBAQCB2b2lkIFJlbmRlckltYWdlOjp1cGRhdGVJbm5lckNvbnRlbnRSZWN0CiAg
ICAgICAgIGltYWdlUmVzb3VyY2UoKS5zZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29udGFp
bmVyU2l6ZSk7CiB9CiAKLXZvaWQgUmVuZGVySW1hZ2U6OmltYWdlRGltZW5zaW9uc0NoYW5nZWQo
Ym9vbCBpbWFnZVNpemVDaGFuZ2VkLCBjb25zdCBJbnRSZWN0KiByZWN0KQordm9pZCBSZW5kZXJJ
bWFnZTo6cmVwYWludE9yTWFya0ZvckxheW91dChJbWFnZVNpemVDaGFuZ2VUeXBlIGltYWdlU2l6
ZUNoYW5nZSwgY29uc3QgSW50UmVjdCogcmVjdCkKIHsKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JF
U09MVVRJT04pCiAgICAgZG91YmxlIHNjYWxlID0gc3R5bGUoKS5pbWFnZVJlc29sdXRpb24oKTsK
QEAgLTI5MCwxMCArMjg3LDEzIEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlRGltZW5zaW9uc0No
YW5nZWQKICAgICAgICAgc2NhbGUgPSByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb248aW50Pihz
Y2FsZSk7CiAgICAgaWYgKHNjYWxlIDw9IDApCiAgICAgICAgIHNjYWxlID0gMTsKLSAgICBib29s
IGludHJpbnNpY1NpemVDaGFuZ2VkID0gdXBkYXRlSW50cmluc2ljU2l6ZUlmTmVlZGVkKGltYWdl
UmVzb3VyY2UoKS5pbnRyaW5zaWNTaXplKHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpIC8gc2NhbGUp
LCBpbWFnZVNpemVDaGFuZ2VkKTsKKyAgICBMYXlvdXRTaXplIG5ld0ludHJpbnNpY1NpemUgPSBp
bWFnZVJlc291cmNlKCkuaW50cmluc2ljU2l6ZShzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSAvIHNj
YWxlKTsKICNlbHNlCi0gICAgYm9vbCBpbnRyaW5zaWNTaXplQ2hhbmdlZCA9IHVwZGF0ZUludHJp
bnNpY1NpemVJZk5lZWRlZChpbWFnZVJlc291cmNlKCkuaW50cmluc2ljU2l6ZShzdHlsZSgpLmVm
ZmVjdGl2ZVpvb20oKSksIGltYWdlU2l6ZUNoYW5nZWQpOworICAgIExheW91dFNpemUgbmV3SW50
cmluc2ljU2l6ZSA9IGltYWdlUmVzb3VyY2UoKS5pbnRyaW5zaWNTaXplKHN0eWxlKCkuZWZmZWN0
aXZlWm9vbSgpKTsKICNlbmRpZgorICAgIExheW91dFNpemUgb2xkSW50cmluc2ljU2l6ZSA9IGlu
dHJpbnNpY1NpemUoKTsKKworICAgIHVwZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZChuZXdJbnRy
aW5zaWNTaXplKTsKIAogICAgIC8vIEluIHRoZSBjYXNlIG9mIGdlbmVyYXRlZCBpbWFnZSBjb250
ZW50IHVzaW5nIDpiZWZvcmUvOmFmdGVyL2NvbnRlbnQsIHdlIG1pZ2h0IG5vdCBiZQogICAgIC8v
IGluIHRoZSByZW5kZXIgdHJlZSB5ZXQuIEluIHRoYXQgY2FzZSwgd2UganVzdCBuZWVkIHRvIHVw
ZGF0ZSBvdXIgaW50cmluc2ljIHNpemUuCkBAIC0zMDIsNjYgKzMwMiw1MiBAQCB2b2lkIFJlbmRl
ckltYWdlOjppbWFnZURpbWVuc2lvbnNDaGFuZ2VkCiAgICAgaWYgKCFjb250YWluaW5nQmxvY2so
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91bGRSZXBhaW50ID0gdHJ1ZTsKLSAg
ICBpZiAoaW50cmluc2ljU2l6ZUNoYW5nZWQpIHsKLSAgICAgICAgaWYgKCFwcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzRGlydHkoKSkKLSAgICAgICAgICAgIHNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNE
aXJ0eSh0cnVlKTsKLQotICAgICAgICBib29sIGhhc092ZXJyaWRlU2l6ZSA9IGhhc092ZXJyaWRl
SGVpZ2h0KCkgfHwgaGFzT3ZlcnJpZGVXaWR0aCgpOwotICAgICAgICBpZiAoIWhhc092ZXJyaWRl
U2l6ZSAmJiAhaW1hZ2VTaXplQ2hhbmdlZCkgewotICAgICAgICAgICAgTG9naWNhbEV4dGVudENv
bXB1dGVkVmFsdWVzIGNvbXB1dGVkVmFsdWVzOwotICAgICAgICAgICAgY29tcHV0ZUxvZ2ljYWxX
aWR0aEluUmVnaW9uKGNvbXB1dGVkVmFsdWVzKTsKLSAgICAgICAgICAgIExheW91dFVuaXQgbmV3
V2lkdGggPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudDsKLSAgICAgICAgICAgIGNvbXB1dGVMb2dp
Y2FsSGVpZ2h0KGhlaWdodCgpLCAwLCBjb21wdXRlZFZhbHVlcyk7Ci0gICAgICAgICAgICBMYXlv
dXRVbml0IG5ld0hlaWdodCA9IGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50OworICAgIGJvb2wgaW1h
Z2VTb3VyY2VIYXNDaGFuZ2VkU2l6ZSA9IG9sZEludHJpbnNpY1NpemUgIT0gbmV3SW50cmluc2lj
U2l6ZSB8fCBpbWFnZVNpemVDaGFuZ2UgIT0gSW1hZ2VTaXplQ2hhbmdlTm9uZTsKIAotICAgICAg
ICAgICAgaW1hZ2VTaXplQ2hhbmdlZCA9IHdpZHRoKCkgIT0gbmV3V2lkdGggfHwgaGVpZ2h0KCkg
IT0gbmV3SGVpZ2h0OwotICAgICAgICB9CisgICAgaWYgKGltYWdlU291cmNlSGFzQ2hhbmdlZFNp
emUpCisgICAgICAgIHNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSh0cnVlKTsKIAotICAg
ICAgICAvLyBGSVhNRTogV2Ugb25seSBuZWVkIHRvIHJlY29tcHV0ZSB0aGUgY29udGFpbmluZyBi
bG9jaydzIHByZWZlcnJlZCBzaXplCi0gICAgICAgIC8vIGlmIHRoZSBjb250YWluaW5nIGJsb2Nr
J3Mgc2l6ZSBkZXBlbmRzIG9uIHRoZSBpbWFnZSdzIHNpemUgKGkuZS4sIHRoZSBjb250YWluZXIg
dXNlcyBzaHJpbmstdG8tZml0IHNpemluZykuCi0gICAgICAgIC8vIFRoZXJlJ3Mgbm8gZWFzeSB3
YXkgdG8gZGV0ZWN0IHRoYXQgc2hyaW5rLXRvLWZpdCBpcyBuZWVkZWQsIGFsd2F5cyBmb3JjZSBh
IGxheW91dC4KLSAgICAgICAgYm9vbCBjb250YWluaW5nQmxvY2tOZWVkc1RvUmVjb21wdXRlUHJl
ZmVycmVkU2l6ZSA9Ci0gICAgICAgICAgICBzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzUGVyY2Vu
dCgpCi0gICAgICAgICAgICB8fCBzdHlsZSgpLmxvZ2ljYWxNYXhXaWR0aCgpLmlzUGVyY2VudCgp
Ci0gICAgICAgICAgICB8fCBzdHlsZSgpLmxvZ2ljYWxNaW5XaWR0aCgpLmlzUGVyY2VudCgpOwot
Ci0gICAgICAgIGJvb2wgbGF5b3V0U2l6ZURlcGVuZHNPbkludHJpbnNpY1NpemUgPSBzdHlsZSgp
LmFzcGVjdFJhdGlvVHlwZSgpID09IEFzcGVjdFJhdGlvRnJvbUludHJpbnNpYzsKLQotICAgICAg
ICBpZiAoaW1hZ2VTaXplQ2hhbmdlZCB8fCBoYXNPdmVycmlkZVNpemUgfHwgY29udGFpbmluZ0Js
b2NrTmVlZHNUb1JlY29tcHV0ZVByZWZlcnJlZFNpemUgfHwgbGF5b3V0U2l6ZURlcGVuZHNPbklu
dHJpbnNpY1NpemUpIHsKLSAgICAgICAgICAgIHNob3VsZFJlcGFpbnQgPSBmYWxzZTsKLSAgICAg
ICAgICAgIGlmICghc2VsZk5lZWRzTGF5b3V0KCkpCi0gICAgICAgICAgICAgICAgc2V0TmVlZHNM
YXlvdXQoKTsKLSAgICAgICAgfQorICAgIC8vIElmIHRoZSBhY3R1YWwgYXJlYSBvY2N1cGllZCBi
eSB0aGUgaW1hZ2UgaGFzIGNoYW5nZWQgYW5kIGl0IGlzIG5vdCBjb25zdHJhaW5lZCBieSBzdHls
ZSB0aGVuIGEgbGF5b3V0IGlzIHJlcXVpcmVkLgorICAgIGJvb2wgaW1hZ2VTaXplSXNDb25zdHJh
aW5lZCA9IHN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNTcGVjaWZpZWQoKSAmJiBzdHlsZSgpLmxv
Z2ljYWxIZWlnaHQoKS5pc1NwZWNpZmllZCgpOworICAgIGJvb2wgbmVlZHNMYXlvdXQgPSAhaW1h
Z2VTaXplSXNDb25zdHJhaW5lZCAmJiBpbWFnZVNvdXJjZUhhc0NoYW5nZWRTaXplOwogCi0gICAg
ICAgIGlmIChldmVySGFkTGF5b3V0KCkgJiYgIXNlbGZOZWVkc0xheW91dCgpKSB7Ci0gICAgICAg
ICAgICAvLyBUaGUgaW5uZXIgY29udGVudCByZWN0YW5nbGUgaXMgY2FsY3VsYXRlZCBkdXJpbmcg
bGF5b3V0LCBidXQgbWF5IG5lZWQgYW4gdXBkYXRlIG5vdwotICAgICAgICAgICAgLy8gKHVubGVz
cyB0aGUgYm94IGhhcyBhbHJlYWR5IGJlZW4gc2NoZWR1bGVkIGZvciBsYXlvdXQpLiBJbiBvcmRl
ciB0byBjYWxjdWxhdGUgaXQsIHdlCi0gICAgICAgICAgICAvLyBtYXkgbmVlZCB2YWx1ZXMgZnJv
bSB0aGUgY29udGFpbmluZyBibG9jaywgdGhvdWdoLCBzbyBtYWtlIHN1cmUgdGhhdCB3ZSdyZSBu
b3QgdG9vCi0gICAgICAgICAgICAvLyBlYXJseS4gSXQgbWF5IGJlIHRoYXQgbGF5b3V0IGhhc24n
dCBldmVuIHRha2VuIHBsYWNlIG9uY2UgeWV0LgotCi0gICAgICAgICAgICAvLyBGSVhNRTogd2Ug
c2hvdWxkIG5vdCBoYXZlIHRvIHRyaWdnZXIgYW5vdGhlciBjYWxsIHRvIHNldENvbnRhaW5lclNp
emVGb3JSZW5kZXJlcigpCi0gICAgICAgICAgICAvLyBmcm9tIGhlcmUsIHNpbmNlIGl0J3MgYWxy
ZWFkeSBiZWluZyBkb25lIGR1cmluZyBsYXlvdXQuCi0gICAgICAgICAgICB1cGRhdGVJbm5lckNv
bnRlbnRSZWN0KCk7Ci0gICAgICAgIH0KKyAgICAvLyBGSVhNRTogV2Ugb25seSBuZWVkIHRvIHJl
Y29tcHV0ZSB0aGUgY29udGFpbmluZyBibG9jaydzIHByZWZlcnJlZCBzaXplCisgICAgLy8gaWYg
dGhlIGNvbnRhaW5pbmcgYmxvY2sncyBzaXplIGRlcGVuZHMgb24gdGhlIGltYWdlJ3Mgc2l6ZSAo
aS5lLiwgdGhlIGNvbnRhaW5lciB1c2VzIHNocmluay10by1maXQgc2l6aW5nKS4KKyAgICAvLyBU
aGVyZSdzIG5vIGVhc3kgd2F5IHRvIGRldGVjdCB0aGF0IHNocmluay10by1maXQgaXMgbmVlZGVk
LCBhbHdheXMgZm9yY2UgYSBsYXlvdXQuCisgICAgYm9vbCBjb250YWluaW5nQmxvY2tOZWVkc1Rv
UmVjb21wdXRlUHJlZmVycmVkU2l6ZSA9CisgICAgICAgIHN0eWxlKCkubG9naWNhbFdpZHRoKCku
aXNQZXJjZW50KCkKKyAgICAgICAgfHwgc3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgoKS5pc1BlcmNl
bnQoKQorICAgICAgICB8fCBzdHlsZSgpLmxvZ2ljYWxNaW5XaWR0aCgpLmlzUGVyY2VudCgpOwor
CisgICAgYm9vbCBsYXlvdXRTaXplRGVwZW5kc09uSW50cmluc2ljU2l6ZSA9IHN0eWxlKCkuYXNw
ZWN0UmF0aW9UeXBlKCkgPT0gQXNwZWN0UmF0aW9Gcm9tSW50cmluc2ljOworCisgICAgaWYgKG5l
ZWRzTGF5b3V0IHx8IGNvbnRhaW5pbmdCbG9ja05lZWRzVG9SZWNvbXB1dGVQcmVmZXJyZWRTaXpl
IHx8IGxheW91dFNpemVEZXBlbmRzT25JbnRyaW5zaWNTaXplKSB7CisgICAgICAgIHNldE5lZWRz
TGF5b3V0KCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoc2hvdWxkUmVwYWlu
dCkgewotICAgICAgICBMYXlvdXRSZWN0IHJlcGFpbnRSZWN0OwotICAgICAgICBpZiAocmVjdCkg
ewotICAgICAgICAgICAgLy8gVGhlIGltYWdlIGNoYW5nZWQgcmVjdCBpcyBpbiBzb3VyY2UgaW1h
Z2UgY29vcmRpbmF0ZXMgKHByZS16b29taW5nKSwKLSAgICAgICAgICAgIC8vIHNvIG1hcCBmcm9t
IHRoZSBib3VuZHMgb2YgdGhlIGltYWdlIHRvIHRoZSBjb250ZW50c0JveC4KLSAgICAgICAgICAg
IHJlcGFpbnRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtYXBSZWN0KCpyZWN0LCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBpbWFnZVJlc291cmNlKCkuaW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJv
eFJlY3QoKSkpOwotICAgICAgICAgICAgLy8gR3VhcmQgYWdhaW5zdCB0b28tbGFyZ2UgY2hhbmdl
ZCByZWN0cy4KLSAgICAgICAgICAgIHJlcGFpbnRSZWN0LmludGVyc2VjdChjb250ZW50Qm94UmVj
dCgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXBhaW50UmVjdCA9IGNvbnRlbnRC
b3hSZWN0KCk7Ci0gICAgICAgIAotICAgICAgICByZXBhaW50UmVjdGFuZ2xlKHJlcGFpbnRSZWN0
KTsKKyAgICBpZiAoZXZlckhhZExheW91dCgpICYmICFzZWxmTmVlZHNMYXlvdXQoKSkgeworICAg
ICAgICAvLyBUaGUgaW5uZXIgY29udGVudCByZWN0YW5nbGUgaXMgY2FsY3VsYXRlZCBkdXJpbmcg
bGF5b3V0LCBidXQgbWF5IG5lZWQgYW4gdXBkYXRlIG5vdworICAgICAgICAvLyAodW5sZXNzIHRo
ZSBib3ggaGFzIGFscmVhZHkgYmVlbiBzY2hlZHVsZWQgZm9yIGxheW91dCkuIEluIG9yZGVyIHRv
IGNhbGN1bGF0ZSBpdCwgd2UKKyAgICAgICAgLy8gbWF5IG5lZWQgdmFsdWVzIGZyb20gdGhlIGNv
bnRhaW5pbmcgYmxvY2ssIHRob3VnaCwgc28gbWFrZSBzdXJlIHRoYXQgd2UncmUgbm90IHRvbwor
ICAgICAgICAvLyBlYXJseS4gSXQgbWF5IGJlIHRoYXQgbGF5b3V0IGhhc24ndCBldmVuIHRha2Vu
IHBsYWNlIG9uY2UgeWV0LgogCi0gICAgICAgIC8vIFRlbGwgYW55IHBvdGVudGlhbCBjb21wb3Np
dGluZyBsYXllcnMgdGhhdCB0aGUgaW1hZ2UgbmVlZHMgdXBkYXRpbmcuCi0gICAgICAgIGNvbnRl
bnRDaGFuZ2VkKEltYWdlQ2hhbmdlZCk7CisgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgbm90
IGhhdmUgdG8gdHJpZ2dlciBhbm90aGVyIGNhbGwgdG8gc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRl
cmVyKCkKKyAgICAgICAgLy8gZnJvbSBoZXJlLCBzaW5jZSBpdCdzIGFscmVhZHkgYmVpbmcgZG9u
ZSBkdXJpbmcgbGF5b3V0LgorICAgICAgICB1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCk7CiAgICAg
fQorCisgICAgTGF5b3V0UmVjdCByZXBhaW50UmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7CisgICAg
aWYgKHJlY3QpIHsKKyAgICAgICAgLy8gVGhlIGltYWdlIGNoYW5nZWQgcmVjdCBpcyBpbiBzb3Vy
Y2UgaW1hZ2UgY29vcmRpbmF0ZXMgKHByZS16b29taW5nKSwKKyAgICAgICAgLy8gc28gbWFwIGZy
b20gdGhlIGJvdW5kcyBvZiB0aGUgaW1hZ2UgdG8gdGhlIGNvbnRlbnRzQm94LgorICAgICAgICBy
ZXBhaW50UmVjdC5pbnRlcnNlY3QoZW5jbG9zaW5nSW50UmVjdChtYXBSZWN0KCpyZWN0LCBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVJlc291cmNlKCkuaW1hZ2VTaXplKDEuMGYpKSwgcmVw
YWludFJlY3QpKSk7CisgICAgfQorICAgICAgICAKKyAgICByZXBhaW50UmVjdGFuZ2xlKHJlcGFp
bnRSZWN0KTsKKworICAgIC8vIFRlbGwgYW55IHBvdGVudGlhbCBjb21wb3NpdGluZyBsYXllcnMg
dGhhdCB0aGUgaW1hZ2UgbmVlZHMgdXBkYXRpbmcuCisgICAgY29udGVudENoYW5nZWQoSW1hZ2VD
aGFuZ2VkKTsKIH0KIAogdm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqIG5ld0ltYWdlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmgJKHJldmlzaW9uIDE4MTUxMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywxMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBIVE1MQXJlYUVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIAorZW51
bSBJbWFnZVNpemVDaGFuZ2VUeXBlIHsKKyAgICBJbWFnZVNpemVDaGFuZ2VOb25lLAorICAgIElt
YWdlU2l6ZUNoYW5nZUZvckFsdFRleHQKK307CisKIGNsYXNzIFJlbmRlckltYWdlIDogcHVibGlj
IFJlbmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKICAgICBSZW5kZXJJbWFnZShFbGVtZW50JiwgUmVm
PFJlbmRlclN0eWxlPiYmLCBTdHlsZUltYWdlKiA9IG51bGxwdHIsIGNvbnN0IGZsb2F0ID0gMS4w
Zik7CkBAIC00Myw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZW5kZXJJbWFnZVJlc291
cmNlJiBpbWFnZVJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gKm1faW1hZ2VSZXNvdXJjZTsgfQog
ICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGltYWdlUmVzb3Vy
Y2UoKS5jYWNoZWRJbWFnZSgpOyB9CiAKLSAgICBib29sIHNldEltYWdlU2l6ZUZvckFsdFRleHQo
Q2FjaGVkSW1hZ2UqIG5ld0ltYWdlID0gMCk7CisgICAgSW1hZ2VTaXplQ2hhbmdlVHlwZSBzZXRJ
bWFnZVNpemVGb3JBbHRUZXh0KENhY2hlZEltYWdlKiBuZXdJbWFnZSA9IG51bGxwdHIpOwogCiAg
ICAgdm9pZCB1cGRhdGVBbHRUZXh0KCk7CiAKQEAgLTc0LDcgKzc5LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqKSBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNo
YW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0
KiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwYWludEludG9SZWN0KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIGZpbmFsOwpAQCAtMTA3LDggKzEx
Miw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHNoYWRvd0NvbnRyb2xzTmVlZEN1c3Rv
bUxheW91dE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgSW50U2l6ZSBp
bWFnZVNpemVGb3JFcnJvcihDYWNoZWRJbWFnZSopIGNvbnN0OwotICAgIHZvaWQgaW1hZ2VEaW1l
bnNpb25zQ2hhbmdlZChib29sIGltYWdlU2l6ZUNoYW5nZWQsIGNvbnN0IEludFJlY3QqID0gMCk7
Ci0gICAgYm9vbCB1cGRhdGVJbnRyaW5zaWNTaXplSWZOZWVkZWQoY29uc3QgTGF5b3V0U2l6ZSYs
IGJvb2wgaW1hZ2VTaXplQ2hhbmdlZCk7CisgICAgdm9pZCByZXBhaW50T3JNYXJrRm9yTGF5b3V0
KEltYWdlU2l6ZUNoYW5nZVR5cGUsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cik7CisgICAgdm9p
ZCB1cGRhdGVJbnRyaW5zaWNTaXplSWZOZWVkZWQoY29uc3QgTGF5b3V0U2l6ZSYpOwogICAgIC8v
IFVwZGF0ZSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgdG8gYmUgcmVuZGVyZWQuIE9iamVjdC1maXQg
bWF5IGNhdXNlIHRoaXMgdG8gYmUgZGlmZmVyZW50IGZyb20gdGhlIENTUyBib3gncyBjb250ZW50
IHJlY3QuCiAgICAgdm9pZCB1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMTgxNTEzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMs
MTAgQEAgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQmIFJlbmRlclNWR0ZvcmVpZwogCiB2b2lkIFJl
bmRlclNWR0ZvcmVpZ25PYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2Fi
bGVkKCkKLSAgICAgICAgfHwgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3Vu
ZCAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZVNlbGVjdGlvbikpCisgICAgaWYgKHBh
aW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgJiYgcGFpbnRJ
bmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAg
IFBhaW50SW5mbyBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOwpAQCAtNjUsMzAgKzY3LDMwIEBA
IHZvaWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6cGFpbnQoUGFpbnQKICAgICAgICAgY2hpbGRQ
YWludEluZm8uY29udGV4dC0+Y2xpcChtX3ZpZXdwb3J0KTsKIAogICAgIFNWR1JlbmRlcmluZ0Nv
bnRleHQgcmVuZGVyaW5nQ29udGV4dDsKLSAgICBib29sIGNvbnRpbnVlUmVuZGVyaW5nID0gdHJ1
ZTsKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CiAg
ICAgICAgIHJlbmRlcmluZ0NvbnRleHQucHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCgqdGhpcywg
Y2hpbGRQYWludEluZm8pOwotICAgICAgICBjb250aW51ZVJlbmRlcmluZyA9IHJlbmRlcmluZ0Nv
bnRleHQuaXNSZW5kZXJpbmdQcmVwYXJlZCgpOworICAgICAgICBpZiAoIXJlbmRlcmluZ0NvbnRl
eHQuaXNSZW5kZXJpbmdQcmVwYXJlZCgpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChjb250aW51ZVJlbmRlcmluZykgewotICAgICAgICAvLyBQYWludCBhbGwgcGhhc2Vz
IG9mIEZPIGVsZW1lbnRzIGF0b21pY2FsbHksIGFzIHRob3VnaCB0aGUgRk8gZWxlbWVudCBlc3Rh
Ymxpc2hlZCBpdHMKLSAgICAgICAgLy8gb3duIHN0YWNraW5nIGNvbnRleHQuCi0gICAgICAgIGJv
b2wgcHJlc2VydmVQaGFzZSA9IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9u
IHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlVGV4dENsaXA7Ci0gICAgICAgIExheW91
dFBvaW50IGNoaWxkUG9pbnQgPSBJbnRQb2ludCgpOwotICAgICAgICBjaGlsZFBhaW50SW5mby5w
aGFzZSA9IHByZXNlcnZlUGhhc2UgPyBwYWludEluZm8ucGhhc2UgOiBQYWludFBoYXNlQmxvY2tC
YWNrZ3JvdW5kOwotICAgICAgICBSZW5kZXJCbG9jazo6cGFpbnQoY2hpbGRQYWludEluZm8sIElu
dFBvaW50KCkpOwotICAgICAgICBpZiAoIXByZXNlcnZlUGhhc2UpIHsKLSAgICAgICAgICAgIGNo
aWxkUGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kczsKLSAg
ICAgICAgICAgIFJlbmRlckJsb2NrOjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQb2ludCk7
Ci0gICAgICAgICAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VGbG9hdDsKLSAg
ICAgICAgICAgIFJlbmRlckJsb2NrOjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQb2ludCk7
Ci0gICAgICAgICAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VGb3JlZ3JvdW5k
OwotICAgICAgICAgICAgUmVuZGVyQmxvY2s6OnBhaW50KGNoaWxkUGFpbnRJbmZvLCBjaGlsZFBv
aW50KTsKLSAgICAgICAgICAgIGNoaWxkUGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZU91dGxp
bmU7Ci0gICAgICAgICAgICBSZW5kZXJCbG9jazo6cGFpbnQoY2hpbGRQYWludEluZm8sIGNoaWxk
UG9pbnQpOwotICAgICAgICB9CisgICAgTGF5b3V0UG9pbnQgY2hpbGRQb2ludCA9IEludFBvaW50
KCk7CisgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKSB7Cisg
ICAgICAgIFJlbmRlckJsb2NrOjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQb2ludCk7Cisg
ICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICAvLyBQYWludCBhbGwgcGhhc2VzIG9mIEZPIGVs
ZW1lbnRzIGF0b21pY2FsbHksIGFzIHRob3VnaCB0aGUgRk8gZWxlbWVudCBlc3RhYmxpc2hlZCBp
dHMKKyAgICAvLyBvd24gc3RhY2tpbmcgY29udGV4dC4KKyAgICBjaGlsZFBhaW50SW5mby5waGFz
ZSA9IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQ7CisgICAgUmVuZGVyQmxvY2s6OnBhaW50KGNo
aWxkUGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKKyAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9IFBh
aW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHM7CisgICAgUmVuZGVyQmxvY2s6OnBhaW50KGNo
aWxkUGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKKyAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9IFBh
aW50UGhhc2VGbG9hdDsKKyAgICBSZW5kZXJCbG9jazo6cGFpbnQoY2hpbGRQYWludEluZm8sIGNo
aWxkUG9pbnQpOworICAgIGNoaWxkUGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZUZvcmVncm91
bmQ7CisgICAgUmVuZGVyQmxvY2s6OnBhaW50KGNoaWxkUGFpbnRJbmZvLCBjaGlsZFBvaW50KTsK
KyAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VPdXRsaW5lOworICAgIFJlbmRl
ckJsb2NrOjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQb2ludCk7CiB9CiAKIExheW91dFJl
Y3QgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE4MTY3NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE1LTAzLTE4ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoaW5nIGJldHdlZW4gdHdv
IFNWRyBpbWFnZXMgd2l0aCBubyBpbnRyaW5zaWMgc2l6ZXMgY2F1c2VzIHRoZW0gdG8gZ2V0IHRo
ZSBkZWZhdWx0IFNWRyBzaXplIGluc3RlYWQgb2YgdGhlIGNvbnRhaW5lciBzaXplLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyODA1LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3ZnL2FzLWltYWdl
L3N2Zy1uby1pbnRyaW5zaWMtc2l6ZS1zd2l0Y2hpbmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogc3ZnL2FzLWltYWdlL3N2Zy1uby1pbnRyaW5zaWMtc2l6ZS1zd2l0Y2hpbmcuaHRt
bDogQWRkZWQuCisgICAgICAgIEVuc3VyZSB0aGF0IHN3aXRjaGluZyB0aGUgc291cmNlIG9mIGFu
IDxpbWc+IGVsZW1lbnQgYmV0d2VlbiB0d28gU1ZHIGltYWdlcywKKyAgICAgICAgd2hpY2ggaGF2
ZSBubyBpbnRyaW5zaWMgc2l6ZXMsIGdldHMgdGhlIGltYWdlIHRoZSBzaXplIG9mIHRoZSBjb250
YWluZXIgYW5kCisgICAgICAgIG5vdCB0aGUgZGVmYXVsdCBTVkcgaW50cmluc2ljIHNpemUgd2hp
Y2ggaXMgMzAweDE1MCBwaXhlbHMuCisKIDIwMTUtMDMtMTcgIEdlb2ZmcmV5IEdhcmVuICA8Z2dh
cmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBGdW5jdGlvbiBib2RpZXMgc2hvdWxkIGFsd2F5cyBp
bmNsdWRlIGJyYWNlcwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1uby1pbnRy
aW5zaWMtc2l6ZS1zd2l0Y2hpbmctZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLW5vLWludHJpbnNpYy1zaXplLXN3aXRjaGluZy1leHBlY3Rl
ZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1uby1p
bnRyaW5zaWMtc2l6ZS1zd2l0Y2hpbmctZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4K
KyAgICBkaXYub3V0ZXIgeworICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgaGVpZ2h0OiAxMDBw
eDsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKyAgICBkaXYuaW5uZXIg
eworICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgbGVmdDogNzVweDsKKyAgICAgIHRv
cDogMjVweDsKKyAgICAgIHdpZHRoOiAxNTBweDsKKyAgICAgIGhlaWdodDogNTBweDsKKyAgICAg
IGJhY2tncm91bmQtY29sb3I6IGxpbWU7CisgICAgfQorICA8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+CisgIDxkaXYgY2xhc3M9Im91dGVyIj4KKyAgICA8ZGl2IGNsYXNzPSJpbm5lciI+PC9kaXY+
CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FzLWlt
YWdlL3N2Zy1uby1pbnRyaW5zaWMtc2l6ZS1zd2l0Y2hpbmcuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLW5vLWludHJpbnNpYy1zaXplLXN3aXRjaGluZy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1uby1pbnRy
aW5zaWMtc2l6ZS1zd2l0Y2hpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgICBkaXYgewor
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgIGJhY2tncm91
bmQtY29sb3I6IHJlZDsKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
ImNoYW5nZUltYWdlKCdvcmFuZ2UnKSI+CisgIDxkaXY+CisgICAgPGltZyBoZWlnaHQ9IjEwMCIg
aWQ9ImltYWdlXzEiIG9ubG9hZD0ib25sb2FkSW1hZ2UoKSI+CisgIDwvZGl2PgorICA8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgIAorICAgIGZ1bmN0aW9uIG9ubG9hZEltYWdlKCkgeworICAgICAgdmFyIGNv
bG9ycyA9IFsib3JhbmdlIiwgImdyZWVuIiwgInNhbG1vbiIsICJ5ZWxsb3ciLCAiZ3JlZW4iXTsK
KworICAgICAgaWYgKHR5cGVvZiBvbmxvYWRJbWFnZS5jb3VudGVyID09ICd1bmRlZmluZWQnKQor
ICAgICAgICBvbmxvYWRJbWFnZS5jb3VudGVyID0gMDsKKworICAgICAgaWYgKCsrb25sb2FkSW1h
Z2UuY291bnRlciA9PSBjb2xvcnMubGVuZ3RoKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgcmV0dXJu
OworICAgICAgfQorCisgICAgICBjaGFuZ2VJbWFnZShjb2xvcnNbb25sb2FkSW1hZ2UuY291bnRl
cl0pOworICAgIH0gICAgCisgICAgZnVuY3Rpb24gY2hhbmdlSW1hZ2UobmFtZSkgeworICAgICAg
dmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlXzEnKTsKKyAgICAgIHN3
aXRjaCAobmFtZSkgeworICAgICAgY2FzZSAnb3JhbmdlJzoKKyAgICAgICAgaW1hZ2Uuc3JjID0g
ImRhdGE6aW1hZ2Uvc3ZnK3htbCwgXAorICAgICAgICAgIDxzdmcgdmVyc2lvbj0nMS4xJyB4bWxu
cz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyMDAgMjAwJyB3aWR0
aD0nMTAwJyBoZWlnaHQ9JzEwMCc+IFwKKyAgICAgICAgICAgIDxyZWN0IHdpZHRoPScxMDAlJyBo
ZWlnaHQ9JzEwMCUnIGZpbGw9J29yYW5nZScvPiBcCisgICAgICAgICAgICA8cmVjdCB4PScyNSUn
IHk9JzI1JScgd2lkdGg9JzUwJScgaGVpZ2h0PSc1MCUnIGZpbGw9J2xpbWUnLz4gXAorICAgICAg
ICAgIDwvc3ZnPiI7CisgICAgICAgIGJyZWFrOworCisgICAgICBkZWZhdWx0OgorICAgICAgICBp
bWFnZS5zcmMgPSAiZGF0YTppbWFnZS9zdmcreG1sLCBcCisgICAgICAgICAgPHN2ZyB2ZXJzaW9u
PScxLjEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+IFwKKyAgICAgICAgICAg
IDxyZWN0IHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9JyIgKyBuYW1lICsgIicvPiBc
CisgICAgICAgICAgICA8cmVjdCB4PScyNSUnIHk9JzI1JScgd2lkdGg9JzUwJScgaGVpZ2h0PSc1
MCUnIGZpbGw9J2xpbWUnLz4gXAorICAgICAgICAgIDwvc3ZnPiI7CisgICAgICAgIGJyZWFrOwor
ICAgICAgfQorICAgIH0KKyAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249005</attachid>
            <date>2015-03-18 18:22:29 -0700</date>
            <delta_ts>2015-03-18 19:15:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142805-20150318182157.patch</filename>
            <type>text/plain</type>
            <size>22840</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE1LTAzLTE4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoaW5n
IGJldHdlZW4gdHdvIFNWRyBpbWFnZXMgd2l0aCBubyBpbnRyaW5zaWMgc2l6ZXMgY2F1c2VzIHRo
ZW0gdG8gZ2V0IHRoZSBkZWZhdWx0IFNWRyBzaXplIGluc3RlYWQgb2YgdGhlIGNvbnRhaW5lciBz
aXplLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQy
ODA1LgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorICAgICAgICAKKyAgICAg
ICAgVGhlIGJ1ZyBoYXBwZW5zIGR1ZSB0byB3cm9uZyBsb2dpYyBpbiBSZW5kZXJJbWFnZTo6aW1h
Z2VEaW1lbnNpb25zQ2hhbmdlZCgpLgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGRlY2lkZXMgdG8g
c2V0TmVlZHNMYXlvdXQoKSBpZiB0aGUgaW50cmluc2ljIHNpemUgb2YgdGhlIGltYWdlCisgICAg
ICAgIGNoYW5nZXMuIElmIHRoZSBzaXplIGRvZXMgbm90IGNoYW5nZSwgaXQgb25seSByZXBhaW50
cyB0aGUgaW1hZ2UgcmVjdGFuZ2xlLgorICAgICAgICBXaGVuIHN3aXRjaGluZyB0aGUgc3JjIG9m
IHRoZSBhbiBpbWFnZSBiZXR3ZWVuIHR3byBTVkcgaW1hZ2VzIGFuZCBib3RoIG9mCisgICAgICAg
IHRoZW0gaGF2ZSBubyBpbnRyaW5zaWMgc2l6ZSwgd2UgZG8gbm90IHVwZGF0ZUlubmVyQ29udGVu
dFJlY3QoKSBhbmQgdGhpcworICAgICAgICBtZWFucyBhbiBTVkdJbWFnZUZvckNvbnRhaW5lciBp
cyBub3QgZ29pbmcgdG8gYmUgY3JlYXRlZCBmb3IgdGhpcyBpbWFnZS4KKyAgICAgICAgV2hlbiB0
aGUgaW1hZ2UgaXMgZHJhd24sIGl0IGlzIGRyYXduIGRpcmVjdGx5IGZyb20gdGhlIFNWR0ltYWdl
LiBBbmQgdGhpcworICAgICAgICBtZWFucyB0aGUgZHJhd2luZyBoYXMgdG8gYmUgc2NhbGVkIGJ5
IGNvbnRhaW5lcl9zaXplIC8gU1ZHX2RlZmF1bHRfaW50cmluc2ljX3NpemUKKyAgICAgICAgCisg
ICAgICAgIEFmdGVyIGZpZ3VyaW5nIG91dCB0aGF0IEkgbmVlZCB0byB1cGRhdGVJbm5lckNvbnRl
bnRSZWN0KCkgdG8gZml4IHRoaXMgYnVnLAorICAgICAgICBJIGZvdW5kIG91dCBCbGluayBoYXMg
YWxyZWFkeSBjaGFuZ2VkIHRoaXMgY29kZSB0byBkbyB0aGUgc2FtZSB0aGluZy4gQnV0IAorICAg
ICAgICB0aGV5IGFsc28gZGlkIG1vcmUgY2xlYW4tdXAgaW4gdGhpcyBmdW5jdGlvbi4gSGVyZSBp
cyB0aGUgbGluaworICAgICAgICBodHRwczovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzExNDMy
MzAwNC4gSSB0aGluayB0aGVpciBjaGFuZ2Ugc2VlbXMgY29ycmVjdAorICAgICAgICBhbHRob3Vn
aCB0aGV5IGRpZCBub3Qgc2F5IHdoYXQgZXhhY3RseSB0aGV5IHdlcmUgdHJ5aW5nIHRvIGZpeC4K
KyAgICAgICAgCisgICAgICAgIFRoZSBwbGFuIGZvciByZXBhaW50T3JNYXJrRm9yTGF5b3V0KCks
IHdoaWNoIGlzIHRoZSBuZXcgbmFtZSBvZiB0aGlzIGZ1bmN0aW9uLAorICAgICAgICBpcyB0aGUg
Zm9sbG93aW5nOgorICAgICAgICAgICAgLS0gc2V0TmVlZExheW91dCgpIGlmIHRoZSBpbnRyaW5z
aWMgc2l6ZSBjaGFuZ2VzIGFuZCBpdCBhZmZlY3RzIHRoZSBzaXplCisgICAgICAgICAgICAgICBv
ZiB0aGUgaW1hZ2UuCisgICAgICAgICAgICAtLSB1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCkgaWYg
dGhlIGludHJpbnNpYyBzaXplIGRpZCBub3QgY2hhbmdlIGJ1dCB0aGUKKyAgICAgICAgICAgICAg
IGltYWdlIGhhcyBleGl0aW5nIGxheW91dC4KKyAgICAgICAgICAgIC0tIHJlcGFpbnQgdGhlIGlt
YWdlIHJlY3RhbmdsZSBpZiBsYXlvdXQgaXMgbm90IG5lZWRlZC4KKyAgICAgICAgICAgIAorICAg
ICAgICBUaGlzIGNoYW5nZSBhbHNvIHJlbW92ZXMgdGhlIGNhbGwgdG8gY29tcHV0ZUxvZ2ljYWxX
aWR0aEluUmVnaW9uKCksIHdoaWNoIGlzCisgICAgICAgIGFsbW9zdCBydW5uaW5nIGEgbGF5b3V0
IGZvciB0aGUgaW1hZ2UuIFRoaXMgY2FsbCBmaWd1cmVzIG91dCB3aGV0aGVyIHRoZSBpbWFnZQor
ICAgICAgICBuZWVkcyB0byBzZXROZWVkc0xheW91dCgpLiBUaGlzIGNhbGwgaXMgdW5uZWNlc3Nh
cnk7IHRoZSBpbWFnZSBuZWVkcyB0byBydW4gYQorICAgICAgICBsYXlvdXQgaWYgdGhlIGludHJp
bnNpYyBzaXplIGhhcyBjaGFuZ2VkIGFuZCBpdCBhZmZlY3RzIHRoZSBzaXplIG9mIHRoZSBpbWFn
ZS4KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFRlc3Q6IHN2Zy9hcy1pbWFnZS9zdmct
bm8taW50cmluc2ljLXNpemUtc3dpdGNoaW5nLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6c3R5bGVEaWRD
aGFuZ2UpOiBDaGFuZ2UgdGhlIGZ1bmN0aW9uIGNhbGwuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKTogUmVuYW1lIGxvY2FsIHZhcmlhYmxlIGFuZCBjaGFuZ2Ug
dGhlCisgICAgICAgIGZ1bmN0aW9uIGNhbGwuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2U6OnVwZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZCk6IFNpbXBsaWZ5IHRoaXMg
ZnVuY3Rpb24uCisgICAgICAgIENhbGwgc2V0SW50cmluc2ljU2l6ZSgpIHdpdGggdGhlIG5ldyBz
aXplIHVubGVzcyB0aGUgaW1hZ2UgaXMgaW4gZXJyb3Igc3RhdGUuCisgICAgICAgIAorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnJlcGFpbnRPck1hcmtGb3JMYXlvdXQpOiBUaGlzIGEg
YmV0dGVyIG5hbWUgZm9yIHRoaXMKKyAgICAgICAgZnVuY3Rpb24gc2luY2UgaXQgaXMgY2FsbGVk
IGV2ZW4gaWYgdGhlIGludHJpbnNpYyBzaXplIHdhcyBub3QgY2hhbmdlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckltYWdlOjppbWFnZURpbWVuc2lvbnNDaGFuZ2VkKTogRGVsZXRlZC4KKyAg
ICAgICAgCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6IFJlbmFtZSBpbWFnZURp
bWVuc2lvbnNDaGFuZ2VkKCkgYW5kIGNoYW5nZSB0aGUgCisgICAgICAgIHVwZGF0ZUludHJpbnNp
Y1NpemVJZk5lZWRlZCgpIHRvIHJldHVybiB2b2lkLgorICAgICAgICAKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6cGFpbnQpOiBDb2RlIGNsZWFudXAuIFRoaXMgZnVuY3Rp
b24gY2FuCisgICAgICAgIG9ubHkgaGFuZGxlIHRoZSBwYWludCBwaGFzZXMgUGFpbnRQaGFzZUZv
cmVncm91bmQgYW5kIFBhaW50UGhhc2VTZWxlY3Rpb24uCisgICAgICAgIFVzZSB0aGlzIGluZm9y
bWF0aW9uIHRvIHNpbXBsaWZ5IHRoZSBsb2dpYyBhbmQgb3JkZXIgb2YgcGFpbnRpbmcgdGhlcmUu
CisKIDIwMTUtMDMtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTWFjXVtpT1NdIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKCkgLyBzdG9wU2hhcmVkVGlt
ZXIoKSBhcmUgZXhwZW5zaXZlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAJKHJldmlzaW9uIDE4MTUxMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw3ICsxODAsNyBAQCBJbnRTaXpl
IFJlbmRlckltYWdlOjppbWFnZVNpemVGb3JFcnJvcihDCiAKIC8vIFNldHMgdGhlIGltYWdlIGhl
aWdodCBhbmQgd2lkdGggdG8gZml0IHRoZSBhbHQgdGV4dC4gIFJldHVybnMgdHJ1ZSBpZiB0aGUK
IC8vIGltYWdlIHNpemUgY2hhbmdlZC4KLWJvb2wgUmVuZGVySW1hZ2U6OnNldEltYWdlU2l6ZUZv
ckFsdFRleHQoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlIC8qID0gMCAqLykKK0ltYWdlU2l6ZUNoYW5n
ZVR5cGUgUmVuZGVySW1hZ2U6OnNldEltYWdlU2l6ZUZvckFsdFRleHQoQ2FjaGVkSW1hZ2UqIG5l
d0ltYWdlIC8qID0gMCAqLykKIHsKICAgICBJbnRTaXplIGltYWdlU2l6ZTsKICAgICBpZiAobmV3
SW1hZ2UgJiYgbmV3SW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIodGhpcykpCkBAIC0xOTgsMTAgKzE5
OCwxMCBAQCBib29sIFJlbmRlckltYWdlOjpzZXRJbWFnZVNpemVGb3JBbHRUZXh0CiAgICAgfQog
CiAgICAgaWYgKGltYWdlU2l6ZSA9PSBpbnRyaW5zaWNTaXplKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIEltYWdlU2l6ZUNoYW5nZU5vbmU7CiAKICAgICBzZXRJbnRy
aW5zaWNTaXplKGltYWdlU2l6ZSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEltYWdl
U2l6ZUNoYW5nZUZvckFsdFRleHQ7CiB9CiAKIHZvaWQgUmVuZGVySW1hZ2U6OnN0eWxlRGlkQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCkBA
IC0yMDksMTIgKzIwOSwxMiBAQCB2b2lkIFJlbmRlckltYWdlOjpzdHlsZURpZENoYW5nZShTdHls
ZURpCiAgICAgUmVuZGVyUmVwbGFjZWQ6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsK
ICAgICBpZiAobV9uZWVkc1RvU2V0U2l6ZUZvckFsdFRleHQpIHsKICAgICAgICAgaWYgKCFtX2Fs
dFRleHQuaXNFbXB0eSgpICYmIHNldEltYWdlU2l6ZUZvckFsdFRleHQoaW1hZ2VSZXNvdXJjZSgp
LmNhY2hlZEltYWdlKCkpKQotICAgICAgICAgICAgaW1hZ2VEaW1lbnNpb25zQ2hhbmdlZCh0cnVl
IC8qIGltYWdlU2l6ZUNoYW5nZWQgKi8pOworICAgICAgICAgICAgcmVwYWludE9yTWFya0Zvckxh
eW91dChJbWFnZVNpemVDaGFuZ2VGb3JBbHRUZXh0KTsKICAgICAgICAgbV9uZWVkc1RvU2V0U2l6
ZUZvckFsdFRleHQgPSBmYWxzZTsKICAgICB9CiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRB
VElPTikKICAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VMYXlvdXQgJiYgb2xkU3R5bGUt
PmltYWdlT3JpZW50YXRpb24oKSAhPSBzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSkKLSAgICAg
ICAgcmV0dXJuIGltYWdlRGltZW5zaW9uc0NoYW5nZWQodHJ1ZSAvKiBpbWFnZVNpemVDaGFuZ2Vk
ICovKTsKKyAgICAgICAgcmV0dXJuIHJlcGFpbnRPck1hcmtGb3JMYXlvdXQoSW1hZ2VTaXplQ2hh
bmdlRm9yQWx0VGV4dCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElP
TikKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpzdHlsZURpZENoYW5nZShT
dHlsZURpCiAgICAgICAgICYmIChvbGRTdHlsZS0+aW1hZ2VSZXNvbHV0aW9uKCkgIT0gc3R5bGUo
KS5pbWFnZVJlc29sdXRpb24oKQogICAgICAgICAgICAgfHwgb2xkU3R5bGUtPmltYWdlUmVzb2x1
dGlvblNuYXAoKSAhPSBzdHlsZSgpLmltYWdlUmVzb2x1dGlvblNuYXAoKQogICAgICAgICAgICAg
fHwgb2xkU3R5bGUtPmltYWdlUmVzb2x1dGlvblNvdXJjZSgpICE9IHN0eWxlKCkuaW1hZ2VSZXNv
bHV0aW9uU291cmNlKCkpKQotICAgICAgICBpbWFnZURpbWVuc2lvbnNDaGFuZ2VkKHRydWUgLyog
aW1hZ2VTaXplQ2hhbmdlZCAqLyk7CisgICAgICAgIHJlcGFpbnRPck1hcmtGb3JMYXlvdXQoSW1h
Z2VTaXplQ2hhbmdlRm9yQWx0VGV4dDsKICNlbmRpZgogfQogCkBAIC0yNDYsNyArMjQ2LDcgQEAg
dm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbQogICAgICAgICBtX2RpZElu
Y3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQaXhlbENvdW50ID0gdHJ1ZTsKICAgICB9CiAKLSAgICBi
b29sIGltYWdlU2l6ZUNoYW5nZWQgPSBmYWxzZTsKKyAgICBJbWFnZVNpemVDaGFuZ2VUeXBlIGlt
YWdlU2l6ZUNoYW5nZSA9IEltYWdlU2l6ZUNoYW5nZU5vbmU7CiAKICAgICAvLyBTZXQgaW1hZ2Ug
ZGltZW5zaW9ucywgdGFraW5nIGludG8gYWNjb3VudCB0aGUgc2l6ZSBvZiB0aGUgYWx0IHRleHQu
CiAgICAgaWYgKGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkpIHsKQEAgLTI1OCwyMCAr
MjU4LDE3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW0KICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpbWFnZVNp
emVDaGFuZ2VkID0gc2V0SW1hZ2VTaXplRm9yQWx0VGV4dChpbWFnZVJlc291cmNlKCkuY2FjaGVk
SW1hZ2UoKSk7CisgICAgICAgIGltYWdlU2l6ZUNoYW5nZSA9IHNldEltYWdlU2l6ZUZvckFsdFRl
eHQoaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCkpOwogICAgIH0KIAotICAgIGltYWdlRGlt
ZW5zaW9uc0NoYW5nZWQoaW1hZ2VTaXplQ2hhbmdlZCwgcmVjdCk7CisgICAgcmVwYWludE9yTWFy
a0ZvckxheW91dChpbWFnZVNpemVDaGFuZ2UsIHJlY3QpOwogfQogCi1ib29sIFJlbmRlckltYWdl
Ojp1cGRhdGVJbnRyaW5zaWNTaXplSWZOZWVkZWQoY29uc3QgTGF5b3V0U2l6ZSYgbmV3U2l6ZSwg
Ym9vbCBpbWFnZVNpemVDaGFuZ2VkKQordm9pZCBSZW5kZXJJbWFnZTo6dXBkYXRlSW50cmluc2lj
U2l6ZUlmTmVlZGVkKGNvbnN0IExheW91dFNpemUmIG5ld1NpemUpCiB7Ci0gICAgaWYgKG5ld1Np
emUgPT0gaW50cmluc2ljU2l6ZSgpICYmICFpbWFnZVNpemVDaGFuZ2VkKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkpCi0gICAg
ICAgIHJldHVybiBpbWFnZVNpemVDaGFuZ2VkOworICAgIGlmIChpbWFnZVJlc291cmNlKCkuZXJy
b3JPY2N1cnJlZCgpIHx8ICFtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkpCisgICAgICAgIHJl
dHVybjsKICAgICBzZXRJbnRyaW5zaWNTaXplKG5ld1NpemUpOwotICAgIHJldHVybiB0cnVlOwog
fQogCiB2b2lkIFJlbmRlckltYWdlOjp1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCkKQEAgLTI4Miw3
ICsyNzksNyBAQCB2b2lkIFJlbmRlckltYWdlOjp1cGRhdGVJbm5lckNvbnRlbnRSZWN0CiAgICAg
ICAgIGltYWdlUmVzb3VyY2UoKS5zZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29udGFpbmVy
U2l6ZSk7CiB9CiAKLXZvaWQgUmVuZGVySW1hZ2U6OmltYWdlRGltZW5zaW9uc0NoYW5nZWQoYm9v
bCBpbWFnZVNpemVDaGFuZ2VkLCBjb25zdCBJbnRSZWN0KiByZWN0KQordm9pZCBSZW5kZXJJbWFn
ZTo6cmVwYWludE9yTWFya0ZvckxheW91dChJbWFnZVNpemVDaGFuZ2VUeXBlIGltYWdlU2l6ZUNo
YW5nZSwgY29uc3QgSW50UmVjdCogcmVjdCkKIHsKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09M
VVRJT04pCiAgICAgZG91YmxlIHNjYWxlID0gc3R5bGUoKS5pbWFnZVJlc29sdXRpb24oKTsKQEAg
LTI5MCwxMCArMjg3LDEzIEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlRGltZW5zaW9uc0NoYW5n
ZWQKICAgICAgICAgc2NhbGUgPSByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb248aW50PihzY2Fs
ZSk7CiAgICAgaWYgKHNjYWxlIDw9IDApCiAgICAgICAgIHNjYWxlID0gMTsKLSAgICBib29sIGlu
dHJpbnNpY1NpemVDaGFuZ2VkID0gdXBkYXRlSW50cmluc2ljU2l6ZUlmTmVlZGVkKGltYWdlUmVz
b3VyY2UoKS5pbnRyaW5zaWNTaXplKHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpIC8gc2NhbGUpLCBp
bWFnZVNpemVDaGFuZ2VkKTsKKyAgICBMYXlvdXRTaXplIG5ld0ludHJpbnNpY1NpemUgPSBpbWFn
ZVJlc291cmNlKCkuaW50cmluc2ljU2l6ZShzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSAvIHNjYWxl
KTsKICNlbHNlCi0gICAgYm9vbCBpbnRyaW5zaWNTaXplQ2hhbmdlZCA9IHVwZGF0ZUludHJpbnNp
Y1NpemVJZk5lZWRlZChpbWFnZVJlc291cmNlKCkuaW50cmluc2ljU2l6ZShzdHlsZSgpLmVmZmVj
dGl2ZVpvb20oKSksIGltYWdlU2l6ZUNoYW5nZWQpOworICAgIExheW91dFNpemUgbmV3SW50cmlu
c2ljU2l6ZSA9IGltYWdlUmVzb3VyY2UoKS5pbnRyaW5zaWNTaXplKHN0eWxlKCkuZWZmZWN0aXZl
Wm9vbSgpKTsKICNlbmRpZgorICAgIExheW91dFNpemUgb2xkSW50cmluc2ljU2l6ZSA9IGludHJp
bnNpY1NpemUoKTsKKworICAgIHVwZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZChuZXdJbnRyaW5z
aWNTaXplKTsKIAogICAgIC8vIEluIHRoZSBjYXNlIG9mIGdlbmVyYXRlZCBpbWFnZSBjb250ZW50
IHVzaW5nIDpiZWZvcmUvOmFmdGVyL2NvbnRlbnQsIHdlIG1pZ2h0IG5vdCBiZQogICAgIC8vIGlu
IHRoZSByZW5kZXIgdHJlZSB5ZXQuIEluIHRoYXQgY2FzZSwgd2UganVzdCBuZWVkIHRvIHVwZGF0
ZSBvdXIgaW50cmluc2ljIHNpemUuCkBAIC0zMDIsNjYgKzMwMiw1MiBAQCB2b2lkIFJlbmRlcklt
YWdlOjppbWFnZURpbWVuc2lvbnNDaGFuZ2VkCiAgICAgaWYgKCFjb250YWluaW5nQmxvY2soKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91bGRSZXBhaW50ID0gdHJ1ZTsKLSAgICBp
ZiAoaW50cmluc2ljU2l6ZUNoYW5nZWQpIHsKLSAgICAgICAgaWYgKCFwcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzRGlydHkoKSkKLSAgICAgICAgICAgIHNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0
eSh0cnVlKTsKLQotICAgICAgICBib29sIGhhc092ZXJyaWRlU2l6ZSA9IGhhc092ZXJyaWRlSGVp
Z2h0KCkgfHwgaGFzT3ZlcnJpZGVXaWR0aCgpOwotICAgICAgICBpZiAoIWhhc092ZXJyaWRlU2l6
ZSAmJiAhaW1hZ2VTaXplQ2hhbmdlZCkgewotICAgICAgICAgICAgTG9naWNhbEV4dGVudENvbXB1
dGVkVmFsdWVzIGNvbXB1dGVkVmFsdWVzOwotICAgICAgICAgICAgY29tcHV0ZUxvZ2ljYWxXaWR0
aEluUmVnaW9uKGNvbXB1dGVkVmFsdWVzKTsKLSAgICAgICAgICAgIExheW91dFVuaXQgbmV3V2lk
dGggPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudDsKLSAgICAgICAgICAgIGNvbXB1dGVMb2dpY2Fs
SGVpZ2h0KGhlaWdodCgpLCAwLCBjb21wdXRlZFZhbHVlcyk7Ci0gICAgICAgICAgICBMYXlvdXRV
bml0IG5ld0hlaWdodCA9IGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50OworICAgIGJvb2wgaW1hZ2VT
b3VyY2VIYXNDaGFuZ2VkU2l6ZSA9IG9sZEludHJpbnNpY1NpemUgIT0gbmV3SW50cmluc2ljU2l6
ZSB8fCBpbWFnZVNpemVDaGFuZ2UgIT0gSW1hZ2VTaXplQ2hhbmdlTm9uZTsKIAotICAgICAgICAg
ICAgaW1hZ2VTaXplQ2hhbmdlZCA9IHdpZHRoKCkgIT0gbmV3V2lkdGggfHwgaGVpZ2h0KCkgIT0g
bmV3SGVpZ2h0OwotICAgICAgICB9CisgICAgaWYgKGltYWdlU291cmNlSGFzQ2hhbmdlZFNpemUp
CisgICAgICAgIHNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eSh0cnVlKTsKIAotICAgICAg
ICAvLyBGSVhNRTogV2Ugb25seSBuZWVkIHRvIHJlY29tcHV0ZSB0aGUgY29udGFpbmluZyBibG9j
aydzIHByZWZlcnJlZCBzaXplCi0gICAgICAgIC8vIGlmIHRoZSBjb250YWluaW5nIGJsb2NrJ3Mg
c2l6ZSBkZXBlbmRzIG9uIHRoZSBpbWFnZSdzIHNpemUgKGkuZS4sIHRoZSBjb250YWluZXIgdXNl
cyBzaHJpbmstdG8tZml0IHNpemluZykuCi0gICAgICAgIC8vIFRoZXJlJ3Mgbm8gZWFzeSB3YXkg
dG8gZGV0ZWN0IHRoYXQgc2hyaW5rLXRvLWZpdCBpcyBuZWVkZWQsIGFsd2F5cyBmb3JjZSBhIGxh
eW91dC4KLSAgICAgICAgYm9vbCBjb250YWluaW5nQmxvY2tOZWVkc1RvUmVjb21wdXRlUHJlZmVy
cmVkU2l6ZSA9Ci0gICAgICAgICAgICBzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzUGVyY2VudCgp
Ci0gICAgICAgICAgICB8fCBzdHlsZSgpLmxvZ2ljYWxNYXhXaWR0aCgpLmlzUGVyY2VudCgpCi0g
ICAgICAgICAgICB8fCBzdHlsZSgpLmxvZ2ljYWxNaW5XaWR0aCgpLmlzUGVyY2VudCgpOwotCi0g
ICAgICAgIGJvb2wgbGF5b3V0U2l6ZURlcGVuZHNPbkludHJpbnNpY1NpemUgPSBzdHlsZSgpLmFz
cGVjdFJhdGlvVHlwZSgpID09IEFzcGVjdFJhdGlvRnJvbUludHJpbnNpYzsKLQotICAgICAgICBp
ZiAoaW1hZ2VTaXplQ2hhbmdlZCB8fCBoYXNPdmVycmlkZVNpemUgfHwgY29udGFpbmluZ0Jsb2Nr
TmVlZHNUb1JlY29tcHV0ZVByZWZlcnJlZFNpemUgfHwgbGF5b3V0U2l6ZURlcGVuZHNPbkludHJp
bnNpY1NpemUpIHsKLSAgICAgICAgICAgIHNob3VsZFJlcGFpbnQgPSBmYWxzZTsKLSAgICAgICAg
ICAgIGlmICghc2VsZk5lZWRzTGF5b3V0KCkpCi0gICAgICAgICAgICAgICAgc2V0TmVlZHNMYXlv
dXQoKTsKLSAgICAgICAgfQorICAgIC8vIElmIHRoZSBhY3R1YWwgYXJlYSBvY2N1cGllZCBieSB0
aGUgaW1hZ2UgaGFzIGNoYW5nZWQgYW5kIGl0IGlzIG5vdCBjb25zdHJhaW5lZCBieSBzdHlsZSB0
aGVuIGEgbGF5b3V0IGlzIHJlcXVpcmVkLgorICAgIGJvb2wgaW1hZ2VTaXplSXNDb25zdHJhaW5l
ZCA9IHN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNTcGVjaWZpZWQoKSAmJiBzdHlsZSgpLmxvZ2lj
YWxIZWlnaHQoKS5pc1NwZWNpZmllZCgpOworICAgIGJvb2wgbmVlZHNMYXlvdXQgPSAhaW1hZ2VT
aXplSXNDb25zdHJhaW5lZCAmJiBpbWFnZVNvdXJjZUhhc0NoYW5nZWRTaXplOwogCi0gICAgICAg
IGlmIChldmVySGFkTGF5b3V0KCkgJiYgIXNlbGZOZWVkc0xheW91dCgpKSB7Ci0gICAgICAgICAg
ICAvLyBUaGUgaW5uZXIgY29udGVudCByZWN0YW5nbGUgaXMgY2FsY3VsYXRlZCBkdXJpbmcgbGF5
b3V0LCBidXQgbWF5IG5lZWQgYW4gdXBkYXRlIG5vdwotICAgICAgICAgICAgLy8gKHVubGVzcyB0
aGUgYm94IGhhcyBhbHJlYWR5IGJlZW4gc2NoZWR1bGVkIGZvciBsYXlvdXQpLiBJbiBvcmRlciB0
byBjYWxjdWxhdGUgaXQsIHdlCi0gICAgICAgICAgICAvLyBtYXkgbmVlZCB2YWx1ZXMgZnJvbSB0
aGUgY29udGFpbmluZyBibG9jaywgdGhvdWdoLCBzbyBtYWtlIHN1cmUgdGhhdCB3ZSdyZSBub3Qg
dG9vCi0gICAgICAgICAgICAvLyBlYXJseS4gSXQgbWF5IGJlIHRoYXQgbGF5b3V0IGhhc24ndCBl
dmVuIHRha2VuIHBsYWNlIG9uY2UgeWV0LgotCi0gICAgICAgICAgICAvLyBGSVhNRTogd2Ugc2hv
dWxkIG5vdCBoYXZlIHRvIHRyaWdnZXIgYW5vdGhlciBjYWxsIHRvIHNldENvbnRhaW5lclNpemVG
b3JSZW5kZXJlcigpCi0gICAgICAgICAgICAvLyBmcm9tIGhlcmUsIHNpbmNlIGl0J3MgYWxyZWFk
eSBiZWluZyBkb25lIGR1cmluZyBsYXlvdXQuCi0gICAgICAgICAgICB1cGRhdGVJbm5lckNvbnRl
bnRSZWN0KCk7Ci0gICAgICAgIH0KKyAgICAvLyBGSVhNRTogV2Ugb25seSBuZWVkIHRvIHJlY29t
cHV0ZSB0aGUgY29udGFpbmluZyBibG9jaydzIHByZWZlcnJlZCBzaXplCisgICAgLy8gaWYgdGhl
IGNvbnRhaW5pbmcgYmxvY2sncyBzaXplIGRlcGVuZHMgb24gdGhlIGltYWdlJ3Mgc2l6ZSAoaS5l
LiwgdGhlIGNvbnRhaW5lciB1c2VzIHNocmluay10by1maXQgc2l6aW5nKS4KKyAgICAvLyBUaGVy
ZSdzIG5vIGVhc3kgd2F5IHRvIGRldGVjdCB0aGF0IHNocmluay10by1maXQgaXMgbmVlZGVkLCBh
bHdheXMgZm9yY2UgYSBsYXlvdXQuCisgICAgYm9vbCBjb250YWluaW5nQmxvY2tOZWVkc1RvUmVj
b21wdXRlUHJlZmVycmVkU2l6ZSA9CisgICAgICAgIHN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNQ
ZXJjZW50KCkKKyAgICAgICAgfHwgc3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgoKS5pc1BlcmNlbnQo
KQorICAgICAgICB8fCBzdHlsZSgpLmxvZ2ljYWxNaW5XaWR0aCgpLmlzUGVyY2VudCgpOworCisg
ICAgYm9vbCBsYXlvdXRTaXplRGVwZW5kc09uSW50cmluc2ljU2l6ZSA9IHN0eWxlKCkuYXNwZWN0
UmF0aW9UeXBlKCkgPT0gQXNwZWN0UmF0aW9Gcm9tSW50cmluc2ljOworCisgICAgaWYgKG5lZWRz
TGF5b3V0IHx8IGNvbnRhaW5pbmdCbG9ja05lZWRzVG9SZWNvbXB1dGVQcmVmZXJyZWRTaXplIHx8
IGxheW91dFNpemVEZXBlbmRzT25JbnRyaW5zaWNTaXplKSB7CisgICAgICAgIHNldE5lZWRzTGF5
b3V0KCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoc2hvdWxkUmVwYWludCkg
ewotICAgICAgICBMYXlvdXRSZWN0IHJlcGFpbnRSZWN0OwotICAgICAgICBpZiAocmVjdCkgewot
ICAgICAgICAgICAgLy8gVGhlIGltYWdlIGNoYW5nZWQgcmVjdCBpcyBpbiBzb3VyY2UgaW1hZ2Ug
Y29vcmRpbmF0ZXMgKHByZS16b29taW5nKSwKLSAgICAgICAgICAgIC8vIHNvIG1hcCBmcm9tIHRo
ZSBib3VuZHMgb2YgdGhlIGltYWdlIHRvIHRoZSBjb250ZW50c0JveC4KLSAgICAgICAgICAgIHJl
cGFpbnRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtYXBSZWN0KCpyZWN0LCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBpbWFnZVJlc291cmNlKCkuaW1hZ2VTaXplKDEuMGYpKSwgY29udGVudEJveFJl
Y3QoKSkpOwotICAgICAgICAgICAgLy8gR3VhcmQgYWdhaW5zdCB0b28tbGFyZ2UgY2hhbmdlZCBy
ZWN0cy4KLSAgICAgICAgICAgIHJlcGFpbnRSZWN0LmludGVyc2VjdChjb250ZW50Qm94UmVjdCgp
KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXBhaW50UmVjdCA9IGNvbnRlbnRCb3hS
ZWN0KCk7Ci0gICAgICAgIAotICAgICAgICByZXBhaW50UmVjdGFuZ2xlKHJlcGFpbnRSZWN0KTsK
KyAgICBpZiAoZXZlckhhZExheW91dCgpICYmICFzZWxmTmVlZHNMYXlvdXQoKSkgeworICAgICAg
ICAvLyBUaGUgaW5uZXIgY29udGVudCByZWN0YW5nbGUgaXMgY2FsY3VsYXRlZCBkdXJpbmcgbGF5
b3V0LCBidXQgbWF5IG5lZWQgYW4gdXBkYXRlIG5vdworICAgICAgICAvLyAodW5sZXNzIHRoZSBi
b3ggaGFzIGFscmVhZHkgYmVlbiBzY2hlZHVsZWQgZm9yIGxheW91dCkuIEluIG9yZGVyIHRvIGNh
bGN1bGF0ZSBpdCwgd2UKKyAgICAgICAgLy8gbWF5IG5lZWQgdmFsdWVzIGZyb20gdGhlIGNvbnRh
aW5pbmcgYmxvY2ssIHRob3VnaCwgc28gbWFrZSBzdXJlIHRoYXQgd2UncmUgbm90IHRvbworICAg
ICAgICAvLyBlYXJseS4gSXQgbWF5IGJlIHRoYXQgbGF5b3V0IGhhc24ndCBldmVuIHRha2VuIHBs
YWNlIG9uY2UgeWV0LgogCi0gICAgICAgIC8vIFRlbGwgYW55IHBvdGVudGlhbCBjb21wb3NpdGlu
ZyBsYXllcnMgdGhhdCB0aGUgaW1hZ2UgbmVlZHMgdXBkYXRpbmcuCi0gICAgICAgIGNvbnRlbnRD
aGFuZ2VkKEltYWdlQ2hhbmdlZCk7CisgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgbm90IGhh
dmUgdG8gdHJpZ2dlciBhbm90aGVyIGNhbGwgdG8gc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVy
KCkKKyAgICAgICAgLy8gZnJvbSBoZXJlLCBzaW5jZSBpdCdzIGFscmVhZHkgYmVpbmcgZG9uZSBk
dXJpbmcgbGF5b3V0LgorICAgICAgICB1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCk7CiAgICAgfQor
CisgICAgTGF5b3V0UmVjdCByZXBhaW50UmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7CisgICAgaWYg
KHJlY3QpIHsKKyAgICAgICAgLy8gVGhlIGltYWdlIGNoYW5nZWQgcmVjdCBpcyBpbiBzb3VyY2Ug
aW1hZ2UgY29vcmRpbmF0ZXMgKHByZS16b29taW5nKSwKKyAgICAgICAgLy8gc28gbWFwIGZyb20g
dGhlIGJvdW5kcyBvZiB0aGUgaW1hZ2UgdG8gdGhlIGNvbnRlbnRzQm94LgorICAgICAgICByZXBh
aW50UmVjdC5pbnRlcnNlY3QoZW5jbG9zaW5nSW50UmVjdChtYXBSZWN0KCpyZWN0LCBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBpbWFnZVJlc291cmNlKCkuaW1hZ2VTaXplKDEuMGYpKSwgcmVwYWlu
dFJlY3QpKSk7CisgICAgfQorICAgICAgICAKKyAgICByZXBhaW50UmVjdGFuZ2xlKHJlcGFpbnRS
ZWN0KTsKKworICAgIC8vIFRlbGwgYW55IHBvdGVudGlhbCBjb21wb3NpdGluZyBsYXllcnMgdGhh
dCB0aGUgaW1hZ2UgbmVlZHMgdXBkYXRpbmcuCisgICAgY29udGVudENoYW5nZWQoSW1hZ2VDaGFu
Z2VkKTsKIH0KIAogdm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UqIG5ld0ltYWdlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgJ
KHJldmlzaW9uIDE4MTUxMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBIVE1MQXJlYUVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIAorZW51bSBJ
bWFnZVNpemVDaGFuZ2VUeXBlIHsKKyAgICBJbWFnZVNpemVDaGFuZ2VOb25lLAorICAgIEltYWdl
U2l6ZUNoYW5nZUZvckFsdFRleHQKK307CisKIGNsYXNzIFJlbmRlckltYWdlIDogcHVibGljIFJl
bmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKICAgICBSZW5kZXJJbWFnZShFbGVtZW50JiwgUmVmPFJl
bmRlclN0eWxlPiYmLCBTdHlsZUltYWdlKiA9IG51bGxwdHIsIGNvbnN0IGZsb2F0ID0gMS4wZik7
CkBAIC00Myw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZW5kZXJJbWFnZVJlc291cmNl
JiBpbWFnZVJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gKm1faW1hZ2VSZXNvdXJjZTsgfQogICAg
IENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGltYWdlUmVzb3VyY2Uo
KS5jYWNoZWRJbWFnZSgpOyB9CiAKLSAgICBib29sIHNldEltYWdlU2l6ZUZvckFsdFRleHQoQ2Fj
aGVkSW1hZ2UqIG5ld0ltYWdlID0gMCk7CisgICAgSW1hZ2VTaXplQ2hhbmdlVHlwZSBzZXRJbWFn
ZVNpemVGb3JBbHRUZXh0KENhY2hlZEltYWdlKiBuZXdJbWFnZSA9IG51bGxwdHIpOwogCiAgICAg
dm9pZCB1cGRhdGVBbHRUZXh0KCk7CiAKQEAgLTc0LDcgKzc5LDcgQEAgcHJvdGVjdGVkOgogCiAg
ICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVu
ZGVyU3R5bGUqKSBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5n
ZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9
IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwYWludEludG9SZWN0KEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIGZpbmFsOwpAQCAtMTA3LDggKzExMiw4
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHNoYWRvd0NvbnRyb2xzTmVlZEN1c3RvbUxh
eW91dE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgSW50U2l6ZSBpbWFn
ZVNpemVGb3JFcnJvcihDYWNoZWRJbWFnZSopIGNvbnN0OwotICAgIHZvaWQgaW1hZ2VEaW1lbnNp
b25zQ2hhbmdlZChib29sIGltYWdlU2l6ZUNoYW5nZWQsIGNvbnN0IEludFJlY3QqID0gMCk7Ci0g
ICAgYm9vbCB1cGRhdGVJbnRyaW5zaWNTaXplSWZOZWVkZWQoY29uc3QgTGF5b3V0U2l6ZSYsIGJv
b2wgaW1hZ2VTaXplQ2hhbmdlZCk7CisgICAgdm9pZCByZXBhaW50T3JNYXJrRm9yTGF5b3V0KElt
YWdlU2l6ZUNoYW5nZVR5cGUsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cik7CisgICAgdm9pZCB1
cGRhdGVJbnRyaW5zaWNTaXplSWZOZWVkZWQoY29uc3QgTGF5b3V0U2l6ZSYpOwogICAgIC8vIFVw
ZGF0ZSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgdG8gYmUgcmVuZGVyZWQuIE9iamVjdC1maXQgbWF5
IGNhdXNlIHRoaXMgdG8gYmUgZGlmZmVyZW50IGZyb20gdGhlIENTUyBib3gncyBjb250ZW50IHJl
Y3QuCiAgICAgdm9pZCB1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0
LmNwcAkocmV2aXNpb24gMTgxNTEzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMsMTAg
QEAgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQmIFJlbmRlclNWR0ZvcmVpZwogCiB2b2lkIFJlbmRl
clNWR0ZvcmVpZ25PYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkKLSAgICAgICAgfHwgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCAm
JiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZVNlbGVjdGlvbikpCisgICAgaWYgKHBhaW50
SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgJiYgcGFpbnRJbmZv
LnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIFBh
aW50SW5mbyBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOwpAQCAtNjUsMzAgKzY3LDMwIEBAIHZv
aWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6cGFpbnQoUGFpbnQKICAgICAgICAgY2hpbGRQYWlu
dEluZm8uY29udGV4dC0+Y2xpcChtX3ZpZXdwb3J0KTsKIAogICAgIFNWR1JlbmRlcmluZ0NvbnRl
eHQgcmVuZGVyaW5nQ29udGV4dDsKLSAgICBib29sIGNvbnRpbnVlUmVuZGVyaW5nID0gdHJ1ZTsK
ICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CiAgICAg
ICAgIHJlbmRlcmluZ0NvbnRleHQucHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCgqdGhpcywgY2hp
bGRQYWludEluZm8pOwotICAgICAgICBjb250aW51ZVJlbmRlcmluZyA9IHJlbmRlcmluZ0NvbnRl
eHQuaXNSZW5kZXJpbmdQcmVwYXJlZCgpOworICAgICAgICBpZiAoIXJlbmRlcmluZ0NvbnRleHQu
aXNSZW5kZXJpbmdQcmVwYXJlZCgpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChjb250aW51ZVJlbmRlcmluZykgewotICAgICAgICAvLyBQYWludCBhbGwgcGhhc2VzIG9m
IEZPIGVsZW1lbnRzIGF0b21pY2FsbHksIGFzIHRob3VnaCB0aGUgRk8gZWxlbWVudCBlc3RhYmxp
c2hlZCBpdHMKLSAgICAgICAgLy8gb3duIHN0YWNraW5nIGNvbnRleHQuCi0gICAgICAgIGJvb2wg
cHJlc2VydmVQaGFzZSA9IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uIHx8
IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlVGV4dENsaXA7Ci0gICAgICAgIExheW91dFBv
aW50IGNoaWxkUG9pbnQgPSBJbnRQb2ludCgpOwotICAgICAgICBjaGlsZFBhaW50SW5mby5waGFz
ZSA9IHByZXNlcnZlUGhhc2UgPyBwYWludEluZm8ucGhhc2UgOiBQYWludFBoYXNlQmxvY2tCYWNr
Z3JvdW5kOwotICAgICAgICBSZW5kZXJCbG9jazo6cGFpbnQoY2hpbGRQYWludEluZm8sIEludFBv
aW50KCkpOwotICAgICAgICBpZiAoIXByZXNlcnZlUGhhc2UpIHsKLSAgICAgICAgICAgIGNoaWxk
UGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kczsKLSAgICAg
ICAgICAgIFJlbmRlckJsb2NrOjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQb2ludCk7Ci0g
ICAgICAgICAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VGbG9hdDsKLSAgICAg
ICAgICAgIFJlbmRlckJsb2NrOjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQb2ludCk7Ci0g
ICAgICAgICAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VGb3JlZ3JvdW5kOwot
ICAgICAgICAgICAgUmVuZGVyQmxvY2s6OnBhaW50KGNoaWxkUGFpbnRJbmZvLCBjaGlsZFBvaW50
KTsKLSAgICAgICAgICAgIGNoaWxkUGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZU91dGxpbmU7
Ci0gICAgICAgICAgICBSZW5kZXJCbG9jazo6cGFpbnQoY2hpbGRQYWludEluZm8sIGNoaWxkUG9p
bnQpOwotICAgICAgICB9CisgICAgTGF5b3V0UG9pbnQgY2hpbGRQb2ludCA9IEludFBvaW50KCk7
CisgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKSB7CisgICAg
ICAgIFJlbmRlckJsb2NrOjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQb2ludCk7CisgICAg
ICAgIHJldHVybjsKICAgICB9CisKKyAgICAvLyBQYWludCBhbGwgcGhhc2VzIG9mIEZPIGVsZW1l
bnRzIGF0b21pY2FsbHksIGFzIHRob3VnaCB0aGUgRk8gZWxlbWVudCBlc3RhYmxpc2hlZCBpdHMK
KyAgICAvLyBvd24gc3RhY2tpbmcgY29udGV4dC4KKyAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9
IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQ7CisgICAgUmVuZGVyQmxvY2s6OnBhaW50KGNoaWxk
UGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKKyAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9IFBhaW50
UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHM7CisgICAgUmVuZGVyQmxvY2s6OnBhaW50KGNoaWxk
UGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKKyAgICBjaGlsZFBhaW50SW5mby5waGFzZSA9IFBhaW50
UGhhc2VGbG9hdDsKKyAgICBSZW5kZXJCbG9jazo6cGFpbnQoY2hpbGRQYWludEluZm8sIGNoaWxk
UG9pbnQpOworICAgIGNoaWxkUGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZUZvcmVncm91bmQ7
CisgICAgUmVuZGVyQmxvY2s6OnBhaW50KGNoaWxkUGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKKyAg
ICBjaGlsZFBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VPdXRsaW5lOworICAgIFJlbmRlckJs
b2NrOjpwYWludChjaGlsZFBhaW50SW5mbywgY2hpbGRQb2ludCk7CiB9CiAKIExheW91dFJlY3Qg
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE4MTY3NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE1LTAzLTE4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNh
Ym91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoaW5nIGJldHdlZW4gdHdvIFNW
RyBpbWFnZXMgd2l0aCBubyBpbnRyaW5zaWMgc2l6ZXMgY2F1c2VzIHRoZW0gdG8gZ2V0IHRoZSBk
ZWZhdWx0IFNWRyBzaXplIGluc3RlYWQgb2YgdGhlIGNvbnRhaW5lciBzaXplLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyODA1LgorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogc3ZnL2FzLWltYWdlL3N2Zy1u
by1pbnRyaW5zaWMtc2l6ZS1zd2l0Y2hpbmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogc3ZnL2FzLWltYWdlL3N2Zy1uby1pbnRyaW5zaWMtc2l6ZS1zd2l0Y2hpbmcuaHRtbDogQWRk
ZWQuCisgICAgICAgIEVuc3VyZSB0aGF0IHN3aXRjaGluZyB0aGUgc291cmNlIG9mIGFuIDxpbWc+
IGVsZW1lbnQgYmV0d2VlbiB0d28gU1ZHIGltYWdlcywKKyAgICAgICAgd2hpY2ggaGF2ZSBubyBp
bnRyaW5zaWMgc2l6ZXMsIGdldHMgdGhlIGltYWdlIHRoZSBzaXplIG9mIHRoZSBjb250YWluZXIg
YW5kCisgICAgICAgIG5vdCB0aGUgZGVmYXVsdCBTVkcgaW50cmluc2ljIHNpemUgd2hpY2ggaXMg
MzAweDE1MCBwaXhlbHMuCisKIDIwMTUtMDMtMTcgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBGdW5jdGlvbiBib2RpZXMgc2hvdWxkIGFsd2F5cyBpbmNsdWRl
IGJyYWNlcwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1uby1pbnRyaW5zaWMt
c2l6ZS1zd2l0Y2hpbmctZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvYXMtaW1hZ2Uvc3ZnLW5vLWludHJpbnNpYy1zaXplLXN3aXRjaGluZy1leHBlY3RlZC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1uby1pbnRyaW5z
aWMtc2l6ZS1zd2l0Y2hpbmctZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgICBk
aXYub3V0ZXIgeworICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKyAgICBkaXYuaW5uZXIgeworICAg
ICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgbGVmdDogNzVweDsKKyAgICAgIHRvcDogMjVw
eDsKKyAgICAgIHdpZHRoOiAxNTBweDsKKyAgICAgIGhlaWdodDogNTBweDsKKyAgICAgIGJhY2tn
cm91bmQtY29sb3I6IGxpbWU7CisgICAgfQorICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cisg
IDxkaXYgY2xhc3M9Im91dGVyIj4KKyAgICA8ZGl2IGNsYXNzPSJpbm5lciI+PC9kaXY+CisgIDwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2
Zy1uby1pbnRyaW5zaWMtc2l6ZS1zd2l0Y2hpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLW5vLWludHJpbnNpYy1zaXplLXN3aXRjaGluZy5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1uby1pbnRyaW5zaWMt
c2l6ZS1zd2l0Y2hpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgICBkaXYgeworICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgIGJhY2tncm91bmQtY29s
b3I6IHJlZDsKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImNoYW5n
ZUltYWdlKCdvcmFuZ2UnKSI+CisgIDxkaXY+CisgICAgPGltZyBoZWlnaHQ9IjEwMCIgaWQ9Imlt
YWdlXzEiIG9ubG9hZD0ib25sb2FkSW1hZ2UoKSI+CisgIDwvZGl2PgorICA8c2NyaXB0PgorICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgIAorICAgIGZ1bmN0aW9uIG9ubG9hZEltYWdlKCkgeworICAgICAgdmFyIGNvbG9ycyA9
IFsib3JhbmdlIiwgImdyZWVuIiwgInNhbG1vbiIsICJ5ZWxsb3ciLCAiZ3JlZW4iXTsKKworICAg
ICAgaWYgKHR5cGVvZiBvbmxvYWRJbWFnZS5jb3VudGVyID09ICd1bmRlZmluZWQnKQorICAgICAg
ICBvbmxvYWRJbWFnZS5jb3VudGVyID0gMDsKKworICAgICAgaWYgKCsrb25sb2FkSW1hZ2UuY291
bnRlciA9PSBjb2xvcnMubGVuZ3RoKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgcmV0dXJuOworICAg
ICAgfQorCisgICAgICBjaGFuZ2VJbWFnZShjb2xvcnNbb25sb2FkSW1hZ2UuY291bnRlcl0pOwor
ICAgIH0gICAgCisgICAgZnVuY3Rpb24gY2hhbmdlSW1hZ2UobmFtZSkgeworICAgICAgdmFyIGlt
YWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlXzEnKTsKKyAgICAgIHN3aXRjaCAo
bmFtZSkgeworICAgICAgY2FzZSAnb3JhbmdlJzoKKyAgICAgICAgaW1hZ2Uuc3JjID0gImRhdGE6
aW1hZ2Uvc3ZnK3htbCwgXAorICAgICAgICAgIDxzdmcgdmVyc2lvbj0nMS4xJyB4bWxucz0naHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyMDAgMjAwJyB3aWR0aD0nMTAw
JyBoZWlnaHQ9JzEwMCc+IFwKKyAgICAgICAgICAgIDxyZWN0IHdpZHRoPScxMDAlJyBoZWlnaHQ9
JzEwMCUnIGZpbGw9J29yYW5nZScvPiBcCisgICAgICAgICAgICA8cmVjdCB4PScyNSUnIHk9JzI1
JScgd2lkdGg9JzUwJScgaGVpZ2h0PSc1MCUnIGZpbGw9J2xpbWUnLz4gXAorICAgICAgICAgIDwv
c3ZnPiI7CisgICAgICAgIGJyZWFrOworCisgICAgICBkZWZhdWx0OgorICAgICAgICBpbWFnZS5z
cmMgPSAiZGF0YTppbWFnZS9zdmcreG1sLCBcCisgICAgICAgICAgPHN2ZyB2ZXJzaW9uPScxLjEn
IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+IFwKKyAgICAgICAgICAgIDxyZWN0
IHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9JyIgKyBuYW1lICsgIicvPiBcCisgICAg
ICAgICAgICA8cmVjdCB4PScyNSUnIHk9JzI1JScgd2lkdGg9JzUwJScgaGVpZ2h0PSc1MCUnIGZp
bGw9J2xpbWUnLz4gXAorICAgICAgICAgIDwvc3ZnPiI7CisgICAgICAgIGJyZWFrOworICAgICAg
fQorICAgIH0KKyAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>