<?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>60596</bug_id>
          
          <creation_ts>2011-05-10 16:44:13 -0700</creation_ts>
          <short_desc>Switch paintFillLayer and its progeny to use IntRect instead of four ints</short_desc>
          <delta_ts>2011-05-11 20:18:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>60318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>401640</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-10 16:44:13 -0700</bug_when>
    <thetext>paintFillLayer, paintFillLayers, and paintFillLayerExtended (deep breaths) all take four ints instead of an IntRect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401648</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-10 16:49:07 -0700</bug_when>
    <thetext>Amen, brother.  Amen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402158</commentid>
    <comment_count>2</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-11 12:16:57 -0700</bug_when>
    <thetext>Also switching paintFillLayersExtended&apos;s InlineBox width and height parameters to an IntSize (duh! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402365</commentid>
    <comment_count>3</comment_count>
      <attachid>93200</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-11 15:47:36 -0700</bug_when>
    <thetext>Created attachment 93200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402383</commentid>
    <comment_count>4</comment_count>
      <attachid>93200</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-11 16:00:23 -0700</bug_when>
    <thetext>Comment on attachment 93200
Patch

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

OK.

&gt; Source/WebCore/rendering/InlineFlowBox.cpp:1061
&gt; +        paintInfo.context-&gt;clip(IntRect(rect.x(), rect.y(), width(), height()));

rect.location(), size()?

&gt; Source/WebCore/rendering/InlineFlowBox.cpp:1062
&gt; +        boxModelObject()-&gt;paintFillLayerExtended(paintInfo, c, fillLayer, IntRect(stripX, stripY, stripWidth, stripHeight), BackgroundBleedNone, this, rect.size(), op);

looks like stripRect is gonna be next. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402385</commentid>
    <comment_count>5</comment_count>
      <attachid>93200</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-11 16:03:09 -0700</bug_when>
    <thetext>Comment on attachment 93200
Patch

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

&gt;&gt; Source/WebCore/rendering/InlineFlowBox.cpp:1061
&gt;&gt; +        paintInfo.context-&gt;clip(IntRect(rect.x(), rect.y(), width(), height()));
&gt; 
&gt; rect.location(), size()?

It&apos;s weird, but because width() and height() look at if we&apos;re horizontal, and because there&apos;s currently no size() function for InlineBox I had to go with this. One could be added tho ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402386</commentid>
    <comment_count>6</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-11 16:03:53 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 93200 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93200&amp;action=review
&gt; 
&gt; OK.
&gt; 
&gt; &gt; Source/WebCore/rendering/InlineFlowBox.cpp:1061
&gt; &gt; +        paintInfo.context-&gt;clip(IntRect(rect.x(), rect.y(), width(), height()));
&gt; 
&gt; rect.location(), size()?
&gt; 
&gt; &gt; Source/WebCore/rendering/InlineFlowBox.cpp:1062
&gt; &gt; +        boxModelObject()-&gt;paintFillLayerExtended(paintInfo, c, fillLayer, IntRect(stripX, stripY, stripWidth, stripHeight), BackgroundBleedNone, this, rect.size(), op);
&gt; 
&gt; looks like stripRect is gonna be next. :)

Also major thanks for all the reviewing work, dude! You&apos;re really keeping us clipping along.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402413</commentid>
    <comment_count>7</comment_count>
      <attachid>93210</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-11 16:35:06 -0700</bug_when>
    <thetext>Created attachment 93210
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402586</commentid>
    <comment_count>8</comment_count>
      <attachid>93210</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-11 20:18:08 -0700</bug_when>
    <thetext>Comment on attachment 93210
Patch for landing

Clearing flags on attachment: 93210

Committed r86303: &lt;http://trac.webkit.org/changeset/86303&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402587</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-11 20:18:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93200</attachid>
            <date>2011-05-11 15:47:36 -0700</date>
            <delta_ts>2011-05-11 16:35:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60596-20110511154734.patch</filename>
            <type>text/plain</type>
            <size>27211</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2Mjc2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDUtMTEgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCBwYWludEZpbGxMYXllciBhbmQgaXRzIHByb2dl
bnkgdG8gdXNlIEludFJlY3QgaW5zdGVhZCBvZiBmb3VyIGludHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNTk2CisKKyAgICAgICAgQ2hhbmdpbmcg
aW50ZWdlcnMgcGFzc2VkIGludG8gcGFpbnRGaWxsTGF5ZXIgYW5kIG90aGVyIGRlcml2YXRpdmVz
IHRvIEludFJlY3RzCisgICAgICAgIGFuZCBJbnRTaXplcyB0aGF0IHJlZmxlY3QgdGhlaXIgZnVu
Y3Rpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgaXMganVzdCByZWZhY3Rv
cmluZy4KKworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVycyk6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUZsb3dCb3g6OnBhaW50TWFzayk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6cGFpbnRSb290Qm94RmlsbExheWVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnNXaXRoU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OnBhaW50TWFza0ltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OnBhaW50RmlsbExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBh
aW50RmlsbExheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRmllbGRzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmllbGRzZXQ6OnBh
aW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKToKKwogMjAxMS0w
NS0xMSAgTm9hbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCShyZXZpc2lvbiA4NjI1MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAxNiwyMCArMTAxNiwyMCBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50KFBhaW50
SW5mbyYgcGFpCiAgICAgfQogfQogCi12b2lkIElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVy
cyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxM
YXllciogZmlsbExheWVyLCBpbnQgX3R4LCBpbnQgX3R5LCBpbnQgdywgaW50IGgsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wKQordm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcnMoY29uc3Qg
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZp
bGxMYXllciwgY29uc3QgSW50UmVjdCYgcmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAg
ICAgaWYgKCFmaWxsTGF5ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBwYWludEZpbGxMYXllcnMo
cGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXItPm5leHQoKSwgX3R4LCBfdHksIHcsIGgsIG9wKTsKLSAg
ICBwYWludEZpbGxMYXllcihwYWludEluZm8sIGMsIGZpbGxMYXllciwgX3R4LCBfdHksIHcsIGgs
IG9wKTsKKyAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXItPm5leHQo
KSwgcmVjdCwgb3ApOworICAgIHBhaW50RmlsbExheWVyKHBhaW50SW5mbywgYywgZmlsbExheWVy
LCByZWN0LCBvcCk7CiB9CiAKLXZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIoY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIq
IGZpbGxMYXllciwgaW50IHR4LCBpbnQgdHksIGludCB3LCBpbnQgaCwgQ29tcG9zaXRlT3BlcmF0
b3Igb3ApCit2b2lkIElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIs
IGNvbnN0IEludFJlY3QmIHJlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewogICAgIFN0eWxl
SW1hZ2UqIGltZyA9IGZpbGxMYXllci0+aW1hZ2UoKTsKICAgICBib29sIGhhc0ZpbGxJbWFnZSA9
IGltZyAmJiBpbWctPmNhblJlbmRlcihyZW5kZXJlcigpLT5zdHlsZSgpLT5lZmZlY3RpdmVab29t
KCkpOwogICAgIGlmICgoIWhhc0ZpbGxJbWFnZSAmJiAhcmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFz
Qm9yZGVyUmFkaXVzKCkpIHx8ICghcHJldkxpbmVCb3goKSAmJiAhbmV4dExpbmVCb3goKSkgfHwg
IXBhcmVudCgpKQotICAgICAgICBib3hNb2RlbE9iamVjdCgpLT5wYWludEZpbGxMYXllckV4dGVu
ZGVkKHBhaW50SW5mbywgYywgZmlsbExheWVyLCB0eCwgdHksIHcsIGgsIEJhY2tncm91bmRCbGVl
ZE5vbmUsIHRoaXMsIHcsIGgsIG9wKTsKKyAgICAgICAgYm94TW9kZWxPYmplY3QoKS0+cGFpbnRG
aWxsTGF5ZXJFeHRlbmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwgQmFja2dyb3Vu
ZEJsZWVkTm9uZSwgdGhpcywgcmVjdC5zaXplKCksIG9wKTsKICAgICBlbHNlIHsKICAgICAgICAg
Ly8gV2UgaGF2ZSBhIGZpbGwgaW1hZ2UgdGhhdCBzcGFucyBtdWx0aXBsZSBsaW5lcy4KICAgICAg
ICAgLy8gV2UgbmVlZCB0byBhZGp1c3QgdHggYW5kIHR5IGJ5IHRoZSB3aWR0aCBvZiBhbGwgcHJl
dmlvdXMgbGluZXMuCkBAIC0xMDUyLDE0ICsxMDUyLDE0IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6
cGFpbnRGaWxsTGF5ZXIoY29uc3QKICAgICAgICAgICAgIGZvciAoSW5saW5lRmxvd0JveCogY3Vy
ciA9IHRoaXM7IGN1cnI7IGN1cnIgPSBjdXJyLT5wcmV2TGluZUJveCgpKQogICAgICAgICAgICAg
ICAgIHRvdGFsTG9naWNhbFdpZHRoICs9IGN1cnItPmxvZ2ljYWxXaWR0aCgpOwogICAgICAgICB9
Ci0gICAgICAgIGludCBzdHJpcFggPSB0eCAtIChpc0hvcml6b250YWwoKSA/IGxvZ2ljYWxPZmZz
ZXRPbkxpbmUgOiAwKTsKLSAgICAgICAgaW50IHN0cmlwWSA9IHR5IC0gKGlzSG9yaXpvbnRhbCgp
ID8gMCA6IGxvZ2ljYWxPZmZzZXRPbkxpbmUpOworICAgICAgICBpbnQgc3RyaXBYID0gcmVjdC54
KCkgLSAoaXNIb3Jpem9udGFsKCkgPyBsb2dpY2FsT2Zmc2V0T25MaW5lIDogMCk7CisgICAgICAg
IGludCBzdHJpcFkgPSByZWN0LnkoKSAtIChpc0hvcml6b250YWwoKSA/IDAgOiBsb2dpY2FsT2Zm
c2V0T25MaW5lKTsKICAgICAgICAgaW50IHN0cmlwV2lkdGggPSBpc0hvcml6b250YWwoKSA/IHRv
dGFsTG9naWNhbFdpZHRoIDogd2lkdGgoKTsKICAgICAgICAgaW50IHN0cmlwSGVpZ2h0ID0gaXNI
b3Jpem9udGFsKCkgPyBoZWlnaHQoKSA6IHRvdGFsTG9naWNhbFdpZHRoOwogCiAgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwot
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChJbnRSZWN0KHR4LCB0eSwgd2lkdGgoKSwg
aGVpZ2h0KCkpKTsKLSAgICAgICAgYm94TW9kZWxPYmplY3QoKS0+cGFpbnRGaWxsTGF5ZXJFeHRl
bmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgc3RyaXBYLCBzdHJpcFksIHN0cmlwV2lkdGgs
IHN0cmlwSGVpZ2h0LCBCYWNrZ3JvdW5kQmxlZWROb25lLCB0aGlzLCB3LCBoLCBvcCk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKEludFJlY3QocmVjdC54KCksIHJlY3QueSgpLCB3
aWR0aCgpLCBoZWlnaHQoKSkpOworICAgICAgICBib3hNb2RlbE9iamVjdCgpLT5wYWludEZpbGxM
YXllckV4dGVuZGVkKHBhaW50SW5mbywgYywgZmlsbExheWVyLCBJbnRSZWN0KHN0cmlwWCwgc3Ry
aXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdodCksIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMs
IHJlY3Quc2l6ZSgpLCBvcCk7CiAgICAgfQogfQogCkBAIC0xMTEzLDcgKzExMTMsNyBAQCB2b2lk
IElubGluZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoCiAgICAgICAgIHBhaW50Qm94U2hh
ZG93KGNvbnRleHQsIHN0eWxlVG9Vc2UsIE5vcm1hbCwgdHgsIHR5LCB3LCBoKTsKIAogICAgICAg
ICBDb2xvciBjID0gc3R5bGVUb1VzZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yKTsKLSAgICAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgYywg
c3R5bGVUb1VzZS0+YmFja2dyb3VuZExheWVycygpLCB0eCwgdHksIHcsIGgpOworICAgICAgICBw
YWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBjLCBzdHlsZVRvVXNlLT5iYWNrZ3JvdW5kTGF5ZXJz
KCksIEludFJlY3QodHgsIHR5LCB3LCBoKSk7CiAgICAgICAgIHBhaW50Qm94U2hhZG93KGNvbnRl
eHQsIHN0eWxlVG9Vc2UsIEluc2V0LCB0eCwgdHksIHcsIGgpOwogCiAgICAgICAgIC8vIDpmaXJz
dC1saW5lIGNhbm5vdCBiZSB1c2VkIHRvIHB1dCBib3JkZXJzIG9uIGEgbGluZS4gQWx3YXlzIHBh
aW50IGJvcmRlcnMgd2l0aCBvdXIKQEAgLTEyMDQsNyArMTIwNCw3IEBAIHZvaWQgSW5saW5lRmxv
d0JveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYKICAgICAgICAgfQogICAgIH0KIAotICAgIHBhaW50
RmlsbExheWVycyhwYWludEluZm8sIENvbG9yKCksIHJlbmRlcmVyKCktPnN0eWxlKCktPm1hc2tM
YXllcnMoKSwgdHgsIHR5LCB3LCBoLCBjb21wb3NpdGVPcCk7CisgICAgcGFpbnRGaWxsTGF5ZXJz
KHBhaW50SW5mbywgQ29sb3IoKSwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+bWFza0xheWVycygpLCBJ
bnRSZWN0KHR4LCB0eSwgdywgaCksIGNvbXBvc2l0ZU9wKTsKICAgICAKICAgICBib29sIGhhc0Jv
eEltYWdlID0gbWFza0JveEltYWdlICYmIG1hc2tCb3hJbWFnZS0+Y2FuUmVuZGVyKHJlbmRlcmVy
KCktPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgaWYgKCFoYXNCb3hJbWFnZSB8fCAh
bWFza0JveEltYWdlLT5pc0xvYWRlZCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lRmxvd0JveC5oCShyZXZpc2lvbiA4NjI1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVGbG93Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw4ICsxMDUsOCBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJ
bmZvJiwgaW50IHR4LCBpbnQgdHkpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludE1hc2soUGFpbnRJ
bmZvJiwgaW50IHR4LCBpbnQgdHkpOwotICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgaW50IHR4LCBpbnQgdHks
IGludCB3LCBpbnQgaCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsK
LSAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwg
Y29uc3QgRmlsbExheWVyKiwgaW50IHR4LCBpbnQgdHksIGludCB3LCBpbnQgaCwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICB2b2lkIHBhaW50RmlsbExheWVy
cyhjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0
IEludFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAg
IHZvaWQgcGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBjb25z
dCBGaWxsTGF5ZXIqLCBjb25zdCBJbnRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3Np
dGVTb3VyY2VPdmVyKTsKICAgICB2b2lkIHBhaW50Qm94U2hhZG93KEdyYXBoaWNzQ29udGV4dCos
IFJlbmRlclN0eWxlKiwgU2hhZG93U3R5bGUsIGludCB0eCwgaW50IHR5LCBpbnQgdywgaW50IGgp
OwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSwgaW50
IGxpbmVUb3AsIGludCBsaW5lQm90dG9tKTsKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgaW50IHgsIGludCB5LCBpbnQg
dHgsIGludCB0eSwgaW50IGxpbmVUb3AsIGludCBsaW5lQm90dG9tKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiA4NjI1MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTksNyAr
Nzk5LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Um9vdEJveEZpbGxMYXllcnMoYwogCiAgICAg
Ly8gVGhlIGJhY2tncm91bmQgb2YgdGhlIGJveCBnZW5lcmF0ZWQgYnkgdGhlIHJvb3QgZWxlbWVu
dCBjb3ZlcnMgdGhlIGVudGlyZSBjYW52YXMsIHNvIGp1c3QgdXNlCiAgICAgLy8gdGhlIFJlbmRl
clZpZXcncyBkb2NUb3AvTGVmdC9XaWR0aC9IZWlnaHQgYWNjZXNzb3JzLgotICAgIHBhaW50Rmls
bExheWVycyhwYWludEluZm8sIGJnQ29sb3IsIGJnTGF5ZXIsIHZpZXcoKS0+ZG9jTGVmdCgpLCB2
aWV3KCktPmRvY1RvcCgpLCB2aWV3KCktPmRvY1dpZHRoKCksIHZpZXcoKS0+ZG9jSGVpZ2h0KCks
IEJhY2tncm91bmRCbGVlZE5vbmUsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvZHlPYmplY3QpOwor
ICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGJnQ29sb3IsIGJnTGF5ZXIsIHZpZXcoKS0+
ZG9jdW1lbnRSZWN0KCksIEJhY2tncm91bmRCbGVlZE5vbmUsIENvbXBvc2l0ZVNvdXJjZU92ZXIs
IGJvZHlPYmplY3QpOwogfQogCiB2b2lkIFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQ
YWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCkBAIC04MzQsNiArODM0LDcgQEAg
QmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIFJlbmRlckJveDo6ZGV0ZQogCiB2b2lkIFJlbmRlckJv
eDo6cGFpbnRCb3hEZWNvcmF0aW9uc1dpdGhTaXplKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQg
dHgsIGludCB0eSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogeworICAgIEludFJlY3QgcGFpbnRS
ZWN0ID0gSW50UmVjdCh0eCwgdHksIHdpZHRoLCBoZWlnaHQpOwogICAgIC8vIGJvcmRlci1maXQg
Y2FuIGFkanVzdCB3aGVyZSB3ZSBwYWludCBvdXIgYm9yZGVyIGFuZCBiYWNrZ3JvdW5kLiAgSWYg
c2V0LCB3ZSBzbnVnbHkgZml0IG91ciBsaW5lIGJveCBkZXNjZW5kYW50cy4gIChUaGUgaUNoYXQK
ICAgICAvLyBiYWxsb29uIGxheW91dCBpcyBhbiBleGFtcGxlIG9mIHRoaXMpLgogICAgIGJvcmRl
ckZpdEFkanVzdCh0eCwgd2lkdGgpOwpAQCAtODQ5LDcgKzg1MCw3IEBAIHZvaWQgUmVuZGVyQm94
OjpwYWludEJveERlY29yYXRpb25zV2l0aFMKICAgICAgICAgLy8gVG8gYXZvaWQgdGhlIGJhY2tn
cm91bmQgY29sb3IgYmxlZWRpbmcgb3V0IGJlaGluZCB0aGUgYm9yZGVyLCB3ZSdsbCByZW5kZXIg
YmFja2dyb3VuZCBhbmQgYm9yZGVyCiAgICAgICAgIC8vIGludG8gYSB0cmFuc3BhcmVuY3kgbGF5
ZXIsIGFuZCB0aGVuIGNsaXAgdGhhdCBpbiBvbmUgZ28gKHdoaWNoIHJlcXVpcmVzIHNldHRpbmcg
dXAgdGhlIGNsaXAgYmVmb3JlCiAgICAgICAgIC8vIGJlZ2lubmluZyB0aGUgbGF5ZXIpLgotICAg
ICAgICBSb3VuZGVkSW50UmVjdCBib3JkZXIgPSBzdHlsZSgpLT5nZXRSb3VuZGVkQm9yZGVyRm9y
KEludFJlY3QodHgsIHR5LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgICAgIFJvdW5kZWRJbnRSZWN0
IGJvcmRlciA9IHN0eWxlKCktPmdldFJvdW5kZWRCb3JkZXJGb3IocGFpbnRSZWN0KTsKICAgICAg
ICAgc3RhdGVTYXZlci5zYXZlKCk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3Vu
ZGVkUmVjdENsaXAoYm9yZGVyKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXIoMSk7CkBAIC04NTcsMjIgKzg1OCwyMiBAQCB2b2lkIFJlbmRlckJveDo6
cGFpbnRCb3hEZWNvcmF0aW9uc1dpdGhTCiAgICAgCiAgICAgLy8gSWYgd2UgaGF2ZSBhIG5hdGl2
ZSB0aGVtZSBhcHBlYXJhbmNlLCBwYWludCB0aGF0IGJlZm9yZSBwYWludGluZyBvdXIgYmFja2dy
b3VuZC4KICAgICAvLyBUaGUgdGhlbWUgd2lsbCB0ZWxsIHVzIHdoZXRoZXIgb3Igbm90IHdlIHNo
b3VsZCBhbHNvIHBhaW50IHRoZSBDU1MgYmFja2dyb3VuZC4KLSAgICBib29sIHRoZW1lUGFpbnRl
ZCA9IHN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSAmJiAhdGhlbWUoKS0+cGFpbnQodGhpcywgcGFp
bnRJbmZvLCBJbnRSZWN0KHR4LCB0eSwgd2lkdGgsIGhlaWdodCkpOworICAgIGJvb2wgdGhlbWVQ
YWludGVkID0gc3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpICYmICF0aGVtZSgpLT5wYWludCh0aGlz
LCBwYWludEluZm8sIHBhaW50UmVjdCk7CiAgICAgaWYgKCF0aGVtZVBhaW50ZWQpIHsKICAgICAg
ICAgaWYgKGlzUm9vdCgpKQogICAgICAgICAgICAgcGFpbnRSb290Qm94RmlsbExheWVycyhwYWlu
dEluZm8pOwogICAgICAgICBlbHNlIGlmICghaXNCb2R5KCkgfHwgZG9jdW1lbnQoKS0+ZG9jdW1l
bnRFbGVtZW50KCktPnJlbmRlcmVyKCktPmhhc0JhY2tncm91bmQoKSkgewogICAgICAgICAgICAg
Ly8gVGhlIDxib2R5PiBvbmx5IHBhaW50cyBpdHMgYmFja2dyb3VuZCBpZiB0aGUgcm9vdCBlbGVt
ZW50IGhhcyBkZWZpbmVkIGEgYmFja2dyb3VuZAogICAgICAgICAgICAgLy8gaW5kZXBlbmRlbnQg
b2YgdGhlIGJvZHkuCi0gICAgICAgICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBzdHls
ZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBz
dHlsZSgpLT5iYWNrZ3JvdW5kTGF5ZXJzKCksIHR4LCB0eSwgd2lkdGgsIGhlaWdodCwgYmxlZWRB
dm9pZGFuY2UpOworICAgICAgICAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgc3R5bGUo
KS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwgc3R5
bGUoKS0+YmFja2dyb3VuZExheWVycygpLCBwYWludFJlY3QsIGJsZWVkQXZvaWRhbmNlKTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoc3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAg
ICAgdGhlbWUoKS0+cGFpbnREZWNvcmF0aW9ucyh0aGlzLCBwYWludEluZm8sIEludFJlY3QodHgs
IHR5LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgICAgICAgICB0aGVtZSgpLT5wYWludERlY29yYXRp
b25zKHRoaXMsIHBhaW50SW5mbywgcGFpbnRSZWN0KTsKICAgICB9CiAgICAgcGFpbnRCb3hTaGFk
b3cocGFpbnRJbmZvLmNvbnRleHQsIHR4LCB0eSwgd2lkdGgsIGhlaWdodCwgc3R5bGUoKSwgSW5z
ZXQpOwogCiAgICAgLy8gVGhlIHRoZW1lIHdpbGwgdGVsbCB1cyB3aGV0aGVyIG9yIG5vdCB3ZSBz
aG91bGQgYWxzbyBwYWludCB0aGUgQ1NTIGJvcmRlci4KLSAgICBpZiAoKCFzdHlsZSgpLT5oYXNB
cHBlYXJhbmNlKCkgfHwgKCF0aGVtZVBhaW50ZWQgJiYgdGhlbWUoKS0+cGFpbnRCb3JkZXJPbmx5
KHRoaXMsIHBhaW50SW5mbywgSW50UmVjdCh0eCwgdHksIHdpZHRoLCBoZWlnaHQpKSkpICYmIHN0
eWxlKCktPmhhc0JvcmRlcigpKQorICAgIGlmICgoIXN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSB8
fCAoIXRoZW1lUGFpbnRlZCAmJiB0aGVtZSgpLT5wYWludEJvcmRlck9ubHkodGhpcywgcGFpbnRJ
bmZvLCBwYWludFJlY3QpKSkgJiYgc3R5bGUoKS0+aGFzQm9yZGVyKCkpCiAgICAgICAgIHBhaW50
Qm9yZGVyKHBhaW50SW5mby5jb250ZXh0LCB0eCwgdHksIHdpZHRoLCBoZWlnaHQsIHN0eWxlKCks
IGJsZWVkQXZvaWRhbmNlKTsKIAogICAgIGlmIChibGVlZEF2b2lkYW5jZSA9PSBCYWNrZ3JvdW5k
QmxlZWRVc2VUcmFuc3BhcmVuY3lMYXllcikKQEAgLTk1Miw4ICs5NTMsOSBAQCB2b2lkIFJlbmRl
ckJveDo6cGFpbnRNYXNrSW1hZ2VzKGNvbnN0IFBhCiAgICAgfQogCiAgICAgaWYgKGFsbE1hc2tJ
bWFnZXNMb2FkZWQpIHsKLSAgICAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgQ29sb3Io
KSwgc3R5bGUoKS0+bWFza0xheWVycygpLCB0eCwgdHksIHcsIGgsIEJhY2tncm91bmRCbGVlZE5v
bmUsIGNvbXBvc2l0ZU9wKTsKLSAgICAgICAgcGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8u
Y29udGV4dCwgSW50UmVjdCh0eCwgdHksIHcsIGgpLCBzdHlsZSgpLCBzdHlsZSgpLT5tYXNrQm94
SW1hZ2UoKSwgY29tcG9zaXRlT3ApOworICAgICAgICBJbnRSZWN0IHBhaW50UmVjdCA9IEludFJl
Y3QodHgsIHR5LCB3LCBoKTsKKyAgICAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgQ29s
b3IoKSwgc3R5bGUoKS0+bWFza0xheWVycygpLCBwYWludFJlY3QsIEJhY2tncm91bmRCbGVlZE5v
bmUsIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgcGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8u
Y29udGV4dCwgcGFpbnRSZWN0LCBzdHlsZSgpLCBzdHlsZSgpLT5tYXNrQm94SW1hZ2UoKSwgY29t
cG9zaXRlT3ApOwogICAgIH0KICAgICAKICAgICBpZiAocHVzaFRyYW5zcGFyZW5jeUxheWVyKQpA
QCAtOTc5LDIwICs5ODEsMjAgQEAgSW50UmVjdCBSZW5kZXJCb3g6Om1hc2tDbGlwUmVjdCgpCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyhj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXll
ciogZmlsbExheWVyLCBpbnQgdHgsIGludCB0eSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAordm9p
ZCBSZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBjb25zdCBJbnRSZWN0
JiByZWN0LAogICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIFJlbmRlck9iamVjdCogYmFja2dyb3VuZE9iamVjdCkKIHsKICAg
ICBpZiAoIWZpbGxMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFpbnRGaWxsTGF5ZXJz
KHBhaW50SW5mbywgYywgZmlsbExheWVyLT5uZXh0KCksIHR4LCB0eSwgd2lkdGgsIGhlaWdodCwg
YmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2JqZWN0KTsKLSAgICBwYWludEZpbGxMYXll
cihwYWludEluZm8sIGMsIGZpbGxMYXllciwgdHgsIHR5LCB3aWR0aCwgaGVpZ2h0LCBibGVlZEF2
b2lkYW5jZSwgb3AsIGJhY2tncm91bmRPYmplY3QpOworICAgIHBhaW50RmlsbExheWVycyhwYWlu
dEluZm8sIGMsIGZpbGxMYXllci0+bmV4dCgpLCByZWN0LCBibGVlZEF2b2lkYW5jZSwgb3AsIGJh
Y2tncm91bmRPYmplY3QpOworICAgIHBhaW50RmlsbExheWVyKHBhaW50SW5mbywgYywgZmlsbExh
eWVyLCByZWN0LCBibGVlZEF2b2lkYW5jZSwgb3AsIGJhY2tncm91bmRPYmplY3QpOwogfQogCi12
b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwgaW50IHR4LCBpbnQg
dHksIGludCB3aWR0aCwgaW50IGhlaWdodCwKK3ZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXll
cihjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxM
YXllciogZmlsbExheWVyLCBjb25zdCBJbnRSZWN0JiByZWN0LAogICAgIEJhY2tncm91bmRCbGVl
ZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJlbmRlck9i
amVjdCogYmFja2dyb3VuZE9iamVjdCkKIHsKLSAgICBwYWludEZpbGxMYXllckV4dGVuZGVkKHBh
aW50SW5mbywgYywgZmlsbExheWVyLCB0eCwgdHksIHdpZHRoLCBoZWlnaHQsIGJsZWVkQXZvaWRh
bmNlLCAwLCAwLCAwLCBvcCwgYmFja2dyb3VuZE9iamVjdCk7CisgICAgcGFpbnRGaWxsTGF5ZXJF
eHRlbmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIDAs
IEludFNpemUoKSwgb3AsIGJhY2tncm91bmRPYmplY3QpOwogfQogCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAko
cmV2aXNpb24gODYyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwNSw4ICs0MDUsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUq
IG9sZFN0eWxlKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxl
KCk7CiAKLSAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENv
bG9yJiwgY29uc3QgRmlsbExheWVyKiwgaW50IHR4LCBpbnQgdHksIGludCB3aWR0aCwgaW50IGhl
aWdodCwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciwgUmVuZGVy
T2JqZWN0KiBiYWNrZ3JvdW5kT2JqZWN0KTsKLSAgICB2b2lkIHBhaW50RmlsbExheWVycyhjb25z
dCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGludCB0eCwgaW50
IHR5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSA9IEJh
Y2tncm91bmRCbGVlZE5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zl
ciwgUmVuZGVyT2JqZWN0KiBiYWNrZ3JvdW5kT2JqZWN0ID0gMCk7CisgICAgdm9pZCBwYWludEZp
bGxMYXllcihjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllcios
IGNvbnN0IEludFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIENvbXBvc2l0ZU9wZXJh
dG9yLCBSZW5kZXJPYmplY3QqIGJhY2tncm91bmRPYmplY3QpOworICAgIHZvaWQgcGFpbnRGaWxs
TGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwg
Y29uc3QgSW50UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSA9IEJhY2tncm91bmRCbGVl
ZE5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVuZGVyT2Jq
ZWN0KiBiYWNrZ3JvdW5kT2JqZWN0ID0gMCk7CiAKICAgICB2b2lkIHBhaW50Qm94RGVjb3JhdGlv
bnNXaXRoU2l6ZShQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KTsKICAgICB2b2lkIHBhaW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8mLCBpbnQgdHgs
IGludCB0eSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gODYyNTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01ODUsMTUgKzU4NSwxMSBAQCBzdGF0aWMgSW50UmVjdCBiYWNrZ3Jv
dW5kUmVjdEFkanVzdGVkRm9yCiAgICAgcmV0dXJuIGFkanVzdGVkUmVjdDsKIH0KIAotdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGaWxsTGF5ZXIqIGJnTGF5
ZXIsIGludCB0eCwgaW50IHR5LCBpbnQgdywgaW50IGgsCi0gICAgQmFja2dyb3VuZEJsZWVkQXZv
aWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiBib3gsIGludCBpbmxpbmVCb3hX
aWR0aCwgaW50IGlubGluZUJveEhlaWdodCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJlbmRlck9i
amVjdCogYmFja2dyb3VuZE9iamVjdCkKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9y
JiBjb2xvciwgY29uc3QgRmlsbExheWVyKiBiZ0xheWVyLCBjb25zdCBJbnRSZWN0JiByZWN0LAor
ICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0Jv
eCogYm94LCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVu
ZGVyT2JqZWN0KiBiYWNrZ3JvdW5kT2JqZWN0KQogewogICAgIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCA9IHBhaW50SW5mby5jb250ZXh0OwotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2Fi
bGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEludFJlY3QgYm9yZGVyUmVjdCh0eCwgdHks
IHcsIGgpOwotICAgIGlmIChib3JkZXJSZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAoY29udGV4dC0+
cGFpbnRpbmdEaXNhYmxlZCgpIHx8IHJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBib29sIGluY2x1ZGVMZWZ0RWRnZSA9IGJveCA/IGJveC0+aW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSgpIDogdHJ1ZTsKQEAgLTYzMSwxMCArNjI3LDEwIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50RmlsbExheWUKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAo
aGFzUm91bmRlZEJvcmRlciAmJiBibGVlZEF2b2lkYW5jZSAhPSBCYWNrZ3JvdW5kQmxlZWRVc2VU
cmFuc3BhcmVuY3lMYXllcikgewotICAgICAgICAgICAgUm91bmRlZEludFJlY3QgYm9yZGVyID0g
Z2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGJhY2tncm91bmRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2
b2lkYW5jZShjb250ZXh0LCBib3JkZXJSZWN0LCBibGVlZEF2b2lkYW5jZSksIGJveCwgaW5saW5l
Qm94V2lkdGgsIGlubGluZUJveEhlaWdodCwgaW5jbHVkZUxlZnRFZGdlLCBpbmNsdWRlUmlnaHRF
ZGdlKTsKKyAgICAgICAgICAgIFJvdW5kZWRJbnRSZWN0IGJvcmRlciA9IGdldEJhY2tncm91bmRS
b3VuZGVkUmVjdChiYWNrZ3JvdW5kUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoY29udGV4
dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UpLCBib3gsIGJveFNpemUud2lkdGgoKSwgYm94U2l6ZS5o
ZWlnaHQoKSwgaW5jbHVkZUxlZnRFZGdlLCBpbmNsdWRlUmlnaHRFZGdlKTsKICAgICAgICAgICAg
IGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChib3JkZXIsIGJnQ29sb3IsIHN0eWxlKCktPmNvbG9y
U3BhY2UoKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3Qo
Ym9yZGVyUmVjdCwgYmdDb2xvciwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmZpbGxSZWN0KHJlY3QsIGJnQ29sb3IsIHN0eWxlKCktPmNvbG9yU3BhY2UoKSk7
CiAgICAgICAgIAogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjQyLDcgKzYzOCw3IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKICAgICBib29sIGNsaXBUb0Jv
cmRlclJhZGl1cyA9IGhhc1JvdW5kZWRCb3JkZXIgJiYgYmxlZWRBdm9pZGFuY2UgIT0gQmFja2dy
b3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXI7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBjbGlwVG9Cb3JkZXJTdGF0ZVNhdmVyKCpjb250ZXh0LCBjbGlwVG9Cb3JkZXJSYWRpdXMp
OwogICAgIGlmIChjbGlwVG9Cb3JkZXJSYWRpdXMpIHsKLSAgICAgICAgUm91bmRlZEludFJlY3Qg
Ym9yZGVyID0gZ2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGJhY2tncm91bmRSZWN0QWRqdXN0ZWRG
b3JCbGVlZEF2b2lkYW5jZShjb250ZXh0LCBib3JkZXJSZWN0LCBibGVlZEF2b2lkYW5jZSksIGJv
eCwgaW5saW5lQm94V2lkdGgsIGlubGluZUJveEhlaWdodCwgaW5jbHVkZUxlZnRFZGdlLCBpbmNs
dWRlUmlnaHRFZGdlKTsKKyAgICAgICAgUm91bmRlZEludFJlY3QgYm9yZGVyID0gZ2V0QmFja2dy
b3VuZFJvdW5kZWRSZWN0KGJhY2tncm91bmRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZShj
b250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSksIGJveCwgYm94U2l6ZS53aWR0aCgpLCBib3hT
aXplLmhlaWdodCgpLCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwogICAgICAg
ICBjb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm9yZGVyKTsKICAgICB9CiAgICAgCkBAIC02
NTIsMzMgKzY0OCwzMyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXll
CiAgICAgaW50IHBSaWdodCA9IGluY2x1ZGVSaWdodEVkZ2UgPyBwYWRkaW5nUmlnaHQoKSA6IDA7
CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGNsaXBXaXRoU2Nyb2xsaW5nU3RhdGVT
YXZlcigqY29udGV4dCwgY2xpcHBlZFdpdGhMb2NhbFNjcm9sbGluZyk7CisgICAgSW50UmVjdCBz
Y3JvbGxlZFBhaW50UmVjdCA9IHJlY3Q7CiAgICAgaWYgKGNsaXBwZWRXaXRoTG9jYWxTY3JvbGxp
bmcpIHsKICAgICAgICAgLy8gQ2xpcCB0byB0aGUgb3ZlcmZsb3cgYXJlYS4KLSAgICAgICAgY29u
dGV4dC0+Y2xpcCh0b1JlbmRlckJveCh0aGlzKS0+b3ZlcmZsb3dDbGlwUmVjdCh0eCwgdHkpKTsK
KyAgICAgICAgY29udGV4dC0+Y2xpcCh0b1JlbmRlckJveCh0aGlzKS0+b3ZlcmZsb3dDbGlwUmVj
dChyZWN0LngoKSwgcmVjdC55KCkpKTsKICAgICAgICAgCi0gICAgICAgIC8vIE5vdyBhZGp1c3Qg
b3VyIHR4LCB0eSwgdywgaCB0byByZWZsZWN0IGEgc2Nyb2xsZWQgY29udGVudCBib3ggd2l0aCBi
b3JkZXJzIGF0IHRoZSBlbmRzLgorICAgICAgICAvLyBBZGp1c3QgdGhlIHBhaW50IHJlY3QgdG8g
cmVmbGVjdCBhIHNjcm9sbGVkIGNvbnRlbnQgYm94IHdpdGggYm9yZGVycyBhdCB0aGUgZW5kcy4K
ICAgICAgICAgSW50U2l6ZSBvZmZzZXQgPSBsYXllcigpLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQo
KTsKLSAgICAgICAgdHggLT0gb2Zmc2V0LndpZHRoKCk7Ci0gICAgICAgIHR5IC09IG9mZnNldC5o
ZWlnaHQoKTsKLSAgICAgICAgdyA9IGJMZWZ0ICsgbGF5ZXIoKS0+c2Nyb2xsV2lkdGgoKSArIGJS
aWdodDsKLSAgICAgICAgaCA9IGJvcmRlclRvcCgpICsgbGF5ZXIoKS0+c2Nyb2xsSGVpZ2h0KCkg
KyBib3JkZXJCb3R0b20oKTsKKyAgICAgICAgc2Nyb2xsZWRQYWludFJlY3QubW92ZSgtb2Zmc2V0
KTsKKyAgICAgICAgc2Nyb2xsZWRQYWludFJlY3Quc2V0V2lkdGgoYkxlZnQgKyBsYXllcigpLT5z
Y3JvbGxXaWR0aCgpICsgYlJpZ2h0KTsKKyAgICAgICAgc2Nyb2xsZWRQYWludFJlY3Quc2V0SGVp
Z2h0KGJvcmRlclRvcCgpICsgbGF5ZXIoKS0+c2Nyb2xsSGVpZ2h0KCkgKyBib3JkZXJCb3R0b20o
KSk7CiAgICAgfQogICAgIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgYmFja2dyb3Vu
ZENsaXBTdGF0ZVNhdmVyKCpjb250ZXh0LCBmYWxzZSk7CiAgICAgaWYgKGJnTGF5ZXItPmNsaXAo
KSA9PSBQYWRkaW5nRmlsbEJveCB8fCBiZ0xheWVyLT5jbGlwKCkgPT0gQ29udGVudEZpbGxCb3gp
IHsKICAgICAgICAgLy8gQ2xpcCB0byB0aGUgcGFkZGluZyBvciBjb250ZW50IGJveGVzIGFzIG5l
Y2Vzc2FyeS4KICAgICAgICAgYm9vbCBpbmNsdWRlUGFkZGluZyA9IGJnTGF5ZXItPmNsaXAoKSA9
PSBDb250ZW50RmlsbEJveDsKLSAgICAgICAgaW50IHggPSB0eCArIGJMZWZ0ICsgKGluY2x1ZGVQ
YWRkaW5nID8gcExlZnQgOiAwKTsKLSAgICAgICAgaW50IHkgPSB0eSArIGJvcmRlclRvcCgpICsg
KGluY2x1ZGVQYWRkaW5nID8gcGFkZGluZ1RvcCgpIDogMCk7Ci0gICAgICAgIGludCB3aWR0aCA9
IHcgLSBiTGVmdCAtIGJSaWdodCAtIChpbmNsdWRlUGFkZGluZyA/IHBMZWZ0ICsgcFJpZ2h0IDog
MCk7Ci0gICAgICAgIGludCBoZWlnaHQgPSBoIC0gYm9yZGVyVG9wKCkgLSBib3JkZXJCb3R0b20o
KSAtIChpbmNsdWRlUGFkZGluZyA/IHBhZGRpbmdUb3AoKSArIHBhZGRpbmdCb3R0b20oKSA6IDAp
OworICAgICAgICBJbnRSZWN0IGNsaXBSZWN0ID0gSW50UmVjdChzY3JvbGxlZFBhaW50UmVjdC54
KCkgKyBiTGVmdCArIChpbmNsdWRlUGFkZGluZyA/IHBMZWZ0IDogMCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGVkUGFpbnRSZWN0LnkoKSArIGJvcmRlclRvcCgp
ICsgKGluY2x1ZGVQYWRkaW5nID8gcGFkZGluZ1RvcCgpIDogMCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNjcm9sbGVkUGFpbnRSZWN0LndpZHRoKCkgLSBiTGVmdCAtIGJS
aWdodCAtIChpbmNsdWRlUGFkZGluZyA/IHBMZWZ0ICsgcFJpZ2h0IDogMCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGVkUGFpbnRSZWN0LmhlaWdodCgpIC0gYm9y
ZGVyVG9wKCkgLSBib3JkZXJCb3R0b20oKSAtIChpbmNsdWRlUGFkZGluZyA/IHBhZGRpbmdUb3Ao
KSArIHBhZGRpbmdCb3R0b20oKSA6IDApKTsKICAgICAgICAgYmFja2dyb3VuZENsaXBTdGF0ZVNh
dmVyLnNhdmUoKTsKLSAgICAgICAgY29udGV4dC0+Y2xpcChJbnRSZWN0KHgsIHksIHdpZHRoLCBo
ZWlnaHQpKTsKKyAgICAgICAgY29udGV4dC0+Y2xpcChjbGlwUmVjdCk7CiAgICAgfSBlbHNlIGlm
IChiZ0xheWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0
byBkcmF3IG91ciB0ZXh0IGludG8gYSBtYXNrIHRoYXQgY2FuIHRoZW4gYmUgdXNlZCB0byBjbGlw
IGJhY2tncm91bmQgZHJhd2luZy4KICAgICAgICAgLy8gRmlyc3QgZmlndXJlIG91dCBob3cgYmln
IHRoZSBtYXNrIGhhcyB0byBiZS4gIEl0IHNob3VsZCBiZSBubyBiaWdnZXIgdGhhbiB3aGF0IHdl
IG5lZWQKICAgICAgICAgLy8gdG8gYWN0dWFsbHkgcmVuZGVyLCBzbyB3ZSBzaG91bGQgaW50ZXJz
ZWN0IHRoZSBkaXJ0eSByZWN0IHdpdGggdGhlIGJvcmRlciBib3ggb2YgdGhlIGJhY2tncm91bmQu
Ci0gICAgICAgIEludFJlY3QgbWFza1JlY3QodHgsIHR5LCB3LCBoKTsKKyAgICAgICAgSW50UmVj
dCBtYXNrUmVjdCA9IHJlY3Q7CiAgICAgICAgIG1hc2tSZWN0LmludGVyc2VjdChwYWludEluZm8u
cmVjdCk7CiAgICAgICAgIAogICAgICAgICAvLyBOb3cgY3JlYXRlIHRoZSBtYXNrLgpAQCAtNjk0
LDExICs2OTAsMTEgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZQog
ICAgICAgICBQYWludEluZm8gaW5mbyhtYXNrSW1hZ2VDb250ZXh0LCBtYXNrUmVjdCwgUGFpbnRQ
aGFzZVRleHRDbGlwLCB0cnVlLCAwLCAwKTsKICAgICAgICAgaWYgKGJveCkgewogICAgICAgICAg
ICAgUm9vdElubGluZUJveCogcm9vdCA9IGJveC0+cm9vdCgpOwotICAgICAgICAgICAgYm94LT5w
YWludChpbmZvLCB0eCAtIGJveC0+eCgpLCB0eSAtIGJveC0+eSgpLCByb290LT5saW5lVG9wKCks
IHJvb3QtPmxpbmVCb3R0b20oKSk7CisgICAgICAgICAgICBib3gtPnBhaW50KGluZm8sIHNjcm9s
bGVkUGFpbnRSZWN0LngoKSAtIGJveC0+eCgpLCBzY3JvbGxlZFBhaW50UmVjdC55KCkgLSBib3gt
PnkoKSwgcm9vdC0+bGluZVRvcCgpLCByb290LT5saW5lQm90dG9tKCkpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgaW50IHggPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPngo
KSA6IDA7CiAgICAgICAgICAgICBpbnQgeSA9IGlzQm94KCkgPyB0b1JlbmRlckJveCh0aGlzKS0+
eSgpIDogMDsKLSAgICAgICAgICAgIHBhaW50KGluZm8sIHR4IC0geCwgdHkgLSB5KTsKKyAgICAg
ICAgICAgIHBhaW50KGluZm8sIHNjcm9sbGVkUGFpbnRSZWN0LngoKSAtIHgsIHNjcm9sbGVkUGFp
bnRSZWN0LnkoKSAtIHkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBUaGUgbWFz
ayBoYXMgYmVlbiBjcmVhdGVkLiAgTm93IHdlIGp1c3QgbmVlZCB0byBjbGlwIHRvIGl0LgpAQCAt
NzM5LDIyICs3MzUsMjIgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5
ZQogCiAgICAgLy8gUGFpbnQgdGhlIGNvbG9yIGZpcnN0IHVuZGVybmVhdGggYWxsIGltYWdlcy4K
ICAgICBpZiAoIWJnTGF5ZXItPm5leHQoKSkgewotICAgICAgICBJbnRSZWN0IHJlY3QodHgsIHR5
LCB3LCBoKTsKLSAgICAgICAgcmVjdC5pbnRlcnNlY3QocGFpbnRJbmZvLnJlY3QpOworICAgICAg
ICBJbnRSZWN0IGJhY2tncm91bmRSZWN0KHNjcm9sbGVkUGFpbnRSZWN0KTsKKyAgICAgICAgYmFj
a2dyb3VuZFJlY3QuaW50ZXJzZWN0KHBhaW50SW5mby5yZWN0KTsKICAgICAgICAgLy8gSWYgd2Ug
aGF2ZSBhbiBhbHBoYSBhbmQgd2UgYXJlIHBhaW50aW5nIHRoZSByb290IGVsZW1lbnQsIGdvIGFo
ZWFkIGFuZCBibGVuZCB3aXRoIHRoZSBiYXNlIGJhY2tncm91bmQgY29sb3IuCiAgICAgICAgIGlm
IChpc09wYXF1ZVJvb3QpIHsKICAgICAgICAgICAgIENvbG9yIGJhc2VDb2xvciA9IHZpZXcoKS0+
ZnJhbWVWaWV3KCktPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICAgICAgICAgIGlmIChiYXNl
Q29sb3IuYWxwaGEoKSA+IDApIHsKICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBw
cmV2aW91c09wZXJhdG9yID0gY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCk7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHJlY3QsIGJhc2VDb2xvciwgc3R5bGUo
KS0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChiYWNr
Z3JvdW5kUmVjdCwgYmFzZUNvbG9yLCBzdHlsZSgpLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsK
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmNsZWFyUmVjdChy
ZWN0KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGVhclJlY3QoYmFja2dyb3VuZFJlY3Qp
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGJnQ29sb3IuaXNWYWxpZCgpICYmIGJnQ29sb3Iu
YWxwaGEoKSA+IDApCi0gICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChyZWN0LCBiZ0NvbG9y
LCBzdHlsZSgpLT5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3Qo
YmFja2dyb3VuZFJlY3QsIGJnQ29sb3IsIHN0eWxlKCktPmNvbG9yU3BhY2UoKSk7CiAgICAgfQog
CiAgICAgLy8gbm8gcHJvZ3Jlc3NpdmUgbG9hZGluZyBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZQpA
QCAtNzYzLDcgKzc1OSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExh
eWUKICAgICAgICAgSW50UG9pbnQgcGhhc2U7CiAgICAgICAgIEludFNpemUgdGlsZVNpemU7CiAK
LSAgICAgICAgY2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoYmdMYXllciwgdHgsIHR5
LCB3LCBoLCBkZXN0UmVjdCwgcGhhc2UsIHRpbGVTaXplKTsKKyAgICAgICAgY2FsY3VsYXRlQmFj
a2dyb3VuZEltYWdlR2VvbWV0cnkoYmdMYXllciwgc2Nyb2xsZWRQYWludFJlY3QueCgpLCBzY3Jv
bGxlZFBhaW50UmVjdC55KCksIHNjcm9sbGVkUGFpbnRSZWN0LndpZHRoKCksIHNjcm9sbGVkUGFp
bnRSZWN0LmhlaWdodCgpLCBkZXN0UmVjdCwgcGhhc2UsIHRpbGVTaXplKTsKICAgICAgICAgSW50
UG9pbnQgZGVzdE9yaWdpbiA9IGRlc3RSZWN0LmxvY2F0aW9uKCk7CiAgICAgICAgIGRlc3RSZWN0
LmludGVyc2VjdChwYWludEluZm8ucmVjdCk7CiAgICAgICAgIGlmICghZGVzdFJlY3QuaXNFbXB0
eSgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuaAkocmV2aXNpb24gODYyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDcgKzEyMSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCosIGludCB0eCwg
aW50IHR5LCBpbnQgdywgaW50IGgsIGNvbnN0IFJlbmRlclN0eWxlKiwgQmFja2dyb3VuZEJsZWVk
QXZvaWRhbmNlID0gQmFja2dyb3VuZEJsZWVkTm9uZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRF
ZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOwogICAgIGJv
b2wgcGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jiwg
Y29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBOaW5lUGllY2VJbWFnZSYsIENvbXBvc2l0ZU9wZXJh
dG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgdm9pZCBwYWludEJveFNoYWRvdyhHcmFw
aGljc0NvbnRleHQqLCBpbnQgdHgsIGludCB0eSwgaW50IHcsIGludCBoLCBjb25zdCBSZW5kZXJT
dHlsZSosIFNoYWRvd1N0eWxlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBi
b29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSk7Ci0gICAgdm9pZCBwYWludEZpbGxM
YXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExh
eWVyKiwgaW50IHR4LCBpbnQgdHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgQmFja2dyb3VuZEJs
ZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiA9IDAsIGludCBpbmxpbmVCb3hXaWR0aCA9IDAs
IGludCBpbmxpbmVCb3hIZWlnaHQgPSAwLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNv
dXJjZU92ZXIsIFJlbmRlck9iamVjdCogYmFja2dyb3VuZE9iamVjdCA9IDApOworICAgIHZvaWQg
cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNv
bnN0IEZpbGxMYXllciosIGNvbnN0IEludFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2Us
IElubGluZUZsb3dCb3gqID0gMCwgY29uc3QgSW50U2l6ZSYgPSBJbnRTaXplKCksIENvbXBvc2l0
ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVuZGVyT2JqZWN0KiBiYWNrZ3JvdW5k
T2JqZWN0ID0gMCk7CiAgICAgCiAgICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIGRl
dGVybWluZSBsaW5lIGhlaWdodCBhbmQgYmFzZWxpbmUgcG9zaXRpb24uCiAgICAgdmlydHVhbCBp
bnQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3Np
dGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0ID0gMDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAkocmV2aXNpb24gODYy
NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBSZW5kZXJGaWVsZHNldDo6cGFpbnRC
b3hEZWNvcmF0aW9ucwogCiAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLmNvbnRleHQsIHR4
LCB0eSwgdywgaCwgc3R5bGUoKSwgTm9ybWFsKTsKIAotICAgIHBhaW50RmlsbExheWVycyhwYWlu
dEluZm8sIHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvciksIHN0eWxlKCktPmJhY2tncm91bmRMYXllcnMoKSwgdHgsIHR5LCB3LCBoKTsKKyAg
ICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzdHlsZSgpLT5iYWNrZ3JvdW5kTGF5ZXJz
KCksIEludFJlY3QodHgsIHR5LCB3LCBoKSk7CiAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZv
LmNvbnRleHQsIHR4LCB0eSwgdywgaCwgc3R5bGUoKSwgSW5zZXQpOwogCiAgICAgaWYgKCFzdHls
ZSgpLT5oYXNCb3JkZXIoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcAkocmV2aXNpb24gODYyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjUsNyArNTY1LDcgQEAgdm9pZCBSZW5k
ZXJUYWJsZTo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYQogICAgIGVsc2UgaWYgKCFpc0JvZHkoKSB8
fCBkb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+aGFzQmFja2dyb3Vu
ZCgpKQogICAgICAgICAvLyBUaGUgPGJvZHk+IG9ubHkgcGFpbnRzIGl0cyBiYWNrZ3JvdW5kIGlm
IHRoZSByb290IGVsZW1lbnQgaGFzIGRlZmluZWQgYSBiYWNrZ3JvdW5kCiAgICAgICAgIC8vIGlu
ZGVwZW5kZW50IG9mIHRoZSBib2R5LgotICAgICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZv
LCBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpLCBzdHlsZSgpLT5iYWNrZ3JvdW5kTGF5ZXJzKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50
SW5mbywgc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKSwgc3R5bGUoKS0+YmFja2dyb3VuZExheWVycygpLCByZWN0KTsKIAogICAgIHBhaW50
Qm94U2hhZG93KHBhaW50SW5mby5jb250ZXh0LCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSwgc3R5bGUoKSwgSW5zZXQpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkocmV2aXNpb24gODYyNTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTk0LDcgKzk5NCw3IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWludEJhY2tn
cm91bmRzQmUKICAgICAgICAgICAgICAgICB3IC0gYm9yZGVyTGVmdCgpIC0gYm9yZGVyUmlnaHQo
KSwgaCAtIGJvcmRlclRvcCgpIC0gYm9yZGVyQm90dG9tKCkpOwogICAgICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOwogICAgICAgICB9Ci0gICAgICAgIHBhaW50Rmls
bExheWVycyhwYWludEluZm8sIGMsIGJnTGF5ZXIsIHR4LCB0eSwgdywgaCwgQmFja2dyb3VuZEJs
ZWVkTm9uZSwgQ29tcG9zaXRlU291cmNlT3ZlciwgYmFja2dyb3VuZE9iamVjdCk7CisgICAgICAg
IHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGMsIGJnTGF5ZXIsIEludFJlY3QodHgsIHR5LCB3
LCBoKSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29tcG9zaXRlU291cmNlT3ZlciwgYmFja2dyb3Vu
ZE9iamVjdCk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93210</attachid>
            <date>2011-05-11 16:35:06 -0700</date>
            <delta_ts>2011-05-11 20:18:08 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-60596-20110511163505.patch</filename>
            <type>text/plain</type>
            <size>27181</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MjgwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDUtMTEgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgorCisgICAgICAgIFN3aXRjaCBwYWludEZpbGxMYXllciBhbmQgaXRzIHByb2dlbnkg
dG8gdXNlIEludFJlY3QgaW5zdGVhZCBvZiBmb3VyIGludHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNTk2CisKKyAgICAgICAgQ2hhbmdpbmcgaW50
ZWdlcnMgcGFzc2VkIGludG8gcGFpbnRGaWxsTGF5ZXIgYW5kIG90aGVyIGRlcml2YXRpdmVzIHRv
IEludFJlY3RzCisgICAgICAgIGFuZCBJbnRTaXplcyB0aGF0IHJlZmxlY3QgdGhlaXIgZnVuY3Rp
b24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgaXMganVzdCByZWZhY3Rvcmlu
Zy4KKworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUZsb3dCb3g6OnBhaW50TWFzayk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3gu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6cGFpbnRSb290Qm94RmlsbExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnNXaXRoU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OnBhaW50TWFza0ltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OnBhaW50RmlsbExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50
RmlsbExheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRmllbGRzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmllbGRzZXQ6OnBhaW50
Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKToKKwogMjAxMS0wNS0x
MSAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhdmlkIEtpbHplci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVG
bG93Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5jcHAJKHJldmlzaW9uIDg2MjgwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE2LDIwICsxMDE2LDIwIEBA
IHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWkKICAgICB9CiB9CiAKLXZv
aWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsIGludCBfdHgs
IGludCBfdHksIGludCB3LCBpbnQgaCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIElubGlu
ZUZsb3dCb3g6OnBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKICAgICBpZiAoIWZpbGxMYXllcikKICAgICAg
ICAgcmV0dXJuOwotICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGMsIGZpbGxMYXllci0+
bmV4dCgpLCBfdHgsIF90eSwgdywgaCwgb3ApOwotICAgIHBhaW50RmlsbExheWVyKHBhaW50SW5m
bywgYywgZmlsbExheWVyLCBfdHgsIF90eSwgdywgaCwgb3ApOworICAgIHBhaW50RmlsbExheWVy
cyhwYWludEluZm8sIGMsIGZpbGxMYXllci0+bmV4dCgpLCByZWN0LCBvcCk7CisgICAgcGFpbnRG
aWxsTGF5ZXIocGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXIsIHJlY3QsIG9wKTsKIH0KIAotdm9pZCBJ
bmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBpbnQgdHgsIGludCB0
eSwgaW50IHcsIGludCBoLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW5saW5lRmxvd0Jv
eDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9y
JiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwgY29uc3QgSW50UmVjdCYgcmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgU3R5bGVJbWFnZSogaW1nID0gZmlsbExheWVyLT5p
bWFnZSgpOwogICAgIGJvb2wgaGFzRmlsbEltYWdlID0gaW1nICYmIGltZy0+Y2FuUmVuZGVyKHJl
bmRlcmVyKCktPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgaWYgKCghaGFzRmlsbElt
YWdlICYmICFyZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNCb3JkZXJSYWRpdXMoKSkgfHwgKCFwcmV2
TGluZUJveCgpICYmICFuZXh0TGluZUJveCgpKSB8fCAhcGFyZW50KCkpCi0gICAgICAgIGJveE1v
ZGVsT2JqZWN0KCktPnBhaW50RmlsbExheWVyRXh0ZW5kZWQocGFpbnRJbmZvLCBjLCBmaWxsTGF5
ZXIsIHR4LCB0eSwgdywgaCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgdGhpcywgdywgaCwgb3ApOwor
ICAgICAgICBib3hNb2RlbE9iamVjdCgpLT5wYWludEZpbGxMYXllckV4dGVuZGVkKHBhaW50SW5m
bywgYywgZmlsbExheWVyLCByZWN0LCBCYWNrZ3JvdW5kQmxlZWROb25lLCB0aGlzLCByZWN0LnNp
emUoKSwgb3ApOwogICAgIGVsc2UgewogICAgICAgICAvLyBXZSBoYXZlIGEgZmlsbCBpbWFnZSB0
aGF0IHNwYW5zIG11bHRpcGxlIGxpbmVzLgogICAgICAgICAvLyBXZSBuZWVkIHRvIGFkanVzdCB0
eCBhbmQgdHkgYnkgdGhlIHdpZHRoIG9mIGFsbCBwcmV2aW91cyBsaW5lcy4KQEAgLTEwNTIsMTQg
KzEwNTIsMTQgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcihjb25zdAogICAg
ICAgICAgICAgZm9yIChJbmxpbmVGbG93Qm94KiBjdXJyID0gdGhpczsgY3VycjsgY3VyciA9IGN1
cnItPnByZXZMaW5lQm94KCkpCiAgICAgICAgICAgICAgICAgdG90YWxMb2dpY2FsV2lkdGggKz0g
Y3Vyci0+bG9naWNhbFdpZHRoKCk7CiAgICAgICAgIH0KLSAgICAgICAgaW50IHN0cmlwWCA9IHR4
IC0gKGlzSG9yaXpvbnRhbCgpID8gbG9naWNhbE9mZnNldE9uTGluZSA6IDApOwotICAgICAgICBp
bnQgc3RyaXBZID0gdHkgLSAoaXNIb3Jpem9udGFsKCkgPyAwIDogbG9naWNhbE9mZnNldE9uTGlu
ZSk7CisgICAgICAgIGludCBzdHJpcFggPSByZWN0LngoKSAtIChpc0hvcml6b250YWwoKSA/IGxv
Z2ljYWxPZmZzZXRPbkxpbmUgOiAwKTsKKyAgICAgICAgaW50IHN0cmlwWSA9IHJlY3QueSgpIC0g
KGlzSG9yaXpvbnRhbCgpID8gMCA6IGxvZ2ljYWxPZmZzZXRPbkxpbmUpOwogICAgICAgICBpbnQg
c3RyaXBXaWR0aCA9IGlzSG9yaXpvbnRhbCgpID8gdG90YWxMb2dpY2FsV2lkdGggOiB3aWR0aCgp
OwogICAgICAgICBpbnQgc3RyaXBIZWlnaHQgPSBpc0hvcml6b250YWwoKSA/IGhlaWdodCgpIDog
dG90YWxMb2dpY2FsV2lkdGg7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5jbGlwKEludFJlY3QodHgsIHR5LCB3aWR0aCgpLCBoZWlnaHQoKSkpOwotICAgICAgICBib3hN
b2RlbE9iamVjdCgpLT5wYWludEZpbGxMYXllckV4dGVuZGVkKHBhaW50SW5mbywgYywgZmlsbExh
eWVyLCBzdHJpcFgsIHN0cmlwWSwgc3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQsIEJhY2tncm91bmRC
bGVlZE5vbmUsIHRoaXMsIHcsIGgsIG9wKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNs
aXAoSW50UmVjdChyZWN0LngoKSwgcmVjdC55KCksIHdpZHRoKCksIGhlaWdodCgpKSk7CisgICAg
ICAgIGJveE1vZGVsT2JqZWN0KCktPnBhaW50RmlsbExheWVyRXh0ZW5kZWQocGFpbnRJbmZvLCBj
LCBmaWxsTGF5ZXIsIEludFJlY3Qoc3RyaXBYLCBzdHJpcFksIHN0cmlwV2lkdGgsIHN0cmlwSGVp
Z2h0KSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgdGhpcywgcmVjdC5zaXplKCksIG9wKTsKICAgICB9
CiB9CiAKQEAgLTExMTMsNyArMTExMyw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRCb3hE
ZWNvcmF0aW9ucygKICAgICAgICAgcGFpbnRCb3hTaGFkb3coY29udGV4dCwgc3R5bGVUb1VzZSwg
Tm9ybWFsLCB0eCwgdHksIHcsIGgpOwogCiAgICAgICAgIENvbG9yIGMgPSBzdHlsZVRvVXNlLT52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwotICAgICAg
ICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBjLCBzdHlsZVRvVXNlLT5iYWNrZ3JvdW5kTGF5
ZXJzKCksIHR4LCB0eSwgdywgaCk7CisgICAgICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8s
IGMsIHN0eWxlVG9Vc2UtPmJhY2tncm91bmRMYXllcnMoKSwgSW50UmVjdCh0eCwgdHksIHcsIGgp
KTsKICAgICAgICAgcGFpbnRCb3hTaGFkb3coY29udGV4dCwgc3R5bGVUb1VzZSwgSW5zZXQsIHR4
LCB0eSwgdywgaCk7CiAKICAgICAgICAgLy8gOmZpcnN0LWxpbmUgY2Fubm90IGJlIHVzZWQgdG8g
cHV0IGJvcmRlcnMgb24gYSBsaW5lLiBBbHdheXMgcGFpbnQgYm9yZGVycyB3aXRoIG91cgpAQCAt
MTIwNCw3ICsxMjA0LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludE1hc2soUGFpbnRJbmZv
JgogICAgICAgICB9CiAgICAgfQogCi0gICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgQ29s
b3IoKSwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+bWFza0xheWVycygpLCB0eCwgdHksIHcsIGgsIGNv
bXBvc2l0ZU9wKTsKKyAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBDb2xvcigpLCByZW5k
ZXJlcigpLT5zdHlsZSgpLT5tYXNrTGF5ZXJzKCksIEludFJlY3QodHgsIHR5LCB3LCBoKSwgY29t
cG9zaXRlT3ApOwogICAgIAogICAgIGJvb2wgaGFzQm94SW1hZ2UgPSBtYXNrQm94SW1hZ2UgJiYg
bWFza0JveEltYWdlLT5jYW5SZW5kZXIocmVuZGVyZXIoKS0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9v
bSgpKTsKICAgICBpZiAoIWhhc0JveEltYWdlIHx8ICFtYXNrQm94SW1hZ2UtPmlzTG9hZGVkKCkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgJKHJldmlzaW9u
IDg2MjgwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAkod29y
a2luZyBjb3B5KQpAQCAtMTA1LDggKzEwNSw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSk7CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSk7Ci0g
ICAgdm9pZCBwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBj
b25zdCBGaWxsTGF5ZXIqLCBpbnQgdHgsIGludCB0eSwgaW50IHcsIGludCBoLCBDb21wb3NpdGVP
cGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXIo
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBpbnQgdHgs
IGludCB0eSwgaW50IHcsIGludCBoLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOworICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgSW50UmVjdCYsIENvbXBvc2l0ZU9wZXJh
dG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgdm9pZCBwYWludEZpbGxMYXllcihjb25z
dCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IEludFJl
Y3QmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIHZvaWQg
cGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyU3R5bGUqLCBTaGFkb3dTdHls
ZSwgaW50IHR4LCBpbnQgdHksIGludCB3LCBpbnQgaCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5LCBpbnQgbGluZVRvcCwgaW50IGxpbmVCb3R0b20p
OwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhp
dFRlc3RSZXN1bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBpbnQgbGluZVRvcCwg
aW50IGxpbmVCb3R0b20pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAJKHJldmlzaW9uIDg2MjgwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5OSw3ICs3OTksNyBAQCB2b2lkIFJlbmRlckJveDo6
cGFpbnRSb290Qm94RmlsbExheWVycyhjCiAKICAgICAvLyBUaGUgYmFja2dyb3VuZCBvZiB0aGUg
Ym94IGdlbmVyYXRlZCBieSB0aGUgcm9vdCBlbGVtZW50IGNvdmVycyB0aGUgZW50aXJlIGNhbnZh
cywgc28ganVzdCB1c2UKICAgICAvLyB0aGUgUmVuZGVyVmlldydzIGRvY1RvcC9MZWZ0L1dpZHRo
L0hlaWdodCBhY2Nlc3NvcnMuCi0gICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgYmdDb2xv
ciwgYmdMYXllciwgdmlldygpLT5kb2NMZWZ0KCksIHZpZXcoKS0+ZG9jVG9wKCksIHZpZXcoKS0+
ZG9jV2lkdGgoKSwgdmlldygpLT5kb2NIZWlnaHQoKSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29t
cG9zaXRlU291cmNlT3ZlciwgYm9keU9iamVjdCk7CisgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50
SW5mbywgYmdDb2xvciwgYmdMYXllciwgdmlldygpLT5kb2N1bWVudFJlY3QoKSwgQmFja2dyb3Vu
ZEJsZWVkTm9uZSwgQ29tcG9zaXRlU291cmNlT3ZlciwgYm9keU9iamVjdCk7CiB9CiAKIHZvaWQg
UmVuZGVyQm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQg
dHgsIGludCB0eSkKQEAgLTgzNCw2ICs4MzQsNyBAQCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2Ug
UmVuZGVyQm94OjpkZXRlCiAKIHZvaWQgUmVuZGVyQm94OjpwYWludEJveERlY29yYXRpb25zV2l0
aFNpemUoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5LCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpCiB7CisgICAgSW50UmVjdCBwYWludFJlY3QgPSBJbnRSZWN0KHR4LCB0eSwgd2lk
dGgsIGhlaWdodCk7CiAgICAgLy8gYm9yZGVyLWZpdCBjYW4gYWRqdXN0IHdoZXJlIHdlIHBhaW50
IG91ciBib3JkZXIgYW5kIGJhY2tncm91bmQuICBJZiBzZXQsIHdlIHNudWdseSBmaXQgb3VyIGxp
bmUgYm94IGRlc2NlbmRhbnRzLiAgKFRoZSBpQ2hhdAogICAgIC8vIGJhbGxvb24gbGF5b3V0IGlz
IGFuIGV4YW1wbGUgb2YgdGhpcykuCiAgICAgYm9yZGVyRml0QWRqdXN0KHR4LCB3aWR0aCk7CkBA
IC04NDksNyArODUwLDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnNXaXRo
UwogICAgICAgICAvLyBUbyBhdm9pZCB0aGUgYmFja2dyb3VuZCBjb2xvciBibGVlZGluZyBvdXQg
YmVoaW5kIHRoZSBib3JkZXIsIHdlJ2xsIHJlbmRlciBiYWNrZ3JvdW5kIGFuZCBib3JkZXIKICAg
ICAgICAgLy8gaW50byBhIHRyYW5zcGFyZW5jeSBsYXllciwgYW5kIHRoZW4gY2xpcCB0aGF0IGlu
IG9uZSBnbyAod2hpY2ggcmVxdWlyZXMgc2V0dGluZyB1cCB0aGUgY2xpcCBiZWZvcmUKICAgICAg
ICAgLy8gYmVnaW5uaW5nIHRoZSBsYXllcikuCi0gICAgICAgIFJvdW5kZWRJbnRSZWN0IGJvcmRl
ciA9IHN0eWxlKCktPmdldFJvdW5kZWRCb3JkZXJGb3IoSW50UmVjdCh0eCwgdHksIHdpZHRoLCBo
ZWlnaHQpKTsKKyAgICAgICAgUm91bmRlZEludFJlY3QgYm9yZGVyID0gc3R5bGUoKS0+Z2V0Um91
bmRlZEJvcmRlckZvcihwYWludFJlY3QpOwogICAgICAgICBzdGF0ZVNhdmVyLnNhdmUoKTsKICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChib3JkZXIpOwogICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKQEAgLTg1
NywyMiArODU4LDIyIEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEJveERlY29yYXRpb25zV2l0aFMK
ICAgICAKICAgICAvLyBJZiB3ZSBoYXZlIGEgbmF0aXZlIHRoZW1lIGFwcGVhcmFuY2UsIHBhaW50
IHRoYXQgYmVmb3JlIHBhaW50aW5nIG91ciBiYWNrZ3JvdW5kLgogICAgIC8vIFRoZSB0aGVtZSB3
aWxsIHRlbGwgdXMgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIGFsc28gcGFpbnQgdGhlIENTUyBi
YWNrZ3JvdW5kLgotICAgIGJvb2wgdGhlbWVQYWludGVkID0gc3R5bGUoKS0+aGFzQXBwZWFyYW5j
ZSgpICYmICF0aGVtZSgpLT5wYWludCh0aGlzLCBwYWludEluZm8sIEludFJlY3QodHgsIHR5LCB3
aWR0aCwgaGVpZ2h0KSk7CisgICAgYm9vbCB0aGVtZVBhaW50ZWQgPSBzdHlsZSgpLT5oYXNBcHBl
YXJhbmNlKCkgJiYgIXRoZW1lKCktPnBhaW50KHRoaXMsIHBhaW50SW5mbywgcGFpbnRSZWN0KTsK
ICAgICBpZiAoIXRoZW1lUGFpbnRlZCkgewogICAgICAgICBpZiAoaXNSb290KCkpCiAgICAgICAg
ICAgICBwYWludFJvb3RCb3hGaWxsTGF5ZXJzKHBhaW50SW5mbyk7CiAgICAgICAgIGVsc2UgaWYg
KCFpc0JvZHkoKSB8fCBkb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+
aGFzQmFja2dyb3VuZCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgPGJvZHk+IG9ubHkgcGFpbnRz
IGl0cyBiYWNrZ3JvdW5kIGlmIHRoZSByb290IGVsZW1lbnQgaGFzIGRlZmluZWQgYSBiYWNrZ3Jv
dW5kCiAgICAgICAgICAgICAvLyBpbmRlcGVuZGVudCBvZiB0aGUgYm9keS4KLSAgICAgICAgICAg
IHBhaW50RmlsbExheWVycyhwYWludEluZm8sIHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIHN0eWxlKCktPmJhY2tncm91bmRMYXllcnMo
KSwgdHgsIHR5LCB3aWR0aCwgaGVpZ2h0LCBibGVlZEF2b2lkYW5jZSk7CisgICAgICAgICAgICBw
YWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzdHlsZSgpLT5iYWNrZ3JvdW5kTGF5ZXJzKCks
IHBhaW50UmVjdCwgYmxlZWRBdm9pZGFuY2UpOwogICAgICAgICB9CiAgICAgICAgIGlmIChzdHls
ZSgpLT5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICB0aGVtZSgpLT5wYWludERlY29yYXRp
b25zKHRoaXMsIHBhaW50SW5mbywgSW50UmVjdCh0eCwgdHksIHdpZHRoLCBoZWlnaHQpKTsKKyAg
ICAgICAgICAgIHRoZW1lKCktPnBhaW50RGVjb3JhdGlvbnModGhpcywgcGFpbnRJbmZvLCBwYWlu
dFJlY3QpOwogICAgIH0KICAgICBwYWludEJveFNoYWRvdyhwYWludEluZm8uY29udGV4dCwgdHgs
IHR5LCB3aWR0aCwgaGVpZ2h0LCBzdHlsZSgpLCBJbnNldCk7CiAKICAgICAvLyBUaGUgdGhlbWUg
d2lsbCB0ZWxsIHVzIHdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBhbHNvIHBhaW50IHRoZSBDU1Mg
Ym9yZGVyLgotICAgIGlmICgoIXN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSB8fCAoIXRoZW1lUGFp
bnRlZCAmJiB0aGVtZSgpLT5wYWludEJvcmRlck9ubHkodGhpcywgcGFpbnRJbmZvLCBJbnRSZWN0
KHR4LCB0eSwgd2lkdGgsIGhlaWdodCkpKSkgJiYgc3R5bGUoKS0+aGFzQm9yZGVyKCkpCisgICAg
aWYgKCghc3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpIHx8ICghdGhlbWVQYWludGVkICYmIHRoZW1l
KCktPnBhaW50Qm9yZGVyT25seSh0aGlzLCBwYWludEluZm8sIHBhaW50UmVjdCkpKSAmJiBzdHls
ZSgpLT5oYXNCb3JkZXIoKSkKICAgICAgICAgcGFpbnRCb3JkZXIocGFpbnRJbmZvLmNvbnRleHQs
IEludFJlY3QodHgsIHR5LCB3aWR0aCwgaGVpZ2h0KSwgc3R5bGUoKSwgYmxlZWRBdm9pZGFuY2Up
OwogCiAgICAgaWYgKGJsZWVkQXZvaWRhbmNlID09IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFy
ZW5jeUxheWVyKQpAQCAtOTUyLDggKzk1Myw5IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludE1hc2tJ
bWFnZXMoY29uc3QgUGEKICAgICB9CiAKICAgICBpZiAoYWxsTWFza0ltYWdlc0xvYWRlZCkgewot
ICAgICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBDb2xvcigpLCBzdHlsZSgpLT5tYXNr
TGF5ZXJzKCksIHR4LCB0eSwgdywgaCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgY29tcG9zaXRlT3Ap
OwotICAgICAgICBwYWludE5pbmVQaWVjZUltYWdlKHBhaW50SW5mby5jb250ZXh0LCBJbnRSZWN0
KHR4LCB0eSwgdywgaCksIHN0eWxlKCksIHN0eWxlKCktPm1hc2tCb3hJbWFnZSgpLCBjb21wb3Np
dGVPcCk7CisgICAgICAgIEludFJlY3QgcGFpbnRSZWN0ID0gSW50UmVjdCh0eCwgdHksIHcsIGgp
OworICAgICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBDb2xvcigpLCBzdHlsZSgpLT5t
YXNrTGF5ZXJzKCksIHBhaW50UmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgY29tcG9zaXRlT3Ap
OworICAgICAgICBwYWludE5pbmVQaWVjZUltYWdlKHBhaW50SW5mby5jb250ZXh0LCBwYWludFJl
Y3QsIHN0eWxlKCksIHN0eWxlKCktPm1hc2tCb3hJbWFnZSgpLCBjb21wb3NpdGVPcCk7CiAgICAg
fQogICAgIAogICAgIGlmIChwdXNoVHJhbnNwYXJlbmN5TGF5ZXIpCkBAIC05NzksMjAgKzk4MSwy
MCBAQCBJbnRSZWN0IFJlbmRlckJveDo6bWFza0NsaXBSZWN0KCkKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi12b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsIGlu
dCB0eCwgaW50IHR5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCit2b2lkIFJlbmRlckJveDo6cGFp
bnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywg
Y29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsIGNvbnN0IEludFJlY3QmIHJlY3QsCiAgICAgQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgUmVuZGVyT2JqZWN0KiBiYWNrZ3JvdW5kT2JqZWN0KQogewogICAgIGlmICghZmlsbExheWVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBjLCBm
aWxsTGF5ZXItPm5leHQoKSwgdHgsIHR5LCB3aWR0aCwgaGVpZ2h0LCBibGVlZEF2b2lkYW5jZSwg
b3AsIGJhY2tncm91bmRPYmplY3QpOwotICAgIHBhaW50RmlsbExheWVyKHBhaW50SW5mbywgYywg
ZmlsbExheWVyLCB0eCwgdHksIHdpZHRoLCBoZWlnaHQsIGJsZWVkQXZvaWRhbmNlLCBvcCwgYmFj
a2dyb3VuZE9iamVjdCk7CisgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgYywgZmlsbExh
eWVyLT5uZXh0KCksIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBvcCwgYmFja2dyb3VuZE9iamVjdCk7
CisgICAgcGFpbnRGaWxsTGF5ZXIocGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXIsIHJlY3QsIGJsZWVk
QXZvaWRhbmNlLCBvcCwgYmFja2dyb3VuZE9iamVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94Ojpw
YWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMs
IGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBpbnQgdHgsIGludCB0eSwgaW50IHdpZHRoLCBp
bnQgaGVpZ2h0LAordm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIs
IGNvbnN0IEludFJlY3QmIHJlY3QsCiAgICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVk
QXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVuZGVyT2JqZWN0KiBiYWNrZ3JvdW5k
T2JqZWN0KQogewotICAgIHBhaW50RmlsbExheWVyRXh0ZW5kZWQocGFpbnRJbmZvLCBjLCBmaWxs
TGF5ZXIsIHR4LCB0eSwgd2lkdGgsIGhlaWdodCwgYmxlZWRBdm9pZGFuY2UsIDAsIDAsIDAsIG9w
LCBiYWNrZ3JvdW5kT2JqZWN0KTsKKyAgICBwYWludEZpbGxMYXllckV4dGVuZGVkKHBhaW50SW5m
bywgYywgZmlsbExheWVyLCByZWN0LCBibGVlZEF2b2lkYW5jZSwgMCwgSW50U2l6ZSgpLCBvcCwg
YmFja2dyb3VuZE9iamVjdCk7CiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCShyZXZpc2lvbiA4NjI4MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkod29ya2luZyBjb3B5KQpA
QCAtNDA1LDggKzQwNSw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKTsKIAotICAgIHZvaWQg
cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBjb25zdCBGaWxs
TGF5ZXIqLCBpbnQgdHgsIGludCB0eSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBCYWNrZ3JvdW5k
QmxlZWRBdm9pZGFuY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBSZW5kZXJPYmplY3QqIGJhY2tncm91
bmRPYmplY3QpOwotICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgaW50IHR4LCBpbnQgdHksIGludCB3aWR0aCwg
aW50IGhlaWdodCwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJsZWVkTm9u
ZSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBSZW5kZXJPYmplY3Qq
IGJhY2tncm91bmRPYmplY3QgPSAwKTsKKyAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgSW50UmVjdCYs
IEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlbmRlck9iamVj
dCogYmFja2dyb3VuZE9iamVjdCk7CisgICAgdm9pZCBwYWludEZpbGxMYXllcnMoY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBJbnRSZWN0Jiwg
QmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBSZW5kZXJPYmplY3QqIGJhY2tncm91bmRP
YmplY3QgPSAwKTsKIAogICAgIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9uc1dpdGhTaXplKFBhaW50
SW5mbyYsIGludCB0eCwgaW50IHR5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogICAgIHZvaWQg
cGFpbnRNYXNrSW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiA4NjI4MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU4NSwxNSArNTg1LDExIEBAIHN0YXRpYyBJbnRSZWN0IGJhY2tncm91bmRSZWN0QWRqdXN0ZWRG
b3IKICAgICByZXR1cm4gYWRqdXN0ZWRSZWN0OwogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZpbGxMYXllciogYmdMYXllciwgaW50IHR4LCBpbnQg
dHksIGludCB3LCBpbnQgaCwKLSAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9p
ZGFuY2UsIElubGluZUZsb3dCb3gqIGJveCwgaW50IGlubGluZUJveFdpZHRoLCBpbnQgaW5saW5l
Qm94SGVpZ2h0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVuZGVyT2JqZWN0KiBiYWNrZ3JvdW5k
T2JqZWN0KQordm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRl
ZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBG
aWxsTGF5ZXIqIGJnTGF5ZXIsIGNvbnN0IEludFJlY3QmIHJlY3QsCisgICAgQmFja2dyb3VuZEJs
ZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiBib3gsIGNvbnN0IElu
dFNpemUmIGJveFNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBSZW5kZXJPYmplY3QqIGJhY2tn
cm91bmRPYmplY3QpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZv
LmNvbnRleHQ7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgSW50UmVjdCBib3JkZXJSZWN0KHR4LCB0eSwgdywgaCk7Ci0gICAgaWYg
KGJvcmRlclJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkgfHwgcmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgaW5jbHVk
ZUxlZnRFZGdlID0gYm94ID8gYm94LT5pbmNsdWRlTG9naWNhbExlZnRFZGdlKCkgOiB0cnVlOwpA
QCAtNjMxLDEwICs2MjcsMTAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxs
TGF5ZQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChoYXNSb3VuZGVkQm9yZGVy
ICYmIGJsZWVkQXZvaWRhbmNlICE9IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVy
KSB7Ci0gICAgICAgICAgICBSb3VuZGVkSW50UmVjdCBib3JkZXIgPSBnZXRCYWNrZ3JvdW5kUm91
bmRlZFJlY3QoYmFja2dyb3VuZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKGNvbnRleHQs
IGJvcmRlclJlY3QsIGJsZWVkQXZvaWRhbmNlKSwgYm94LCBpbmxpbmVCb3hXaWR0aCwgaW5saW5l
Qm94SGVpZ2h0LCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOworICAgICAgICAg
ICAgUm91bmRlZEludFJlY3QgYm9yZGVyID0gZ2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGJhY2tn
cm91bmRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZShjb250ZXh0LCByZWN0LCBibGVlZEF2
b2lkYW5jZSksIGJveCwgYm94U2l6ZS53aWR0aCgpLCBib3hTaXplLmhlaWdodCgpLCBpbmNsdWRl
TGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwogICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJv
dW5kZWRSZWN0KGJvcmRlciwgYmdDb2xvciwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpKTsKICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChib3JkZXJSZWN0LCBiZ0Nv
bG9yLCBzdHlsZSgpLT5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJl
Y3QocmVjdCwgYmdDb2xvciwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgCiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC02NDIsNyArNjM4LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRGaWxsTGF5ZQogICAgIGJvb2wgY2xpcFRvQm9yZGVyUmFkaXVzID0gaGFz
Um91bmRlZEJvcmRlciAmJiBibGVlZEF2b2lkYW5jZSAhPSBCYWNrZ3JvdW5kQmxlZWRVc2VUcmFu
c3BhcmVuY3lMYXllcjsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGNsaXBUb0JvcmRl
clN0YXRlU2F2ZXIoKmNvbnRleHQsIGNsaXBUb0JvcmRlclJhZGl1cyk7CiAgICAgaWYgKGNsaXBU
b0JvcmRlclJhZGl1cykgewotICAgICAgICBSb3VuZGVkSW50UmVjdCBib3JkZXIgPSBnZXRCYWNr
Z3JvdW5kUm91bmRlZFJlY3QoYmFja2dyb3VuZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNl
KGNvbnRleHQsIGJvcmRlclJlY3QsIGJsZWVkQXZvaWRhbmNlKSwgYm94LCBpbmxpbmVCb3hXaWR0
aCwgaW5saW5lQm94SGVpZ2h0LCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwor
ICAgICAgICBSb3VuZGVkSW50UmVjdCBib3JkZXIgPSBnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3Qo
YmFja2dyb3VuZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKGNvbnRleHQsIHJlY3QsIGJs
ZWVkQXZvaWRhbmNlKSwgYm94LCBib3hTaXplLndpZHRoKCksIGJveFNpemUuaGVpZ2h0KCksIGlu
Y2x1ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSk7CiAgICAgICAgIGNvbnRleHQtPmFkZFJv
dW5kZWRSZWN0Q2xpcChib3JkZXIpOwogICAgIH0KICAgICAKQEAgLTY1MiwzMyArNjQ4LDMzIEBA
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKICAgICBpbnQgcFJpZ2h0
ID0gaW5jbHVkZVJpZ2h0RWRnZSA/IHBhZGRpbmdSaWdodCgpIDogMDsKIAogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgY2xpcFdpdGhTY3JvbGxpbmdTdGF0ZVNhdmVyKCpjb250ZXh0LCBj
bGlwcGVkV2l0aExvY2FsU2Nyb2xsaW5nKTsKKyAgICBJbnRSZWN0IHNjcm9sbGVkUGFpbnRSZWN0
ID0gcmVjdDsKICAgICBpZiAoY2xpcHBlZFdpdGhMb2NhbFNjcm9sbGluZykgewogICAgICAgICAv
LyBDbGlwIHRvIHRoZSBvdmVyZmxvdyBhcmVhLgotICAgICAgICBjb250ZXh0LT5jbGlwKHRvUmVu
ZGVyQm94KHRoaXMpLT5vdmVyZmxvd0NsaXBSZWN0KHR4LCB0eSkpOworICAgICAgICBjb250ZXh0
LT5jbGlwKHRvUmVuZGVyQm94KHRoaXMpLT5vdmVyZmxvd0NsaXBSZWN0KHJlY3QueCgpLCByZWN0
LnkoKSkpOwogICAgICAgICAKLSAgICAgICAgLy8gTm93IGFkanVzdCBvdXIgdHgsIHR5LCB3LCBo
IHRvIHJlZmxlY3QgYSBzY3JvbGxlZCBjb250ZW50IGJveCB3aXRoIGJvcmRlcnMgYXQgdGhlIGVu
ZHMuCisgICAgICAgIC8vIEFkanVzdCB0aGUgcGFpbnQgcmVjdCB0byByZWZsZWN0IGEgc2Nyb2xs
ZWQgY29udGVudCBib3ggd2l0aCBib3JkZXJzIGF0IHRoZSBlbmRzLgogICAgICAgICBJbnRTaXpl
IG9mZnNldCA9IGxheWVyKCktPnNjcm9sbGVkQ29udGVudE9mZnNldCgpOwotICAgICAgICB0eCAt
PSBvZmZzZXQud2lkdGgoKTsKLSAgICAgICAgdHkgLT0gb2Zmc2V0LmhlaWdodCgpOwotICAgICAg
ICB3ID0gYkxlZnQgKyBsYXllcigpLT5zY3JvbGxXaWR0aCgpICsgYlJpZ2h0OwotICAgICAgICBo
ID0gYm9yZGVyVG9wKCkgKyBsYXllcigpLT5zY3JvbGxIZWlnaHQoKSArIGJvcmRlckJvdHRvbSgp
OworICAgICAgICBzY3JvbGxlZFBhaW50UmVjdC5tb3ZlKC1vZmZzZXQpOworICAgICAgICBzY3Jv
bGxlZFBhaW50UmVjdC5zZXRXaWR0aChiTGVmdCArIGxheWVyKCktPnNjcm9sbFdpZHRoKCkgKyBi
UmlnaHQpOworICAgICAgICBzY3JvbGxlZFBhaW50UmVjdC5zZXRIZWlnaHQoYm9yZGVyVG9wKCkg
KyBsYXllcigpLT5zY3JvbGxIZWlnaHQoKSArIGJvcmRlckJvdHRvbSgpKTsKICAgICB9CiAgICAg
CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBiYWNrZ3JvdW5kQ2xpcFN0YXRlU2F2ZXIo
KmNvbnRleHQsIGZhbHNlKTsKICAgICBpZiAoYmdMYXllci0+Y2xpcCgpID09IFBhZGRpbmdGaWxs
Qm94IHx8IGJnTGF5ZXItPmNsaXAoKSA9PSBDb250ZW50RmlsbEJveCkgewogICAgICAgICAvLyBD
bGlwIHRvIHRoZSBwYWRkaW5nIG9yIGNvbnRlbnQgYm94ZXMgYXMgbmVjZXNzYXJ5LgogICAgICAg
ICBib29sIGluY2x1ZGVQYWRkaW5nID0gYmdMYXllci0+Y2xpcCgpID09IENvbnRlbnRGaWxsQm94
OwotICAgICAgICBpbnQgeCA9IHR4ICsgYkxlZnQgKyAoaW5jbHVkZVBhZGRpbmcgPyBwTGVmdCA6
IDApOwotICAgICAgICBpbnQgeSA9IHR5ICsgYm9yZGVyVG9wKCkgKyAoaW5jbHVkZVBhZGRpbmcg
PyBwYWRkaW5nVG9wKCkgOiAwKTsKLSAgICAgICAgaW50IHdpZHRoID0gdyAtIGJMZWZ0IC0gYlJp
Z2h0IC0gKGluY2x1ZGVQYWRkaW5nID8gcExlZnQgKyBwUmlnaHQgOiAwKTsKLSAgICAgICAgaW50
IGhlaWdodCA9IGggLSBib3JkZXJUb3AoKSAtIGJvcmRlckJvdHRvbSgpIC0gKGluY2x1ZGVQYWRk
aW5nID8gcGFkZGluZ1RvcCgpICsgcGFkZGluZ0JvdHRvbSgpIDogMCk7CisgICAgICAgIEludFJl
Y3QgY2xpcFJlY3QgPSBJbnRSZWN0KHNjcm9sbGVkUGFpbnRSZWN0LngoKSArIGJMZWZ0ICsgKGlu
Y2x1ZGVQYWRkaW5nID8gcExlZnQgOiAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2Nyb2xsZWRQYWludFJlY3QueSgpICsgYm9yZGVyVG9wKCkgKyAoaW5jbHVkZVBhZGRp
bmcgPyBwYWRkaW5nVG9wKCkgOiAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2Nyb2xsZWRQYWludFJlY3Qud2lkdGgoKSAtIGJMZWZ0IC0gYlJpZ2h0IC0gKGluY2x1ZGVQ
YWRkaW5nID8gcExlZnQgKyBwUmlnaHQgOiAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2Nyb2xsZWRQYWludFJlY3QuaGVpZ2h0KCkgLSBib3JkZXJUb3AoKSAtIGJvcmRl
ckJvdHRvbSgpIC0gKGluY2x1ZGVQYWRkaW5nID8gcGFkZGluZ1RvcCgpICsgcGFkZGluZ0JvdHRv
bSgpIDogMCkpOwogICAgICAgICBiYWNrZ3JvdW5kQ2xpcFN0YXRlU2F2ZXIuc2F2ZSgpOwotICAg
ICAgICBjb250ZXh0LT5jbGlwKEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOworICAgICAg
ICBjb250ZXh0LT5jbGlwKGNsaXBSZWN0KTsKICAgICB9IGVsc2UgaWYgKGJnTGF5ZXItPmNsaXAo
KSA9PSBUZXh0RmlsbEJveCkgewogICAgICAgICAvLyBXZSBoYXZlIHRvIGRyYXcgb3VyIHRleHQg
aW50byBhIG1hc2sgdGhhdCBjYW4gdGhlbiBiZSB1c2VkIHRvIGNsaXAgYmFja2dyb3VuZCBkcmF3
aW5nLgogICAgICAgICAvLyBGaXJzdCBmaWd1cmUgb3V0IGhvdyBiaWcgdGhlIG1hc2sgaGFzIHRv
IGJlLiAgSXQgc2hvdWxkIGJlIG5vIGJpZ2dlciB0aGFuIHdoYXQgd2UgbmVlZAogICAgICAgICAv
LyB0byBhY3R1YWxseSByZW5kZXIsIHNvIHdlIHNob3VsZCBpbnRlcnNlY3QgdGhlIGRpcnR5IHJl
Y3Qgd2l0aCB0aGUgYm9yZGVyIGJveCBvZiB0aGUgYmFja2dyb3VuZC4KLSAgICAgICAgSW50UmVj
dCBtYXNrUmVjdCh0eCwgdHksIHcsIGgpOworICAgICAgICBJbnRSZWN0IG1hc2tSZWN0ID0gcmVj
dDsKICAgICAgICAgbWFza1JlY3QuaW50ZXJzZWN0KHBhaW50SW5mby5yZWN0KTsKICAgICAgICAg
CiAgICAgICAgIC8vIE5vdyBjcmVhdGUgdGhlIG1hc2suCkBAIC02OTQsMTEgKzY5MCwxMSBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllCiAgICAgICAgIFBhaW50SW5m
byBpbmZvKG1hc2tJbWFnZUNvbnRleHQsIG1hc2tSZWN0LCBQYWludFBoYXNlVGV4dENsaXAsIHRy
dWUsIDAsIDApOwogICAgICAgICBpZiAoYm94KSB7CiAgICAgICAgICAgICBSb290SW5saW5lQm94
KiByb290ID0gYm94LT5yb290KCk7Ci0gICAgICAgICAgICBib3gtPnBhaW50KGluZm8sIHR4IC0g
Ym94LT54KCksIHR5IC0gYm94LT55KCksIHJvb3QtPmxpbmVUb3AoKSwgcm9vdC0+bGluZUJvdHRv
bSgpKTsKKyAgICAgICAgICAgIGJveC0+cGFpbnQoaW5mbywgc2Nyb2xsZWRQYWludFJlY3QueCgp
IC0gYm94LT54KCksIHNjcm9sbGVkUGFpbnRSZWN0LnkoKSAtIGJveC0+eSgpLCByb290LT5saW5l
VG9wKCksIHJvb3QtPmxpbmVCb3R0b20oKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBpbnQgeCA9IGlzQm94KCkgPyB0b1JlbmRlckJveCh0aGlzKS0+eCgpIDogMDsKICAgICAgICAg
ICAgIGludCB5ID0gaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT55KCkgOiAwOwotICAgICAg
ICAgICAgcGFpbnQoaW5mbywgdHggLSB4LCB0eSAtIHkpOworICAgICAgICAgICAgcGFpbnQoaW5m
bywgc2Nyb2xsZWRQYWludFJlY3QueCgpIC0geCwgc2Nyb2xsZWRQYWludFJlY3QueSgpIC0geSk7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIFRoZSBtYXNrIGhhcyBiZWVuIGNyZWF0
ZWQuICBOb3cgd2UganVzdCBuZWVkIHRvIGNsaXAgdG8gaXQuCkBAIC03MzksMjIgKzczNSwyMiBA
QCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllCiAKICAgICAvLyBQYWlu
dCB0aGUgY29sb3IgZmlyc3QgdW5kZXJuZWF0aCBhbGwgaW1hZ2VzLgogICAgIGlmICghYmdMYXll
ci0+bmV4dCgpKSB7Ci0gICAgICAgIEludFJlY3QgcmVjdCh0eCwgdHksIHcsIGgpOwotICAgICAg
ICByZWN0LmludGVyc2VjdChwYWludEluZm8ucmVjdCk7CisgICAgICAgIEludFJlY3QgYmFja2dy
b3VuZFJlY3Qoc2Nyb2xsZWRQYWludFJlY3QpOworICAgICAgICBiYWNrZ3JvdW5kUmVjdC5pbnRl
cnNlY3QocGFpbnRJbmZvLnJlY3QpOwogICAgICAgICAvLyBJZiB3ZSBoYXZlIGFuIGFscGhhIGFu
ZCB3ZSBhcmUgcGFpbnRpbmcgdGhlIHJvb3QgZWxlbWVudCwgZ28gYWhlYWQgYW5kIGJsZW5kIHdp
dGggdGhlIGJhc2UgYmFja2dyb3VuZCBjb2xvci4KICAgICAgICAgaWYgKGlzT3BhcXVlUm9vdCkg
ewogICAgICAgICAgICAgQ29sb3IgYmFzZUNvbG9yID0gdmlldygpLT5mcmFtZVZpZXcoKS0+YmFz
ZUJhY2tncm91bmRDb2xvcigpOwogICAgICAgICAgICAgaWYgKGJhc2VDb2xvci5hbHBoYSgpID4g
MCkgewogICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIHByZXZpb3VzT3BlcmF0b3Ig
PSBjb250ZXh0LT5jb21wb3NpdGVPcGVyYXRpb24oKTsKICAgICAgICAgICAgICAgICBjb250ZXh0
LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAgICAgICAgICAgICAg
Y29udGV4dC0+ZmlsbFJlY3QocmVjdCwgYmFzZUNvbG9yLCBzdHlsZSgpLT5jb2xvclNwYWNlKCkp
OworICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGJhY2tncm91bmRSZWN0LCBiYXNl
Q29sb3IsIHN0eWxlKCktPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHByZXZpb3VzT3BlcmF0b3IpOwogICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xlYXJSZWN0KHJlY3QpOworICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmNsZWFyUmVjdChiYWNrZ3JvdW5kUmVjdCk7CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoYmdDb2xvci5pc1ZhbGlkKCkgJiYgYmdDb2xvci5hbHBoYSgpID4gMCkKLSAg
ICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHJlY3QsIGJnQ29sb3IsIHN0eWxlKCktPmNvbG9y
U3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdCwg
YmdDb2xvciwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpKTsKICAgICB9CiAKICAgICAvLyBubyBwcm9n
cmVzc2l2ZSBsb2FkaW5nIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlCkBAIC03NjMsNyArNzU5LDcg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZQogICAgICAgICBJbnRQ
b2ludCBwaGFzZTsKICAgICAgICAgSW50U2l6ZSB0aWxlU2l6ZTsKIAotICAgICAgICBjYWxjdWxh
dGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShiZ0xheWVyLCB0eCwgdHksIHcsIGgsIGRlc3RSZWN0
LCBwaGFzZSwgdGlsZVNpemUpOworICAgICAgICBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9t
ZXRyeShiZ0xheWVyLCBzY3JvbGxlZFBhaW50UmVjdC54KCksIHNjcm9sbGVkUGFpbnRSZWN0Lnko
KSwgc2Nyb2xsZWRQYWludFJlY3Qud2lkdGgoKSwgc2Nyb2xsZWRQYWludFJlY3QuaGVpZ2h0KCks
IGRlc3RSZWN0LCBwaGFzZSwgdGlsZVNpemUpOwogICAgICAgICBJbnRQb2ludCBkZXN0T3JpZ2lu
ID0gZGVzdFJlY3QubG9jYXRpb24oKTsKICAgICAgICAgZGVzdFJlY3QuaW50ZXJzZWN0KHBhaW50
SW5mby5yZWN0KTsKICAgICAgICAgaWYgKCFkZXN0UmVjdC5pc0VtcHR5KCkpIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCShyZXZp
c2lvbiA4NjI4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgIHZv
aWQgcGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFJl
bmRlclN0eWxlKiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJsZWVkTm9u
ZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNh
bFJpZ2h0RWRnZSA9IHRydWUpOwogICAgIGJvb2wgcGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBOaW5l
UGllY2VJbWFnZSYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CiAg
ICAgdm9pZCBwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBpbnQgdHgsIGludCB0eSwg
aW50IHcsIGludCBoLCBjb25zdCBSZW5kZXJTdHlsZSosIFNoYWRvd1N0eWxlLCBib29sIGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0g
dHJ1ZSk7Ci0gICAgdm9pZCBwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgaW50IHR4LCBpbnQgdHksIGludCB3aWR0
aCwgaW50IGhlaWdodCwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiA9
IDAsIGludCBpbmxpbmVCb3hXaWR0aCA9IDAsIGludCBpbmxpbmVCb3hIZWlnaHQgPSAwLCBDb21w
b3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFJlbmRlck9iamVjdCogYmFja2dy
b3VuZE9iamVjdCA9IDApOworICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQ
YWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IEludFJlY3Qm
LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqID0gMCwgY29uc3QgSW50
U2l6ZSYgPSBJbnRTaXplKCksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zl
ciwgUmVuZGVyT2JqZWN0KiBiYWNrZ3JvdW5kT2JqZWN0ID0gMCk7CiAgICAgCiAgICAgLy8gT3Zl
cnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIGRldGVybWluZSBsaW5lIGhlaWdodCBhbmQgYmFzZWxp
bmUgcG9zaXRpb24uCiAgICAgdmlydHVhbCBpbnQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwg
TGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmlu
Z0xpbmUpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
aWVsZHNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZpZWxkc2V0LmNwcAkocmV2aXNpb24gODYyODApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmllbGRzZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAg
dm9pZCBSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucwogCiAgICAgcGFpbnRCb3hT
aGFkb3cocGFpbnRJbmZvLmNvbnRleHQsIHR4LCB0eSwgdywgaCwgc3R5bGUoKSwgTm9ybWFsKTsK
IAotICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIHN0eWxlKCktPnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIHN0eWxlKCktPmJhY2tncm91bmRM
YXllcnMoKSwgdHgsIHR5LCB3LCBoKTsKKyAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBz
dHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Ip
LCBzdHlsZSgpLT5iYWNrZ3JvdW5kTGF5ZXJzKCksIEludFJlY3QodHgsIHR5LCB3LCBoKSk7CiAg
ICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLmNvbnRleHQsIHR4LCB0eSwgdywgaCwgc3R5bGUo
KSwgSW5zZXQpOwogCiAgICAgaWYgKCFzdHlsZSgpLT5oYXNCb3JkZXIoKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkocmV2aXNpb24gODYyODApCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NjUsNyArNTY1LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQ
YQogICAgIGVsc2UgaWYgKCFpc0JvZHkoKSB8fCBkb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQo
KS0+cmVuZGVyZXIoKS0+aGFzQmFja2dyb3VuZCgpKQogICAgICAgICAvLyBUaGUgPGJvZHk+IG9u
bHkgcGFpbnRzIGl0cyBiYWNrZ3JvdW5kIGlmIHRoZSByb290IGVsZW1lbnQgaGFzIGRlZmluZWQg
YSBiYWNrZ3JvdW5kCiAgICAgICAgIC8vIGluZGVwZW5kZW50IG9mIHRoZSBib2R5LgotICAgICAg
ICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzdHlsZSgpLT5iYWNrZ3JvdW5kTGF5ZXJz
KCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAg
ICAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwgc3R5bGUoKS0+YmFja2dyb3VuZExh
eWVycygpLCByZWN0KTsKIAogICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mby5jb250ZXh0LCBy
ZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgc3R5bGUoKSwg
SW5zZXQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcAkocmV2aXNpb24gODYyODApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk0LDcgKzk5NCw3IEBAIHZvaWQg
UmVuZGVyVGFibGVDZWxsOjpwYWludEJhY2tncm91bmRzQmUKICAgICAgICAgICAgICAgICB3IC0g
Ym9yZGVyTGVmdCgpIC0gYm9yZGVyUmlnaHQoKSwgaCAtIGJvcmRlclRvcCgpIC0gYm9yZGVyQm90
dG9tKCkpOwogICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOwog
ICAgICAgICB9Ci0gICAgICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGMsIGJnTGF5ZXIs
IHR4LCB0eSwgdywgaCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29tcG9zaXRlU291cmNlT3Zlciwg
YmFja2dyb3VuZE9iamVjdCk7CisgICAgICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGMs
IGJnTGF5ZXIsIEludFJlY3QodHgsIHR5LCB3LCBoKSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29t
cG9zaXRlU291cmNlT3ZlciwgYmFja2dyb3VuZE9iamVjdCk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>