<?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>198623</bug_id>
          
          <creation_ts>2019-06-06 14:36:47 -0700</creation_ts>
          <short_desc>Images are not resizing correctly when dragged to a message in 1/3 view</short_desc>
          <delta_ts>2019-06-07 10:50:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1542558</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-06-06 14:36:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/51185518&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542563</commentid>
    <comment_count>1</comment_count>
      <attachid>371527</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-06-06 15:09:24 -0700</bug_when>
    <thetext>Created attachment 371527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542577</commentid>
    <comment_count>2</comment_count>
      <attachid>371527</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-06 15:47:42 -0700</bug_when>
    <thetext>Comment on attachment 371527
Patch

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

&gt; Source/WebCore/editing/WebContentReader.h:74
&gt; +    bool readFilePath(const String&amp;, Optional&lt;float&gt; preferredPresentationWidth = { }, Optional&lt;float&gt; preferredPresentationHeight = { }, const String&amp; contentType = { }) override;

Not critical, but a tiny bit inelegant to have such a long list of arguments. Maybe would be nice just to have a struct just for the width/height (both optional) so it’s easier to pass along from one function to the next and also easier to ignore. This might just clean it up a bit:

struct OptionalSizes {
    Optional&lt;float&gt; width;
    Optional&lt;float&gt; height;
};

Not sure that’s the perfect name, but it’s important that it’s a short name.

On a separate note, not at all new to this patch, it’s not so ideal to turn CGFloat (double) into float and then turn it into a string. Could end up with a long string that would be shorter if it wasn’t converted to a float first. Generally speaking I think that the mix of floating point types is a small problem throughout our graphics code.

&gt; Source/WebCore/platform/ios/PlatformPasteboardIOS.mm:161
&gt; +        if (!IOSApplication::isMobileMail())

This needs a &quot;why&quot; comment. It’s very mysterious to have an unmotivated &quot;if specific app&quot; here. Even better would be to have a function name that makes it clear what the quirk in behavior is, not just a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542582</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-06-06 15:53:07 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 371527 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=371527&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/WebContentReader.h:74
&gt; &gt; +    bool readFilePath(const String&amp;, Optional&lt;float&gt; preferredPresentationWidth = { }, Optional&lt;float&gt; preferredPresentationHeight = { }, const String&amp; contentType = { }) override;
&gt; 
&gt; Not critical, but a tiny bit inelegant to have such a long list of
&gt; arguments. Maybe would be nice just to have a struct just for the
&gt; width/height (both optional) so it’s easier to pass along from one function
&gt; to the next and also easier to ignore. This might just clean it up a bit:
&gt; 
&gt; struct OptionalSizes {
&gt;     Optional&lt;float&gt; width;
&gt;     Optional&lt;float&gt; height;
&gt; };
&gt; 
I use such structures all the time in the layout code! I should have done that here too.

&gt; Not sure that’s the perfect name, but it’s important that it’s a short name.
&gt; 
&gt; On a separate note, not at all new to this patch, it’s not so ideal to turn
&gt; CGFloat (double) into float and then turn it into a string. Could end up
&gt; with a long string that would be shorter if it wasn’t converted to a float
&gt; first. Generally speaking I think that the mix of floating point types is a
&gt; small problem throughout our graphics code.
&gt; 
&gt; &gt; Source/WebCore/platform/ios/PlatformPasteboardIOS.mm:161
&gt; &gt; +        if (!IOSApplication::isMobileMail())
&gt; 
&gt; This needs a &quot;why&quot; comment. It’s very mysterious to have an unmotivated &quot;if
&gt; specific app&quot; here. Even better would be to have a function name that makes
&gt; it clear what the quirk in behavior is, not just a comment.
Agree. Will add one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542847</commentid>
    <comment_count>4</comment_count>
      <attachid>371589</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-06-07 09:44:56 -0700</bug_when>
    <thetext>Created attachment 371589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542873</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-07 10:50:08 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 371589:

resize-observer/element-leak.html bug 198667
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542874</commentid>
    <comment_count>6</comment_count>
      <attachid>371589</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-07 10:50:55 -0700</bug_when>
    <thetext>Comment on attachment 371589
Patch

Clearing flags on attachment: 371589

Committed r246207: &lt;https://trac.webkit.org/changeset/246207&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542875</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-07 10:50:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371527</attachid>
            <date>2019-06-06 15:09:24 -0700</date>
            <delta_ts>2019-06-07 09:44:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198623-20190606150923.patch</filename>
            <type>text/plain</type>
            <size>25325</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2U5N2QxZDhkZmI5ZDNk
OWMwY2RiOWUwMzFmMmIwNzM5MDVjNjU5NC4uY2MzMmZjYmJlZTNmN2NhY2YzMDllZDlhZjkxOGYx
MDIwNmZlNWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE5LTA2LTA2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1hZ2VzIGFyZSBub3QgcmVz
aXppbmcgY29ycmVjdGx5IHdoZW4gZHJhZ2dlZCB0byBhIG1lc3NhZ2UgaW4gMS8zIHZpZXcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODYyMworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTExODU1MTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTWFpbCdzIG1heC13aWR0aDogMTAwJTsgZGVmYXVsdCBz
dHlsZSBpcyBpbiBjb25mbGljdCB3aXRoIHRoZSBwcmVmZXJyZWQgcHJlc2VudGF0aW9uIHNpemUu
IFRoaXMgcGF0Y2ggcHJlc2VydmVzIHRoZSBleGlzdGluZyBiZWhhdmlvdXIgZm9yIE1haWwgYnkK
KyAgICAgICAgbm90IHNldHRpbmcgdGhlIGhlaWdodCAoYW5kIHJlbHkgb24gdGhlIHdpZHRoICsg
YXNwZWN0IHJhdGlvKS4gCisKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaDoK
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjphdHRhY2htZW50Rm9yRmlsZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVudEZv
ckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKToK
KyAgICAgICAgKiBlZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRnJhZ21lbnRGcm9tUGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIGVkaXRpbmcvbWFy
a3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwp
OgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZC5oOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRGaWxlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRl
cjo6cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50UmVh
ZGVyOjpyZWFkRGF0YUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1J
bmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OmRlY29kZSk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFz
dGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisKIDIwMTktMDYtMDQgIFphbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIERlY291cGxl
IGZsb2F0IHBsYWNlbWVudCBhbmQgbGluZSBzaHJpbmtpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb250ZW50UmVhZGVyLmgKaW5kZXggMmI5ZTk5OTk5Y2I3Nzg1OTFhNjBhYzBkM2Q5NmFl
YmJhYWRlZjFjNC4uNDk4YjBhMmJhNzZjMTk0MTIwNWIwNzNmNzc1ZTBlODlmNDJlNDQ0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKQEAgLTcxLDE0ICs3MSwx
NCBAQCBwdWJsaWM6CiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgcmVh
ZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRmlsZVBh
dGgoY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8RmxvYXRTaXplPiBwcmVmZXJyZWRQcmVzZW50YXRp
b25TaXplID0geyB9LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSBvdmVycmlkZTsK
KyAgICBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxmbG9hdD4gcHJl
ZmVycmVkUHJlc2VudGF0aW9uV2lkdGggPSB7IH0sIE9wdGlvbmFsPGZsb2F0PiBwcmVmZXJyZWRQ
cmVzZW50YXRpb25IZWlnaHQgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSB7IH0p
IG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYp
IG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRS
VEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25hbDxGbG9hdFNpemU+IHByZWZl
cnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZEltYWdl
KFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8ZmxvYXQ+
IHByZWZlcnJlZFByZXNlbnRhdGlvbldpZHRoID0geyB9LCBPcHRpb25hbDxmbG9hdD4gcHJlZmVy
cmVkUHJlc2VudGF0aW9uSGVpZ2h0ID0geyB9KSBvdmVycmlkZTsKICAgICBib29sIHJlYWRVUkwo
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFk
RGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgT3B0aW9uYWw8RmxvYXRTaXplPiBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0g
eyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25hbDxmbG9hdD4gcHJl
ZmVycmVkUHJlc2VudGF0aW9uV2lkdGggPSB7IH0sIE9wdGlvbmFsPGZsb2F0PiBwcmVmZXJyZWRQ
cmVzZW50YXRpb25IZWlnaHQgPSB7IH0pIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgYm9vbCByZWFk
UGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogfTsKQEAgLTk1LDE0ICs5NSwxNCBA
QCBwdWJsaWM6CiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgcmVhZFdl
YkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRmlsZVBhdGgo
Y29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8RmxvYXRTaXplPiA9IHsgfSwgY29uc3QgU3RyaW5nJiA9
IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHJlYWRGaWxlUGF0aChj
b25zdCBTdHJpbmcmLCBPcHRpb25hbDxmbG9hdD4gLypwcmVmZXJyZWRQcmVzZW50YXRpb25XaWR0
aCovID0geyB9LCBPcHRpb25hbDxmbG9hdD4gLypwcmVmZXJyZWRQcmVzZW50YXRpb25IZWlnaHQq
LyA9IHsgfSwgY29uc3QgU3RyaW5nJiA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICBib29sIHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkSW1hZ2UoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8RmxvYXRTaXplPiA9IHsg
fSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHJlYWRJbWFnZShSZWY8U2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxmbG9hdD4gLypwcmVmZXJyZWRQ
cmVzZW50YXRpb25XaWR0aCovID0geyB9LCBPcHRpb25hbDxmbG9hdD4gLypwcmVmZXJyZWRQcmVz
ZW50YXRpb25IZWlnaHQqLyA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBi
b29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPEZsb2F0U2l6ZT4gPSB7IH0pIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxmbG9hdD4gLypwcmVmZXJy
ZWRQcmVzZW50YXRpb25XaWR0aCovID0geyB9LCBPcHRpb25hbDxmbG9hdD4gLypwcmVmZXJyZWRQ
cmVzZW50YXRpb25IZWlnaHQqLyA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNl
bmRpZgogICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggYmU4NWIwYWIzMGEzYmE3ODczZDZhYWJj
NjBiYTU0YWIzMzRmMjA2OC4uYTFiZTMzN2ZhZmVmZGMxZTc2MzJkMGQwNGRlZTdkYmNjMTZmMTFm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KQEAgLTI0Nyw3ICsyNDcsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0Ns
aWVudFNpZGVBdHRhY2htZW50RGF0YShjb25zdCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1z
dGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2ht
ZW50KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgT3B0aW9uYWw8RmxvYXRTaXplPiBw
cmVmZXJyZWRTaXplKQorc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVu
dEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIE9wdGlv
bmFsPGZsb2F0PiBwcmVmZXJyZWRXaWR0aCwgT3B0aW9uYWw8ZmxvYXQ+IHByZWZlcnJlZEhlaWdo
dCkKIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIGF1dG8gYXR0YWNobWVu
dCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRh
ZywgZG9jdW1lbnQpOwpAQCAtMjYxLDEwICsyNjEsMTAgQEAgc3RhdGljIFJlZjxEb2N1bWVudEZy
YWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERv
Y3UKICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpOwogICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVu
dCwgQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgY29udGVudFR5cGUpKSk7CiAgICAgICAgICAg
ICBpbWFnZS0+c2V0QXR0YWNobWVudEVsZW1lbnQoV1RGTW92ZShhdHRhY2htZW50KSk7Ci0gICAg
ICAgICAgICBpZiAocHJlZmVycmVkU2l6ZSkgewotICAgICAgICAgICAgICAgIGltYWdlLT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9t
aWNTdHJpbmc6Om51bWJlcihwcmVmZXJyZWRTaXplLT53aWR0aCgpKSk7Ci0gICAgICAgICAgICAg
ICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpo
ZWlnaHRBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcihwcmVmZXJyZWRTaXplLT5oZWlnaHQoKSkp
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHByZWZlcnJlZFdpZHRoKQorICAgICAg
ICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxO
YW1lczo6d2lkdGhBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcigqcHJlZmVycmVkV2lkdGgpKTsK
KyAgICAgICAgICAgIGlmIChwcmVmZXJyZWRIZWlnaHQpCisgICAgICAgICAgICAgICAgaW1hZ2Ut
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpoZWlnaHRBdHRy
LCBBdG9taWNTdHJpbmc6Om51bWJlcigqcHJlZmVycmVkSGVpZ2h0KSk7CiAgICAgICAgICAgICBm
cmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShpbWFnZSkpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyhidWZmZXItPnNpemUoKSwg
Y29udGVudFR5cGUsIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKTsKQEAgLTY4MSwxNCArNjgx
LDE0IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcm
IHRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVh
ZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9w
dGlvbmFsPEZsb2F0U2l6ZT4gcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2ViQ29u
dGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHR5cGUsIE9wdGlvbmFsPGZsb2F0PiBwcmVmZXJyZWRQcmVzZW50YXRpb25XaWR0aCwg
T3B0aW9uYWw8ZmxvYXQ+IHByZWZlcnJlZFByZXNlbnRhdGlvbkhlaWdodCkKIHsKICAgICBBU1NF
UlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1l
bnQoKTsKICAgICBpZiAoc2hvdWxkUmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKCkp
Ci0gICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KGZy
YW1lLCBkb2N1bWVudCwgV1RGTW92ZShidWZmZXIpLCB0eXBlLCBwcmVmZXJyZWRQcmVzZW50YXRp
b25TaXplKSk7CisgICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRh
Y2htZW50KGZyYW1lLCBkb2N1bWVudCwgV1RGTW92ZShidWZmZXIpLCB0eXBlLCBwcmVmZXJyZWRQ
cmVzZW50YXRpb25XaWR0aCwgcHJlZmVycmVkUHJlc2VudGF0aW9uSGVpZ2h0KSk7CiAgICAgZWxz
ZQotICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3Vt
ZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKGJ1ZmZl
ci5nZXQoKSwgdHlwZSkpLCBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSk7CisgICAgICAgIGFk
ZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6
Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgpLCB0eXBl
KSksIHByZWZlcnJlZFByZXNlbnRhdGlvbldpZHRoLCBwcmVmZXJyZWRQcmVzZW50YXRpb25IZWln
aHQpKTsKIAogICAgIHJldHVybiBmcmFnbWVudDsKIH0KQEAgLTcwNCw3ICs3MDQsNyBAQCBzdGF0
aWMgU3RyaW5nIHR5cGVGb3JBdHRhY2htZW50RWxlbWVudChjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKQogICAgIHJldHVybiBtaW1lVHlwZS5pc0VtcHR5KCkgPyBjb250ZW50VHlwZSA6IG1pbWVU
eXBlOwogfQogCi1zdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRmlsZVBhdGgo
RnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHBhdGgsIE9wdGlvbmFsPEZsb2F0U2l6ZT4gcHJl
ZmVycmVkU2l6ZSwgY29uc3QgU3RyaW5nJiBleHBsaWNpdENvbnRlbnRUeXBlKQorc3RhdGljIFJl
ZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckZpbGVQYXRoKEZyYW1lJiBmcmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBPcHRpb25hbDxmbG9hdD4gcHJlZmVycmVkV2lkdGgsIE9wdGlvbmFsPGZs
b2F0PiBwcmVmZXJyZWRIZWlnaHQsIGNvbnN0IFN0cmluZyYgZXhwbGljaXRDb250ZW50VHlwZSkK
IHsKICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZigqZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAg
YXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVz
OjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBAIC03MzgsMTAgKzczOCwxMCBAQCBzdGF0aWMg
UmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRmlsZVBhdGgoRnJhbWUmIGZyYW1lLCBjb25z
dCBTdHJpbmcmIHBhdGgsCiAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOwogICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRv
Y3VtZW50LCBGaWxlOjpjcmVhdGUocGF0aCkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1l
bnRFbGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOwotICAgICAgICBpZiAocHJlZmVycmVkU2l6
ZSkgewotICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKHByZWZlcnJlZFNp
emUtPndpZHRoKCkpKTsKLSAgICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6aGVpZ2h0QXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIo
cHJlZmVycmVkU2l6ZS0+aGVpZ2h0KCkpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAocHJlZmVy
cmVkV2lkdGgpCisgICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIoKnByZWZl
cnJlZFdpZHRoKSk7CisgICAgICAgIGlmIChwcmVmZXJyZWRIZWlnaHQpCisgICAgICAgICAgICBp
bWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhlaWdo
dEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRIZWlnaHQpKTsKICAgICAgICAg
cmV0dXJuIGltYWdlOwogICAgIH0KIApAQCAtNzQ5LDcgKzc0OSw3IEBAIHN0YXRpYyBSZWY8SFRN
TEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwKICAgICByZXR1cm4gYXR0YWNobWVudDsKIH0KIAotc3RhdGljIFJlZjxIVE1MRWxl
bWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25h
bDxGbG9hdFNpemU+IHByZWZlcnJlZFNpemUpCitzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRh
Y2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIE9wdGlvbmFsPGZsb2F0PiBw
cmVmZXJyZWRXaWR0aCwgT3B0aW9uYWw8ZmxvYXQ+IHByZWZlcnJlZEhlaWdodCkKIHsKICAgICBh
dXRvIGRvY3VtZW50ID0gbWFrZVJlZigqZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byBhdHRh
Y2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2ht
ZW50VGFnLCBkb2N1bWVudCk7CkBAIC03NzUsMTAgKzc3NSwxMCBAQCBzdGF0aWMgUmVmPEhUTUxF
bGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjbwogICAgICAgICBhdXRvIGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwg
RmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShidWZmZXIsIFdURk1vdmUoYXR0YWNobWVudFR5cGUp
KSwgV1RGTW92ZShmaWxlTmFtZSkpKSk7CiAgICAgICAgIGltYWdlLT5zZXRBdHRhY2htZW50RWxl
bWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKLSAgICAgICAgaWYgKHByZWZlcnJlZFNpemUpIHsK
LSAgICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6d2lkdGhBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcihwcmVmZXJyZWRTaXplLT53
aWR0aCgpKSk7Ci0gICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihIVE1MTmFtZXM6OmhlaWdodEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKHByZWZl
cnJlZFNpemUtPmhlaWdodCgpKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHByZWZlcnJlZFdp
ZHRoKQorICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRX
aWR0aCkpOworICAgICAgICBpZiAocHJlZmVycmVkSGVpZ2h0KQorICAgICAgICAgICAgaW1hZ2Ut
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpoZWlnaHRBdHRy
LCBBdG9taWNTdHJpbmc6Om51bWJlcigqcHJlZmVycmVkSGVpZ2h0KSk7CiAgICAgICAgIHJldHVy
biBpbWFnZTsKICAgICB9CiAKQEAgLTc4OCw3ICs3ODgsNyBAQCBzdGF0aWMgUmVmPEhUTUxFbGVt
ZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjbwogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotYm9vbCBXZWJD
b250ZW50UmVhZGVyOjpyZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBPcHRpb25hbDxG
bG9hdFNpemU+IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcm
IHBhdGgsIE9wdGlvbmFsPGZsb2F0PiBwcmVmZXJyZWRQcmVzZW50YXRpb25XaWR0aCwgT3B0aW9u
YWw8ZmxvYXQ+IHByZWZlcnJlZFByZXNlbnRhdGlvbkhlaWdodCwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKIHsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgIWZyYW1lLmRvY3VtZW50KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc5OSw3ICs3OTksNyBAQCBib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIE9wdGlvbmFsPEZsb2F0
U2l6ZT4gcHJlZgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVu
YWJsZWQoKSkKLSAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnRGb3JGaWxl
UGF0aChmcmFtZSwgcGF0aCwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSwgY29udGVudFR5cGUp
KTsKKyAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnRGb3JGaWxlUGF0aChm
cmFtZSwgcGF0aCwgcHJlZmVycmVkUHJlc2VudGF0aW9uV2lkdGgsIHByZWZlcnJlZFByZXNlbnRh
dGlvbkhlaWdodCwgY29udGVudFR5cGUpKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHRydWU7CkBA
IC04NDcsNyArODQ3LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgT3B0aW9uYWw8RmxvYXRTaXpl
PiBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
RGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIG5hbWUsIE9wdGlvbmFsPGZsb2F0PiBwcmVmZXJyZWRQcmVzZW50YXRpb25XaWR0
aCwgT3B0aW9uYWw8ZmxvYXQ+IHByZWZlcnJlZFByZXNlbnRhdGlvbkhlaWdodCkKIHsKICAgICBp
ZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODYzLDcgKzg2
Myw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICAgICAgZnJhZ21lbnQgPSBkb2N1bWVu
dC0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKLSAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoYXR0YWNobWVudEZvckRhdGEoZnJhbWUs
IGJ1ZmZlciwgdHlwZSwgbmFtZSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOworICAgIGZy
YWdtZW50LT5hcHBlbmRDaGlsZChhdHRhY2htZW50Rm9yRGF0YShmcmFtZSwgYnVmZmVyLCB0eXBl
LCBuYW1lLCBwcmVmZXJyZWRQcmVzZW50YXRpb25XaWR0aCwgcHJlZmVycmVkUHJlc2VudGF0aW9u
SGVpZ2h0KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKICAgICBVTlVTRURfUEFS
QU0obmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0b3JH
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcAppbmRleCA4
YzRlYTI5MGZjNWI4YzNkNGMzZDA5Y2UzMDU0MTJkODI2YTVkY2E3Li5jMWQyY2U3MDExMWE0YmNi
ZDFmNjQ4MmY3NjU5ZjQwOGQxMzkwNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9FZGl0b3JHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0Vk
aXRvckd0ay5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKICAg
ICAgICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksICJpbWFn
ZS9wbmciKTsKICAgICAgICAgICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZv
ckltYWdlQW5kVVJMKCpmcmFtZS5kb2N1bWVudCgpLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTCgq
ZnJhbWUuZG9jdW1lbnQoKSwgYmxvYiksIHsgfSk7CisgICAgICAgICAgICByZXR1cm4gY3JlYXRl
RnJhZ21lbnRGb3JJbWFnZUFuZFVSTCgqZnJhbWUuZG9jdW1lbnQoKSwgRE9NVVJMOjpjcmVhdGVP
YmplY3RVUkwoKmZyYW1lLmRvY3VtZW50KCksIGJsb2IpLCB7IH0sIHsgfSk7CiAgICAgICAgIH0K
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBkOWVjZjE1OTY3ZWFmYzBl
ZjFkZmVhZjI1YTcwMDg0ZGQwZTYzZGI4Li5jZDM4MzRlYmRhNTE1MjM5ZmI0ODlhOGEwNTkwOTUy
ZWMwYjNjMDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0xMjM2LDE1ICsxMjM2
LDE0IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9y
bVRvRnJhZ21lbnQoRG9jdW1lbnQmIG91dHB1dERvCiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQog
Ci1SZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUFuZFVSTChEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsLCBPcHRpb25hbDxGbG9hdFNpemU+IHBy
ZWZlcnJlZFNpemUpCitSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFn
ZUFuZFVSTChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsLCBPcHRpb25hbDxm
bG9hdD4gcHJlZmVycmVkV2lkdGgsIE9wdGlvbmFsPGZsb2F0PiBwcmVmZXJyZWRIZWlnaHQpCiB7
CiAgICAgYXV0byBpbWFnZUVsZW1lbnQgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQpOwogICAgIGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihIVE1MTmFtZXM6OnNyY0F0dHIsIHVybCk7Ci0gICAgaWYgKHByZWZlcnJlZFNpemUpIHsKLSAg
ICAgICAgaW1hZ2VFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6d2lkdGhBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcihwcmVmZXJyZWRTaXplLT53
aWR0aCgpKSk7Ci0gICAgICAgIGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihIVE1MTmFtZXM6OmhlaWdodEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKHBy
ZWZlcnJlZFNpemUtPmhlaWdodCgpKSk7Ci0gICAgfQotCisgICAgaWYgKHByZWZlcnJlZFdpZHRo
KQorICAgICAgICBpbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRX
aWR0aCkpOworICAgIGlmIChwcmVmZXJyZWRIZWlnaHQpCisgICAgICAgIGltYWdlRWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhlaWdodEF0dHIs
IEF0b21pY1N0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRIZWlnaHQpKTsKICAgICBhdXRvIGZyYWdt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgIGZyYWdtZW50LT5h
cHBlbmRDaGlsZChpbWFnZUVsZW1lbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCBl
ODY5NmJiMTQyYjUzMDZjMjQ1YWYyYTkwZTVkZTBkMzQ0NTM4NDI1Li5jNTA0ODc3NGQ5YzU1Y2Ni
NjczOTI3YzZmMzhiNzE2YzBiNTBhN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTYw
LDcgKzYwLDcgQEAgV0VCQ09SRV9FWFBPUlQgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVRleHQoUmFuZ2UmIGNvbnRleHQsIGNvbnMKIFdFQkNPUkVfRVhQT1JUIFJlZjxE
b2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoRG9jdW1lbnQmLCBjb25z
dCBTdHJpbmcmIG1hcmt1cCwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBQYXJzZXJDb250ZW50UG9s
aWN5ID0gQWxsb3dTY3JpcHRpbmdDb250ZW50KTsKIEV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVudEZy
YWdtZW50Pj4gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChFbGVtZW50JiwgY29uc3Qg
U3RyaW5nJiBtYXJrdXAsIFBhcnNlckNvbnRlbnRQb2xpY3kpOwogUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChEb2N1bWVudCYsIGNv
bnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZU1JTUVUeXBlKTsK
LVJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKERvY3Vt
ZW50JiwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8RmxvYXRTaXplPiBwcmVmZXJyZWRTaXplKTsK
K1JlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKERvY3Vt
ZW50JiwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8ZmxvYXQ+IHByZWZlcnJlZFdpZHRoLCBPcHRp
b25hbDxmbG9hdD4gcHJlZmVycmVkSGVpZ2h0KTsKIEV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVudEZy
YWdtZW50Pj4gY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KEVsZW1lbnQmLCBjb25zdCBTdHJpbmcm
IG1hcmt1cCwgUGFyc2VyQ29udGVudFBvbGljeSk7CiAKIGJvb2wgaXNQbGFpblRleHRNYXJrdXAo
Tm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDk3ZWViMWY1MTBm
Y2MzYjE2ZDJmZWEwZTc3YTQwZmJkNTlhMTlkZmEuLjhlNGY3NjBiZmU0ZTczMTYxOTYyODcxNGMw
MGY5OWY5NjAyOTljMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTEz
NiwxNCArMTM2LDE0IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1
YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxGbG9hdFNpemU+IHByZWZl
cnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSB7
IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIE9w
dGlvbmFsPGZsb2F0PiBwcmVmZXJyZWRQcmVzZW50YXRpb25XaWR0aCA9IHsgfSwgT3B0aW9uYWw8
ZmxvYXQ+IHByZWZlcnJlZFByZXNlbnRhdGlvbkhlaWdodCA9IHsgfSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGhzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkSFRNTChjb25z
dCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAg
dmlydHVhbCBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcm
IHR5cGUsIE9wdGlvbmFsPEZsb2F0U2l6ZT4gcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsg
fSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25hbDxmbG9hdD4gcHJlZmVycmVkUHJlc2VudGF0aW9u
V2lkdGggPSB7IH0sIE9wdGlvbmFsPGZsb2F0PiBwcmVmZXJyZWRQcmVzZW50YXRpb25IZWlnaHQg
PSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIHRpdGxlKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25h
bDxGbG9hdFNpemU+IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIE9wdGlvbmFsPGZsb2F0PiBwcmVmZXJyZWRQcmVzZW50
YXRpb25XaWR0aCA9IHsgfSwgT3B0aW9uYWw8ZmxvYXQ+IHByZWZlcnJlZFByZXNlbnRhdGlvbkhl
aWdodCA9IHsgfSkgPSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBib29sIHJlYWRQbGFpblRleHQo
Y29uc3QgU3RyaW5nJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEl0ZW1JbmZvLmgKaW5kZXggOTAzOTk2MjQ1ZTg1NTY3MTQ3ZjI0ZGE5M2FkYzZlMWEzY2Jm
NDkwMy4uNWUwNmRlNmE2MGZlMmNjZTM2NTYxYWUyNjk0N2M5ZDBiODAwYmY1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmgKQEAgLTQyLDcgKzQyLDgg
QEAgc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbyB7CiAgICAgVmVjdG9yPFN0cmluZz4gY29udGVu
dFR5cGVzRm9yRmlsZVVwbG9hZDsKICAgICBWZWN0b3I8U3RyaW5nPiBjb250ZW50VHlwZXNCeUZp
ZGVsaXR5OwogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlTmFtZTsKLSAgICBPcHRpb25hbDxGbG9h
dFNpemU+IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemU7CisgICAgT3B0aW9uYWw8ZmxvYXQ+IHBy
ZWZlcnJlZFByZXNlbnRhdGlvbldpZHRoOworICAgIE9wdGlvbmFsPGZsb2F0PiBwcmVmZXJyZWRQ
cmVzZW50YXRpb25IZWlnaHQ7CiAgICAgYm9vbCBpc05vblRleHRUeXBlIHsgZmFsc2UgfTsKICAg
ICBib29sIGNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50IHsgZmFsc2UgfTsKICAg
ICBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlIHByZWZlcnJlZFByZXNlbnRhdGlvblN0
eWxlIHsgUGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZTo6VW5zcGVjaWZpZWQgfTsKQEAg
LTk4LDcgKzk5LDcgQEAgc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbyB7CiB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgogdm9pZCBQYXN0ZWJvYXJkSXRlbUluZm86OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgcGF0aHNGb3JGaWxlVXBsb2FkIDw8IGNvbnRl
bnRUeXBlc0ZvckZpbGVVcGxvYWQgPDwgY29udGVudFR5cGVzQnlGaWRlbGl0eSA8PCBzdWdnZXN0
ZWRGaWxlTmFtZSA8PCBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplIDw8IGlzTm9uVGV4dFR5cGUg
PDwgY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQ7CisgICAgZW5jb2RlciA8PCBw
YXRoc0ZvckZpbGVVcGxvYWQgPDwgY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZCA8PCBjb250ZW50
VHlwZXNCeUZpZGVsaXR5IDw8IHN1Z2dlc3RlZEZpbGVOYW1lIDw8IHByZWZlcnJlZFByZXNlbnRh
dGlvbldpZHRoIDw8IHByZWZlcnJlZFByZXNlbnRhdGlvbkhlaWdodCA8PCBpc05vblRleHRUeXBl
IDw8IGNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50OwogICAgIGVuY29kZXIuZW5j
b2RlRW51bShwcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSk7CiB9CiAKQEAgLTExOCw3ICsxMTks
MTAgQEAgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkSXRlbUluZm86OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnN1
Z2dlc3RlZEZpbGVOYW1lKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpKQorICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnByZWZlcnJlZFByZXNlbnRhdGlvbldpZHRoKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LnByZWZlcnJlZFByZXNlbnRhdGlvbkhlaWdodCkpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc05vblRleHRUeXBl
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXgg
OGUwMDVjYWI1MWFiYzNkNjMxY2Q1NGIzZjMxZDAzMzhjYThmNWU0ZS4uMzU3ZmNkZTRjOTg4OWQ5
YmZjZjMzYzNmMDAwMjA3YzU0YjgwOTM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTIyNSw3ICsyMjUsNyBAQCBQYXN0ZWJvYXJkOjpSZWFk
ZXJSZXN1bHQgUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUo
UGFzdGVibwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5y
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1l
KTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAg
ICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsK
LSAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpLCB0eXBlLCBpdGVtSW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSA/IFJl
YWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOworICAg
ICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCksIHR5cGUsIGl0ZW1JbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvbldpZHRoLCBpdGVtSW5m
by5wcmVmZXJyZWRQcmVzZW50YXRpb25IZWlnaHQpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6
IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCiAgICAgaWYgKFt0eXBlIGlz
RXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVJMXSkgewpAQCAtMzA3
LDcgKzMwNyw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJl
YWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljCiAgICAgICAgICAgICBhdXRvIHR5
cGVGb3JGaWxlVXBsb2FkID0gaW5mby5jb250ZW50VHlwZUZvckhpZ2hlc3RGaWRlbGl0eUl0ZW0o
KTsKICAgICAgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChpLCB0eXBlRm9yRmlsZVVwbG9hZCwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKICAg
ICAgICAgICAgICAgICByZWFkVVJMQWxvbmdzaWRlQXR0YWNobWVudElmTmVjZXNzYXJ5KHJlYWRl
ciwgc3RyYXRlZ3ksIHR5cGVGb3JGaWxlVXBsb2FkLCBtX3Bhc3RlYm9hcmROYW1lLCBpKTsKLSAg
ICAgICAgICAgICAgICByZWFkZXIucmVhZERhdGFCdWZmZXIoKmJ1ZmZlciwgdHlwZUZvckZpbGVV
cGxvYWQsIGluZm8uc3VnZ2VzdGVkRmlsZU5hbWUsIGluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZSk7CisgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWREYXRhQnVmZmVyKCpidWZmZXIsIHR5
cGVGb3JGaWxlVXBsb2FkLCBpbmZvLnN1Z2dlc3RlZEZpbGVOYW1lLCBpbmZvLnByZWZlcnJlZFBy
ZXNlbnRhdGlvbldpZHRoLCBpbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvbkhlaWdodCk7CiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTM0OCw3
ICszNDgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhQ
YXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLAogICAgICAgICBhdXRvIGNvbnRlbnRU
eXBlID0gaW5mby5jb250ZW50VHlwZUZvckhpZ2hlc3RGaWRlbGl0eUl0ZW0oKTsKICAgICAgICAg
aWYgKGNhblJlYWRBdHRhY2htZW50ICYmIHByZWZlcnNBdHRhY2htZW50UmVwcmVzZW50YXRpb24o
aW5mbykpIHsKICAgICAgICAgICAgIHJlYWRVUkxBbG9uZ3NpZGVBdHRhY2htZW50SWZOZWNlc3Nh
cnkocmVhZGVyLCBzdHJhdGVneSwgY29udGVudFR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGluZGV4
KTsKLSAgICAgICAgICAgIHJlYWRlci5yZWFkRmlsZVBhdGgoV1RGTW92ZShhdHRhY2htZW50Rmls
ZVBhdGgpLCBpbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUsIGNvbnRlbnRUeXBlKTsKKyAg
ICAgICAgICAgIHJlYWRlci5yZWFkRmlsZVBhdGgoV1RGTW92ZShhdHRhY2htZW50RmlsZVBhdGgp
LCBpbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvbldpZHRoLCBpbmZvLnByZWZlcnJlZFByZXNlbnRh
dGlvbkhlaWdodCwgY29udGVudFR5cGUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICNlbmRpZgpAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3Bl
Y3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsCiAg
ICAgICAgIH0KICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgICAgICBpZiAoY2Fu
UmVhZEF0dGFjaG1lbnQgJiYgcmVzdWx0ID09IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGUp
Ci0gICAgICAgICAgICByZWFkZXIucmVhZEZpbGVQYXRoKFdURk1vdmUoYXR0YWNobWVudEZpbGVQ
YXRoKSwgaW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplLCBjb250ZW50VHlwZSk7CisgICAg
ICAgICAgICByZWFkZXIucmVhZEZpbGVQYXRoKFdURk1vdmUoYXR0YWNobWVudEZpbGVQYXRoKSwg
aW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25XaWR0aCwgaW5mby5wcmVmZXJyZWRQcmVzZW50YXRp
b25IZWlnaHQsIGNvbnRlbnRUeXBlKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDhh
ODZlNGE0MDA3ZGQ1MDM4ZWZmMzA4MDU3ZmMwN2JjMjI1OTdhMjQuLjIxMzZkYWYzODBlZjAyNGYw
NWQzZDYxY2Q2Nzk5ZGE3NDE5ZjQwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2lt
cG9ydCAiQ29sb3IuaCIKICNpbXBvcnQgIkltYWdlLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgi
CisjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNoYXJlZEJ1
ZmZlci5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLmgiCkBAIC0xNTUsOCArMTU2LDExIEBAIFBhc3RlYm9hcmRJdGVtSW5mbyBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4KQog
I2lmIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxFX0FORF9URUFNX0RBVEEK
ICAgICBpbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlID0gcGFzdGVib2FyZEl0ZW1QcmVz
ZW50YXRpb25TdHlsZShpdGVtUHJvdmlkZXIucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpOwog
I2VuZGlmCi0gICAgaWYgKCFDR1NpemVFcXVhbFRvU2l6ZShpdGVtUHJvdmlkZXIucHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZSwgQ0dTaXplWmVybykpCi0gICAgICAgIGluZm8ucHJlZmVycmVkUHJl
c2VudGF0aW9uU2l6ZSA9IEZsb2F0U2l6ZSB7IGl0ZW1Qcm92aWRlci5wcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplIH07CisgICAgaWYgKCFDR1NpemVFcXVhbFRvU2l6ZShpdGVtUHJvdmlkZXIucHJl
ZmVycmVkUHJlc2VudGF0aW9uU2l6ZSwgQ0dTaXplWmVybykpIHsKKyAgICAgICAgaW5mby5wcmVm
ZXJyZWRQcmVzZW50YXRpb25XaWR0aCA9IGl0ZW1Qcm92aWRlci5wcmVmZXJyZWRQcmVzZW50YXRp
b25TaXplLndpZHRoOworICAgICAgICBpZiAoIUlPU0FwcGxpY2F0aW9uOjppc01vYmlsZU1haWwo
KSkKKyAgICAgICAgICAgIGluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uSGVpZ2h0ID0gaXRlbVBy
b3ZpZGVyLnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUuaGVpZ2h0OworICAgIH0KICAgICBpbmZv
LmNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50ID0gaXRlbVByb3ZpZGVyLndlYl9j
b250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudDsKICAgICBpbmZvLnN1Z2dlc3RlZEZp
bGVOYW1lID0gaXRlbVByb3ZpZGVyLnN1Z2dlc3RlZE5hbWU7CiAgICAgTlNBcnJheTxOU1N0cmlu
ZyAqPiAqcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycyA9IGl0ZW1Qcm92aWRlci5yZWdpc3RlcmVk
VHlwZUlkZW50aWZpZXJzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371589</attachid>
            <date>2019-06-07 09:44:56 -0700</date>
            <delta_ts>2019-06-07 10:50:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198623-20190607094456.patch</filename>
            <type>text/plain</type>
            <size>19315</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2U5N2QxZDhkZmI5ZDNk
OWMwY2RiOWUwMzFmMmIwNzM5MDVjNjU5NC4uY2MzMmZjYmJlZTNmN2NhY2YzMDllZDlhZjkxOGYx
MDIwNmZlNWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE5LTA2LTA2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1hZ2VzIGFyZSBub3QgcmVz
aXppbmcgY29ycmVjdGx5IHdoZW4gZHJhZ2dlZCB0byBhIG1lc3NhZ2UgaW4gMS8zIHZpZXcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODYyMworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTExODU1MTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTWFpbCdzIG1heC13aWR0aDogMTAwJTsgZGVmYXVsdCBz
dHlsZSBpcyBpbiBjb25mbGljdCB3aXRoIHRoZSBwcmVmZXJyZWQgcHJlc2VudGF0aW9uIHNpemUu
IFRoaXMgcGF0Y2ggcHJlc2VydmVzIHRoZSBleGlzdGluZyBiZWhhdmlvdXIgZm9yIE1haWwgYnkK
KyAgICAgICAgbm90IHNldHRpbmcgdGhlIGhlaWdodCAoYW5kIHJlbHkgb24gdGhlIHdpZHRoICsg
YXNwZWN0IHJhdGlvKS4gCisKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaDoK
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjphdHRhY2htZW50Rm9yRmlsZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVudEZv
ckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKToK
KyAgICAgICAgKiBlZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRnJhZ21lbnRGcm9tUGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIGVkaXRpbmcvbWFy
a3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwp
OgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZC5oOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRGaWxlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRl
cjo6cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50UmVh
ZGVyOjpyZWFkRGF0YUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1J
bmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OmRlY29kZSk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFz
dGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisKIDIwMTktMDYtMDQgIFphbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIERlY291cGxl
IGZsb2F0IHBsYWNlbWVudCBhbmQgbGluZSBzaHJpbmtpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb250ZW50UmVhZGVyLmgKaW5kZXggMmI5ZTk5OTk5Y2I3Nzg1OTFhNjBhYzBkM2Q5NmFl
YmJhYWRlZjFjNC4uODdmNDU1NTAzMDliNTk1Mjk4MDUwYjFkNTk1NzA1ZmJkYzc5NzE4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKQEAgLTcxLDE0ICs3MSwx
NCBAQCBwdWJsaWM6CiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgcmVh
ZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRmlsZVBh
dGgoY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8RmxvYXRTaXplPiBwcmVmZXJyZWRQcmVzZW50YXRp
b25TaXplID0geyB9LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSBvdmVycmlkZTsK
KyAgICBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUg
PSB7IH0pIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkSW1hZ2UoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25hbDxGbG9hdFNpemU+
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVh
ZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0
aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKICAgICBi
b29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgbmFtZSwgT3B0aW9uYWw8RmxvYXRTaXplPiBwcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogI2Vu
ZGlmCiAgICAgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogfTsK
QEAgLTk1LDE0ICs5NSwxNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCByZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8RmxvYXRTaXplPiA9IHsg
fSwgY29uc3QgU3RyaW5nJiA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9LCBj
b25zdCBTdHJpbmcmID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wg
cmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgYm9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBi
b29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFJURihT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxGbG9hdFNpemU+ID0geyB9KSBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxGbG9hdFNp
emU+ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZERhdGFC
dWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUHJlc2Vu
dGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogICAg
IGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggYmU4NWIwYWIzMGEzYmE3ODczZDZhYWJjNjBiYTU0YWIz
MzRmMjA2OC4uYmYyOWE4NmM0OTFlZjM5YWM0NWZjMjhkODkyZmI3ZmU0ODNkZjQ5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW0KQEAgLTI0Nyw3ICsyNDcsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVB
dHRhY2htZW50RGF0YShjb25zdCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1zdGF0aWMgUmVm
PERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgT3B0aW9uYWw8RmxvYXRTaXplPiBwcmVmZXJyZWRT
aXplKQorc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdl
QXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkU2l6ZSkKIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAg
IGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1l
czo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwpAQCAtMjYxLDEwICsyNjEsMTAgQEAgc3RhdGlj
IFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChG
cmFtZSYgZnJhbWUsIERvY3UKICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9i
amVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgY29udGVudFR5cGUp
KSk7CiAgICAgICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVudEVsZW1lbnQoV1RGTW92ZShhdHRh
Y2htZW50KSk7Ci0gICAgICAgICAgICBpZiAocHJlZmVycmVkU2l6ZSkgewotICAgICAgICAgICAg
ICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6
d2lkdGhBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcihwcmVmZXJyZWRTaXplLT53aWR0aCgpKSk7
Ci0gICAgICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjpoZWlnaHRBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcihwcmVmZXJyZWRT
aXplLT5oZWlnaHQoKSkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHByZWZlcnJl
ZFNpemUud2lkdGgpCisgICAgICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVy
KCpwcmVmZXJyZWRTaXplLndpZHRoKSk7CisgICAgICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS5o
ZWlnaHQpCisgICAgICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpoZWlnaHRBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcigqcHJl
ZmVycmVkU2l6ZS5oZWlnaHQpKTsKICAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChX
VEZNb3ZlKGltYWdlKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhdHRhY2htZW50
LT51cGRhdGVBdHRyaWJ1dGVzKGJ1ZmZlci0+c2l6ZSgpLCBjb250ZW50VHlwZSwgZGVmYXVsdElt
YWdlQXR0YWNobWVudE5hbWUpOwpAQCAtNjgxLDcgKzY4MSw3IEBAIGJvb2wgV2ViQ29udGVudFJl
YWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPEZsb2F0U2l6ZT4gcHJlZmVy
cmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAgICBBU1NFUlQoZnJhbWUuZG9j
dW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKQEAgLTcw
NCw3ICs3MDQsNyBAQCBzdGF0aWMgU3RyaW5nIHR5cGVGb3JBdHRhY2htZW50RWxlbWVudChjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAgIHJldHVybiBtaW1lVHlwZS5pc0VtcHR5KCkgPyBj
b250ZW50VHlwZSA6IG1pbWVUeXBlOwogfQogCi1zdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRh
Y2htZW50Rm9yRmlsZVBhdGgoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHBhdGgsIE9wdGlv
bmFsPEZsb2F0U2l6ZT4gcHJlZmVycmVkU2l6ZSwgY29uc3QgU3RyaW5nJiBleHBsaWNpdENvbnRl
bnRUeXBlKQorc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckZpbGVQYXRoKEZy
YW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJl
ZFNpemUsIGNvbnN0IFN0cmluZyYgZXhwbGljaXRDb250ZW50VHlwZSkKIHsKICAgICBhdXRvIGRv
Y3VtZW50ID0gbWFrZVJlZigqZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byBhdHRhY2htZW50
ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFn
LCBkb2N1bWVudCk7CkBAIC03MzgsMTAgKzczOCwxMCBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50
PiBhdHRhY2htZW50Rm9yRmlsZVBhdGgoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHBhdGgs
CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OwogICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpj
cmVhdGUocGF0aCkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1v
dmUoYXR0YWNobWVudCkpOwotICAgICAgICBpZiAocHJlZmVycmVkU2l6ZSkgewotICAgICAgICAg
ICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3
aWR0aEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKHByZWZlcnJlZFNpemUtPndpZHRoKCkpKTsK
LSAgICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6aGVpZ2h0QXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIocHJlZmVycmVkU2l6ZS0+
aGVpZ2h0KCkpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkK
KyAgICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6d2lkdGhBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53
aWR0aCkpOworICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS5oZWlnaHQpCisgICAgICAgICAgICBp
bWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhlaWdo
dEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRTaXplLmhlaWdodCkpOwogICAg
ICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfQogCkBAIC03NDksNyArNzQ5LDcgQEAgc3RhdGljIFJl
ZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckZpbGVQYXRoKEZyYW1lJiBmcmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXRoLAogICAgIHJldHVybiBhdHRhY2htZW50OwogfQogCi1zdGF0aWMgUmVmPEhU
TUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIE9w
dGlvbmFsPEZsb2F0U2l6ZT4gcHJlZmVycmVkU2l6ZSkKK3N0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+
IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9u
U2l6ZSBwcmVmZXJyZWRTaXplKQogewogICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmKCpmcmFt
ZS5kb2N1bWVudCgpKTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1l
bnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTc3NSwx
MCArNzc1LDEwIEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZy
YW1lJiBmcmFtZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvCiAgICAgICAgIGF1dG8gaW1hZ2Ug
PSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICBpbWFnZS0+c2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVS
TDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGJ1
ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBXVEZNb3ZlKGZpbGVOYW1lKSkpKTsKICAg
ICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOwot
ICAgICAgICBpZiAocHJlZmVycmVkU2l6ZSkgewotICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21pY1N0
cmluZzo6bnVtYmVyKHByZWZlcnJlZFNpemUtPndpZHRoKCkpKTsKLSAgICAgICAgICAgIGltYWdl
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6aGVpZ2h0QXR0
ciwgQXRvbWljU3RyaW5nOjpudW1iZXIocHJlZmVycmVkU2l6ZS0+aGVpZ2h0KCkpKTsKLSAgICAg
ICAgfQorICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKKyAgICAgICAgICAgIGltYWdl
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRy
LCBBdG9taWNTdHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53aWR0aCkpOworICAgICAgICBp
ZiAocHJlZmVycmVkU2l6ZS5oZWlnaHQpCisgICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmhlaWdodEF0dHIsIEF0b21pY1N0cmlu
Zzo6bnVtYmVyKCpwcmVmZXJyZWRTaXplLmhlaWdodCkpOwogICAgICAgICByZXR1cm4gaW1hZ2U7
CiAgICAgfQogCkBAIC03ODgsNyArNzg4LDcgQEAgc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0
YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY28KIAog
I2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLWJvb2wgV2ViQ29udGVudFJl
YWRlcjo6cmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgT3B0aW9uYWw8RmxvYXRTaXpl
PiBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQor
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiB7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8ICFmcmFtZS5kb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NDcsNyArODQ3LDcgQEAgYm9vbCBXZWJD
b250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRh
QnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSwgT3B0aW9uYWw8RmxvYXRTaXplPiBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXpl
KQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAgICBpZiAoYnVmZmVyLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmlu
ZGV4IGQ5ZWNmMTU5NjdlYWZjMGVmMWRmZWFmMjVhNzAwODRkZDBlNjNkYjguLmNhYzAwOTczMjEy
NWNjODk5NTkwZTRiNDRhNjQ1ZWM0ZWZmMTc5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAKQEAgLTEyMzYsMTUgKzEyMzYsMTQgQEAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0
ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChEb2N1bWVudCYgb3V0cHV0RG8KICAgICBy
ZXR1cm4gZnJhZ21lbnQ7CiB9CiAKLVJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVu
dEZvckltYWdlQW5kVVJMKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB1cmwsIE9w
dGlvbmFsPEZsb2F0U2l6ZT4gcHJlZmVycmVkU2l6ZSkKK1JlZjxEb2N1bWVudEZyYWdtZW50PiBj
cmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiB1cmwsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkKIHsKICAgICBhdXRvIGlt
YWdlRWxlbWVudCA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgaW1h
Z2VFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6
c3JjQXR0ciwgdXJsKTsKLSAgICBpZiAocHJlZmVycmVkU2l6ZSkgewotICAgICAgICBpbWFnZUVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0
aEF0dHIsIEF0b21pY1N0cmluZzo6bnVtYmVyKHByZWZlcnJlZFNpemUtPndpZHRoKCkpKTsKLSAg
ICAgICAgaW1hZ2VFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6aGVpZ2h0QXR0ciwgQXRvbWljU3RyaW5nOjpudW1iZXIocHJlZmVycmVkU2l6ZS0+
aGVpZ2h0KCkpKTsKLSAgICB9Ci0KKyAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKKyAgICAg
ICAgaW1hZ2VFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxO
YW1lczo6d2lkdGhBdHRyLCBBdG9taWNTdHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53aWR0
aCkpOworICAgIGlmIChwcmVmZXJyZWRTaXplLmhlaWdodCkKKyAgICAgICAgaW1hZ2VFbGVtZW50
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6aGVpZ2h0QXR0
ciwgQXRvbWljU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUuaGVpZ2h0KSk7CiAgICAgYXV0
byBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICBmcmFn
bWVudC0+YXBwZW5kQ2hpbGQoaW1hZ2VFbGVtZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgK
aW5kZXggZTg2OTZiYjE0MmI1MzA2YzI0NWFmMmE5MGU1ZGUwZDM0NDUzODQyNS4uYTVlYjgyNDRm
ZTQ5ZDQxNGM0Mzg1ZGY1MjcwM2U4NTc4MjdmZjQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5o
CkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFz
cyBOb2RlOwogY2xhc3MgUGFnZTsKK3N0cnVjdCBQcmVzZW50YXRpb25TaXplOwogY2xhc3MgUXVh
bGlmaWVkTmFtZTsKIGNsYXNzIFJhbmdlOwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKQEAgLTYw
LDcgKzYxLDcgQEAgV0VCQ09SRV9FWFBPUlQgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVRleHQoUmFuZ2UmIGNvbnRleHQsIGNvbnMKIFdFQkNPUkVfRVhQT1JUIFJlZjxE
b2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoRG9jdW1lbnQmLCBjb25z
dCBTdHJpbmcmIG1hcmt1cCwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBQYXJzZXJDb250ZW50UG9s
aWN5ID0gQWxsb3dTY3JpcHRpbmdDb250ZW50KTsKIEV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVudEZy
YWdtZW50Pj4gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChFbGVtZW50JiwgY29uc3Qg
U3RyaW5nJiBtYXJrdXAsIFBhcnNlckNvbnRlbnRQb2xpY3kpOwogUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9yVHJhbnNmb3JtVG9GcmFnbWVudChEb2N1bWVudCYsIGNv
bnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZU1JTUVUeXBlKTsK
LVJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKERvY3Vt
ZW50JiwgY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8RmxvYXRTaXplPiBwcmVmZXJyZWRTaXplKTsK
K1JlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKERvY3Vt
ZW50JiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKTsKIEV4
Y2VwdGlvbk9yPFJlZjxEb2N1bWVudEZyYWdtZW50Pj4gY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50
KEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgUGFyc2VyQ29udGVudFBvbGljeSk7CiAK
IGJvb2wgaXNQbGFpblRleHRNYXJrdXAoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5oCmluZGV4IDk3ZWViMWY1MTBmY2MzYjE2ZDJmZWEwZTc3YTQwZmJkNTlhMTlkZmEuLjI4
NzdjZWRiZTYwODI2Y2MyMDg1MGM5MTcxZWI4OTY1ZDVhOTQzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTEzNiwxNCArMTM2LDE0IEBAIHB1YmxpYzoKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZm
ZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBP
cHRpb25hbDxGbG9hdFNpemU+IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUgPSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEZp
bGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSA9IHsgfSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IHsgfSkgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVh
ZFJURihTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShSZWY8
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPEZsb2F0U2l6ZT4g
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBy
ZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSA9IDA7Ci0g
ICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25hbDxGbG9hdFNpemU+IHByZWZlcnJl
ZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFC
dWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAw
OwogI2VuZGlmCiAgICAgdmlydHVhbCBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikg
PSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJ
dGVtSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmgK
aW5kZXggOTAzOTk2MjQ1ZTg1NTY3MTQ3ZjI0ZGE5M2FkYzZlMWEzY2JmNDkwMy4uZDFkMjMwOGFk
OTk1YWNmOWM3YTVmNTNkZWQ5ZmQyYTA4MGVlY2Y3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmgKQEAgLTM3LDEyICszNywzOSBAQCBlbnVtIGNsYXNz
IFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGUgewogICAgIEF0dGFjaG1lbnQKIH07CiAK
K3N0cnVjdCBQcmVzZW50YXRpb25TaXplIHsKKyAgICBPcHRpb25hbDxkb3VibGU+IHdpZHRoOwor
ICAgIE9wdGlvbmFsPGRvdWJsZT4gaGVpZ2h0OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxQcmVzZW50YXRpb25TaXplPiBkZWNvZGUoRGVjb2RlciYpOwor
fTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUHJlc2VudGF0aW9uU2l6ZTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCB3aWR0aCA8PCBo
ZWlnaHQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxQcmVzZW50YXRp
b25TaXplPiBQcmVzZW50YXRpb25TaXplOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBQcmVzZW50YXRpb25TaXplIHJlc3VsdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC53aWR0aCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5oZWlnaHQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKK30KKwogc3RydWN0IFBhc3RlYm9hcmRJdGVt
SW5mbyB7CiAgICAgVmVjdG9yPFN0cmluZz4gcGF0aHNGb3JGaWxlVXBsb2FkOwogICAgIFZlY3Rv
cjxTdHJpbmc+IGNvbnRlbnRUeXBlc0ZvckZpbGVVcGxvYWQ7CiAgICAgVmVjdG9yPFN0cmluZz4g
Y29udGVudFR5cGVzQnlGaWRlbGl0eTsKICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZU5hbWU7Ci0g
ICAgT3B0aW9uYWw8RmxvYXRTaXplPiBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplOworICAgIFBy
ZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTsKICAgICBib29sIGlzTm9u
VGV4dFR5cGUgeyBmYWxzZSB9OwogICAgIGJvb2wgY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9h
ZENvbnRlbnQgeyBmYWxzZSB9OwogICAgIFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGUg
cHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgeyBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0
eWxlOjpVbnNwZWNpZmllZCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggOGE4NmU0YTQwMDdkZDUwMzhlZmYzMDgw
NTdmYzA3YmMyMjU5N2EyNC4uMmY1Mzk3NDNkMWMzMTk2NWU4ZjQwNWY2Y2I0YzhiNTJkNmM5MWQ3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJDb2xvci5oIgogI2ltcG9y
dCAiSW1hZ2UuaCIKICNpbXBvcnQgIlBhc3RlYm9hcmQuaCIKKyNpbXBvcnQgIlJ1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0ICJVVElV
dGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCIKQEAgLTE1
NSw4ICsxNTYsMTUgQEAgUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgpCiAjaWYgUEFTVEVCT0FSRF9TVVBQT1JU
U19QUkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1fREFUQQogICAgIGluZm8ucHJlZmVycmVkUHJl
c2VudGF0aW9uU3R5bGUgPSBwYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlKGl0ZW1Qcm92
aWRlci5wcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSk7CiAjZW5kaWYKLSAgICBpZiAoIUNHU2l6
ZUVxdWFsVG9TaXplKGl0ZW1Qcm92aWRlci5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplLCBDR1Np
emVaZXJvKSkKLSAgICAgICAgaW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0gRmxvYXRT
aXplIHsgaXRlbVByb3ZpZGVyLnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgfTsKKyAgICBpZiAo
IUNHU2l6ZUVxdWFsVG9TaXplKGl0ZW1Qcm92aWRlci5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXpl
LCBDR1NpemVaZXJvKSkgeworICAgICAgICBhdXRvIGFkanVzdGVkUHJlZmVycmVkUHJlc2VudGF0
aW9uSGVpZ2h0ID0gW10oYXV0byBoZWlnaHQpIC0+IE9wdGlvbmFsPGRvdWJsZT4geworICAgICAg
ICAgICAgaWYgKCFJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVNYWlsKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHsgaGVpZ2h0IH07CisgICAgICAgICAgICAvLyBNYWlsJ3MgbWF4LXdpZHRoOiAx
MDAlOyBkZWZhdWx0IHN0eWxlIGlzIGluIGNvbmZsaWN0IHdpdGggdGhlIHByZWZlcnJlZCBwcmVz
ZW50YXRpb24gc2l6ZSBhbmQgY2FuIGxlYWQgdG8gdW5leHBlY3RlZGx5IHN0cmV0Y2hlZCBpbWFn
ZXMuIE5vdCBzZXR0aW5nIHRoZSBoZWlnaHQgZm9yY2VzIGxheW91dCB0byBwcmVzZXJ2ZSB0aGUg
YXNwZWN0IHJhdGlvLgorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfTsKKyAgICAg
ICAgaW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0gUHJlc2VudGF0aW9uU2l6ZSB7IGl0
ZW1Qcm92aWRlci5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplLndpZHRoLCBhZGp1c3RlZFByZWZl
cnJlZFByZXNlbnRhdGlvbkhlaWdodChpdGVtUHJvdmlkZXIucHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZS5oZWlnaHQpIH07CisgICAgfQogICAgIGluZm8uY29udGFpbnNGaWxlVVJMQW5kRmlsZVVw
bG9hZENvbnRlbnQgPSBpdGVtUHJvdmlkZXIud2ViX2NvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxv
YWRDb250ZW50OwogICAgIGluZm8uc3VnZ2VzdGVkRmlsZU5hbWUgPSBpdGVtUHJvdmlkZXIuc3Vn
Z2VzdGVkTmFtZTsKICAgICBOU0FycmF5PE5TU3RyaW5nICo+ICpyZWdpc3RlcmVkVHlwZUlkZW50
aWZpZXJzID0gaXRlbVByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnM7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>