<?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>192570</bug_id>
          
          <creation_ts>2018-12-10 14:55:03 -0800</creation_ts>
          <short_desc>[iOS] Support dropping contact card data (public.vcard) in editable content</short_desc>
          <delta_ts>2018-12-13 15:32:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1486754</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-12-10 14:55:03 -0800</bug_when>
    <thetext>&lt;rdar://problem/35626913&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487005</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-12-11 12:14:13 -0800</bug_when>
    <thetext>For added context, our current behavior when dropping a vCard in both rich and plain editable elements is that we dump the entire contents of the vCard as plain text :(

The desired behavior is probably:

• If there is a URL accompanying the vCard, dropping into a rich contenteditable with attachments enabled should produce a link and an attachment element, and dropping into a rich contenteditable without attachments should insert just a link.

• If there is no URL accompanying the vCard, dropping into a rich contenteditable area should insert an attachment element, and dropping into a rich contenteditable without attachments enabled should do nothing.

• If there is a URL accompanying the vCard, dropping into a plain contenteditable should insert the URL.

• If there is no URL accompanying the vCard, dropping into a plain contenteditable should do nothing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487054</commentid>
    <comment_count>2</comment_count>
      <attachid>357080</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-12-11 15:53:26 -0800</bug_when>
    <thetext>Created attachment 357080
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487061</commentid>
    <comment_count>3</comment_count>
      <attachid>357084</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-12-11 16:17:03 -0800</bug_when>
    <thetext>Created attachment 357084
Try to fix macOS builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487064</commentid>
    <comment_count>4</comment_count>
      <attachid>357085</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-12-11 16:48:22 -0800</bug_when>
    <thetext>Created attachment 357085
Fix 32-bit macOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487678</commentid>
    <comment_count>5</comment_count>
      <attachid>357085</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-12-13 13:11:52 -0800</bug_when>
    <thetext>Comment on attachment 357085
Fix 32-bit macOS build

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:28
&gt; +#if WK_API_ENABLED &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(TVOS)

isn&apos;t this just PLATFORM(IOS) now?

WK_API_ENABLED is always true there, and that excludes watch and tv

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:1851
&gt; +    [contact setFamilyName:@&quot;Bitdiddle&quot;];

🤨</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487679</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-12-13 13:13:08 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #5)
&gt; Comment on attachment 357085 [details]
&gt; Fix 32-bit macOS build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=357085&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:28
&gt; &gt; +#if WK_API_ENABLED &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(TVOS)
&gt; 
&gt; isn&apos;t this just PLATFORM(IOS) now?
&gt; 
&gt; WK_API_ENABLED is always true there, and that excludes watch and tv

OH you want mac too. OK so (PLATFORM(MAC) || PLATFORM(IOS)) &amp;&amp; WK_API_ENABLED

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:1851
&gt; &gt; +    [contact setFamilyName:@&quot;Bitdiddle&quot;];
&gt; 
&gt; 🤨</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487687</commentid>
    <comment_count>7</comment_count>
      <attachid>357085</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-12-13 13:31:52 -0800</bug_when>
    <thetext>Comment on attachment 357085
Fix 32-bit macOS build

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

&gt;&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:28
&gt;&gt;&gt; +#if WK_API_ENABLED &amp;&amp; !PLATFORM(WATCHOS) &amp;&amp; !PLATFORM(TVOS)
&gt;&gt; 
&gt;&gt; isn&apos;t this just PLATFORM(IOS) now?
&gt;&gt; 
&gt;&gt; WK_API_ENABLED is always true there, and that excludes watch and tv
&gt; 
&gt; OH you want mac too. OK so (PLATFORM(MAC) || PLATFORM(IOS)) &amp;&amp; WK_API_ENABLED

Sounds good! Changed to (PLATFORM(MAC) || PLATFORM(IOS)) &amp;&amp; WK_API_ENABLED

&gt;&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:1851
&gt;&gt;&gt; +    [contact setFamilyName:@&quot;Bitdiddle&quot;];
&gt;&gt; 
&gt;&gt; 🤨
&gt; 
&gt; 

Heh, I do like my SICP names.

Changed to a more generic &quot;Foo Bar&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487724</commentid>
    <comment_count>8</comment_count>
      <attachid>357258</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-12-13 14:47:48 -0800</bug_when>
    <thetext>Created attachment 357258
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487745</commentid>
    <comment_count>9</comment_count>
      <attachid>357258</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-13 15:25:29 -0800</bug_when>
    <thetext>Comment on attachment 357258
Patch for landing

Clearing flags on attachment: 357258

Committed r239184: &lt;https://trac.webkit.org/changeset/239184&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357080</attachid>
            <date>2018-12-11 15:53:26 -0800</date>
            <delta_ts>2018-12-11 16:17:01 -0800</delta_ts>
            <desc>First pass</desc>
            <filename>bug-192570-20181211155326.patch</filename>
            <type>text/plain</type>
            <size>28078</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2U0MGJlMzk1MmRmZWNh
NzY0ZGFkY2UxOTRmYzFiZDhkNjEyODI5YS4uMzc0NmQxZDRjYzk5ODExNThlZDcxMjFlMjY4ZWVl
ZDU0MGU5Mzc5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE4LTEyLTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1cHBv
cnQgZHJvcHBpbmcgY29udGFjdCBjYXJkIGRhdGEgKHB1YmxpYy52Y2FyZCkgaW4gZWRpdGFibGUg
Y29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyNTcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTYyNjkxMz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIGFjY2Vw
dGluZyB2Q2FyZCAoLnZjZikgZGF0YSB2aWEgZHJvcCBvbiBpT1MuIFNlZSBiZWxvdyBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgICAgIFRlc3RzOiAgRHJhZ0FuZERyb3BUZXN0cy5FeHRlcm5hbFNv
dXJjZUNvbnRhY3RJbnRvRWRpdGFibGVBcmVhcworICAgICAgICAgICAgICAgIERyYWdBbmREcm9w
VGVzdHMuRXh0ZXJuYWxTb3VyY2VNYXBJdGVtQW5kQ29udGFjdFRvVXBsb2FkQXJlYQorICAgICAg
ICAgICAgICAgIERyYWdBbmREcm9wVGVzdHMuRXh0ZXJuYWxTb3VyY2VNYXBJdGVtSW50b0VkaXRh
YmxlQXJlYXMKKyAgICAgICAgICAgICAgICBXS0F0dGFjaG1lbnRUZXN0c0lPUy5JbnNlcnREcm9w
cGVkQ29udGFjdEFzQXR0YWNobWVudAorICAgICAgICAgICAgICAgIFdLQXR0YWNobWVudFRlc3Rz
SU9TLkluc2VydERyb3BwZWRNYXBJdGVtQXNBdHRhY2htZW50CisKKyAgICAgICAgKiBlZGl0aW5n
L1dlYkNvbnRlbnRSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRS
ZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRGb3JGaWxlUGF0aCk6
CisKKyAgICAgICAgUHVsbCBvdXQgbG9naWMgdG8gY3JlYXRlIGFuIGF0dGFjaG1lbnQgZnJvbSBh
IGZpbGUgcGF0aCBvdXQgaW50byBhIHN0YXRpYyBoZWxwZXIuIFVzZSB0aGlzIGluIGByZWFkRmls
ZVBhdGhzYAorICAgICAgICBhcyB3ZWxsIGFzIGByZWFkVmlydHVhbENvbnRhY3RGaWxlYC4KKwor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRocyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkVmlydHVhbENvbnRhY3RGaWxlKToK
KworICAgICAgICBBZGQgYSBwYXN0ZWJvYXJkIHJlYWRpbmcgbWV0aG9kIHRoYXQgcmVhZHMgYSB2
Q2FyZCBmaWxlICh3aXRoIGFuIG9wdGlvbmFsIFVSTCkgYXMgd2ViIGNvbnRlbnQuIFRoZSByZXN1
bHRpbmcKKyAgICAgICAgZnJhZ21lbnQgY29uc2lzdHMgb2YgZWl0aGVyIGFuIGFuY2hvciBhbmQg
YW4gYXR0YWNobWVudCBlbGVtZW50LCBvciBqdXN0IGFuIGF0dGFjaG1lbnQgZWxlbWVudCBpZiB0
aGUgVVJMIGlzCisgICAgICAgIGVtcHR5LiBJbiB0aGUgY2FzZSBvZiBhbiBgTUtNYXBJdGVtYCwg
dGhlIFVSTCBpcyBwb3B1bGF0ZWQsIHNvIHdlIGdlbmVyYXRlIGJvdGggZWxlbWVudHM7IHdoZW4g
ZHJhZ2dpbmcgYQorICAgICAgICBjb250YWN0LCB0aGVyZSBpcyBubyBhc3NvY2lhdGVkIFVSTCwg
c28gd2Ugb25seSBoYXZlIGFuIGF0dGFjaG1lbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9y
VHlwZSk6CisKKyAgICAgICAgQXVnbWVudCB0aGlzIHRvIHRha2UgdGhlIGN1cnJlbnQgYFBhc3Rl
Ym9hcmRJdGVtSW5mb2AgYXMgd2VsbDsgdXNlIHRoaXMgaXRlbSBpbmZvcm1hdGlvbiB0byBnZXQg
YSBmaWxlIHBhdGggZm9yCisgICAgICAgICJwdWJsaWMudmNhcmQiIGRhdGEsIHdoaWNoIGlzIHRo
ZW4gcGFzc2VkIG9uIHRvIHRoZSB3ZWIgY29udGVudCByZWFkZXIuIEFkZGl0aW9uYWxseSwgYnkg
cmV0dXJuaW5nCisgICAgICAgIGBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlYCBoZXJlLCB3
ZSBwcmV2ZW50IHRoZSB3ZWIgY29udGVudCByZWFkZXIgZnJvbSBleHRyYWN0aW5nIHRoZSBwbGFp
biB0ZXh0IGNvbnRlbnRzCisgICAgICAgIG9mIHRoZSB2Q2FyZCBhbmQgZHVtcGluZyBpdCBhcyBw
bGFpbiB0ZXh0IGluIHRoZSBlZGl0YWJsZSBlbGVtZW50ICh0aGlzIHdvdWxkIG90aGVyd2lzZSBo
YXBwZW4sIHNpbmNlCisgICAgICAgICJwdWJsaWMudmNhcmQiIGNvbmZvcm1zIHRvICJwdWJsaWMu
dGV4dCIpLgorCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAg
ICgtW05TSXRlbVByb3ZpZGVyIHdlYl9maWxlVXBsb2FkQ29udGVudFR5cGVzXSk6CisKKyAgICAg
ICAgUHJldmVudCB0aGUgImNvbS5hcHBsZS5tYXBraXQubWFwLWl0ZW0iIFVUSSBmcm9tIGJlaW5n
IGNvbnNpZGVyZWQgYXMgZmlsZSB1cGxvYWQgY29udGVudC4gVGhpcyBzcGVjaWFsIGNhc2UgaXMK
KyAgICAgICAgdHJpY2t5LCBzaW5jZSAiY29tLmFwcGxlLm1hcGtpdC5tYXAtaXRlbSIgY29uZm9y
bXMgdG8gInB1YmxpYy5jb250ZW50IiwgeWV0IGl0cyBjb3JyZXNwb25kaW5nIGRhdGEgaXMgb25s
eQorICAgICAgICBzdWl0YWJsZSBmb3IgZGVzZXJpYWxpemF0aW9uIGludG8gYW4gYE1LTWFwSXRl
bWAuCisKIDIwMTgtMTItMTEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gU2VuZCB0aGUgZnVsbCBsaXN0IG9mIGZpbGUgdXBsb2FkIFVSTHMg
YW5kIHR5cGVzIGluIFBhc3RlYm9hcmRJdGVtSW5mbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvbnRlbnRSZWFkZXIuaAppbmRleCBlMDAwYTU0N2JjZTg3M2U1NmI1OGRjYTMwNGYzZDg3MGZi
ZDRmMTZkLi5jNzc0YjRhMjA1OTQzZDhkNGRlZjc2MjYzOTllNDNkNTVjMzUzMWU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaApAQCAtNzcsNiArNzcsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICBi
b29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUpIG92
ZXJyaWRlOwogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxl
KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRWaXJ0dWFsQ29udGFjdEZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1cmxUaXRsZSkgb3ZlcnJpZGU7
CiAjZW5kaWYKICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CiB9OwpAQCAtOTQsNiArOTUsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBy
ZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIHJlYWRWaXJ0dWFsQ29udGFjdEZpbGUoY29uc3QgU3RyaW5nJiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBi
b29sIHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFJURkQo
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA0MWVlMDVjYTY5N2EwMzc4MGY0ZTk0OTI2ODEyZmM4
YmVmMTY4YTdhLi5jYTcwMmY1YmQ2NzNiMDY2Y2RkOTdhMGY2OTk1Nzg3OWVjZTMxNmUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbQpAQCAtNDUsNiArNDUsNyBAQAogI2ltcG9ydCAiSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmgiCiAjaW1wb3J0ICJIVE1MQlJFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MQm9keUVsZW1lbnQu
aCIKKyNpbXBvcnQgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MSUZyYW1lRWxlbWVu
dC5oIgogI2ltcG9ydCAiSFRNTEltYWdlRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE9iamVjdEVs
ZW1lbnQuaCIKQEAgLTcxNCw2ICs3MTUsNDUgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
SW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAg
ICByZXR1cm4gZnJhZ21lbnQ7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQor
CitzdGF0aWMgUmVmPEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJhbWUs
IGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZigqZnJh
bWUuZG9jdW1lbnQoKSk7CisgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVt
ZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CisgICAgaWYg
KCFzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YShmcmFtZSkpIHsKKyAgICAgICAgYXR0
YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUocGF0aCksIEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CisgICAgICAgIHJldHVybiBhdHRhY2ht
ZW50OworICAgIH0KKworICAgIFN0cmluZyBjb250ZW50VHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmaWxlU2l6ZUZvckRpc3BsYXk7CisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVJ
c0RpcmVjdG9yeShwYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZ
ZXMpKQorICAgICAgICBjb250ZW50VHlwZSA9IGtVVFR5cGVEaXJlY3Rvcnk7CisgICAgZWxzZSB7
CisgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Z2V0Rmls
ZVNpemUocGF0aCwgZmlsZVNpemUpOworICAgICAgICBmaWxlU2l6ZUZvckRpc3BsYXkgPSBmaWxl
U2l6ZTsKKyAgICAgICAgY29udGVudFR5cGUgPSBGaWxlOjpjb250ZW50VHlwZUZvckZpbGUocGF0
aCk7CisgICAgICAgIGlmIChjb250ZW50VHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250
ZW50VHlwZSA9IGtVVFR5cGVEYXRhOworICAgIH0KKworICAgIGZyYW1lLmVkaXRvcigpLnJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRlbnRpZmll
cigpLCBjb250ZW50VHlwZSwgcGF0aCk7CisKKyAgICBpZiAoY29udGVudFR5cGVJc1N1aXRhYmxl
Rm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihjb250ZW50VHlwZSkpIHsKKyAgICAgICAgYXV0
byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgICAgIGlt
YWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0
ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShwYXRoKSkp
OworICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVudEVsZW1lbnQoV1RGTW92ZShhdHRhY2htZW50
KSk7CisgICAgICAgIHJldHVybiBpbWFnZTsKKyAgICB9CisKKyAgICBhdHRhY2htZW50LT51cGRh
dGVBdHRyaWJ1dGVzKFdURk1vdmUoZmlsZVNpemVGb3JEaXNwbGF5KSwgY29udGVudFR5cGUsIEZp
bGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKSk7CisgICAgcmV0dXJuIGF0dGFjaG1lbnQ7
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCiBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQog
ewogICAgIGlmIChwYXRocy5pc0VtcHR5KCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCkBAIC03MjUs
NDIgKzc2NSwzNiBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aHMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhdGhzKQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
ICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hdHRhY2ht
ZW50RWxlbWVudEVuYWJsZWQoKSkgewotICAgICAgICBmb3IgKGF1dG8mIHBhdGggOiBwYXRocykg
ewotICAgICAgICAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpj
cmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7Ci0gICAgICAgICAgICBp
ZiAoc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7Ci0gICAgICAgICAg
ICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGZpbGVTaXplRm9yRGlzcGxheTsKLSAgICAgICAgICAgICAgICBpZiAoRmlsZVN5
c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KHBhdGgsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJv
bGljTGlua3M6OlllcykpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlID0ga1VUVHlw
ZURpcmVjdG9yeTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
bG9uZyBsb25nIGZpbGVTaXplOwotICAgICAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpnZXRG
aWxlU2l6ZShwYXRoLCBmaWxlU2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGZpbGVTaXplRm9y
RGlzcGxheSA9IGZpbGVTaXplOwotICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZSA9IEZp
bGU6OmNvbnRlbnRUeXBlRm9yRmlsZShwYXRoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNv
bnRlbnRUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBl
ID0ga1VUVHlwZURhdGE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZyYW1l
LmVkaXRvcigpLnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoYXR0YWNobWVudC0+ZW5zdXJl
VW5pcXVlSWRlbnRpZmllcigpLCBjb250ZW50VHlwZSwgcGF0aCk7Ci0gICAgICAgICAgICAgICAg
aWYgKGNvbnRlbnRUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24oY29u
dGVudFR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgICAgICAgICAgICAgICAgICBpbWFnZS0+c2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVS
TDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpjcmVhdGUocGF0aCkpKTsKLSAgICAg
ICAgICAgICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNo
bWVudCkpOwotICAgICAgICAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoaW1hZ2Up
OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGF0dGFjaG1l
bnQtPnVwZGF0ZUF0dHJpYnV0ZXMoV1RGTW92ZShmaWxlU2l6ZUZvckRpc3BsYXkpLCBjb250ZW50
VHlwZSwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnQpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0
RmlsZShGaWxlOjpjcmVhdGUocGF0aCksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlz
cGxheUF0dHJpYnV0ZXM6Olllcyk7Ci0gICAgICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENo
aWxkKGF0dGFjaG1lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIGZvciAo
YXV0byYgcGF0aCA6IHBhdGhzKQorICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGF0
dGFjaG1lbnRGb3JGaWxlUGF0aChmcmFtZSwgcGF0aCkpOwogICAgIH0KICNlbmRpZgogCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFZpcnR1YWxDb250
YWN0RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB1cmxUaXRsZSkKK3sKKyAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpIHx8ICFmcmFtZS5k
b2N1bWVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQorICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CisgICAg
aWYgKCFmcmFnbWVudCkKKyAgICAgICAgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCk7CisKKyAgICBpZiAoIXVybC5pc0VtcHR5KCkpCisgICAgICAgIHJlYWRVUkwo
dXJsLCB1cmxUaXRsZSk7CisKKyAgICBhdXRvIGF0dGFjaG1lbnRDb250YWluZXIgPSBIVE1MRGl2
RWxlbWVudDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpKTsKKyAgICBhdHRhY2htZW50Q29udGFp
bmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVC
bG9jaywgdHJ1ZSk7CisgICAgYXR0YWNobWVudENvbnRhaW5lci0+YXBwZW5kQ2hpbGQoYXR0YWNo
bWVudEZvckZpbGVQYXRoKGZyYW1lLCBmaWxlUGF0aCkpOworICAgIGZyYWdtZW50LT5hcHBlbmRD
aGlsZChXVEZNb3ZlKGF0dGFjaG1lbnRDb250YWluZXIpKTsKKyNlbmRpZgorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBjNTliODQyYmE5MzY3OTI5NjQzYzAyNDU0
NGJkMmY2N2YyNjA0NjI1Li43OWQ4MTliZWFmMzllOGMyN2E5NmU1ZWM1OWY0ZDNlYmYzMGJhMjdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0xMzcsNiArMTM3LDcgQEAg
cHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJj
aGl2ZShTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRGaWxlUGF0aHMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRWaXJ0dWFs
Q29udGFjdEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiB1cmxUaXRsZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkSFRNTChjb25zdCBTdHJp
bmcmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSA9IDA7CkBAIC0yODcsNyAr
Mjg4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRGlkTm90UmVhZFR5cGUsCiAgICAgICAgIFBhc3Rl
Ym9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseQogICAgIH07Ci0gICAgUmVhZGVyUmVzdWx0IHJlYWRQ
YXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVy
JiwgUGFzdGVib2FyZFN0cmF0ZWd5JiwgTlNTdHJpbmcgKnR5cGUsIGludCBpdGVtSW5kZXgpOwor
ICAgIFJlYWRlclJlc3VsdCByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShQYXN0
ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFBhc3RlYm9hcmRTdHJhdGVneSYsIE5TU3RyaW5nICp0
eXBlLCBpbnQgaXRlbUluZGV4LCBjb25zdCBQYXN0ZWJvYXJkSXRlbUluZm8mKTsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVi
b2FyZElPUy5tbQppbmRleCAxZDliMDU3ODhjNmM2MDg0YjM2ZTc2ZTU1MDI2Yzc1MWZlMjNlMjQx
Li44NmU3ZTYzNGYwNjAwYzM1ZmNhOGNhNTNhM2FlYTNjM2M1Yjg0NTdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMTgxLDcgKzE4MSw3IEBA
IHN0YXRpYyBib29sIGlzVHlwZUFsbG93ZWRCeVJlYWRpbmdQb2xpY3koTlNTdHJpbmcgKnR5cGUs
IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5CiAgICAgICAgIHx8IFt0eXBlIGlzRXF1YWxUb1N0cmlu
ZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdOwogfQogCi1QYXN0ZWJvYXJk
OjpSZWFkZXJSZXN1bHQgUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZv
clR5cGUoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgUGFzdGVib2FyZFN0cmF0
ZWd5JiBzdHJhdGVneSwgTlNTdHJpbmcgKnR5cGUsIGludCBpdGVtSW5kZXgpCitQYXN0ZWJvYXJk
OjpSZWFkZXJSZXN1bHQgUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZv
clR5cGUoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgUGFzdGVib2FyZFN0cmF0
ZWd5JiBzdHJhdGVneSwgTlNTdHJpbmcgKnR5cGUsIGludCBpdGVtSW5kZXgsIGNvbnN0IFBhc3Rl
Ym9hcmRJdGVtSW5mbyYgaW5mbykKIHsKICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOldl
YkFyY2hpdmVQYm9hcmRUeXBlXSB8fCBbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5T
U3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gc3Ry
YXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJv
YXJkTmFtZSk7CkBAIC0xOTcsNiArMTk3LDI4IEBAIFBhc3RlYm9hcmQ6OlJlYWRlclJlc3VsdCBQ
YXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShQYXN0ZWJvCiAg
ICAgICAgIHJldHVybiAhaHRtbFN0cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVhZEhUTUwoaHRt
bFN0cmluZykgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RS
ZWFkVHlwZTsKICAgICB9CiAKKyAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRn
ZSBOU1N0cmluZyAqKWtVVFR5cGVWQ2FyZF0pIHsKKyAgICAgICAgYm9vbCBjYW5DcmVhdGVBdHRh
Y2htZW50cyA9IGZhbHNlOworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgICAg
IGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRF
bGVtZW50RW5hYmxlZCgpKQorICAgICAgICAgICAgY2FuQ3JlYXRlQXR0YWNobWVudHMgPSB0cnVl
OworI2VuZGlmCisgICAgICAgIGlmIChjYW5DcmVhdGVBdHRhY2htZW50cykgeworICAgICAgICAg
ICAgYXV0byBwYXRoID0gaW5mby5wYXRoRm9yQ29udGVudFR5cGUoa1VUVHlwZVZDYXJkKTsKKyAg
ICAgICAgICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVh
ZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKKworICAgICAgICAgICAgU3RyaW5nIHRpdGxlOwor
ICAgICAgICAgICAgYXV0byB1cmwgPSBzdHJhdGVneS5yZWFkVVJMRnJvbVBhc3RlYm9hcmQoaXRl
bUluZGV4LCBtX3Bhc3RlYm9hcmROYW1lLCB0aXRsZSk7CisgICAgICAgICAgICBpZiAobV9jaGFu
Z2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBSZWFkZXJS
ZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKKworICAgICAgICAgICAgaWYg
KHJlYWRlci5yZWFkVmlydHVhbENvbnRhY3RGaWxlKHBhdGgsIHVybCwgdGl0bGUpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOworICAgIH0KKwogI2lmICFQ
TEFURk9STShJT1NNQUMpCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2Ug
TlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdKSB7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgs
IGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSk7CkBAIC0yNjksNyArMjkxLDcgQEAg
dm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIs
IFdlYkNvbnRlbnRSZWFkaW5nUG9saWMKICAgICAgICAgICAgIGlmICghaXNUeXBlQWxsb3dlZEJ5
UmVhZGluZ1BvbGljeSh0eXBlLCBwb2xpY3kpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgICAgICBhdXRvIGl0ZW1SZXN1bHQgPSByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnRE
YXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCBpKTsKKyAgICAgICAgICAgIGF1dG8g
aXRlbVJlc3VsdCA9IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKHJlYWRlciwg
c3RyYXRlZ3ksIHR5cGUsIGksIHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaSwg
bV9wYXN0ZWJvYXJkTmFtZSkpOwogICAgICAgICAgICAgaWYgKGl0ZW1SZXN1bHQgPT0gUmVhZGVy
UmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCkBAIC0zMDksNyArMzMxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVj
dGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwKICAg
ICAgICAgICAgIGlmICghaXNUeXBlQWxsb3dlZEJ5UmVhZGluZ1BvbGljeSh0eXBlLCBwb2xpY3kp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICByZXN1bHQgPSByZWFk
UGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCBp
bmRleCk7CisgICAgICAgICAgICByZXN1bHQgPSByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRh
Rm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCBpbmRleCwgaW5mbyk7CiAgICAgICAgICAg
ICBpZiAocmVzdWx0ID09IFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5h
bGx5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0g
UmVhZGVyUmVzdWx0OjpSZWFkVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KaW5kZXggYThjZWNmNmY4OTcy
YzFkNjE0ZjYxMDdjODc5ODkyYTU0YzkwNzExYi4uOTYyOTZjYjhkMzIxZTIwZmMzZjQyNjFlMTQz
OTJlYjZkMDc2MjE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KQEAgLTgwLDYgKzgwLDEyIEBAIC0gKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKil3ZWJfZmlsZVVwbG9hZENvbnRlbnRUeXBlcwogICAgICAgICBp
ZiAoVVRUeXBlQ29uZm9ybXNUbygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpaWRlbnRpZmllciwga1VU
VHlwZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAorICAgICAgICBpZiAoW2lkZW50aWZp
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiY29tLmFwcGxlLm1hcGtpdC5tYXAtaXRlbSJdKSB7CisgICAg
ICAgICAgICAvLyBUaGlzIHR5cGUgY29uZm9ybXMgdG8gInB1YmxpYy5jb250ZW50IiwgeWV0IHRo
ZSBjb3JyZXNwb25kaW5nIGRhdGEgaXMgb25seSBhIHNlcmlhbGl6YXRpb24gb2YgTUtNYXBJdGVt
IGFuZCBpc24ndCBzdWl0YWJsZSBmb3IgZmlsZSB1cGxvYWRzLgorICAgICAgICAgICAgLy8gSWdu
b3JlIG92ZXIgdGhpcyB0eXBlIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgcHVycG9zZXMgb2YgZmls
ZSB1cGxvYWRzLCBpbiBmYXZvciBvZiAicHVibGljLnZjYXJkIiBkYXRhLgorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICBpZiAodHlwZUNvbmZvcm1zVG9UeXBlcyhp
ZGVudGlmaWVyLCBQYXN0ZWJvYXJkOjpzdXBwb3J0ZWRGaWxlVXBsb2FkUGFzdGVib2FyZFR5cGVz
KCkpKQogICAgICAgICAgICAgW3R5cGVzIGFkZE9iamVjdDppZGVudGlmaWVyXTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzNlY2Q3
M2UxYzhjOTFiNjA5OTI5NTAyMDM0MTZlMDJmZjAzNzEyYy4uM2QzMWVmMzk2MTA1NTNlYjEwMTk4
NGNkODIwYWFkNmQxOTc2YWZhMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE4LTEyLTExICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1cHBvcnQgZHJvcHBp
bmcgY29udGFjdCBjYXJkIGRhdGEgKHB1YmxpYy52Y2FyZCkgaW4gZWRpdGFibGUgY29udGVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNTcwCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTYyNjkxMz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tBdHRhY2htZW50VGVzdHMubW06CisKKyAgICAgICAgQWRkIEFQSSB0ZXN0cyB0byB2ZXJp
ZnkgdGhhdCByZWdpc3RlcmluZyBgTUtNYXBJdGVtYHMgYW5kIGBDTkNvbnRhY3RgcyB0byBpdGVt
IHByb3ZpZGVycyBhbmQgZHJvcHBpbmcgdGhlbSBpbgorICAgICAgICBhdHRhY2htZW50LWVuYWJs
ZWQgcmljaCB0ZXh0IGVkaXRhYmxlIGFyZWFzIGluc2VydHMgYXR0YWNobWVudCBlbGVtZW50cyAo
YW5kIGluIHRoZSBjYXNlIG9mIGBNS01hcEl0ZW1gLAorICAgICAgICBhZGRpdGlvbmFsbHkgaW5z
ZXJ0cyBhIGxpbmspLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0Fu
ZERyb3BUZXN0c0lPUy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZU1hcEl0ZW1G
b3JUZXN0aW5nKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZUNvbnRhY3RJdGVtRm9y
VGVzdGluZyk6CisKKyAgICAgICAgQWRkIEFQSSB0ZXN0cyB0byB2ZXJpZnkgdGhhdCBkcm9wcGlu
ZyBtYXAgaXRlbXMgYW5kIGNvbnRhY3QgaXRlbXMgaW50byByaWNoIGFuZCBwbGFpbiBlZGl0YWJs
ZSBhcmVhcyBiZWhhdmVzIGFzCisgICAgICAgIGV4cGVjdGVkIChpbiB0aGUgY2FzZSB3aGVyZSBh
IFVSTCBpcyBwcmVzZW50LCBlLmcuIGRyb3BwaW5nIGEgbWFwIGl0ZW0sIHdlIGluc2VydCB0aGUg
VVJMIGFzIGFuIGFuY2hvciwgYW5kIHdoZW4KKyAgICAgICAgdGhlcmUgaXMgbm8gb3RoZXIgc3Vp
dGFibGUgcmVwcmVzZW50YXRpb24gaW4gdGhlIGl0ZW0gcHJvdmlkZXIsIHdlIGRvIG5vdGhpbmcg
YXQgYWxsLCB3aGljaCBpcyB0aGUgY2FzZSBmb3IgdGhlCisgICAgICAgIGRyb3BwZWQgYENOQ29u
dGFjdGApLiBBbHNvLCBhZGQgYSB0ZXN0IHRvIHZlcmlmeSB0aGF0IGRyYWcgYW5kIGRyb3AgY2Fu
IGJlIHVzZWQgdG8gdXBsb2FkIHRoZXNlIGl0ZW1zIGFzIC52Y2YKKyAgICAgICAgZmlsZXMuCisK
IDIwMTgtMTItMTAgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAg
ICAgICBbQ01ha2VdIEFkZCBFTkFCTEVfUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTIHRvIFdlYktp
dEZlYXR1cmVzLmNtYWtlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQppbmRleCA5NDQ3MmFkZjkwZTE2MmE0
ZTY2NWQyMWE2NzJiMGQ2NTA3NDhkYzRkLi5lNTY2OGE4YTYxYmNhY2U0YjIxZmE0N2E2MTUzZDIx
MjVhZjA4OTFmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLQXR0YWNobWVudFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KQEAgLTMxLDE2ICszMSwyNiBAQAogI2lt
cG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5o
IgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8Q29u
dGFjdHMvQ29udGFjdHMuaD4KKyNpbXBvcnQgPE1hcEtpdC9NYXBLaXQuaD4KICNpbXBvcnQgPFdl
YktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmll
d1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJBcmNoaXZlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViS2l0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8
d3RmL1NvZnRMaW5raW5nLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8
TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgogI2VuZGlmCiAKK1NPRlRf
TElOS19GUkFNRVdPUksoQ29udGFjdHMpCitTT0ZUX0xJTktfQ0xBU1MoQ29udGFjdHMsIENOTXV0
YWJsZUNvbnRhY3QpCisKK1NPRlRfTElOS19GUkFNRVdPUksoTWFwS2l0KQorU09GVF9MSU5LX0NM
QVNTKE1hcEtpdCwgTUtNYXBJdGVtKQorU09GVF9MSU5LX0NMQVNTKE1hcEtpdCwgTUtQbGFjZW1h
cmspCisKICNkZWZpbmUgVVNFU19NT0RFUk5fQVRUUklCVVRFRF9TVFJJTkdfQ09OVkVSU0lPTiAo
KFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDEzMDApKQogCiAjaWYgV0tfQVBJX0VOQUJMRUQgJiYgIVBMQVRGT1JNKFdB
VENIT1MpICYmICFQTEFURk9STShUVk9TKQpAQCAtMTgwOCw2ICsxODE4LDU2IEBAIFRFU1QoV0tB
dHRhY2htZW50VGVzdHNJT1MsIERyYWdBdHRhY2htZW50SW5zZXJ0ZWRBc0RhdGEpCiAgICAgW2Ry
YWdBbmREcm9wU2ltdWxhdG9yIGVuZERhdGFUcmFuc2Zlcl07CiB9CiAKK1RFU1QoV0tBdHRhY2ht
ZW50VGVzdHNJT1MsIEluc2VydERyb3BwZWRNYXBJdGVtQXNBdHRhY2htZW50KQoreworICAgIGF1
dG8gcGxhY2VtYXJrID0gYWRvcHROUyhbYWxsb2NNS1BsYWNlbWFya0luc3RhbmNlKCkgaW5pdFdp
dGhDb29yZGluYXRlOkNMTG9jYXRpb25Db29yZGluYXRlMkRNYWtlKDM3LjMzMjcsIC0xMjIuMDA1
MyldKTsKKyAgICBhdXRvIG1hcEl0ZW0gPSBhZG9wdE5TKFthbGxvY01LTWFwSXRlbUluc3RhbmNl
KCkgaW5pdFdpdGhQbGFjZW1hcms6cGxhY2VtYXJrLmdldCgpXSk7CisgICAgW21hcEl0ZW0gc2V0
TmFtZTpAIkFwcGxlIFBhcmsiXTsKKworICAgIGF1dG8gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhb
W05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2l0ZW1Qcm92aWRlciByZWdpc3Rl
ck9iamVjdDptYXBJdGVtLmdldCgpIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRh
dGlvblZpc2liaWxpdHlBbGxdOworICAgIFtpdGVtUHJvdmlkZXIgc2V0U3VnZ2VzdGVkTmFtZTpb
bWFwSXRlbSBuYW1lXV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0
dGFjaG1lbnRzKCk7CisgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BT
aW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgW3Np
bXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgaXRlbVByb3ZpZGVyLmdldCgpIF1d
OworICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgyNSwgMjUpIHRvOkNHUG9pbnRN
YWtlKDEwMCwgMTAwKV07CisKKyAgICBOU1VSTCAqZHJvcHBlZExpbmtVUkwgPSBbTlNVUkwgVVJM
V2l0aFN0cmluZzpbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAiaHJlZiIgZm9yUXVlcnlTZWxl
Y3RvcjpAImEiXV07CisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudFRhZzpAIkEiIHRvQ29tZUJl
Zm9yZTpAIkFUVEFDSE1FTlQiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIm1hcHMuYXBwbGUuY29t
IiwgZHJvcHBlZExpbmtVUkwuaG9zdCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJBcHBsZSBQYXJr
LnZjZiIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIgZm9yUXVlcnlTZWxlY3Rv
cjpAImF0dGFjaG1lbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXh0L3ZjYXJkIiwgW3dl
YlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2ht
ZW50Il0pOworICAgIEVYUEVDVF9FUSgxVSwgW3NpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1lbnRz
XS5jb3VudCk7CisgICAgX1dLQXR0YWNobWVudEluZm8gKmluZm8gPSBbc2ltdWxhdG9yIGluc2Vy
dGVkQXR0YWNobWVudHNdLmZpcnN0T2JqZWN0LmluZm87CisgICAgRVhQRUNUX1dLX1NUUkVRKCJB
cHBsZSBQYXJrLnZjZiIsIGluZm8ubmFtZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXh0L3Zj
YXJkIiwgaW5mby5jb250ZW50VHlwZSk7Cit9CisKK1RFU1QoV0tBdHRhY2htZW50VGVzdHNJT1Ms
IEluc2VydERyb3BwZWRDb250YWN0QXNBdHRhY2htZW50KQoreworICAgIGF1dG8gY29udGFjdCA9
IGFkb3B0TlMoW2FsbG9jQ05NdXRhYmxlQ29udGFjdEluc3RhbmNlKCkgaW5pdF0pOworICAgIFtj
b250YWN0IHNldEdpdmVuTmFtZTpAIkJlbiJdOworICAgIFtjb250YWN0IHNldEZhbWlseU5hbWU6
QCJCaXRkaWRkbGUiXTsKKworICAgIGF1dG8gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRl
bVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2l0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVj
dDpjb250YWN0LmdldCgpIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZp
c2liaWxpdHlBbGxdOworICAgIFtpdGVtUHJvdmlkZXIgc2V0U3VnZ2VzdGVkTmFtZTpAIkJlbiJd
OworCisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOwor
ICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9j
XSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFtzaW11bGF0b3Igc2V0RXh0
ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIGl0ZW1Qcm92aWRlci5nZXQoKSBdXTsKKyAgICBbc2ltdWxh
dG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMjUsIDI1KSB0bzpDR1BvaW50TWFrZSgxMDAsIDEwMCld
OworCisgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjAgcXVlcnlTZWxlY3RvcjpAImEi
XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkJlbi52Y2YiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYXR0YWNobWVudCcpLnRp
dGxlIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgidGV4dC92Y2FyZCIsIFt3ZWJWaWV3IHZhbHVl
T2ZBdHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAg
ICBFWFBFQ1RfRVEoMVUsIFtzaW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10uY291bnQpOwor
ICAgIF9XS0F0dGFjaG1lbnRJbmZvICppbmZvID0gW3NpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1l
bnRzXS5maXJzdE9iamVjdC5pbmZvOworICAgIEVYUEVDVF9XS19TVFJFUSgiQmVuLnZjZiIsIGlu
Zm8ubmFtZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXh0L3ZjYXJkIiwgaW5mby5jb250ZW50
VHlwZSk7Cit9CisKICNpZiBIQVZFKFBFTkNJTEtJVCkKIHN0YXRpYyBCT09MIGZvckVhY2hWaWV3
SW5IaWVyYXJjaHkoVUlWaWV3ICp2aWV3LCB2b2lkKF5tYXBGdW5jdGlvbikoVUlWaWV3ICpzdWJ2
aWV3LCBCT09MICpzdG9wKSkKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCmluZGV4IGJhOWY3OWY1OGNhOTMxNjM2MGQzMWQ3
YTNlMzFmMjdlYWJlN2I2OGUuLjBlNjRjM2M4N2M3MmYwNjJhMTA1YTBmYTdhMDM4MWY0Njg0OTUx
NWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9w
VGVzdHNJT1MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERy
b3BUZXN0c0lPUy5tbQpAQCAtMzMsNiArMzMsOCBAQAogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5o
IgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25F
eHRyYXMuaCIKKyNpbXBvcnQgPENvbnRhY3RzL0NvbnRhY3RzLmg+CisjaW1wb3J0IDxNYXBLaXQv
TWFwS2l0Lmg+CiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2Vz
Lmg+CiAjaW1wb3J0IDxVSUtpdC9OU0l0ZW1Qcm92aWRlcitVSUtpdEFkZGl0aW9ucy5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CkBAIC00Miw2ICs0NCwxNCBAQAog
I2ltcG9ydCA8V2ViS2l0L1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaD4KICNpbXBvcnQgPFdl
YktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9TZWNvbmRz
Lmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhD
b250YWN0cykKK1NPRlRfTElOS19DTEFTUyhDb250YWN0cywgQ05NdXRhYmxlQ29udGFjdCkKKwor
U09GVF9MSU5LX0ZSQU1FV09SSyhNYXBLaXQpCitTT0ZUX0xJTktfQ0xBU1MoTWFwS2l0LCBNS01h
cEl0ZW0pCitTT0ZUX0xJTktfQ0xBU1MoTWFwS2l0LCBNS1BsYWNlbWFyaykKIAogdHlwZWRlZiB2
b2lkICheRmlsZUxvYWRDb21wbGV0aW9uQmxvY2spKE5TVVJMICosIEJPT0wsIE5TRXJyb3IgKik7
CiB0eXBlZGVmIHZvaWQgKF5EYXRhTG9hZENvbXBsZXRpb25CbG9jaykoTlNEYXRhICosIE5TRXJy
b3IgKik7CkBAIC0xODcsOCArMTk3LDYgQEAgc3RhdGljIHZvaWQgY2hlY2tEcmFnQ2FyZXRSZWN0
SXNDb250YWluZWRJblJlY3QoQ0dSZWN0IGNhcmV0UmVjdCwgQ0dSZWN0IGNvbnRhaW4KICAgICAg
ICAgTlNMb2coQCJFeHBlY3RlZCBjYXJldCByZWN0OiAlQCB0byBmaXQgd2l0aGluIGNvbnRhaW5l
ciByZWN0OiAlQCIsIE5TU3RyaW5nRnJvbUNHUmVjdChjYXJldFJlY3QpLCBOU1N0cmluZ0Zyb21D
R1JlY3QoY29udGFpbmVyUmVjdCkpOwogfQogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTEwMzAwCi0KIHN0YXRpYyB2b2lkIGNoZWNrSlNPTldpdGhMb2dnaW5nKE5T
U3RyaW5nICpqc29uU3RyaW5nLCBOU0RpY3Rpb25hcnkgKmV4cGVjdGVkKQogewogICAgIEJPT0wg
c3VjY2VzcyA9IFRlc3RXZWJLaXRBUEk6OlV0aWw6Ompzb25NYXRjaGVzRXhwZWN0ZWRWYWx1ZXMo
anNvblN0cmluZywgZXhwZWN0ZWQpOwpAQCAtMjUxLDggKzI1OSw2IEBAIHN0YXRpYyB2b2lkIHJ1
blRlc3RXaXRoVGVtcG9yYXJ5Rm9sZGVyKHZvaWQoXnJ1blRlc3QpKE5TVVJMICpmb2xkZXJVUkwp
KQogICAgIH0KIH0KIAotI2VuZGlmIC8vIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDExMDMwMAotCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoRHJhZ0FuZERy
b3BUZXN0cywgSW1hZ2VUb0NvbnRlbnRFZGl0YWJsZSkKQEAgLTEwNjEsNyArMTA2Nyw3NiBAQCBU
RVNUKERyYWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291cmNlT3ZlcnJpZGVEcm9wRmlsZVVwbG9h
ZCkKICAgICBFWFBFQ1RfRkFMU0UoW3NpbXVsYXRvciBsYXN0S25vd25Ecm9wUHJvcG9zYWxdLnBy
ZWNpc2UpOwogfQogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MzAwCitzdGF0aWMgUmV0YWluUHRyPE5TSXRlbVByb3ZpZGVyPiBjcmVhdGVNYXBJdGVtRm9yVGVz
dGluZygpCit7CisgICAgYXV0byBwbGFjZW1hcmsgPSBhZG9wdE5TKFthbGxvY01LUGxhY2VtYXJr
SW5zdGFuY2UoKSBpbml0V2l0aENvb3JkaW5hdGU6Q0xMb2NhdGlvbkNvb3JkaW5hdGUyRE1ha2Uo
MzcuMzMyNywgLTEyMi4wMDUzKV0pOworICAgIGF1dG8gaXRlbSA9IGFkb3B0TlMoW2FsbG9jTUtN
YXBJdGVtSW5zdGFuY2UoKSBpbml0V2l0aFBsYWNlbWFyazpwbGFjZW1hcmsuZ2V0KCldKTsKKyAg
ICBbaXRlbSBzZXROYW1lOkAiQXBwbGUgUGFyayJdOworCisgICAgYXV0byBpdGVtUHJvdmlkZXIg
PSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbaXRlbVByb3Zp
ZGVyIHJlZ2lzdGVyT2JqZWN0Oml0ZW0uZ2V0KCkgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJl
cHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbF07CisgICAgW2l0ZW1Qcm92aWRlciBzZXRTdWdnZXN0
ZWROYW1lOltpdGVtIG5hbWVdXTsKKworICAgIHJldHVybiBpdGVtUHJvdmlkZXI7Cit9CisKK3N0
YXRpYyBSZXRhaW5QdHI8TlNJdGVtUHJvdmlkZXI+IGNyZWF0ZUNvbnRhY3RJdGVtRm9yVGVzdGlu
ZygpCit7CisgICAgYXV0byBjb250YWN0ID0gYWRvcHROUyhbYWxsb2NDTk11dGFibGVDb250YWN0
SW5zdGFuY2UoKSBpbml0XSk7CisgICAgW2NvbnRhY3Qgc2V0R2l2ZW5OYW1lOkAiQmVuIl07Cisg
ICAgW2NvbnRhY3Qgc2V0RmFtaWx5TmFtZTpAIkJpdGRpZGRsZSJdOworCisgICAgYXV0byBpdGVt
UHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBb
aXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0OmNvbnRhY3QuZ2V0KCkgdmlzaWJpbGl0eTpOU0l0
ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbF07CisgICAgW2l0ZW1Qcm92aWRl
ciBzZXRTdWdnZXN0ZWROYW1lOkAiQmVuIl07CisKKyAgICByZXR1cm4gaXRlbVByb3ZpZGVyOwor
fQorCitURVNUKERyYWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291cmNlTWFwSXRlbUludG9FZGl0
YWJsZUFyZWFzKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiY29udGVudGVkaXRhYmxl
LWFuZC10ZXh0YXJlYSJdOworICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRD
b21tYW5kOkAiRGVsZXRlIiBhcmd1bWVudDpuaWxdOworCisgICAgYXV0byBzaW11bGF0b3IgPSBh
ZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJW
aWV3LmdldCgpXSk7CisgICAgW3NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsg
Y3JlYXRlTWFwSXRlbUZvclRlc3RpbmcoKS5hdXRvcmVsZWFzZSgpIF1dOworICAgIFtzaW11bGF0
b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgwLCAwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDEwMCldOwor
ICAgIEVYUEVDVF9XS19TVFJFUSgiQXBwbGUgUGFyayIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXZbY29udGVudGVkaXRh
YmxlXScpLnRleHRDb250ZW50Il0pOworICAgIE5TVVJMICpmaXJzdFVSTCA9IFtOU1VSTCBVUkxX
aXRoU3RyaW5nOlt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCdhJykuaHJlZiJdXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIm1hcHMu
YXBwbGUuY29tIiwgZmlyc3RVUkwuaG9zdCk7CisKKyAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQ
b2ludE1ha2UoMCwgMCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKKyAgICBOU1VSTCAqc2Vj
b25kVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RleHRhcmVhJykudmFsdWUiXV07
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJtYXBzLmFwcGxlLmNvbSIsIHNlY29uZFVSTC5ob3N0KTsK
K30KKworVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJjZUNvbnRhY3RJbnRvRWRp
dGFibGVBcmVhcykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImNvbnRlbnRlZGl0YWJs
ZS1hbmQtdGV4dGFyZWEiXTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0
Q29tbWFuZDpAIkRlbGV0ZSIgYXJndW1lbnQ6bmlsXTsKKworICAgIGF1dG8gc2ltdWxhdG9yID0g
YWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2Vi
Vmlldy5nZXQoKV0pOworICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBb
IGNyZWF0ZUNvbnRhY3RJdGVtRm9yVGVzdGluZygpLmF1dG9yZWxlYXNlKCkgXV07CisgICAgW3Np
bXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDAsIDApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMTAw
KV07CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W2NvbnRlbnRlZGl0YWJsZV0n
KS50ZXh0Q29udGVudCJdKTsKKworICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgw
LCAwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwg
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ3RleHRhcmVhJykudGV4dENvbnRlbnQiXSk7Cit9CisKK1RFU1QoRHJhZ0FuZERyb3BU
ZXN0cywgRXh0ZXJuYWxTb3VyY2VNYXBJdGVtQW5kQ29udGFjdFRvVXBsb2FkQXJlYSkKK3sKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImZpbGUtdXBsb2FkaW5nIl07CisKKyAgICBhdXRvIHNp
bXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhX
ZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVBy
b3ZpZGVyczpAWyBjcmVhdGVNYXBJdGVtRm9yVGVzdGluZygpLmF1dG9yZWxlYXNlKCksIGNyZWF0
ZUNvbnRhY3RJdGVtRm9yVGVzdGluZygpLmF1dG9yZWxlYXNlKCkgXV07CisgICAgW3NpbXVsYXRv
ciBydW5Gcm9tOkNHUG9pbnRNYWtlKDIwMCwgMTAwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCld
OworCisgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXh0L3ZjYXJkLCB0ZXh0L3ZjYXJkIiwgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIm91dHB1dC52YWx1ZSJdKTsKK30KIAog
c3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBzZXRVcFRlc3RXZWJWaWV3Rm9yRGF0YVRy
YW5zZmVySXRlbXMoKQogewpAQCAtMTE0Myw4ICsxMjE4LDYgQEAgVEVTVChEcmFnQW5kRHJvcFRl
c3RzLCBFeHRlcm5hbFNvdXJjZURhdGFUcmFuc2Zlckl0ZW1HZXRQbGFpblRleHRGaWxlQXNFbnRy
eSkKICAgICBFWFBFQ1RfV0tfU1RSRVEoW2V4cGVjdGVkT3V0cHV0IGNvbXBvbmVudHNKb2luZWRC
eVN0cmluZzpAIlxuIl0sIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJv
dXRwdXQudmFsdWUiXSk7CiB9CiAKLSNlbmRpZiAvLyBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAzMDAKLQogVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJj
ZU92ZXJyaWRlRHJvcEluc2VydFVSTCkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwg
NTAwKV0pOwpAQCAtMTU2Miw4ICsxNjM1LDYgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEcmFn
TGlmdFByZXZpZXdEYXRhVHJhbnNmZXJTZXREcmFnSW1hZ2UpCiAgICAgY2hlY2tDR1JlY3RJc0Vx
dWFsVG9DR1JlY3RXaXRoTG9nZ2luZyh7ezAsIDQwMH0sIHsyMTUsIDE3NH19LCBbc2ltdWxhdG9y
IGxpZnRQcmV2aWV3c11bMF0udmlldy5mcmFtZSk7CiB9CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMTAzMDAKLQogc3RhdGljIE5TRGF0YSAqdGVzdEljb25JbWFn
ZURhdGEoKQogewogICAgIHJldHVybiBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6W1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBwYXRoRm9yUmVzb3VyY2U6QCJpY29uIiBvZlR5cGU6QCJwbmci
IGluRGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CkBAIC0xOTg3LDggKzIw
NTgsNiBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIERhdGFUcmFuc2ZlclNhbml0aXplSFRNTCkK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQogCi0jZW5kaWYgLy8gX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMzAwCi0KIH0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRG
T1JNKElPU19GQU1JTFkpICYmIFdLX0FQSV9FTkFCTEVECg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357084</attachid>
            <date>2018-12-11 16:17:03 -0800</date>
            <delta_ts>2018-12-11 16:48:21 -0800</delta_ts>
            <desc>Try to fix macOS builds</desc>
            <filename>bug-192570-20181211161703.patch</filename>
            <type>text/plain</type>
            <size>28103</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFlOThiMTA4ZDU2YTcw
MGQzYTBiODc5NzcxYWVlOWIzNGNjMmEyMC4uYzkyNDIxNGZmZTg1MjJkZjI2YmI1YjI2YmM5ZmI1
Yzg3ZDE3ZWM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE4LTEyLTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1cHBv
cnQgZHJvcHBpbmcgY29udGFjdCBjYXJkIGRhdGEgKHB1YmxpYy52Y2FyZCkgaW4gZWRpdGFibGUg
Y29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyNTcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTYyNjkxMz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIGFjY2Vw
dGluZyB2Q2FyZCAoLnZjZikgZGF0YSB2aWEgZHJvcCBvbiBpT1MuIFNlZSBiZWxvdyBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgICAgIFRlc3RzOiAgRHJhZ0FuZERyb3BUZXN0cy5FeHRlcm5hbFNv
dXJjZUNvbnRhY3RJbnRvRWRpdGFibGVBcmVhcworICAgICAgICAgICAgICAgIERyYWdBbmREcm9w
VGVzdHMuRXh0ZXJuYWxTb3VyY2VNYXBJdGVtQW5kQ29udGFjdFRvVXBsb2FkQXJlYQorICAgICAg
ICAgICAgICAgIERyYWdBbmREcm9wVGVzdHMuRXh0ZXJuYWxTb3VyY2VNYXBJdGVtSW50b0VkaXRh
YmxlQXJlYXMKKyAgICAgICAgICAgICAgICBXS0F0dGFjaG1lbnRUZXN0c0lPUy5JbnNlcnREcm9w
cGVkQ29udGFjdEFzQXR0YWNobWVudAorICAgICAgICAgICAgICAgIFdLQXR0YWNobWVudFRlc3Rz
SU9TLkluc2VydERyb3BwZWRNYXBJdGVtQXNBdHRhY2htZW50CisKKyAgICAgICAgKiBlZGl0aW5n
L1dlYkNvbnRlbnRSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRS
ZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRGb3JGaWxlUGF0aCk6
CisKKyAgICAgICAgUHVsbCBvdXQgbG9naWMgdG8gY3JlYXRlIGFuIGF0dGFjaG1lbnQgZnJvbSBh
IGZpbGUgcGF0aCBvdXQgaW50byBhIHN0YXRpYyBoZWxwZXIuIFVzZSB0aGlzIGluIGByZWFkRmls
ZVBhdGhzYAorICAgICAgICBhcyB3ZWxsIGFzIGByZWFkVmlydHVhbENvbnRhY3RGaWxlYC4KKwor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRocyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkVmlydHVhbENvbnRhY3RGaWxlKToK
KworICAgICAgICBBZGQgYSBwYXN0ZWJvYXJkIHJlYWRpbmcgbWV0aG9kIHRoYXQgcmVhZHMgYSB2
Q2FyZCBmaWxlICh3aXRoIGFuIG9wdGlvbmFsIFVSTCkgYXMgd2ViIGNvbnRlbnQuIFRoZSByZXN1
bHRpbmcKKyAgICAgICAgZnJhZ21lbnQgY29uc2lzdHMgb2YgZWl0aGVyIGFuIGFuY2hvciBhbmQg
YW4gYXR0YWNobWVudCBlbGVtZW50LCBvciBqdXN0IGFuIGF0dGFjaG1lbnQgZWxlbWVudCBpZiB0
aGUgVVJMIGlzCisgICAgICAgIGVtcHR5LiBJbiB0aGUgY2FzZSBvZiBhbiBgTUtNYXBJdGVtYCwg
dGhlIFVSTCBpcyBwb3B1bGF0ZWQsIHNvIHdlIGdlbmVyYXRlIGJvdGggZWxlbWVudHM7IHdoZW4g
ZHJhZ2dpbmcgYQorICAgICAgICBjb250YWN0LCB0aGVyZSBpcyBubyBhc3NvY2lhdGVkIFVSTCwg
c28gd2Ugb25seSBoYXZlIGFuIGF0dGFjaG1lbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9y
VHlwZSk6CisKKyAgICAgICAgQXVnbWVudCB0aGlzIHRvIHRha2UgdGhlIGN1cnJlbnQgYFBhc3Rl
Ym9hcmRJdGVtSW5mb2AgYXMgd2VsbDsgdXNlIHRoaXMgaXRlbSBpbmZvcm1hdGlvbiB0byBnZXQg
YSBmaWxlIHBhdGggZm9yCisgICAgICAgICJwdWJsaWMudmNhcmQiIGRhdGEsIHdoaWNoIGlzIHRo
ZW4gcGFzc2VkIG9uIHRvIHRoZSB3ZWIgY29udGVudCByZWFkZXIuIEFkZGl0aW9uYWxseSwgYnkg
cmV0dXJuaW5nCisgICAgICAgIGBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlYCBoZXJlLCB3
ZSBwcmV2ZW50IHRoZSB3ZWIgY29udGVudCByZWFkZXIgZnJvbSBleHRyYWN0aW5nIHRoZSBwbGFp
biB0ZXh0IGNvbnRlbnRzCisgICAgICAgIG9mIHRoZSB2Q2FyZCBhbmQgZHVtcGluZyBpdCBhcyBw
bGFpbiB0ZXh0IGluIHRoZSBlZGl0YWJsZSBlbGVtZW50ICh0aGlzIHdvdWxkIG90aGVyd2lzZSBo
YXBwZW4sIHNpbmNlCisgICAgICAgICJwdWJsaWMudmNhcmQiIGNvbmZvcm1zIHRvICJwdWJsaWMu
dGV4dCIpLgorCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAg
ICgtW05TSXRlbVByb3ZpZGVyIHdlYl9maWxlVXBsb2FkQ29udGVudFR5cGVzXSk6CisKKyAgICAg
ICAgUHJldmVudCB0aGUgImNvbS5hcHBsZS5tYXBraXQubWFwLWl0ZW0iIFVUSSBmcm9tIGJlaW5n
IGNvbnNpZGVyZWQgYXMgZmlsZSB1cGxvYWQgY29udGVudC4gVGhpcyBzcGVjaWFsIGNhc2UgaXMK
KyAgICAgICAgdHJpY2t5LCBzaW5jZSAiY29tLmFwcGxlLm1hcGtpdC5tYXAtaXRlbSIgY29uZm9y
bXMgdG8gInB1YmxpYy5jb250ZW50IiwgeWV0IGl0cyBjb3JyZXNwb25kaW5nIGRhdGEgaXMgb25s
eQorICAgICAgICBzdWl0YWJsZSBmb3IgZGVzZXJpYWxpemF0aW9uIGludG8gYW4gYE1LTWFwSXRl
bWAuCisKIDIwMTgtMTItMTEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRG9uJ3QgYXR0ZW1wdCB0byBjb21wdXRlIGFuaW1hdGVkIHZhbHVlcyB3aGVuIHRo
ZXJlIGlzIG5vIHJlbGV2YW50IGFuaW1hdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
bnRlbnRSZWFkZXIuaAppbmRleCBlMDAwYTU0N2JjZTg3M2U1NmI1OGRjYTMwNGYzZDg3MGZiZDRm
MTZkLi5jNzc0YjRhMjA1OTQzZDhkNGRlZjc2MjYzOTllNDNkNTVjMzUzMWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaApAQCAtNzcsNiArNzcsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUpIG92ZXJy
aWRlOwogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBv
dmVycmlkZTsKKyAgICBib29sIHJlYWRWaXJ0dWFsQ29udGFjdEZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1cmxUaXRsZSkgb3ZlcnJpZGU7CiAj
ZW5kaWYKICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiB9
OwpAQCAtOTQsNiArOTUsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJv
b2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFk
RmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIHJlYWRWaXJ0dWFsQ29udGFjdEZpbGUoY29uc3QgU3RyaW5nJiwgY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29s
IHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFJURkQoU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbQppbmRleCA0MWVlMDVjYTY5N2EwMzc4MGY0ZTk0OTI2ODEyZmM4YmVm
MTY4YTdhLi5lN2M3ODFlNjI2Mzk2NzEzZTJiZGJmZmU2NGIzMzg4MzQ3MThiZGFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2Nv
YS5tbQpAQCAtNDUsNiArNDUsNyBAQAogI2ltcG9ydCAiSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmgi
CiAjaW1wb3J0ICJIVE1MQlJFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MQm9keUVsZW1lbnQuaCIK
KyNpbXBvcnQgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MSUZyYW1lRWxlbWVudC5o
IgogI2ltcG9ydCAiSFRNTEltYWdlRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE9iamVjdEVsZW1l
bnQuaCIKQEAgLTcxNCw2ICs3MTUsNDUgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1h
Z2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBy
ZXR1cm4gZnJhZ21lbnQ7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCitz
dGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRmlsZVBhdGgoRnJhbWUmIGZyYW1l
LCBjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYoKmZy
YW1lLmRvY3VtZW50KCkpOworICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxl
bWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOworICAgIGlm
ICghc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7CisgICAgICAgIGF0
dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKHBhdGgpLCBIVE1MQXR0YWNobWVudEVsZW1l
bnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICByZXR1cm4gYXR0YWNo
bWVudC5nZXQoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgY29udGVudFR5cGU7CisgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemVGb3JEaXNwbGF5OworICAgIGlmIChGaWxlU3lzdGVt
OjpmaWxlSXNEaXJlY3RvcnkocGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNM
aW5rczo6WWVzKSkKKyAgICAgICAgY29udGVudFR5cGUgPSBrVVRUeXBlRGlyZWN0b3J5OworICAg
IGVsc2UgeworICAgICAgICBsb25nIGxvbmcgZmlsZVNpemU7CisgICAgICAgIEZpbGVTeXN0ZW06
OmdldEZpbGVTaXplKHBhdGgsIGZpbGVTaXplKTsKKyAgICAgICAgZmlsZVNpemVGb3JEaXNwbGF5
ID0gZmlsZVNpemU7CisgICAgICAgIGNvbnRlbnRUeXBlID0gRmlsZTo6Y29udGVudFR5cGVGb3JG
aWxlKHBhdGgpOworICAgICAgICBpZiAoY29udGVudFR5cGUuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgY29udGVudFR5cGUgPSBrVVRUeXBlRGF0YTsKKyAgICB9CisKKyAgICBmcmFtZS5lZGl0b3Io
KS5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlk
ZW50aWZpZXIoKSwgY29udGVudFR5cGUsIHBhdGgpOworCisgICAgaWYgKGNvbnRlbnRUeXBlSXNT
dWl0YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24oY29udGVudFR5cGUpKSB7CisgICAg
ICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAg
ICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6
OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpjcmVhdGUo
cGF0aCkpKTsKKyAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0
YWNobWVudCkpOworICAgICAgICByZXR1cm4gaW1hZ2UuZ2V0KCk7CisgICAgfQorCisgICAgYXR0
YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyhXVEZNb3ZlKGZpbGVTaXplRm9yRGlzcGxheSksIGNv
bnRlbnRUeXBlLCBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkpOworICAgIHJldHVy
biBhdHRhY2htZW50LmdldCgpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKKwogYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXRocykKIHsKICAgICBpZiAocGF0aHMuaXNFbXB0eSgpIHx8ICFmcmFtZS5k
b2N1bWVudCgpKQpAQCAtNzI1LDQyICs3NjUsMzYgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKIAogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuYXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkpIHsKLSAgICAgICAgZm9yIChh
dXRvJiBwYXRoIDogcGF0aHMpIHsKLSAgICAgICAgICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxB
dHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1l
bnQpOwotICAgICAgICAgICAgaWYgKHN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGZy
YW1lKSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBjb250ZW50VHlwZTsKLSAgICAgICAgICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZUZvckRpc3BsYXk7Ci0gICAgICAg
ICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShwYXRoLCBGaWxlU3lzdGVt
OjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMpKQotICAgICAgICAgICAgICAgICAgICBj
b250ZW50VHlwZSA9IGtVVFR5cGVEaXJlY3Rvcnk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZTsKLSAgICAgICAgICAgICAgICAg
ICAgRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUocGF0aCwgZmlsZVNpemUpOwotICAgICAgICAgICAg
ICAgICAgICBmaWxlU2l6ZUZvckRpc3BsYXkgPSBmaWxlU2l6ZTsKLSAgICAgICAgICAgICAgICAg
ICAgY29udGVudFR5cGUgPSBGaWxlOjpjb250ZW50VHlwZUZvckZpbGUocGF0aCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZW50VHlwZSA9IGtVVFR5cGVEYXRhOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgY29udGVudFR5cGUsIHBhdGgp
OwotICAgICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFn
ZVJlcHJlc2VudGF0aW9uKGNvbnRlbnRUeXBlKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRv
IGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgICAg
ICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgRmlsZTo6Y3Jl
YXRlKHBhdGgpKSk7Ci0gICAgICAgICAgICAgICAgICAgIGltYWdlLT5zZXRBdHRhY2htZW50RWxl
bWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKLSAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQt
PmFwcGVuZENoaWxkKGltYWdlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKFdURk1vdmUoZmlsZVNpemVG
b3JEaXNwbGF5KSwgY29udGVudFR5cGUsIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChhdHRhY2htZW50
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKHBhdGgpLCBIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOwotICAgICAgICAgICAgICAg
IGZyYWdtZW50LT5hcHBlbmRDaGlsZChhdHRhY2htZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQorICAgICAgICBmb3IgKGF1dG8mIHBhdGggOiBwYXRocykKKyAgICAgICAgICAgIGZyYWdt
ZW50LT5hcHBlbmRDaGlsZChhdHRhY2htZW50Rm9yRmlsZVBhdGgoZnJhbWUsIHBhdGgpKTsKICAg
ICB9CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRWaXJ0dWFsQ29udGFjdEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXJsVGl0bGUpCit7CisgICAgaWYgKGZpbGVQYXRoLmlz
RW1wdHkoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBpZiAoIWZyYWdtZW50
KQorICAgICAgICBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsK
KworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgaWYgKCF1cmwuaXNFbXB0eSgp
KQorICAgICAgICByZWFkVVJMKHVybCwgdXJsVGl0bGUpOworCisgICAgYXV0byBhdHRhY2htZW50
Q29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSk7Cisg
ICAgYXR0YWNobWVudENvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eURpc3BsYXksIENTU1ZhbHVlQmxvY2ssIHRydWUpOworICAgIGF0dGFjaG1lbnRDb250YWluZXIt
PmFwcGVuZENoaWxkKGF0dGFjaG1lbnRGb3JGaWxlUGF0aChmcmFtZSwgZmlsZVBhdGgpKTsKKyAg
ICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShhdHRhY2htZW50Q29udGFpbmVyKSk7Cisj
ZW5kaWYKKworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgaWYgKHVy
bC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggYzU5Yjg0
MmJhOTM2NzkyOTY0M2MwMjQ1NDRiZDJmNjdmMjYwNDYyNS4uNzlkODE5YmVhZjM5ZThjMjdhOTZl
NWVjNTlmNGQzZWJmMzBiYTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApA
QCAtMTM3LDYgKzEzNyw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0
dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOworICAgIHZpcnR1
YWwgYm9vbCByZWFkVmlydHVhbENvbnRhY3RGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXJsVGl0bGUpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
cmVhZEhUTUwoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChT
aGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVy
JikgPSAwOwpAQCAtMjg3LDcgKzI4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIERpZE5vdFJlYWRU
eXBlLAogICAgICAgICBQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHkKICAgICB9OwotICAg
IFJlYWRlclJlc3VsdCByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShQYXN0ZWJv
YXJkV2ViQ29udGVudFJlYWRlciYsIFBhc3RlYm9hcmRTdHJhdGVneSYsIE5TU3RyaW5nICp0eXBl
LCBpbnQgaXRlbUluZGV4KTsKKyAgICBSZWFkZXJSZXN1bHQgcmVhZFBhc3RlYm9hcmRXZWJDb250
ZW50RGF0YUZvclR5cGUoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBQYXN0ZWJvYXJkU3Ry
YXRlZ3kmLCBOU1N0cmluZyAqdHlwZSwgaW50IGl0ZW1JbmRleCwgY29uc3QgUGFzdGVib2FyZEl0
ZW1JbmZvJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMWQ5YjA1Nzg4YzZjNjA4NGIzNmU3
NmU1NTAyNmM3NTFmZTIzZTI0MS4uODZlN2U2MzRmMDYwMGMzNWZjYThjYTUzYTNhZWEzYzNjNWI4
NDU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0K
QEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgYm9vbCBpc1R5cGVBbGxvd2VkQnlSZWFkaW5nUG9s
aWN5KE5TU3RyaW5nICp0eXBlLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeQogICAgICAgICB8fCBb
dHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZE
XTsKIH0KIAotUGFzdGVib2FyZDo6UmVhZGVyUmVzdWx0IFBhc3RlYm9hcmQ6OnJlYWRQYXN0ZWJv
YXJkV2ViQ29udGVudERhdGFGb3JUeXBlKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFk
ZXIsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIE5TU3RyaW5nICp0eXBlLCBpbnQgaXRl
bUluZGV4KQorUGFzdGVib2FyZDo6UmVhZGVyUmVzdWx0IFBhc3RlYm9hcmQ6OnJlYWRQYXN0ZWJv
YXJkV2ViQ29udGVudERhdGFGb3JUeXBlKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFk
ZXIsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIE5TU3RyaW5nICp0eXBlLCBpbnQgaXRl
bUluZGV4LCBjb25zdCBQYXN0ZWJvYXJkSXRlbUluZm8mIGluZm8pCiB7CiAgICAgaWYgKFt0eXBl
IGlzRXF1YWxUb1N0cmluZzpXZWJBcmNoaXZlUGJvYXJkVHlwZV0gfHwgW3R5cGUgaXNFcXVhbFRv
U3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXSkgewogICAgICAg
ICBhdXRvIGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5k
ZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwpAQCAtMTk3LDYgKzE5NywyOCBAQCBQYXN0ZWJv
YXJkOjpSZWFkZXJSZXN1bHQgUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0
YUZvclR5cGUoUGFzdGVibwogICAgICAgICByZXR1cm4gIWh0bWxTdHJpbmcuaXNOdWxsKCkgJiYg
cmVhZGVyLnJlYWRIVE1MKGh0bWxTdHJpbmcpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJl
YWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCisgICAgaWYgKFt0eXBlIGlzRXF1
YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVkNhcmRdKSB7CisgICAgICAg
IGJvb2wgY2FuQ3JlYXRlQXR0YWNobWVudHMgPSBmYWxzZTsKKyNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQorICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNhbkNyZWF0
ZUF0dGFjaG1lbnRzID0gdHJ1ZTsKKyNlbmRpZgorICAgICAgICBpZiAoY2FuQ3JlYXRlQXR0YWNo
bWVudHMpIHsKKyAgICAgICAgICAgIGF1dG8gcGF0aCA9IGluZm8ucGF0aEZvckNvbnRlbnRUeXBl
KGtVVFR5cGVWQ2FyZCk7CisgICAgICAgICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CisKKyAgICAgICAg
ICAgIFN0cmluZyB0aXRsZTsKKyAgICAgICAgICAgIGF1dG8gdXJsID0gc3RyYXRlZ3kucmVhZFVS
TEZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgdGl0bGUpOworICAg
ICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7
CisKKyAgICAgICAgICAgIGlmIChyZWFkZXIucmVhZFZpcnR1YWxDb250YWN0RmlsZShwYXRoLCB1
cmwsIHRpdGxlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpSZWFkVHlw
ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlw
ZTsKKyAgICB9CisKICNpZiAhUExBVEZPUk0oSU9TTUFDKQogICAgIGlmIChbdHlwZSBpc0VxdWFs
VG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXSkgewogICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUpOwpA
QCAtMjY5LDcgKzI5MSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29u
dGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljCiAgICAgICAgICAgICBp
ZiAoIWlzVHlwZUFsbG93ZWRCeVJlYWRpbmdQb2xpY3kodHlwZSwgcG9saWN5KSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgYXV0byBpdGVtUmVzdWx0ID0gcmVhZFBh
c3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgaSk7
CisgICAgICAgICAgICBhdXRvIGl0ZW1SZXN1bHQgPSByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnRE
YXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCBpLCBzdHJhdGVneS5pbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4KGksIG1fcGFzdGVib2FyZE5hbWUpKTsKICAgICAgICAgICAgIGlmIChp
dGVtUmVzdWx0ID09IFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzA5LDcgKzMzMSw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50
UmVhZGVyJiByZWFkZXIsCiAgICAgICAgICAgICBpZiAoIWlzVHlwZUFsbG93ZWRCeVJlYWRpbmdQ
b2xpY3kodHlwZSwgcG9saWN5KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICAgICAgcmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVy
LCBzdHJhdGVneSwgdHlwZSwgaW5kZXgpOworICAgICAgICAgICAgcmVzdWx0ID0gcmVhZFBhc3Rl
Ym9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgaW5kZXgs
IGluZm8pOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9h
cmRXYXNDaGFuZ2VkRXh0ZXJuYWxseSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICBpZiAocmVzdWx0ID09IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1t
CmluZGV4IGE4Y2VjZjZmODk3MmMxZDYxNGY2MTA3Yzg3OTg5MmE1NGM5MDcxMWIuLjk2Mjk2Y2I4
ZDMyMWUyMGZjM2Y0MjYxZTE0MzkyZWI2ZDA3NjIxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC04
MCw2ICs4MCwxMiBAQCAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopd2ViX2ZpbGVVcGxvYWRDb250
ZW50VHlwZXMKICAgICAgICAgaWYgKFVUVHlwZUNvbmZvcm1zVG8oKF9fYnJpZGdlIENGU3RyaW5n
UmVmKWlkZW50aWZpZXIsIGtVVFR5cGVVUkwpKQogICAgICAgICAgICAgY29udGludWU7CiAKKyAg
ICAgICAgaWYgKFtpZGVudGlmaWVyIGlzRXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5tYXBraXQu
bWFwLWl0ZW0iXSkgeworICAgICAgICAgICAgLy8gVGhpcyB0eXBlIGNvbmZvcm1zIHRvICJwdWJs
aWMuY29udGVudCIsIHlldCB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGlzIG9ubHkgYSBzZXJpYWxp
emF0aW9uIG9mIE1LTWFwSXRlbSBhbmQgaXNuJ3Qgc3VpdGFibGUgZm9yIGZpbGUgdXBsb2Fkcy4K
KyAgICAgICAgICAgIC8vIElnbm9yZSBvdmVyIHRoaXMgdHlwZSByZXByZXNlbnRhdGlvbiBmb3Ig
dGhlIHB1cnBvc2VzIG9mIGZpbGUgdXBsb2FkcywgaW4gZmF2b3Igb2YgInB1YmxpYy52Y2FyZCIg
ZGF0YS4KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKICAgICAgICAgaWYgKHR5
cGVDb25mb3Jtc1RvVHlwZXMoaWRlbnRpZmllciwgUGFzdGVib2FyZDo6c3VwcG9ydGVkRmlsZVVw
bG9hZFBhc3RlYm9hcmRUeXBlcygpKSkKICAgICAgICAgICAgIFt0eXBlcyBhZGRPYmplY3Q6aWRl
bnRpZmllcl07CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDRlNDJkMWNiNjA4OTc3MGM2ZTMzOTM1ZjY1MGExYjQ4NzlhYjA2YWUuLjlh
ZGY3ODlmNjU0NGUyNDg5YzVmZDFkYjlmOTFiMzFlNmRmMmQ3OTQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxOC0x
Mi0xMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBb
aU9TXSBTdXBwb3J0IGRyb3BwaW5nIGNvbnRhY3QgY2FyZCBkYXRhIChwdWJsaWMudmNhcmQpIGlu
IGVkaXRhYmxlIGNvbnRlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MjU3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzU2MjY5MTM+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOgorCisgICAgICAgIEFk
ZCBBUEkgdGVzdHMgdG8gdmVyaWZ5IHRoYXQgcmVnaXN0ZXJpbmcgYE1LTWFwSXRlbWBzIGFuZCBg
Q05Db250YWN0YHMgdG8gaXRlbSBwcm92aWRlcnMgYW5kIGRyb3BwaW5nIHRoZW0gaW4KKyAgICAg
ICAgYXR0YWNobWVudC1lbmFibGVkIHJpY2ggdGV4dCBlZGl0YWJsZSBhcmVhcyBpbnNlcnRzIGF0
dGFjaG1lbnQgZWxlbWVudHMgKGFuZCBpbiB0aGUgY2FzZSBvZiBgTUtNYXBJdGVtYCwKKyAgICAg
ICAgYWRkaXRpb25hbGx5IGluc2VydHMgYSBsaW5rKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW06CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpjcmVhdGVNYXBJdGVtRm9yVGVzdGluZyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpj
cmVhdGVDb250YWN0SXRlbUZvclRlc3RpbmcpOgorCisgICAgICAgIEFkZCBBUEkgdGVzdHMgdG8g
dmVyaWZ5IHRoYXQgZHJvcHBpbmcgbWFwIGl0ZW1zIGFuZCBjb250YWN0IGl0ZW1zIGludG8gcmlj
aCBhbmQgcGxhaW4gZWRpdGFibGUgYXJlYXMgYmVoYXZlcyBhcworICAgICAgICBleHBlY3RlZCAo
aW4gdGhlIGNhc2Ugd2hlcmUgYSBVUkwgaXMgcHJlc2VudCwgZS5nLiBkcm9wcGluZyBhIG1hcCBp
dGVtLCB3ZSBpbnNlcnQgdGhlIFVSTCBhcyBhbiBhbmNob3IsIGFuZCB3aGVuCisgICAgICAgIHRo
ZXJlIGlzIG5vIG90aGVyIHN1aXRhYmxlIHJlcHJlc2VudGF0aW9uIGluIHRoZSBpdGVtIHByb3Zp
ZGVyLCB3ZSBkbyBub3RoaW5nIGF0IGFsbCwgd2hpY2ggaXMgdGhlIGNhc2UgZm9yIHRoZQorICAg
ICAgICBkcm9wcGVkIGBDTkNvbnRhY3RgKS4gQWxzbywgYWRkIGEgdGVzdCB0byB2ZXJpZnkgdGhh
dCBkcmFnIGFuZCBkcm9wIGNhbiBiZSB1c2VkIHRvIHVwbG9hZCB0aGVzZSBpdGVtcyBhcyAudmNm
CisgICAgICAgIGZpbGVzLgorCiAyMDE4LTEyLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgUFNPTiBsb2dpYyBnZXRzIGNvbmZ1c2VkIGJ5IGNvbmN1cnJlbnQg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMu
bW0KaW5kZXggOTQ0NzJhZGY5MGUxNjJhNGU2NjVkMjFhNjcyYjBkNjUwNzQ4ZGM0ZC4uZTU2Njhh
OGE2MWJjYWNlNGIyMWZhNDdhNjE1M2QyMTI1YWYwODkxZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1t
CkBAIC0zMSwxNiArMzEsMjYgQEAKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIK
ICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRp
b25FeHRyYXMuaCIKKyNpbXBvcnQgPENvbnRhY3RzL0NvbnRhY3RzLmg+CisjaW1wb3J0IDxNYXBL
aXQvTWFwS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
QXJjaGl2ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2Vy
dmljZXMuaD4KICNlbmRpZgogCitTT0ZUX0xJTktfRlJBTUVXT1JLKENvbnRhY3RzKQorU09GVF9M
SU5LX0NMQVNTKENvbnRhY3RzLCBDTk11dGFibGVDb250YWN0KQorCitTT0ZUX0xJTktfRlJBTUVX
T1JLKE1hcEtpdCkKK1NPRlRfTElOS19DTEFTUyhNYXBLaXQsIE1LTWFwSXRlbSkKK1NPRlRfTElO
S19DTEFTUyhNYXBLaXQsIE1LUGxhY2VtYXJrKQorCiAjZGVmaW5lIFVTRVNfTU9ERVJOX0FUVFJJ
QlVURURfU1RSSU5HX0NPTlZFUlNJT04gKChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIHx8IChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSkKIAogI2lmIFdLX0FQ
SV9FTkFCTEVEICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oVFZPUykKQEAgLTE4
MDgsNiArMTgxOCw1NiBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzSU9TLCBEcmFnQXR0YWNobWVu
dEluc2VydGVkQXNEYXRhKQogICAgIFtkcmFnQW5kRHJvcFNpbXVsYXRvciBlbmREYXRhVHJhbnNm
ZXJdOwogfQogCitURVNUKFdLQXR0YWNobWVudFRlc3RzSU9TLCBJbnNlcnREcm9wcGVkTWFwSXRl
bUFzQXR0YWNobWVudCkKK3sKKyAgICBhdXRvIHBsYWNlbWFyayA9IGFkb3B0TlMoW2FsbG9jTUtQ
bGFjZW1hcmtJbnN0YW5jZSgpIGluaXRXaXRoQ29vcmRpbmF0ZTpDTExvY2F0aW9uQ29vcmRpbmF0
ZTJETWFrZSgzNy4zMzI3LCAtMTIyLjAwNTMpXSk7CisgICAgYXV0byBtYXBJdGVtID0gYWRvcHRO
UyhbYWxsb2NNS01hcEl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoUGxhY2VtYXJrOnBsYWNlbWFyay5n
ZXQoKV0pOworICAgIFttYXBJdGVtIHNldE5hbWU6QCJBcHBsZSBQYXJrIl07CisKKyAgICBhdXRv
IGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwor
ICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6bWFwSXRlbS5nZXQoKSB2aXNpYmlsaXR5
Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKyAgICBbaXRlbVBy
b3ZpZGVyIHNldFN1Z2dlc3RlZE5hbWU6W21hcEl0ZW0gbmFtZV1dOworCisgICAgYXV0byB3ZWJW
aWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOworICAgIGF1dG8gc2ltdWxhdG9y
ID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6
d2ViVmlldy5nZXQoKV0pOworICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJz
OkBbIGl0ZW1Qcm92aWRlci5nZXQoKSBdXTsKKyAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2lu
dE1ha2UoMjUsIDI1KSB0bzpDR1BvaW50TWFrZSgxMDAsIDEwMCldOworCisgICAgTlNVUkwgKmRy
b3BwZWRMaW5rVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6W3dlYlZpZXcgdmFsdWVPZkF0dHJp
YnV0ZTpAImhyZWYiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhIl1dOworICAgIFt3ZWJWaWV3IGV4cGVj
dEVsZW1lbnRUYWc6QCJBIiB0b0NvbWVCZWZvcmU6QCJBVFRBQ0hNRU5UIl07CisgICAgRVhQRUNU
X1dLX1NUUkVRKCJtYXBzLmFwcGxlLmNvbSIsIGRyb3BwZWRMaW5rVVJMLmhvc3QpOworICAgIEVY
UEVDVF9XS19TVFJFUSgiQXBwbGUgUGFyay52Y2YiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRl
OkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAgIEVYUEVDVF9X
S19TVFJFUSgidGV4dC92Y2FyZCIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBlIiBm
b3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICBFWFBFQ1RfRVEoMVUsIFtzaW11
bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10uY291bnQpOworICAgIF9XS0F0dGFjaG1lbnRJbmZv
ICppbmZvID0gW3NpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1lbnRzXS5maXJzdE9iamVjdC5pbmZv
OworICAgIEVYUEVDVF9XS19TVFJFUSgiQXBwbGUgUGFyay52Y2YiLCBpbmZvLm5hbWUpOworICAg
IEVYUEVDVF9XS19TVFJFUSgidGV4dC92Y2FyZCIsIGluZm8uY29udGVudFR5cGUpOworfQorCitU
RVNUKFdLQXR0YWNobWVudFRlc3RzSU9TLCBJbnNlcnREcm9wcGVkQ29udGFjdEFzQXR0YWNobWVu
dCkKK3sKKyAgICBhdXRvIGNvbnRhY3QgPSBhZG9wdE5TKFthbGxvY0NOTXV0YWJsZUNvbnRhY3RJ
bnN0YW5jZSgpIGluaXRdKTsKKyAgICBbY29udGFjdCBzZXRHaXZlbk5hbWU6QCJCZW4iXTsKKyAg
ICBbY29udGFjdCBzZXRGYW1pbHlOYW1lOkAiQml0ZGlkZGxlIl07CisKKyAgICBhdXRvIGl0ZW1Q
cm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtp
dGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6Y29udGFjdC5nZXQoKSB2aXNpYmlsaXR5Ok5TSXRl
bVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKyAgICBbaXRlbVByb3ZpZGVy
IHNldFN1Z2dlc3RlZE5hbWU6QCJCZW4iXTsKKworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdG
b3JUZXN0aW5nQXR0YWNobWVudHMoKTsKKyAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tE
cmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCld
KTsKKyAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBpdGVtUHJvdmlk
ZXIuZ2V0KCkgXV07CisgICAgW3NpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDI1LCAyNSkg
dG86Q0dQb2ludE1ha2UoMTAwLCAxMDApXTsKKworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRD
b3VudDowIHF1ZXJ5U2VsZWN0b3I6QCJhIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJCZW4udmNm
IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoJ2F0dGFjaG1lbnQnKS50aXRsZSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInRl
eHQvdmNhcmQiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlwZSIgZm9yUXVlcnlTZWxl
Y3RvcjpAImF0dGFjaG1lbnQiXSk7CisgICAgRVhQRUNUX0VRKDFVLCBbc2ltdWxhdG9yIGluc2Vy
dGVkQXR0YWNobWVudHNdLmNvdW50KTsKKyAgICBfV0tBdHRhY2htZW50SW5mbyAqaW5mbyA9IFtz
aW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10uZmlyc3RPYmplY3QuaW5mbzsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIkJlbi52Y2YiLCBpbmZvLm5hbWUpOworICAgIEVYUEVDVF9XS19TVFJFUSgi
dGV4dC92Y2FyZCIsIGluZm8uY29udGVudFR5cGUpOworfQorCiAjaWYgSEFWRShQRU5DSUxLSVQp
CiBzdGF0aWMgQk9PTCBmb3JFYWNoVmlld0luSGllcmFyY2h5KFVJVmlldyAqdmlldywgdm9pZChe
bWFwRnVuY3Rpb24pKFVJVmlldyAqc3VidmlldywgQk9PTCAqc3RvcCkpCiB7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbQppbmRl
eCBiYTlmNzlmNThjYTkzMTYzNjBkMzFkN2EzZTMxZjI3ZWFiZTdiNjhlLi4wZTY0YzNjODdjNzJm
MDYyYTEwNWEwZmE3YTAzODFmNDY4NDk1MTVjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0KQEAgLTMzLDYgKzMzLDggQEAK
ICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0
ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCisjaW1wb3J0IDxDb250YWN0cy9Db250
YWN0cy5oPgorI2ltcG9ydCA8TWFwS2l0L01hcEtpdC5oPgogI2ltcG9ydCA8TW9iaWxlQ29yZVNl
cnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgogI2ltcG9ydCA8VUlLaXQvTlNJdGVtUHJvdmlk
ZXIrVUlLaXRBZGRpdGlvbnMuaD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0
ZS5oPgpAQCAtNDIsNiArNDQsMTQgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJJdGVtUHJvdmlkZXJQ
YXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Lmg+CiAjaW1wb3J0IDx3dGYvU2Vjb25kcy5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+
CisKK1NPRlRfTElOS19GUkFNRVdPUksoQ29udGFjdHMpCitTT0ZUX0xJTktfQ0xBU1MoQ29udGFj
dHMsIENOTXV0YWJsZUNvbnRhY3QpCisKK1NPRlRfTElOS19GUkFNRVdPUksoTWFwS2l0KQorU09G
VF9MSU5LX0NMQVNTKE1hcEtpdCwgTUtNYXBJdGVtKQorU09GVF9MSU5LX0NMQVNTKE1hcEtpdCwg
TUtQbGFjZW1hcmspCiAKIHR5cGVkZWYgdm9pZCAoXkZpbGVMb2FkQ29tcGxldGlvbkJsb2NrKShO
U1VSTCAqLCBCT09MLCBOU0Vycm9yICopOwogdHlwZWRlZiB2b2lkICheRGF0YUxvYWRDb21wbGV0
aW9uQmxvY2spKE5TRGF0YSAqLCBOU0Vycm9yICopOwpAQCAtMTg3LDggKzE5Nyw2IEBAIHN0YXRp
YyB2b2lkIGNoZWNrRHJhZ0NhcmV0UmVjdElzQ29udGFpbmVkSW5SZWN0KENHUmVjdCBjYXJldFJl
Y3QsIENHUmVjdCBjb250YWluCiAgICAgICAgIE5TTG9nKEAiRXhwZWN0ZWQgY2FyZXQgcmVjdDog
JUAgdG8gZml0IHdpdGhpbiBjb250YWluZXIgcmVjdDogJUAiLCBOU1N0cmluZ0Zyb21DR1JlY3Qo
Y2FyZXRSZWN0KSwgTlNTdHJpbmdGcm9tQ0dSZWN0KGNvbnRhaW5lclJlY3QpKTsKIH0KIAotI2lm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDMwMAotCiBzdGF0aWMgdm9p
ZCBjaGVja0pTT05XaXRoTG9nZ2luZyhOU1N0cmluZyAqanNvblN0cmluZywgTlNEaWN0aW9uYXJ5
ICpleHBlY3RlZCkKIHsKICAgICBCT09MIHN1Y2Nlc3MgPSBUZXN0V2ViS2l0QVBJOjpVdGlsOjpq
c29uTWF0Y2hlc0V4cGVjdGVkVmFsdWVzKGpzb25TdHJpbmcsIGV4cGVjdGVkKTsKQEAgLTI1MSw4
ICsyNTksNiBAQCBzdGF0aWMgdm9pZCBydW5UZXN0V2l0aFRlbXBvcmFyeUZvbGRlcih2b2lkKF5y
dW5UZXN0KShOU1VSTCAqZm9sZGVyVVJMKSkKICAgICB9CiB9CiAKLSNlbmRpZiAvLyBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAzMDAKLQogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCiBURVNUKERyYWdBbmREcm9wVGVzdHMsIEltYWdlVG9Db250ZW50RWRpdGFibGUp
CkBAIC0xMDYxLDcgKzEwNjcsNzYgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNv
dXJjZU92ZXJyaWRlRHJvcEZpbGVVcGxvYWQpCiAgICAgRVhQRUNUX0ZBTFNFKFtzaW11bGF0b3Ig
bGFzdEtub3duRHJvcFByb3Bvc2FsXS5wcmVjaXNlKTsKIH0KIAotI2lmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDExMDMwMAorc3RhdGljIFJldGFpblB0cjxOU0l0ZW1Qcm92
aWRlcj4gY3JlYXRlTWFwSXRlbUZvclRlc3RpbmcoKQoreworICAgIGF1dG8gcGxhY2VtYXJrID0g
YWRvcHROUyhbYWxsb2NNS1BsYWNlbWFya0luc3RhbmNlKCkgaW5pdFdpdGhDb29yZGluYXRlOkNM
TG9jYXRpb25Db29yZGluYXRlMkRNYWtlKDM3LjMzMjcsIC0xMjIuMDA1MyldKTsKKyAgICBhdXRv
IGl0ZW0gPSBhZG9wdE5TKFthbGxvY01LTWFwSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhQbGFjZW1h
cms6cGxhY2VtYXJrLmdldCgpXSk7CisgICAgW2l0ZW0gc2V0TmFtZTpAIkFwcGxlIFBhcmsiXTsK
KworICAgIGF1dG8gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9j
XSBpbml0XSk7CisgICAgW2l0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDppdGVtLmdldCgpIHZp
c2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOworICAg
IFtpdGVtUHJvdmlkZXIgc2V0U3VnZ2VzdGVkTmFtZTpbaXRlbSBuYW1lXV07CisKKyAgICByZXR1
cm4gaXRlbVByb3ZpZGVyOworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TSXRlbVByb3ZpZGVyPiBj
cmVhdGVDb250YWN0SXRlbUZvclRlc3RpbmcoKQoreworICAgIGF1dG8gY29udGFjdCA9IGFkb3B0
TlMoW2FsbG9jQ05NdXRhYmxlQ29udGFjdEluc3RhbmNlKCkgaW5pdF0pOworICAgIFtjb250YWN0
IHNldEdpdmVuTmFtZTpAIkJlbiJdOworICAgIFtjb250YWN0IHNldEZhbWlseU5hbWU6QCJCaXRk
aWRkbGUiXTsKKworICAgIGF1dG8gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3Zp
ZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2l0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDpjb250
YWN0LmdldCgpIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxp
dHlBbGxdOworICAgIFtpdGVtUHJvdmlkZXIgc2V0U3VnZ2VzdGVkTmFtZTpAIkJlbiJdOworCisg
ICAgcmV0dXJuIGl0ZW1Qcm92aWRlcjsKK30KKworVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRl
cm5hbFNvdXJjZU1hcEl0ZW1JbnRvRWRpdGFibGVBcmVhcykKK3sKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBh
Z2VOYW1lZDpAImNvbnRlbnRlZGl0YWJsZS1hbmQtdGV4dGFyZWEiXTsKKyAgICBbd2ViVmlldyBf
c3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIkRlbGV0ZSIgYXJndW1lbnQ6bmlsXTsK
KworICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFs
bG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFtzaW11bGF0b3Igc2V0
RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIGNyZWF0ZU1hcEl0ZW1Gb3JUZXN0aW5nKCkuYXV0b3Jl
bGVhc2UoKSBdXTsKKyAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMCwgMCkgdG86
Q0dQb2ludE1ha2UoMTAwLCAxMDApXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkFwcGxlIFBhcmsi
LCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcignZGl2W2NvbnRlbnRlZGl0YWJsZV0nKS50ZXh0Q29udGVudCJdKTsKKyAgICBOU1VS
TCAqZmlyc3RVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYScpLmhyZWYiXV07Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKCJtYXBzLmFwcGxlLmNvbSIsIGZpcnN0VVJMLmhvc3QpOworCisg
ICAgW3NpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDAsIDApIHRvOkNHUG9pbnRNYWtlKDEw
MCwgMzAwKV07CisgICAgTlNVUkwgKnNlY29uZFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOlt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCd0ZXh0YXJlYScpLnZhbHVlIl1dOworICAgIEVYUEVDVF9XS19TVFJFUSgibWFwcy5hcHBs
ZS5jb20iLCBzZWNvbmRVUkwuaG9zdCk7Cit9CisKK1RFU1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0
ZXJuYWxTb3VyY2VDb250YWN0SW50b0VkaXRhYmxlQXJlYXMpCit7CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQ
YWdlTmFtZWQ6QCJjb250ZW50ZWRpdGFibGUtYW5kLXRleHRhcmVhIl07CisgICAgW3dlYlZpZXcg
X3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJEZWxldGUiIGFyZ3VtZW50Om5pbF07
CisKKyAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBh
bGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBbc2ltdWxhdG9yIHNl
dEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBjcmVhdGVDb250YWN0SXRlbUZvclRlc3RpbmcoKS5h
dXRvcmVsZWFzZSgpIF1dOworICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgwLCAw
KSB0bzpDR1BvaW50TWFrZSgxMDAsIDEwMCldOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoJ2Rpdltjb250ZW50ZWRpdGFibGVdJykudGV4dENvbnRlbnQiXSk7CisKKyAgICBbc2ltdWxh
dG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMCwgMCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0ZXh0YXJlYScpLnRleHRDb250ZW50Il0p
OworfQorCitURVNUKERyYWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291cmNlTWFwSXRlbUFuZENv
bnRhY3RUb1VwbG9hZEFyZWEpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCld
KTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJmaWxlLXVw
bG9hZGluZyJdOworCisgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BT
aW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgW3Np
bXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgY3JlYXRlTWFwSXRlbUZvclRlc3Rp
bmcoKS5hdXRvcmVsZWFzZSgpLCBjcmVhdGVDb250YWN0SXRlbUZvclRlc3RpbmcoKS5hdXRvcmVs
ZWFzZSgpIF1dOworICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgyMDAsIDEwMCkg
dG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgidGV4dC92
Y2FyZCwgdGV4dC92Y2FyZCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJvdXRwdXQudmFsdWUiXSk7Cit9CiAKIHN0YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4g
c2V0VXBUZXN0V2ViVmlld0ZvckRhdGFUcmFuc2Zlckl0ZW1zKCkKIHsKQEAgLTExNDMsOCArMTIx
OCw2IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VEYXRhVHJhbnNmZXJJ
dGVtR2V0UGxhaW5UZXh0RmlsZUFzRW50cnkpCiAgICAgRVhQRUNUX1dLX1NUUkVRKFtleHBlY3Rl
ZE91dHB1dCBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCJcbiJdLCBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAib3V0cHV0LnZhbHVlIl0pOwogfQogCi0jZW5kaWYgLy8g
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMzAwCi0KIFRFU1QoRHJhZ0Fu
ZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VPdmVycmlkZURyb3BJbnNlcnRVUkwpCiB7CiAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKQEAgLTE1NjIsOCArMTYzNSw2IEBAIFRF
U1QoRHJhZ0FuZERyb3BUZXN0cywgRHJhZ0xpZnRQcmV2aWV3RGF0YVRyYW5zZmVyU2V0RHJhZ0lt
YWdlKQogICAgIGNoZWNrQ0dSZWN0SXNFcXVhbFRvQ0dSZWN0V2l0aExvZ2dpbmcoe3swLCA0MDB9
LCB7MjE1LCAxNzR9fSwgW3NpbXVsYXRvciBsaWZ0UHJldmlld3NdWzBdLnZpZXcuZnJhbWUpOwog
fQogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMzAwCi0KIHN0
YXRpYyBOU0RhdGEgKnRlc3RJY29uSW1hZ2VEYXRhKCkKIHsKICAgICByZXR1cm4gW05TRGF0YSBk
YXRhV2l0aENvbnRlbnRzT2ZGaWxlOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gcGF0aEZvclJlc291
cmNlOkAiaWNvbiIgb2ZUeXBlOkAicG5nIiBpbkRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl1dOwpAQCAtMTk4Nyw4ICsyMDU4LDYgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBE
YXRhVHJhbnNmZXJTYW5pdGl6ZUhUTUwpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKIH0KIAotI2VuZGlmIC8vIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDExMDMwMAotCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBFTkFC
TEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBXS19BUElfRU5BQkxF
RAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357085</attachid>
            <date>2018-12-11 16:48:22 -0800</date>
            <delta_ts>2018-12-13 13:11:52 -0800</delta_ts>
            <desc>Fix 32-bit macOS build</desc>
            <filename>bug-192570-20181211164821.patch</filename>
            <type>text/plain</type>
            <size>28592</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFlOThiMTA4ZDU2YTcw
MGQzYTBiODc5NzcxYWVlOWIzNGNjMmEyMC4uYzkyNDIxNGZmZTg1MjJkZjI2YmI1YjI2YmM5ZmI1
Yzg3ZDE3ZWM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE4LTEyLTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1cHBv
cnQgZHJvcHBpbmcgY29udGFjdCBjYXJkIGRhdGEgKHB1YmxpYy52Y2FyZCkgaW4gZWRpdGFibGUg
Y29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyNTcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTYyNjkxMz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIGFjY2Vw
dGluZyB2Q2FyZCAoLnZjZikgZGF0YSB2aWEgZHJvcCBvbiBpT1MuIFNlZSBiZWxvdyBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgICAgIFRlc3RzOiAgRHJhZ0FuZERyb3BUZXN0cy5FeHRlcm5hbFNv
dXJjZUNvbnRhY3RJbnRvRWRpdGFibGVBcmVhcworICAgICAgICAgICAgICAgIERyYWdBbmREcm9w
VGVzdHMuRXh0ZXJuYWxTb3VyY2VNYXBJdGVtQW5kQ29udGFjdFRvVXBsb2FkQXJlYQorICAgICAg
ICAgICAgICAgIERyYWdBbmREcm9wVGVzdHMuRXh0ZXJuYWxTb3VyY2VNYXBJdGVtSW50b0VkaXRh
YmxlQXJlYXMKKyAgICAgICAgICAgICAgICBXS0F0dGFjaG1lbnRUZXN0c0lPUy5JbnNlcnREcm9w
cGVkQ29udGFjdEFzQXR0YWNobWVudAorICAgICAgICAgICAgICAgIFdLQXR0YWNobWVudFRlc3Rz
SU9TLkluc2VydERyb3BwZWRNYXBJdGVtQXNBdHRhY2htZW50CisKKyAgICAgICAgKiBlZGl0aW5n
L1dlYkNvbnRlbnRSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRS
ZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRGb3JGaWxlUGF0aCk6
CisKKyAgICAgICAgUHVsbCBvdXQgbG9naWMgdG8gY3JlYXRlIGFuIGF0dGFjaG1lbnQgZnJvbSBh
IGZpbGUgcGF0aCBvdXQgaW50byBhIHN0YXRpYyBoZWxwZXIuIFVzZSB0aGlzIGluIGByZWFkRmls
ZVBhdGhzYAorICAgICAgICBhcyB3ZWxsIGFzIGByZWFkVmlydHVhbENvbnRhY3RGaWxlYC4KKwor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRocyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkVmlydHVhbENvbnRhY3RGaWxlKToK
KworICAgICAgICBBZGQgYSBwYXN0ZWJvYXJkIHJlYWRpbmcgbWV0aG9kIHRoYXQgcmVhZHMgYSB2
Q2FyZCBmaWxlICh3aXRoIGFuIG9wdGlvbmFsIFVSTCkgYXMgd2ViIGNvbnRlbnQuIFRoZSByZXN1
bHRpbmcKKyAgICAgICAgZnJhZ21lbnQgY29uc2lzdHMgb2YgZWl0aGVyIGFuIGFuY2hvciBhbmQg
YW4gYXR0YWNobWVudCBlbGVtZW50LCBvciBqdXN0IGFuIGF0dGFjaG1lbnQgZWxlbWVudCBpZiB0
aGUgVVJMIGlzCisgICAgICAgIGVtcHR5LiBJbiB0aGUgY2FzZSBvZiBhbiBgTUtNYXBJdGVtYCwg
dGhlIFVSTCBpcyBwb3B1bGF0ZWQsIHNvIHdlIGdlbmVyYXRlIGJvdGggZWxlbWVudHM7IHdoZW4g
ZHJhZ2dpbmcgYQorICAgICAgICBjb250YWN0LCB0aGVyZSBpcyBubyBhc3NvY2lhdGVkIFVSTCwg
c28gd2Ugb25seSBoYXZlIGFuIGF0dGFjaG1lbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9y
VHlwZSk6CisKKyAgICAgICAgQXVnbWVudCB0aGlzIHRvIHRha2UgdGhlIGN1cnJlbnQgYFBhc3Rl
Ym9hcmRJdGVtSW5mb2AgYXMgd2VsbDsgdXNlIHRoaXMgaXRlbSBpbmZvcm1hdGlvbiB0byBnZXQg
YSBmaWxlIHBhdGggZm9yCisgICAgICAgICJwdWJsaWMudmNhcmQiIGRhdGEsIHdoaWNoIGlzIHRo
ZW4gcGFzc2VkIG9uIHRvIHRoZSB3ZWIgY29udGVudCByZWFkZXIuIEFkZGl0aW9uYWxseSwgYnkg
cmV0dXJuaW5nCisgICAgICAgIGBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlYCBoZXJlLCB3
ZSBwcmV2ZW50IHRoZSB3ZWIgY29udGVudCByZWFkZXIgZnJvbSBleHRyYWN0aW5nIHRoZSBwbGFp
biB0ZXh0IGNvbnRlbnRzCisgICAgICAgIG9mIHRoZSB2Q2FyZCBhbmQgZHVtcGluZyBpdCBhcyBw
bGFpbiB0ZXh0IGluIHRoZSBlZGl0YWJsZSBlbGVtZW50ICh0aGlzIHdvdWxkIG90aGVyd2lzZSBo
YXBwZW4sIHNpbmNlCisgICAgICAgICJwdWJsaWMudmNhcmQiIGNvbmZvcm1zIHRvICJwdWJsaWMu
dGV4dCIpLgorCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAg
ICgtW05TSXRlbVByb3ZpZGVyIHdlYl9maWxlVXBsb2FkQ29udGVudFR5cGVzXSk6CisKKyAgICAg
ICAgUHJldmVudCB0aGUgImNvbS5hcHBsZS5tYXBraXQubWFwLWl0ZW0iIFVUSSBmcm9tIGJlaW5n
IGNvbnNpZGVyZWQgYXMgZmlsZSB1cGxvYWQgY29udGVudC4gVGhpcyBzcGVjaWFsIGNhc2UgaXMK
KyAgICAgICAgdHJpY2t5LCBzaW5jZSAiY29tLmFwcGxlLm1hcGtpdC5tYXAtaXRlbSIgY29uZm9y
bXMgdG8gInB1YmxpYy5jb250ZW50IiwgeWV0IGl0cyBjb3JyZXNwb25kaW5nIGRhdGEgaXMgb25s
eQorICAgICAgICBzdWl0YWJsZSBmb3IgZGVzZXJpYWxpemF0aW9uIGludG8gYW4gYE1LTWFwSXRl
bWAuCisKIDIwMTgtMTItMTEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRG9uJ3QgYXR0ZW1wdCB0byBjb21wdXRlIGFuaW1hdGVkIHZhbHVlcyB3aGVuIHRo
ZXJlIGlzIG5vIHJlbGV2YW50IGFuaW1hdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
bnRlbnRSZWFkZXIuaAppbmRleCBlMDAwYTU0N2JjZTg3M2U1NmI1OGRjYTMwNGYzZDg3MGZiZDRm
MTZkLi5jNzc0YjRhMjA1OTQzZDhkNGRlZjc2MjYzOTllNDNkNTVjMzUzMWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaApAQCAtNzcsNiArNzcsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUpIG92ZXJy
aWRlOwogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBv
dmVycmlkZTsKKyAgICBib29sIHJlYWRWaXJ0dWFsQ29udGFjdEZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1cmxUaXRsZSkgb3ZlcnJpZGU7CiAj
ZW5kaWYKICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiB9
OwpAQCAtOTQsNiArOTUsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJv
b2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFk
RmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIHJlYWRWaXJ0dWFsQ29udGFjdEZpbGUoY29uc3QgU3RyaW5nJiwgY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29s
IHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFJURkQoU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbQppbmRleCA0MWVlMDVjYTY5N2EwMzc4MGY0ZTk0OTI2ODEyZmM4YmVm
MTY4YTdhLi5lN2M3ODFlNjI2Mzk2NzEzZTJiZGJmZmU2NGIzMzg4MzQ3MThiZGFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2Nv
YS5tbQpAQCAtNDUsNiArNDUsNyBAQAogI2ltcG9ydCAiSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmgi
CiAjaW1wb3J0ICJIVE1MQlJFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MQm9keUVsZW1lbnQuaCIK
KyNpbXBvcnQgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MSUZyYW1lRWxlbWVudC5o
IgogI2ltcG9ydCAiSFRNTEltYWdlRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE9iamVjdEVsZW1l
bnQuaCIKQEAgLTcxNCw2ICs3MTUsNDUgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1h
Z2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBy
ZXR1cm4gZnJhZ21lbnQ7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCitz
dGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRmlsZVBhdGgoRnJhbWUmIGZyYW1l
LCBjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYoKmZy
YW1lLmRvY3VtZW50KCkpOworICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxl
bWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOworICAgIGlm
ICghc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7CisgICAgICAgIGF0
dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKHBhdGgpLCBIVE1MQXR0YWNobWVudEVsZW1l
bnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICByZXR1cm4gYXR0YWNo
bWVudC5nZXQoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgY29udGVudFR5cGU7CisgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemVGb3JEaXNwbGF5OworICAgIGlmIChGaWxlU3lzdGVt
OjpmaWxlSXNEaXJlY3RvcnkocGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNM
aW5rczo6WWVzKSkKKyAgICAgICAgY29udGVudFR5cGUgPSBrVVRUeXBlRGlyZWN0b3J5OworICAg
IGVsc2UgeworICAgICAgICBsb25nIGxvbmcgZmlsZVNpemU7CisgICAgICAgIEZpbGVTeXN0ZW06
OmdldEZpbGVTaXplKHBhdGgsIGZpbGVTaXplKTsKKyAgICAgICAgZmlsZVNpemVGb3JEaXNwbGF5
ID0gZmlsZVNpemU7CisgICAgICAgIGNvbnRlbnRUeXBlID0gRmlsZTo6Y29udGVudFR5cGVGb3JG
aWxlKHBhdGgpOworICAgICAgICBpZiAoY29udGVudFR5cGUuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgY29udGVudFR5cGUgPSBrVVRUeXBlRGF0YTsKKyAgICB9CisKKyAgICBmcmFtZS5lZGl0b3Io
KS5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlk
ZW50aWZpZXIoKSwgY29udGVudFR5cGUsIHBhdGgpOworCisgICAgaWYgKGNvbnRlbnRUeXBlSXNT
dWl0YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24oY29udGVudFR5cGUpKSB7CisgICAg
ICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAg
ICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6
OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpjcmVhdGUo
cGF0aCkpKTsKKyAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0
YWNobWVudCkpOworICAgICAgICByZXR1cm4gaW1hZ2UuZ2V0KCk7CisgICAgfQorCisgICAgYXR0
YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyhXVEZNb3ZlKGZpbGVTaXplRm9yRGlzcGxheSksIGNv
bnRlbnRUeXBlLCBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkpOworICAgIHJldHVy
biBhdHRhY2htZW50LmdldCgpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKKwogYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXRocykKIHsKICAgICBpZiAocGF0aHMuaXNFbXB0eSgpIHx8ICFmcmFtZS5k
b2N1bWVudCgpKQpAQCAtNzI1LDQyICs3NjUsMzYgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKIAogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuYXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkpIHsKLSAgICAgICAgZm9yIChh
dXRvJiBwYXRoIDogcGF0aHMpIHsKLSAgICAgICAgICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxB
dHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1l
bnQpOwotICAgICAgICAgICAgaWYgKHN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGZy
YW1lKSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBjb250ZW50VHlwZTsKLSAgICAgICAgICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZUZvckRpc3BsYXk7Ci0gICAgICAg
ICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShwYXRoLCBGaWxlU3lzdGVt
OjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMpKQotICAgICAgICAgICAgICAgICAgICBj
b250ZW50VHlwZSA9IGtVVFR5cGVEaXJlY3Rvcnk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZTsKLSAgICAgICAgICAgICAgICAg
ICAgRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUocGF0aCwgZmlsZVNpemUpOwotICAgICAgICAgICAg
ICAgICAgICBmaWxlU2l6ZUZvckRpc3BsYXkgPSBmaWxlU2l6ZTsKLSAgICAgICAgICAgICAgICAg
ICAgY29udGVudFR5cGUgPSBGaWxlOjpjb250ZW50VHlwZUZvckZpbGUocGF0aCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZW50VHlwZSA9IGtVVFR5cGVEYXRhOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgY29udGVudFR5cGUsIHBhdGgp
OwotICAgICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFn
ZVJlcHJlc2VudGF0aW9uKGNvbnRlbnRUeXBlKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRv
IGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgICAg
ICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgRmlsZTo6Y3Jl
YXRlKHBhdGgpKSk7Ci0gICAgICAgICAgICAgICAgICAgIGltYWdlLT5zZXRBdHRhY2htZW50RWxl
bWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKLSAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQt
PmFwcGVuZENoaWxkKGltYWdlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKFdURk1vdmUoZmlsZVNpemVG
b3JEaXNwbGF5KSwgY29udGVudFR5cGUsIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChhdHRhY2htZW50
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKHBhdGgpLCBIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOwotICAgICAgICAgICAgICAg
IGZyYWdtZW50LT5hcHBlbmRDaGlsZChhdHRhY2htZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQorICAgICAgICBmb3IgKGF1dG8mIHBhdGggOiBwYXRocykKKyAgICAgICAgICAgIGZyYWdt
ZW50LT5hcHBlbmRDaGlsZChhdHRhY2htZW50Rm9yRmlsZVBhdGgoZnJhbWUsIHBhdGgpKTsKICAg
ICB9CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRWaXJ0dWFsQ29udGFjdEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXJsVGl0bGUpCit7CisgICAgaWYgKGZpbGVQYXRoLmlz
RW1wdHkoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBpZiAoIWZyYWdtZW50
KQorICAgICAgICBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsK
KworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgaWYgKCF1cmwuaXNFbXB0eSgp
KQorICAgICAgICByZWFkVVJMKHVybCwgdXJsVGl0bGUpOworCisgICAgYXV0byBhdHRhY2htZW50
Q29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSk7Cisg
ICAgYXR0YWNobWVudENvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eURpc3BsYXksIENTU1ZhbHVlQmxvY2ssIHRydWUpOworICAgIGF0dGFjaG1lbnRDb250YWluZXIt
PmFwcGVuZENoaWxkKGF0dGFjaG1lbnRGb3JGaWxlUGF0aChmcmFtZSwgZmlsZVBhdGgpKTsKKyAg
ICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShhdHRhY2htZW50Q29udGFpbmVyKSk7Cisj
ZW5kaWYKKworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgaWYgKHVy
bC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggYzU5Yjg0
MmJhOTM2NzkyOTY0M2MwMjQ1NDRiZDJmNjdmMjYwNDYyNS4uNzlkODE5YmVhZjM5ZThjMjdhOTZl
NWVjNTlmNGQzZWJmMzBiYTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApA
QCAtMTM3LDYgKzEzNyw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0
dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOworICAgIHZpcnR1
YWwgYm9vbCByZWFkVmlydHVhbENvbnRhY3RGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXJsVGl0bGUpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
cmVhZEhUTUwoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChT
aGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVy
JikgPSAwOwpAQCAtMjg3LDcgKzI4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIERpZE5vdFJlYWRU
eXBlLAogICAgICAgICBQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHkKICAgICB9OwotICAg
IFJlYWRlclJlc3VsdCByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShQYXN0ZWJv
YXJkV2ViQ29udGVudFJlYWRlciYsIFBhc3RlYm9hcmRTdHJhdGVneSYsIE5TU3RyaW5nICp0eXBl
LCBpbnQgaXRlbUluZGV4KTsKKyAgICBSZWFkZXJSZXN1bHQgcmVhZFBhc3RlYm9hcmRXZWJDb250
ZW50RGF0YUZvclR5cGUoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBQYXN0ZWJvYXJkU3Ry
YXRlZ3kmLCBOU1N0cmluZyAqdHlwZSwgaW50IGl0ZW1JbmRleCwgY29uc3QgUGFzdGVib2FyZEl0
ZW1JbmZvJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMWQ5YjA1Nzg4YzZjNjA4NGIzNmU3
NmU1NTAyNmM3NTFmZTIzZTI0MS4uODZlN2U2MzRmMDYwMGMzNWZjYThjYTUzYTNhZWEzYzNjNWI4
NDU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0K
QEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgYm9vbCBpc1R5cGVBbGxvd2VkQnlSZWFkaW5nUG9s
aWN5KE5TU3RyaW5nICp0eXBlLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeQogICAgICAgICB8fCBb
dHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZE
XTsKIH0KIAotUGFzdGVib2FyZDo6UmVhZGVyUmVzdWx0IFBhc3RlYm9hcmQ6OnJlYWRQYXN0ZWJv
YXJkV2ViQ29udGVudERhdGFGb3JUeXBlKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFk
ZXIsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIE5TU3RyaW5nICp0eXBlLCBpbnQgaXRl
bUluZGV4KQorUGFzdGVib2FyZDo6UmVhZGVyUmVzdWx0IFBhc3RlYm9hcmQ6OnJlYWRQYXN0ZWJv
YXJkV2ViQ29udGVudERhdGFGb3JUeXBlKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFk
ZXIsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIE5TU3RyaW5nICp0eXBlLCBpbnQgaXRl
bUluZGV4LCBjb25zdCBQYXN0ZWJvYXJkSXRlbUluZm8mIGluZm8pCiB7CiAgICAgaWYgKFt0eXBl
IGlzRXF1YWxUb1N0cmluZzpXZWJBcmNoaXZlUGJvYXJkVHlwZV0gfHwgW3R5cGUgaXNFcXVhbFRv
U3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXSkgewogICAgICAg
ICBhdXRvIGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5k
ZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwpAQCAtMTk3LDYgKzE5NywyOCBAQCBQYXN0ZWJv
YXJkOjpSZWFkZXJSZXN1bHQgUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0
YUZvclR5cGUoUGFzdGVibwogICAgICAgICByZXR1cm4gIWh0bWxTdHJpbmcuaXNOdWxsKCkgJiYg
cmVhZGVyLnJlYWRIVE1MKGh0bWxTdHJpbmcpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJl
YWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCisgICAgaWYgKFt0eXBlIGlzRXF1
YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVkNhcmRdKSB7CisgICAgICAg
IGJvb2wgY2FuQ3JlYXRlQXR0YWNobWVudHMgPSBmYWxzZTsKKyNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQorICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNhbkNyZWF0
ZUF0dGFjaG1lbnRzID0gdHJ1ZTsKKyNlbmRpZgorICAgICAgICBpZiAoY2FuQ3JlYXRlQXR0YWNo
bWVudHMpIHsKKyAgICAgICAgICAgIGF1dG8gcGF0aCA9IGluZm8ucGF0aEZvckNvbnRlbnRUeXBl
KGtVVFR5cGVWQ2FyZCk7CisgICAgICAgICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CisKKyAgICAgICAg
ICAgIFN0cmluZyB0aXRsZTsKKyAgICAgICAgICAgIGF1dG8gdXJsID0gc3RyYXRlZ3kucmVhZFVS
TEZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgdGl0bGUpOworICAg
ICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7
CisKKyAgICAgICAgICAgIGlmIChyZWFkZXIucmVhZFZpcnR1YWxDb250YWN0RmlsZShwYXRoLCB1
cmwsIHRpdGxlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpSZWFkVHlw
ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlw
ZTsKKyAgICB9CisKICNpZiAhUExBVEZPUk0oSU9TTUFDKQogICAgIGlmIChbdHlwZSBpc0VxdWFs
VG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXSkgewogICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUpOwpA
QCAtMjY5LDcgKzI5MSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29u
dGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljCiAgICAgICAgICAgICBp
ZiAoIWlzVHlwZUFsbG93ZWRCeVJlYWRpbmdQb2xpY3kodHlwZSwgcG9saWN5KSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgYXV0byBpdGVtUmVzdWx0ID0gcmVhZFBh
c3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgaSk7
CisgICAgICAgICAgICBhdXRvIGl0ZW1SZXN1bHQgPSByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnRE
YXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCBpLCBzdHJhdGVneS5pbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4KGksIG1fcGFzdGVib2FyZE5hbWUpKTsKICAgICAgICAgICAgIGlmIChp
dGVtUmVzdWx0ID09IFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzA5LDcgKzMzMSw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50
UmVhZGVyJiByZWFkZXIsCiAgICAgICAgICAgICBpZiAoIWlzVHlwZUFsbG93ZWRCeVJlYWRpbmdQ
b2xpY3kodHlwZSwgcG9saWN5KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICAgICAgcmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVy
LCBzdHJhdGVneSwgdHlwZSwgaW5kZXgpOworICAgICAgICAgICAgcmVzdWx0ID0gcmVhZFBhc3Rl
Ym9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgaW5kZXgs
IGluZm8pOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9h
cmRXYXNDaGFuZ2VkRXh0ZXJuYWxseSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICBpZiAocmVzdWx0ID09IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1t
CmluZGV4IGE4Y2VjZjZmODk3MmMxZDYxNGY2MTA3Yzg3OTg5MmE1NGM5MDcxMWIuLjk2Mjk2Y2I4
ZDMyMWUyMGZjM2Y0MjYxZTE0MzkyZWI2ZDA3NjIxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC04
MCw2ICs4MCwxMiBAQCAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopd2ViX2ZpbGVVcGxvYWRDb250
ZW50VHlwZXMKICAgICAgICAgaWYgKFVUVHlwZUNvbmZvcm1zVG8oKF9fYnJpZGdlIENGU3RyaW5n
UmVmKWlkZW50aWZpZXIsIGtVVFR5cGVVUkwpKQogICAgICAgICAgICAgY29udGludWU7CiAKKyAg
ICAgICAgaWYgKFtpZGVudGlmaWVyIGlzRXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5tYXBraXQu
bWFwLWl0ZW0iXSkgeworICAgICAgICAgICAgLy8gVGhpcyB0eXBlIGNvbmZvcm1zIHRvICJwdWJs
aWMuY29udGVudCIsIHlldCB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGlzIG9ubHkgYSBzZXJpYWxp
emF0aW9uIG9mIE1LTWFwSXRlbSBhbmQgaXNuJ3Qgc3VpdGFibGUgZm9yIGZpbGUgdXBsb2Fkcy4K
KyAgICAgICAgICAgIC8vIElnbm9yZSBvdmVyIHRoaXMgdHlwZSByZXByZXNlbnRhdGlvbiBmb3Ig
dGhlIHB1cnBvc2VzIG9mIGZpbGUgdXBsb2FkcywgaW4gZmF2b3Igb2YgInB1YmxpYy52Y2FyZCIg
ZGF0YS4KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKICAgICAgICAgaWYgKHR5
cGVDb25mb3Jtc1RvVHlwZXMoaWRlbnRpZmllciwgUGFzdGVib2FyZDo6c3VwcG9ydGVkRmlsZVVw
bG9hZFBhc3RlYm9hcmRUeXBlcygpKSkKICAgICAgICAgICAgIFt0eXBlcyBhZGRPYmplY3Q6aWRl
bnRpZmllcl07CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDRlNDJkMWNiNjA4OTc3MGM2ZTMzOTM1ZjY1MGExYjQ4NzlhYjA2YWUuLjlh
ZGY3ODlmNjU0NGUyNDg5YzVmZDFkYjlmOTFiMzFlNmRmMmQ3OTQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxOC0x
Mi0xMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBb
aU9TXSBTdXBwb3J0IGRyb3BwaW5nIGNvbnRhY3QgY2FyZCBkYXRhIChwdWJsaWMudmNhcmQpIGlu
IGVkaXRhYmxlIGNvbnRlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MjU3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzU2MjY5MTM+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOgorCisgICAgICAgIEFk
ZCBBUEkgdGVzdHMgdG8gdmVyaWZ5IHRoYXQgcmVnaXN0ZXJpbmcgYE1LTWFwSXRlbWBzIGFuZCBg
Q05Db250YWN0YHMgdG8gaXRlbSBwcm92aWRlcnMgYW5kIGRyb3BwaW5nIHRoZW0gaW4KKyAgICAg
ICAgYXR0YWNobWVudC1lbmFibGVkIHJpY2ggdGV4dCBlZGl0YWJsZSBhcmVhcyBpbnNlcnRzIGF0
dGFjaG1lbnQgZWxlbWVudHMgKGFuZCBpbiB0aGUgY2FzZSBvZiBgTUtNYXBJdGVtYCwKKyAgICAg
ICAgYWRkaXRpb25hbGx5IGluc2VydHMgYSBsaW5rKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW06CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpjcmVhdGVNYXBJdGVtRm9yVGVzdGluZyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpj
cmVhdGVDb250YWN0SXRlbUZvclRlc3RpbmcpOgorCisgICAgICAgIEFkZCBBUEkgdGVzdHMgdG8g
dmVyaWZ5IHRoYXQgZHJvcHBpbmcgbWFwIGl0ZW1zIGFuZCBjb250YWN0IGl0ZW1zIGludG8gcmlj
aCBhbmQgcGxhaW4gZWRpdGFibGUgYXJlYXMgYmVoYXZlcyBhcworICAgICAgICBleHBlY3RlZCAo
aW4gdGhlIGNhc2Ugd2hlcmUgYSBVUkwgaXMgcHJlc2VudCwgZS5nLiBkcm9wcGluZyBhIG1hcCBp
dGVtLCB3ZSBpbnNlcnQgdGhlIFVSTCBhcyBhbiBhbmNob3IsIGFuZCB3aGVuCisgICAgICAgIHRo
ZXJlIGlzIG5vIG90aGVyIHN1aXRhYmxlIHJlcHJlc2VudGF0aW9uIGluIHRoZSBpdGVtIHByb3Zp
ZGVyLCB3ZSBkbyBub3RoaW5nIGF0IGFsbCwgd2hpY2ggaXMgdGhlIGNhc2UgZm9yIHRoZQorICAg
ICAgICBkcm9wcGVkIGBDTkNvbnRhY3RgKS4gQWxzbywgYWRkIGEgdGVzdCB0byB2ZXJpZnkgdGhh
dCBkcmFnIGFuZCBkcm9wIGNhbiBiZSB1c2VkIHRvIHVwbG9hZCB0aGVzZSBpdGVtcyBhcyAudmNm
CisgICAgICAgIGZpbGVzLgorCiAyMDE4LTEyLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgUFNPTiBsb2dpYyBnZXRzIGNvbmZ1c2VkIGJ5IGNvbmN1cnJlbnQg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMu
bW0KaW5kZXggOTQ0NzJhZGY5MGUxNjJhNGU2NjVkMjFhNjcyYjBkNjUwNzQ4ZGM0ZC4uN2YyNGE2
YTgyOWYyMmEzZjYwM2U1MGNiYWFhMTBkZGZjYTg4MmEyNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1t
CkBAIC0yNSwyNSArMjUsMzUgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKKyNpZiBXS19BUElf
RU5BQkxFRCAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKFRWT1MpCisKICNpbXBv
cnQgIkRyYWdBbmREcm9wU2ltdWxhdG9yLmgiCiAjaW1wb3J0ICJQZW5jaWxLaXRUZXN0U1BJLmgi
CiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25E
ZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3
Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8Q29udGFjdHMvQ29udGFjdHMuaD4KKyNp
bXBvcnQgPE1hcEtpdC9NYXBLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVm
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XZWJBcmNoaXZlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01v
YmlsZUNvcmVTZXJ2aWNlcy5oPgogI2VuZGlmCiAKLSNkZWZpbmUgVVNFU19NT0RFUk5fQVRUUklC
VVRFRF9TVFJJTkdfQ09OVkVSU0lPTiAoKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApKQorU09GVF9MSU5LX0ZS
QU1FV09SSyhDb250YWN0cykKK1NPRlRfTElOS19DTEFTUyhDb250YWN0cywgQ05NdXRhYmxlQ29u
dGFjdCkKIAotI2lmIFdLX0FQSV9FTkFCTEVEICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExB
VEZPUk0oVFZPUykKK1NPRlRfTElOS19GUkFNRVdPUksoTWFwS2l0KQorU09GVF9MSU5LX0NMQVNT
KE1hcEtpdCwgTUtNYXBJdGVtKQorU09GVF9MSU5LX0NMQVNTKE1hcEtpdCwgTUtQbGFjZW1hcmsp
CisKKyNkZWZpbmUgVVNFU19NT0RFUk5fQVRUUklCVVRFRF9TVFJJTkdfQ09OVkVSU0lPTiAoKFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEzMDApKQogCiBAaW50ZXJmYWNlIEF0dGFjaG1lbnRVcGRhdGVPYnNlcnZlciA6
IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGVQcml2YXRlPgogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBOU0FycmF5ICppbnNlcnRlZDsKQEAgLTE4MDgsNiArMTgxOCw1NiBAQCBURVNUKFdL
QXR0YWNobWVudFRlc3RzSU9TLCBEcmFnQXR0YWNobWVudEluc2VydGVkQXNEYXRhKQogICAgIFtk
cmFnQW5kRHJvcFNpbXVsYXRvciBlbmREYXRhVHJhbnNmZXJdOwogfQogCitURVNUKFdLQXR0YWNo
bWVudFRlc3RzSU9TLCBJbnNlcnREcm9wcGVkTWFwSXRlbUFzQXR0YWNobWVudCkKK3sKKyAgICBh
dXRvIHBsYWNlbWFyayA9IGFkb3B0TlMoW2FsbG9jTUtQbGFjZW1hcmtJbnN0YW5jZSgpIGluaXRX
aXRoQ29vcmRpbmF0ZTpDTExvY2F0aW9uQ29vcmRpbmF0ZTJETWFrZSgzNy4zMzI3LCAtMTIyLjAw
NTMpXSk7CisgICAgYXV0byBtYXBJdGVtID0gYWRvcHROUyhbYWxsb2NNS01hcEl0ZW1JbnN0YW5j
ZSgpIGluaXRXaXRoUGxhY2VtYXJrOnBsYWNlbWFyay5nZXQoKV0pOworICAgIFttYXBJdGVtIHNl
dE5hbWU6QCJBcHBsZSBQYXJrIl07CisKKyAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMo
W1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0
ZXJPYmplY3Q6bWFwSXRlbS5nZXQoKSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50
YXRpb25WaXNpYmlsaXR5QWxsXTsKKyAgICBbaXRlbVByb3ZpZGVyIHNldFN1Z2dlc3RlZE5hbWU6
W21hcEl0ZW0gbmFtZV1dOworCisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdB
dHRhY2htZW50cygpOworICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9w
U2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFtz
aW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIGl0ZW1Qcm92aWRlci5nZXQoKSBd
XTsKKyAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMjUsIDI1KSB0bzpDR1BvaW50
TWFrZSgxMDAsIDEwMCldOworCisgICAgTlNVUkwgKmRyb3BwZWRMaW5rVVJMID0gW05TVVJMIFVS
TFdpdGhTdHJpbmc6W3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAImhyZWYiIGZvclF1ZXJ5U2Vs
ZWN0b3I6QCJhIl1dOworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRUYWc6QCJBIiB0b0NvbWVC
ZWZvcmU6QCJBVFRBQ0hNRU5UIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJtYXBzLmFwcGxlLmNv
bSIsIGRyb3BwZWRMaW5rVVJMLmhvc3QpOworICAgIEVYUEVDVF9XS19TVFJFUSgiQXBwbGUgUGFy
ay52Y2YiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0
b3I6QCJhdHRhY2htZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgidGV4dC92Y2FyZCIsIFt3
ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNo
bWVudCJdKTsKKyAgICBFWFBFQ1RfRVEoMVUsIFtzaW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50
c10uY291bnQpOworICAgIF9XS0F0dGFjaG1lbnRJbmZvICppbmZvID0gW3NpbXVsYXRvciBpbnNl
cnRlZEF0dGFjaG1lbnRzXS5maXJzdE9iamVjdC5pbmZvOworICAgIEVYUEVDVF9XS19TVFJFUSgi
QXBwbGUgUGFyay52Y2YiLCBpbmZvLm5hbWUpOworICAgIEVYUEVDVF9XS19TVFJFUSgidGV4dC92
Y2FyZCIsIGluZm8uY29udGVudFR5cGUpOworfQorCitURVNUKFdLQXR0YWNobWVudFRlc3RzSU9T
LCBJbnNlcnREcm9wcGVkQ29udGFjdEFzQXR0YWNobWVudCkKK3sKKyAgICBhdXRvIGNvbnRhY3Qg
PSBhZG9wdE5TKFthbGxvY0NOTXV0YWJsZUNvbnRhY3RJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBb
Y29udGFjdCBzZXRHaXZlbk5hbWU6QCJCZW4iXTsKKyAgICBbY29udGFjdCBzZXRGYW1pbHlOYW1l
OkAiQml0ZGlkZGxlIl07CisKKyAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0
ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmpl
Y3Q6Y29udGFjdC5nZXQoKSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25W
aXNpYmlsaXR5QWxsXTsKKyAgICBbaXRlbVByb3ZpZGVyIHNldFN1Z2dlc3RlZE5hbWU6QCJCZW4i
XTsKKworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsK
KyAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxv
Y10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBbc2ltdWxhdG9yIHNldEV4
dGVybmFsSXRlbVByb3ZpZGVyczpAWyBpdGVtUHJvdmlkZXIuZ2V0KCkgXV07CisgICAgW3NpbXVs
YXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDI1LCAyNSkgdG86Q0dQb2ludE1ha2UoMTAwLCAxMDAp
XTsKKworICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDowIHF1ZXJ5U2VsZWN0b3I6QCJh
Il07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJCZW4udmNmIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2F0dGFjaG1lbnQnKS50
aXRsZSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInRleHQvdmNhcmQiLCBbd2ViVmlldyB2YWx1
ZU9mQXR0cmlidXRlOkAidHlwZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7Cisg
ICAgRVhQRUNUX0VRKDFVLCBbc2ltdWxhdG9yIGluc2VydGVkQXR0YWNobWVudHNdLmNvdW50KTsK
KyAgICBfV0tBdHRhY2htZW50SW5mbyAqaW5mbyA9IFtzaW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2ht
ZW50c10uZmlyc3RPYmplY3QuaW5mbzsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkJlbi52Y2YiLCBp
bmZvLm5hbWUpOworICAgIEVYUEVDVF9XS19TVFJFUSgidGV4dC92Y2FyZCIsIGluZm8uY29udGVu
dFR5cGUpOworfQorCiAjaWYgSEFWRShQRU5DSUxLSVQpCiBzdGF0aWMgQk9PTCBmb3JFYWNoVmll
d0luSGllcmFyY2h5KFVJVmlldyAqdmlldywgdm9pZChebWFwRnVuY3Rpb24pKFVJVmlldyAqc3Vi
dmlldywgQk9PTCAqc3RvcCkpCiB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbQppbmRleCBiYTlmNzlmNThjYTkzMTYzNjBkMzFk
N2EzZTMxZjI3ZWFiZTdiNjhlLi4wZTY0YzNjODdjNzJmMDYyYTEwNWEwZmE3YTAzODFmNDY4NDk1
MTVjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJv
cFRlc3RzSU9TLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmRE
cm9wVGVzdHNJT1MubW0KQEAgLTMzLDYgKzMzLDggQEAKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcu
aCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9u
RXh0cmFzLmgiCisjaW1wb3J0IDxDb250YWN0cy9Db250YWN0cy5oPgorI2ltcG9ydCA8TWFwS2l0
L01hcEtpdC5oPgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNl
cy5oPgogI2ltcG9ydCA8VUlLaXQvTlNJdGVtUHJvdmlkZXIrVUlLaXRBZGRpdGlvbnMuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgpAQCAtNDIsNiArNDQsMTQgQEAK
ICNpbXBvcnQgPFdlYktpdC9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvU2Vjb25k
cy5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUkso
Q29udGFjdHMpCitTT0ZUX0xJTktfQ0xBU1MoQ29udGFjdHMsIENOTXV0YWJsZUNvbnRhY3QpCisK
K1NPRlRfTElOS19GUkFNRVdPUksoTWFwS2l0KQorU09GVF9MSU5LX0NMQVNTKE1hcEtpdCwgTUtN
YXBJdGVtKQorU09GVF9MSU5LX0NMQVNTKE1hcEtpdCwgTUtQbGFjZW1hcmspCiAKIHR5cGVkZWYg
dm9pZCAoXkZpbGVMb2FkQ29tcGxldGlvbkJsb2NrKShOU1VSTCAqLCBCT09MLCBOU0Vycm9yICop
OwogdHlwZWRlZiB2b2lkICheRGF0YUxvYWRDb21wbGV0aW9uQmxvY2spKE5TRGF0YSAqLCBOU0Vy
cm9yICopOwpAQCAtMTg3LDggKzE5Nyw2IEBAIHN0YXRpYyB2b2lkIGNoZWNrRHJhZ0NhcmV0UmVj
dElzQ29udGFpbmVkSW5SZWN0KENHUmVjdCBjYXJldFJlY3QsIENHUmVjdCBjb250YWluCiAgICAg
ICAgIE5TTG9nKEAiRXhwZWN0ZWQgY2FyZXQgcmVjdDogJUAgdG8gZml0IHdpdGhpbiBjb250YWlu
ZXIgcmVjdDogJUAiLCBOU1N0cmluZ0Zyb21DR1JlY3QoY2FyZXRSZWN0KSwgTlNTdHJpbmdGcm9t
Q0dSZWN0KGNvbnRhaW5lclJlY3QpKTsKIH0KIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDExMDMwMAotCiBzdGF0aWMgdm9pZCBjaGVja0pTT05XaXRoTG9nZ2luZyhO
U1N0cmluZyAqanNvblN0cmluZywgTlNEaWN0aW9uYXJ5ICpleHBlY3RlZCkKIHsKICAgICBCT09M
IHN1Y2Nlc3MgPSBUZXN0V2ViS2l0QVBJOjpVdGlsOjpqc29uTWF0Y2hlc0V4cGVjdGVkVmFsdWVz
KGpzb25TdHJpbmcsIGV4cGVjdGVkKTsKQEAgLTI1MSw4ICsyNTksNiBAQCBzdGF0aWMgdm9pZCBy
dW5UZXN0V2l0aFRlbXBvcmFyeUZvbGRlcih2b2lkKF5ydW5UZXN0KShOU1VSTCAqZm9sZGVyVVJM
KSkKICAgICB9CiB9CiAKLSNlbmRpZiAvLyBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMTAzMDAKLQogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKERyYWdBbmRE
cm9wVGVzdHMsIEltYWdlVG9Db250ZW50RWRpdGFibGUpCkBAIC0xMDYxLDcgKzEwNjcsNzYgQEAg
VEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJjZU92ZXJyaWRlRHJvcEZpbGVVcGxv
YWQpCiAgICAgRVhQRUNUX0ZBTFNFKFtzaW11bGF0b3IgbGFzdEtub3duRHJvcFByb3Bvc2FsXS5w
cmVjaXNlKTsKIH0KIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEx
MDMwMAorc3RhdGljIFJldGFpblB0cjxOU0l0ZW1Qcm92aWRlcj4gY3JlYXRlTWFwSXRlbUZvclRl
c3RpbmcoKQoreworICAgIGF1dG8gcGxhY2VtYXJrID0gYWRvcHROUyhbYWxsb2NNS1BsYWNlbWFy
a0luc3RhbmNlKCkgaW5pdFdpdGhDb29yZGluYXRlOkNMTG9jYXRpb25Db29yZGluYXRlMkRNYWtl
KDM3LjMzMjcsIC0xMjIuMDA1MyldKTsKKyAgICBhdXRvIGl0ZW0gPSBhZG9wdE5TKFthbGxvY01L
TWFwSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhQbGFjZW1hcms6cGxhY2VtYXJrLmdldCgpXSk7Cisg
ICAgW2l0ZW0gc2V0TmFtZTpAIkFwcGxlIFBhcmsiXTsKKworICAgIGF1dG8gaXRlbVByb3ZpZGVy
ID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2l0ZW1Qcm92
aWRlciByZWdpc3Rlck9iamVjdDppdGVtLmdldCgpIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJS
ZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOworICAgIFtpdGVtUHJvdmlkZXIgc2V0U3VnZ2Vz
dGVkTmFtZTpbaXRlbSBuYW1lXV07CisKKyAgICByZXR1cm4gaXRlbVByb3ZpZGVyOworfQorCitz
dGF0aWMgUmV0YWluUHRyPE5TSXRlbVByb3ZpZGVyPiBjcmVhdGVDb250YWN0SXRlbUZvclRlc3Rp
bmcoKQoreworICAgIGF1dG8gY29udGFjdCA9IGFkb3B0TlMoW2FsbG9jQ05NdXRhYmxlQ29udGFj
dEluc3RhbmNlKCkgaW5pdF0pOworICAgIFtjb250YWN0IHNldEdpdmVuTmFtZTpAIkJlbiJdOwor
ICAgIFtjb250YWN0IHNldEZhbWlseU5hbWU6QCJCaXRkaWRkbGUiXTsKKworICAgIGF1dG8gaXRl
bVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAg
W2l0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDpjb250YWN0LmdldCgpIHZpc2liaWxpdHk6TlNJ
dGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOworICAgIFtpdGVtUHJvdmlk
ZXIgc2V0U3VnZ2VzdGVkTmFtZTpAIkJlbiJdOworCisgICAgcmV0dXJuIGl0ZW1Qcm92aWRlcjsK
K30KKworVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJjZU1hcEl0ZW1JbnRvRWRp
dGFibGVBcmVhcykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImNvbnRlbnRlZGl0YWJs
ZS1hbmQtdGV4dGFyZWEiXTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0
Q29tbWFuZDpAIkRlbGV0ZSIgYXJndW1lbnQ6bmlsXTsKKworICAgIGF1dG8gc2ltdWxhdG9yID0g
YWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2Vi
Vmlldy5nZXQoKV0pOworICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBb
IGNyZWF0ZU1hcEl0ZW1Gb3JUZXN0aW5nKCkuYXV0b3JlbGVhc2UoKSBdXTsKKyAgICBbc2ltdWxh
dG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMCwgMCkgdG86Q0dQb2ludE1ha2UoMTAwLCAxMDApXTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoIkFwcGxlIFBhcmsiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W2NvbnRlbnRlZGl0
YWJsZV0nKS50ZXh0Q29udGVudCJdKTsKKyAgICBOU1VSTCAqZmlyc3RVUkwgPSBbTlNVUkwgVVJM
V2l0aFN0cmluZzpbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1l
bnQucXVlcnlTZWxlY3RvcignYScpLmhyZWYiXV07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJtYXBz
LmFwcGxlLmNvbSIsIGZpcnN0VVJMLmhvc3QpOworCisgICAgW3NpbXVsYXRvciBydW5Gcm9tOkNH
UG9pbnRNYWtlKDAsIDApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07CisgICAgTlNVUkwgKnNl
Y29uZFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOlt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0ZXh0YXJlYScpLnZhbHVlIl1d
OworICAgIEVYUEVDVF9XS19TVFJFUSgibWFwcy5hcHBsZS5jb20iLCBzZWNvbmRVUkwuaG9zdCk7
Cit9CisKK1RFU1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VDb250YWN0SW50b0Vk
aXRhYmxlQXJlYXMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJjb250ZW50ZWRpdGFi
bGUtYW5kLXRleHRhcmVhIl07CisgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRp
dENvbW1hbmQ6QCJEZWxldGUiIGFyZ3VtZW50Om5pbF07CisKKyAgICBhdXRvIHNpbXVsYXRvciA9
IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3Ondl
YlZpZXcuZ2V0KCldKTsKKyAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpA
WyBjcmVhdGVDb250YWN0SXRlbUZvclRlc3RpbmcoKS5hdXRvcmVsZWFzZSgpIF1dOworICAgIFtz
aW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgwLCAwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDEw
MCldOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rpdltjb250ZW50ZWRpdGFibGVd
JykudGV4dENvbnRlbnQiXSk7CisKKyAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2Uo
MCwgMCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIs
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCd0ZXh0YXJlYScpLnRleHRDb250ZW50Il0pOworfQorCitURVNUKERyYWdBbmREcm9w
VGVzdHMsIEV4dGVybmFsU291cmNlTWFwSXRlbUFuZENvbnRhY3RUb1VwbG9hZEFyZWEpCit7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJmaWxlLXVwbG9hZGluZyJdOworCisgICAgYXV0byBz
aW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRo
V2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgW3NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Q
cm92aWRlcnM6QFsgY3JlYXRlTWFwSXRlbUZvclRlc3RpbmcoKS5hdXRvcmVsZWFzZSgpLCBjcmVh
dGVDb250YWN0SXRlbUZvclRlc3RpbmcoKS5hdXRvcmVsZWFzZSgpIF1dOworICAgIFtzaW11bGF0
b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgyMDAsIDEwMCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDAp
XTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgidGV4dC92Y2FyZCwgdGV4dC92Y2FyZCIsIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJvdXRwdXQudmFsdWUiXSk7Cit9CiAK
IHN0YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gc2V0VXBUZXN0V2ViVmlld0ZvckRhdGFU
cmFuc2Zlckl0ZW1zKCkKIHsKQEAgLTExNDMsOCArMTIxOCw2IEBAIFRFU1QoRHJhZ0FuZERyb3BU
ZXN0cywgRXh0ZXJuYWxTb3VyY2VEYXRhVHJhbnNmZXJJdGVtR2V0UGxhaW5UZXh0RmlsZUFzRW50
cnkpCiAgICAgRVhQRUNUX1dLX1NUUkVRKFtleHBlY3RlZE91dHB1dCBjb21wb25lbnRzSm9pbmVk
QnlTdHJpbmc6QCJcbiJdLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
b3V0cHV0LnZhbHVlIl0pOwogfQogCi0jZW5kaWYgLy8gX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTEwMzAwCi0KIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3Vy
Y2VPdmVycmlkZURyb3BJbnNlcnRVUkwpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAs
IDUwMCldKTsKQEAgLTE1NjIsOCArMTYzNSw2IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgRHJh
Z0xpZnRQcmV2aWV3RGF0YVRyYW5zZmVyU2V0RHJhZ0ltYWdlKQogICAgIGNoZWNrQ0dSZWN0SXNF
cXVhbFRvQ0dSZWN0V2l0aExvZ2dpbmcoe3swLCA0MDB9LCB7MjE1LCAxNzR9fSwgW3NpbXVsYXRv
ciBsaWZ0UHJldmlld3NdWzBdLnZpZXcuZnJhbWUpOwogfQogCi0jaWYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMzAwCi0KIHN0YXRpYyBOU0RhdGEgKnRlc3RJY29uSW1h
Z2VEYXRhKCkKIHsKICAgICByZXR1cm4gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOltb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gcGF0aEZvclJlc291cmNlOkAiaWNvbiIgb2ZUeXBlOkAicG5n
IiBpbkRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwpAQCAtMTk4Nyw4ICsy
MDU4LDYgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEYXRhVHJhbnNmZXJTYW5pdGl6ZUhUTUwp
CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0KIAotI2VuZGlmIC8vIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDMwMAotCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBXS19BUElfRU5BQkxFRAo=
</data>
<flag name="review"
          id="374003"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357258</attachid>
            <date>2018-12-13 14:47:48 -0800</date>
            <delta_ts>2018-12-13 15:25:29 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-192570-20181213144747.patch</filename>
            <type>text/plain</type>
            <size>28816</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzdjMzMzYmJjNDkxZTIz
NjUzMjgxMzMzNGQwZjQxYTUzMWI3NTA3NS4uMDc2ZTJlYTg0ODgzNTZiNDRlYjg0ODdiOWJkMTBi
ZjM0MDE0ODJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE4LTEyLTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1cHBv
cnQgZHJvcHBpbmcgY29udGFjdCBjYXJkIGRhdGEgKHB1YmxpYy52Y2FyZCkgaW4gZWRpdGFibGUg
Y29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyNTcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTYyNjkxMz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIEFkZHMgc3VwcG9ydCBmb3IgYWNjZXB0aW5n
IHZDYXJkICgudmNmKSBkYXRhIHZpYSBkcm9wIG9uIGlPUy4gU2VlIGJlbG93IGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICAgICAgVGVzdHM6ICBEcmFnQW5kRHJvcFRlc3RzLkV4dGVybmFsU291cmNl
Q29udGFjdEludG9FZGl0YWJsZUFyZWFzCisgICAgICAgICAgICAgICAgRHJhZ0FuZERyb3BUZXN0
cy5FeHRlcm5hbFNvdXJjZU1hcEl0ZW1BbmRDb250YWN0VG9VcGxvYWRBcmVhCisgICAgICAgICAg
ICAgICAgRHJhZ0FuZERyb3BUZXN0cy5FeHRlcm5hbFNvdXJjZU1hcEl0ZW1JbnRvRWRpdGFibGVB
cmVhcworICAgICAgICAgICAgICAgIFdLQXR0YWNobWVudFRlc3RzSU9TLkluc2VydERyb3BwZWRD
b250YWN0QXNBdHRhY2htZW50CisgICAgICAgICAgICAgICAgV0tBdHRhY2htZW50VGVzdHNJT1Mu
SW5zZXJ0RHJvcHBlZE1hcEl0ZW1Bc0F0dGFjaG1lbnQKKworICAgICAgICAqIGVkaXRpbmcvV2Vi
Q29udGVudFJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVudEZvckZpbGVQYXRoKToKKwor
ICAgICAgICBQdWxsIG91dCBsb2dpYyB0byBjcmVhdGUgYW4gYXR0YWNobWVudCBmcm9tIGEgZmls
ZSBwYXRoIG91dCBpbnRvIGEgc3RhdGljIGhlbHBlci4gVXNlIHRoaXMgaW4gYHJlYWRGaWxlUGF0
aHNgCisgICAgICAgIGFzIHdlbGwgYXMgYHJlYWRWaXJ0dWFsQ29udGFjdEZpbGVgLgorCisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZVBhdGhzKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRWaXJ0dWFsQ29udGFjdEZpbGUpOgorCisg
ICAgICAgIEFkZCBhIHBhc3RlYm9hcmQgcmVhZGluZyBtZXRob2QgdGhhdCByZWFkcyBhIHZDYXJk
IGZpbGUgKHdpdGggYW4gb3B0aW9uYWwgVVJMKSBhcyB3ZWIgY29udGVudC4gVGhlIHJlc3VsdGlu
ZworICAgICAgICBmcmFnbWVudCBjb25zaXN0cyBvZiBlaXRoZXIgYW4gYW5jaG9yIGFuZCBhbiBh
dHRhY2htZW50IGVsZW1lbnQsIG9yIGp1c3QgYW4gYXR0YWNobWVudCBlbGVtZW50IGlmIHRoZSBV
UkwgaXMKKyAgICAgICAgZW1wdHkuIEluIHRoZSBjYXNlIG9mIGFuIGBNS01hcEl0ZW1gLCB0aGUg
VVJMIGlzIHBvcHVsYXRlZCwgc28gd2UgZ2VuZXJhdGUgYm90aCBlbGVtZW50czsgd2hlbiBkcmFn
Z2luZyBhCisgICAgICAgIGNvbnRhY3QsIHRoZXJlIGlzIG5vIGFzc29jaWF0ZWQgVVJMLCBzbyB3
ZSBvbmx5IGhhdmUgYW4gYXR0YWNobWVudC4KKworICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBl
KToKKworICAgICAgICBBdWdtZW50IHRoaXMgdG8gdGFrZSB0aGUgY3VycmVudCBgUGFzdGVib2Fy
ZEl0ZW1JbmZvYCBhcyB3ZWxsOyB1c2UgdGhpcyBpdGVtIGluZm9ybWF0aW9uIHRvIGdldCBhIGZp
bGUgcGF0aCBmb3IKKyAgICAgICAgInB1YmxpYy52Y2FyZCIgZGF0YSwgd2hpY2ggaXMgdGhlbiBw
YXNzZWQgb24gdG8gdGhlIHdlYiBjb250ZW50IHJlYWRlci4gQWRkaXRpb25hbGx5LCBieSByZXR1
cm5pbmcKKyAgICAgICAgYFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGVgIGhlcmUsIHdlIHBy
ZXZlbnQgdGhlIHdlYiBjb250ZW50IHJlYWRlciBmcm9tIGV4dHJhY3RpbmcgdGhlIHBsYWluIHRl
eHQgY29udGVudHMKKyAgICAgICAgb2YgdGhlIHZDYXJkIGFuZCBkdW1waW5nIGl0IGFzIHBsYWlu
IHRleHQgaW4gdGhlIGVkaXRhYmxlIGVsZW1lbnQgKHRoaXMgd291bGQgb3RoZXJ3aXNlIGhhcHBl
biwgc2luY2UKKyAgICAgICAgInB1YmxpYy52Y2FyZCIgY29uZm9ybXMgdG8gInB1YmxpYy50ZXh0
IikuCisKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbToKKyAgICAgICAgKC1b
TlNJdGVtUHJvdmlkZXIgd2ViX2ZpbGVVcGxvYWRDb250ZW50VHlwZXNdKToKKworICAgICAgICBQ
cmV2ZW50IHRoZSAiY29tLmFwcGxlLm1hcGtpdC5tYXAtaXRlbSIgVVRJIGZyb20gYmVpbmcgY29u
c2lkZXJlZCBhcyBmaWxlIHVwbG9hZCBjb250ZW50LiBUaGlzIHNwZWNpYWwgY2FzZSBpcworICAg
ICAgICB0cmlja3ksIHNpbmNlICJjb20uYXBwbGUubWFwa2l0Lm1hcC1pdGVtIiBjb25mb3JtcyB0
byAicHVibGljLmNvbnRlbnQiLCB5ZXQgaXRzIGNvcnJlc3BvbmRpbmcgZGF0YSBpcyBvbmx5Cisg
ICAgICAgIHN1aXRhYmxlIGZvciBkZXNlcmlhbGl6YXRpb24gaW50byBhbiBgTUtNYXBJdGVtYC4K
KwogMjAxOC0xMi0xMyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTWVkaWFTdHJlYW1dIENhbGN1bGF0ZSB3aWR0aCBvciBoZWlnaHQgd2hlbiBjb25z
dHJhaW50cyBjb250YWluIG9ubHkgdGhlIG90aGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29udGVudFJlYWRlci5oCmluZGV4IGUwMDBhNTQ3YmNlODczZTU2YjU4ZGNhMzA0ZjNkODcwZmJk
NGYxNmQuLmM3NzRiNGEyMDU5NDNkOGQ0ZGVmNzYyNjM5OWU0M2Q1NWMzNTMxZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCkBAIC03Nyw2ICs3Nyw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIGJv
b2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSkgb3Zl
cnJpZGU7CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUp
IG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFZpcnR1YWxDb250YWN0RmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVybFRpdGxlKSBvdmVycmlkZTsK
ICNlbmRpZgogICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
IH07CkBAIC05NCw2ICs5NSw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
Ym9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICBib29sIHJl
YWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgcmVhZFZpcnR1YWxDb250YWN0RmlsZShjb25zdCBTdHJpbmcmLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkUlRGRChT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tCmluZGV4IDQxZWUwNWNhNjk3YTAzNzgwZjRlOTQ5MjY4MTJmYzhi
ZWYxNjhhN2EuLmU3Yzc4MWU2MjYzOTY3MTNlMmJkYmZmZTY0YjMzODgzNDcxOGJkYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCkBAIC00NSw2ICs0NSw3IEBACiAjaW1wb3J0ICJIVE1MQXR0YWNobWVudEVsZW1lbnQu
aCIKICNpbXBvcnQgIkhUTUxCUkVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxCb2R5RWxlbWVudC5o
IgorI2ltcG9ydCAiSFRNTERpdkVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxJRnJhbWVFbGVtZW50
LmgiCiAjaW1wb3J0ICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MT2JqZWN0RWxl
bWVudC5oIgpAQCAtNzE0LDYgKzcxNSw0NSBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJ
bWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAg
IHJldHVybiBmcmFnbWVudDsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisK
K3N0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JGaWxlUGF0aChGcmFtZSYgZnJh
bWUsIGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZigq
ZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRF
bGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CisgICAg
aWYgKCFzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YShmcmFtZSkpIHsKKyAgICAgICAg
YXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUocGF0aCksIEhUTUxBdHRhY2htZW50RWxl
bWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CisgICAgICAgIHJldHVybiBhdHRh
Y2htZW50LmdldCgpOworICAgIH0KKworICAgIFN0cmluZyBjb250ZW50VHlwZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZUZvckRpc3BsYXk7CisgICAgaWYgKEZpbGVTeXN0
ZW06OmZpbGVJc0RpcmVjdG9yeShwYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xp
Y0xpbmtzOjpZZXMpKQorICAgICAgICBjb250ZW50VHlwZSA9IGtVVFR5cGVEaXJlY3Rvcnk7Cisg
ICAgZWxzZSB7CisgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZTsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6Z2V0RmlsZVNpemUocGF0aCwgZmlsZVNpemUpOworICAgICAgICBmaWxlU2l6ZUZvckRpc3Bs
YXkgPSBmaWxlU2l6ZTsKKyAgICAgICAgY29udGVudFR5cGUgPSBGaWxlOjpjb250ZW50VHlwZUZv
ckZpbGUocGF0aCk7CisgICAgICAgIGlmIChjb250ZW50VHlwZS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBjb250ZW50VHlwZSA9IGtVVFR5cGVEYXRhOworICAgIH0KKworICAgIGZyYW1lLmVkaXRv
cigpLnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVl
SWRlbnRpZmllcigpLCBjb250ZW50VHlwZSwgcGF0aCk7CisKKyAgICBpZiAoY29udGVudFR5cGVJ
c1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihjb250ZW50VHlwZSkpIHsKKyAg
ICAgICAgYXV0byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Cisg
ICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0
ZShwYXRoKSkpOworICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVudEVsZW1lbnQoV1RGTW92ZShh
dHRhY2htZW50KSk7CisgICAgICAgIHJldHVybiBpbWFnZS5nZXQoKTsKKyAgICB9CisKKyAgICBh
dHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKFdURk1vdmUoZmlsZVNpemVGb3JEaXNwbGF5KSwg
Y29udGVudFR5cGUsIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKSk7CisgICAgcmV0
dXJuIGF0dGFjaG1lbnQuZ2V0KCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aHMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhdGhzKQogewogICAgIGlmIChwYXRocy5pc0VtcHR5KCkgfHwgIWZyYW1l
LmRvY3VtZW50KCkpCkBAIC03MjUsNDIgKzc2NSwzNiBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6
OnJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogCiAjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSkgewotICAgICAgICBmb3Ig
KGF1dG8mIHBhdGggOiBwYXRocykgewotICAgICAgICAgICAgYXV0byBhdHRhY2htZW50ID0gSFRN
TEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1
bWVudCk7Ci0gICAgICAgICAgICBpZiAoc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEo
ZnJhbWUpKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplRm9yRGlzcGxheTsKLSAgICAg
ICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KHBhdGgsIEZpbGVTeXN0
ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcykpCi0gICAgICAgICAgICAgICAgICAg
IGNvbnRlbnRUeXBlID0ga1VUVHlwZURpcmVjdG9yeTsKLSAgICAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGZpbGVTaXplOwotICAgICAgICAgICAgICAg
ICAgICBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShwYXRoLCBmaWxlU2l6ZSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGZpbGVTaXplRm9yRGlzcGxheSA9IGZpbGVTaXplOwotICAgICAgICAgICAgICAg
ICAgICBjb250ZW50VHlwZSA9IEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShwYXRoKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRlbnRUeXBlID0ga1VUVHlwZURhdGE7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGZyYW1lLmVkaXRvcigpLnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRlbnRpZmllcigpLCBjb250ZW50VHlwZSwgcGF0
aCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRUeXBlSXNTdWl0YWJsZUZvcklubGluZUlt
YWdlUmVwcmVzZW50YXRpb24oY29udGVudFR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1
dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgICAgICAg
ICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpj
cmVhdGUocGF0aCkpKTsKLSAgICAgICAgICAgICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRF
bGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOwotICAgICAgICAgICAgICAgICAgICBmcmFnbWVu
dC0+YXBwZW5kQ2hpbGQoaW1hZ2UpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUF0dHJpYnV0ZXMoV1RGTW92ZShmaWxlU2l6
ZUZvckRpc3BsYXkpLCBjb250ZW50VHlwZSwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBh
dGgpKTsKLSAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGF0dGFjaG1l
bnQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUocGF0aCksIEhUTUxBdHRhY2ht
ZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7Ci0gICAgICAgICAgICAg
ICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnQpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9CisgICAgICAgIGZvciAoYXV0byYgcGF0aCA6IHBhdGhzKQorICAgICAgICAgICAgZnJh
Z21lbnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnRGb3JGaWxlUGF0aChmcmFtZSwgcGF0aCkpOwog
ICAgIH0KICNlbmRpZgogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgV2ViQ29udGVudFJl
YWRlcjo6cmVhZFZpcnR1YWxDb250YWN0RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1cmxUaXRsZSkKK3sKKyAgICBpZiAoZmlsZVBhdGgu
aXNFbXB0eSgpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOworICAgIGlmICghZnJhZ21l
bnQpCisgICAgICAgIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgp
OworCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICBpZiAoIXVybC5pc0VtcHR5
KCkpCisgICAgICAgIHJlYWRVUkwodXJsLCB1cmxUaXRsZSk7CisKKyAgICBhdXRvIGF0dGFjaG1l
bnRDb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpKTsK
KyAgICBhdHRhY2htZW50Q29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5RGlzcGxheSwgQ1NTVmFsdWVCbG9jaywgdHJ1ZSk7CisgICAgYXR0YWNobWVudENvbnRhaW5l
ci0+YXBwZW5kQ2hpbGQoYXR0YWNobWVudEZvckZpbGVQYXRoKGZyYW1lLCBmaWxlUGF0aCkpOwor
ICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnRDb250YWluZXIpKTsK
KyNlbmRpZgorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZFVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBpZiAo
dXJsLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBjNTli
ODQyYmE5MzY3OTI5NjQzYzAyNDU0NGJkMmY2N2YyNjA0NjI1Li43OWQ4MTliZWFmMzllOGMyN2E5
NmU1ZWM1OWY0ZDNlYmYzMGJhMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5o
CkBAIC0xMzcsNiArMTM3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZp
cnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CisgICAgdmly
dHVhbCBib29sIHJlYWRWaXJ0dWFsQ29udGFjdEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1cmxUaXRsZSkgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRSVEZE
KFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihTaGFyZWRCdWZm
ZXImKSA9IDA7CkBAIC0yODcsNyArMjg4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRGlkTm90UmVh
ZFR5cGUsCiAgICAgICAgIFBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseQogICAgIH07Ci0g
ICAgUmVhZGVyUmVzdWx0IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKFBhc3Rl
Ym9hcmRXZWJDb250ZW50UmVhZGVyJiwgUGFzdGVib2FyZFN0cmF0ZWd5JiwgTlNTdHJpbmcgKnR5
cGUsIGludCBpdGVtSW5kZXgpOworICAgIFJlYWRlclJlc3VsdCByZWFkUGFzdGVib2FyZFdlYkNv
bnRlbnREYXRhRm9yVHlwZShQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFBhc3RlYm9hcmRT
dHJhdGVneSYsIE5TU3RyaW5nICp0eXBlLCBpbnQgaXRlbUluZGV4LCBjb25zdCBQYXN0ZWJvYXJk
SXRlbUluZm8mKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzMTk2NGZmY2MxOTY4ZDVkODFi
ZDQ5ODk2YzgxZGQ0YWEyNGUyOWQ5Li44ZjUyNzkzZDM1MGZhNjc2N2Q3MGQ0NGNiZWY0Zjk3NzRl
MDQ0MGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5t
bQpAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyBib29sIGlzVHlwZUFsbG93ZWRCeVJlYWRpbmdQ
b2xpY3koTlNTdHJpbmcgKnR5cGUsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5CiAgICAgICAgIHx8
IFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJU
RkRdOwogfQogCi1QYXN0ZWJvYXJkOjpSZWFkZXJSZXN1bHQgUGFzdGVib2FyZDo6cmVhZFBhc3Rl
Ym9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJl
YWRlciwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgTlNTdHJpbmcgKnR5cGUsIGludCBp
dGVtSW5kZXgpCitQYXN0ZWJvYXJkOjpSZWFkZXJSZXN1bHQgUGFzdGVib2FyZDo6cmVhZFBhc3Rl
Ym9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJl
YWRlciwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgTlNTdHJpbmcgKnR5cGUsIGludCBp
dGVtSW5kZXgsIGNvbnN0IFBhc3RlYm9hcmRJdGVtSW5mbyYgaW5mbykKIHsKICAgICBpZiAoW3R5
cGUgaXNFcXVhbFRvU3RyaW5nOldlYkFyY2hpdmVQYm9hcmRUeXBlXSB8fCBbdHlwZSBpc0VxdWFs
VG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdKSB7CiAgICAg
ICAgIGF1dG8gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1J
bmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CkBAIC0xOTcsNiArMTk3LDI4IEBAIFBhc3Rl
Ym9hcmQ6OlJlYWRlclJlc3VsdCBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnRE
YXRhRm9yVHlwZShQYXN0ZWJvCiAgICAgICAgIHJldHVybiAhaHRtbFN0cmluZy5pc051bGwoKSAm
JiByZWFkZXIucmVhZEhUTUwoaHRtbFN0cmluZykgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDog
UmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKICAgICB9CiAKKyAgICBpZiAoW3R5cGUgaXNF
cXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVWQ2FyZF0pIHsKKyAgICAg
ICAgYm9vbCBjYW5DcmVhdGVBdHRhY2htZW50cyA9IGZhbHNlOworI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCisgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpKQorICAgICAgICAgICAgY2FuQ3Jl
YXRlQXR0YWNobWVudHMgPSB0cnVlOworI2VuZGlmCisgICAgICAgIGlmIChjYW5DcmVhdGVBdHRh
Y2htZW50cykgeworICAgICAgICAgICAgYXV0byBwYXRoID0gaW5mby5wYXRoRm9yQ29udGVudFR5
cGUoa1VUVHlwZVZDYXJkKTsKKyAgICAgICAgICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKKworICAgICAg
ICAgICAgU3RyaW5nIHRpdGxlOworICAgICAgICAgICAgYXV0byB1cmwgPSBzdHJhdGVneS5yZWFk
VVJMRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBtX3Bhc3RlYm9hcmROYW1lLCB0aXRsZSk7Cisg
ICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxs
eTsKKworICAgICAgICAgICAgaWYgKHJlYWRlci5yZWFkVmlydHVhbENvbnRhY3RGaWxlKHBhdGgs
IHVybCwgdGl0bGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlJlYWRU
eXBlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRU
eXBlOworICAgIH0KKwogI2lmICFQTEFURk9STShJT1NNQUMpCiAgICAgaWYgKFt0eXBlIGlzRXF1
YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdKSB7CiAgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSk7
CkBAIC0yNjksNyArMjkxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJD
b250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWMKICAgICAgICAgICAg
IGlmICghaXNUeXBlQWxsb3dlZEJ5UmVhZGluZ1BvbGljeSh0eXBlLCBwb2xpY3kpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBhdXRvIGl0ZW1SZXN1bHQgPSByZWFk
UGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCBp
KTsKKyAgICAgICAgICAgIGF1dG8gaXRlbVJlc3VsdCA9IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVu
dERhdGFGb3JUeXBlKHJlYWRlciwgc3RyYXRlZ3ksIHR5cGUsIGksIHN0cmF0ZWd5LmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoaSwgbV9wYXN0ZWJvYXJkTmFtZSkpOwogICAgICAgICAgICAgaWYg
KGl0ZW1SZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFs
bHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zMTAsNyArMzMyLDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdlYkNvbnRl
bnRSZWFkZXImIHJlYWRlciwKICAgICAgICAgICAgIGlmICghaXNUeXBlQWxsb3dlZEJ5UmVhZGlu
Z1BvbGljeSh0eXBlLCBwb2xpY3kpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgICAgICByZXN1bHQgPSByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFk
ZXIsIHN0cmF0ZWd5LCB0eXBlLCBpbmRleCk7CisgICAgICAgICAgICByZXN1bHQgPSByZWFkUGFz
dGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCBpbmRl
eCwgaW5mbyk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFJlYWRlclJlc3VsdDo6UGFzdGVi
b2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIGlmIChyZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQu
bW0KaW5kZXggYThjZWNmNmY4OTcyYzFkNjE0ZjYxMDdjODc5ODkyYTU0YzkwNzExYi4uOTYyOTZj
YjhkMzIxZTIwZmMzZjQyNjFlMTQzOTJlYjZkMDc2MjE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KQEAg
LTgwLDYgKzgwLDEyIEBAIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKil3ZWJfZmlsZVVwbG9hZENv
bnRlbnRUeXBlcwogICAgICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbygoX19icmlkZ2UgQ0ZTdHJp
bmdSZWYpaWRlbnRpZmllciwga1VUVHlwZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAor
ICAgICAgICBpZiAoW2lkZW50aWZpZXIgaXNFcXVhbFRvU3RyaW5nOkAiY29tLmFwcGxlLm1hcGtp
dC5tYXAtaXRlbSJdKSB7CisgICAgICAgICAgICAvLyBUaGlzIHR5cGUgY29uZm9ybXMgdG8gInB1
YmxpYy5jb250ZW50IiwgeWV0IHRoZSBjb3JyZXNwb25kaW5nIGRhdGEgaXMgb25seSBhIHNlcmlh
bGl6YXRpb24gb2YgTUtNYXBJdGVtIGFuZCBpc24ndCBzdWl0YWJsZSBmb3IgZmlsZSB1cGxvYWRz
LgorICAgICAgICAgICAgLy8gSWdub3JlIG92ZXIgdGhpcyB0eXBlIHJlcHJlc2VudGF0aW9uIGZv
ciB0aGUgcHVycG9zZXMgb2YgZmlsZSB1cGxvYWRzLCBpbiBmYXZvciBvZiAicHVibGljLnZjYXJk
IiBkYXRhLgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICBpZiAo
dHlwZUNvbmZvcm1zVG9UeXBlcyhpZGVudGlmaWVyLCBQYXN0ZWJvYXJkOjpzdXBwb3J0ZWRGaWxl
VXBsb2FkUGFzdGVib2FyZFR5cGVzKCkpKQogICAgICAgICAgICAgW3R5cGVzIGFkZE9iamVjdDpp
ZGVudGlmaWVyXTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNDNiMWIzMDk5ZDE3YTMxMTA0MmZmZWExYmZhMGJkN2MyNTg0ZGM3My4u
ZDM4MWE4YjI1NWYzOGQ3Y2EyN2EwY2I3NTA0YWZlMDc0NWUxMjM0ZCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE4
LTEyLTExICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1NdIFN1cHBvcnQgZHJvcHBpbmcgY29udGFjdCBjYXJkIGRhdGEgKHB1YmxpYy52Y2FyZCkg
aW4gZWRpdGFibGUgY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkyNTcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTYyNjkxMz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbToKKworICAgICAgICBBZGQg
QVBJIHRlc3RzIHRvIHZlcmlmeSB0aGF0IHJlZ2lzdGVyaW5nIGBNS01hcEl0ZW1gcyBhbmQgYENO
Q29udGFjdGBzIHRvIGl0ZW0gcHJvdmlkZXJzIGFuZCBkcm9wcGluZyB0aGVtIGluCisgICAgICAg
IGF0dGFjaG1lbnQtZW5hYmxlZCByaWNoIHRleHQgZWRpdGFibGUgYXJlYXMgaW5zZXJ0cyBhdHRh
Y2htZW50IGVsZW1lbnRzIChhbmQgaW4gdGhlIGNhc2Ugb2YgYE1LTWFwSXRlbWAsCisgICAgICAg
IGFkZGl0aW9uYWxseSBpbnNlcnRzIGEgbGluaykuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6Y3JlYXRlTWFwSXRlbUZvclRlc3RpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3Jl
YXRlQ29udGFjdEl0ZW1Gb3JUZXN0aW5nKToKKworICAgICAgICBBZGQgQVBJIHRlc3RzIHRvIHZl
cmlmeSB0aGF0IGRyb3BwaW5nIG1hcCBpdGVtcyBhbmQgY29udGFjdCBpdGVtcyBpbnRvIHJpY2gg
YW5kIHBsYWluIGVkaXRhYmxlIGFyZWFzIGJlaGF2ZXMgYXMKKyAgICAgICAgZXhwZWN0ZWQgKGlu
IHRoZSBjYXNlIHdoZXJlIGEgVVJMIGlzIHByZXNlbnQsIGUuZy4gZHJvcHBpbmcgYSBtYXAgaXRl
bSwgd2UgaW5zZXJ0IHRoZSBVUkwgYXMgYW4gYW5jaG9yLCBhbmQgd2hlbgorICAgICAgICB0aGVy
ZSBpcyBubyBvdGhlciBzdWl0YWJsZSByZXByZXNlbnRhdGlvbiBpbiB0aGUgaXRlbSBwcm92aWRl
ciwgd2UgZG8gbm90aGluZyBhdCBhbGwsIHdoaWNoIGlzIHRoZSBjYXNlIGZvciB0aGUKKyAgICAg
ICAgZHJvcHBlZCBgQ05Db250YWN0YCkuIEFsc28sIGFkZCBhIHRlc3QgdG8gdmVyaWZ5IHRoYXQg
ZHJhZyBhbmQgZHJvcCBjYW4gYmUgdXNlZCB0byB1cGxvYWQgdGhlc2UgaXRlbXMgYXMgLnZjZgor
ICAgICAgICBmaWxlcy4KKwogMjAxOC0xMi0xMyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xp
bmdAc29ueS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCAtLSB1cGRhdGUgbXkgc3RhdHVzIHRv
ICJyZXZpZXdlciIuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQppbmRleCA5NDQ3MmFkZjkwZTE2MmE0ZTY2
NWQyMWE2NzJiMGQ2NTA3NDhkYzRkLi44M2IwNjYwNTM2ZmFlZGUxZTJjYzM1MzAzMWU5OTY0NmM1
ZThlYzUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLQXR0YWNobWVudFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KQEAgLTI1LDI1ICsyNSwzNSBAQAogCiAjaW1w
b3J0ICJjb25maWcuaCIKIAorI2lmIChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykpICYm
IFdLX0FQSV9FTkFCTEVECisKICNpbXBvcnQgIkRyYWdBbmREcm9wU2ltdWxhdG9yLmgiCiAjaW1w
b3J0ICJQZW5jaWxLaXRUZXN0U1BJLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgog
I2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmll
dy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8
Q29udGFjdHMvQ29udGFjdHMuaD4KKyNpbXBvcnQgPE1hcEtpdC9NYXBLaXQuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJBcmNoaXZlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV2ViS2l0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9y
dCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9y
dCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgogI2VuZGlmCiAKLSNk
ZWZpbmUgVVNFU19NT0RFUk5fQVRUUklCVVRFRF9TVFJJTkdfQ09OVkVSU0lPTiAoKFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAw
MCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEzMDApKQorU09GVF9MSU5LX0ZSQU1FV09SSyhDb250YWN0cykKK1NPRlRfTElOS19DTEFT
UyhDb250YWN0cywgQ05NdXRhYmxlQ29udGFjdCkKIAotI2lmIFdLX0FQSV9FTkFCTEVEICYmICFQ
TEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oVFZPUykKK1NPRlRfTElOS19GUkFNRVdPUkso
TWFwS2l0KQorU09GVF9MSU5LX0NMQVNTKE1hcEtpdCwgTUtNYXBJdGVtKQorU09GVF9MSU5LX0NM
QVNTKE1hcEtpdCwgTUtQbGFjZW1hcmspCisKKyNkZWZpbmUgVVNFU19NT0RFUk5fQVRUUklCVVRF
RF9TVFJJTkdfQ09OVkVSU0lPTiAoKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApKQogCiBAaW50ZXJmYWNlIEF0
dGFjaG1lbnRVcGRhdGVPYnNlcnZlciA6IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGVQcml2YXRlPgog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5ICppbnNlcnRlZDsKQEAgLTE4
MDgsNiArMTgxOCw1NiBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzSU9TLCBEcmFnQXR0YWNobWVu
dEluc2VydGVkQXNEYXRhKQogICAgIFtkcmFnQW5kRHJvcFNpbXVsYXRvciBlbmREYXRhVHJhbnNm
ZXJdOwogfQogCitURVNUKFdLQXR0YWNobWVudFRlc3RzSU9TLCBJbnNlcnREcm9wcGVkTWFwSXRl
bUFzQXR0YWNobWVudCkKK3sKKyAgICBhdXRvIHBsYWNlbWFyayA9IGFkb3B0TlMoW2FsbG9jTUtQ
bGFjZW1hcmtJbnN0YW5jZSgpIGluaXRXaXRoQ29vcmRpbmF0ZTpDTExvY2F0aW9uQ29vcmRpbmF0
ZTJETWFrZSgzNy4zMzI3LCAtMTIyLjAwNTMpXSk7CisgICAgYXV0byBtYXBJdGVtID0gYWRvcHRO
UyhbYWxsb2NNS01hcEl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoUGxhY2VtYXJrOnBsYWNlbWFyay5n
ZXQoKV0pOworICAgIFttYXBJdGVtIHNldE5hbWU6QCJBcHBsZSBQYXJrIl07CisKKyAgICBhdXRv
IGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwor
ICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6bWFwSXRlbS5nZXQoKSB2aXNpYmlsaXR5
Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKyAgICBbaXRlbVBy
b3ZpZGVyIHNldFN1Z2dlc3RlZE5hbWU6W21hcEl0ZW0gbmFtZV1dOworCisgICAgYXV0byB3ZWJW
aWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOworICAgIGF1dG8gc2ltdWxhdG9y
ID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6
d2ViVmlldy5nZXQoKV0pOworICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJz
OkBbIGl0ZW1Qcm92aWRlci5nZXQoKSBdXTsKKyAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2lu
dE1ha2UoMjUsIDI1KSB0bzpDR1BvaW50TWFrZSgxMDAsIDEwMCldOworCisgICAgTlNVUkwgKmRy
b3BwZWRMaW5rVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6W3dlYlZpZXcgdmFsdWVPZkF0dHJp
YnV0ZTpAImhyZWYiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhIl1dOworICAgIFt3ZWJWaWV3IGV4cGVj
dEVsZW1lbnRUYWc6QCJBIiB0b0NvbWVCZWZvcmU6QCJBVFRBQ0hNRU5UIl07CisgICAgRVhQRUNU
X1dLX1NUUkVRKCJtYXBzLmFwcGxlLmNvbSIsIGRyb3BwZWRMaW5rVVJMLmhvc3QpOworICAgIEVY
UEVDVF9XS19TVFJFUSgiQXBwbGUgUGFyay52Y2YiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRl
OkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAgIEVYUEVDVF9X
S19TVFJFUSgidGV4dC92Y2FyZCIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBlIiBm
b3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICBFWFBFQ1RfRVEoMVUsIFtzaW11
bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10uY291bnQpOworICAgIF9XS0F0dGFjaG1lbnRJbmZv
ICppbmZvID0gW3NpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1lbnRzXS5maXJzdE9iamVjdC5pbmZv
OworICAgIEVYUEVDVF9XS19TVFJFUSgiQXBwbGUgUGFyay52Y2YiLCBpbmZvLm5hbWUpOworICAg
IEVYUEVDVF9XS19TVFJFUSgidGV4dC92Y2FyZCIsIGluZm8uY29udGVudFR5cGUpOworfQorCitU
RVNUKFdLQXR0YWNobWVudFRlc3RzSU9TLCBJbnNlcnREcm9wcGVkQ29udGFjdEFzQXR0YWNobWVu
dCkKK3sKKyAgICBhdXRvIGNvbnRhY3QgPSBhZG9wdE5TKFthbGxvY0NOTXV0YWJsZUNvbnRhY3RJ
bnN0YW5jZSgpIGluaXRdKTsKKyAgICBbY29udGFjdCBzZXRHaXZlbk5hbWU6QCJGb28iXTsKKyAg
ICBbY29udGFjdCBzZXRGYW1pbHlOYW1lOkAiQmFyIl07CisKKyAgICBhdXRvIGl0ZW1Qcm92aWRl
ciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtpdGVtUHJv
dmlkZXIgcmVnaXN0ZXJPYmplY3Q6Y29udGFjdC5nZXQoKSB2aXNpYmlsaXR5Ok5TSXRlbVByb3Zp
ZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKyAgICBbaXRlbVByb3ZpZGVyIHNldFN1
Z2dlc3RlZE5hbWU6QCJGb28gQmFyIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9y
VGVzdGluZ0F0dGFjaG1lbnRzKCk7CisgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJh
Z0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7
CisgICAgW3NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgaXRlbVByb3ZpZGVy
LmdldCgpIF1dOworICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgyNSwgMjUpIHRv
OkNHUG9pbnRNYWtlKDEwMCwgMTAwKV07CisKKyAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50Q291
bnQ6MCBxdWVyeVNlbGVjdG9yOkAiYSJdOworICAgIEVYUEVDVF9XS19TVFJFUSgiRm9vIEJhci52
Y2YiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignYXR0YWNobWVudCcpLnRpdGxlIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgi
dGV4dC92Y2FyZCIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNl
bGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICBFWFBFQ1RfRVEoMVUsIFtzaW11bGF0b3IgaW5z
ZXJ0ZWRBdHRhY2htZW50c10uY291bnQpOworICAgIF9XS0F0dGFjaG1lbnRJbmZvICppbmZvID0g
W3NpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1lbnRzXS5maXJzdE9iamVjdC5pbmZvOworICAgIEVY
UEVDVF9XS19TVFJFUSgiRm9vIEJhci52Y2YiLCBpbmZvLm5hbWUpOworICAgIEVYUEVDVF9XS19T
VFJFUSgidGV4dC92Y2FyZCIsIGluZm8uY29udGVudFR5cGUpOworfQorCiAjaWYgSEFWRShQRU5D
SUxLSVQpCiBzdGF0aWMgQk9PTCBmb3JFYWNoVmlld0luSGllcmFyY2h5KFVJVmlldyAqdmlldywg
dm9pZChebWFwRnVuY3Rpb24pKFVJVmlldyAqc3VidmlldywgQk9PTCAqc3RvcCkpCiB7CkBAIC0x
ODgyLDQgKzE5NDIsNCBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzSU9TLCBFZGl0YWJsZUltYWdl
QXR0YWNobWVudERhdGFJbnZhbGlkYXRpb24pCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkKIAotI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVEICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAh
UExBVEZPUk0oVFZPUykKKyNlbmRpZiAvLyAoUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1Mp
KSAmJiBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
aW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0KaW5kZXggYmE5Zjc5ZjU4Y2E5MzE2MzYwZDMxZDdh
M2UzMWYyN2VhYmU3YjY4ZS4uOGVmMzk1ZWQ1N2E0OWU5MzJhMWZlMzZiNDliMzcxOWZhYWZjYjA4
YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BU
ZXN0c0lPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJv
cFRlc3RzSU9TLm1tCkBAIC0zMyw2ICszMyw4IEBACiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3Lmgi
CiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4
dHJhcy5oIgorI2ltcG9ydCA8Q29udGFjdHMvQ29udGFjdHMuaD4KKyNpbXBvcnQgPE1hcEtpdC9N
YXBLaXQuaD4KICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMu
aD4KICNpbXBvcnQgPFVJS2l0L05TSXRlbVByb3ZpZGVyK1VJS2l0QWRkaXRpb25zLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KQEAgLTQyLDYgKzQ0LDE0IEBACiAj
aW1wb3J0IDxXZWJLaXQvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8V2Vi
S2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8d3RmL1NlY29uZHMu
aD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKENv
bnRhY3RzKQorU09GVF9MSU5LX0NMQVNTKENvbnRhY3RzLCBDTk11dGFibGVDb250YWN0KQorCitT
T0ZUX0xJTktfRlJBTUVXT1JLKE1hcEtpdCkKK1NPRlRfTElOS19DTEFTUyhNYXBLaXQsIE1LTWFw
SXRlbSkKK1NPRlRfTElOS19DTEFTUyhNYXBLaXQsIE1LUGxhY2VtYXJrKQogCiB0eXBlZGVmIHZv
aWQgKF5GaWxlTG9hZENvbXBsZXRpb25CbG9jaykoTlNVUkwgKiwgQk9PTCwgTlNFcnJvciAqKTsK
IHR5cGVkZWYgdm9pZCAoXkRhdGFMb2FkQ29tcGxldGlvbkJsb2NrKShOU0RhdGEgKiwgTlNFcnJv
ciAqKTsKQEAgLTE4Nyw4ICsxOTcsNiBAQCBzdGF0aWMgdm9pZCBjaGVja0RyYWdDYXJldFJlY3RJ
c0NvbnRhaW5lZEluUmVjdChDR1JlY3QgY2FyZXRSZWN0LCBDR1JlY3QgY29udGFpbgogICAgICAg
ICBOU0xvZyhAIkV4cGVjdGVkIGNhcmV0IHJlY3Q6ICVAIHRvIGZpdCB3aXRoaW4gY29udGFpbmVy
IHJlY3Q6ICVAIiwgTlNTdHJpbmdGcm9tQ0dSZWN0KGNhcmV0UmVjdCksIE5TU3RyaW5nRnJvbUNH
UmVjdChjb250YWluZXJSZWN0KSk7CiB9CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAzMDAKLQogc3RhdGljIHZvaWQgY2hlY2tKU09OV2l0aExvZ2dpbmcoTlNT
dHJpbmcgKmpzb25TdHJpbmcsIE5TRGljdGlvbmFyeSAqZXhwZWN0ZWQpCiB7CiAgICAgQk9PTCBz
dWNjZXNzID0gVGVzdFdlYktpdEFQSTo6VXRpbDo6anNvbk1hdGNoZXNFeHBlY3RlZFZhbHVlcyhq
c29uU3RyaW5nLCBleHBlY3RlZCk7CkBAIC0yNTEsOCArMjU5LDYgQEAgc3RhdGljIHZvaWQgcnVu
VGVzdFdpdGhUZW1wb3JhcnlGb2xkZXIodm9pZChecnVuVGVzdCkoTlNVUkwgKmZvbGRlclVSTCkp
CiAgICAgfQogfQogCi0jZW5kaWYgLy8gX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTEwMzAwCi0KIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChEcmFnQW5kRHJv
cFRlc3RzLCBJbWFnZVRvQ29udGVudEVkaXRhYmxlKQpAQCAtMTA2MSw3ICsxMDY3LDc2IEBAIFRF
U1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VPdmVycmlkZURyb3BGaWxlVXBsb2Fk
KQogICAgIEVYUEVDVF9GQUxTRShbc2ltdWxhdG9yIGxhc3RLbm93bkRyb3BQcm9wb3NhbF0ucHJl
Y2lzZSk7CiB9CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAz
MDAKK3N0YXRpYyBSZXRhaW5QdHI8TlNJdGVtUHJvdmlkZXI+IGNyZWF0ZU1hcEl0ZW1Gb3JUZXN0
aW5nKCkKK3sKKyAgICBhdXRvIHBsYWNlbWFyayA9IGFkb3B0TlMoW2FsbG9jTUtQbGFjZW1hcmtJ
bnN0YW5jZSgpIGluaXRXaXRoQ29vcmRpbmF0ZTpDTExvY2F0aW9uQ29vcmRpbmF0ZTJETWFrZSgz
Ny4zMzI3LCAtMTIyLjAwNTMpXSk7CisgICAgYXV0byBpdGVtID0gYWRvcHROUyhbYWxsb2NNS01h
cEl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoUGxhY2VtYXJrOnBsYWNlbWFyay5nZXQoKV0pOworICAg
IFtpdGVtIHNldE5hbWU6QCJBcHBsZSBQYXJrIl07CisKKyAgICBhdXRvIGl0ZW1Qcm92aWRlciA9
IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtpdGVtUHJvdmlk
ZXIgcmVnaXN0ZXJPYmplY3Q6aXRlbS5nZXQoKSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVw
cmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKyAgICBbaXRlbVByb3ZpZGVyIHNldFN1Z2dlc3Rl
ZE5hbWU6W2l0ZW0gbmFtZV1dOworCisgICAgcmV0dXJuIGl0ZW1Qcm92aWRlcjsKK30KKworc3Rh
dGljIFJldGFpblB0cjxOU0l0ZW1Qcm92aWRlcj4gY3JlYXRlQ29udGFjdEl0ZW1Gb3JUZXN0aW5n
KCkKK3sKKyAgICBhdXRvIGNvbnRhY3QgPSBhZG9wdE5TKFthbGxvY0NOTXV0YWJsZUNvbnRhY3RJ
bnN0YW5jZSgpIGluaXRdKTsKKyAgICBbY29udGFjdCBzZXRHaXZlbk5hbWU6QCJGb28iXTsKKyAg
ICBbY29udGFjdCBzZXRGYW1pbHlOYW1lOkAiQmFyIl07CisKKyAgICBhdXRvIGl0ZW1Qcm92aWRl
ciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtpdGVtUHJv
dmlkZXIgcmVnaXN0ZXJPYmplY3Q6Y29udGFjdC5nZXQoKSB2aXNpYmlsaXR5Ok5TSXRlbVByb3Zp
ZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKyAgICBbaXRlbVByb3ZpZGVyIHNldFN1
Z2dlc3RlZE5hbWU6QCJGb28gQmFyIl07CisKKyAgICByZXR1cm4gaXRlbVByb3ZpZGVyOworfQor
CitURVNUKERyYWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291cmNlTWFwSXRlbUludG9FZGl0YWJs
ZUFyZWFzKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiY29udGVudGVkaXRhYmxlLWFu
ZC10ZXh0YXJlYSJdOworICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21t
YW5kOkAiRGVsZXRlIiBhcmd1bWVudDpuaWxdOworCisgICAgYXV0byBzaW11bGF0b3IgPSBhZG9w
dE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3
LmdldCgpXSk7CisgICAgW3NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgY3Jl
YXRlTWFwSXRlbUZvclRlc3RpbmcoKS5hdXRvcmVsZWFzZSgpIF1dOworICAgIFtzaW11bGF0b3Ig
cnVuRnJvbTpDR1BvaW50TWFrZSgwLCAwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDEwMCldOworICAg
IEVYUEVDVF9XS19TVFJFUSgiQXBwbGUgUGFyayIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXZbY29udGVudGVkaXRhYmxl
XScpLnRleHRDb250ZW50Il0pOworICAgIE5TVVJMICpmaXJzdFVSTCA9IFtOU1VSTCBVUkxXaXRo
U3RyaW5nOlt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCdhJykuaHJlZiJdXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIm1hcHMuYXBw
bGUuY29tIiwgZmlyc3RVUkwuaG9zdCk7CisKKyAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2lu
dE1ha2UoMCwgMCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKKyAgICBOU1VSTCAqc2Vjb25k
VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RleHRhcmVhJykudmFsdWUiXV07Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKCJtYXBzLmFwcGxlLmNvbSIsIHNlY29uZFVSTC5ob3N0KTsKK30K
KworVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJjZUNvbnRhY3RJbnRvRWRpdGFi
bGVBcmVhcykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImNvbnRlbnRlZGl0YWJsZS1h
bmQtdGV4dGFyZWEiXTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29t
bWFuZDpAIkRlbGV0ZSIgYXJndW1lbnQ6bmlsXTsKKworICAgIGF1dG8gc2ltdWxhdG9yID0gYWRv
cHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmll
dy5nZXQoKV0pOworICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIGNy
ZWF0ZUNvbnRhY3RJdGVtRm9yVGVzdGluZygpLmF1dG9yZWxlYXNlKCkgXV07CisgICAgW3NpbXVs
YXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDAsIDApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMTAwKV07
CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W2NvbnRlbnRlZGl0YWJsZV0nKS50
ZXh0Q29udGVudCJdKTsKKworICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgwLCAw
KSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoJ3RleHRhcmVhJykudGV4dENvbnRlbnQiXSk7Cit9CisKK1RFU1QoRHJhZ0FuZERyb3BUZXN0
cywgRXh0ZXJuYWxTb3VyY2VNYXBJdGVtQW5kQ29udGFjdFRvVXBsb2FkQXJlYSkKK3sKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkVGVzdFBhZ2VOYW1lZDpAImZpbGUtdXBsb2FkaW5nIl07CisKKyAgICBhdXRvIHNpbXVs
YXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJW
aWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3Zp
ZGVyczpAWyBjcmVhdGVNYXBJdGVtRm9yVGVzdGluZygpLmF1dG9yZWxlYXNlKCksIGNyZWF0ZUNv
bnRhY3RJdGVtRm9yVGVzdGluZygpLmF1dG9yZWxlYXNlKCkgXV07CisgICAgW3NpbXVsYXRvciBy
dW5Gcm9tOkNHUG9pbnRNYWtlKDIwMCwgMTAwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOwor
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXh0L3ZjYXJkLCB0ZXh0L3ZjYXJkIiwgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIm91dHB1dC52YWx1ZSJdKTsKK30KIAogc3Rh
dGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBzZXRVcFRlc3RXZWJWaWV3Rm9yRGF0YVRyYW5z
ZmVySXRlbXMoKQogewpAQCAtMTE0Myw4ICsxMjE4LDYgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3Rz
LCBFeHRlcm5hbFNvdXJjZURhdGFUcmFuc2Zlckl0ZW1HZXRQbGFpblRleHRGaWxlQXNFbnRyeSkK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoW2V4cGVjdGVkT3V0cHV0IGNvbXBvbmVudHNKb2luZWRCeVN0
cmluZzpAIlxuIl0sIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJvdXRw
dXQudmFsdWUiXSk7CiB9CiAKLSNlbmRpZiAvLyBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMTAzMDAKLQogVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBFeHRlcm5hbFNvdXJjZU92
ZXJyaWRlRHJvcEluc2VydFVSTCkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAw
KV0pOwpAQCAtMTU2Miw4ICsxNjM1LDYgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEcmFnTGlm
dFByZXZpZXdEYXRhVHJhbnNmZXJTZXREcmFnSW1hZ2UpCiAgICAgY2hlY2tDR1JlY3RJc0VxdWFs
VG9DR1JlY3RXaXRoTG9nZ2luZyh7ezAsIDQwMH0sIHsyMTUsIDE3NH19LCBbc2ltdWxhdG9yIGxp
ZnRQcmV2aWV3c11bMF0udmlldy5mcmFtZSk7CiB9CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAzMDAKLQogc3RhdGljIE5TRGF0YSAqdGVzdEljb25JbWFnZURh
dGEoKQogewogICAgIHJldHVybiBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6W1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBwYXRoRm9yUmVzb3VyY2U6QCJpY29uIiBvZlR5cGU6QCJwbmciIGlu
RGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CkBAIC0xOTg3LDggKzIwNTgs
NiBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIERhdGFUcmFuc2ZlclNhbml0aXplSFRNTCkKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQogCi0jZW5kaWYgLy8gX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMzAwCi0KIH0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIFdLX0FQSV9FTkFCTEVECg==
</data>

          </attachment>
      

    </bug>

</bugzilla>