<?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>174432</bug_id>
          
          <creation_ts>2017-07-12 11:51:06 -0700</creation_ts>
          <short_desc>Async image decoding for large images should be disabled by default</short_desc>
          <delta_ts>2017-07-12 19:20:25 -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>Images</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1328157</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-07-12 11:51:06 -0700</bug_when>
    <thetext>Currently the PaintBehaviorSnapshotting prevents drawing the image asynchronously. The only use of this flag is to disable async image decoding for large images. We need to flip the name and use of this flag such that async image decoding for large images will be disabled by default and it will be enabled only when this is explicitly specified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328173</commentid>
    <comment_count>1</comment_count>
      <attachid>315268</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-07-12 12:16:24 -0700</bug_when>
    <thetext>Created attachment 315268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328186</commentid>
    <comment_count>2</comment_count>
      <attachid>315274</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-07-12 12:41:55 -0700</bug_when>
    <thetext>Created attachment 315274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328187</commentid>
    <comment_count>3</comment_count>
      <attachid>315268</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-07-12 12:45:34 -0700</bug_when>
    <thetext>Comment on attachment 315268
Patch

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

&gt; Source/WebCore/rendering/RenderElement.h:223
&gt; +    DecodingMode decodingModeForImageDraw(const PaintInfo&amp;) const;

This method does not need to be public and can live on RenderBoxModelObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328188</commentid>
    <comment_count>4</comment_count>
      <attachid>315268</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-07-12 12:48:13 -0700</bug_when>
    <thetext>Comment on attachment 315268
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderElement.h:223
&gt;&gt; +    DecodingMode decodingModeForImageDraw(const PaintInfo&amp;) const;
&gt; 
&gt; This method does not need to be public and can live on RenderBoxModelObject.

But it is used by RenderImage as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328190</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-07-12 12:56:04 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #4)
&gt; Comment on attachment 315268 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=315268&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/RenderElement.h:223
&gt; &gt;&gt; +    DecodingMode decodingModeForImageDraw(const PaintInfo&amp;) const;
&gt; &gt; 
&gt; &gt; This method does not need to be public and can live on RenderBoxModelObject.
&gt; 
&gt; But it is used by RenderImage as well.
RenderImage is the renderer for &lt;img&gt; element which is a replaced element -&gt; requires visual box properties -&gt; RenderBoxModelObject</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328200</commentid>
    <comment_count>6</comment_count>
      <attachid>315276</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-07-12 13:10:37 -0700</bug_when>
    <thetext>Created attachment 315276
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328222</commentid>
    <comment_count>7</comment_count>
      <attachid>315276</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-07-12 13:57:01 -0700</bug_when>
    <thetext>Comment on attachment 315276
Patch

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        -- Propagate PaintBehaviorAllowAsyncImageDecoding a from parent view to 

&apos; a from &apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328284</commentid>
    <comment_count>8</comment_count>
      <attachid>315303</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-07-12 16:40:26 -0700</bug_when>
    <thetext>Created attachment 315303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328346</commentid>
    <comment_count>9</comment_count>
      <attachid>315303</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-12 19:20:23 -0700</bug_when>
    <thetext>Comment on attachment 315303
Patch

Clearing flags on attachment: 315303

Committed r219438: &lt;http://trac.webkit.org/changeset/219438&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328347</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-12 19:20:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315268</attachid>
            <date>2017-07-12 12:16:24 -0700</date>
            <delta_ts>2017-07-12 12:41:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174432-20170712121623.patch</filename>
            <type>text/plain</type>
            <size>27125</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTM2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE3LTA3LTEyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXN5bmMgaW1h
Z2UgZGVjb2RpbmcgZm9yIGxhcmdlIGltYWdlcyBzaG91bGQgYmUgZGlzYWJsZWQgYnkgZGVmYXVs
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NDMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLS0gUmVu
YW1lIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpTbmFwc2hvdHRpbmcgdG8gQWxsb3dBc3luY0lt
YWdlRGVjb2RpbmcuCisgICAgICAgIC0tIFJlcGxhY2UgZXZlcnkgcmVmZXJlbmNlIHRvIEdyYXBo
aWNzTGF5ZXJQYWludEZsYWdzOjpTbmFwc2hvdHRpbmcgYnkKKyAgICAgICAgICAgR3JhcGhpY3NM
YXllclBhaW50RmxhZ3M6Ok5vbmUgYW5kIGV2ZXJ5IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpO
b25lCisgICAgICAgICAgIGJ5IEFsbG93QXN5bmNJbWFnZURlY29kaW5nLgorICAgICAgICAtLSBS
ZW5hbWUgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyB0byBQYWludEJlaGF2aW9yQWxsb3dBc3lu
Y0ltYWdlRGVjb2RpbmcuCisgICAgICAgIC0tIFByb3BhZ2F0ZSBQYWludEJlaGF2aW9yQWxsb3dB
c3luY0ltYWdlRGVjb2RpbmcgYSBmcm9tIHBhcmVudCB2aWV3IHRvIAorICAgICAgICAgICBhIGNo
aWxkIHZpZXcgaW5zdGVhZCBvZiBwcm9wYWdhdGluZyBQYWludEJlaGF2aW9yU25hcHNob3R0aW5n
LgorICAgICAgICAtLSBSZW1vdmUgc2V0dGluZyB0aGUgYml0IFBhaW50QmVoYXZpb3JTbmFwc2hv
dHRpbmcgaW4gYW55IG5ldyBQYWludEJlaGF2b2lyLgorICAgICAgICAtLSBSZXBsYWNlIGFkZGlu
ZyB0aGUgYml0IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcgaW4gYW4gZXhpc3RpbmcgUGFpbnRC
ZWhhdm9pciAKKyAgICAgICAgICAgYnkgcmVzZXR0aW5nIHRoZSBiaXQgUGFpbnRCZWhhdmlvckFs
bG93QXN5bmNJbWFnZURlY29kaW5nLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNr
Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSk6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
Ojp3aWxsUGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50
Q29udGVudHNGb3JTbmFwc2hvdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGll
bnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFu
Z2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW06CisgICAg
ICAgICgtW1dlYkxheWVyIGRyYXdJbkNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYlNpbXBsZUxh
eWVyIGRyYXdJbkNvbnRleHQ6XSk6CisgICAgICAgICogcmVuZGVyaW5nL1BhaW50UGhhc2UuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OmRlY29kaW5nTW9kZUZvckltYWdlRHJhdyk6IFRoaXMgZnVuY3Rpb24g
d2lsbCBiZQorICAgICAgICB1c2VkIGJ5IFJlbmRlckltYWdlIGFuZCBSZW5kZXJCb3hNb2RlbE9i
amVjdCB0byBkZWNpZGUgdGhlIGNvcnJlY3QKKyAgICAgICAgZGVjb2RpbmdNb2RlIGZvciBkcmF3
aW5nIGFuIGltYWdlLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21l
bnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJX
aWRnZXQ6OnBhaW50Q29udGVudHMpOiBXZSBuZWVkIHRvIHByb3BhZ2F0ZSB0aGUgCisgICAgICAg
IFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZyBmcm9tIFJlbmRlcldpZGdldCB0
byB0aGUgRnJhbWVWaWV3LgorICAgICAgICBXZSBkaWQgbm90IG5lZWQgdG8gZG8gdGhhdCBmb3Ig
UGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyBiZWNhdXNlIAorICAgICAgICBGcmFtZVZpZXcgd2Fz
IHNldHRpbmcgaXQgaWYgKGRvY3VtZW50LT5wcmludGluZygpKSB0byBpdHMgbV9wYWludEJlaGF2
aW9yCisgICAgICAgIGluIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoKS4KKwogMjAxNy0w
Ny0xMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04ocjIxOTA0NSk6IFRoZSA8Ym9keT4gZWxlbWVudCBkb2VzIG5vdCBnZXQg
cmVwYWludGVkIHdoZW4gaXRzIGJhY2tncm91bmQgaW1hZ2UgZmluaXNoZXMgZGVjb2RpbmcKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAJKHJldmlzaW9uIDIxOTM2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwOSw3ICsxNDA5
LDcgQEAgUmVmUHRyPEltYWdlPiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YQogICAgIGlmICgh
YnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGxheWVyLT5wYWludChidWZm
ZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0LCBMYXlvdXRTaXplKCksIFBhaW50QmVoYXZpb3JG
bGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nLCBudWxs
cHRyLCBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdBbGxQaGFzZXMp
OworICAgIGxheWVyLT5wYWludChidWZmZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0LCBMYXlv
dXRTaXplKCksIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMsIG51bGxwdHIs
IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0FsbFBoYXNlcyk7CiAK
ICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShidWZmZXIpKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDIxOTM2NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM4
OCwxMiArNDM4OCwxMiBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3JhcGhp
CiAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9y
RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQogICAgICAgICAgICAgbV9wYWludEJlaGF2aW9yIHw9
IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CiAgICAgICAgICAgICAKLSAg
ICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JTbmFw
c2hvdHRpbmcpCi0gICAgICAgICAgICBtX3BhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclNu
YXBzaG90dGluZzsKKyAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBh
aW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZykKKyAgICAgICAgICAgIG1fcGFpbnRC
ZWhhdmlvciB8PSBQYWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2Rpbmc7CiAgICAgfQog
CiAgICAgaWYgKGRvY3VtZW50LT5wcmludGluZygpKQotICAgICAgICBtX3BhaW50QmVoYXZpb3Ig
fD0gKFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9y
U25hcHNob3R0aW5nKTsKKyAgICAgICAgbV9wYWludEJlaGF2aW9yID0gKG1fcGFpbnRCZWhhdmlv
ciAmIH5QYWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2RpbmcpIHwgUGFpbnRCZWhhdmlv
ckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsKIAogICAgIHBhaW50aW5nU3RhdGUuaXNGbGF0dGVu
aW5nUGFpbnRPZlJvb3RGcmFtZSA9IChtX3BhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRmxh
dHRlbkNvbXBvc2l0aW5nTGF5ZXJzKSAmJiAhZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKICAgICBp
ZiAocGFpbnRpbmdTdGF0ZS5pc0ZsYXR0ZW5pbmdQYWludE9mUm9vdEZyYW1lKQpAQCAtNDUxMyw3
ICs0NTEzLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHNGb3JTbmFwc2hvdAogCiAg
ICAgLy8gQ2FjaGUgcGFpbnQgYmVoYXZpb3IgYW5kIHNldCBhIG5ldyBiZWhhdmlvciBhcHByb3By
aWF0ZSBmb3Igc25hcHNob3RzLgogICAgIFBhaW50QmVoYXZpb3Igb2xkQmVoYXZpb3IgPSBwYWlu
dEJlaGF2aW9yKCk7Ci0gICAgc2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvciB8IChQYWludEJl
aGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGlu
ZykpOworICAgIHNldFBhaW50QmVoYXZpb3IoKG9sZEJlaGF2aW9yICYgflBhaW50QmVoYXZpb3JB
bGxvd0FzeW5jSW1hZ2VEZWNvZGluZykgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5n
TGF5ZXJzKTsKIAogICAgIC8vIElmIHRoZSBzbmFwc2hvdCBzaG91bGQgZXhjbHVkZSBzZWxlY3Rp
b24sIHRoZW4gd2UnbGwgY2xlYXIgdGhlIGN1cnJlbnQgc2VsZWN0aW9uCiAgICAgLy8gaW4gdGhl
IHJlbmRlciB0cmVlIG9ubHkuIFRoaXMgd2lsbCBhbGxvdyB1cyB0byByZXN0b3JlIHRoZSBzZWxl
Y3Rpb24gZnJvbSB0aGUgRE9NCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCShyZXZpc2lvbiAyMTkzNjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2Niw3ICs0NjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHVzZXNDb250ZW50c0xh
eWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIENhbGxiYWNrIGZyb20gdGhl
IHVuZGVybHlpbmcgZ3JhcGhpY3Mgc3lzdGVtIHRvIGRyYXcgbGF5ZXIgY29udGVudHMuCi0gICAg
dm9pZCBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzID0gR3JhcGhpY3NMYXllclBh
aW50RmxhZ3M6Ok5vbmUpOworICAgIHZvaWQgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBjbGlwLCBHcmFwaGljc0xheWVyUGFpbnRG
bGFncyk7CiAKICAgICAvLyBGb3IgaG9zdGluZyB0aGlzIEdyYXBoaWNzTGF5ZXIgaW4gYSBuYXRp
dmUgbGF5ZXIgaGllcmFyY2h5LgogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgJKHJldmlzaW9uIDIx
OTM2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBlbnVtIExheWVyVHJlZUFz
VGV4dEJlaGF2aW9yRmxhZ3MgewogfTsKIHR5cGVkZWYgdW5zaWduZWQgTGF5ZXJUcmVlQXNUZXh0
QmVoYXZpb3I7CiAKLWVudW0gY2xhc3MgR3JhcGhpY3NMYXllclBhaW50RmxhZ3MgeyBOb25lLCBT
bmFwc2hvdHRpbmcgfTsKK2VudW0gY2xhc3MgR3JhcGhpY3NMYXllclBhaW50RmxhZ3MgeyBOb25l
LCBBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZyB9OwogICAgIAogY2xhc3MgR3JhcGhpY3NMYXllckNs
aWVudCB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHJldmlzaW9uIDIxOTM2NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1NTUsNyArMTU1NSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNB
OjpyZWN1cnNpdmVDb21taXRDaGEKICAgICAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQ7CiAg
ICAgICAgIC8vIFRoZSBSZWNvcmRlciBpcyBsYXJnZSwgc28gaGVhcC1hbGxvY2F0ZS4KICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4gcmVjb3JkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oY29udGV4dCwgKm1fZGlzcGxheUxp
c3QsIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7Ci0gICAgICAgIHBhaW50R3JhcGhp
Y3NMYXllckNvbnRlbnRzKGNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoKSkp
OworICAgICAgICBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhjb250ZXh0LCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBzaXplKCkpLCBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6QWxsb3dBc3lu
Y0ltYWdlRGVjb2RpbmcpOwogCiAjaWZkZWYgTE9HX1JFQ09SRElOR19USU1FCiAgICAgICAgIGRv
dWJsZSBkdXJhdGlvbiA9IGN1cnJlbnRUaW1lKCkgLSBzdGFydFRpbWU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCShyZXZpc2lv
biAyMTkzNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5
ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgLSAodm9pZClkcmF3SW5Db250
ZXh0OihDR0NvbnRleHRSZWYpY29udAogICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBQbGF0
Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihzZWxmKTsKICAgICBpZiAobGF5ZXIpIHsKICAg
ICAgICAgUGxhdGZvcm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgcmVjdHNUb1BhaW50ID0gUGxh
dGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KGNvbnRleHQsIGxheWVyKTsKLSAgICAg
ICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LCBsYXllciwgcmVj
dHNUb1BhaW50LCBzZWxmLmlzUmVuZGVyaW5nSW5Db250ZXh0ID8gR3JhcGhpY3NMYXllclBhaW50
RmxhZ3M6OlNuYXBzaG90dGluZyA6IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpOb25lKTsKKyAg
ICAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LCBsYXllciwg
cmVjdHNUb1BhaW50LCBzZWxmLmlzUmVuZGVyaW5nSW5Db250ZXh0ID8gR3JhcGhpY3NMYXllclBh
aW50RmxhZ3M6Ok5vbmUgOiBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6QWxsb3dBc3luY0ltYWdl
RGVjb2RpbmcpOwogICAgIH0KIH0KIApAQCAtMTM3LDcgKzEzNyw3IEBAIC0gKHZvaWQpZHJhd0lu
Q29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnQKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldElz
QWNjZWxlcmF0ZWRDb250ZXh0KGxheWVyLT5hY2NlbGVyYXRlc0RyYXdpbmcoKSk7CiAKICAgICAg
ICAgRmxvYXRSZWN0IGNsaXBCb3VuZHMgPSBDR0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3goY29u
dGV4dCk7Ci0gICAgICAgIGxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRl
bnRzKGxheWVyLCBncmFwaGljc0NvbnRleHQsIGNsaXBCb3VuZHMsIHNlbGYuaXNSZW5kZXJpbmdJ
bkNvbnRleHQgPyBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6U25hcHNob3R0aW5nIDogR3JhcGhp
Y3NMYXllclBhaW50RmxhZ3M6Ok5vbmUpOworICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZv
cm1DQUxheWVyUGFpbnRDb250ZW50cyhsYXllciwgZ3JhcGhpY3NDb250ZXh0LCBjbGlwQm91bmRz
LCBzZWxmLmlzUmVuZGVyaW5nSW5Db250ZXh0ID8gR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5v
bmUgOiBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6QWxsb3dBc3luY0ltYWdlRGVjb2RpbmcpOwog
ICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50UGhhc2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCShyZXZp
c2lvbiAyMTkzNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIGVudW0gUGFpbnRCZWhhdmlvckZsYWdzIHsK
ICAgICBQYWludEJlaGF2aW9yU2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5ID0gMSA8PCA3LAog
ICAgIFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0aW9uICAgICAgICAgICAgPSAxIDw8IDgsCiAg
ICAgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyAgICA9IDEgPDwgOSwgLy8g
UGFpbnQgZG9lc24ndCBzdG9wIGF0IGNvbXBvc2l0aW5nIGxheWVyIGJvdW5kYXJpZXMuCi0gICAg
UGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyAgICAgICAgICAgICAgICA9IDEgPDwgMTAsIC8vIElu
ZGljYXRlcyBzbmFwc2hvdHRpbmcsIGUuZy4gZm9yY2Ugc3luY2hyb25vdXMgaW1hZ2UgZGVjb2Rp
bmcuCisgICAgUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nICAgICA9IDEgPDwg
MTAsCiB9OwogCiB0eXBlZGVmIHVuc2lnbmVkIFBhaW50QmVoYXZpb3I7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlz
aW9uIDIxOTM2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4Myw4ICs4ODMsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllCiAgICAgICAgICAgICAgICAgZG93bmNhc3Q8Qml0
bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbVNldHRpbmdzKHNldHRpbmdzKCkpOwogCiAgICAg
ICAgICAgICBhdXRvIGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShj
b250ZXh0LCAqaW1hZ2UsICZiZ0xheWVyLCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsKLSAgICAgICAg
ICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gKHBhaW50SW5mby5wYWludEJlaGF2aW9yICYgKFBhaW50
QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0
aW5nKSkgPyBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzIDogRGVjb2RpbmdNb2RlOjpBc3luY2hy
b25vdXM7Ci0gICAgICAgICAgICBhdXRvIGRyYXdSZXN1bHQgPSBjb250ZXh0LmRyYXdUaWxlZElt
YWdlKCppbWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5y
ZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUo
KSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXIuYmxlbmRNb2RlKCks
IGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIGludGVycG9sYXRp
b24pKTsKKyAgICAgICAgICAgIGF1dG8gZHJhd1Jlc3VsdCA9IGNvbnRleHQuZHJhd1RpbGVkSW1h
Z2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJl
bGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgp
LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci5ibGVuZE1vZGUoKSwg
ZGVjb2RpbmdNb2RlRm9ySW1hZ2VEcmF3KHBhaW50SW5mbyksIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7CiAgICAgICAgICAgICBpZiAoZHJhd1Jlc3VsdCA9
PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZykgewogICAgICAgICAgICAgICAg
IEFTU0VSVChiZ0ltYWdlLT5pc0NhY2hlZEltYWdlKCkpOwogICAgICAgICAgICAgICAgIGJnSW1h
Z2UtPmNhY2hlZEltYWdlKCktPmFkZFBlbmRpbmdJbWFnZURyYXdpbmdDbGllbnQoKnRoaXMpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkocmV2aXNp
b24gMjE5MzY0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjAxLDYgKzIyMDEsMTUgQEAgUmVzcGVjdEltYWdlT3JpZW50
YXRpb25FbnVtIFJlbmRlckVsZW1lbgogICAgIHJldHVybiBzZXR0aW5ncygpLnNob3VsZFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uKCkgJiYgaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSA/
IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIDogRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbjsK
IH0KIAorRGVjb2RpbmdNb2RlIFJlbmRlckVsZW1lbnQ6OmRlY29kaW5nTW9kZUZvckltYWdlRHJh
dyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbykgY29uc3QKK3sKKyAgICBpZiAoZG9jdW1lbnQo
KS5pc0ltYWdlRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXM7CisgICAgaWYgKHBhaW50SW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckFs
bG93QXN5bmNJbWFnZURlY29kaW5nKQorICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpBc3lu
Y2hyb25vdXM7CisgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXM7Cit9CisKIHZv
aWQgUmVuZGVyRWxlbWVudDo6YWRqdXN0Rmxvd1RocmVhZFN0YXRlT25Db250YWluaW5nQmxvY2tD
aGFuZ2VJZk5lZWRlZCgpCiB7CiAgICAgaWYgKGZsb3dUaHJlYWRTdGF0ZSgpID09IE5vdEluc2lk
ZUZsb3dUaHJlYWQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmgJKHJldmlzaW9uIDIxOTM2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMCw2ICsyMjAsNyBAQCBwdWJsaWM6CiAgICAg
UmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9ja0ZvckFic29sdXRlUG9zaXRpb24oKSBjb25zdDsK
IAogICAgIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbigpIGNvbnN0OworICAgIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGVGb3JJbWFnZURy
YXcoY29uc3QgUGFpbnRJbmZvJikgY29uc3Q7CiAKICAgICB2b2lkIHJlbW92ZUZyb21SZW5kZXJG
bG93VGhyZWFkKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0Rmxvd1RocmVhZENvbnRhaW5pbmdC
bG9ja0FuZENoaWxkSW5mb0luY2x1ZGluZ0Rlc2NlbmRhbnRzKFJlbmRlckZsb3dUaHJlYWQqKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkocmV2aXNpb24g
MjE5MzY0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTg1LDggKzU4NSw3IEBAIEltYWdlRHJhd1Jlc3VsdCBSZW5kZXJJbWFn
ZTo6cGFpbnRJbnRvUmUKIAogICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRh
dGlvbkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCksIHN0eWxlKCku
aW1hZ2VPcmllbnRhdGlvbigpKTsKIAotICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gKHBhaW50SW5m
by5wYWludEJlaGF2aW9yICYgKFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMg
fCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKSkgPyBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3Vz
IDogRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7Ci0gICAgYXV0byBkcmF3UmVzdWx0ID0gcGFp
bnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1hZ2VQYWludGluZ09wdGlv
bnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZU5vcm1hbCwgZGVjb2RpbmdNb2RlLCBvcmll
bnRhdGlvbkRlc2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgYXV0byBkcmF3UmVzdWx0
ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1hZ2VQYWludGlu
Z09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZU5vcm1hbCwgZGVjb2RpbmdNb2Rl
Rm9ySW1hZ2VEcmF3KHBhaW50SW5mbyksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9s
YXRpb24pKTsKICAgICBpZiAoZHJhd1Jlc3VsdCA9PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVl
c3REZWNvZGluZykKICAgICAgICAgaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCktPmFkZFBl
bmRpbmdJbWFnZURyYXdpbmdDbGllbnQoKnRoaXMpOwogICAgIHJldHVybiBkcmF3UmVzdWx0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAy
MTkzNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Mzg0LDggKzQzODQsOCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExh
eWVyQ29udGVudHMoR3JhCiAgICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAm
IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpCiAgICAgICAgICAgICBwYWlu
dEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CiAgICAg
ICAgICAgICAKLSAgICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRC
ZWhhdmlvclNuYXBzaG90dGluZykKLSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRC
ZWhhdmlvclNuYXBzaG90dGluZzsKKyAgICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2
aW9yICYgUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nKQorICAgICAgICAgICAg
cGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2Rpbmc7CiAK
ICAgICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckV4
Y2x1ZGVTZWxlY3Rpb24pCiAgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZp
b3JFeGNsdWRlU2VsZWN0aW9uOwpAQCAtNDQ2Niw4ICs0NDY2LDggQEAgdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYQogICAgICAgICBpZiAocGFpbnRpbmdJbmZvLnBhaW50
QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQogICAgICAg
ICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5
ZXJzOwogCi0gICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVo
YXZpb3JTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVo
YXZpb3JTbmFwc2hvdHRpbmc7CisgICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlv
ciAmIFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZykKKyAgICAgICAgICAgIHBh
aW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nOwogCiAg
ICAgICAgIGlmIChzaG91bGRQYWludE1hc2socGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IsIGxv
Y2FsUGFpbnRGbGFncykpIHsKICAgICAgICAgICAgIC8vIFBhaW50IHRoZSBtYXNrIGZvciB0aGUg
ZnJhZ21lbnRzLgpAQCAtNDc5OCw4ICs0Nzk4LDggQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRG
b3JlZ3JvdW5kRm9yRnJhZwogICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9y
ICYgUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24pCiAgICAgICAgIGxvY2FsUGFpbnRCZWhh
dmlvciB8PSBQYWludEJlaGF2aW9yRXhjbHVkZVNlbGVjdGlvbjsKIAotICAgIGlmIChsb2NhbFBh
aW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZykKLSAg
ICAgICAgbG9jYWxQYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7Cisg
ICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yQWxs
b3dBc3luY0ltYWdlRGVjb2RpbmcpCisgICAgICAgIGxvY2FsUGFpbnRCZWhhdmlvciB8PSBQYWlu
dEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2Rpbmc7CiAKICAgICAvLyBPcHRpbWl6ZSBjbGlw
cGluZyBmb3IgdGhlIHNpbmdsZSBmcmFnbWVudCBjYXNlLgogICAgIGJvb2wgc2hvdWxkQ2xpcCA9
IGxvY2FsUGFpbnRpbmdJbmZvLmNsaXBUb0RpcnR5UmVjdCAmJiBsYXllckZyYWdtZW50cy5zaXpl
KCkgPT0gMSAmJiBsYXllckZyYWdtZW50c1swXS5zaG91bGRQYWludENvbnRlbnQgJiYgIWxheWVy
RnJhZ21lbnRzWzBdLmZvcmVncm91bmRSZWN0LmlzRW1wdHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAyMTkz
NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjU4NSw4ICsyNTg1LDggQEAgdm9pZCBSZW5kZXJMYXllckJhY2tp
bmc6OnBhaW50Q29udGVudHMoYwogCiAgICAgICAgIC8vIFdlIGhhdmUgdG8gdXNlIHRoZSBzYW1l
IHJvb3QgYXMgZm9yIGhpdCB0ZXN0aW5nLCBiZWNhdXNlIGJvdGggbWV0aG9kcyBjYW4gY29tcHV0
ZSBhbmQgY2FjaGUgY2xpcFJlY3RzLgogICAgICAgICBQYWludEJlaGF2aW9yIGJlaGF2aW9yID0g
UGFpbnRCZWhhdmlvck5vcm1hbDsKLSAgICAgICAgaWYgKGZsYWdzID09IEdyYXBoaWNzTGF5ZXJQ
YWludEZsYWdzOjpTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBiZWhhdmlvciB8PSBQYWludEJl
aGF2aW9yU25hcHNob3R0aW5nOworICAgICAgICBpZiAoZmxhZ3MgPT0gR3JhcGhpY3NMYXllclBh
aW50RmxhZ3M6OkFsbG93QXN5bmNJbWFnZURlY29kaW5nKQorICAgICAgICAgICAgYmVoYXZpb3Ig
fD0gUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nOwogCiAgICAgICAgIHBhaW50
SW50b0xheWVyKGdyYXBoaWNzTGF5ZXIsIGNvbnRleHQsIGRpcnR5UmVjdCwgYmVoYXZpb3IsIHBh
aW50aW5nUGhhc2UpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcAkocmV2aXNpb24gMjE5MzY0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcldpZGdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOSw2ICsyMjksMTMgQEAgdm9pZCBS
ZW5kZXJXaWRnZXQ6OnBhaW50Q29udGVudHMoUGFpbnRJbgogICAgIC8vIHRvIHBhaW50IGl0c2Vs
Zi4gVGhhdCB3YXkgaXQgd2lsbCBjb21wb3NpdGUgcHJvcGVybHkgd2l0aCB6LWluZGV4ZWQgbGF5
ZXJzLgogICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gcGFpbnRJbmZvLnJlY3Q7CiAKKyAgICBQ
YWludEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1hbDsKKyAgICBpZiAo
aXM8RnJhbWVWaWV3PigqbV93aWRnZXQpICYmIChwYWludEluZm8ucGFpbnRCZWhhdmlvciAmIFBh
aW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZykpIHsKKyAgICAgICAgRnJhbWVWaWV3
JiBmcmFtZVZpZXcgPSBkb3duY2FzdDxGcmFtZVZpZXc+KCptX3dpZGdldCk7CisgICAgICAgIG9s
ZEJlaGF2aW9yID0gZnJhbWVWaWV3LnBhaW50QmVoYXZpb3IoKTsKKyAgICAgICAgZnJhbWVWaWV3
LnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IgfCBQYWludEJlaGF2aW9yQWxsb3dBc3luY0lt
YWdlRGVjb2RpbmcpOworICAgIH0KKwogICAgIEludFBvaW50IHdpZGdldExvY2F0aW9uID0gbV93
aWRnZXQtPmZyYW1lUmVjdCgpLmxvY2F0aW9uKCk7CiAgICAgSW50U2l6ZSB3aWRnZXRQYWludE9m
ZnNldCA9IGNvbnRlbnRQYWludE9mZnNldCAtIHdpZGdldExvY2F0aW9uOwogICAgIC8vIFdoZW4g
cGFpbnRpbmcgd2lkZ2V0cyBpbnRvIGNvbXBvc2l0aW5nIGxheWVycywgdHggYW5kIHR5IGFyZSBy
ZWxhdGl2ZSB0byB0aGUgZW5jbG9zaW5nIGNvbXBvc2l0aW5nIGxheWVyLApAQCAtMjUwLDYgKzI1
Nyw4IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKFBhaW50SW4KICAgICAgICAg
ICAgIEFTU0VSVCghcGFpbnRJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMtPmNvbnRhaW5zKHRoaXMp
IHx8IChwYWludEluZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cy0+Z2V0KHRoaXMpID09IG1fd2lkZ2V0
LT5mcmFtZVJlY3QoKSkpOwogICAgICAgICAgICAgcGFpbnRJbmZvLm92ZXJsYXBUZXN0UmVxdWVz
dHMtPnNldCh0aGlzLCBtX3dpZGdldC0+ZnJhbWVSZWN0KCkpOwogICAgICAgICB9CisgICAgICAg
IGlmIChwYWludEluZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1h
Z2VEZWNvZGluZykKKyAgICAgICAgICAgIGZyYW1lVmlldy5zZXRQYWludEJlaGF2aW9yKG9sZEJl
aGF2aW9yKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTM2NCkKKysr
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE3LTA3LTEyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+
CisKKyAgICAgICAgQXN5bmMgaW1hZ2UgZGVjb2RpbmcgZm9yIGxhcmdlIGltYWdlcyBzaG91bGQg
YmUgZGlzYWJsZWQgYnkgZGVmYXVsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc0NDMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgLS0gUmVwbGFjZSBldmVyeSByZWZlcmVuY2UgdG8gR3JhcGhpY3NMYXll
clBhaW50RmxhZ3M6OlNuYXBzaG90dGluZyBieQorICAgICAgICAgICBHcmFwaGljc0xheWVyUGFp
bnRGbGFnczo6Tm9uZSBhbmQgZXZlcnkgR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUKKyAg
ICAgICAgICAgYnkgQWxsb3dBc3luY0ltYWdlRGVjb2RpbmcuCisgICAgICAgIC0tIFJlcGxhY2Ug
YWRkaW5nIHRoZSBiaXQgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyBpbiBhbiBleGlzdGluZyBQ
YWludEJlaGF2b2lyIAorICAgICAgICAgICBieSByZXNldHRpbmcgdGhlIGJpdCBQYWludEJlaGF2
aW9yQWxsb3dBc3luY0ltYWdlRGVjb2RpbmcuCisKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90
ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6ZHJhd0luQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
aW1hZ2VGb3JSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9J
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisKIDIwMTctMDctMTEgIFRpbW90aHkg
SGF0Y2hlciAgPHRpbW90aHlAaGF0Y2hlci5uYW1lPgogCiAgICAgICAgIEZpeCBhIGJ1aWxkIGZh
aWx1cmUgaW4gV2ViRHJhZ0NsaWVudCB3aGVuICFQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JN
KEdUSykuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUubW0JKHJldmlzaW9uIDIxOTM2NCkKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMzNiw3ICszMzYsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250
CiAKICAgICBjb250ZXh0LnNjYWxlKG1fc2NhbGUpOwogICAgIAotICAgIGF1dG8gZmxhZ3MgPSBt
X2xheWVyLT5jb250ZXh0KCkgJiYgbV9sYXllci0+Y29udGV4dCgpLT5uZXh0Rmx1c2hJc0Zvcklt
bWVkaWF0ZVBhaW50KCkgPyBXZWJDb3JlOjpHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6U25hcHNo
b3R0aW5nIDogV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmU7CisgICAgYXV0
byBmbGFncyA9IG1fbGF5ZXItPmNvbnRleHQoKSAmJiBtX2xheWVyLT5jb250ZXh0KCktPm5leHRG
bHVzaElzRm9ySW1tZWRpYXRlUGFpbnQoKSA/IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludEZs
YWdzOjpOb25lIDogV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50RmxhZ3M6OkFsbG93QXN5bmNJ
bWFnZURlY29kaW5nOwogICAgIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtb3ZlZCB0
byBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUgZm9yIGJldHRlciBsYXllcmluZy4KICAgICBzd2l0Y2gg
KG1fbGF5ZXItPmxheWVyVHlwZSgpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAJKHJldmlzaW9uIDIxOTM2NCkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw3ICsxNjksNyBAQCBzdGF0aWMgUmVmUHRyPFdl
YkltYWdlPiBpbWFnZUZvclJlY3QoRnJhCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlv
bnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nKQogICAgICAgICBzaG91bGRQYWludFNlbGVj
dGlvbiA9IEZyYW1lVmlldzo6RXhjbHVkZVNlbGVjdGlvbjsKIAotICAgIFBhaW50QmVoYXZpb3Ig
cGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpIHwgKFBhaW50QmVoYXZp
b3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKTsK
KyAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IgPSAoZnJhbWVWaWV3LT5wYWludEJlaGF2
aW9yKCkgJiB+UGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nKSB8IFBhaW50QmVo
YXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hv
dE9wdGlvbnNGb3JjZUJsYWNrVGV4dCkKICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJl
aGF2aW9yRm9yY2VCbGFja1RleHQ7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNG
b3JjZVdoaXRlVGV4dCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGUuY3BwCShyZXZpc2lvbiAyMTkzNjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmQKICAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtcGFpbnRS
ZWN0LngoKSwgLXBhaW50UmVjdC55KCkpOwogCiAgICAgUGFpbnRCZWhhdmlvciBvbGRQYWludEJl
aGF2aW9yID0gZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCk7Ci0gICAgUGFpbnRCZWhhdmlvciBw
YWludEJlaGF2aW9yID0gb2xkUGFpbnRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3JTZWxlY3Rpb25P
bmx5IHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZp
b3JTbmFwc2hvdHRpbmc7CisgICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yID0gKG9sZFBh
aW50QmVoYXZpb3IgJiB+UGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nKSB8IFBh
aW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5IHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGlu
Z0xheWVyczsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0
KQogICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dDsK
ICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0ZvcmNlV2hpdGVUZXh0KQpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjE5NDE2KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMDctMTIgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBBc3luYyBp
bWFnZSBkZWNvZGluZyBmb3IgbGFyZ2UgaW1hZ2VzIHNob3VsZCBiZSBkaXNhYmxlZCBieSBkZWZh
dWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ0
MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtLSBS
ZW1vdmUgc2V0dGluZyB0aGUgYml0IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcgaW4gYW55IG5l
dyBQYWludEJlaGF2b2lyLgorICAgICAgICAtLSBSZXR1cm4gUGFpbnRCZWhhdmlvckFsbG93QXN5
bmNJbWFnZURlY29kaW5nIHdoZW4gdGhlIHJldHVybiB2YWx1ZSB3YXMgMC4KKyAgICAgICAgLS0g
UHJvcGFnYXRlIFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZyBhIGZyb20gcGFy
ZW50IHZpZXcgdG8gCisgICAgICAgICAgIGEgY2hpbGQgdmlldyBpbnN0ZWFkIG9mIHByb3BhZ2F0
aW5nIFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcuCisgICAgICAgIC0tIFJlcGxhY2UgYWRkaW5n
IHRoZSBiaXQgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyBpbiBhbiBleGlzdGluZyBQYWludEJl
aGF2b2lyIAorICAgICAgICAgICBieSByZXNldHRpbmcgdGhlIGJpdCBQYWludEJlaGF2aW9yQWxs
b3dBc3luY0ltYWdlRGVjb2RpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgor
ICAgICAgICAoLVtXZWJGcmFtZSBfcGFpbnRCZWhhdmlvckZvckRlc3RpbmF0aW9uQ29udGV4dDpd
KToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RyYXdSZWN0OmNvbnRlbnRzT25seTpdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoaW1hZ2VGcm9tUmVjdCk6CisK
IDIwMTctMDctMTIgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbmFtZSBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUgdG8gSW5pdGlhdGVkQnlNYWlu
RnJhbWUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24g
MjE5MzY0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNTk1LDIzICs1OTUsMjMgQEAgLSAoUGFpbnRCZWhhdmlvcilfcGFpbnRCZWhh
dmlvckZvckRlc3RpbgogICAgIC8vIC1jdXJyZW50Q29udGV4dERyYXdpbmdUb1NjcmVlbiByZXR1
cm5zIFlFUyBmb3IgYml0bWFwIGNvbnRleHRzLgogICAgIEJPT0wgaXNQcmludGluZyA9ICFbTlNH
cmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHREcmF3aW5nVG9TY3JlZW5dOwogICAgIGlmIChp
c1ByaW50aW5nKQotICAgICAgICByZXR1cm4gUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGlu
Z0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CisgICAgICAgIHJldHVybiBQYWlu
dEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOwogI2VuZGlmCiAKICAgICBpZiAoIVdL
Q0dDb250ZXh0SXNCaXRtYXBDb250ZXh0KGNvbnRleHQpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZzsKIAogICAg
IC8vIElmIHdlJ3JlIGRyYXdpbmcgaW50byBhIGJpdG1hcCwgd2UgbWlnaHQgYmUgc25hcHNob3R0
aW5nLCBvciBkcmF3aW5nIGludG8gYSBsYXllci1iYWNrZWQgdmlldy4KICAgICBpZiAoV2ViSFRN
TFZpZXcgKmh0bWxEb2N1bWVudFZpZXcgPSBbc2VsZiBfd2ViSFRNTERvY3VtZW50Vmlld10pIHsK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIGlmIChbW2h0bWxEb2N1bWVudFZpZXcgd2luZG93
XSBpc0luU25hcHNob3R0aW5nUGFpbnRdKQotICAgICAgICAgICAgcmV0dXJuIFBhaW50QmVoYXZp
b3JTbmFwc2hvdHRpbmc7CisgICAgICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogICAgICAgICBp
ZiAoW2h0bWxEb2N1bWVudFZpZXcgX3dlYl9pc0RyYXdpbmdJbnRvTGF5ZXJdKQotICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJ
bWFnZURlY29kaW5nOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gUGFpbnRCZWhhdmlvckZsYXR0
ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CisgICAgcmV0
dXJuIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CiB9CiAKIC0gKHZvaWQp
X2RyYXdSZWN0OihOU1JlY3QpcmVjdCBjb250ZW50c09ubHk6KEJPT0wpY29udGVudHNPbmx5CkBA
IC02NDUsOCArNjQ1LDggQEAgLSAodm9pZClfZHJhd1JlY3Q6KE5TUmVjdClyZWN0IGNvbnRlbnRz
TwogICAgICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVo
YXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpCiAgICAgICAgICAgICAgICAgcGFpbnRCZWhh
dmlvciB8PSBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOwogICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBh
aW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8
PSBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOworICAgICAgICAgICAgaWYgKHBhcmVudFZpZXct
PnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZykK
KyAgICAgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JBbGxvd0FzeW5j
SW1hZ2VEZWNvZGluZzsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBwYWludEJlaGF2
aW9yIHw9IFtzZWxmIF9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OmN0eF07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHJldmlzaW9uIDIx
OTM2NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTczMTMsNyArNzMxMyw3IEBAIHN0YXRpYyBDR0ltYWdlUmVmIGltYWdlRnJv
bVJlY3QoRnJhbWUqIGYKICAgICBXZWJIVE1MVmlldyAqdmlldyA9IChXZWJIVE1MVmlldyAqKWRv
Y3VtZW50VmlldzsKICAgICAKICAgICBQYWludEJlaGF2aW9yIG9sZFBhaW50QmVoYXZpb3IgPSBm
cmFtZS0+dmlldygpLT5wYWludEJlaGF2aW9yKCk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFp
bnRCZWhhdmlvcihvbGRQYWludEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3Np
dGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpOworICAgIGZyYW1lLT52aWV3
KCktPnNldFBhaW50QmVoYXZpb3IoKG9sZFBhaW50QmVoYXZpb3IgJiB+UGFpbnRCZWhhdmlvckFs
bG93QXN5bmNJbWFnZURlY29kaW5nKSB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdM
YXllcnMpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315274</attachid>
            <date>2017-07-12 12:41:55 -0700</date>
            <delta_ts>2017-07-12 13:10:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174432-20170712124154.patch</filename>
            <type>text/plain</type>
            <size>26180</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTM2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE3LTA3LTEyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXN5bmMgaW1h
Z2UgZGVjb2RpbmcgZm9yIGxhcmdlIGltYWdlcyBzaG91bGQgYmUgZGlzYWJsZWQgYnkgZGVmYXVs
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NDMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLS0gUmVu
YW1lIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpTbmFwc2hvdHRpbmcgdG8gQWxsb3dBc3luY0lt
YWdlRGVjb2RpbmcuCisgICAgICAgIC0tIFJlcGxhY2UgZXZlcnkgcmVmZXJlbmNlIHRvIEdyYXBo
aWNzTGF5ZXJQYWludEZsYWdzOjpTbmFwc2hvdHRpbmcgYnkKKyAgICAgICAgICAgR3JhcGhpY3NM
YXllclBhaW50RmxhZ3M6Ok5vbmUgYW5kIGV2ZXJ5IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpO
b25lCisgICAgICAgICAgIGJ5IEFsbG93QXN5bmNJbWFnZURlY29kaW5nLgorICAgICAgICAtLSBS
ZW5hbWUgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyB0byBQYWludEJlaGF2aW9yQWxsb3dBc3lu
Y0ltYWdlRGVjb2RpbmcuCisgICAgICAgIC0tIFByb3BhZ2F0ZSBQYWludEJlaGF2aW9yQWxsb3dB
c3luY0ltYWdlRGVjb2RpbmcgYSBmcm9tIHBhcmVudCB2aWV3IHRvIAorICAgICAgICAgICBhIGNo
aWxkIHZpZXcgaW5zdGVhZCBvZiBwcm9wYWdhdGluZyBQYWludEJlaGF2aW9yU25hcHNob3R0aW5n
LgorICAgICAgICAtLSBSZW1vdmUgc2V0dGluZyB0aGUgYml0IFBhaW50QmVoYXZpb3JTbmFwc2hv
dHRpbmcgaW4gYW55IG5ldyBQYWludEJlaGF2b2lyLgorICAgICAgICAtLSBSZXBsYWNlIGFkZGlu
ZyB0aGUgYml0IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcgaW4gYW4gZXhpc3RpbmcgUGFpbnRC
ZWhhdm9pciAKKyAgICAgICAgICAgYnkgcmVzZXR0aW5nIHRoZSBiaXQgUGFpbnRCZWhhdmlvckFs
bG93QXN5bmNJbWFnZURlY29kaW5nLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNr
Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSk6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
Ojp3aWxsUGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50
Q29udGVudHNGb3JTbmFwc2hvdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGll
bnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW06CisgICAg
ICAgICgtW1dlYkxheWVyIGRyYXdJbkNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYlNpbXBsZUxh
eWVyIGRyYXdJbkNvbnRleHQ6XSk6CisgICAgICAgICogcmVuZGVyaW5nL1BhaW50UGhhc2UuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OmRlY29kaW5nTW9kZUZvckltYWdlRHJhdyk6IFRoaXMgZnVuY3Rpb24g
d2lsbCBiZQorICAgICAgICB1c2VkIGJ5IFJlbmRlckltYWdlIGFuZCBSZW5kZXJCb3hNb2RlbE9i
amVjdCB0byBkZWNpZGUgdGhlIGNvcnJlY3QKKyAgICAgICAgZGVjb2RpbmdNb2RlIGZvciBkcmF3
aW5nIGFuIGltYWdlLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21l
bnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJX
aWRnZXQ6OnBhaW50Q29udGVudHMpOiBXZSBuZWVkIHRvIHByb3BhZ2F0ZSB0aGUgCisgICAgICAg
IFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZyBmcm9tIFJlbmRlcldpZGdldCB0
byB0aGUgRnJhbWVWaWV3LgorICAgICAgICBXZSBkaWQgbm90IG5lZWQgdG8gZG8gdGhhdCBmb3Ig
UGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyBiZWNhdXNlIAorICAgICAgICBGcmFtZVZpZXcgd2Fz
IHNldHRpbmcgaXQgaWYgKGRvY3VtZW50LT5wcmludGluZygpKSB0byBpdHMgbV9wYWludEJlaGF2
aW9yCisgICAgICAgIGluIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoKS4KKwogMjAxNy0w
Ny0xMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04ocjIxOTA0NSk6IFRoZSA8Ym9keT4gZWxlbWVudCBkb2VzIG5vdCBnZXQg
cmVwYWludGVkIHdoZW4gaXRzIGJhY2tncm91bmQgaW1hZ2UgZmluaXNoZXMgZGVjb2RpbmcKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAJKHJldmlzaW9uIDIxOTM2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwOSw3ICsxNDA5
LDcgQEAgUmVmUHRyPEltYWdlPiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YQogICAgIGlmICgh
YnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGxheWVyLT5wYWludChidWZm
ZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0LCBMYXlvdXRTaXplKCksIFBhaW50QmVoYXZpb3JG
bGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nLCBudWxs
cHRyLCBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdBbGxQaGFzZXMp
OworICAgIGxheWVyLT5wYWludChidWZmZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0LCBMYXlv
dXRTaXplKCksIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMsIG51bGxwdHIs
IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0FsbFBoYXNlcyk7CiAK
ICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShidWZmZXIpKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDIxOTM2NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM4
OCwxMiArNDM4OCwxMiBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3JhcGhp
CiAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9y
RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQogICAgICAgICAgICAgbV9wYWludEJlaGF2aW9yIHw9
IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CiAgICAgICAgICAgICAKLSAg
ICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JTbmFw
c2hvdHRpbmcpCi0gICAgICAgICAgICBtX3BhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclNu
YXBzaG90dGluZzsKKyAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBh
aW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZykKKyAgICAgICAgICAgIG1fcGFpbnRC
ZWhhdmlvciB8PSBQYWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2Rpbmc7CiAgICAgfQog
CiAgICAgaWYgKGRvY3VtZW50LT5wcmludGluZygpKQotICAgICAgICBtX3BhaW50QmVoYXZpb3Ig
fD0gKFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9y
U25hcHNob3R0aW5nKTsKKyAgICAgICAgbV9wYWludEJlaGF2aW9yID0gKG1fcGFpbnRCZWhhdmlv
ciAmIH5QYWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2RpbmcpIHwgUGFpbnRCZWhhdmlv
ckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsKIAogICAgIHBhaW50aW5nU3RhdGUuaXNGbGF0dGVu
aW5nUGFpbnRPZlJvb3RGcmFtZSA9IChtX3BhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRmxh
dHRlbkNvbXBvc2l0aW5nTGF5ZXJzKSAmJiAhZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKICAgICBp
ZiAocGFpbnRpbmdTdGF0ZS5pc0ZsYXR0ZW5pbmdQYWludE9mUm9vdEZyYW1lKQpAQCAtNDUxMyw3
ICs0NTEzLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHNGb3JTbmFwc2hvdAogCiAg
ICAgLy8gQ2FjaGUgcGFpbnQgYmVoYXZpb3IgYW5kIHNldCBhIG5ldyBiZWhhdmlvciBhcHByb3By
aWF0ZSBmb3Igc25hcHNob3RzLgogICAgIFBhaW50QmVoYXZpb3Igb2xkQmVoYXZpb3IgPSBwYWlu
dEJlaGF2aW9yKCk7Ci0gICAgc2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvciB8IChQYWludEJl
aGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGlu
ZykpOworICAgIHNldFBhaW50QmVoYXZpb3IoKG9sZEJlaGF2aW9yICYgflBhaW50QmVoYXZpb3JB
bGxvd0FzeW5jSW1hZ2VEZWNvZGluZykgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5n
TGF5ZXJzKTsKIAogICAgIC8vIElmIHRoZSBzbmFwc2hvdCBzaG91bGQgZXhjbHVkZSBzZWxlY3Rp
b24sIHRoZW4gd2UnbGwgY2xlYXIgdGhlIGN1cnJlbnQgc2VsZWN0aW9uCiAgICAgLy8gaW4gdGhl
IHJlbmRlciB0cmVlIG9ubHkuIFRoaXMgd2lsbCBhbGxvdyB1cyB0byByZXN0b3JlIHRoZSBzZWxl
Y3Rpb24gZnJvbSB0aGUgRE9NCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCShyZXZpc2lvbiAyMTkzNjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2Niw3ICs0NjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHVzZXNDb250ZW50c0xh
eWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIENhbGxiYWNrIGZyb20gdGhl
IHVuZGVybHlpbmcgZ3JhcGhpY3Mgc3lzdGVtIHRvIGRyYXcgbGF5ZXIgY29udGVudHMuCi0gICAg
dm9pZCBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzID0gR3JhcGhpY3NMYXllclBh
aW50RmxhZ3M6Ok5vbmUpOworICAgIHZvaWQgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBjbGlwLCBHcmFwaGljc0xheWVyUGFpbnRG
bGFncyA9IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZyk7
CiAKICAgICAvLyBGb3IgaG9zdGluZyB0aGlzIEdyYXBoaWNzTGF5ZXIgaW4gYSBuYXRpdmUgbGF5
ZXIgaGllcmFyY2h5LgogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgJKHJldmlzaW9uIDIxOTM2NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBlbnVtIExheWVyVHJlZUFzVGV4dEJl
aGF2aW9yRmxhZ3MgewogfTsKIHR5cGVkZWYgdW5zaWduZWQgTGF5ZXJUcmVlQXNUZXh0QmVoYXZp
b3I7CiAKLWVudW0gY2xhc3MgR3JhcGhpY3NMYXllclBhaW50RmxhZ3MgeyBOb25lLCBTbmFwc2hv
dHRpbmcgfTsKK2VudW0gY2xhc3MgR3JhcGhpY3NMYXllclBhaW50RmxhZ3MgeyBOb25lLCBBbGxv
d0FzeW5jSW1hZ2VEZWNvZGluZyB9OwogICAgIAogY2xhc3MgR3JhcGhpY3NMYXllckNsaWVudCB7
CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2Vi
TGF5ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1dlYkxheWVyLm1tCShyZXZpc2lvbiAyMTkzNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3
LDcgQEAgLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udAogICAgIFBsYXRm
b3JtQ0FMYXllciogbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihzZWxm
KTsKICAgICBpZiAobGF5ZXIpIHsKICAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpSZXBhaW50UmVj
dExpc3QgcmVjdHNUb1BhaW50ID0gUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50
KGNvbnRleHQsIGxheWVyKTsKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250
ZW50cyhjb250ZXh0LCBsYXllciwgcmVjdHNUb1BhaW50LCBzZWxmLmlzUmVuZGVyaW5nSW5Db250
ZXh0ID8gR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6OlNuYXBzaG90dGluZyA6IEdyYXBoaWNzTGF5
ZXJQYWludEZsYWdzOjpOb25lKTsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJD
b250ZW50cyhjb250ZXh0LCBsYXllciwgcmVjdHNUb1BhaW50LCBzZWxmLmlzUmVuZGVyaW5nSW5D
b250ZXh0ID8gR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUgOiBHcmFwaGljc0xheWVyUGFp
bnRGbGFnczo6QWxsb3dBc3luY0ltYWdlRGVjb2RpbmcpOwogICAgIH0KIH0KIApAQCAtMTM3LDcg
KzEzNyw3IEBAIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnQKICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNldElzQWNjZWxlcmF0ZWRDb250ZXh0KGxheWVyLT5hY2NlbGVy
YXRlc0RyYXdpbmcoKSk7CiAKICAgICAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHMgPSBDR0NvbnRl
eHRHZXRDbGlwQm91bmRpbmdCb3goY29udGV4dCk7Ci0gICAgICAgIGxheWVyLT5vd25lcigpLT5w
bGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKGxheWVyLCBncmFwaGljc0NvbnRleHQsIGNsaXBC
b3VuZHMsIHNlbGYuaXNSZW5kZXJpbmdJbkNvbnRleHQgPyBHcmFwaGljc0xheWVyUGFpbnRGbGFn
czo6U25hcHNob3R0aW5nIDogR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUpOworICAgICAg
ICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhsYXllciwgZ3Jh
cGhpY3NDb250ZXh0LCBjbGlwQm91bmRzLCBzZWxmLmlzUmVuZGVyaW5nSW5Db250ZXh0ID8gR3Jh
cGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUgOiBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6QWxs
b3dBc3luY0ltYWdlRGVjb2RpbmcpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1BhaW50UGhhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUGFpbnRQaGFzZS5oCShyZXZpc2lvbiAyMTkzNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUGFpbnRQaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIGVu
dW0gUGFpbnRCZWhhdmlvckZsYWdzIHsKICAgICBQYWludEJlaGF2aW9yU2VsZWN0aW9uQW5kQmFj
a2dyb3VuZHNPbmx5ID0gMSA8PCA3LAogICAgIFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0aW9u
ICAgICAgICAgICAgPSAxIDw8IDgsCiAgICAgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGlu
Z0xheWVycyAgICA9IDEgPDwgOSwgLy8gUGFpbnQgZG9lc24ndCBzdG9wIGF0IGNvbXBvc2l0aW5n
IGxheWVyIGJvdW5kYXJpZXMuCi0gICAgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyAgICAgICAg
ICAgICAgICA9IDEgPDwgMTAsIC8vIEluZGljYXRlcyBzbmFwc2hvdHRpbmcsIGUuZy4gZm9yY2Ug
c3luY2hyb25vdXMgaW1hZ2UgZGVjb2RpbmcuCisgICAgUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJ
bWFnZURlY29kaW5nICAgICA9IDEgPDwgMTAsCiB9OwogCiB0eXBlZGVmIHVuc2lnbmVkIFBhaW50
QmVoYXZpb3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDIxOTM2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4Myw4
ICs4ODMsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllCiAgICAg
ICAgICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbVNldHRp
bmdzKHNldHRpbmdzKCkpOwogCiAgICAgICAgICAgICBhdXRvIGludGVycG9sYXRpb24gPSBjaG9v
c2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsICZiZ0xheWVyLCBnZW9tZXRy
eS50aWxlU2l6ZSgpKTsKLSAgICAgICAgICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gKHBhaW50SW5m
by5wYWludEJlaGF2aW9yICYgKFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMg
fCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKSkgPyBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3Vz
IDogRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7Ci0gICAgICAgICAgICBhdXRvIGRyYXdSZXN1
bHQgPSBjb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwg
dG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6
ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRl
T3AsIGJnTGF5ZXIuYmxlbmRNb2RlKCksIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKCksIGludGVycG9sYXRpb24pKTsKKyAgICAgICAgICAgIGF1dG8gZHJhd1Jlc3Vs
dCA9IGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0
b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXpl
KCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVP
cCwgYmdMYXllci5ibGVuZE1vZGUoKSwgZGVjb2RpbmdNb2RlRm9ySW1hZ2VEcmF3KHBhaW50SW5m
byksIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7CiAgICAg
ICAgICAgICBpZiAoZHJhd1Jlc3VsdCA9PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNv
ZGluZykgewogICAgICAgICAgICAgICAgIEFTU0VSVChiZ0ltYWdlLT5pc0NhY2hlZEltYWdlKCkp
OwogICAgICAgICAgICAgICAgIGJnSW1hZ2UtPmNhY2hlZEltYWdlKCktPmFkZFBlbmRpbmdJbWFn
ZURyYXdpbmdDbGllbnQoKnRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjE5MzY0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAxLDYgKzIyMDEs
MTUgQEAgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIFJlbmRlckVsZW1lbgogICAgIHJldHVy
biBzZXR0aW5ncygpLnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgJiYgaXM8SFRNTElt
YWdlRWxlbWVudD4oZWxlbWVudCgpKSA/IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIDogRG9Ob3RS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbjsKIH0KIAorRGVjb2RpbmdNb2RlIFJlbmRlckVsZW1lbnQ6
OmRlY29kaW5nTW9kZUZvckltYWdlRHJhdyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbykgY29u
c3QKK3sKKyAgICBpZiAoZG9jdW1lbnQoKS5pc0ltYWdlRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0
dXJuIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXM7CisgICAgaWYgKHBhaW50SW5mby5wYWludEJl
aGF2aW9yICYgUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nKQorICAgICAgICBy
ZXR1cm4gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7CisgICAgcmV0dXJuIERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXM7Cit9CisKIHZvaWQgUmVuZGVyRWxlbWVudDo6YWRqdXN0Rmxvd1RocmVh
ZFN0YXRlT25Db250YWluaW5nQmxvY2tDaGFuZ2VJZk5lZWRlZCgpCiB7CiAgICAgaWYgKGZsb3dU
aHJlYWRTdGF0ZSgpID09IE5vdEluc2lkZUZsb3dUaHJlYWQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgJKHJldmlzaW9uIDIxOTM2NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMCw2
ICsyMjAsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9ja0ZvckFi
c29sdXRlUG9zaXRpb24oKSBjb25zdDsKIAogICAgIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51
bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0OworICAgIERlY29kaW5nTW9k
ZSBkZWNvZGluZ01vZGVGb3JJbWFnZURyYXcoY29uc3QgUGFpbnRJbmZvJikgY29uc3Q7CiAKICAg
ICB2b2lkIHJlbW92ZUZyb21SZW5kZXJGbG93VGhyZWFkKCk7CiAgICAgdmlydHVhbCB2b2lkIHJl
c2V0Rmxvd1RocmVhZENvbnRhaW5pbmdCbG9ja0FuZENoaWxkSW5mb0luY2x1ZGluZ0Rlc2NlbmRh
bnRzKFJlbmRlckZsb3dUaHJlYWQqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcAkocmV2aXNpb24gMjE5MzY0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg1LDggKzU4NSw3IEBAIElt
YWdlRHJhd1Jlc3VsdCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmUKIAogICAgIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uKCksIHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKIAotICAgIGF1dG8g
ZGVjb2RpbmdNb2RlID0gKHBhaW50SW5mby5wYWludEJlaGF2aW9yICYgKFBhaW50QmVoYXZpb3JG
bGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKSkgPyBE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzIDogRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7Ci0g
ICAgYXV0byBkcmF3UmVzdWx0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltZywg
cmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZU5v
cm1hbCwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9u
KSk7CisgICAgYXV0byBkcmF3UmVzdWx0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2Uo
KmltZywgcmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZU5vcm1hbCwgZGVjb2RpbmdNb2RlRm9ySW1hZ2VEcmF3KHBhaW50SW5mbyksIG9yaWVudGF0
aW9uRGVzY3JpcHRpb24sIGludGVycG9sYXRpb24pKTsKICAgICBpZiAoZHJhd1Jlc3VsdCA9PSBJ
bWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZykKICAgICAgICAgaW1hZ2VSZXNvdXJj
ZSgpLmNhY2hlZEltYWdlKCktPmFkZFBlbmRpbmdJbWFnZURyYXdpbmdDbGllbnQoKnRoaXMpOwog
ICAgIHJldHVybiBkcmF3UmVzdWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAyMTkzNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Mzg0LDggKzQzODQsOCBAQCB2
b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhCiAgICAgICAgIGlmIChwYWlu
dGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdM
YXllcnMpCiAgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JGbGF0dGVu
Q29tcG9zaXRpbmdMYXllcnM7CiAgICAgICAgICAgICAKLSAgICAgICAgaWYgKHBhaW50aW5nSW5m
by5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZykKLSAgICAgICAgICAg
IHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsKKyAgICAgICAgaWYg
KHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFn
ZURlY29kaW5nKQorICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yQWxs
b3dBc3luY0ltYWdlRGVjb2Rpbmc7CiAKICAgICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJl
aGF2aW9yICYgUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24pCiAgICAgICAgICAgICBwYWlu
dEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0aW9uOwpAQCAtNDQ2Niw4ICs0
NDY2LDggQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYQogICAgICAg
ICBpZiAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzKQogICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2
aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOwogCi0gICAgICAgIGlmIChwYWludGluZ0luZm8u
cGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBw
YWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CisgICAgICAgIGlmIChw
YWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VE
ZWNvZGluZykKKyAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckFsbG93
QXN5bmNJbWFnZURlY29kaW5nOwogCiAgICAgICAgIGlmIChzaG91bGRQYWludE1hc2socGFpbnRp
bmdJbmZvLnBhaW50QmVoYXZpb3IsIGxvY2FsUGFpbnRGbGFncykpIHsKICAgICAgICAgICAgIC8v
IFBhaW50IHRoZSBtYXNrIGZvciB0aGUgZnJhZ21lbnRzLgpAQCAtNDc5OCw4ICs0Nzk4LDggQEAg
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZwogICAgIGlmIChsb2NhbFBh
aW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24p
CiAgICAgICAgIGxvY2FsUGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yRXhjbHVkZVNlbGVj
dGlvbjsKIAotICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRC
ZWhhdmlvclNuYXBzaG90dGluZykKLSAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yIHw9IFBhaW50
QmVoYXZpb3JTbmFwc2hvdHRpbmc7CisgICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50QmVo
YXZpb3IgJiBQYWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2RpbmcpCisgICAgICAgIGxv
Y2FsUGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2Rpbmc7
CiAKICAgICAvLyBPcHRpbWl6ZSBjbGlwcGluZyBmb3IgdGhlIHNpbmdsZSBmcmFnbWVudCBjYXNl
LgogICAgIGJvb2wgc2hvdWxkQ2xpcCA9IGxvY2FsUGFpbnRpbmdJbmZvLmNsaXBUb0RpcnR5UmVj
dCAmJiBsYXllckZyYWdtZW50cy5zaXplKCkgPT0gMSAmJiBsYXllckZyYWdtZW50c1swXS5zaG91
bGRQYWludENvbnRlbnQgJiYgIWxheWVyRnJhZ21lbnRzWzBdLmZvcmVncm91bmRSZWN0LmlzRW1w
dHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCShyZXZpc2lvbiAyMTkzNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU4NSw4ICsyNTg1LDgg
QEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMoYwogCiAgICAgICAgIC8v
IFdlIGhhdmUgdG8gdXNlIHRoZSBzYW1lIHJvb3QgYXMgZm9yIGhpdCB0ZXN0aW5nLCBiZWNhdXNl
IGJvdGggbWV0aG9kcyBjYW4gY29tcHV0ZSBhbmQgY2FjaGUgY2xpcFJlY3RzLgogICAgICAgICBQ
YWludEJlaGF2aW9yIGJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1hbDsKLSAgICAgICAgaWYg
KGZsYWdzID09IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpTbmFwc2hvdHRpbmcpCi0gICAgICAg
ICAgICBiZWhhdmlvciB8PSBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOworICAgICAgICBpZiAo
ZmxhZ3MgPT0gR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6OkFsbG93QXN5bmNJbWFnZURlY29kaW5n
KQorICAgICAgICAgICAgYmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURl
Y29kaW5nOwogCiAgICAgICAgIHBhaW50SW50b0xheWVyKGdyYXBoaWNzTGF5ZXIsIGNvbnRleHQs
IGRpcnR5UmVjdCwgYmVoYXZpb3IsIHBhaW50aW5nUGhhc2UpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAkocmV2aXNpb24gMjE5MzY0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIyOSw2ICsyMjksMTMgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50Q29udGVudHMoUGFpbnRJ
bgogICAgIC8vIHRvIHBhaW50IGl0c2VsZi4gVGhhdCB3YXkgaXQgd2lsbCBjb21wb3NpdGUgcHJv
cGVybHkgd2l0aCB6LWluZGV4ZWQgbGF5ZXJzLgogICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0g
cGFpbnRJbmZvLnJlY3Q7CiAKKyAgICBQYWludEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gUGFpbnRC
ZWhhdmlvck5vcm1hbDsKKyAgICBpZiAoaXM8RnJhbWVWaWV3PigqbV93aWRnZXQpICYmIChwYWlu
dEluZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGlu
ZykpIHsKKyAgICAgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSBkb3duY2FzdDxGcmFtZVZpZXc+
KCptX3dpZGdldCk7CisgICAgICAgIG9sZEJlaGF2aW9yID0gZnJhbWVWaWV3LnBhaW50QmVoYXZp
b3IoKTsKKyAgICAgICAgZnJhbWVWaWV3LnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IgfCBQ
YWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2RpbmcpOworICAgIH0KKwogICAgIEludFBv
aW50IHdpZGdldExvY2F0aW9uID0gbV93aWRnZXQtPmZyYW1lUmVjdCgpLmxvY2F0aW9uKCk7CiAg
ICAgSW50U2l6ZSB3aWRnZXRQYWludE9mZnNldCA9IGNvbnRlbnRQYWludE9mZnNldCAtIHdpZGdl
dExvY2F0aW9uOwogICAgIC8vIFdoZW4gcGFpbnRpbmcgd2lkZ2V0cyBpbnRvIGNvbXBvc2l0aW5n
IGxheWVycywgdHggYW5kIHR5IGFyZSByZWxhdGl2ZSB0byB0aGUgZW5jbG9zaW5nIGNvbXBvc2l0
aW5nIGxheWVyLApAQCAtMjUwLDYgKzI1Nyw4IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludENv
bnRlbnRzKFBhaW50SW4KICAgICAgICAgICAgIEFTU0VSVCghcGFpbnRJbmZvLm92ZXJsYXBUZXN0
UmVxdWVzdHMtPmNvbnRhaW5zKHRoaXMpIHx8IChwYWludEluZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0
cy0+Z2V0KHRoaXMpID09IG1fd2lkZ2V0LT5mcmFtZVJlY3QoKSkpOwogICAgICAgICAgICAgcGFp
bnRJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMtPnNldCh0aGlzLCBtX3dpZGdldC0+ZnJhbWVSZWN0
KCkpOwogICAgICAgICB9CisgICAgICAgIGlmIChwYWludEluZm8ucGFpbnRCZWhhdmlvciAmIFBh
aW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZykKKyAgICAgICAgICAgIGZyYW1lVmll
dy5zZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2aW9yKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIxOTM2NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE3LTA3LTEyICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXN5bmMgaW1hZ2UgZGVjb2Rpbmcg
Zm9yIGxhcmdlIGltYWdlcyBzaG91bGQgYmUgZGlzYWJsZWQgYnkgZGVmYXVsdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NDMyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLS0gUmVwbGFjZSBldmVyeSBy
ZWZlcmVuY2UgdG8gR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6OlNuYXBzaG90dGluZyBieQorICAg
ICAgICAgICBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6Tm9uZSBhbmQgZXZlcnkgR3JhcGhpY3NM
YXllclBhaW50RmxhZ3M6Ok5vbmUKKyAgICAgICAgICAgYnkgQWxsb3dBc3luY0ltYWdlRGVjb2Rp
bmcuCisgICAgICAgIC0tIFJlcGxhY2UgYWRkaW5nIHRoZSBiaXQgUGFpbnRCZWhhdmlvclNuYXBz
aG90dGluZyBpbiBhbiBleGlzdGluZyBQYWludEJlaGF2b2lyIAorICAgICAgICAgICBieSByZXNl
dHRpbmcgdGhlIGJpdCBQYWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2RpbmcuCisKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW1hZ2VGb3JSZWN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6
CisKIDIwMTctMDctMTEgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAaGF0Y2hlci5uYW1lPgog
CiAgICAgICAgIEZpeCBhIGJ1aWxkIGZhaWx1cmUgaW4gV2ViRHJhZ0NsaWVudCB3aGVuICFQTEFU
Rk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKEdUSykuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0JKHJldmlzaW9uIDIx
OTM2NCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjpkcmF3SW5Db250CiAKICAgICBjb250ZXh0LnNjYWxlKG1fc2NhbGUpOwog
ICAgIAotICAgIGF1dG8gZmxhZ3MgPSBtX2xheWVyLT5jb250ZXh0KCkgJiYgbV9sYXllci0+Y29u
dGV4dCgpLT5uZXh0Rmx1c2hJc0ZvckltbWVkaWF0ZVBhaW50KCkgPyBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyUGFpbnRGbGFnczo6U25hcHNob3R0aW5nIDogV2ViQ29yZTo6R3JhcGhpY3NMYXllclBh
aW50RmxhZ3M6Ok5vbmU7CisgICAgYXV0byBmbGFncyA9IG1fbGF5ZXItPmNvbnRleHQoKSAmJiBt
X2xheWVyLT5jb250ZXh0KCktPm5leHRGbHVzaElzRm9ySW1tZWRpYXRlUGFpbnQoKSA/IFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpOb25lIDogV2ViQ29yZTo6R3JhcGhpY3NMYXll
clBhaW50RmxhZ3M6OkFsbG93QXN5bmNJbWFnZURlY29kaW5nOwogICAgIAogICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSBtb3ZlZCB0byBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUgZm9yIGJldHRl
ciBsYXllcmluZy4KICAgICBzd2l0Y2ggKG1fbGF5ZXItPmxheWVyVHlwZSgpKSB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAJKHJldmlzaW9u
IDIxOTM2NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9N
L0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw3ICsx
NjksNyBAQCBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBpbWFnZUZvclJlY3QoRnJhCiAgICAgaWYg
KG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nKQog
ICAgICAgICBzaG91bGRQYWludFNlbGVjdGlvbiA9IEZyYW1lVmlldzo6RXhjbHVkZVNlbGVjdGlv
bjsKIAotICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRC
ZWhhdmlvcigpIHwgKFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWlu
dEJlaGF2aW9yU25hcHNob3R0aW5nKTsKKyAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3Ig
PSAoZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCkgJiB+UGFpbnRCZWhhdmlvckFsbG93QXN5bmNJ
bWFnZURlY29kaW5nKSB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CiAg
ICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCkKICAgICAgICAg
cGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yRm9yY2VCbGFja1RleHQ7CiAgICAgaWYgKG9w
dGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNGb3JjZVdoaXRlVGV4dCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCShyZXZpc2lvbiAyMTkzNjQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBA
IFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmQKICAgICBncmFwaGljc0Nv
bnRleHQtPnRyYW5zbGF0ZSgtcGFpbnRSZWN0LngoKSwgLXBhaW50UmVjdC55KCkpOwogCiAgICAg
UGFpbnRCZWhhdmlvciBvbGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWludEJlaGF2aW9y
KCk7Ci0gICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yID0gb2xkUGFpbnRCZWhhdmlvciB8
IFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5IHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3Np
dGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CisgICAgUGFpbnRCZWhhdmlv
ciBwYWludEJlaGF2aW9yID0gKG9sZFBhaW50QmVoYXZpb3IgJiB+UGFpbnRCZWhhdmlvckFsbG93
QXN5bmNJbWFnZURlY29kaW5nKSB8IFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5IHwgUGFpbnRC
ZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBz
aG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KQogICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50
QmVoYXZpb3JGb3JjZUJsYWNrVGV4dDsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9u
c0ZvcmNlV2hpdGVUZXh0KQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjE5NDE2KQor
KysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjMgQEAKKzIwMTctMDctMTIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxl
LmNvbT4KKworICAgICAgICBBc3luYyBpbWFnZSBkZWNvZGluZyBmb3IgbGFyZ2UgaW1hZ2VzIHNo
b3VsZCBiZSBkaXNhYmxlZCBieSBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ0MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtLSBSZW1vdmUgc2V0dGluZyB0aGUgYml0IFBhaW50QmVoYXZp
b3JTbmFwc2hvdHRpbmcgaW4gYW55IG5ldyBQYWludEJlaGF2b2lyLgorICAgICAgICAtLSBSZXR1
cm4gUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nIHdoZW4gdGhlIHJldHVybiB2
YWx1ZSB3YXMgMC4KKyAgICAgICAgLS0gUHJvcGFnYXRlIFBhaW50QmVoYXZpb3JBbGxvd0FzeW5j
SW1hZ2VEZWNvZGluZyBhIGZyb20gcGFyZW50IHZpZXcgdG8gCisgICAgICAgICAgIGEgY2hpbGQg
dmlldyBpbnN0ZWFkIG9mIHByb3BhZ2F0aW5nIFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcuCisg
ICAgICAgIC0tIFJlcGxhY2UgYWRkaW5nIHRoZSBiaXQgUGFpbnRCZWhhdmlvclNuYXBzaG90dGlu
ZyBpbiBhbiBleGlzdGluZyBQYWludEJlaGF2b2lyIAorICAgICAgICAgICBieSByZXNldHRpbmcg
dGhlIGJpdCBQYWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2RpbmcuCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfcGFpbnRCZWhhdmlv
ckZvckRlc3RpbmF0aW9uQ29udGV4dDpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RyYXdSZWN0
OmNvbnRlbnRzT25seTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAg
ICAgICAoaW1hZ2VGcm9tUmVjdCk6CisKIDIwMTctMDctMTIgIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWlu
RnJhbWUgdG8gSW5pdGlhdGVkQnlNYWluRnJhbWUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQkocmV2aXNpb24gMjE5MzY0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTk1LDIzICs1OTUsMjMgQEAgLSAo
UGFpbnRCZWhhdmlvcilfcGFpbnRCZWhhdmlvckZvckRlc3RpbgogICAgIC8vIC1jdXJyZW50Q29u
dGV4dERyYXdpbmdUb1NjcmVlbiByZXR1cm5zIFlFUyBmb3IgYml0bWFwIGNvbnRleHRzLgogICAg
IEJPT0wgaXNQcmludGluZyA9ICFbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHREcmF3
aW5nVG9TY3JlZW5dOwogICAgIGlmIChpc1ByaW50aW5nKQotICAgICAgICByZXR1cm4gUGFpbnRC
ZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRp
bmc7CisgICAgICAgIHJldHVybiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJz
OwogI2VuZGlmCiAKICAgICBpZiAoIVdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0KGNvbnRleHQp
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JBbGxvd0Fz
eW5jSW1hZ2VEZWNvZGluZzsKIAogICAgIC8vIElmIHdlJ3JlIGRyYXdpbmcgaW50byBhIGJpdG1h
cCwgd2UgbWlnaHQgYmUgc25hcHNob3R0aW5nLCBvciBkcmF3aW5nIGludG8gYSBsYXllci1iYWNr
ZWQgdmlldy4KICAgICBpZiAoV2ViSFRNTFZpZXcgKmh0bWxEb2N1bWVudFZpZXcgPSBbc2VsZiBf
d2ViSFRNTERvY3VtZW50Vmlld10pIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIGlmIChb
W2h0bWxEb2N1bWVudFZpZXcgd2luZG93XSBpc0luU25hcHNob3R0aW5nUGFpbnRdKQotICAgICAg
ICAgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CisgICAgICAgICAgICByZXR1
cm4gMDsKICNlbmRpZgogICAgICAgICBpZiAoW2h0bWxEb2N1bWVudFZpZXcgX3dlYl9pc0RyYXdp
bmdJbnRvTGF5ZXJdKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4g
UGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nOwogICAgIH0KICAgICAKLSAgICBy
ZXR1cm4gUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZp
b3JTbmFwc2hvdHRpbmc7CisgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRp
bmdMYXllcnM7CiB9CiAKIC0gKHZvaWQpX2RyYXdSZWN0OihOU1JlY3QpcmVjdCBjb250ZW50c09u
bHk6KEJPT0wpY29udGVudHNPbmx5CkBAIC02NDUsOCArNjQ1LDggQEAgLSAodm9pZClfZHJhd1Jl
Y3Q6KE5TUmVjdClyZWN0IGNvbnRlbnRzTwogICAgICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBh
aW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpCiAg
ICAgICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBv
c2l0aW5nTGF5ZXJzOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHBhcmVudFZp
ZXctPnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpCi0gICAgICAg
ICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOworICAg
ICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JB
bGxvd0FzeW5jSW1hZ2VEZWNvZGluZykKKyAgICAgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9
IFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZzsKICAgICAgICAgfQogICAgIH0g
ZWxzZQogICAgICAgICBwYWludEJlaGF2aW9yIHw9IFtzZWxmIF9wYWludEJlaGF2aW9yRm9yRGVz
dGluYXRpb25Db250ZXh0OmN0eF07CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0JKHJldmlzaW9uIDIxOTM2NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTczMTMsNyArNzMxMyw3IEBAIHN0
YXRpYyBDR0ltYWdlUmVmIGltYWdlRnJvbVJlY3QoRnJhbWUqIGYKICAgICBXZWJIVE1MVmlldyAq
dmlldyA9IChXZWJIVE1MVmlldyAqKWRvY3VtZW50VmlldzsKICAgICAKICAgICBQYWludEJlaGF2
aW9yIG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZS0+dmlldygpLT5wYWludEJlaGF2aW9yKCk7Ci0g
ICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2aW9yIHwgUGFp
bnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hv
dHRpbmcpOworICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoKG9sZFBhaW50QmVo
YXZpb3IgJiB+UGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nKSB8IFBhaW50QmVo
YXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315276</attachid>
            <date>2017-07-12 13:10:37 -0700</date>
            <delta_ts>2017-07-12 16:40:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174432-20170712131037.patch</filename>
            <type>text/plain</type>
            <size>25697</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTM2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE3LTA3LTEyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXN5bmMgaW1h
Z2UgZGVjb2RpbmcgZm9yIGxhcmdlIGltYWdlcyBzaG91bGQgYmUgZGlzYWJsZWQgYnkgZGVmYXVs
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NDMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLS0gUmVu
YW1lIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpTbmFwc2hvdHRpbmcgdG8gQWxsb3dBc3luY0lt
YWdlRGVjb2RpbmcuCisgICAgICAgIC0tIFJlcGxhY2UgZXZlcnkgcmVmZXJlbmNlIHRvIEdyYXBo
aWNzTGF5ZXJQYWludEZsYWdzOjpTbmFwc2hvdHRpbmcgYnkKKyAgICAgICAgICAgR3JhcGhpY3NM
YXllclBhaW50RmxhZ3M6Ok5vbmUgYW5kIGV2ZXJ5IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpO
b25lCisgICAgICAgICAgIGJ5IEFsbG93QXN5bmNJbWFnZURlY29kaW5nLgorICAgICAgICAtLSBS
ZW5hbWUgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyB0byBQYWludEJlaGF2aW9yQWxsb3dBc3lu
Y0ltYWdlRGVjb2RpbmcuCisgICAgICAgIC0tIFByb3BhZ2F0ZSBQYWludEJlaGF2aW9yQWxsb3dB
c3luY0ltYWdlRGVjb2RpbmcgYSBmcm9tIHBhcmVudCB2aWV3IHRvIAorICAgICAgICAgICBhIGNo
aWxkIHZpZXcgaW5zdGVhZCBvZiBwcm9wYWdhdGluZyBQYWludEJlaGF2aW9yU25hcHNob3R0aW5n
LgorICAgICAgICAtLSBSZW1vdmUgc2V0dGluZyB0aGUgYml0IFBhaW50QmVoYXZpb3JTbmFwc2hv
dHRpbmcgaW4gYW55IG5ldyBQYWludEJlaGF2b2lyLgorICAgICAgICAtLSBSZXBsYWNlIGFkZGlu
ZyB0aGUgYml0IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcgaW4gYW4gZXhpc3RpbmcgUGFpbnRC
ZWhhdm9pciAKKyAgICAgICAgICAgYnkgcmVzZXR0aW5nIHRoZSBiaXQgUGFpbnRCZWhhdmlvckFs
bG93QXN5bmNJbWFnZURlY29kaW5nLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNr
Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSk6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
Ojp3aWxsUGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50
Q29udGVudHNGb3JTbmFwc2hvdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGll
bnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW06CisgICAg
ICAgICgtW1dlYkxheWVyIGRyYXdJbkNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYlNpbXBsZUxh
eWVyIGRyYXdJbkNvbnRleHQ6XSk6CisgICAgICAgICogcmVuZGVyaW5nL1BhaW50UGhhc2UuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlY29kaW5nTW9kZUZvckltYWdlRHJhdyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJF
eHRlbmRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJh
Z21lbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJXaWRnZXQ6OnBhaW50Q29udGVudHMpOiBXZSBuZWVkIHRvIHByb3BhZ2F0ZSB0aGUgCisgICAg
ICAgIFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZyBmcm9tIFJlbmRlcldpZGdl
dCB0byB0aGUgRnJhbWVWaWV3LgorICAgICAgICBXZSBkaWQgbm90IG5lZWQgdG8gZG8gdGhhdCBm
b3IgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyBiZWNhdXNlIAorICAgICAgICBGcmFtZVZpZXcg
d2FzIHNldHRpbmcgaXQgaWYgKGRvY3VtZW50LT5wcmludGluZygpKSB0byBpdHMgbV9wYWludEJl
aGF2aW9yCisgICAgICAgIGluIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoKS4KKwogMjAx
Ny0wNy0xMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04ocjIxOTA0NSk6IFRoZSA8Ym9keT4gZWxlbWVudCBkb2VzIG5vdCBn
ZXQgcmVwYWludGVkIHdoZW4gaXRzIGJhY2tncm91bmQgaW1hZ2UgZmluaXNoZXMgZGVjb2RpbmcK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAJKHJldmlzaW9uIDIxOTM2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwOSw3ICsx
NDA5LDcgQEAgUmVmUHRyPEltYWdlPiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YQogICAgIGlm
ICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGxheWVyLT5wYWludChi
dWZmZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0LCBMYXlvdXRTaXplKCksIFBhaW50QmVoYXZp
b3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nLCBu
dWxscHRyLCBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdBbGxQaGFz
ZXMpOworICAgIGxheWVyLT5wYWludChidWZmZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0LCBM
YXlvdXRTaXplKCksIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMsIG51bGxw
dHIsIFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdDb21wb3NpdGluZ0FsbFBoYXNlcyk7
CiAKICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShidWZmZXIp
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDIxOTM2NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDM4OCwxMiArNDM4OCwxMiBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3Jh
cGhpCiAgICAgICAgIGlmIChwYXJlbnRWaWV3LT5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2
aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQogICAgICAgICAgICAgbV9wYWludEJlaGF2aW9y
IHw9IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CiAgICAgICAgICAgICAK
LSAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JT
bmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBtX3BhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlv
clNuYXBzaG90dGluZzsKKyAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAm
IFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZykKKyAgICAgICAgICAgIG1fcGFp
bnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2Rpbmc7CiAgICAg
fQogCiAgICAgaWYgKGRvY3VtZW50LT5wcmludGluZygpKQotICAgICAgICBtX3BhaW50QmVoYXZp
b3IgfD0gKFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2
aW9yU25hcHNob3R0aW5nKTsKKyAgICAgICAgbV9wYWludEJlaGF2aW9yID0gKG1fcGFpbnRCZWhh
dmlvciAmIH5QYWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2RpbmcpIHwgUGFpbnRCZWhh
dmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsKIAogICAgIHBhaW50aW5nU3RhdGUuaXNGbGF0
dGVuaW5nUGFpbnRPZlJvb3RGcmFtZSA9IChtX3BhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9y
RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKSAmJiAhZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKICAg
ICBpZiAocGFpbnRpbmdTdGF0ZS5pc0ZsYXR0ZW5pbmdQYWludE9mUm9vdEZyYW1lKQpAQCAtNDUx
Myw3ICs0NTEzLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHNGb3JTbmFwc2hvdAog
CiAgICAgLy8gQ2FjaGUgcGFpbnQgYmVoYXZpb3IgYW5kIHNldCBhIG5ldyBiZWhhdmlvciBhcHBy
b3ByaWF0ZSBmb3Igc25hcHNob3RzLgogICAgIFBhaW50QmVoYXZpb3Igb2xkQmVoYXZpb3IgPSBw
YWludEJlaGF2aW9yKCk7Ci0gICAgc2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvciB8IChQYWlu
dEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90
dGluZykpOworICAgIHNldFBhaW50QmVoYXZpb3IoKG9sZEJlaGF2aW9yICYgflBhaW50QmVoYXZp
b3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZykgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0
aW5nTGF5ZXJzKTsKIAogICAgIC8vIElmIHRoZSBzbmFwc2hvdCBzaG91bGQgZXhjbHVkZSBzZWxl
Y3Rpb24sIHRoZW4gd2UnbGwgY2xlYXIgdGhlIGN1cnJlbnQgc2VsZWN0aW9uCiAgICAgLy8gaW4g
dGhlIHJlbmRlciB0cmVlIG9ubHkuIFRoaXMgd2lsbCBhbGxvdyB1cyB0byByZXN0b3JlIHRoZSBz
ZWxlY3Rpb24gZnJvbSB0aGUgRE9NCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCShyZXZpc2lvbiAyMTkzNjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ2Niw3ICs0NjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHVzZXNDb250ZW50
c0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIENhbGxiYWNrIGZyb20g
dGhlIHVuZGVybHlpbmcgZ3JhcGhpY3Mgc3lzdGVtIHRvIGRyYXcgbGF5ZXIgY29udGVudHMuCi0g
ICAgdm9pZCBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzID0gR3JhcGhpY3NMYXll
clBhaW50RmxhZ3M6Ok5vbmUpOworICAgIHZvaWQgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBjbGlwLCBHcmFwaGljc0xheWVyUGFp
bnRGbGFncyA9IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpBbGxvd0FzeW5jSW1hZ2VEZWNvZGlu
Zyk7CiAKICAgICAvLyBGb3IgaG9zdGluZyB0aGlzIEdyYXBoaWNzTGF5ZXIgaW4gYSBuYXRpdmUg
bGF5ZXIgaGllcmFyY2h5LgogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgJKHJldmlzaW9uIDIxOTM2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBlbnVtIExheWVyVHJlZUFzVGV4
dEJlaGF2aW9yRmxhZ3MgewogfTsKIHR5cGVkZWYgdW5zaWduZWQgTGF5ZXJUcmVlQXNUZXh0QmVo
YXZpb3I7CiAKLWVudW0gY2xhc3MgR3JhcGhpY3NMYXllclBhaW50RmxhZ3MgeyBOb25lLCBTbmFw
c2hvdHRpbmcgfTsKK2VudW0gY2xhc3MgR3JhcGhpY3NMYXllclBhaW50RmxhZ3MgeyBOb25lLCBB
bGxvd0FzeW5jSW1hZ2VEZWNvZGluZyB9OwogICAgIAogY2xhc3MgR3JhcGhpY3NMYXllckNsaWVu
dCB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
V2ViTGF5ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tCShyZXZpc2lvbiAyMTkzNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDcg
KzU3LDcgQEAgLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udAogICAgIFBs
YXRmb3JtQ0FMYXllciogbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihz
ZWxmKTsKICAgICBpZiAobGF5ZXIpIHsKICAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpSZXBhaW50
UmVjdExpc3QgcmVjdHNUb1BhaW50ID0gUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1Bh
aW50KGNvbnRleHQsIGxheWVyKTsKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJD
b250ZW50cyhjb250ZXh0LCBsYXllciwgcmVjdHNUb1BhaW50LCBzZWxmLmlzUmVuZGVyaW5nSW5D
b250ZXh0ID8gR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6OlNuYXBzaG90dGluZyA6IEdyYXBoaWNz
TGF5ZXJQYWludEZsYWdzOjpOb25lKTsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5
ZXJDb250ZW50cyhjb250ZXh0LCBsYXllciwgcmVjdHNUb1BhaW50LCBzZWxmLmlzUmVuZGVyaW5n
SW5Db250ZXh0ID8gR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUgOiBHcmFwaGljc0xheWVy
UGFpbnRGbGFnczo6QWxsb3dBc3luY0ltYWdlRGVjb2RpbmcpOwogICAgIH0KIH0KIApAQCAtMTM3
LDcgKzEzNyw3IEBAIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnQKICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldElzQWNjZWxlcmF0ZWRDb250ZXh0KGxheWVyLT5hY2Nl
bGVyYXRlc0RyYXdpbmcoKSk7CiAKICAgICAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHMgPSBDR0Nv
bnRleHRHZXRDbGlwQm91bmRpbmdCb3goY29udGV4dCk7Ci0gICAgICAgIGxheWVyLT5vd25lcigp
LT5wbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKGxheWVyLCBncmFwaGljc0NvbnRleHQsIGNs
aXBCb3VuZHMsIHNlbGYuaXNSZW5kZXJpbmdJbkNvbnRleHQgPyBHcmFwaGljc0xheWVyUGFpbnRG
bGFnczo6U25hcHNob3R0aW5nIDogR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUpOworICAg
ICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhsYXllciwg
Z3JhcGhpY3NDb250ZXh0LCBjbGlwQm91bmRzLCBzZWxmLmlzUmVuZGVyaW5nSW5Db250ZXh0ID8g
R3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUgOiBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6
QWxsb3dBc3luY0ltYWdlRGVjb2RpbmcpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1BhaW50UGhhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUGFpbnRQaGFzZS5oCShyZXZpc2lvbiAyMTkzNjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBA
IGVudW0gUGFpbnRCZWhhdmlvckZsYWdzIHsKICAgICBQYWludEJlaGF2aW9yU2VsZWN0aW9uQW5k
QmFja2dyb3VuZHNPbmx5ID0gMSA8PCA3LAogICAgIFBhaW50QmVoYXZpb3JFeGNsdWRlU2VsZWN0
aW9uICAgICAgICAgICAgPSAxIDw8IDgsCiAgICAgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3Np
dGluZ0xheWVycyAgICA9IDEgPDwgOSwgLy8gUGFpbnQgZG9lc24ndCBzdG9wIGF0IGNvbXBvc2l0
aW5nIGxheWVyIGJvdW5kYXJpZXMuCi0gICAgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyAgICAg
ICAgICAgICAgICA9IDEgPDwgMTAsIC8vIEluZGljYXRlcyBzbmFwc2hvdHRpbmcsIGUuZy4gZm9y
Y2Ugc3luY2hyb25vdXMgaW1hZ2UgZGVjb2RpbmcuCisgICAgUGFpbnRCZWhhdmlvckFsbG93QXN5
bmNJbWFnZURlY29kaW5nICAgICA9IDEgPDwgMTAsCiB9OwogCiB0eXBlZGVmIHVuc2lnbmVkIFBh
aW50QmVoYXZpb3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDIxOTM2NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
Miw3ICszMDIsMTYgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6aGFzQXV0b0hlaWdodAog
CiAgICAgcmV0dXJuIGZhbHNlOwogfQotICAgIAorCitEZWNvZGluZ01vZGUgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmRlY29kaW5nTW9kZUZvckltYWdlRHJhdyhjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbykgY29uc3QKK3sKKyAgICBpZiAoZG9jdW1lbnQoKS5pc0ltYWdlRG9jdW1lbnQoKSkKKyAg
ICAgICAgcmV0dXJuIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXM7CisgICAgaWYgKHBhaW50SW5m
by5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nKQor
ICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7CisgICAgcmV0dXJuIERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXM7Cit9CisKIExheW91dFNpemUgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnJlbGF0aXZlUG9zaXRpb25PZmZzZXQoKSBjb25zdAogewogICAgIC8vIFRoaXMgZnVu
Y3Rpb24gaGFzIGJlZW4gb3B0aW1pemVkIHRvIGF2b2lkIGNhbGxzIHRvIGNvbnRhaW5pbmdCbG9j
aygpIGluIHRoZSBjb21tb24gY2FzZQpAQCAtODgzLDggKzg5Miw3IEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKICAgICAgICAgICAgICAgICBkb3duY2FzdDxCaXRt
YXBJbWFnZT4oKmltYWdlKS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3MoKSk7CiAKICAgICAg
ICAgICAgIGF1dG8gaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNv
bnRleHQsICppbWFnZSwgJmJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwotICAgICAgICAg
ICAgYXV0byBkZWNvZGluZ01vZGUgPSAocGFpbnRJbmZvLnBhaW50QmVoYXZpb3IgJiAoUGFpbnRC
ZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRp
bmcpKSA/IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMgOiBEZWNvZGluZ01vZGU6OkFzeW5jaHJv
bm91czsKLSAgICAgICAgICAgIGF1dG8gZHJhd1Jlc3VsdCA9IGNvbnRleHQuZHJhd1RpbGVkSW1h
Z2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJl
bGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgp
LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci5ibGVuZE1vZGUoKSwg
ZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgaW50ZXJwb2xhdGlv
bikpOworICAgICAgICAgICAgYXV0byBkcmF3UmVzdWx0ID0gY29udGV4dC5kcmF3VGlsZWRJbWFn
ZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVs
YXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCks
IEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVyLmJsZW5kTW9kZSgpLCBk
ZWNvZGluZ01vZGVGb3JJbWFnZURyYXcocGFpbnRJbmZvKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKCksIGludGVycG9sYXRpb24pKTsKICAgICAgICAgICAgIGlmIChkcmF3UmVzdWx0ID09
IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5nKSB7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKGJnSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSk7CiAgICAgICAgICAgICAgICAgYmdJbWFn
ZS0+Y2FjaGVkSW1hZ2UoKS0+YWRkUGVuZGluZ0ltYWdlRHJhd2luZ0NsaWVudCgqdGhpcyk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aAkocmV2aXNpb24gMjE5MzY0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2Nyw2ICsyNjcsOCBAQCBwcm90ZWN0
ZWQ6CiAKICAgICBib29sIGhhc0F1dG9IZWlnaHRPckNvbnRhaW5pbmdCbG9ja1dpdGhBdXRvSGVp
Z2h0KCkgY29uc3Q7CiAKKyAgICBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlRm9ySW1hZ2VEcmF3
KGNvbnN0IFBhaW50SW5mbyYpIGNvbnN0OworCiBwdWJsaWM6CiAgICAgLy8gRm9yIFJlbmRlckJs
b2NrcyBhbmQgUmVuZGVySW5saW5lcyB3aXRoIG1fc3R5bGUtPnN0eWxlVHlwZSgpID09IEZJUlNU
X0xFVFRFUiwgdGhpcyB0cmFja3MgdGhlaXIgcmVtYWluaW5nIHRleHQgZnJhZ21lbnRzCiAgICAg
UmVuZGVyVGV4dEZyYWdtZW50KiBmaXJzdExldHRlclJlbWFpbmluZ1RleHQoKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkocmV2aXNpb24gMjE5
MzY0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTg1LDggKzU4NSw3IEBAIEltYWdlRHJhd1Jlc3VsdCBSZW5kZXJJbWFnZTo6
cGFpbnRJbnRvUmUKIAogICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlv
bkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCksIHN0eWxlKCkuaW1h
Z2VPcmllbnRhdGlvbigpKTsKIAotICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gKHBhaW50SW5mby5w
YWludEJlaGF2aW9yICYgKFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQ
YWludEJlaGF2aW9yU25hcHNob3R0aW5nKSkgPyBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzIDog
RGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7Ci0gICAgYXV0byBkcmF3UmVzdWx0ID0gcGFpbnRJ
bmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMo
Y29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZU5vcm1hbCwgZGVjb2RpbmdNb2RlLCBvcmllbnRh
dGlvbkRlc2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgYXV0byBkcmF3UmVzdWx0ID0g
cGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZU5vcm1hbCwgZGVjb2RpbmdNb2RlRm9y
SW1hZ2VEcmF3KHBhaW50SW5mbyksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9sYXRp
b24pKTsKICAgICBpZiAoZHJhd1Jlc3VsdCA9PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3RE
ZWNvZGluZykKICAgICAgICAgaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCktPmFkZFBlbmRp
bmdJbWFnZURyYXdpbmdDbGllbnQoKnRoaXMpOwogICAgIHJldHVybiBkcmF3UmVzdWx0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAyMTkz
NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Mzg0LDggKzQzODQsOCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVy
Q29udGVudHMoR3JhCiAgICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBh
aW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpCiAgICAgICAgICAgICBwYWludEJl
aGF2aW9yIHw9IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CiAgICAgICAg
ICAgICAKLSAgICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhh
dmlvclNuYXBzaG90dGluZykKLSAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhh
dmlvclNuYXBzaG90dGluZzsKKyAgICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9y
ICYgUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nKQorICAgICAgICAgICAgcGFp
bnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2Rpbmc7CiAKICAg
ICAgICAgaWYgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckV4Y2x1
ZGVTZWxlY3Rpb24pCiAgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JF
eGNsdWRlU2VsZWN0aW9uOwpAQCAtNDQ2Niw4ICs0NDY2LDggQEAgdm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRMYXllckNvbnRlbnRzKEdyYQogICAgICAgICBpZiAocGFpbnRpbmdJbmZvLnBhaW50QmVo
YXZpb3IgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKQogICAgICAgICAg
ICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJz
OwogCi0gICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZp
b3JTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZp
b3JTbmFwc2hvdHRpbmc7CisgICAgICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAm
IFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZykKKyAgICAgICAgICAgIHBhaW50
QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nOwogCiAgICAg
ICAgIGlmIChzaG91bGRQYWludE1hc2socGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IsIGxvY2Fs
UGFpbnRGbGFncykpIHsKICAgICAgICAgICAgIC8vIFBhaW50IHRoZSBtYXNrIGZvciB0aGUgZnJh
Z21lbnRzLgpAQCAtNDc5OCw4ICs0Nzk4LDggQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3Jl
Z3JvdW5kRm9yRnJhZwogICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYg
UGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24pCiAgICAgICAgIGxvY2FsUGFpbnRCZWhhdmlv
ciB8PSBQYWludEJlaGF2aW9yRXhjbHVkZVNlbGVjdGlvbjsKIAotICAgIGlmIChsb2NhbFBhaW50
aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZykKLSAgICAg
ICAgbG9jYWxQYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CisgICAg
aWYgKGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yQWxsb3dB
c3luY0ltYWdlRGVjb2RpbmcpCisgICAgICAgIGxvY2FsUGFpbnRCZWhhdmlvciB8PSBQYWludEJl
aGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2Rpbmc7CiAKICAgICAvLyBPcHRpbWl6ZSBjbGlwcGlu
ZyBmb3IgdGhlIHNpbmdsZSBmcmFnbWVudCBjYXNlLgogICAgIGJvb2wgc2hvdWxkQ2xpcCA9IGxv
Y2FsUGFpbnRpbmdJbmZvLmNsaXBUb0RpcnR5UmVjdCAmJiBsYXllckZyYWdtZW50cy5zaXplKCkg
PT0gMSAmJiBsYXllckZyYWdtZW50c1swXS5zaG91bGRQYWludENvbnRlbnQgJiYgIWxheWVyRnJh
Z21lbnRzWzBdLmZvcmVncm91bmRSZWN0LmlzRW1wdHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAyMTkzNjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjU4NSw4ICsyNTg1LDggQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6
OnBhaW50Q29udGVudHMoYwogCiAgICAgICAgIC8vIFdlIGhhdmUgdG8gdXNlIHRoZSBzYW1lIHJv
b3QgYXMgZm9yIGhpdCB0ZXN0aW5nLCBiZWNhdXNlIGJvdGggbWV0aG9kcyBjYW4gY29tcHV0ZSBh
bmQgY2FjaGUgY2xpcFJlY3RzLgogICAgICAgICBQYWludEJlaGF2aW9yIGJlaGF2aW9yID0gUGFp
bnRCZWhhdmlvck5vcm1hbDsKLSAgICAgICAgaWYgKGZsYWdzID09IEdyYXBoaWNzTGF5ZXJQYWlu
dEZsYWdzOjpTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICBiZWhhdmlvciB8PSBQYWludEJlaGF2
aW9yU25hcHNob3R0aW5nOworICAgICAgICBpZiAoZmxhZ3MgPT0gR3JhcGhpY3NMYXllclBhaW50
RmxhZ3M6OkFsbG93QXN5bmNJbWFnZURlY29kaW5nKQorICAgICAgICAgICAgYmVoYXZpb3IgfD0g
UGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nOwogCiAgICAgICAgIHBhaW50SW50
b0xheWVyKGdyYXBoaWNzTGF5ZXIsIGNvbnRleHQsIGRpcnR5UmVjdCwgYmVoYXZpb3IsIHBhaW50
aW5nUGhhc2UpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcAkocmV2aXNpb24gMjE5MzY0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cldpZGdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOSw2ICsyMjksMTMgQEAgdm9pZCBSZW5k
ZXJXaWRnZXQ6OnBhaW50Q29udGVudHMoUGFpbnRJbgogICAgIC8vIHRvIHBhaW50IGl0c2VsZi4g
VGhhdCB3YXkgaXQgd2lsbCBjb21wb3NpdGUgcHJvcGVybHkgd2l0aCB6LWluZGV4ZWQgbGF5ZXJz
LgogICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gcGFpbnRJbmZvLnJlY3Q7CiAKKyAgICBQYWlu
dEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1hbDsKKyAgICBpZiAoaXM8
RnJhbWVWaWV3PigqbV93aWRnZXQpICYmIChwYWludEluZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50
QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZykpIHsKKyAgICAgICAgRnJhbWVWaWV3JiBm
cmFtZVZpZXcgPSBkb3duY2FzdDxGcmFtZVZpZXc+KCptX3dpZGdldCk7CisgICAgICAgIG9sZEJl
aGF2aW9yID0gZnJhbWVWaWV3LnBhaW50QmVoYXZpb3IoKTsKKyAgICAgICAgZnJhbWVWaWV3LnNl
dFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IgfCBQYWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdl
RGVjb2RpbmcpOworICAgIH0KKwogICAgIEludFBvaW50IHdpZGdldExvY2F0aW9uID0gbV93aWRn
ZXQtPmZyYW1lUmVjdCgpLmxvY2F0aW9uKCk7CiAgICAgSW50U2l6ZSB3aWRnZXRQYWludE9mZnNl
dCA9IGNvbnRlbnRQYWludE9mZnNldCAtIHdpZGdldExvY2F0aW9uOwogICAgIC8vIFdoZW4gcGFp
bnRpbmcgd2lkZ2V0cyBpbnRvIGNvbXBvc2l0aW5nIGxheWVycywgdHggYW5kIHR5IGFyZSByZWxh
dGl2ZSB0byB0aGUgZW5jbG9zaW5nIGNvbXBvc2l0aW5nIGxheWVyLApAQCAtMjUwLDYgKzI1Nyw4
IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKFBhaW50SW4KICAgICAgICAgICAg
IEFTU0VSVCghcGFpbnRJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMtPmNvbnRhaW5zKHRoaXMpIHx8
IChwYWludEluZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cy0+Z2V0KHRoaXMpID09IG1fd2lkZ2V0LT5m
cmFtZVJlY3QoKSkpOwogICAgICAgICAgICAgcGFpbnRJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMt
PnNldCh0aGlzLCBtX3dpZGdldC0+ZnJhbWVSZWN0KCkpOwogICAgICAgICB9CisgICAgICAgIGlm
IChwYWludEluZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VE
ZWNvZGluZykKKyAgICAgICAgICAgIGZyYW1lVmlldy5zZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2
aW9yKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTM2NCkKKysrIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisy
MDE3LTA3LTEyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisK
KyAgICAgICAgQXN5bmMgaW1hZ2UgZGVjb2RpbmcgZm9yIGxhcmdlIGltYWdlcyBzaG91bGQgYmUg
ZGlzYWJsZWQgYnkgZGVmYXVsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc0NDMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgLS0gUmVwbGFjZSBldmVyeSByZWZlcmVuY2UgdG8gR3JhcGhpY3NMYXllclBh
aW50RmxhZ3M6OlNuYXBzaG90dGluZyBieQorICAgICAgICAgICBHcmFwaGljc0xheWVyUGFpbnRG
bGFnczo6Tm9uZSBhbmQgZXZlcnkgR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUKKyAgICAg
ICAgICAgYnkgQWxsb3dBc3luY0ltYWdlRGVjb2RpbmcuCisgICAgICAgIC0tIFJlcGxhY2UgYWRk
aW5nIHRoZSBiaXQgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyBpbiBhbiBleGlzdGluZyBQYWlu
dEJlaGF2b2lyIAorICAgICAgICAgICBieSByZXNldHRpbmcgdGhlIGJpdCBQYWludEJlaGF2aW9y
QWxsb3dBc3luY0ltYWdlRGVjb2RpbmcuCisKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6ZHJhd0luQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW1h
Z2VGb3JSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisKIDIwMTctMDctMTEgIFRpbW90aHkgSGF0
Y2hlciAgPHRpbW90aHlAaGF0Y2hlci5uYW1lPgogCiAgICAgICAgIEZpeCBhIGJ1aWxkIGZhaWx1
cmUgaW4gV2ViRHJhZ0NsaWVudCB3aGVuICFQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKEdU
SykuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUubW0JKHJldmlzaW9uIDIxOTM2NCkKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTMz
Niw3ICszMzYsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250CiAK
ICAgICBjb250ZXh0LnNjYWxlKG1fc2NhbGUpOwogICAgIAotICAgIGF1dG8gZmxhZ3MgPSBtX2xh
eWVyLT5jb250ZXh0KCkgJiYgbV9sYXllci0+Y29udGV4dCgpLT5uZXh0Rmx1c2hJc0ZvckltbWVk
aWF0ZVBhaW50KCkgPyBXZWJDb3JlOjpHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6U25hcHNob3R0
aW5nIDogV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmU7CisgICAgYXV0byBm
bGFncyA9IG1fbGF5ZXItPmNvbnRleHQoKSAmJiBtX2xheWVyLT5jb250ZXh0KCktPm5leHRGbHVz
aElzRm9ySW1tZWRpYXRlUGFpbnQoKSA/IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludEZsYWdz
OjpOb25lIDogV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50RmxhZ3M6OkFsbG93QXN5bmNJbWFn
ZURlY29kaW5nOwogICAgIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtb3ZlZCB0byBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUgZm9yIGJldHRlciBsYXllcmluZy4KICAgICBzd2l0Y2ggKG1f
bGF5ZXItPmxheWVyVHlwZSgpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlTm9kZUhhbmRsZS5jcHAJKHJldmlzaW9uIDIxOTM2NCkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw3ICsxNjksNyBAQCBzdGF0aWMgUmVmUHRyPFdlYklt
YWdlPiBpbWFnZUZvclJlY3QoRnJhCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNF
eGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nKQogICAgICAgICBzaG91bGRQYWludFNlbGVjdGlv
biA9IEZyYW1lVmlldzo6RXhjbHVkZVNlbGVjdGlvbjsKIAotICAgIFBhaW50QmVoYXZpb3IgcGFp
bnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpIHwgKFBhaW50QmVoYXZpb3JG
bGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKTsKKyAg
ICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IgPSAoZnJhbWVWaWV3LT5wYWludEJlaGF2aW9y
KCkgJiB+UGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nKSB8IFBhaW50QmVoYXZp
b3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9w
dGlvbnNGb3JjZUJsYWNrVGV4dCkKICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2
aW9yRm9yY2VCbGFja1RleHQ7CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNGb3Jj
ZVdoaXRlVGV4dCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFu
Z2VIYW5kbGUuY3BwCShyZXZpc2lvbiAyMTkzNjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmQKICAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtcGFpbnRSZWN0
LngoKSwgLXBhaW50UmVjdC55KCkpOwogCiAgICAgUGFpbnRCZWhhdmlvciBvbGRQYWludEJlaGF2
aW9yID0gZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCk7Ci0gICAgUGFpbnRCZWhhdmlvciBwYWlu
dEJlaGF2aW9yID0gb2xkUGFpbnRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5
IHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JT
bmFwc2hvdHRpbmc7CisgICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yID0gKG9sZFBhaW50
QmVoYXZpb3IgJiB+UGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nKSB8IFBhaW50
QmVoYXZpb3JTZWxlY3Rpb25Pbmx5IHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xh
eWVyczsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KQog
ICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dDsKICAg
ICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0ZvcmNlV2hpdGVUZXh0KQpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMjE5NDE4KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMDctMTIgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBBc3luYyBpbWFn
ZSBkZWNvZGluZyBmb3IgbGFyZ2UgaW1hZ2VzIHNob3VsZCBiZSBkaXNhYmxlZCBieSBkZWZhdWx0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ0MzIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtLSBSZW1v
dmUgc2V0dGluZyB0aGUgYml0IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcgaW4gYW55IG5ldyBQ
YWludEJlaGF2b2lyLgorICAgICAgICAtLSBSZXR1cm4gUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJ
bWFnZURlY29kaW5nIHdoZW4gdGhlIHJldHVybiB2YWx1ZSB3YXMgMC4KKyAgICAgICAgLS0gUHJv
cGFnYXRlIFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZyBhIGZyb20gcGFyZW50
IHZpZXcgdG8gCisgICAgICAgICAgIGEgY2hpbGQgdmlldyBpbnN0ZWFkIG9mIHByb3BhZ2F0aW5n
IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcuCisgICAgICAgIC0tIFJlcGxhY2UgYWRkaW5nIHRo
ZSBiaXQgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyBpbiBhbiBleGlzdGluZyBQYWludEJlaGF2
b2lyIAorICAgICAgICAgICBieSByZXNldHRpbmcgdGhlIGJpdCBQYWludEJlaGF2aW9yQWxsb3dB
c3luY0ltYWdlRGVjb2RpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAg
ICAgICAoLVtXZWJGcmFtZSBfcGFpbnRCZWhhdmlvckZvckRlc3RpbmF0aW9uQ29udGV4dDpdKToK
KyAgICAgICAgKC1bV2ViRnJhbWUgX2RyYXdSZWN0OmNvbnRlbnRzT25seTpdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoaW1hZ2VGcm9tUmVjdCk6CisKIDIw
MTctMDctMTIgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bmFtZSBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUgdG8gSW5pdGlhdGVkQnlNYWluRnJh
bWUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gMjE5
MzY0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtNTk1LDIzICs1OTUsMjMgQEAgLSAoUGFpbnRCZWhhdmlvcilfcGFpbnRCZWhhdmlv
ckZvckRlc3RpbgogICAgIC8vIC1jdXJyZW50Q29udGV4dERyYXdpbmdUb1NjcmVlbiByZXR1cm5z
IFlFUyBmb3IgYml0bWFwIGNvbnRleHRzLgogICAgIEJPT0wgaXNQcmludGluZyA9ICFbTlNHcmFw
aGljc0NvbnRleHQgY3VycmVudENvbnRleHREcmF3aW5nVG9TY3JlZW5dOwogICAgIGlmIChpc1By
aW50aW5nKQotICAgICAgICByZXR1cm4gUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xh
eWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CisgICAgICAgIHJldHVybiBQYWludEJl
aGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOwogI2VuZGlmCiAKICAgICBpZiAoIVdLQ0dD
b250ZXh0SXNCaXRtYXBDb250ZXh0KGNvbnRleHQpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZzsKIAogICAgIC8v
IElmIHdlJ3JlIGRyYXdpbmcgaW50byBhIGJpdG1hcCwgd2UgbWlnaHQgYmUgc25hcHNob3R0aW5n
LCBvciBkcmF3aW5nIGludG8gYSBsYXllci1iYWNrZWQgdmlldy4KICAgICBpZiAoV2ViSFRNTFZp
ZXcgKmh0bWxEb2N1bWVudFZpZXcgPSBbc2VsZiBfd2ViSFRNTERvY3VtZW50Vmlld10pIHsKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgICAgIGlmIChbW2h0bWxEb2N1bWVudFZpZXcgd2luZG93XSBp
c0luU25hcHNob3R0aW5nUGFpbnRdKQotICAgICAgICAgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JT
bmFwc2hvdHRpbmc7CisgICAgICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogICAgICAgICBpZiAo
W2h0bWxEb2N1bWVudFZpZXcgX3dlYl9pc0RyYXdpbmdJbnRvTGF5ZXJdKQotICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFn
ZURlY29kaW5nOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gUGFpbnRCZWhhdmlvckZsYXR0ZW5D
b21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CisgICAgcmV0dXJu
IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CiB9CiAKIC0gKHZvaWQpX2Ry
YXdSZWN0OihOU1JlY3QpcmVjdCBjb250ZW50c09ubHk6KEJPT0wpY29udGVudHNPbmx5CkBAIC02
NDUsOCArNjQ1LDggQEAgLSAodm9pZClfZHJhd1JlY3Q6KE5TUmVjdClyZWN0IGNvbnRlbnRzTwog
ICAgICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZp
b3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpCiAgICAgICAgICAgICAgICAgcGFpbnRCZWhhdmlv
ciB8PSBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOwogICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBhaW50
QmVoYXZpb3JTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQ
YWludEJlaGF2aW9yU25hcHNob3R0aW5nOworICAgICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBh
aW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZykKKyAg
ICAgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1h
Z2VEZWNvZGluZzsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBwYWludEJlaGF2aW9y
IHw9IFtzZWxmIF9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25Db250ZXh0OmN0eF07CkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHJldmlzaW9uIDIxOTM2
NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTczMTMsNyArNzMxMyw3IEBAIHN0YXRpYyBDR0ltYWdlUmVmIGltYWdlRnJvbVJl
Y3QoRnJhbWUqIGYKICAgICBXZWJIVE1MVmlldyAqdmlldyA9IChXZWJIVE1MVmlldyAqKWRvY3Vt
ZW50VmlldzsKICAgICAKICAgICBQYWludEJlaGF2aW9yIG9sZFBhaW50QmVoYXZpb3IgPSBmcmFt
ZS0+dmlldygpLT5wYWludEJlaGF2aW9yKCk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRC
ZWhhdmlvcihvbGRQYWludEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGlu
Z0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpOworICAgIGZyYW1lLT52aWV3KCkt
PnNldFBhaW50QmVoYXZpb3IoKG9sZFBhaW50QmVoYXZpb3IgJiB+UGFpbnRCZWhhdmlvckFsbG93
QXN5bmNJbWFnZURlY29kaW5nKSB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXll
cnMpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315303</attachid>
            <date>2017-07-12 16:40:26 -0700</date>
            <delta_ts>2017-07-12 19:20:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174432-20170712164025.patch</filename>
            <type>text/plain</type>
            <size>25658</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTQyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE3LTA3LTEyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXN5bmMgaW1h
Z2UgZGVjb2RpbmcgZm9yIGxhcmdlIGltYWdlcyBzaG91bGQgYmUgZGlzYWJsZWQgYnkgZGVmYXVs
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NDMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIC0tIFJlbmFt
ZSBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6U25hcHNob3R0aW5nIHRvIEFsbG93QXN5bmNJbWFn
ZURlY29kaW5nLgorICAgICAgICAtLSBSZXBsYWNlIGV2ZXJ5IHJlZmVyZW5jZSB0byBHcmFwaGlj
c0xheWVyUGFpbnRGbGFnczo6U25hcHNob3R0aW5nIGJ5CisgICAgICAgICAgIEdyYXBoaWNzTGF5
ZXJQYWludEZsYWdzOjpOb25lIGFuZCBldmVyeSBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6Tm9u
ZQorICAgICAgICAgICBieSBBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZy4KKyAgICAgICAgLS0gUmVu
YW1lIFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcgdG8gUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJ
bWFnZURlY29kaW5nLgorICAgICAgICAtLSBQcm9wYWdhdGUgUGFpbnRCZWhhdmlvckFsbG93QXN5
bmNJbWFnZURlY29kaW5nIGZyb20gYSBwYXJlbnQgdmlldyB0byAKKyAgICAgICAgICAgYSBjaGls
ZCB2aWV3IGluc3RlYWQgb2YgcHJvcGFnYXRpbmcgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZy4K
KyAgICAgICAgLS0gUmVtb3ZlIHNldHRpbmcgdGhlIGJpdCBQYWludEJlaGF2aW9yU25hcHNob3R0
aW5nIGluIGFueSBuZXcgUGFpbnRCZWhhdm9pci4KKyAgICAgICAgLS0gUmVwbGFjZSBzZXR0aW5n
IHRoZSBiaXQgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZyBpbiBhbiBleGlzdGluZyBQYWludEJl
aGF2b2lyCisgICAgICAgICAgIGJ5IHJlc2V0dGluZyB0aGUgYml0IFBhaW50QmVoYXZpb3JBbGxv
d0FzeW5jSW1hZ2VEZWNvZGluZy4KKworICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0Nv
bnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uSW1hZ2UpOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
d2lsbFBhaW50Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENv
bnRlbnRzRm9yU25hcHNob3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAg
ICAoLVtXZWJMYXllciBkcmF3SW5Db250ZXh0Ol0pOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXll
ciBkcmF3SW5Db250ZXh0Ol0pOgorICAgICAgICAqIHJlbmRlcmluZy9QYWludFBoYXNlLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpkZWNvZGluZ01vZGVGb3JJbWFnZURyYXcpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0
ZW5kZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdt
ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
V2lkZ2V0OjpwYWludENvbnRlbnRzKTogV2UgbmVlZCB0byBwcm9wYWdhdGUgdGhlIAorICAgICAg
ICBQYWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2RpbmcgZnJvbSBSZW5kZXJXaWRnZXQg
dG8gdGhlIEZyYW1lVmlldy4KKyAgICAgICAgV2UgZGlkIG5vdCBuZWVkIHRvIGRvIHRoYXQgZm9y
IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcgYmVjYXVzZSAKKyAgICAgICAgRnJhbWVWaWV3IHdh
cyBzZXR0aW5nIGl0IGluIGl0cyBtX3BhaW50QmVoYXZpb3IgaWYgKGRvY3VtZW50LT5wcmludGlu
ZygpKQorICAgICAgICBpbiBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRzKCkuCisKIDIwMTct
MDctMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFjY2Vz
c2luZyBsb2NhbERlc2NyaXB0aW9uLCByZW1vdGVEZXNjcmlwdGlvbiwgZXRjLiBhZnRlciBzZXRU
aW1lb3V0IHJhaXNlcyBFWENfQkFEX0FDQ0VTUwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkocmV2aXNpb24gMjE5NDI5
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDA5LDcgKzE0MDksNyBAQCBSZWZQdHI8SW1hZ2U+IE1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhCiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgbGF5ZXItPnBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBwYWludGluZ1Jl
Y3QsIExheW91dFNpemUoKSwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8
IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcsIG51bGxwdHIsIFJlbmRlckxheWVyOjpQYWludExh
eWVyUGFpbnRpbmdDb21wb3NpdGluZ0FsbFBoYXNlcyk7CisgICAgbGF5ZXItPnBhaW50KGJ1ZmZl
ci0+Y29udGV4dCgpLCBwYWludGluZ1JlY3QsIExheW91dFNpemUoKSwgUGFpbnRCZWhhdmlvckZs
YXR0ZW5Db21wb3NpdGluZ0xheWVycywgbnVsbHB0ciwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQ
YWludGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzKTsKIAogICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6
c2lua0ludG9JbWFnZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAkocmV2aXNpb24gMjE5NDI5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Mzg4LDEyICs0Mzg4LDEyIEBAIHZvaWQgRnJh
bWVWaWV3Ojp3aWxsUGFpbnRDb250ZW50cyhHcmFwaGkKICAgICAgICAgaWYgKHBhcmVudFZpZXct
PnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMp
CiAgICAgICAgICAgICBtX3BhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21w
b3NpdGluZ0xheWVyczsKICAgICAgICAgICAgIAotICAgICAgICBpZiAocGFyZW50Vmlldy0+cGFp
bnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZykKLSAgICAgICAgICAgIG1f
cGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOworICAgICAgICBpZiAo
cGFyZW50Vmlldy0+cGFpbnRCZWhhdmlvcigpICYgUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFn
ZURlY29kaW5nKQorICAgICAgICAgICAgbV9wYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JB
bGxvd0FzeW5jSW1hZ2VEZWNvZGluZzsKICAgICB9CiAKICAgICBpZiAoZG9jdW1lbnQtPnByaW50
aW5nKCkpCi0gICAgICAgIG1fcGFpbnRCZWhhdmlvciB8PSAoUGFpbnRCZWhhdmlvckZsYXR0ZW5D
b21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpOworICAgICAgICBt
X3BhaW50QmVoYXZpb3IgPSAobV9wYWludEJlaGF2aW9yICYgflBhaW50QmVoYXZpb3JBbGxvd0Fz
eW5jSW1hZ2VEZWNvZGluZykgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJz
OwogCiAgICAgcGFpbnRpbmdTdGF0ZS5pc0ZsYXR0ZW5pbmdQYWludE9mUm9vdEZyYW1lID0gKG1f
cGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpICYm
ICFmcmFtZSgpLm93bmVyRWxlbWVudCgpOwogICAgIGlmIChwYWludGluZ1N0YXRlLmlzRmxhdHRl
bmluZ1BhaW50T2ZSb290RnJhbWUpCkBAIC00NTEzLDcgKzQ1MTMsNyBAQCB2b2lkIEZyYW1lVmll
dzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90CiAKICAgICAvLyBDYWNoZSBwYWludCBiZWhhdmlv
ciBhbmQgc2V0IGEgbmV3IGJlaGF2aW9yIGFwcHJvcHJpYXRlIGZvciBzbmFwc2hvdHMuCiAgICAg
UGFpbnRCZWhhdmlvciBvbGRCZWhhdmlvciA9IHBhaW50QmVoYXZpb3IoKTsKLSAgICBzZXRQYWlu
dEJlaGF2aW9yKG9sZEJlaGF2aW9yIHwgKFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdM
YXllcnMgfCBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKSk7CisgICAgc2V0UGFpbnRCZWhhdmlv
cigob2xkQmVoYXZpb3IgJiB+UGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nKSB8
IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOwogCiAgICAgLy8gSWYgdGhl
IHNuYXBzaG90IHNob3VsZCBleGNsdWRlIHNlbGVjdGlvbiwgdGhlbiB3ZSdsbCBjbGVhciB0aGUg
Y3VycmVudCBzZWxlY3Rpb24KICAgICAvLyBpbiB0aGUgcmVuZGVyIHRyZWUgb25seS4gVGhpcyB3
aWxsIGFsbG93IHVzIHRvIHJlc3RvcmUgdGhlIHNlbGVjdGlvbiBmcm9tIHRoZSBET00KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJ
KHJldmlzaW9uIDIxOTQyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDY2LDcgKzQ2Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCiAgICAgLy8gQ2FsbGJhY2sgZnJvbSB0aGUgdW5kZXJseWluZyBncmFwaGljcyBzeXN0
ZW0gdG8gZHJhdyBsYXllciBjb250ZW50cy4KLSAgICB2b2lkIHBhaW50R3JhcGhpY3NMYXllckNv
bnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCwgR3JhcGhpY3NM
YXllclBhaW50RmxhZ3MgPSBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6Tm9uZSk7CisgICAgdm9p
ZCBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGNsaXAsIEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzID0gR3JhcGhpY3NMYXllclBhaW50
RmxhZ3M6OkFsbG93QXN5bmNJbWFnZURlY29kaW5nKTsKIAogICAgIC8vIEZvciBob3N0aW5nIHRo
aXMgR3JhcGhpY3NMYXllciBpbiBhIG5hdGl2ZSBsYXllciBoaWVyYXJjaHkuCiAgICAgdmlydHVh
bCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDbGllbnQuaAkocmV2aXNpb24gMjE5NDI5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3
ICs3NSw3IEBAIGVudW0gTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3JGbGFncyB7CiB9OwogdHlwZWRl
ZiB1bnNpZ25lZCBMYXllclRyZWVBc1RleHRCZWhhdmlvcjsKIAotZW51bSBjbGFzcyBHcmFwaGlj
c0xheWVyUGFpbnRGbGFncyB7IE5vbmUsIFNuYXBzaG90dGluZyB9OworZW51bSBjbGFzcyBHcmFw
aGljc0xheWVyUGFpbnRGbGFncyB7IE5vbmUsIEFsbG93QXN5bmNJbWFnZURlY29kaW5nIH07CiAg
ICAgCiBjbGFzcyBHcmFwaGljc0xheWVyQ2xpZW50IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0JKHJldmlzaW9u
IDIxOTQyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXll
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCAtICh2b2lkKWRyYXdJbkNvbnRl
eHQ6KENHQ29udGV4dFJlZiljb250CiAgICAgUGxhdGZvcm1DQUxheWVyKiBsYXllciA9IFBsYXRm
b3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHNlbGYpOwogICAgIGlmIChsYXllcikgewogICAg
ICAgICBQbGF0Zm9ybUNBTGF5ZXI6OlJlcGFpbnRSZWN0TGlzdCByZWN0c1RvUGFpbnQgPSBQbGF0
Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoY29udGV4dCwgbGF5ZXIpOwotICAgICAg
ICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKGNvbnRleHQsIGxheWVyLCByZWN0
c1RvUGFpbnQsIHNlbGYuaXNSZW5kZXJpbmdJbkNvbnRleHQgPyBHcmFwaGljc0xheWVyUGFpbnRG
bGFnczo6U25hcHNob3R0aW5nIDogR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUpOworICAg
ICAgICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKGNvbnRleHQsIGxheWVyLCBy
ZWN0c1RvUGFpbnQsIHNlbGYuaXNSZW5kZXJpbmdJbkNvbnRleHQgPyBHcmFwaGljc0xheWVyUGFp
bnRGbGFnczo6Tm9uZSA6IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpBbGxvd0FzeW5jSW1hZ2VE
ZWNvZGluZyk7CiAgICAgfQogfQogCkBAIC0xMzcsNyArMTM3LDcgQEAgLSAodm9pZClkcmF3SW5D
b250ZXh0OihDR0NvbnRleHRSZWYpY29udAogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0SXNB
Y2NlbGVyYXRlZENvbnRleHQobGF5ZXItPmFjY2VsZXJhdGVzRHJhd2luZygpKTsKIAogICAgICAg
ICBGbG9hdFJlY3QgY2xpcEJvdW5kcyA9IENHQ29udGV4dEdldENsaXBCb3VuZGluZ0JveChjb250
ZXh0KTsKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVu
dHMobGF5ZXIsIGdyYXBoaWNzQ29udGV4dCwgY2xpcEJvdW5kcywgc2VsZi5pc1JlbmRlcmluZ0lu
Q29udGV4dCA/IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpTbmFwc2hvdHRpbmcgOiBHcmFwaGlj
c0xheWVyUGFpbnRGbGFnczo6Tm9uZSk7CisgICAgICAgIGxheWVyLT5vd25lcigpLT5wbGF0Zm9y
bUNBTGF5ZXJQYWludENvbnRlbnRzKGxheWVyLCBncmFwaGljc0NvbnRleHQsIGNsaXBCb3VuZHMs
IHNlbGYuaXNSZW5kZXJpbmdJbkNvbnRleHQgPyBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6Tm9u
ZSA6IEdyYXBoaWNzTGF5ZXJQYWludEZsYWdzOjpBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZyk7CiAg
ICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludFBoYXNlLmgJKHJldmlz
aW9uIDIxOTQyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludFBoYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgZW51bSBQYWludEJlaGF2aW9yRmxhZ3Mgewog
ICAgIFBhaW50QmVoYXZpb3JTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkgPSAxIDw8IDcsCiAg
ICAgUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb24gICAgICAgICAgICA9IDEgPDwgOCwKICAg
ICBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzICAgID0gMSA8PCA5LCAvLyBQ
YWludCBkb2Vzbid0IHN0b3AgYXQgY29tcG9zaXRpbmcgbGF5ZXIgYm91bmRhcmllcy4KLSAgICBQ
YWludEJlaGF2aW9yU25hcHNob3R0aW5nICAgICAgICAgICAgICAgID0gMSA8PCAxMCwgLy8gSW5k
aWNhdGVzIHNuYXBzaG90dGluZywgZS5nLiBmb3JjZSBzeW5jaHJvbm91cyBpbWFnZSBkZWNvZGlu
Zy4KKyAgICBQYWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2RpbmcgICAgID0gMSA8PCAx
MCwKIH07CiAKIHR5cGVkZWYgdW5zaWduZWQgUGFpbnRCZWhhdmlvcjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2aXNp
b24gMjE5NDI5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAyLDcgKzMwMiwxNiBAQCBib29sIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpoYXNBdXRvSGVpZ2h0CiAKICAgICByZXR1cm4gZmFsc2U7CiB9Ci0gICAg
CisKK0RlY29kaW5nTW9kZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZGVjb2RpbmdNb2RlRm9ySW1h
Z2VEcmF3KGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvKSBjb25zdAoreworICAgIGlmIChkb2N1
bWVudCgpLmlzSW1hZ2VEb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91czsKKyAgICBpZiAocGFpbnRJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2
aW9yQWxsb3dBc3luY0ltYWdlRGVjb2RpbmcpCisgICAgICAgIHJldHVybiBEZWNvZGluZ01vZGU6
OkFzeW5jaHJvbm91czsKKyAgICByZXR1cm4gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91czsKK30K
KwogTGF5b3V0U2l6ZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVsYXRpdmVQb3NpdGlvbk9mZnNl
dCgpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBvcHRpbWl6ZWQgdG8g
YXZvaWQgY2FsbHMgdG8gY29udGFpbmluZ0Jsb2NrKCkgaW4gdGhlIGNvbW1vbiBjYXNlCkBAIC04
ODMsOCArODkyLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZQog
ICAgICAgICAgICAgICAgIGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpLnVwZGF0ZUZyb21T
ZXR0aW5ncyhzZXR0aW5ncygpKTsKIAogICAgICAgICAgICAgYXV0byBpbnRlcnBvbGF0aW9uID0g
Y2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgKmltYWdlLCAmYmdMYXllciwgZ2Vv
bWV0cnkudGlsZVNpemUoKSk7Ci0gICAgICAgICAgICBhdXRvIGRlY29kaW5nTW9kZSA9IChwYWlu
dEluZm8ucGFpbnRCZWhhdmlvciAmIChQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5
ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZykpID8gRGVjb2RpbmdNb2RlOjpTeW5jaHJv
bm91cyA6IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzOwotICAgICAgICAgICAgYXV0byBkcmF3
UmVzdWx0ID0gY29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0
KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGls
ZVNpemUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBv
c2l0ZU9wLCBiZ0xheWVyLmJsZW5kTW9kZSgpLCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgICAgICAgICBhdXRvIGRyYXdS
ZXN1bHQgPSBjb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3Qo
KSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxl
U2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9z
aXRlT3AsIGJnTGF5ZXIuYmxlbmRNb2RlKCksIGRlY29kaW5nTW9kZUZvckltYWdlRHJhdyhwYWlu
dEluZm8pLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgaW50ZXJwb2xhdGlvbikpOwog
ICAgICAgICAgICAgaWYgKGRyYXdSZXN1bHQgPT0gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0
RGVjb2RpbmcpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYmdJbWFnZS0+aXNDYWNoZWRJbWFn
ZSgpKTsKICAgICAgICAgICAgICAgICBiZ0ltYWdlLT5jYWNoZWRJbWFnZSgpLT5hZGRQZW5kaW5n
SW1hZ2VEcmF3aW5nQ2xpZW50KCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCShyZXZpc2lvbiAyMTk0MjkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMjY3LDYgKzI2Nyw4IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgaGFzQXV0b0hlaWdo
dE9yQ29udGFpbmluZ0Jsb2NrV2l0aEF1dG9IZWlnaHQoKSBjb25zdDsKIAorICAgIERlY29kaW5n
TW9kZSBkZWNvZGluZ01vZGVGb3JJbWFnZURyYXcoY29uc3QgUGFpbnRJbmZvJikgY29uc3Q7CisK
IHB1YmxpYzoKICAgICAvLyBGb3IgUmVuZGVyQmxvY2tzIGFuZCBSZW5kZXJJbmxpbmVzIHdpdGgg
bV9zdHlsZS0+c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSLCB0aGlzIHRyYWNrcyB0aGVpciBy
ZW1haW5pbmcgdGV4dCBmcmFnbWVudHMKICAgICBSZW5kZXJUZXh0RnJhZ21lbnQqIGZpcnN0TGV0
dGVyUmVtYWluaW5nVGV4dCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiAyMTk0MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODUsOCArNTg1LDcgQEAg
SW1hZ2VEcmF3UmVzdWx0IFJlbmRlckltYWdlOjpwYWludEludG9SZQogCiAgICAgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb24oKSwgc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogCi0gICAgYXV0
byBkZWNvZGluZ01vZGUgPSAocGFpbnRJbmZvLnBhaW50QmVoYXZpb3IgJiAoUGFpbnRCZWhhdmlv
ckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpKSA/
IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMgOiBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91czsK
LSAgICBhdXRvIGRyYXdSZXN1bHQgPSBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgqaW1n
LCByZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9sYXRp
b24pKTsKKyAgICBhdXRvIGRyYXdSZXN1bHQgPSBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFn
ZSgqaW1nLCByZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlTm9ybWFsLCBkZWNvZGluZ01vZGVGb3JJbWFnZURyYXcocGFpbnRJbmZvKSwgb3JpZW50
YXRpb25EZXNjcmlwdGlvbiwgaW50ZXJwb2xhdGlvbikpOwogICAgIGlmIChkcmF3UmVzdWx0ID09
IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5nKQogICAgICAgICBpbWFnZVJlc291
cmNlKCkuY2FjaGVkSW1hZ2UoKS0+YWRkUGVuZGluZ0ltYWdlRHJhd2luZ0NsaWVudCgqdGhpcyk7
CiAgICAgcmV0dXJuIGRyYXdSZXN1bHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDIxOTQyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzODQsOCArNDM4NCw4IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmEKICAgICAgICAgaWYgKHBh
aW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGlu
Z0xheWVycykKICAgICAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckZsYXR0
ZW5Db21wb3NpdGluZ0xheWVyczsKICAgICAgICAgICAgIAotICAgICAgICBpZiAocGFpbnRpbmdJ
bmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nKQotICAgICAgICAg
ICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOworICAgICAgICBp
ZiAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yQWxsb3dBc3luY0lt
YWdlRGVjb2RpbmcpCisgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JB
bGxvd0FzeW5jSW1hZ2VEZWNvZGluZzsKIAogICAgICAgICBpZiAocGFpbnRpbmdJbmZvLnBhaW50
QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRXhjbHVkZVNlbGVjdGlvbikKICAgICAgICAgICAgIHBh
aW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckV4Y2x1ZGVTZWxlY3Rpb247CkBAIC00NDY2LDgg
KzQ0NjYsOCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhCiAgICAg
ICAgIGlmIChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JGbGF0dGVu
Q29tcG9zaXRpbmdMYXllcnMpCiAgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVo
YXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CiAKLSAgICAgICAgaWYgKHBhaW50aW5nSW5m
by5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZykKLSAgICAgICAgICAg
IHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsKKyAgICAgICAgaWYg
KHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFn
ZURlY29kaW5nKQorICAgICAgICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yQWxs
b3dBc3luY0ltYWdlRGVjb2Rpbmc7CiAKICAgICAgICAgaWYgKHNob3VsZFBhaW50TWFzayhwYWlu
dGluZ0luZm8ucGFpbnRCZWhhdmlvciwgbG9jYWxQYWludEZsYWdzKSkgewogICAgICAgICAgICAg
Ly8gUGFpbnQgdGhlIG1hc2sgZm9yIHRoZSBmcmFnbWVudHMuCkBAIC00Nzk4LDggKzQ3OTgsOCBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnCiAgICAgaWYgKGxvY2Fs
UGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRXhjbHVkZVNlbGVjdGlv
bikKICAgICAgICAgbG9jYWxQYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JFeGNsdWRlU2Vs
ZWN0aW9uOwogCi0gICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWlu
dEJlaGF2aW9yU25hcHNob3R0aW5nKQotICAgICAgICBsb2NhbFBhaW50QmVoYXZpb3IgfD0gUGFp
bnRCZWhhdmlvclNuYXBzaG90dGluZzsKKyAgICBpZiAobG9jYWxQYWludGluZ0luZm8ucGFpbnRC
ZWhhdmlvciAmIFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZykKKyAgICAgICAg
bG9jYWxQYWludEJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGlu
ZzsKIAogICAgIC8vIE9wdGltaXplIGNsaXBwaW5nIGZvciB0aGUgc2luZ2xlIGZyYWdtZW50IGNh
c2UuCiAgICAgYm9vbCBzaG91bGRDbGlwID0gbG9jYWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlS
ZWN0ICYmIGxheWVyRnJhZ21lbnRzLnNpemUoKSA9PSAxICYmIGxheWVyRnJhZ21lbnRzWzBdLnNo
b3VsZFBhaW50Q29udGVudCAmJiAhbGF5ZXJGcmFnbWVudHNbMF0uZm9yZWdyb3VuZFJlY3QuaXNF
bXB0eSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAJKHJldmlzaW9uIDIxOTQyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTg1LDggKzI1ODUs
OCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjCiAKICAgICAgICAg
Ly8gV2UgaGF2ZSB0byB1c2UgdGhlIHNhbWUgcm9vdCBhcyBmb3IgaGl0IHRlc3RpbmcsIGJlY2F1
c2UgYm90aCBtZXRob2RzIGNhbiBjb21wdXRlIGFuZCBjYWNoZSBjbGlwUmVjdHMuCiAgICAgICAg
IFBhaW50QmVoYXZpb3IgYmVoYXZpb3IgPSBQYWludEJlaGF2aW9yTm9ybWFsOwotICAgICAgICBp
ZiAoZmxhZ3MgPT0gR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6OlNuYXBzaG90dGluZykKLSAgICAg
ICAgICAgIGJlaGF2aW9yIHw9IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CisgICAgICAgIGlm
IChmbGFncyA9PSBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6QWxsb3dBc3luY0ltYWdlRGVjb2Rp
bmcpCisgICAgICAgICAgICBiZWhhdmlvciB8PSBQYWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdl
RGVjb2Rpbmc7CiAKICAgICAgICAgcGFpbnRJbnRvTGF5ZXIoZ3JhcGhpY3NMYXllciwgY29udGV4
dCwgZGlydHlSZWN0LCBiZWhhdmlvciwgcGFpbnRpbmdQaGFzZSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCShyZXZpc2lvbiAyMTk0MjkpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjI5LDYgKzIyOSwxMyBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnRDb250ZW50cyhQYWlu
dEluCiAgICAgLy8gdG8gcGFpbnQgaXRzZWxmLiBUaGF0IHdheSBpdCB3aWxsIGNvbXBvc2l0ZSBw
cm9wZXJseSB3aXRoIHotaW5kZXhlZCBsYXllcnMuCiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3Qg
PSBwYWludEluZm8ucmVjdDsKIAorICAgIFBhaW50QmVoYXZpb3Igb2xkQmVoYXZpb3IgPSBQYWlu
dEJlaGF2aW9yTm9ybWFsOworICAgIGlmIChpczxGcmFtZVZpZXc+KCptX3dpZGdldCkgJiYgKHBh
aW50SW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29k
aW5nKSkgeworICAgICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9IGRvd25jYXN0PEZyYW1lVmll
dz4oKm1fd2lkZ2V0KTsKKyAgICAgICAgb2xkQmVoYXZpb3IgPSBmcmFtZVZpZXcucGFpbnRCZWhh
dmlvcigpOworICAgICAgICBmcmFtZVZpZXcuc2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvciB8
IFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZyk7CisgICAgfQorCiAgICAgSW50
UG9pbnQgd2lkZ2V0TG9jYXRpb24gPSBtX3dpZGdldC0+ZnJhbWVSZWN0KCkubG9jYXRpb24oKTsK
ICAgICBJbnRTaXplIHdpZGdldFBhaW50T2Zmc2V0ID0gY29udGVudFBhaW50T2Zmc2V0IC0gd2lk
Z2V0TG9jYXRpb247CiAgICAgLy8gV2hlbiBwYWludGluZyB3aWRnZXRzIGludG8gY29tcG9zaXRp
bmcgbGF5ZXJzLCB0eCBhbmQgdHkgYXJlIHJlbGF0aXZlIHRvIHRoZSBlbmNsb3NpbmcgY29tcG9z
aXRpbmcgbGF5ZXIsCkBAIC0yNTAsNiArMjU3LDggQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50
Q29udGVudHMoUGFpbnRJbgogICAgICAgICAgICAgQVNTRVJUKCFwYWludEluZm8ub3ZlcmxhcFRl
c3RSZXF1ZXN0cy0+Y29udGFpbnModGhpcykgfHwgKHBhaW50SW5mby5vdmVybGFwVGVzdFJlcXVl
c3RzLT5nZXQodGhpcykgPT0gbV93aWRnZXQtPmZyYW1lUmVjdCgpKSk7CiAgICAgICAgICAgICBw
YWludEluZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cy0+c2V0KHRoaXMsIG1fd2lkZ2V0LT5mcmFtZVJl
Y3QoKSk7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHBhaW50SW5mby5wYWludEJlaGF2aW9yICYg
UGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nKQorICAgICAgICAgICAgZnJhbWVW
aWV3LnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IpOwogICAgIH0KIH0KIApJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjE5NDI5KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMDctMTIgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBBc3luYyBpbWFnZSBkZWNvZGlu
ZyBmb3IgbGFyZ2UgaW1hZ2VzIHNob3VsZCBiZSBkaXNhYmxlZCBieSBkZWZhdWx0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ0MzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgLS0gUmVwbGFjZSBldmVyeSBy
ZWZlcmVuY2UgdG8gR3JhcGhpY3NMYXllclBhaW50RmxhZ3M6OlNuYXBzaG90dGluZyBieQorICAg
ICAgICAgICBHcmFwaGljc0xheWVyUGFpbnRGbGFnczo6Tm9uZSBhbmQgZXZlcnkgR3JhcGhpY3NM
YXllclBhaW50RmxhZ3M6Ok5vbmUKKyAgICAgICAgICAgYnkgQWxsb3dBc3luY0ltYWdlRGVjb2Rp
bmcuCisgICAgICAgIC0tIFJlcGxhY2Ugc2V0dGluZyB0aGUgYml0IFBhaW50QmVoYXZpb3JTbmFw
c2hvdHRpbmcgaW4gYW4gZXhpc3RpbmcgUGFpbnRCZWhhdm9pciAKKyAgICAgICAgICAgYnkgcmVz
ZXR0aW5nIHRoZSBiaXQgUGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nLgorCisg
ICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2Up
OgorCiAyMDE3LTA3LTEyICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIFtNZWRpYVN0cmVhbV0gYSBjYXB0dXJlIHNvdXJjZSBmYWlsdXJlIHNob3VsZCBl
bmQgdGhlIE1lZGlhU3RyZWFtVHJhY2sKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQkocmV2aXNpb24gMjE5NDI5KQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OmRyYXdJbkNvbnQKIAogICAgIGNvbnRleHQuc2NhbGUobV9zY2FsZSk7CiAgICAgCi0g
ICAgYXV0byBmbGFncyA9IG1fbGF5ZXItPmNvbnRleHQoKSAmJiBtX2xheWVyLT5jb250ZXh0KCkt
Pm5leHRGbHVzaElzRm9ySW1tZWRpYXRlUGFpbnQoKSA/IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQ
YWludEZsYWdzOjpTbmFwc2hvdHRpbmcgOiBXZWJDb3JlOjpHcmFwaGljc0xheWVyUGFpbnRGbGFn
czo6Tm9uZTsKKyAgICBhdXRvIGZsYWdzID0gbV9sYXllci0+Y29udGV4dCgpICYmIG1fbGF5ZXIt
PmNvbnRleHQoKS0+bmV4dEZsdXNoSXNGb3JJbW1lZGlhdGVQYWludCgpID8gV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclBhaW50RmxhZ3M6Ok5vbmUgOiBXZWJDb3JlOjpHcmFwaGljc0xheWVyUGFpbnRG
bGFnczo6QWxsb3dBc3luY0ltYWdlRGVjb2Rpbmc7CiAgICAgCiAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIG1vdmVkIHRvIFBsYXRmb3JtQ0FMYXllclJlbW90ZSBmb3IgYmV0dGVyIGxheWVy
aW5nLgogICAgIHN3aXRjaCAobV9sYXllci0+bGF5ZXJUeXBlKCkpIHsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhh
bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAkocmV2aXNpb24gMjE5NDI5
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3IEBA
IHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmEKICAgICBpZiAob3B0aW9u
cyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcpCiAgICAgICAg
IHNob3VsZFBhaW50U2VsZWN0aW9uID0gRnJhbWVWaWV3OjpFeGNsdWRlU2VsZWN0aW9uOwogCi0g
ICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWludEJlaGF2aW9y
KCkgfCAoUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZp
b3JTbmFwc2hvdHRpbmcpOworICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciA9IChmcmFt
ZVZpZXctPnBhaW50QmVoYXZpb3IoKSAmIH5QYWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVj
b2RpbmcpIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVyczsKICAgICBpZiAo
b3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KQogICAgICAgICBwYWludEJl
aGF2aW9yIHw9IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dDsKICAgICBpZiAob3B0aW9ucyAm
IFNuYXBzaG90T3B0aW9uc0ZvcmNlV2hpdGVUZXh0KQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAJKHJldmlzaW9uIDIxOTQyOSkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyArMTQzLDcgQEAgUmVmUHRy
PFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZAogICAgIGdyYXBoaWNzQ29udGV4dC0+
dHJhbnNsYXRlKC1wYWludFJlY3QueCgpLCAtcGFpbnRSZWN0LnkoKSk7CiAKICAgICBQYWludEJl
aGF2aW9yIG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKLSAg
ICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IgPSBvbGRQYWludEJlaGF2aW9yIHwgUGFpbnRC
ZWhhdmlvclNlbGVjdGlvbk9ubHkgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5
ZXJzIHwgUGFpbnRCZWhhdmlvclNuYXBzaG90dGluZzsKKyAgICBQYWludEJlaGF2aW9yIHBhaW50
QmVoYXZpb3IgPSAob2xkUGFpbnRCZWhhdmlvciAmIH5QYWludEJlaGF2aW9yQWxsb3dBc3luY0lt
YWdlRGVjb2RpbmcpIHwgUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkgfCBQYWludEJlaGF2aW9y
RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOwogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRp
b25zRm9yY2VCbGFja1RleHQpCiAgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlv
ckZvcmNlQmxhY2tUZXh0OwogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRm9yY2VX
aGl0ZVRleHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTk0MjkpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAor
MjAxNy0wNy0xMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgor
CisgICAgICAgIEFzeW5jIGltYWdlIGRlY29kaW5nIGZvciBsYXJnZSBpbWFnZXMgc2hvdWxkIGJl
IGRpc2FibGVkIGJ5IGRlZmF1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NDQzMgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4K
KworICAgICAgICAtLSBSZW1vdmUgc2V0dGluZyB0aGUgYml0IFBhaW50QmVoYXZpb3JTbmFwc2hv
dHRpbmcgaW4gYW55IG5ldyBQYWludEJlaGF2b2lyLgorICAgICAgICAtLSBSZXR1cm4gUGFpbnRC
ZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nIHdoZW4gdGhlIHJldHVybiB2YWx1ZSB3YXMg
MC4KKyAgICAgICAgLS0gUHJvcGFnYXRlIFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNv
ZGluZyBmcm9tIGEgcGFyZW50IHZpZXcgdG8gCisgICAgICAgICAgIGEgY2hpbGQgdmlldyBpbnN0
ZWFkIG9mIHByb3BhZ2F0aW5nIFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcuCisgICAgICAgIC0t
IFJlcGxhY2Ugc2V0dGluZyB0aGUgYml0IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcgaW4gYW4g
ZXhpc3RpbmcgUGFpbnRCZWhhdm9pcgorICAgICAgICAgICBieSByZXNldHRpbmcgdGhlIGJpdCBQ
YWludEJlaGF2aW9yQWxsb3dBc3luY0ltYWdlRGVjb2RpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3
L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfcGFpbnRCZWhhdmlvckZvckRlc3Rp
bmF0aW9uQ29udGV4dDpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RyYXdSZWN0OmNvbnRlbnRz
T25seTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoaW1h
Z2VGcm9tUmVjdCk6CisKIDIwMTctMDctMTIgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbmFtZSBOYXZpZ2F0aW9uSW5pdGlhdGVkQnlNYWluRnJhbWUgdG8g
SW5pdGlhdGVkQnlNYWluRnJhbWUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQkocmV2aXNpb24gMjE5NDI5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTk1LDIzICs1OTUsMjMgQEAgLSAoUGFpbnRCZWhh
dmlvcilfcGFpbnRCZWhhdmlvckZvckRlc3RpbgogICAgIC8vIC1jdXJyZW50Q29udGV4dERyYXdp
bmdUb1NjcmVlbiByZXR1cm5zIFlFUyBmb3IgYml0bWFwIGNvbnRleHRzLgogICAgIEJPT0wgaXNQ
cmludGluZyA9ICFbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHREcmF3aW5nVG9TY3Jl
ZW5dOwogICAgIGlmIChpc1ByaW50aW5nKQotICAgICAgICByZXR1cm4gUGFpbnRCZWhhdmlvckZs
YXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CisgICAg
ICAgIHJldHVybiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzOwogI2VuZGlm
CiAKICAgICBpZiAoIVdLQ0dDb250ZXh0SXNCaXRtYXBDb250ZXh0KGNvbnRleHQpKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JBbGxvd0FzeW5jSW1hZ2VE
ZWNvZGluZzsKIAogICAgIC8vIElmIHdlJ3JlIGRyYXdpbmcgaW50byBhIGJpdG1hcCwgd2UgbWln
aHQgYmUgc25hcHNob3R0aW5nLCBvciBkcmF3aW5nIGludG8gYSBsYXllci1iYWNrZWQgdmlldy4K
ICAgICBpZiAoV2ViSFRNTFZpZXcgKmh0bWxEb2N1bWVudFZpZXcgPSBbc2VsZiBfd2ViSFRNTERv
Y3VtZW50Vmlld10pIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIGlmIChbW2h0bWxEb2N1
bWVudFZpZXcgd2luZG93XSBpc0luU25hcHNob3R0aW5nUGFpbnRdKQotICAgICAgICAgICAgcmV0
dXJuIFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CisgICAgICAgICAgICByZXR1cm4gMDsKICNl
bmRpZgogICAgICAgICBpZiAoW2h0bWxEb2N1bWVudFZpZXcgX3dlYl9pc0RyYXdpbmdJbnRvTGF5
ZXJdKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gUGFpbnRCZWhh
dmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gUGFp
bnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hv
dHRpbmc7CisgICAgcmV0dXJuIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7
CiB9CiAKIC0gKHZvaWQpX2RyYXdSZWN0OihOU1JlY3QpcmVjdCBjb250ZW50c09ubHk6KEJPT0wp
Y29udGVudHNPbmx5CkBAIC02NDUsOCArNjQ1LDggQEAgLSAodm9pZClfZHJhd1JlY3Q6KE5TUmVj
dClyZWN0IGNvbnRlbnRzTwogICAgICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZp
b3IoKSAmIFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpCiAgICAgICAgICAg
ICAgICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5
ZXJzOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHBhcmVudFZpZXctPnBhaW50
QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpCi0gICAgICAgICAgICAgICAg
cGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yU25hcHNob3R0aW5nOworICAgICAgICAgICAg
aWYgKHBhcmVudFZpZXctPnBhaW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3JBbGxvd0FzeW5j
SW1hZ2VEZWNvZGluZykKKyAgICAgICAgICAgICAgICBwYWludEJlaGF2aW9yIHw9IFBhaW50QmVo
YXZpb3JBbGxvd0FzeW5jSW1hZ2VEZWNvZGluZzsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAg
ICAgICBwYWludEJlaGF2aW9yIHw9IFtzZWxmIF9wYWludEJlaGF2aW9yRm9yRGVzdGluYXRpb25D
b250ZXh0OmN0eF07CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0JKHJldmlzaW9uIDIxOTQyOSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTczMTMsNyArNzMxMyw3IEBAIHN0YXRpYyBDR0lt
YWdlUmVmIGltYWdlRnJvbVJlY3QoRnJhbWUqIGYKICAgICBXZWJIVE1MVmlldyAqdmlldyA9IChX
ZWJIVE1MVmlldyAqKWRvY3VtZW50VmlldzsKICAgICAKICAgICBQYWludEJlaGF2aW9yIG9sZFBh
aW50QmVoYXZpb3IgPSBmcmFtZS0+dmlldygpLT5wYWludEJlaGF2aW9yKCk7Ci0gICAgZnJhbWUt
PnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlv
ckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmcpOwor
ICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoKG9sZFBhaW50QmVoYXZpb3IgJiB+
UGFpbnRCZWhhdmlvckFsbG93QXN5bmNJbWFnZURlY29kaW5nKSB8IFBhaW50QmVoYXZpb3JGbGF0
dGVuQ29tcG9zaXRpbmdMYXllcnMpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwogICAgIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>