<?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>109330</bug_id>
          
          <creation_ts>2013-02-08 15:51:06 -0800</creation_ts>
          <short_desc>[CSS Filters] Refactor filter outsets into a class</short_desc>
          <delta_ts>2013-02-13 17:01:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>
          
          <blocked>109098</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Max Vujovic">mvujovic</reporter>
          <assigned_to name="Max Vujovic">mvujovic</assigned_to>
          <cc>achicu</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>luiz</cc>
    
    <cc>michelangelo</cc>
    
    <cc>noam</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>828801</commentid>
    <comment_count>0</comment_count>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-02-08 15:51:06 -0800</bug_when>
    <thetext>In filters related code, we&apos;re often operating on 4 ints representing the top, right, bottom, and left outsets from a filter like blur or drop-shadow.

Here are some signs that we should make a class to hold those 4 ints:
1) In RenderLayer.cpp, we have a expandRectForFilterOutsets function, which looks like feature envy.
2) RenderStyle (and other classes) have getFilterOutsets methods which set 4 ints by reference. The calling code has to define 4 ints, which looks bloated. 
3) To fix bug 109098, we will need to check if filter outsets changed, which sounds like a nice job for an inequality operator. 

If we had a class for filter outsets called IntRectOutsets, for example, we could clean all these situations up. LayoutBoxExtent is somewhat similar to the proposed class, but it&apos;s more catered to layout concepts like logical vs. physical dimensions, and it holds LayoutUnits instead of ints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828847</commentid>
    <comment_count>1</comment_count>
      <attachid>187389</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-02-08 17:13:29 -0800</bug_when>
    <thetext>Created attachment 187389
Patch for Review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828848</commentid>
    <comment_count>2</comment_count>
      <attachid>187389</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-08 17:20:38 -0800</bug_when>
    <thetext>Comment on attachment 187389
Patch for Review

Attachment 187389 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16431879</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828849</commentid>
    <comment_count>3</comment_count>
      <attachid>187389</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-08 17:23:00 -0800</bug_when>
    <thetext>Comment on attachment 187389
Patch for Review

Attachment 187389 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16443909</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828858</commentid>
    <comment_count>4</comment_count>
      <attachid>187389</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-08 17:49:36 -0800</bug_when>
    <thetext>Comment on attachment 187389
Patch for Review

Attachment 187389 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16466023</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828862</commentid>
    <comment_count>5</comment_count>
      <attachid>187389</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-02-08 18:03:06 -0800</bug_when>
    <thetext>Comment on attachment 187389
Patch for Review

Attachment 187389 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/16428946</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828976</commentid>
    <comment_count>6</comment_count>
      <attachid>187389</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-08 23:23:35 -0800</bug_when>
    <thetext>Comment on attachment 187389
Patch for Review

Attachment 187389 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16476100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829124</commentid>
    <comment_count>7</comment_count>
      <attachid>187389</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-09 14:24:41 -0800</bug_when>
    <thetext>Comment on attachment 187389
Patch for Review

Attachment 187389 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16469565

New failing tests:
compositing/checkerboard.html
accessibility/anchor-linked-anonymous-block-crash.html
compositing/absolute-inside-out-of-view-fixed.html
animations/3d/matrix-transform-type-animation.html
http/tests/cache/cancel-multiple-post-xhrs.html
animations/3d/state-at-end-event-transform.html
animations/animation-add-events-in-handler.html
animations/additive-transform-animations.html
animations/3d/replace-filling-transform.html
http/tests/cache/history-only-cached-subresource-loads.html
compositing/bounds-in-flipped-writing-mode.html
accessibility/accessibility-node-reparent.html
animations/animation-border-overflow.html
accessibility/accessibility-object-detached.html
accessibility/anonymous-render-block-in-continuation-causes-crash.html
animations/animation-controller-drt-api.html
compositing/absolute-position-changed-with-composited-parent-layer.html
compositing/absolute-position-changed-in-composited-layer.html
http/tests/cache/iframe-304-crash.html
animations/3d/transform-perspective.html
http/tests/cache/cancel-during-failure-crash.html
canvas/philip/tests/2d.canvas.reference.html
canvas/philip/tests/2d.clearRect+fillRect.alpha0.5.html
canvas/philip/tests/2d.clearRect.basic.html
animations/3d/transform-origin-vs-functions.html
accessibility/accessibility-node-memory-management.html
animations/animation-css-rule-types.html
canvas/philip/tests/2d.clearRect+fillRect.basic.html
canvas/philip/tests/2d.clearRect+fillRect.alpha0.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829901</commentid>
    <comment_count>8</comment_count>
      <attachid>187618</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-02-11 11:09:37 -0800</bug_when>
    <thetext>Created attachment 187618
Patch for Review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830096</commentid>
    <comment_count>9</comment_count>
      <attachid>187618</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-02-11 14:03:11 -0800</bug_when>
    <thetext>Comment on attachment 187618
Patch for Review

Bots are looking good, setting r?.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831059</commentid>
    <comment_count>10</comment_count>
      <attachid>187618</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-12 10:32:28 -0800</bug_when>
    <thetext>Comment on attachment 187618
Patch for Review

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

&gt; Source/WebCore/platform/graphics/IntRectOutsets.h:16
&gt; + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER âAS ISâ AND ANY

Not sure if this is a error in the review tool or the patch (the cruft around AS IS)

&gt; Source/WebCore/platform/graphics/IntRectOutsets.h:39
&gt; +class IntRectOutsets {

I wonder if this should be called OutsetsIntRect? Our other rect classes are of the form &lt;Type&gt;Rect (e.g. IntRect) and &lt;Usecase&gt;Rect (e.g. LayoutRect). So it makes sense to be called &lt;Usecase&gt;&lt;Type&gt;Rect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831142</commentid>
    <comment_count>11</comment_count>
      <attachid>187618</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-02-12 12:02:40 -0800</bug_when>
    <thetext>Comment on attachment 187618
Patch for Review

Thanks very much for the review, Dean!

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

&gt;&gt; Source/WebCore/platform/graphics/IntRectOutsets.h:16
&gt;&gt; + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER âAS ISâ AND ANY
&gt; 
&gt; Not sure if this is a error in the review tool or the patch (the cruft around AS IS)

I think it&apos;s the review tool. Those are actually slanted quotes. They look fine in my text editor (Sublime Text 2) and the patch looks fine when viewed in the browser as plain text. I copy/pasted this header from some other file already in WebKit.

&gt;&gt; Source/WebCore/platform/graphics/IntRectOutsets.h:39
&gt;&gt; +class IntRectOutsets {
&gt; 
&gt; I wonder if this should be called OutsetsIntRect? Our other rect classes are of the form &lt;Type&gt;Rect (e.g. IntRect) and &lt;Usecase&gt;Rect (e.g. LayoutRect). So it makes sense to be called &lt;Usecase&gt;&lt;Type&gt;Rect.

I see your point. However, I&apos;m concerned that &quot;OutsetsIntRect&quot; sounds like it represents a rect instead of the outsets of a rect. I suppose one could think of the outsets as a rect, though.

To me, outsets represent the modification of a rect. Outsets are the same concept as margins or padding.

For RenderStyle margins, we use &quot;LengthBox&quot;. I don&apos;t especially like this name because it implies an actual box, not a modification of a box. However, if one interprets &quot;box&quot; as referring to the CSS box model, it can make sense.
In other code, we use &quot;LayoutBoxExtent&quot;. I like this name because it&apos;s implying a modification of a box.

We use the terms &quot;outsets&quot; and &quot;extent&quot; somewhat interchangeably in the codebase. We haven&apos;t used &quot;outsets&quot; in a class name, though. For example:

RenderBox.cpp:4014: 
LayoutBoxExtent borderOutsets = style()-&gt;borderImageOutsets();

I like the name &quot;IntRectExtent&quot; best. This one implies the modification of a rect, and it looks like LayoutBoxExtent.

Some other ideas I had were:
IntBoxExtent - This one implies it&apos;s the extent of an IntBox, but we don&apos;t have IntBoxes. We only have IntRects.
IntRectOutsets - This one uses the term &quot;outsets&quot;, which we haven&apos;t used in class names yet.

Whichever name we choose, I can typedef the name to FilterOutsets.

What do you think? I&apos;m fine with any choice, including your suggestion, since they all make sense in their own way :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831283</commentid>
    <comment_count>12</comment_count>
      <attachid>187618</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-12 14:46:53 -0800</bug_when>
    <thetext>Comment on attachment 187618
Patch for Review

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/IntRectOutsets.h:39
&gt;&gt;&gt; +class IntRectOutsets {
&gt;&gt; 
&gt;&gt; I wonder if this should be called OutsetsIntRect? Our other rect classes are of the form &lt;Type&gt;Rect (e.g. IntRect) and &lt;Usecase&gt;Rect (e.g. LayoutRect). So it makes sense to be called &lt;Usecase&gt;&lt;Type&gt;Rect.
&gt; 
&gt; I see your point. However, I&apos;m concerned that &quot;OutsetsIntRect&quot; sounds like it represents a rect instead of the outsets of a rect. I suppose one could think of the outsets as a rect, though.
&gt; 
&gt; To me, outsets represent the modification of a rect. Outsets are the same concept as margins or padding.
&gt; 
&gt; For RenderStyle margins, we use &quot;LengthBox&quot;. I don&apos;t especially like this name because it implies an actual box, not a modification of a box. However, if one interprets &quot;box&quot; as referring to the CSS box model, it can make sense.
&gt; In other code, we use &quot;LayoutBoxExtent&quot;. I like this name because it&apos;s implying a modification of a box.
&gt; 
&gt; We use the terms &quot;outsets&quot; and &quot;extent&quot; somewhat interchangeably in the codebase. We haven&apos;t used &quot;outsets&quot; in a class name, though. For example:
&gt; 
&gt; RenderBox.cpp:4014: 
&gt; LayoutBoxExtent borderOutsets = style()-&gt;borderImageOutsets();
&gt; 
&gt; I like the name &quot;IntRectExtent&quot; best. This one implies the modification of a rect, and it looks like LayoutBoxExtent.
&gt; 
&gt; Some other ideas I had were:
&gt; IntBoxExtent - This one implies it&apos;s the extent of an IntBox, but we don&apos;t have IntBoxes. We only have IntRects.
&gt; IntRectOutsets - This one uses the term &quot;outsets&quot;, which we haven&apos;t used in class names yet.
&gt; 
&gt; Whichever name we choose, I can typedef the name to FilterOutsets.
&gt; 
&gt; What do you think? I&apos;m fine with any choice, including your suggestion, since they all make sense in their own way :)

I don&apos;t have a strong opinion. IntRectExtent is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832331</commentid>
    <comment_count>13</comment_count>
      <attachid>188177</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-02-13 14:09:02 -0800</bug_when>
    <thetext>Created attachment 188177
Patch for Landing

Renamed IntRectOutsets to IntRectExtent. Created a FilterOutsets typedef. Running the bots again to make sure the refactor went ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832418</commentid>
    <comment_count>14</comment_count>
      <attachid>188177</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-02-13 15:36:55 -0800</bug_when>
    <thetext>Comment on attachment 188177
Patch for Landing

Bots are looking good. Setting cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832543</commentid>
    <comment_count>15</comment_count>
      <attachid>188177</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 17:01:03 -0800</bug_when>
    <thetext>Comment on attachment 188177
Patch for Landing

Rejecting attachment 188177 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=gce-cq-01&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 188177, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
t/git/webkit-commit-queue/Source/WebKit/chromium/v8 --revision 13634 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
53&gt;At revision 13634.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/16536358</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832544</commentid>
    <comment_count>16</comment_count>
      <attachid>188177</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 17:01:08 -0800</bug_when>
    <thetext>Comment on attachment 188177
Patch for Landing

Clearing flags on attachment: 188177

Committed r142823: &lt;http://trac.webkit.org/changeset/142823&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832545</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 17:01:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187389</attachid>
            <date>2013-02-08 17:13:29 -0800</date>
            <delta_ts>2013-02-11 11:09:37 -0800</delta_ts>
            <desc>Patch for Review</desc>
            <filename>109330-1.patch</filename>
            <type>text/plain</type>
            <size>22110</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTdhNDkzLi5hNTFhNmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTMtMDItMDggIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAg
ICAgIFtDU1MgRmlsdGVyc10gUmVmYWN0b3IgZmlsdGVyIG91dHNldHMgaW50byBhIGNsYXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkzMzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBmaWx0ZXJz
IHJlbGF0ZWQgY29kZSwgd2UncmUgb2Z0ZW4gb3BlcmF0aW5nIG9uIDQgaW50cyByZXByZXNlbnRp
bmcgdGhlIHRvcCwgcmlnaHQsCisgICAgICAgIGJvdHRvbSwgYW5kIGxlZnQgZmlsdGVyIG91dHNl
dHMuIFRoZXNlIG91dHNldHMgY29tZSBmcm9tIGEgZmlsdGVyIGxpa2UgYmx1ciBvciBkcm9wLXNo
YWRvdy4KKyAgICAgICAgVGhpcyBwYXRjaCBwYWNrYWdlcyB0aG9zZSBpbnRzIGFuZCB0aGVpciBy
ZWxhdGVkIG9wZXJhdGlvbnMgaW50byBhIGNsYXNzIGNhbGxlZAorICAgICAgICBJbnRSZWN0T3V0
c2V0cy4KKworICAgICAgICBIZXJlIGFyZSBzb21lIHNpZ25zIHRoYXQgd2Ugc2hvdWxkIG1ha2Ug
YSBjbGFzcyB0byBob2xkIHRob3NlIDQgaW50czoKKyAgICAgICAgMSkgSW4gUmVuZGVyTGF5ZXIu
Y3BwLCB3ZSBoYXZlIGEgZXhwYW5kUmVjdEZvckZpbHRlck91dHNldHMgZnVuY3Rpb24sIHdoaWNo
IGxvb2tzIGxpa2UKKyAgICAgICAgICAgZmVhdHVyZSBlbnZ5LgorICAgICAgICAyKSBSZW5kZXJT
dHlsZSBhbmQgb3RoZXIgY2xhc3NlcyBoYXZlIG1ldGhvZHMgbGlrZSBnZXRGaWx0ZXJPdXRzZXRz
IHdoaWNoIHNldCB0aGUgNCBpbnRzIGJ5CisgICAgICAgICAgIHJlZmVyZW5jZS4gVGhlIGNhbGxp
bmcgY29kZSBoYXMgdG8gZGVmaW5lIDQgaW50cywgd2hpY2ggbG9va3MgYmxvYXRlZC4KKyAgICAg
ICAgMykgVG8gZml4IGJ1ZyAxMDkwOTgsIHdlIHdpbGwgbmVlZCB0byBjaGVjayBpZiBmaWx0ZXIg
b3V0c2V0cyBjaGFuZ2VkLCB3aGljaCBzb3VuZHMgbGlrZSBhCisgICAgICAgICAgIG5pY2Ugam9i
IGZvciBhbiBpbmVxdWFsaXR5IG9wZXJhdG9yLiAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwOTA5OCkKKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBp
biBiZWhhdmlvci4gSnVzdCByZWZhY3RvcmluZy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ludFJlY3RPdXRzZXRzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChJbnRSZWN0T3V0c2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0
T3V0c2V0czo6SW50UmVjdE91dHNldHMpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdE91dHNl
dHM6OnRvcCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0T3V0c2V0czo6c2V0VG9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OkludFJlY3RPdXRzZXRzOjpyaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRSZWN0T3V0c2V0czo6c2V0UmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdE91
dHNldHM6OmJvdHRvbSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0T3V0c2V0czo6c2V0Qm90
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OkludFJlY3RPdXRzZXRzOjpsZWZ0KToKKyAgICAgICAg
KFdlYkNvcmU6OkludFJlY3RPdXRzZXRzOjpzZXRMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dFJlY3RPdXRzZXRzOjpleHBhbmRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludFJlY3RPdXRz
ZXRzOjphcmVaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcis9KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3V0c2V0cyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmg6CisgICAgICAgIChG
aWx0ZXJPcGVyYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRlckVm
ZmVjdFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpi
dWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y29tcHV0ZVNv
dXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmg6CisgICAgICAgIChGaWx0ZXJFZmZlY3RSZW5kZXJlcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpzZXRGaWx0ZXJCYWNrZW5kTmVlZHNSZXBhaW50aW5nSW5SZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OnRyYW5zcGFyZW5jeUNsaXBCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OmNhbGN1bGF0ZUxheWVyQm91bmRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaDoKKwogMjAxMy0wMi0wOCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAge0ZvY3VzSW4sRm9jdXNPdXQsRm9jdXMsQmx1cn1FdmVudERpc3Bh
dGNoTWVkaWF0b3Igc2hvdWxkIGJlIGluIEZvY3VzRXZlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCA5OTk5NjcxLi5hZDU1OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KQEAgLTU2MzQsNiArNTYzNCw3IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnRIYXNoLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ludFJlY3RPdXRzZXRzLmggXAkKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRTaXplLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ludFNpemVIYXNoLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xh
dGluMVRleHRJdGVyYXRvci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGRkMzEzYWEuLjM1MTc0NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQpAQCAtMjI0NCw2ICsyMjQ0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvSW50UG9pbnQuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnRI
YXNoLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaCBcCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvSW50UmVjdE91dHNldHMuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTGF0aW4x
VGV4dEl0ZXJhdG9yLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmggXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IGExMmU3NmQuLmVlNzdmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ2OTYsNiArNDY5Niw3
IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL0ludFJlY3RPdXRzZXRzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L0xheW91dFJlY3QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24u
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bWF0aW9uTWF0cml4LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDhmNmNhZS4uZTY5ZjU5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzg2OSw2ICsz
ODY5LDcgQEAKIAkJQTI5NTMyQ0YxNURENUUxNzAwNDY5RUJDIC8qIEN1c3RvbUZpbHRlclZhbGlk
YXRlZFByb2dyYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTI5NTMyQ0QxNURENUUxNzAwNDY5RUJDIC8qIEN1c3RvbUZpbHRlclZhbGlkYXRlZFBy
b2dyYW0uY3BwICovOyB9OwogCQlBMjk1MzJEMDE1REQ1RTE3MDA0NjlFQkMgLyogQ3VzdG9tRmls
dGVyVmFsaWRhdGVkUHJvZ3JhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTI5NTMyQ0UxNURENUUxNzAwNDY5RUJDIC8qIEN1c3RvbUZpbHRlclZhbGlk
YXRlZFByb2dyYW0uaCAqLzsgfTsKIAkJQTJCMkFFN0MxNjM3NUVFNTAwQ0ZBNTBCIC8qIEN1c3Rv
bUZpbHRlckNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTJCMkFFN0IxNjM3NUVFNTAwQ0ZBNTBCIC8qIEN1c3RvbUZpbHRlckNvbnN0YW50
cy5oICovOyB9OworCQlBMkI5MjE3MzE2QzVDQzQyMDA0MURDRDkgLyogSW50UmVjdE91dHNldHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEyQjkyMTcy
MTZDNUNDNDIwMDQxRENEOSAvKiBJbnRSZWN0T3V0c2V0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUEyRThBRTMwMTZBNDhFMUMwMDZCQjNBQSAv
KiBXZWJLaXRDU1NGaWx0ZXJSdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEEyRThBRTJFMTZBNDhFMUMwMDZCQjNBQSAvKiBXZWJLaXRDU1NGaWx0
ZXJSdWxlLmNwcCAqLzsgfTsKIAkJQTJFOEFFMzExNkE0OEUxQzAwNkJCM0FBIC8qIFdlYktpdENT
U0ZpbHRlclJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEEyRThBRTJGMTZBNDhFMUMwMDZCQjNBQSAvKiBXZWJLaXRDU1NGaWx0ZXJSdWxlLmggKi87
IH07CiAJCUEyRThBRTM3MTZBNDk4NDAwMDZCQjNBQSAvKiBKU1dlYktpdENTU0ZpbHRlclJ1bGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTJFOEFF
MzUxNkE0OTg0MDAwNkJCM0FBIC8qIEpTV2ViS2l0Q1NTRmlsdGVyUnVsZS5jcHAgKi87IH07CkBA
IC0xMTM0MCw2ICsxMTM0MSw3IEBACiAJCUEyOTUzMkNEMTVERDVFMTcwMDQ2OUVCQyAvKiBDdXN0
b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwOyBwYXRoID0gZmlsdGVy
cy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTI5NTMyQ0UxNURENUUxNzAwNDY5RUJDIC8qIEN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbS5oOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQ
cm9ncmFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEyQjJBRTdCMTYzNzVFRTUw
MENGQTUwQiAvKiBDdXN0b21GaWx0ZXJDb25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyQ29uc3RhbnRzLmg7IHBhdGggPSBmaWx0ZXJzL0N1c3Rv
bUZpbHRlckNvbnN0YW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMkI5MjE3
MjE2QzVDQzQyMDA0MURDRDkgLyogSW50UmVjdE91dHNldHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW50UmVjdE91dHNldHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTJFOEFFMkUxNkE0OEUxQzAwNkJCM0FBIC8qIFdlYktpdENTU0ZpbHRlclJ1bGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NTRmlsdGVyUnVs
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEyRThBRTJGMTZBNDhFMUMwMDZC
QjNBQSAvKiBXZWJLaXRDU1NGaWx0ZXJSdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYktpdENTU0ZpbHRlclJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTJFOEFFMzUxNkE0OTg0MDAwNkJCM0FBIC8qIEpTV2ViS2l0Q1NTRmlsdGVyUnVsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYktpdENTU0ZpbHRlclJ1
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA2MDUsNiArMjA2MDcsNyBA
QAogCQkJCUIyNzUzNTQ1MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0LmNwcCAqLywKIAkJCQlC
Mjc1MzU0NjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdC5oICovLAogCQkJCUUxMzRGNUFBMTJF
RTM0M0YwMDRFQzU4RCAvKiBJbnRSZWN0SGFzaC5oICovLAorCQkJCUEyQjkyMTcyMTZDNUNDNDIw
MDQxRENEOSAvKiBJbnRSZWN0T3V0c2V0cy5oICovLAogCQkJCUIyNzUzNTQ3MEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRTaXplLmggKi8sCiAJCQkJQjI3NTM1NDgwQjA1MzgxNDAwMkNFNjRGIC8qIElu
dFNpemVIYXNoLmggKi8sCiAJCQkJNjVDQzZCRUQxNjAxNEVDMDAwMEVEMjdEIC8qIExhdGluMVRl
eHRJdGVyYXRvci5oICovLApAQCAtMjQ2NzksNiArMjQ2ODIsNyBAQAogCQkJCUU0NjJBNEExMTEz
RTcxQkUwMDRBNDIyMCAvKiBJbnRQb2ludEhhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUz
NTc0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTM0
RjVBQjEyRUUzNDNGMDA0RUM1OEQgLyogSW50UmVjdEhhc2guaCBpbiBIZWFkZXJzICovLAorCQkJ
CUEyQjkyMTczMTZDNUNDNDIwMDQxRENEOSAvKiBJbnRSZWN0T3V0c2V0cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjI3NTM1NzUwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyNzUzNTc2MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplSGFzaC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUM4MUJBMEEwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxs
RnJhbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW50UmVjdE91dHNldHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ludFJlY3RPdXRzZXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNzEwYWJlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ludFJlY3RPdXRzZXRzLmgKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQor
ICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xh
aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW50UmVjdE91dHNldHNfaAorI2RlZmluZSBJbnRS
ZWN0T3V0c2V0c19oCisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisKKyNpbmNsdWRlICJMYXlv
dXRSZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW50UmVjdE91dHNldHMg
eworcHVibGljOgorICAgIEludFJlY3RPdXRzZXRzKCkKKyAgICAgICAgOiBtX3RvcCgwKQorICAg
ICAgICAsIG1fcmlnaHQoMCkKKyAgICAgICAgLCBtX2JvdHRvbSgwKQorICAgICAgICAsIG1fbGVm
dCgwKQorICAgIHsKKyAgICB9CisKKyAgICBJbnRSZWN0T3V0c2V0cyhpbnQgdG9wLCBpbnQgcmln
aHQsIGludCBib3R0b20sIGludCBsZWZ0KQorICAgICAgICA6IG1fdG9wKHRvcCkKKyAgICAgICAg
LCBtX3JpZ2h0KHJpZ2h0KQorICAgICAgICAsIG1fYm90dG9tKGJvdHRvbSkKKyAgICAgICAgLCBt
X2xlZnQobGVmdCkKKyAgICB7CisgICAgfQorCisgICAgaW50IHRvcCgpIGNvbnN0IHsgcmV0dXJu
IG1fdG9wOyB9CisgICAgdm9pZCBzZXRUb3AoaW50IHRvcCkgeyBtX3RvcCA9IHRvcDsgfQorCisg
ICAgaW50IHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yaWdodDsgfQorICAgIHZvaWQgc2V0Umln
aHQoaW50IHJpZ2h0KSB7IG1fcmlnaHQgPSByaWdodDsgfQorCisgICAgaW50IGJvdHRvbSgpIGNv
bnN0IHsgcmV0dXJuIG1fYm90dG9tOyB9CisgICAgdm9pZCBzZXRCb3R0b20oaW50IGJvdHRvbSkg
eyBtX2JvdHRvbSA9IGJvdHRvbTsgfQorCisgICAgaW50IGxlZnQoKSBjb25zdCB7IHJldHVybiBt
X2xlZnQ7IH0KKyAgICB2b2lkIHNldExlZnQoaW50IGxlZnQpIHsgbV9sZWZ0ID0gbGVmdDsgfQor
CisgICAgdm9pZCBleHBhbmRSZWN0KExheW91dFJlY3QmIHJlY3QpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoYXJlWmVybygpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHJlY3Qu
bW92ZSgtbGVmdCgpLCAtdG9wKCkpOworICAgICAgICByZWN0LmV4cGFuZChsZWZ0KCkgKyByaWdo
dCgpLCB0b3AoKSArIGJvdHRvbSgpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBhcmVa
ZXJvKCkgY29uc3QgeyByZXR1cm4gIWxlZnQoKSAmJiAhcmlnaHQoKSAmJiAhdG9wKCkgJiYgIWJv
dHRvbSgpOyB9CisKKyAgICBpbnQgbV90b3A7CisgICAgaW50IG1fcmlnaHQ7CisgICAgaW50IG1f
Ym90dG9tOworICAgIGludCBtX2xlZnQ7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEludFJlY3RPdXRzZXRzJiBhLCBjb25zdCBJbnRSZWN0T3V0c2V0cyYgYikKK3sKKyAgICBy
ZXR1cm4gYS50b3AoKSA9PSBiLnRvcCgpCisgICAgICAgICYmIGEucmlnaHQoKSA9PSBiLnJpZ2h0
KCkKKyAgICAgICAgJiYgYS5ib3R0b20oKSA9PSBiLmJvdHRvbSgpCisgICAgICAgICYmIGEubGVm
dCgpID09IGIubGVmdCgpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEludFJl
Y3RPdXRzZXRzJiBhLCBjb25zdCBJbnRSZWN0T3V0c2V0cyYgYikKK3sKKyAgICByZXR1cm4gIShh
ID09IGIpOworfQorCitpbmxpbmUgdm9pZCBvcGVyYXRvcis9KEludFJlY3RPdXRzZXRzJiBhLCBj
b25zdCBJbnRSZWN0T3V0c2V0cyYgYikKK3sKKyAgICBhLnNldFRvcChhLnRvcCgpICsgYi50b3Ao
KSk7CisgICAgYS5zZXRSaWdodChhLnJpZ2h0KCkgKyBiLnJpZ2h0KCkpOworICAgIGEuc2V0Qm90
dG9tKGEuYm90dG9tKCkgKyBiLmJvdHRvbSgpKTsKKyAgICBhLnNldExlZnQoYS5sZWZ0KCkgKyBi
LmxlZnQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShDU1NfRklMVEVSUykKKworI2VuZGlmIC8vIEludFJlY3RPdXRzZXRzX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbnMuY3BwCmluZGV4IGZjYjc0ZmMuLmU2ZjI5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b25zLmNwcApAQCAtMTE4LDMyICsxMTgsMzAgQEAgYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpoYXNP
dXRzZXRzKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgRmlsdGVyT3BlcmF0
aW9uczo6Z2V0T3V0c2V0cyhpbnQmIHRvcCwgaW50JiByaWdodCwgaW50JiBib3R0b20sIGludCYg
bGVmdCkgY29uc3QKK0ludFJlY3RPdXRzZXRzIEZpbHRlck9wZXJhdGlvbnM6Om91dHNldHMoKSBj
b25zdAogewotICAgIHRvcCA9IDA7Ci0gICAgcmlnaHQgPSAwOwotICAgIGJvdHRvbSA9IDA7Ci0g
ICAgbGVmdCA9IDA7CisgICAgSW50UmVjdE91dHNldHMgdG90YWxPdXRzZXRzOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9vcGVyYXRpb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEZp
bHRlck9wZXJhdGlvbiogZmlsdGVyT3BlcmF0aW9uID0gbV9vcGVyYXRpb25zLmF0KGkpLmdldCgp
OwogICAgICAgICBzd2l0Y2ggKGZpbHRlck9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpKSB7
CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7CiAgICAgICAgICAgICBCbHVy
RmlsdGVyT3BlcmF0aW9uKiBibHVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Qmx1ckZpbHRlck9w
ZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CiAgICAgICAgICAgICBmbG9hdCBzdGREZXZpYXRp
b24gPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKGJsdXJPcGVyYXRpb24tPnN0ZERldmlhdGlvbigpLCAw
KTsKLSAgICAgICAgICAgIEludFNpemUgb3V0c2V0ID0gb3V0c2V0U2l6ZUZvckJsdXIoc3RkRGV2
aWF0aW9uKTsKLSAgICAgICAgICAgIHRvcCArPSBvdXRzZXQuaGVpZ2h0KCk7Ci0gICAgICAgICAg
ICByaWdodCArPSBvdXRzZXQud2lkdGgoKTsKLSAgICAgICAgICAgIGJvdHRvbSArPSBvdXRzZXQu
aGVpZ2h0KCk7Ci0gICAgICAgICAgICBsZWZ0ICs9IG91dHNldC53aWR0aCgpOworICAgICAgICAg
ICAgSW50U2l6ZSBvdXRzZXRTaXplID0gb3V0c2V0U2l6ZUZvckJsdXIoc3RkRGV2aWF0aW9uKTsK
KyAgICAgICAgICAgIEludFJlY3RPdXRzZXRzIG91dHNldHMob3V0c2V0U2l6ZS5oZWlnaHQoKSwg
b3V0c2V0U2l6ZS53aWR0aCgpLCBvdXRzZXRTaXplLmhlaWdodCgpLCBvdXRzZXRTaXplLndpZHRo
KCkpOworICAgICAgICAgICAgdG90YWxPdXRzZXRzICs9IG91dHNldHM7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFE
T1c6IHsKICAgICAgICAgICAgIERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qIGRyb3BTaGFkb3dP
cGVyYXRpb24gPSBzdGF0aWNfY2FzdDxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVy
T3BlcmF0aW9uKTsKLSAgICAgICAgICAgIEludFNpemUgb3V0c2V0ID0gb3V0c2V0U2l6ZUZvckJs
dXIoZHJvcFNoYWRvd09wZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCkpOwotICAgICAgICAgICAgdG9w
ICs9IHN0ZDo6bWF4KDAsIG91dHNldC5oZWlnaHQoKSAtIGRyb3BTaGFkb3dPcGVyYXRpb24tPnko
KSk7Ci0gICAgICAgICAgICByaWdodCArPSBzdGQ6Om1heCgwLCBvdXRzZXQud2lkdGgoKSArIGRy
b3BTaGFkb3dPcGVyYXRpb24tPngoKSk7Ci0gICAgICAgICAgICBib3R0b20gKz0gc3RkOjptYXgo
MCwgb3V0c2V0LmhlaWdodCgpICsgZHJvcFNoYWRvd09wZXJhdGlvbi0+eSgpKTsKLSAgICAgICAg
ICAgIGxlZnQgKz0gc3RkOjptYXgoMCwgb3V0c2V0LndpZHRoKCkgLSBkcm9wU2hhZG93T3BlcmF0
aW9uLT54KCkpOworICAgICAgICAgICAgSW50U2l6ZSBvdXRzZXRTaXplID0gb3V0c2V0U2l6ZUZv
ckJsdXIoZHJvcFNoYWRvd09wZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCkpOworICAgICAgICAgICAg
SW50UmVjdE91dHNldHMgb3V0c2V0cygKKyAgICAgICAgICAgICAgICBzdGQ6Om1heCgwLCBvdXRz
ZXRTaXplLmhlaWdodCgpIC0gZHJvcFNoYWRvd09wZXJhdGlvbi0+eSgpKSwKKyAgICAgICAgICAg
ICAgICBzdGQ6Om1heCgwLCBvdXRzZXRTaXplLndpZHRoKCkgKyBkcm9wU2hhZG93T3BlcmF0aW9u
LT54KCkpLAorICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAsIG91dHNldFNpemUuaGVpZ2h0KCkg
KyBkcm9wU2hhZG93T3BlcmF0aW9uLT55KCkpLAorICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAs
IG91dHNldFNpemUud2lkdGgoKSAtIGRyb3BTaGFkb3dPcGVyYXRpb24tPngoKSkKKyAgICAgICAg
ICAgICk7CisgICAgICAgICAgICB0b3RhbE91dHNldHMgKz0gb3V0c2V0czsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQpAQCAtMTU4LDYgKzE1
Niw3IEBAIHZvaWQgRmlsdGVyT3BlcmF0aW9uczo6Z2V0T3V0c2V0cyhpbnQmIHRvcCwgaW50JiBy
aWdodCwgaW50JiBib3R0b20sIGludCYgbGVmdCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgfQorICAgIHJldHVybiB0b3RhbE91dHNldHM7CiB9CiAKIGJvb2wgRmlsdGVyT3Bl
cmF0aW9uczo6aGFzRmlsdGVyVGhhdEFmZmVjdHNPcGFjaXR5KCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVy
YXRpb25zLmgKaW5kZXggYzFkYTg1Yi4uNDc2NDY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmgK
QEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAKICNpbmNsdWRlICJG
aWx0ZXJPcGVyYXRpb24uaCIKKyNpbmNsdWRlICJJbnRSZWN0T3V0c2V0cy5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTYzLDcgKzY0LDcg
QEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0aW9uc01hdGNoKGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmKSBjb25zdDsKIAogICAgIGJvb2wgaGFzT3V0c2V0cygpIGNvbnN0OwotICAgIHZvaWQgZ2V0
T3V0c2V0cyhpbnQmIHRvcCwgaW50JiByaWdodCwgaW50JiBib3R0b20sIGludCYgbGVmdCkgY29u
c3Q7CisgICAgSW50UmVjdE91dHNldHMgb3V0c2V0cygpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNG
aWx0ZXJUaGF0QWZmZWN0c09wYWNpdHkoKSBjb25zdDsKICAgICBib29sIGhhc0ZpbHRlclRoYXRN
b3Zlc1BpeGVscygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0
ZXJFZmZlY3RSZW5kZXJlci5jcHAKaW5kZXggZGVhMmVmMC4uNjYzYjM4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBAIC0xMDIs
MTEgKzEwMiw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEZFQ3VzdG9tRmlsdGVyPiBjcmVhdGVDdXN0
b21GaWx0ZXJFZmZlY3QoRmlsdGVyKiBmaWx0ZXIsIERvY3VtCiAjZW5kaWYKIAogRmlsdGVyRWZm
ZWN0UmVuZGVyZXI6OkZpbHRlckVmZmVjdFJlbmRlcmVyKCkKLSAgICA6IG1fdG9wT3V0c2V0KDAp
Ci0gICAgLCBtX3JpZ2h0T3V0c2V0KDApCi0gICAgLCBtX2JvdHRvbU91dHNldCgwKQotICAgICwg
bV9sZWZ0T3V0c2V0KDApCi0gICAgLCBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQoZmFsc2UpCisg
ICAgOiBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQoZmFsc2UpCiAgICAgLCBtX2hhc0ZpbHRlclRo
YXRNb3Zlc1BpeGVscyhmYWxzZSkKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCiAgICAgLCBtX2hh
c0N1c3RvbVNoYWRlckZpbHRlcihmYWxzZSkKQEAgLTE5Niw3ICsxOTIsNyBAQCBib29sIEZpbHRl
ckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJgogI2VuZGlmCiAgICAgbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMgPSBv
cGVyYXRpb25zLmhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpOwogICAgIGlmIChtX2hhc0ZpbHRl
clRoYXRNb3Zlc1BpeGVscykKLSAgICAgICAgb3BlcmF0aW9ucy5nZXRPdXRzZXRzKG1fdG9wT3V0
c2V0LCBtX3JpZ2h0T3V0c2V0LCBtX2JvdHRvbU91dHNldCwgbV9sZWZ0T3V0c2V0KTsKKyAgICAg
ICAgbV9vdXRzZXRzID0gb3BlcmF0aW9ucy5vdXRzZXRzKCk7CiAgICAgCiAgICAgLy8gS2VlcCB0
aGUgb2xkIGVmZmVjdHMgb24gdGhlIHN0YWNrIHVudGlsIHdlJ3ZlIGNyZWF0ZWQgdGhlIG5ldyBl
ZmZlY3RzLgogICAgIC8vIE5ldyBGRUN1c3RvbUZpbHRlcnMgY2FuIHJldXNlIGNhY2hlZCByZXNv
dXJjZXMgZnJvbSBvbGQgRkVDdXN0b21GaWx0ZXJzLgpAQCAtNDM5LDggKzQzNSw4IEBAIExheW91
dFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0
eVJlY3QoY29uc3QgTGF5b3V0CiAgICAgaWYgKGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpKSB7
CiAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUgb3V0c2V0cyBhcmUgcmV2ZXJzZWQgaGVyZSBiZWNh
dXNlIHdlIGFyZSBnb2luZyBiYWNrd2FyZHMgLT4gd2UgaGF2ZSB0aGUgZGlydHkgcmVjdCBhbmQK
ICAgICAgICAgLy8gbmVlZCB0byBmaW5kIG91dCB3aGF0IGlzIHRoZSByZWN0YW5nbGUgdGhhdCBt
aWdodCBpbmZsdWVuY2UgdGhlIHJlc3VsdCBpbnNpZGUgdGhhdCBkaXJ0eSByZWN0LgotICAgICAg
ICByZWN0Rm9yUmVwYWludC5tb3ZlKC1tX3JpZ2h0T3V0c2V0LCAtbV9ib3R0b21PdXRzZXQpOwot
ICAgICAgICByZWN0Rm9yUmVwYWludC5leHBhbmQobV9sZWZ0T3V0c2V0ICsgbV9yaWdodE91dHNl
dCwgbV90b3BPdXRzZXQgKyBtX2JvdHRvbU91dHNldCk7CisgICAgICAgIHJlY3RGb3JSZXBhaW50
Lm1vdmUoLW1fb3V0c2V0cy5yaWdodCgpLCAtbV9vdXRzZXRzLmJvdHRvbSgpKTsKKyAgICAgICAg
cmVjdEZvclJlcGFpbnQuZXhwYW5kKG1fb3V0c2V0cy5sZWZ0KCkgKyBtX291dHNldHMucmlnaHQo
KSwgbV9vdXRzZXRzLnRvcCgpICsgbV9vdXRzZXRzLmJvdHRvbSgpKTsKICAgICB9CiAgICAgcmVj
dEZvclJlcGFpbnQuaW50ZXJzZWN0KGZpbHRlckJveFJlY3QpOwogICAgIHJldHVybiByZWN0Rm9y
UmVwYWludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZl
Y3RSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmgKaW5kZXggNDRhY2UyMy4uMDY3ZTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkludFJlY3RPdXRzZXRzLmgiCiAjaW5jbHVkZSAiTGF5
b3V0UmVjdC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTb3Vy
Y2VHcmFwaGljLmgiCkBAIC0xNDAsMTEgKzE0MSw4IEBAIHByaXZhdGU6CiAgICAgRmlsdGVyRWZm
ZWN0TGlzdCBtX2VmZmVjdHM7CiAgICAgUmVmUHRyPFNvdXJjZUdyYXBoaWM+IG1fc291cmNlR3Jh
cGhpYzsKICAgICAKLSAgICBpbnQgbV90b3BPdXRzZXQ7Ci0gICAgaW50IG1fcmlnaHRPdXRzZXQ7
Ci0gICAgaW50IG1fYm90dG9tT3V0c2V0OwotICAgIGludCBtX2xlZnRPdXRzZXQ7Ci0gICAgCisg
ICAgSW50UmVjdE91dHNldHMgbV9vdXRzZXRzOworCiAgICAgYm9vbCBtX2dyYXBoaWNzQnVmZmVy
QXR0YWNoZWQ7CiAgICAgYm9vbCBtX2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVsczsKICNpZiBFTkFC
TEUoQ1NTX1NIQURFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApp
bmRleCBlOGQwM2VhLi5kZDIzNjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKQEAgLTEzNjcsMjggKzEzNjcsMTMgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVy
OjplbmNsb3NpbmdGaWx0ZXJSZXBhaW50TGF5ZXIoKSBjb25zdAogICAgIHJldHVybiAwOwogfQog
Ci1zdGF0aWMgaW5saW5lIHZvaWQgZXhwYW5kUmVjdEZvckZpbHRlck91dHNldHMoTGF5b3V0UmVj
dCYgcmVjdCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVuZGVyZXIpCi17Ci0gICAg
QVNTRVJUKHJlbmRlcmVyKTsKLSAgICBpZiAoIXJlbmRlcmVyLT5zdHlsZSgpLT5oYXNGaWx0ZXJP
dXRzZXRzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGludCB0b3BPdXRzZXQ7Ci0gICAgaW50
IHJpZ2h0T3V0c2V0OwotICAgIGludCBib3R0b21PdXRzZXQ7Ci0gICAgaW50IGxlZnRPdXRzZXQ7
Ci0gICAgcmVuZGVyZXItPnN0eWxlKCktPmdldEZpbHRlck91dHNldHModG9wT3V0c2V0LCByaWdo
dE91dHNldCwgYm90dG9tT3V0c2V0LCBsZWZ0T3V0c2V0KTsKLSAgICByZWN0Lm1vdmUoLWxlZnRP
dXRzZXQsIC10b3BPdXRzZXQpOwotICAgIHJlY3QuZXhwYW5kKGxlZnRPdXRzZXQgKyByaWdodE91
dHNldCwgdG9wT3V0c2V0ICsgYm90dG9tT3V0c2V0KTsKLX0KLQogdm9pZCBSZW5kZXJMYXllcjo6
c2V0RmlsdGVyQmFja2VuZE5lZWRzUmVwYWludGluZ0luUmVjdChjb25zdCBMYXlvdXRSZWN0JiBy
ZWN0LCBib29sIGltbWVkaWF0ZSkKIHsKICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICBMYXlvdXRSZWN0IHJlY3RGb3JSZXBhaW50ID0gcmVjdDsKLSAg
ICBleHBhbmRSZWN0Rm9yRmlsdGVyT3V0c2V0cyhyZWN0Rm9yUmVwYWludCwgcmVuZGVyZXIoKSk7
CisgICAgcmVuZGVyZXIoKS0+c3R5bGUoKS0+ZmlsdGVyT3V0c2V0cygpLmV4cGFuZFJlY3QocmVj
dEZvclJlcGFpbnQpOwogCiAgICAgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKiBmaWx0ZXJJbmZvID0g
dGhpcy0+ZmlsdGVySW5mbygpOwogICAgIEFTU0VSVChmaWx0ZXJJbmZvKTsKQEAgLTE1NTcsNyAr
MTU0Miw3IEBAIHN0YXRpYyBMYXlvdXRSZWN0IHRyYW5zcGFyZW5jeUNsaXBCb3goY29uc3QgUmVu
ZGVyTGF5ZXIqIGxheWVyLCBjb25zdCBSZW5kZXJMYXllCiAgICAgICAgIExheW91dFJlY3QgY2xp
cFJlY3QgPSBsYXllci0+Ym91bmRpbmdCb3gobGF5ZXIpOwogICAgICAgICBleHBhbmRDbGlwUmVj
dEZvckRlc2NlbmRhbnRzQW5kUmVmbGVjdGlvbihjbGlwUmVjdCwgbGF5ZXIsIGxheWVyLCBwYWlu
dEJlaGF2aW9yKTsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAgICAgIGV4cGFuZFJlY3RG
b3JGaWx0ZXJPdXRzZXRzKGNsaXBSZWN0LCBsYXllci0+cmVuZGVyZXIoKSk7CisgICAgICAgIGxh
eWVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5maWx0ZXJPdXRzZXRzKCkuZXhwYW5kUmVjdChjbGlw
UmVjdCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybS5tYXBSZWN0KGNsaXBSZWN0
KTsKICAgICB9CkBAIC0xNTY1LDcgKzE1NTAsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCB0cmFuc3Bh
cmVuY3lDbGlwQm94KGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgY29uc3QgUmVuZGVyTGF5ZQog
ICAgIExheW91dFJlY3QgY2xpcFJlY3QgPSBsYXllci0+Ym91bmRpbmdCb3gocm9vdExheWVyKTsK
ICAgICBleHBhbmRDbGlwUmVjdEZvckRlc2NlbmRhbnRzQW5kUmVmbGVjdGlvbihjbGlwUmVjdCwg
bGF5ZXIsIHJvb3RMYXllciwgcGFpbnRCZWhhdmlvcik7CiAjaWYgRU5BQkxFKENTU19GSUxURVJT
KQotICAgIGV4cGFuZFJlY3RGb3JGaWx0ZXJPdXRzZXRzKGNsaXBSZWN0LCBsYXllci0+cmVuZGVy
ZXIoKSk7CisgICAgbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPmZpbHRlck91dHNldHMoKS5l
eHBhbmRSZWN0KGNsaXBSZWN0KTsKICNlbmRpZgogICAgIHJldHVybiBjbGlwUmVjdDsKIH0KQEAg
LTUwMTIsNyArNDk5Nyw3IEBAIEludFJlY3QgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUxheWVyQm91
bmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBjb25zCiAgICAgLy8gZmlsdGVy
ZWQgYXJlYXMgd2l0aCB0aGUgb3V0c2V0cyBpZiB3ZSBrbm93IHRoYXQgdGhlIGZpbHRlciBpcyBn
b2luZyB0byByZW5kZXIgaW4gaGFyZHdhcmUuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgxMjM5CiAgICAgaWYgKGZsYWdzICYgSW5jbHVkZUxheWVyRmls
dGVyT3V0c2V0cykKLSAgICAgICAgZXhwYW5kUmVjdEZvckZpbHRlck91dHNldHModW5pb25Cb3Vu
ZHMsIHJlbmRlcmVyKTsKKyAgICAgICAgcmVuZGVyZXItPnN0eWxlKCktPmZpbHRlck91dHNldHMo
KS5leHBhbmRSZWN0KHVuaW9uQm91bmRzKTsKICNlbmRpZgogCiAgICAgaWYgKChmbGFncyAmIElu
Y2x1ZGVTZWxmVHJhbnNmb3JtKSAmJiBwYWludHNXaXRoVHJhbnNmb3JtKFBhaW50QmVoYXZpb3JO
b3JtYWwpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CmluZGV4IGY1ZTVjZDMuLmNkY2Q5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCkBAIC00MDksMjAgKzQwOSw4IEBAIHB1YmxpYzoKICAgICB9CiAK
ICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAgdm9pZCBnZXRGaWx0ZXJPdXRzZXRzKGludCYg
dG9wLCBpbnQmIHJpZ2h0LCBpbnQmIGJvdHRvbSwgaW50JiBsZWZ0KSBjb25zdAotICAgIHsKLSAg
ICAgICAgaWYgKGhhc0ZpbHRlcigpKQotICAgICAgICAgICAgZmlsdGVyKCkuZ2V0T3V0c2V0cyh0
b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRv
cCA9IDA7Ci0gICAgICAgICAgICByaWdodCA9IDA7Ci0gICAgICAgICAgICBib3R0b20gPSAwOwot
ICAgICAgICAgICAgbGVmdCA9IDA7Ci0gICAgICAgIH0KLSAgICB9CiAgICAgYm9vbCBoYXNGaWx0
ZXJPdXRzZXRzKCkgY29uc3QgeyByZXR1cm4gaGFzRmlsdGVyKCkgJiYgZmlsdGVyKCkuaGFzT3V0
c2V0cygpOyB9Ci0jZWxzZQotICAgIGJvb2wgaGFzRmlsdGVyT3V0c2V0cygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgSW50UmVjdE91dHNldHMgZmlsdGVyT3V0c2V0cygpIGNvbnN0IHsg
cmV0dXJuIGhhc0ZpbHRlcigpID8gZmlsdGVyKCkub3V0c2V0cygpIDogSW50UmVjdE91dHNldHMo
KTsgfQogI2VuZGlmCiAKICAgICBPcmRlciBydGxPcmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PE9yZGVyPihpbmhlcml0ZWRfZmxhZ3MubV9ydGxPcmRlcmluZyk7IH0K
</data>
<flag name="commit-queue"
          id="207186"
          type_id="3"
          status="-"
          setter="mvujovic"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187618</attachid>
            <date>2013-02-11 11:09:37 -0800</date>
            <delta_ts>2013-02-13 14:09:02 -0800</delta_ts>
            <desc>Patch for Review</desc>
            <filename>109330-2.patch</filename>
            <type>text/plain</type>
            <size>25853</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzOTQ5MzYwLi4wM2E4Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQg
QEAKKzIwMTMtMDItMTEgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAg
ICAgIFtDU1MgRmlsdGVyc10gUmVmYWN0b3IgZmlsdGVyIG91dHNldHMgaW50byBhIGNsYXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkzMzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBmaWx0ZXJz
IHJlbGF0ZWQgY29kZSwgd2UncmUgb2Z0ZW4gb3BlcmF0aW5nIG9uIDQgaW50cyByZXByZXNlbnRp
bmcgdGhlIHRvcCwgcmlnaHQsCisgICAgICAgIGJvdHRvbSwgYW5kIGxlZnQgZmlsdGVyIG91dHNl
dHMuIFRoZXNlIG91dHNldHMgY29tZSBmcm9tIGEgZmlsdGVyIGxpa2UgYmx1ciBvciBkcm9wLXNo
YWRvdy4KKyAgICAgICAgVGhpcyBwYXRjaCBwYWNrYWdlcyB0aG9zZSBpbnRzIGFuZCB0aGVpciBy
ZWxhdGVkIG9wZXJhdGlvbnMgaW50byBhIGNsYXNzIGNhbGxlZAorICAgICAgICBJbnRSZWN0T3V0
c2V0cy4KKworICAgICAgICBIZXJlIGFyZSBzb21lIHNpZ25zIHRoYXQgd2Ugc2hvdWxkIG1ha2Ug
YSBjbGFzcyB0byBob2xkIHRob3NlIDQgaW50czoKKyAgICAgICAgMSkgSW4gUmVuZGVyTGF5ZXIu
Y3BwLCB3ZSBoYXZlIGEgZXhwYW5kUmVjdEZvckZpbHRlck91dHNldHMgZnVuY3Rpb24sIHdoaWNo
IGxvb2tzIGxpa2UKKyAgICAgICAgICAgZmVhdHVyZSBlbnZ5LgorICAgICAgICAyKSBSZW5kZXJT
dHlsZSBhbmQgb3RoZXIgY2xhc3NlcyBoYXZlIG1ldGhvZHMgbGlrZSBnZXRGaWx0ZXJPdXRzZXRz
IHdoaWNoIHNldCB0aGUgNCBpbnRzIGJ5CisgICAgICAgICAgIHJlZmVyZW5jZS4gVGhlIGNhbGxp
bmcgY29kZSBoYXMgdG8gZGVmaW5lIDQgaW50cywgd2hpY2ggbG9va3MgYmxvYXRlZC4KKyAgICAg
ICAgMykgVG8gZml4IGJ1ZyAxMDkwOTgsIHdlIHdpbGwgbmVlZCB0byBjaGVjayBpZiBmaWx0ZXIg
b3V0c2V0cyBjaGFuZ2VkLCB3aGljaCBzb3VuZHMgbGlrZSBhCisgICAgICAgICAgIG5pY2Ugam9i
IGZvciBhbiBpbmVxdWFsaXR5IG9wZXJhdG9yLiAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwOTA5OCkKKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBp
biBiZWhhdmlvci4gSnVzdCByZWZhY3RvcmluZy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ludFJlY3RPdXRzZXRzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChJbnRSZWN0T3V0c2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0
T3V0c2V0czo6SW50UmVjdE91dHNldHMpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdE91dHNl
dHM6OnRvcCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0T3V0c2V0czo6c2V0VG9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OkludFJlY3RPdXRzZXRzOjpyaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRSZWN0T3V0c2V0czo6c2V0UmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdE91
dHNldHM6OmJvdHRvbSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0T3V0c2V0czo6c2V0Qm90
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OkludFJlY3RPdXRzZXRzOjpsZWZ0KToKKyAgICAgICAg
KFdlYkNvcmU6OkludFJlY3RPdXRzZXRzOjpzZXRMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dFJlY3RPdXRzZXRzOjpleHBhbmRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludFJlY3RPdXRz
ZXRzOjphcmVaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcis9KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3V0c2V0cyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmg6CisgICAgICAgIChG
aWx0ZXJPcGVyYXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6aW50ZXJtZWRpYXRlU3VyZmFjZVJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJF
ZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJl
cjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
UmVuZGVyZXI6OmJ1aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVy
Ojpjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaDoKKyAgICAgICAgKEZpbHRlckVmZmVjdFJlbmRlcmVy
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnNldEZpbHRlckJhY2tlbmROZWVkc1JlcGFpbnRpbmdJblJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6dHJhbnNwYXJlbmN5Q2xpcEJveCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorCiAyMDEzLTAyLTExICBBbmRyZXkgS29zeWFrb3YgIDxj
YXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogVGltZWxpbmU6IGlu
dmFsaWRhdGUgYW5kIGZvcmNlIGxvY2F0aW9ucyBhcmUgc2FtZSBmb3IgTGF5b3V0IHJlY29yZHMg
Y2F1c2VkIGJ5IHN0eWxlIHJlY2FsY3VsYWl0b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IDE5N2U4MmUuLmI3NjBiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtNTYzOCw2ICs1NjM4LDcgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludEhhc2guaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW50UmVjdE91dHNldHMuaCBcCQogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ludFNpemUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6
ZUhhc2guaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0
ZXJhdG9yLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggY2VhMzA5NS4uYWQzZWFkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CkBAIC0yMjQ2LDYgKzIyNDYsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9JbnRQb2ludC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludEhhc2guaCBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9J
bnRSZWN0T3V0c2V0cy5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9MYXRpbjFUZXh0SXRlcmF0
b3IuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMWJjODIw
MC4uZDdlZmM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDcwNiw2ICs0NzA2LDcgQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9JbnRSZWN0LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50
UmVjdE91dHNldHMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVj
dC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRy
aXguY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA5NTM4MDgxLi5lYjNjNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODY3LDYgKzM4NjcsNyBAQAog
CQlBMjk1MzJDRjE1REQ1RTE3MDA0NjlFQkMgLyogQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMjk1
MzJDRDE1REQ1RTE3MDA0NjlFQkMgLyogQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAg
Ki87IH07CiAJCUEyOTUzMkQwMTVERDVFMTcwMDQ2OUVCQyAvKiBDdXN0b21GaWx0ZXJWYWxpZGF0
ZWRQcm9ncmFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMjk1MzJDRTE1REQ1RTE3MDA0NjlFQkMgLyogQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bS5oICovOyB9OwogCQlBMkIyQUU3QzE2Mzc1RUU1MDBDRkE1MEIgLyogQ3VzdG9tRmlsdGVyQ29u
c3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MkIyQUU3QjE2Mzc1RUU1MDBDRkE1MEIgLyogQ3VzdG9tRmlsdGVyQ29uc3RhbnRzLmggKi87IH07
CisJCUEyQjkyMTczMTZDNUNDNDIwMDQxRENEOSAvKiBJbnRSZWN0T3V0c2V0cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTJCOTIxNzIxNkM1Q0M0MjAw
NDFEQ0Q5IC8qIEludFJlY3RPdXRzZXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTJFOEFFMzAxNkE0OEUxQzAwNkJCM0FBIC8qIFdlYktpdENT
U0ZpbHRlclJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTJFOEFFMkUxNkE0OEUxQzAwNkJCM0FBIC8qIFdlYktpdENTU0ZpbHRlclJ1bGUuY3Bw
ICovOyB9OwogCQlBMkU4QUUzMTE2QTQ4RTFDMDA2QkIzQUEgLyogV2ViS2l0Q1NTRmlsdGVyUnVs
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTJFOEFF
MkYxNkE0OEUxQzAwNkJCM0FBIC8qIFdlYktpdENTU0ZpbHRlclJ1bGUuaCAqLzsgfTsKIAkJQTJF
OEFFMzcxNkE0OTg0MDAwNkJCM0FBIC8qIEpTV2ViS2l0Q1NTRmlsdGVyUnVsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMkU4QUUzNTE2QTQ5ODQw
MDA2QkIzQUEgLyogSlNXZWJLaXRDU1NGaWx0ZXJSdWxlLmNwcCAqLzsgfTsKQEAgLTExMzQyLDYg
KzExMzQzLDcgQEAKIAkJQTI5NTMyQ0QxNURENUUxNzAwNDY5RUJDIC8qIEN1c3RvbUZpbHRlclZh
bGlkYXRlZFByb2dyYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHA7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZp
bHRlclZhbGlkYXRlZFByb2dyYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
Mjk1MzJDRTE1REQ1RTE3MDA0NjlFQkMgLyogQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQ
cm9ncmFtLmg7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTJCMkFFN0IxNjM3NUVFNTAwQ0ZBNTBCIC8q
IEN1c3RvbUZpbHRlckNvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBDdXN0b21GaWx0ZXJDb25zdGFudHMuaDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29u
c3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEyQjkyMTcyMTZDNUNDNDIw
MDQxRENEOSAvKiBJbnRSZWN0T3V0c2V0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnRSZWN0T3V0c2V0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMkU4
QUUyRTE2QTQ4RTFDMDA2QkIzQUEgLyogV2ViS2l0Q1NTRmlsdGVyUnVsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NGaWx0ZXJSdWxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTJFOEFFMkYxNkE0OEUxQzAwNkJCM0FBIC8qIFdl
YktpdENTU0ZpbHRlclJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
S2l0Q1NTRmlsdGVyUnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMkU4QUUz
NTE2QTQ5ODQwMDA2QkIzQUEgLyogSlNXZWJLaXRDU1NGaWx0ZXJSdWxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViS2l0Q1NTRmlsdGVyUnVsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDYxNyw2ICsyMDYxOSw3IEBACiAJCQkJQjI3
NTM1NDUwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3QuY3BwICovLAogCQkJCUIyNzUzNTQ2MEIw
NTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0LmggKi8sCiAJCQkJRTEzNEY1QUExMkVFMzQzRjAwNEVD
NThEIC8qIEludFJlY3RIYXNoLmggKi8sCisJCQkJQTJCOTIxNzIxNkM1Q0M0MjAwNDFEQ0Q5IC8q
IEludFJlY3RPdXRzZXRzLmggKi8sCiAJCQkJQjI3NTM1NDcwQjA1MzgxNDAwMkNFNjRGIC8qIElu
dFNpemUuaCAqLywKIAkJCQlCMjc1MzU0ODBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZUhhc2gu
aCAqLywKIAkJCQk2NUNDNkJFRDE2MDE0RUMwMDAwRUQyN0QgLyogTGF0aW4xVGV4dEl0ZXJhdG9y
LmggKi8sCkBAIC0yNDY5Myw2ICsyNDY5Niw3IEBACiAJCQkJRTQ2MkE0QTExMTNFNzFCRTAwNEE0
MjIwIC8qIEludFBvaW50SGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NzQwQjA1Mzgx
NDAwMkNFNjRGIC8qIEludFJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMzRGNUFCMTJFRTM0
M0YwMDRFQzU4RCAvKiBJbnRSZWN0SGFzaC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTJCOTIxNzMx
NkM1Q0M0MjAwNDFEQ0Q5IC8qIEludFJlY3RPdXRzZXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Mjc1MzU3NTBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjI3NTM1NzYwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVIYXNoLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQzgxQkEwQTBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbnRSZWN0T3V0c2V0cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UmVjdE91dHNldHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTBhYmU2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UmVjdE91dHNldHMuaApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwor
ICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBJbnRSZWN0T3V0c2V0c19oCisjZGVmaW5lIEludFJlY3RPdXRzZXRz
X2gKKworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKworI2luY2x1ZGUgIkxheW91dFJlY3QuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnRSZWN0T3V0c2V0cyB7CitwdWJsaWM6
CisgICAgSW50UmVjdE91dHNldHMoKQorICAgICAgICA6IG1fdG9wKDApCisgICAgICAgICwgbV9y
aWdodCgwKQorICAgICAgICAsIG1fYm90dG9tKDApCisgICAgICAgICwgbV9sZWZ0KDApCisgICAg
eworICAgIH0KKworICAgIEludFJlY3RPdXRzZXRzKGludCB0b3AsIGludCByaWdodCwgaW50IGJv
dHRvbSwgaW50IGxlZnQpCisgICAgICAgIDogbV90b3AodG9wKQorICAgICAgICAsIG1fcmlnaHQo
cmlnaHQpCisgICAgICAgICwgbV9ib3R0b20oYm90dG9tKQorICAgICAgICAsIG1fbGVmdChsZWZ0
KQorICAgIHsKKyAgICB9CisKKyAgICBpbnQgdG9wKCkgY29uc3QgeyByZXR1cm4gbV90b3A7IH0K
KyAgICB2b2lkIHNldFRvcChpbnQgdG9wKSB7IG1fdG9wID0gdG9wOyB9CisKKyAgICBpbnQgcmln
aHQoKSBjb25zdCB7IHJldHVybiBtX3JpZ2h0OyB9CisgICAgdm9pZCBzZXRSaWdodChpbnQgcmln
aHQpIHsgbV9yaWdodCA9IHJpZ2h0OyB9CisKKyAgICBpbnQgYm90dG9tKCkgY29uc3QgeyByZXR1
cm4gbV9ib3R0b207IH0KKyAgICB2b2lkIHNldEJvdHRvbShpbnQgYm90dG9tKSB7IG1fYm90dG9t
ID0gYm90dG9tOyB9CisKKyAgICBpbnQgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdDsgfQor
ICAgIHZvaWQgc2V0TGVmdChpbnQgbGVmdCkgeyBtX2xlZnQgPSBsZWZ0OyB9CisKKyAgICB2b2lk
IGV4cGFuZFJlY3QoTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChh
cmVaZXJvKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcmVjdC5tb3ZlKC1sZWZ0
KCksIC10b3AoKSk7CisgICAgICAgIHJlY3QuZXhwYW5kKGxlZnQoKSArIHJpZ2h0KCksIHRvcCgp
ICsgYm90dG9tKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIGFyZVplcm8oKSBjb25z
dCB7IHJldHVybiAhbGVmdCgpICYmICFyaWdodCgpICYmICF0b3AoKSAmJiAhYm90dG9tKCk7IH0K
KworICAgIGludCBtX3RvcDsKKyAgICBpbnQgbV9yaWdodDsKKyAgICBpbnQgbV9ib3R0b207Cisg
ICAgaW50IG1fbGVmdDsKK307CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50UmVj
dE91dHNldHMmIGEsIGNvbnN0IEludFJlY3RPdXRzZXRzJiBiKQoreworICAgIHJldHVybiBhLnRv
cCgpID09IGIudG9wKCkKKyAgICAgICAgJiYgYS5yaWdodCgpID09IGIucmlnaHQoKQorICAgICAg
ICAmJiBhLmJvdHRvbSgpID09IGIuYm90dG9tKCkKKyAgICAgICAgJiYgYS5sZWZ0KCkgPT0gYi5s
ZWZ0KCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSW50UmVjdE91dHNldHMm
IGEsIGNvbnN0IEludFJlY3RPdXRzZXRzJiBiKQoreworICAgIHJldHVybiAhKGEgPT0gYik7Cit9
CisKK2lubGluZSB2b2lkIG9wZXJhdG9yKz0oSW50UmVjdE91dHNldHMmIGEsIGNvbnN0IEludFJl
Y3RPdXRzZXRzJiBiKQoreworICAgIGEuc2V0VG9wKGEudG9wKCkgKyBiLnRvcCgpKTsKKyAgICBh
LnNldFJpZ2h0KGEucmlnaHQoKSArIGIucmlnaHQoKSk7CisgICAgYS5zZXRCb3R0b20oYS5ib3R0
b20oKSArIGIuYm90dG9tKCkpOworICAgIGEuc2V0TGVmdChhLmxlZnQoKSArIGIubGVmdCgpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19GSUxU
RVJTKQorCisjZW5kaWYgLy8gSW50UmVjdE91dHNldHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5j
cHAKaW5kZXggZmNiNzRmYy4uZTZmMjkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCkBA
IC0xMTgsMzIgKzExOCwzMCBAQCBib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc091dHNldHMoKSBj
b25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBGaWx0ZXJPcGVyYXRpb25zOjpnZXRP
dXRzZXRzKGludCYgdG9wLCBpbnQmIHJpZ2h0LCBpbnQmIGJvdHRvbSwgaW50JiBsZWZ0KSBjb25z
dAorSW50UmVjdE91dHNldHMgRmlsdGVyT3BlcmF0aW9uczo6b3V0c2V0cygpIGNvbnN0CiB7Ci0g
ICAgdG9wID0gMDsKLSAgICByaWdodCA9IDA7Ci0gICAgYm90dG9tID0gMDsKLSAgICBsZWZ0ID0g
MDsKKyAgICBJbnRSZWN0T3V0c2V0cyB0b3RhbE91dHNldHM7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX29wZXJhdGlvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgRmlsdGVyT3BlcmF0
aW9uKiBmaWx0ZXJPcGVyYXRpb24gPSBtX29wZXJhdGlvbnMuYXQoaSkuZ2V0KCk7CiAgICAgICAg
IHN3aXRjaCAoZmlsdGVyT3BlcmF0aW9uLT5nZXRPcGVyYXRpb25UeXBlKCkpIHsKICAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsKICAgICAgICAgICAgIEJsdXJGaWx0ZXJPcGVy
YXRpb24qIGJsdXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uKj4o
ZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIGZsb2F0IHN0ZERldmlhdGlvbiA9IGZsb2F0
VmFsdWVGb3JMZW5ndGgoYmx1ck9wZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCksIDApOwotICAgICAg
ICAgICAgSW50U2l6ZSBvdXRzZXQgPSBvdXRzZXRTaXplRm9yQmx1cihzdGREZXZpYXRpb24pOwot
ICAgICAgICAgICAgdG9wICs9IG91dHNldC5oZWlnaHQoKTsKLSAgICAgICAgICAgIHJpZ2h0ICs9
IG91dHNldC53aWR0aCgpOwotICAgICAgICAgICAgYm90dG9tICs9IG91dHNldC5oZWlnaHQoKTsK
LSAgICAgICAgICAgIGxlZnQgKz0gb3V0c2V0LndpZHRoKCk7CisgICAgICAgICAgICBJbnRTaXpl
IG91dHNldFNpemUgPSBvdXRzZXRTaXplRm9yQmx1cihzdGREZXZpYXRpb24pOworICAgICAgICAg
ICAgSW50UmVjdE91dHNldHMgb3V0c2V0cyhvdXRzZXRTaXplLmhlaWdodCgpLCBvdXRzZXRTaXpl
LndpZHRoKCksIG91dHNldFNpemUuaGVpZ2h0KCksIG91dHNldFNpemUud2lkdGgoKSk7CisgICAg
ICAgICAgICB0b3RhbE91dHNldHMgKz0gb3V0c2V0czsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogewogICAg
ICAgICAgICAgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiogZHJvcFNoYWRvd09wZXJhdGlvbiA9
IHN0YXRpY19jYXN0PERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24p
OwotICAgICAgICAgICAgSW50U2l6ZSBvdXRzZXQgPSBvdXRzZXRTaXplRm9yQmx1cihkcm9wU2hh
ZG93T3BlcmF0aW9uLT5zdGREZXZpYXRpb24oKSk7Ci0gICAgICAgICAgICB0b3AgKz0gc3RkOjpt
YXgoMCwgb3V0c2V0LmhlaWdodCgpIC0gZHJvcFNoYWRvd09wZXJhdGlvbi0+eSgpKTsKLSAgICAg
ICAgICAgIHJpZ2h0ICs9IHN0ZDo6bWF4KDAsIG91dHNldC53aWR0aCgpICsgZHJvcFNoYWRvd09w
ZXJhdGlvbi0+eCgpKTsKLSAgICAgICAgICAgIGJvdHRvbSArPSBzdGQ6Om1heCgwLCBvdXRzZXQu
aGVpZ2h0KCkgKyBkcm9wU2hhZG93T3BlcmF0aW9uLT55KCkpOwotICAgICAgICAgICAgbGVmdCAr
PSBzdGQ6Om1heCgwLCBvdXRzZXQud2lkdGgoKSAtIGRyb3BTaGFkb3dPcGVyYXRpb24tPngoKSk7
CisgICAgICAgICAgICBJbnRTaXplIG91dHNldFNpemUgPSBvdXRzZXRTaXplRm9yQmx1cihkcm9w
U2hhZG93T3BlcmF0aW9uLT5zdGREZXZpYXRpb24oKSk7CisgICAgICAgICAgICBJbnRSZWN0T3V0
c2V0cyBvdXRzZXRzKAorICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAsIG91dHNldFNpemUuaGVp
Z2h0KCkgLSBkcm9wU2hhZG93T3BlcmF0aW9uLT55KCkpLAorICAgICAgICAgICAgICAgIHN0ZDo6
bWF4KDAsIG91dHNldFNpemUud2lkdGgoKSArIGRyb3BTaGFkb3dPcGVyYXRpb24tPngoKSksCisg
ICAgICAgICAgICAgICAgc3RkOjptYXgoMCwgb3V0c2V0U2l6ZS5oZWlnaHQoKSArIGRyb3BTaGFk
b3dPcGVyYXRpb24tPnkoKSksCisgICAgICAgICAgICAgICAgc3RkOjptYXgoMCwgb3V0c2V0U2l6
ZS53aWR0aCgpIC0gZHJvcFNoYWRvd09wZXJhdGlvbi0+eCgpKQorICAgICAgICAgICAgKTsKKyAg
ICAgICAgICAgIHRvdGFsT3V0c2V0cyArPSBvdXRzZXRzOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCkBAIC0xNTgsNiArMTU2LDcgQEAgdm9p
ZCBGaWx0ZXJPcGVyYXRpb25zOjpnZXRPdXRzZXRzKGludCYgdG9wLCBpbnQmIHJpZ2h0LCBpbnQm
IGJvdHRvbSwgaW50JiBsZWZ0KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9
CisgICAgcmV0dXJuIHRvdGFsT3V0c2V0czsKIH0KIAogYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpo
YXNGaWx0ZXJUaGF0QWZmZWN0c09wYWNpdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaApp
bmRleCBjMWRhODViLi40NzY0Njg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaApAQCAtMjksNiAr
MjksNyBAQAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIAogI2luY2x1ZGUgIkZpbHRlck9wZXJh
dGlvbi5oIgorI2luY2x1ZGUgIkludFJlY3RPdXRzZXRzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNjMsNyArNjQsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBvcGVyYXRpb25zTWF0Y2goY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpIGNvbnN0
OwogCiAgICAgYm9vbCBoYXNPdXRzZXRzKCkgY29uc3Q7Ci0gICAgdm9pZCBnZXRPdXRzZXRzKGlu
dCYgdG9wLCBpbnQmIHJpZ2h0LCBpbnQmIGJvdHRvbSwgaW50JiBsZWZ0KSBjb25zdDsKKyAgICBJ
bnRSZWN0T3V0c2V0cyBvdXRzZXRzKCkgY29uc3Q7CiAKICAgICBib29sIGhhc0ZpbHRlclRoYXRB
ZmZlY3RzT3BhY2l0eSgpIGNvbnN0OwogICAgIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxz
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IGVkZmUzMjAuLmJhZmM4
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0xODQsMTQgKzE4NCwxMCBAQCBJ
bnRSZWN0IFRleHR1cmVNYXBwZXJMYXllcjo6aW50ZXJtZWRpYXRlU3VyZmFjZVJlY3QoY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmCiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgaWYg
KG1fY3VycmVudEZpbHRlcnMuaGFzT3V0c2V0cygpKSB7Ci0gICAgICAgIGludCBsZWZ0T3V0c2V0
OwotICAgICAgICBpbnQgdG9wT3V0c2V0OwotICAgICAgICBpbnQgYm90dG9tT3V0c2V0OwotICAg
ICAgICBpbnQgcmlnaHRPdXRzZXQ7Ci0gICAgICAgIG1fY3VycmVudEZpbHRlcnMuZ2V0T3V0c2V0
cyh0b3BPdXRzZXQsIHJpZ2h0T3V0c2V0LCBib3R0b21PdXRzZXQsIGxlZnRPdXRzZXQpOworICAg
ICAgICBJbnRSZWN0T3V0c2V0cyBvdXRzZXRzID0gbV9jdXJyZW50RmlsdGVycy5vdXRzZXRzKCk7
CiAgICAgICAgIEludFJlY3QgdW5maWx0ZXJlZFRhcmdldFJlY3QocmVjdCk7Ci0gICAgICAgIHJl
Y3QubW92ZShzdGQ6Om1heCgwLCAtbGVmdE91dHNldCksIHN0ZDo6bWF4KDAsIC10b3BPdXRzZXQp
KTsKLSAgICAgICAgcmVjdC5leHBhbmQobGVmdE91dHNldCArIHJpZ2h0T3V0c2V0LCB0b3BPdXRz
ZXQgKyBib3R0b21PdXRzZXQpOworICAgICAgICByZWN0Lm1vdmUoc3RkOjptYXgoMCwgLW91dHNl
dHMubGVmdCgpKSwgc3RkOjptYXgoMCwgLW91dHNldHMudG9wKCkpKTsKKyAgICAgICAgcmVjdC5l
eHBhbmQob3V0c2V0cy5sZWZ0KCkgKyBvdXRzZXRzLnJpZ2h0KCksIG91dHNldHMudG9wKCkgKyBv
dXRzZXRzLmJvdHRvbSgpKTsKICAgICAgICAgcmVjdC51bml0ZSh1bmZpbHRlcmVkVGFyZ2V0UmVj
dCk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRl
ckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCBkZWEyZWYwLi42NjNiMzg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKQEAgLTEwMiwx
MSArMTAyLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8RkVDdXN0b21GaWx0ZXI+IGNyZWF0ZUN1c3Rv
bUZpbHRlckVmZmVjdChGaWx0ZXIqIGZpbHRlciwgRG9jdW0KICNlbmRpZgogCiBGaWx0ZXJFZmZl
Y3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVuZGVyZXIoKQotICAgIDogbV90b3BPdXRzZXQoMCkK
LSAgICAsIG1fcmlnaHRPdXRzZXQoMCkKLSAgICAsIG1fYm90dG9tT3V0c2V0KDApCi0gICAgLCBt
X2xlZnRPdXRzZXQoMCkKLSAgICAsIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZChmYWxzZSkKKyAg
ICA6IG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZChmYWxzZSkKICAgICAsIG1faGFzRmlsdGVyVGhh
dE1vdmVzUGl4ZWxzKGZhbHNlKQogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKICAgICAsIG1faGFz
Q3VzdG9tU2hhZGVyRmlsdGVyKGZhbHNlKQpAQCAtMTk2LDcgKzE5Miw3IEBAIGJvb2wgRmlsdGVy
RWZmZWN0UmVuZGVyZXI6OmJ1aWxkKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmCiAjZW5kaWYKICAgICBtX2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscyA9IG9w
ZXJhdGlvbnMuaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCk7CiAgICAgaWYgKG1faGFzRmlsdGVy
VGhhdE1vdmVzUGl4ZWxzKQotICAgICAgICBvcGVyYXRpb25zLmdldE91dHNldHMobV90b3BPdXRz
ZXQsIG1fcmlnaHRPdXRzZXQsIG1fYm90dG9tT3V0c2V0LCBtX2xlZnRPdXRzZXQpOworICAgICAg
ICBtX291dHNldHMgPSBvcGVyYXRpb25zLm91dHNldHMoKTsKICAgICAKICAgICAvLyBLZWVwIHRo
ZSBvbGQgZWZmZWN0cyBvbiB0aGUgc3RhY2sgdW50aWwgd2UndmUgY3JlYXRlZCB0aGUgbmV3IGVm
ZmVjdHMuCiAgICAgLy8gTmV3IEZFQ3VzdG9tRmlsdGVycyBjYW4gcmV1c2UgY2FjaGVkIHJlc291
cmNlcyBmcm9tIG9sZCBGRUN1c3RvbUZpbHRlcnMuCkBAIC00MzksOCArNDM1LDggQEAgTGF5b3V0
UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5
UmVjdChjb25zdCBMYXlvdXQKICAgICBpZiAoaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkpIHsK
ICAgICAgICAgLy8gTm90ZSB0aGF0IHRoZSBvdXRzZXRzIGFyZSByZXZlcnNlZCBoZXJlIGJlY2F1
c2Ugd2UgYXJlIGdvaW5nIGJhY2t3YXJkcyAtPiB3ZSBoYXZlIHRoZSBkaXJ0eSByZWN0IGFuZAog
ICAgICAgICAvLyBuZWVkIHRvIGZpbmQgb3V0IHdoYXQgaXMgdGhlIHJlY3RhbmdsZSB0aGF0IG1p
Z2h0IGluZmx1ZW5jZSB0aGUgcmVzdWx0IGluc2lkZSB0aGF0IGRpcnR5IHJlY3QuCi0gICAgICAg
IHJlY3RGb3JSZXBhaW50Lm1vdmUoLW1fcmlnaHRPdXRzZXQsIC1tX2JvdHRvbU91dHNldCk7Ci0g
ICAgICAgIHJlY3RGb3JSZXBhaW50LmV4cGFuZChtX2xlZnRPdXRzZXQgKyBtX3JpZ2h0T3V0c2V0
LCBtX3RvcE91dHNldCArIG1fYm90dG9tT3V0c2V0KTsKKyAgICAgICAgcmVjdEZvclJlcGFpbnQu
bW92ZSgtbV9vdXRzZXRzLnJpZ2h0KCksIC1tX291dHNldHMuYm90dG9tKCkpOworICAgICAgICBy
ZWN0Rm9yUmVwYWludC5leHBhbmQobV9vdXRzZXRzLmxlZnQoKSArIG1fb3V0c2V0cy5yaWdodCgp
LCBtX291dHNldHMudG9wKCkgKyBtX291dHNldHMuYm90dG9tKCkpOwogICAgIH0KICAgICByZWN0
Rm9yUmVwYWludC5pbnRlcnNlY3QoZmlsdGVyQm94UmVjdCk7CiAgICAgcmV0dXJuIHJlY3RGb3JS
ZXBhaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVj
dFJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuaAppbmRleCA0NGFjZTIzLi4wNjdlM2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIklt
YWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiSW50UmVjdE91dHNldHMuaCIKICNpbmNsdWRlICJMYXlv
dXRSZWN0LmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIlNvdXJj
ZUdyYXBoaWMuaCIKQEAgLTE0MCwxMSArMTQxLDggQEAgcHJpdmF0ZToKICAgICBGaWx0ZXJFZmZl
Y3RMaXN0IG1fZWZmZWN0czsKICAgICBSZWZQdHI8U291cmNlR3JhcGhpYz4gbV9zb3VyY2VHcmFw
aGljOwogICAgIAotICAgIGludCBtX3RvcE91dHNldDsKLSAgICBpbnQgbV9yaWdodE91dHNldDsK
LSAgICBpbnQgbV9ib3R0b21PdXRzZXQ7Ci0gICAgaW50IG1fbGVmdE91dHNldDsKLSAgICAKKyAg
ICBJbnRSZWN0T3V0c2V0cyBtX291dHNldHM7CisKICAgICBib29sIG1fZ3JhcGhpY3NCdWZmZXJB
dHRhY2hlZDsKICAgICBib29sIG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzOwogI2lmIEVOQUJM
RShDU1NfU0hBREVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmlu
ZGV4IGU4ZDAzZWEuLmRkMjM2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcApAQCAtMTM2NywyOCArMTM2NywxMyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6
OmVuY2xvc2luZ0ZpbHRlclJlcGFpbnRMYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgdm9pZCBleHBhbmRSZWN0Rm9yRmlsdGVyT3V0c2V0cyhMYXlvdXRSZWN0
JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZW5kZXJlcikKLXsKLSAgICBB
U1NFUlQocmVuZGVyZXIpOwotICAgIGlmICghcmVuZGVyZXItPnN0eWxlKCktPmhhc0ZpbHRlck91
dHNldHMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW50IHRvcE91dHNldDsKLSAgICBpbnQg
cmlnaHRPdXRzZXQ7Ci0gICAgaW50IGJvdHRvbU91dHNldDsKLSAgICBpbnQgbGVmdE91dHNldDsK
LSAgICByZW5kZXJlci0+c3R5bGUoKS0+Z2V0RmlsdGVyT3V0c2V0cyh0b3BPdXRzZXQsIHJpZ2h0
T3V0c2V0LCBib3R0b21PdXRzZXQsIGxlZnRPdXRzZXQpOwotICAgIHJlY3QubW92ZSgtbGVmdE91
dHNldCwgLXRvcE91dHNldCk7Ci0gICAgcmVjdC5leHBhbmQobGVmdE91dHNldCArIHJpZ2h0T3V0
c2V0LCB0b3BPdXRzZXQgKyBib3R0b21PdXRzZXQpOwotfQotCiB2b2lkIFJlbmRlckxheWVyOjpz
ZXRGaWx0ZXJCYWNrZW5kTmVlZHNSZXBhaW50aW5nSW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHJl
Y3QsIGJvb2wgaW1tZWRpYXRlKQogewogICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIAogICAgIExheW91dFJlY3QgcmVjdEZvclJlcGFpbnQgPSByZWN0OwotICAg
IGV4cGFuZFJlY3RGb3JGaWx0ZXJPdXRzZXRzKHJlY3RGb3JSZXBhaW50LCByZW5kZXJlcigpKTsK
KyAgICByZW5kZXJlcigpLT5zdHlsZSgpLT5maWx0ZXJPdXRzZXRzKCkuZXhwYW5kUmVjdChyZWN0
Rm9yUmVwYWludCk7CiAKICAgICBSZW5kZXJMYXllckZpbHRlckluZm8qIGZpbHRlckluZm8gPSB0
aGlzLT5maWx0ZXJJbmZvKCk7CiAgICAgQVNTRVJUKGZpbHRlckluZm8pOwpAQCAtMTU1Nyw3ICsx
NTQyLDcgQEAgc3RhdGljIExheW91dFJlY3QgdHJhbnNwYXJlbmN5Q2xpcEJveChjb25zdCBSZW5k
ZXJMYXllciogbGF5ZXIsIGNvbnN0IFJlbmRlckxheWUKICAgICAgICAgTGF5b3V0UmVjdCBjbGlw
UmVjdCA9IGxheWVyLT5ib3VuZGluZ0JveChsYXllcik7CiAgICAgICAgIGV4cGFuZENsaXBSZWN0
Rm9yRGVzY2VuZGFudHNBbmRSZWZsZWN0aW9uKGNsaXBSZWN0LCBsYXllciwgbGF5ZXIsIHBhaW50
QmVoYXZpb3IpOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICAgICAgZXhwYW5kUmVjdEZv
ckZpbHRlck91dHNldHMoY2xpcFJlY3QsIGxheWVyLT5yZW5kZXJlcigpKTsKKyAgICAgICAgbGF5
ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPmZpbHRlck91dHNldHMoKS5leHBhbmRSZWN0KGNsaXBS
ZWN0KTsKICNlbmRpZgogICAgICAgICByZXR1cm4gdHJhbnNmb3JtLm1hcFJlY3QoY2xpcFJlY3Qp
OwogICAgIH0KQEAgLTE1NjUsNyArMTU1MCw3IEBAIHN0YXRpYyBMYXlvdXRSZWN0IHRyYW5zcGFy
ZW5jeUNsaXBCb3goY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBjb25zdCBSZW5kZXJMYXllCiAg
ICAgTGF5b3V0UmVjdCBjbGlwUmVjdCA9IGxheWVyLT5ib3VuZGluZ0JveChyb290TGF5ZXIpOwog
ICAgIGV4cGFuZENsaXBSZWN0Rm9yRGVzY2VuZGFudHNBbmRSZWZsZWN0aW9uKGNsaXBSZWN0LCBs
YXllciwgcm9vdExheWVyLCBwYWludEJlaGF2aW9yKTsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
Ci0gICAgZXhwYW5kUmVjdEZvckZpbHRlck91dHNldHMoY2xpcFJlY3QsIGxheWVyLT5yZW5kZXJl
cigpKTsKKyAgICBsYXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+ZmlsdGVyT3V0c2V0cygpLmV4
cGFuZFJlY3QoY2xpcFJlY3QpOwogI2VuZGlmCiAgICAgcmV0dXJuIGNsaXBSZWN0OwogfQpAQCAt
NTAxMiw3ICs0OTk3LDcgQEAgSW50UmVjdCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlTGF5ZXJCb3Vu
ZHMoY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIGNvbnMKICAgICAvLyBmaWx0ZXJl
ZCBhcmVhcyB3aXRoIHRoZSBvdXRzZXRzIGlmIHdlIGtub3cgdGhhdCB0aGUgZmlsdGVyIGlzIGdv
aW5nIHRvIHJlbmRlciBpbiBoYXJkd2FyZS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODEyMzkKICAgICBpZiAoZmxhZ3MgJiBJbmNsdWRlTGF5ZXJGaWx0
ZXJPdXRzZXRzKQotICAgICAgICBleHBhbmRSZWN0Rm9yRmlsdGVyT3V0c2V0cyh1bmlvbkJvdW5k
cywgcmVuZGVyZXIpOworICAgICAgICByZW5kZXJlci0+c3R5bGUoKS0+ZmlsdGVyT3V0c2V0cygp
LmV4cGFuZFJlY3QodW5pb25Cb3VuZHMpOwogI2VuZGlmCiAKICAgICBpZiAoKGZsYWdzICYgSW5j
bHVkZVNlbGZUcmFuc2Zvcm0pICYmIHBhaW50c1dpdGhUcmFuc2Zvcm0oUGFpbnRCZWhhdmlvck5v
cm1hbCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
aW5kZXggMDJjZjBjOS4uMzdlNTlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgKQEAgLTQwOSwyMCArNDA5LDggQEAgcHVibGljOgogICAgIH0KIAog
I2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICB2b2lkIGdldEZpbHRlck91dHNldHMoaW50JiB0
b3AsIGludCYgcmlnaHQsIGludCYgYm90dG9tLCBpbnQmIGxlZnQpIGNvbnN0Ci0gICAgewotICAg
ICAgICBpZiAoaGFzRmlsdGVyKCkpCi0gICAgICAgICAgICBmaWx0ZXIoKS5nZXRPdXRzZXRzKHRv
cCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgdG9w
ID0gMDsKLSAgICAgICAgICAgIHJpZ2h0ID0gMDsKLSAgICAgICAgICAgIGJvdHRvbSA9IDA7Ci0g
ICAgICAgICAgICBsZWZ0ID0gMDsKLSAgICAgICAgfQotICAgIH0KICAgICBib29sIGhhc0ZpbHRl
ck91dHNldHMoKSBjb25zdCB7IHJldHVybiBoYXNGaWx0ZXIoKSAmJiBmaWx0ZXIoKS5oYXNPdXRz
ZXRzKCk7IH0KLSNlbHNlCi0gICAgYm9vbCBoYXNGaWx0ZXJPdXRzZXRzKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBJbnRSZWN0T3V0c2V0cyBmaWx0ZXJPdXRzZXRzKCkgY29uc3QgeyBy
ZXR1cm4gaGFzRmlsdGVyKCkgPyBmaWx0ZXIoKS5vdXRzZXRzKCkgOiBJbnRSZWN0T3V0c2V0cygp
OyB9CiAjZW5kaWYKIAogICAgIE9yZGVyIHJ0bE9yZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8T3JkZXI+KGluaGVyaXRlZF9mbGFncy5tX3J0bE9yZGVyaW5nKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAyNzQzZTdhLi5mNDAxNzkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAyLTExICBNYXggVnVqb3ZpYyAgPG12
dWpvdmljQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEZpbHRlcnNdIFJlZmFjdG9yIGZpbHRl
ciBvdXRzZXRzIGludG8gYSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA5MzMwCisKKyAgICAgICAgVXBkYXRlIEZpbHRlck9wZXJhdGlvbnMg
dW5pdCB0ZXN0cyB0byB1c2UgbmV3IGludGVyZmFjZSBmb3IgZ2V0dGluZyBmaWx0ZXIgb3V0c2V0
cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRl
c3RzL0ZpbHRlck9wZXJhdGlvbnNUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VEVTVCk6CisK
IDIwMTMtMDItMTEgIEFsZXhlaSBGaWxpcHBvdiAgPGFscGhAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFNwbGl0IFByb2ZpbGVyIGRvbWFpbiBpbiBwcm90b2NvbCBpbnRv
IFByb2ZpbGVyIGFuZCBIZWFwUHJvZmlsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRmlsdGVyT3BlcmF0aW9uc1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9GaWx0ZXJPcGVyYXRpb25zVGVzdC5jcHAKaW5kZXggODczZDIxNi4uYzAyOTQ1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GaWx0ZXJPcGVyYXRp
b25zVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GaWx0ZXJPcGVy
YXRpb25zVGVzdC5jcHAKQEAgLTQwLDEzICs0MCwxMSBAQCBURVNUKEZpbHRlck9wZXJhdGlvbnNU
ZXN0LCBnZXRPdXRzZXRzQmx1cikKICAgICBGaWx0ZXJPcGVyYXRpb25zIG9wczsKICAgICBvcHMu
b3BlcmF0aW9ucygpLmFwcGVuZChCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDIw
LjAsIFdlYkNvcmU6OkZpeGVkKSwgRmlsdGVyT3BlcmF0aW9uOjpCTFVSKSk7CiAgICAgRVhQRUNU
X1RSVUUob3BzLmhhc091dHNldHMoKSk7Ci0gICAgaW50IHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVm
dDsKLSAgICB0b3AgPSByaWdodCA9IGJvdHRvbSA9IGxlZnQgPSAwOwotICAgIG9wcy5nZXRPdXRz
ZXRzKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7Ci0gICAgRVhQRUNUX0VRKDU3LCB0b3ApOwot
ICAgIEVYUEVDVF9FUSg1NywgcmlnaHQpOwotICAgIEVYUEVDVF9FUSg1NywgYm90dG9tKTsKLSAg
ICBFWFBFQ1RfRVEoNTcsIGxlZnQpOworICAgIEludFJlY3RPdXRzZXRzIG91dHNldHMgPSBvcHMu
b3V0c2V0cygpOworICAgIEVYUEVDVF9FUSg1Nywgb3V0c2V0cy50b3AoKSk7CisgICAgRVhQRUNU
X0VRKDU3LCBvdXRzZXRzLnJpZ2h0KCkpOworICAgIEVYUEVDVF9FUSg1Nywgb3V0c2V0cy5ib3R0
b20oKSk7CisgICAgRVhQRUNUX0VRKDU3LCBvdXRzZXRzLmxlZnQoKSk7CiB9CiAKIFRFU1QoRmls
dGVyT3BlcmF0aW9uc1Rlc3QsIGdldE91dHNldHNEcm9wU2hhZG93KQpAQCAtNTQsMTMgKzUyLDEx
IEBAIFRFU1QoRmlsdGVyT3BlcmF0aW9uc1Rlc3QsIGdldE91dHNldHNEcm9wU2hhZG93KQogICAg
IEZpbHRlck9wZXJhdGlvbnMgb3BzOwogICAgIG9wcy5vcGVyYXRpb25zKCkuYXBwZW5kKERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShJbnRQb2ludCgzLCA4KSwgMjAsIENvbG9yKDEs
IDIsIDMpLCBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XKSk7CiAgICAgRVhQRUNUX1RSVUUo
b3BzLmhhc091dHNldHMoKSk7Ci0gICAgaW50IHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdDsKLSAg
ICB0b3AgPSByaWdodCA9IGJvdHRvbSA9IGxlZnQgPSAwOwotICAgIG9wcy5nZXRPdXRzZXRzKHRv
cCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7Ci0gICAgRVhQRUNUX0VRKDQ5LCB0b3ApOwotICAgIEVY
UEVDVF9FUSg2MCwgcmlnaHQpOwotICAgIEVYUEVDVF9FUSg2NSwgYm90dG9tKTsKLSAgICBFWFBF
Q1RfRVEoNTQsIGxlZnQpOworICAgIEludFJlY3RPdXRzZXRzIG91dHNldHMgPSBvcHMub3V0c2V0
cygpOworICAgIEVYUEVDVF9FUSg0OSwgb3V0c2V0cy50b3AoKSk7CisgICAgRVhQRUNUX0VRKDYw
LCBvdXRzZXRzLnJpZ2h0KCkpOworICAgIEVYUEVDVF9FUSg2NSwgb3V0c2V0cy5ib3R0b20oKSk7
CisgICAgRVhQRUNUX0VRKDU0LCBvdXRzZXRzLmxlZnQoKSk7CiB9CiAKIFRFU1QoV2ViRmlsdGVy
T3BlcmF0aW9uc1Rlc3QsIGdldE91dHNldHNCbHVyKQo=
</data>
<flag name="review"
          id="207550"
          type_id="1"
          status="+"
          setter="dino"
    />
    <flag name="commit-queue"
          id="207489"
          type_id="3"
          status="-"
          setter="mvujovic"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188177</attachid>
            <date>2013-02-13 14:09:02 -0800</date>
            <delta_ts>2013-02-13 17:01:08 -0800</delta_ts>
            <desc>Patch for Landing</desc>
            <filename>109330-3.patch</filename>
            <type>text/plain</type>
            <size>25918</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzOTQ5MzYwLi43NjJkMDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQg
QEAKKzIwMTMtMDItMTMgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAg
ICAgIFtDU1MgRmlsdGVyc10gUmVmYWN0b3IgZmlsdGVyIG91dHNldHMgaW50byBhIGNsYXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkzMzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgSW4gZmlsdGVycyBy
ZWxhdGVkIGNvZGUsIHdlJ3JlIG9mdGVuIG9wZXJhdGluZyBvbiA0IGludHMgcmVwcmVzZW50aW5n
IHRoZSB0b3AsIHJpZ2h0LAorICAgICAgICBib3R0b20sIGFuZCBsZWZ0IGZpbHRlciBvdXRzZXRz
LiBUaGVzZSBvdXRzZXRzIGNvbWUgZnJvbSBhIGZpbHRlciBsaWtlIGJsdXIgb3IgZHJvcC1zaGFk
b3cuCisgICAgICAgIFRoaXMgcGF0Y2ggcGFja2FnZXMgdGhvc2UgaW50cyBhbmQgdGhlaXIgcmVs
YXRlZCBvcGVyYXRpb25zIGludG8gYSBjbGFzcyBjYWxsZWQKKyAgICAgICAgSW50UmVjdEV4dGVu
dC4KKworICAgICAgICBIZXJlIGFyZSBzb21lIHNpZ25zIHRoYXQgd2Ugc2hvdWxkIG1ha2UgYSBj
bGFzcyB0byBob2xkIHRob3NlIDQgaW50czoKKyAgICAgICAgMSkgSW4gUmVuZGVyTGF5ZXIuY3Bw
LCB3ZSBoYXZlIGEgZXhwYW5kUmVjdEZvckZpbHRlck91dHNldHMgZnVuY3Rpb24sIHdoaWNoIGxv
b2tzIGxpa2UKKyAgICAgICAgICAgZmVhdHVyZSBlbnZ5LgorICAgICAgICAyKSBSZW5kZXJTdHls
ZSBhbmQgb3RoZXIgY2xhc3NlcyBoYXZlIG1ldGhvZHMgbGlrZSBnZXRGaWx0ZXJPdXRzZXRzIHdo
aWNoIHNldCB0aGUgNCBpbnRzIGJ5CisgICAgICAgICAgIHJlZmVyZW5jZS4gVGhlIGNhbGxpbmcg
Y29kZSBoYXMgdG8gZGVmaW5lIDQgaW50cywgd2hpY2ggbG9va3MgYmxvYXRlZC4KKyAgICAgICAg
MykgVG8gZml4IGJ1ZyAxMDkwOTgsIHdlIHdpbGwgbmVlZCB0byBjaGVjayBpZiBmaWx0ZXIgb3V0
c2V0cyBjaGFuZ2VkLCB3aGljaCBzb3VuZHMgbGlrZSBhCisgICAgICAgICAgIG5pY2Ugam9iIGZv
ciBhbiBpbmVxdWFsaXR5IG9wZXJhdG9yLiAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwOTA5OCkKKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBpbiBi
ZWhhdmlvci4gSnVzdCByZWZhY3RvcmluZy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3Qu
YW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ludFJlY3RFeHRlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKEludFJlY3RFeHRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdEV4dGVu
dDo6SW50UmVjdEV4dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0RXh0ZW50Ojp0b3Ap
OgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdEV4dGVudDo6c2V0VG9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkludFJlY3RFeHRlbnQ6OnJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkludFJlY3RF
eHRlbnQ6OnNldFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkludFJlY3RFeHRlbnQ6OmJvdHRv
bSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0RXh0ZW50OjpzZXRCb3R0b20pOgorICAgICAg
ICAoV2ViQ29yZTo6SW50UmVjdEV4dGVudDo6bGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRS
ZWN0RXh0ZW50OjpzZXRMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkludFJlY3RFeHRlbnQ6OmV4
cGFuZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdEV4dGVudDo6aXNaZXJvKToKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3Ih
PSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcis9KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyT3BlcmF0aW9uczo6b3V0c2V0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmg6CisgICAgICAgIChGaWx0ZXJPcGVyYXRpb25zKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6aW50ZXJtZWRpYXRlU3Vy
ZmFjZVJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6RmlsdGVyRWZmZWN0UmVu
ZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpjb21wdXRlU291cmNlSW1h
Z2VSZWN0Rm9yRGlydHlSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuaDoKKyAgICAgICAgKEZpbHRlckVmZmVjdFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNl
dEZpbHRlckJhY2tlbmROZWVkc1JlcGFpbnRpbmdJblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
dHJhbnNwYXJlbmN5Q2xpcEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2Fs
Y3VsYXRlTGF5ZXJCb3VuZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oOgorCiAyMDEzLTAyLTExICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogVGltZWxpbmU6IGludmFsaWRhdGUgYW5kIGZvcmNl
IGxvY2F0aW9ucyBhcmUgc2FtZSBmb3IgTGF5b3V0IHJlY29yZHMgY2F1c2VkIGJ5IHN0eWxlIHJl
Y2FsY3VsYWl0b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDE5N2U4MmUuLjkx
MDFhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTYzOCw2ICs1NjM4LDcg
QEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbnRQb2ludEhhc2guaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW50UmVjdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
dFJlY3QuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdEV4dGVu
dC5oIFwJCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplSGFzaC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXRpbjFUZXh0SXRlcmF0b3IuaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQppbmRleCBjZWEzMDk1Li5lMWFmNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTIyNDYsNiArMjI0Niw3
IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmggXAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50SGFzaC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9JbnRSZWN0LmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RFeHRlbnQuaCBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0ZXJhdG9yLmggXAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUlt
YWdlUHRyLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDFiYzgyMDAuLjdlMDU5N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTQ3MDYsNiArNDcwNiw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRSZWN0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRTaXplLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RFeHRlbnQuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NTM4MDgx
Li5hMTYxMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zODY3LDYgKzM4NjcsNyBAQAogCQlBMjk1MzJDRjE1REQ1RTE3MDA0
NjlFQkMgLyogQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMjk1MzJDRDE1REQ1RTE3MDA0NjlFQkMg
LyogQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAgKi87IH07CiAJCUEyOTUzMkQwMTVE
RDVFMTcwMDQ2OUVCQyAvKiBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMjk1MzJDRTE1REQ1RTE3MDA0
NjlFQkMgLyogQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5oICovOyB9OwogCQlBMkIyQUU3
QzE2Mzc1RUU1MDBDRkE1MEIgLyogQ3VzdG9tRmlsdGVyQ29uc3RhbnRzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMkIyQUU3QjE2Mzc1RUU1MDBDRkE1
MEIgLyogQ3VzdG9tRmlsdGVyQ29uc3RhbnRzLmggKi87IH07CisJCUEyQjkyMTczMTZDNUNDNDIw
MDQxRENEOSAvKiBJbnRSZWN0RXh0ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMkI5MjE3MjE2QzVDQzQyMDA0MURDRDkgLyogSW50UmVjdEV4dGVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUEy
RThBRTMwMTZBNDhFMUMwMDZCQjNBQSAvKiBXZWJLaXRDU1NGaWx0ZXJSdWxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEyRThBRTJFMTZBNDhFMUMw
MDZCQjNBQSAvKiBXZWJLaXRDU1NGaWx0ZXJSdWxlLmNwcCAqLzsgfTsKIAkJQTJFOEFFMzExNkE0
OEUxQzAwNkJCM0FBIC8qIFdlYktpdENTU0ZpbHRlclJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEyRThBRTJGMTZBNDhFMUMwMDZCQjNBQSAvKiBX
ZWJLaXRDU1NGaWx0ZXJSdWxlLmggKi87IH07CiAJCUEyRThBRTM3MTZBNDk4NDAwMDZCQjNBQSAv
KiBKU1dlYktpdENTU0ZpbHRlclJ1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTJFOEFFMzUxNkE0OTg0MDAwNkJCM0FBIC8qIEpTV2ViS2l0Q1NT
RmlsdGVyUnVsZS5jcHAgKi87IH07CkBAIC0xMTM0Miw2ICsxMTM0Myw3IEBACiAJCUEyOTUzMkNE
MTVERDVFMTcwMDQ2OUVCQyAvKiBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlclZhbGlkYXRlZFBy
b2dyYW0uY3BwOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTI5NTMyQ0UxNURENUUxNzAwNDY5RUJD
IC8qIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5oOyBwYXRoID0gZmlsdGVy
cy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUEyQjJBRTdCMTYzNzVFRTUwMENGQTUwQiAvKiBDdXN0b21GaWx0ZXJDb25zdGFudHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyQ29uc3RhbnRz
Lmg7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlckNvbnN0YW50cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBMkI5MjE3MjE2QzVDQzQyMDA0MURDRDkgLyogSW50UmVjdEV4dGVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRSZWN0RXh0ZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEyRThBRTJFMTZBNDhFMUMwMDZCQjNBQSAvKiBX
ZWJLaXRDU1NGaWx0ZXJSdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYktpdENTU0ZpbHRlclJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMkU4QUUyRjE2QTQ4RTFDMDA2QkIzQUEgLyogV2ViS2l0Q1NTRmlsdGVyUnVsZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NGaWx0ZXJSdWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEyRThBRTM1MTZBNDk4NDAwMDZCQjNBQSAvKiBKU1dl
YktpdENTU0ZpbHRlclJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNXZWJLaXRDU1NGaWx0ZXJSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIwNjE2LDYgKzIwNjE4LDcgQEAKIAkJCQlFNDYyQTRBMDExM0U3MUJFMDA0QTQyMjAgLyog
SW50UG9pbnRIYXNoLmggKi8sCiAJCQkJQjI3NTM1NDUwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJl
Y3QuY3BwICovLAogCQkJCUIyNzUzNTQ2MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0LmggKi8s
CisJCQkJQTJCOTIxNzIxNkM1Q0M0MjAwNDFEQ0Q5IC8qIEludFJlY3RFeHRlbnQuaCAqLywKIAkJ
CQlFMTM0RjVBQTEyRUUzNDNGMDA0RUM1OEQgLyogSW50UmVjdEhhc2guaCAqLywKIAkJCQlCMjc1
MzU0NzBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZS5oICovLAogCQkJCUIyNzUzNTQ4MEIwNTM4
MTQwMDJDRTY0RiAvKiBJbnRTaXplSGFzaC5oICovLApAQCAtMjQ2OTMsNiArMjQ2OTYsNyBAQAog
CQkJCUU0NjJBNEExMTEzRTcxQkUwMDRBNDIyMCAvKiBJbnRQb2ludEhhc2guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyNzUzNTc0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMTM0RjVBQjEyRUUzNDNGMDA0RUM1OEQgLyogSW50UmVjdEhhc2guaCBpbiBI
ZWFkZXJzICovLAorCQkJCUEyQjkyMTczMTZDNUNDNDIwMDQxRENEOSAvKiBJbnRSZWN0RXh0ZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU3NTBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NzYwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNp
emVIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzgxQkEwQTBFOTczNDgzMDAyNjZFMDcgLyog
SmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0RXh0ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0RXh0ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNjUxN2Y4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RFeHRlbnQuaApAQCAtMCwwICsxLDExMiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
CisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRSZWN0RXh0ZW50X2gKKyNk
ZWZpbmUgSW50UmVjdEV4dGVudF9oCisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisKKyNpbmNs
dWRlICJMYXlvdXRSZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW50UmVj
dEV4dGVudCB7CitwdWJsaWM6CisgICAgSW50UmVjdEV4dGVudCgpCisgICAgICAgIDogbV90b3Ao
MCkKKyAgICAgICAgLCBtX3JpZ2h0KDApCisgICAgICAgICwgbV9ib3R0b20oMCkKKyAgICAgICAg
LCBtX2xlZnQoMCkKKyAgICB7CisgICAgfQorCisgICAgSW50UmVjdEV4dGVudChpbnQgdG9wLCBp
bnQgcmlnaHQsIGludCBib3R0b20sIGludCBsZWZ0KQorICAgICAgICA6IG1fdG9wKHRvcCkKKyAg
ICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQorICAgICAgICAsIG1fYm90dG9tKGJvdHRvbSkKKyAgICAg
ICAgLCBtX2xlZnQobGVmdCkKKyAgICB7CisgICAgfQorCisgICAgaW50IHRvcCgpIGNvbnN0IHsg
cmV0dXJuIG1fdG9wOyB9CisgICAgdm9pZCBzZXRUb3AoaW50IHRvcCkgeyBtX3RvcCA9IHRvcDsg
fQorCisgICAgaW50IHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yaWdodDsgfQorICAgIHZvaWQg
c2V0UmlnaHQoaW50IHJpZ2h0KSB7IG1fcmlnaHQgPSByaWdodDsgfQorCisgICAgaW50IGJvdHRv
bSgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tOyB9CisgICAgdm9pZCBzZXRCb3R0b20oaW50IGJv
dHRvbSkgeyBtX2JvdHRvbSA9IGJvdHRvbTsgfQorCisgICAgaW50IGxlZnQoKSBjb25zdCB7IHJl
dHVybiBtX2xlZnQ7IH0KKyAgICB2b2lkIHNldExlZnQoaW50IGxlZnQpIHsgbV9sZWZ0ID0gbGVm
dDsgfQorCisgICAgdm9pZCBleHBhbmRSZWN0KExheW91dFJlY3QmIHJlY3QpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoaXNaZXJvKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
cmVjdC5tb3ZlKC1sZWZ0KCksIC10b3AoKSk7CisgICAgICAgIHJlY3QuZXhwYW5kKGxlZnQoKSAr
IHJpZ2h0KCksIHRvcCgpICsgYm90dG9tKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29s
IGlzWmVybygpIGNvbnN0IHsgcmV0dXJuICFsZWZ0KCkgJiYgIXJpZ2h0KCkgJiYgIXRvcCgpICYm
ICFib3R0b20oKTsgfQorCisgICAgaW50IG1fdG9wOworICAgIGludCBtX3JpZ2h0OworICAgIGlu
dCBtX2JvdHRvbTsKKyAgICBpbnQgbV9sZWZ0OworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBJbnRSZWN0RXh0ZW50JiBhLCBjb25zdCBJbnRSZWN0RXh0ZW50JiBiKQoreworICAg
IHJldHVybiBhLnRvcCgpID09IGIudG9wKCkKKyAgICAgICAgJiYgYS5yaWdodCgpID09IGIucmln
aHQoKQorICAgICAgICAmJiBhLmJvdHRvbSgpID09IGIuYm90dG9tKCkKKyAgICAgICAgJiYgYS5s
ZWZ0KCkgPT0gYi5sZWZ0KCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSW50
UmVjdEV4dGVudCYgYSwgY29uc3QgSW50UmVjdEV4dGVudCYgYikKK3sKKyAgICByZXR1cm4gIShh
ID09IGIpOworfQorCitpbmxpbmUgdm9pZCBvcGVyYXRvcis9KEludFJlY3RFeHRlbnQmIGEsIGNv
bnN0IEludFJlY3RFeHRlbnQmIGIpCit7CisgICAgYS5zZXRUb3AoYS50b3AoKSArIGIudG9wKCkp
OworICAgIGEuc2V0UmlnaHQoYS5yaWdodCgpICsgYi5yaWdodCgpKTsKKyAgICBhLnNldEJvdHRv
bShhLmJvdHRvbSgpICsgYi5ib3R0b20oKSk7CisgICAgYS5zZXRMZWZ0KGEubGVmdCgpICsgYi5s
ZWZ0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
Q1NTX0ZJTFRFUlMpCisKKyNlbmRpZiAvLyBJbnRSZWN0RXh0ZW50X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJh
dGlvbnMuY3BwCmluZGV4IGZjYjc0ZmMuLmRiNjU5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25z
LmNwcApAQCAtMTE4LDMyICsxMTgsMzAgQEAgYm9vbCBGaWx0ZXJPcGVyYXRpb25zOjpoYXNPdXRz
ZXRzKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgRmlsdGVyT3BlcmF0aW9u
czo6Z2V0T3V0c2V0cyhpbnQmIHRvcCwgaW50JiByaWdodCwgaW50JiBib3R0b20sIGludCYgbGVm
dCkgY29uc3QKK0ZpbHRlck91dHNldHMgRmlsdGVyT3BlcmF0aW9uczo6b3V0c2V0cygpIGNvbnN0
CiB7Ci0gICAgdG9wID0gMDsKLSAgICByaWdodCA9IDA7Ci0gICAgYm90dG9tID0gMDsKLSAgICBs
ZWZ0ID0gMDsKKyAgICBGaWx0ZXJPdXRzZXRzIHRvdGFsT3V0c2V0czsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fb3BlcmF0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICBGaWx0ZXJP
cGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbiA9IG1fb3BlcmF0aW9ucy5hdChpKS5nZXQoKTsKICAg
ICAgICAgc3dpdGNoIChmaWx0ZXJPcGVyYXRpb24tPmdldE9wZXJhdGlvblR5cGUoKSkgewogICAg
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjogewogICAgICAgICAgICAgQmx1ckZpbHRl
ck9wZXJhdGlvbiogYmx1ck9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJsdXJGaWx0ZXJPcGVyYXRp
b24qPihmaWx0ZXJPcGVyYXRpb24pOwogICAgICAgICAgICAgZmxvYXQgc3RkRGV2aWF0aW9uID0g
ZmxvYXRWYWx1ZUZvckxlbmd0aChibHVyT3BlcmF0aW9uLT5zdGREZXZpYXRpb24oKSwgMCk7Ci0g
ICAgICAgICAgICBJbnRTaXplIG91dHNldCA9IG91dHNldFNpemVGb3JCbHVyKHN0ZERldmlhdGlv
bik7Ci0gICAgICAgICAgICB0b3AgKz0gb3V0c2V0LmhlaWdodCgpOwotICAgICAgICAgICAgcmln
aHQgKz0gb3V0c2V0LndpZHRoKCk7Ci0gICAgICAgICAgICBib3R0b20gKz0gb3V0c2V0LmhlaWdo
dCgpOwotICAgICAgICAgICAgbGVmdCArPSBvdXRzZXQud2lkdGgoKTsKKyAgICAgICAgICAgIElu
dFNpemUgb3V0c2V0U2l6ZSA9IG91dHNldFNpemVGb3JCbHVyKHN0ZERldmlhdGlvbik7CisgICAg
ICAgICAgICBGaWx0ZXJPdXRzZXRzIG91dHNldHMob3V0c2V0U2l6ZS5oZWlnaHQoKSwgb3V0c2V0
U2l6ZS53aWR0aCgpLCBvdXRzZXRTaXplLmhlaWdodCgpLCBvdXRzZXRTaXplLndpZHRoKCkpOwor
ICAgICAgICAgICAgdG90YWxPdXRzZXRzICs9IG91dHNldHM7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsK
ICAgICAgICAgICAgIERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qIGRyb3BTaGFkb3dPcGVyYXRp
b24gPSBzdGF0aWNfY2FzdDxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0
aW9uKTsKLSAgICAgICAgICAgIEludFNpemUgb3V0c2V0ID0gb3V0c2V0U2l6ZUZvckJsdXIoZHJv
cFNoYWRvd09wZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCkpOwotICAgICAgICAgICAgdG9wICs9IHN0
ZDo6bWF4KDAsIG91dHNldC5oZWlnaHQoKSAtIGRyb3BTaGFkb3dPcGVyYXRpb24tPnkoKSk7Ci0g
ICAgICAgICAgICByaWdodCArPSBzdGQ6Om1heCgwLCBvdXRzZXQud2lkdGgoKSArIGRyb3BTaGFk
b3dPcGVyYXRpb24tPngoKSk7Ci0gICAgICAgICAgICBib3R0b20gKz0gc3RkOjptYXgoMCwgb3V0
c2V0LmhlaWdodCgpICsgZHJvcFNoYWRvd09wZXJhdGlvbi0+eSgpKTsKLSAgICAgICAgICAgIGxl
ZnQgKz0gc3RkOjptYXgoMCwgb3V0c2V0LndpZHRoKCkgLSBkcm9wU2hhZG93T3BlcmF0aW9uLT54
KCkpOworICAgICAgICAgICAgSW50U2l6ZSBvdXRzZXRTaXplID0gb3V0c2V0U2l6ZUZvckJsdXIo
ZHJvcFNoYWRvd09wZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCkpOworICAgICAgICAgICAgRmlsdGVy
T3V0c2V0cyBvdXRzZXRzKAorICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAsIG91dHNldFNpemUu
aGVpZ2h0KCkgLSBkcm9wU2hhZG93T3BlcmF0aW9uLT55KCkpLAorICAgICAgICAgICAgICAgIHN0
ZDo6bWF4KDAsIG91dHNldFNpemUud2lkdGgoKSArIGRyb3BTaGFkb3dPcGVyYXRpb24tPngoKSks
CisgICAgICAgICAgICAgICAgc3RkOjptYXgoMCwgb3V0c2V0U2l6ZS5oZWlnaHQoKSArIGRyb3BT
aGFkb3dPcGVyYXRpb24tPnkoKSksCisgICAgICAgICAgICAgICAgc3RkOjptYXgoMCwgb3V0c2V0
U2l6ZS53aWR0aCgpIC0gZHJvcFNoYWRvd09wZXJhdGlvbi0+eCgpKQorICAgICAgICAgICAgKTsK
KyAgICAgICAgICAgIHRvdGFsT3V0c2V0cyArPSBvdXRzZXRzOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCkBAIC0xNTgsNiArMTU2LDcgQEAg
dm9pZCBGaWx0ZXJPcGVyYXRpb25zOjpnZXRPdXRzZXRzKGludCYgdG9wLCBpbnQmIHJpZ2h0LCBp
bnQmIGJvdHRvbSwgaW50JiBsZWZ0KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICB9CisgICAgcmV0dXJuIHRvdGFsT3V0c2V0czsKIH0KIAogYm9vbCBGaWx0ZXJPcGVyYXRpb25z
OjpoYXNGaWx0ZXJUaGF0QWZmZWN0c09wYWNpdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMu
aAppbmRleCBjMWRhODViLi4wOWEyZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaApAQCAtMjks
MTEgKzI5LDE0IEBACiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogCiAjaW5jbHVkZSAiRmlsdGVy
T3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiSW50UmVjdEV4dGVudC5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAordHlwZWRlZiBJbnRSZWN0RXh0ZW50IEZpbHRlck91dHNldHM7CisKIGNsYXNzIEZpbHRlck9w
ZXJhdGlvbnMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNjMs
NyArNjYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRpb25zTWF0Y2goY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNPdXRzZXRzKCkgY29uc3Q7Ci0gICAg
dm9pZCBnZXRPdXRzZXRzKGludCYgdG9wLCBpbnQmIHJpZ2h0LCBpbnQmIGJvdHRvbSwgaW50JiBs
ZWZ0KSBjb25zdDsKKyAgICBGaWx0ZXJPdXRzZXRzIG91dHNldHMoKSBjb25zdDsKIAogICAgIGJv
b2wgaGFzRmlsdGVyVGhhdEFmZmVjdHNPcGFjaXR5KCkgY29uc3Q7CiAgICAgYm9vbCBoYXNGaWx0
ZXJUaGF0TW92ZXNQaXhlbHMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5k
ZXggZWRmZTMyMC4uODhlYjNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTE4
NCwxNCArMTg0LDEwIEBAIEludFJlY3QgVGV4dHVyZU1hcHBlckxheWVyOjppbnRlcm1lZGlhdGVT
dXJmYWNlUmVjdChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYKIAogI2lmIEVOQUJMRShDU1Nf
RklMVEVSUykKICAgICBpZiAobV9jdXJyZW50RmlsdGVycy5oYXNPdXRzZXRzKCkpIHsKLSAgICAg
ICAgaW50IGxlZnRPdXRzZXQ7Ci0gICAgICAgIGludCB0b3BPdXRzZXQ7Ci0gICAgICAgIGludCBi
b3R0b21PdXRzZXQ7Ci0gICAgICAgIGludCByaWdodE91dHNldDsKLSAgICAgICAgbV9jdXJyZW50
RmlsdGVycy5nZXRPdXRzZXRzKHRvcE91dHNldCwgcmlnaHRPdXRzZXQsIGJvdHRvbU91dHNldCwg
bGVmdE91dHNldCk7CisgICAgICAgIEZpbHRlck91dHNldHMgb3V0c2V0cyA9IG1fY3VycmVudEZp
bHRlcnMub3V0c2V0cygpOwogICAgICAgICBJbnRSZWN0IHVuZmlsdGVyZWRUYXJnZXRSZWN0KHJl
Y3QpOwotICAgICAgICByZWN0Lm1vdmUoc3RkOjptYXgoMCwgLWxlZnRPdXRzZXQpLCBzdGQ6Om1h
eCgwLCAtdG9wT3V0c2V0KSk7Ci0gICAgICAgIHJlY3QuZXhwYW5kKGxlZnRPdXRzZXQgKyByaWdo
dE91dHNldCwgdG9wT3V0c2V0ICsgYm90dG9tT3V0c2V0KTsKKyAgICAgICAgcmVjdC5tb3ZlKHN0
ZDo6bWF4KDAsIC1vdXRzZXRzLmxlZnQoKSksIHN0ZDo6bWF4KDAsIC1vdXRzZXRzLnRvcCgpKSk7
CisgICAgICAgIHJlY3QuZXhwYW5kKG91dHNldHMubGVmdCgpICsgb3V0c2V0cy5yaWdodCgpLCBv
dXRzZXRzLnRvcCgpICsgb3V0c2V0cy5ib3R0b20oKSk7CiAgICAgICAgIHJlY3QudW5pdGUodW5m
aWx0ZXJlZFRhcmdldFJlY3QpOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKaW5kZXggZGVhMmVmMC4uNjYzYjM4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuY3BwCkBAIC0xMDIsMTEgKzEwMiw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEZFQ3VzdG9tRmls
dGVyPiBjcmVhdGVDdXN0b21GaWx0ZXJFZmZlY3QoRmlsdGVyKiBmaWx0ZXIsIERvY3VtCiAjZW5k
aWYKIAogRmlsdGVyRWZmZWN0UmVuZGVyZXI6OkZpbHRlckVmZmVjdFJlbmRlcmVyKCkKLSAgICA6
IG1fdG9wT3V0c2V0KDApCi0gICAgLCBtX3JpZ2h0T3V0c2V0KDApCi0gICAgLCBtX2JvdHRvbU91
dHNldCgwKQotICAgICwgbV9sZWZ0T3V0c2V0KDApCi0gICAgLCBtX2dyYXBoaWNzQnVmZmVyQXR0
YWNoZWQoZmFsc2UpCisgICAgOiBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQoZmFsc2UpCiAgICAg
LCBtX2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscyhmYWxzZSkKICNpZiBFTkFCTEUoQ1NTX1NIQURF
UlMpCiAgICAgLCBtX2hhc0N1c3RvbVNoYWRlckZpbHRlcihmYWxzZSkKQEAgLTE5Niw3ICsxOTIs
NyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJgogI2VuZGlmCiAgICAgbV9oYXNGaWx0ZXJUaGF0
TW92ZXNQaXhlbHMgPSBvcGVyYXRpb25zLmhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpOwogICAg
IGlmIChtX2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscykKLSAgICAgICAgb3BlcmF0aW9ucy5nZXRP
dXRzZXRzKG1fdG9wT3V0c2V0LCBtX3JpZ2h0T3V0c2V0LCBtX2JvdHRvbU91dHNldCwgbV9sZWZ0
T3V0c2V0KTsKKyAgICAgICAgbV9vdXRzZXRzID0gb3BlcmF0aW9ucy5vdXRzZXRzKCk7CiAgICAg
CiAgICAgLy8gS2VlcCB0aGUgb2xkIGVmZmVjdHMgb24gdGhlIHN0YWNrIHVudGlsIHdlJ3ZlIGNy
ZWF0ZWQgdGhlIG5ldyBlZmZlY3RzLgogICAgIC8vIE5ldyBGRUN1c3RvbUZpbHRlcnMgY2FuIHJl
dXNlIGNhY2hlZCByZXNvdXJjZXMgZnJvbSBvbGQgRkVDdXN0b21GaWx0ZXJzLgpAQCAtNDM5LDgg
KzQzNSw4IEBAIExheW91dFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNvbXB1dGVTb3VyY2VJ
bWFnZVJlY3RGb3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0CiAgICAgaWYgKGhhc0ZpbHRlclRoYXRN
b3Zlc1BpeGVscygpKSB7CiAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUgb3V0c2V0cyBhcmUgcmV2
ZXJzZWQgaGVyZSBiZWNhdXNlIHdlIGFyZSBnb2luZyBiYWNrd2FyZHMgLT4gd2UgaGF2ZSB0aGUg
ZGlydHkgcmVjdCBhbmQKICAgICAgICAgLy8gbmVlZCB0byBmaW5kIG91dCB3aGF0IGlzIHRoZSBy
ZWN0YW5nbGUgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhlIHJlc3VsdCBpbnNpZGUgdGhhdCBkaXJ0
eSByZWN0LgotICAgICAgICByZWN0Rm9yUmVwYWludC5tb3ZlKC1tX3JpZ2h0T3V0c2V0LCAtbV9i
b3R0b21PdXRzZXQpOwotICAgICAgICByZWN0Rm9yUmVwYWludC5leHBhbmQobV9sZWZ0T3V0c2V0
ICsgbV9yaWdodE91dHNldCwgbV90b3BPdXRzZXQgKyBtX2JvdHRvbU91dHNldCk7CisgICAgICAg
IHJlY3RGb3JSZXBhaW50Lm1vdmUoLW1fb3V0c2V0cy5yaWdodCgpLCAtbV9vdXRzZXRzLmJvdHRv
bSgpKTsKKyAgICAgICAgcmVjdEZvclJlcGFpbnQuZXhwYW5kKG1fb3V0c2V0cy5sZWZ0KCkgKyBt
X291dHNldHMucmlnaHQoKSwgbV9vdXRzZXRzLnRvcCgpICsgbV9vdXRzZXRzLmJvdHRvbSgpKTsK
ICAgICB9CiAgICAgcmVjdEZvclJlcGFpbnQuaW50ZXJzZWN0KGZpbHRlckJveFJlY3QpOwogICAg
IHJldHVybiByZWN0Rm9yUmVwYWludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmgKaW5kZXggNDRhY2UyMy4uNTM1YTg3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkludFJlY3RFeHRlbnQuaCIK
ICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgog
I2luY2x1ZGUgIlNvdXJjZUdyYXBoaWMuaCIKQEAgLTE0MCwxMSArMTQxLDggQEAgcHJpdmF0ZToK
ICAgICBGaWx0ZXJFZmZlY3RMaXN0IG1fZWZmZWN0czsKICAgICBSZWZQdHI8U291cmNlR3JhcGhp
Yz4gbV9zb3VyY2VHcmFwaGljOwogICAgIAotICAgIGludCBtX3RvcE91dHNldDsKLSAgICBpbnQg
bV9yaWdodE91dHNldDsKLSAgICBpbnQgbV9ib3R0b21PdXRzZXQ7Ci0gICAgaW50IG1fbGVmdE91
dHNldDsKLSAgICAKKyAgICBJbnRSZWN0RXh0ZW50IG1fb3V0c2V0czsKKwogICAgIGJvb2wgbV9n
cmFwaGljc0J1ZmZlckF0dGFjaGVkOwogICAgIGJvb2wgbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhl
bHM7CiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKaW5kZXggZThkMDNlYS4uZGQyMzY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xMzY3LDI4ICsxMzY3LDEzIEBAIFJlbmRlckxheWVy
KiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nRmlsdGVyUmVwYWludExheWVyKCkgY29uc3QKICAgICBy
ZXR1cm4gMDsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGV4cGFuZFJlY3RGb3JGaWx0ZXJPdXRz
ZXRzKExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlbmRl
cmVyKQotewotICAgIEFTU0VSVChyZW5kZXJlcik7Ci0gICAgaWYgKCFyZW5kZXJlci0+c3R5bGUo
KS0+aGFzRmlsdGVyT3V0c2V0cygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnQgdG9wT3V0
c2V0OwotICAgIGludCByaWdodE91dHNldDsKLSAgICBpbnQgYm90dG9tT3V0c2V0OwotICAgIGlu
dCBsZWZ0T3V0c2V0OwotICAgIHJlbmRlcmVyLT5zdHlsZSgpLT5nZXRGaWx0ZXJPdXRzZXRzKHRv
cE91dHNldCwgcmlnaHRPdXRzZXQsIGJvdHRvbU91dHNldCwgbGVmdE91dHNldCk7Ci0gICAgcmVj
dC5tb3ZlKC1sZWZ0T3V0c2V0LCAtdG9wT3V0c2V0KTsKLSAgICByZWN0LmV4cGFuZChsZWZ0T3V0
c2V0ICsgcmlnaHRPdXRzZXQsIHRvcE91dHNldCArIGJvdHRvbU91dHNldCk7Ci19Ci0KIHZvaWQg
UmVuZGVyTGF5ZXI6OnNldEZpbHRlckJhY2tlbmROZWVkc1JlcGFpbnRpbmdJblJlY3QoY29uc3Qg
TGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBpbW1lZGlhdGUpCiB7CiAgICAgaWYgKHJlY3QuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgTGF5b3V0UmVjdCByZWN0Rm9yUmVwYWlu
dCA9IHJlY3Q7Ci0gICAgZXhwYW5kUmVjdEZvckZpbHRlck91dHNldHMocmVjdEZvclJlcGFpbnQs
IHJlbmRlcmVyKCkpOworICAgIHJlbmRlcmVyKCktPnN0eWxlKCktPmZpbHRlck91dHNldHMoKS5l
eHBhbmRSZWN0KHJlY3RGb3JSZXBhaW50KTsKIAogICAgIFJlbmRlckxheWVyRmlsdGVySW5mbyog
ZmlsdGVySW5mbyA9IHRoaXMtPmZpbHRlckluZm8oKTsKICAgICBBU1NFUlQoZmlsdGVySW5mbyk7
CkBAIC0xNTU3LDcgKzE1NDIsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCB0cmFuc3BhcmVuY3lDbGlw
Qm94KGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgY29uc3QgUmVuZGVyTGF5ZQogICAgICAgICBM
YXlvdXRSZWN0IGNsaXBSZWN0ID0gbGF5ZXItPmJvdW5kaW5nQm94KGxheWVyKTsKICAgICAgICAg
ZXhwYW5kQ2xpcFJlY3RGb3JEZXNjZW5kYW50c0FuZFJlZmxlY3Rpb24oY2xpcFJlY3QsIGxheWVy
LCBsYXllciwgcGFpbnRCZWhhdmlvcik7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgICAg
ICBleHBhbmRSZWN0Rm9yRmlsdGVyT3V0c2V0cyhjbGlwUmVjdCwgbGF5ZXItPnJlbmRlcmVyKCkp
OworICAgICAgICBsYXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+ZmlsdGVyT3V0c2V0cygpLmV4
cGFuZFJlY3QoY2xpcFJlY3QpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiB0cmFuc2Zvcm0ubWFw
UmVjdChjbGlwUmVjdCk7CiAgICAgfQpAQCAtMTU2NSw3ICsxNTUwLDcgQEAgc3RhdGljIExheW91
dFJlY3QgdHJhbnNwYXJlbmN5Q2xpcEJveChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIGNvbnN0
IFJlbmRlckxheWUKICAgICBMYXlvdXRSZWN0IGNsaXBSZWN0ID0gbGF5ZXItPmJvdW5kaW5nQm94
KHJvb3RMYXllcik7CiAgICAgZXhwYW5kQ2xpcFJlY3RGb3JEZXNjZW5kYW50c0FuZFJlZmxlY3Rp
b24oY2xpcFJlY3QsIGxheWVyLCByb290TGF5ZXIsIHBhaW50QmVoYXZpb3IpOwogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKLSAgICBleHBhbmRSZWN0Rm9yRmlsdGVyT3V0c2V0cyhjbGlwUmVjdCwg
bGF5ZXItPnJlbmRlcmVyKCkpOworICAgIGxheWVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5maWx0
ZXJPdXRzZXRzKCkuZXhwYW5kUmVjdChjbGlwUmVjdCk7CiAjZW5kaWYKICAgICByZXR1cm4gY2xp
cFJlY3Q7CiB9CkBAIC01MDEyLDcgKzQ5OTcsNyBAQCBJbnRSZWN0IFJlbmRlckxheWVyOjpjYWxj
dWxhdGVMYXllckJvdW5kcyhjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciwgY29ucwog
ICAgIC8vIGZpbHRlcmVkIGFyZWFzIHdpdGggdGhlIG91dHNldHMgaWYgd2Uga25vdyB0aGF0IHRo
ZSBmaWx0ZXIgaXMgZ29pbmcgdG8gcmVuZGVyIGluIGhhcmR3YXJlLgogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTIzOQogICAgIGlmIChmbGFncyAmIElu
Y2x1ZGVMYXllckZpbHRlck91dHNldHMpCi0gICAgICAgIGV4cGFuZFJlY3RGb3JGaWx0ZXJPdXRz
ZXRzKHVuaW9uQm91bmRzLCByZW5kZXJlcik7CisgICAgICAgIHJlbmRlcmVyLT5zdHlsZSgpLT5m
aWx0ZXJPdXRzZXRzKCkuZXhwYW5kUmVjdCh1bmlvbkJvdW5kcyk7CiAjZW5kaWYKIAogICAgIGlm
ICgoZmxhZ3MgJiBJbmNsdWRlU2VsZlRyYW5zZm9ybSkgJiYgcGFpbnRzV2l0aFRyYW5zZm9ybShQ
YWludEJlaGF2aW9yTm9ybWFsKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaAppbmRleCAwMmNmMGM5Li4zNDJjNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNDA5LDIwICs0MDksOCBAQCBwdWJs
aWM6CiAgICAgfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIHZvaWQgZ2V0RmlsdGVy
T3V0c2V0cyhpbnQmIHRvcCwgaW50JiByaWdodCwgaW50JiBib3R0b20sIGludCYgbGVmdCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIGlmIChoYXNGaWx0ZXIoKSkKLSAgICAgICAgICAgIGZpbHRlcigp
LmdldE91dHNldHModG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTsKLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICB0b3AgPSAwOwotICAgICAgICAgICAgcmlnaHQgPSAwOwotICAgICAgICAgICAg
Ym90dG9tID0gMDsKLSAgICAgICAgICAgIGxlZnQgPSAwOwotICAgICAgICB9Ci0gICAgfQogICAg
IGJvb2wgaGFzRmlsdGVyT3V0c2V0cygpIGNvbnN0IHsgcmV0dXJuIGhhc0ZpbHRlcigpICYmIGZp
bHRlcigpLmhhc091dHNldHMoKTsgfQotI2Vsc2UKLSAgICBib29sIGhhc0ZpbHRlck91dHNldHMo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIEZpbHRlck91dHNldHMgZmlsdGVyT3V0c2V0
cygpIGNvbnN0IHsgcmV0dXJuIGhhc0ZpbHRlcigpID8gZmlsdGVyKCkub3V0c2V0cygpIDogRmls
dGVyT3V0c2V0cygpOyB9CiAjZW5kaWYKIAogICAgIE9yZGVyIHJ0bE9yZGVyaW5nKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8T3JkZXI+KGluaGVyaXRlZF9mbGFncy5tX3J0bE9yZGVyaW5n
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyNzQzZTdhLi4wOWY1MDE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAyLTEzICBNYXgg
VnVqb3ZpYyAgPG12dWpvdmljQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEZpbHRlcnNdIFJl
ZmFjdG9yIGZpbHRlciBvdXRzZXRzIGludG8gYSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MzMwCisKKyAgICAgICAgVXBkYXRlIEZpbHRl
ck9wZXJhdGlvbnMgdW5pdCB0ZXN0cyB0byB1c2UgbmV3IGludGVyZmFjZSBmb3IgZ2V0dGluZyBm
aWx0ZXIgb3V0c2V0cy4KKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAg
ICAgICAgKiB0ZXN0cy9GaWx0ZXJPcGVyYXRpb25zVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlRFU1QpOgorCiAyMDEzLTAyLTExICBBbGV4ZWkgRmlsaXBwb3YgIDxhbHBoQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTcGxpdCBQcm9maWxlciBkb21haW4gaW4gcHJv
dG9jb2wgaW50byBQcm9maWxlciBhbmQgSGVhcFByb2ZpbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZpbHRlck9wZXJhdGlvbnNUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvRmlsdGVyT3BlcmF0aW9uc1Rlc3QuY3BwCmluZGV4IDg3M2Qy
MTYuLjBkMmVlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmls
dGVyT3BlcmF0aW9uc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
RmlsdGVyT3BlcmF0aW9uc1Rlc3QuY3BwCkBAIC00MCwxMyArNDAsMTEgQEAgVEVTVChGaWx0ZXJP
cGVyYXRpb25zVGVzdCwgZ2V0T3V0c2V0c0JsdXIpCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBvcHM7
CiAgICAgb3BzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRl
KExlbmd0aCgyMC4wLCBXZWJDb3JlOjpGaXhlZCksIEZpbHRlck9wZXJhdGlvbjo6QkxVUikpOwog
ICAgIEVYUEVDVF9UUlVFKG9wcy5oYXNPdXRzZXRzKCkpOwotICAgIGludCB0b3AsIHJpZ2h0LCBi
b3R0b20sIGxlZnQ7Ci0gICAgdG9wID0gcmlnaHQgPSBib3R0b20gPSBsZWZ0ID0gMDsKLSAgICBv
cHMuZ2V0T3V0c2V0cyh0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpOwotICAgIEVYUEVDVF9FUSg1
NywgdG9wKTsKLSAgICBFWFBFQ1RfRVEoNTcsIHJpZ2h0KTsKLSAgICBFWFBFQ1RfRVEoNTcsIGJv
dHRvbSk7Ci0gICAgRVhQRUNUX0VRKDU3LCBsZWZ0KTsKKyAgICBGaWx0ZXJPdXRzZXRzIG91dHNl
dHMgPSBvcHMub3V0c2V0cygpOworICAgIEVYUEVDVF9FUSg1Nywgb3V0c2V0cy50b3AoKSk7Cisg
ICAgRVhQRUNUX0VRKDU3LCBvdXRzZXRzLnJpZ2h0KCkpOworICAgIEVYUEVDVF9FUSg1Nywgb3V0
c2V0cy5ib3R0b20oKSk7CisgICAgRVhQRUNUX0VRKDU3LCBvdXRzZXRzLmxlZnQoKSk7CiB9CiAK
IFRFU1QoRmlsdGVyT3BlcmF0aW9uc1Rlc3QsIGdldE91dHNldHNEcm9wU2hhZG93KQpAQCAtNTQs
MTMgKzUyLDExIEBAIFRFU1QoRmlsdGVyT3BlcmF0aW9uc1Rlc3QsIGdldE91dHNldHNEcm9wU2hh
ZG93KQogICAgIEZpbHRlck9wZXJhdGlvbnMgb3BzOwogICAgIG9wcy5vcGVyYXRpb25zKCkuYXBw
ZW5kKERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShJbnRQb2ludCgzLCA4KSwgMjAs
IENvbG9yKDEsIDIsIDMpLCBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XKSk7CiAgICAgRVhQ
RUNUX1RSVUUob3BzLmhhc091dHNldHMoKSk7Ci0gICAgaW50IHRvcCwgcmlnaHQsIGJvdHRvbSwg
bGVmdDsKLSAgICB0b3AgPSByaWdodCA9IGJvdHRvbSA9IGxlZnQgPSAwOwotICAgIG9wcy5nZXRP
dXRzZXRzKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7Ci0gICAgRVhQRUNUX0VRKDQ5LCB0b3Ap
OwotICAgIEVYUEVDVF9FUSg2MCwgcmlnaHQpOwotICAgIEVYUEVDVF9FUSg2NSwgYm90dG9tKTsK
LSAgICBFWFBFQ1RfRVEoNTQsIGxlZnQpOworICAgIEZpbHRlck91dHNldHMgb3V0c2V0cyA9IG9w
cy5vdXRzZXRzKCk7CisgICAgRVhQRUNUX0VRKDQ5LCBvdXRzZXRzLnRvcCgpKTsKKyAgICBFWFBF
Q1RfRVEoNjAsIG91dHNldHMucmlnaHQoKSk7CisgICAgRVhQRUNUX0VRKDY1LCBvdXRzZXRzLmJv
dHRvbSgpKTsKKyAgICBFWFBFQ1RfRVEoNTQsIG91dHNldHMubGVmdCgpKTsKIH0KIAogVEVTVChX
ZWJGaWx0ZXJPcGVyYXRpb25zVGVzdCwgZ2V0T3V0c2V0c0JsdXIpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>