<?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>212339</bug_id>
          
          <creation_ts>2020-05-24 23:02:52 -0700</creation_ts>
          <short_desc>[Clipboard API] Support reading &quot;image/png&quot; on ClipboardItem</short_desc>
          <delta_ts>2020-05-27 12:50:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>bdakin</cc>
    
    <cc>megan_gardner</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>1655786</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-24 23:02:52 -0700</bug_when>
    <thetext>Support reading &quot;image/png&quot; on ClipboardItem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655787</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-24 23:03:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/63588957&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655914</commentid>
    <comment_count>2</comment_count>
      <attachid>400214</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-25 12:26:27 -0700</bug_when>
    <thetext>Created attachment 400214
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655915</commentid>
    <comment_count>3</comment_count>
      <attachid>400215</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-25 12:26:47 -0700</bug_when>
    <thetext>Created attachment 400215
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655918</commentid>
    <comment_count>4</comment_count>
      <attachid>400216</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-25 12:40:54 -0700</bug_when>
    <thetext>Created attachment 400216
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656470</commentid>
    <comment_count>5</comment_count>
      <attachid>400216</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-05-27 11:38:52 -0700</bug_when>
    <thetext>Comment on attachment 400216
For EWS

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

&gt; Source/WebCore/Modules/async-clipboard/mac/ClipboardImageReaderMac.mm:41
&gt; +        if (auto bitmapData = retainPtr([image TIFFRepresentation])) {
&gt; +            auto bitmapRepresentation = adoptNS([[NSBitmapImageRep alloc] initWithData:bitmapData.get()]);
&gt; +            m_result = Blob::create(SharedBuffer::create([bitmapRepresentation representationUsingType:NSBitmapImageFileTypePNG properties:@{ }]), m_mimeType);

I provided a potential alternative to this double-encode offline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656471</commentid>
    <comment_count>6</comment_count>
      <attachid>400216</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-27 11:40:12 -0700</bug_when>
    <thetext>Comment on attachment 400216
For EWS

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

&gt;&gt; Source/WebCore/Modules/async-clipboard/mac/ClipboardImageReaderMac.mm:41
&gt;&gt; +            m_result = Blob::create(SharedBuffer::create([bitmapRepresentation representationUsingType:NSBitmapImageFileTypePNG properties:@{ }]), m_mimeType);
&gt; 
&gt; I provided a potential alternative to this double-encode offline.

👍🏻 Giving it a try, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656517</commentid>
    <comment_count>7</comment_count>
      <attachid>400365</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-27 12:19:13 -0700</bug_when>
    <thetext>Created attachment 400365
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656524</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-27 12:50:46 -0700</bug_when>
    <thetext>Committed r262209: &lt;https://trac.webkit.org/changeset/262209&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400365.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400214</attachid>
            <date>2020-05-25 12:26:27 -0700</date>
            <delta_ts>2020-05-25 12:26:45 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-212339-20200525122627.patch</filename>
            <type>text/plain</type>
            <size>49764</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQyNWE1Yzk5Yjg0ZjAy
YTM0NDExMWJkNWQzZGMwNDM1M2JlMzM5NS4uY2NjYzY3NTFiMmZkNmNhYWExOGFmNjQxOGNkMDJj
NjY2Y2ExZDYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAyMC0wNS0yNCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJk
IEFQSV0gU3VwcG9ydCByZWFkaW5nICJpbWFnZS9wbmciIG9uIENsaXBib2FyZEl0ZW0KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjMzOQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjM1ODg5NTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciByZWFkaW5nICJpbWFnZS9wbmci
IGRhdGEgdmlhIENsaXBib2FyZEl0ZW0uZ2V0VHlwZSgpLiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgICAgICBUZXN0czogIENsaXBib2FyZFRlc3RzLkNvbnZlcnRUSUZGVG9QTkdX
aGVuUGFzdGluZworICAgICAgICAgICAgICAgIGVkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBi
b2FyZC1yZWFkLXdyaXRlLWltYWdlcy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpnZXRU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6dXBkYXRlU2Vzc2lvblZhbGlkaXR5
KToKKworICAgICAgICBGYWN0b3Igb3V0IGxvZ2ljIGZvciBpbnZhbGlkYXRpbmcgdGhlIGBDbGlw
Ym9hcmRgJ3MgYWN0aXZlIGBQYXN0ZWJvYXJkYCBvYmplY3QgaW50byBhIGhlbHBlciBtZXRob2Qu
IFRoaXMgaXMKKyAgICAgICAgaW52b2tlZCBhZnRlciByZWFkaW5nIGRhdGEgZnJvbSB0aGUgY2xp
cGJvYXJkLCBhbmQgdmVyaWZpZXMgdGhhdCB0aGUgY2hhbmdlQ291bnQgb2YgdGhlIHBhc3RlYm9h
cmQgaXMgc3RpbGwgdGhlCisgICAgICAgIHNhbWUgYXMgaXQgd2FzIHVwb24gaW5pdGlhbGx5IHJl
YWRpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBjbGlwYm9hcmQuIElmIHRoZSBjbGlwYm9hcmQgY29u
dGVudHMgY2hhbmdlZCwgd2UKKyAgICAgICAgaW52YWxpZGF0ZSB0aGUgc2Vzc2lvbiwgYW5kIGBD
bGlwYm9hcmRgIGlzIHN1YnNlcXVlbnRseSBkZW5pZWQgcGFzdGVib2FyZCBhY2Nlc3MgKHVudGls
IHRoZSBuZXh0IHRpbWUgdGhlIHVzZXIKKyAgICAgICAgZXhwbGljaXRseSBncmFudHMgcHJvZ3Jh
bW1hdGljIHBhc3RlYm9hcmQgYWNjZXNzKS4KKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBzdGVw
IGlzIGhlcmUgZm9yIGNvcnJlY3RuZXNzIHJhdGhlciB0aGFuIHNlY3VyaXR5LiBXaGlsZSBpdCBp
cyB0cnVlIHRoYXQgYSBjb21wcm9taXNlZCB3ZWIKKyAgICAgICAgcHJvY2VzcyBjb3VsZCBmYWtl
IHRoZSBjaGFuZ2VDb3VudCBhdCBhbnkgZ2l2ZW4gbW9tZW50LCBvdGhlciBmYWlybHkgcmVjZW50
IGNoYW5nZXMgYXJvdW5kIFdlYlBhc3RlYm9hcmRQcm94eSBpbgorICAgICAgICB0aGUgVUkgcHJv
Y2VzcyBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoaXMgZmFjdCB0
byBhcmJpdHJhcmlseSByZWFkIGNvbnRlbnQgZnJvbSB0aGUgc3lzdGVtCisgICAgICAgIHBhc3Rl
Ym9hcmQuIEluc3RlYWQgb2Ygc2ltcGx5IHJlYWRpbmcgdGhlIGVtcHR5IHN0cmluZywgdGhpcyBp
bnZhbGlkYXRpb24gZW5zdXJlcyB0aGF0IHdlIGFjdHVhbGx5IHJlamVjdCB0aGUKKyAgICAgICAg
cHJvbWlzZSByZXR1cm5lZCBieSB0aGUgYXN5bmMgY2xpcGJvYXJkIEFQSS4KKworICAgICAgICAq
IE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5oOgorICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcDogQWRkZWQuCisKKyAgICAg
ICAgQWRkIGEgUGFzdGVib2FyZEZpbGVSZWFkZXIgc3ViY2xhc3MgdGhhdCBpcyByZXNwb25zaWJs
ZSBmb3Igc2FuaXRpemluZyBpbWFnZSBkYXRhIGZyb20gdGhlIHBhc3RlYm9hcmQgaW50bworICAg
ICAgICBkYXRhIHRoYXQgbWF5IGJlIGV4cG9zZWQgdG8gdGhlIHBhZ2UgdmlhIGNsaXBib2FyZCBB
UEkuIE9uIGJvdGggbWFjT1MgYW5kIGlPUywgdGhpcyBlbnN1cmVzIHRoYXQgcG90ZW50aWFsbHkK
KyAgICAgICAgc2Vuc2l0aXZlIEVYSUYgZGF0YSBpcyBzdHJpcHBlZCB2aWEgY29udmVyc2lvbiB0
byB0aGUgcGxhdGZvcm0gaW1hZ2UgdHlwZSBhbmQgYmFjay4gT24gbWFjT1MsIHRoaXMgYWRkaXRp
b25hbGx5CisgICAgICAgIGFsbG93cyB1cyB0byBoYW5kbGUgdHJhbnNjb2RpbmcgVElGRiBkYXRh
IG9uIHRoZSBwYXN0ZWJvYXJkIHRvIFBORyAodGhpcyBpcyBjb3ZlcmVkIGJ5IHRoZSBuZXcgQVBJ
IHRlc3QpLgorCisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1
ZmZlcik6CisKKyAgICAgICAgQWRkIGEgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3Igbm9uLUNvY29h
IHBsYXRmb3JtcyBmb3Igbm93LCB3aGljaCBkb24ndCBpbXBsZW1lbnQgdGhpcyBwYXJ0IG9mIHRo
ZSBBUEkuCisKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpzaG91bGRS
ZWFkQnVmZmVyIGNvbnN0KToKKworICAgICAgICBBZGQgYSBuZXcgaG9vayB0byBza2lwIG92ZXIg
Y2VydGFpbiB0eXBlcyB3aGVuIHJlYWRpbmcgcGFzdGVib2FyZCBkYXRhIGludG8gRmlsZXMuIElu
IHBhcnRpY3VsYXIsCisgICAgICAgIGBDbGlwYm9hcmRJbWFnZVJlYWRlcmAgc2tpcHMgb3ZlciBh
bnkgTUlNRSB0eXBlIHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIE1JTUUgdHlwZSBzcGVjaWZpZWQg
KGZvciBub3csIHRoaXMgaXMKKyAgICAgICAgbGltaXRlZCB0byAiaW1hZ2UvcG5nIiwgYnV0IG1h
eSBiZSBleHRlbmRlZCB0byBpbmNsdWRlIG1vcmUgaW1hZ2UgdHlwZXMgaW4gdGhlIGZ1dHVyZSBh
ZnRlciB3ZSBpbXBsZW1lbnQgbW9yZQorICAgICAgICB0cmFuc2NvZGluZyBsb2dpYykuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpDbGlwYm9hcmRJ
bWFnZVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6dGFr
ZVJlc3VsdCk6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2Fy
ZEltYWdlUmVhZGVySU9TLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZElt
YWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKworICAgICAgICBBZGQgaU9TLXNwZWNpZmljIGAoUE5H
KSA9PiBQTkdgIHRyYW5zY29kaW5nIGxvZ2ljLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKworICAgICAgICBB
ZGQgbWFjT1Mtc3BlY2lmaWMgYChQTkcsIFRJRkYpID0+IFBOR2AgdHJhbnNjb2RpbmcgbG9naWMu
CisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkRmlsZVJl
YWRlcjo6c2hvdWxkUmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
UGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGVGb3JQbGF0Zm9ybVR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6d2ViU2FmZVR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisKKyAgICAgICAg
RXhwb3NlICJpbWFnZS9wbmciIGFzIG9uZSBvZiB0aGUgcmVhZGFibGUgcGFzdGVib2FyZCB0eXBl
cyBvbiBpT1Mgd2hlbiB1c2luZyB0aGUgYXN5bmMgY2xpcGJvYXJkIEFQSS4gRm9yIHNvbWUKKyAg
ICAgICAgcmVhc29uLCB0aGlzIGFkanVzdG1lbnQgd2FzIG1hZGUgb24gbWFjT1MsIGJ1dCB3YXNu
J3QgZG9uZSBvbiBpT1MsIHdoaWNoIGxlZCB0byBhIG1pc3NpbmcgImltYWdlL3BuZyIgdHlwZSB3
aGVuCisgICAgICAgIGFza2luZyBmb3IgYENsaXBib2FyZEl0ZW0udHlwZXNgLgorCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdy
aXRlIGNvbnN0KToKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igd3JpdGluZyAiaW1hZ2UvcG5n
ICJkYXRhIHRvIHRoZSBzeXN0ZW0gcGFzdGVib2FyZCAobm90ZSB0aGF0IHRoaXMgZGF0YSBoYXMg
YmVlbiBzYW5pdGl6ZWQKKyAgICAgICAgYWxyZWFkeSwgYXMgaXQgaGFzIGJlZW4gcHJvY2Vzc2Vk
IHRocm91Z2ggYENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCgp
YCkuIFdlIHNpbXBseSBuZWVkZWQKKyAgICAgICAgdG8gdXNlIGBmb3JFYWNoUGxhdGZvcm1TdHJp
bmdPckJ1ZmZlcmAgaW5zdGVhZCBvZiBqdXN0IGBmb3JFYWNoUGxhdGZvcm1TdHJpbmdgIHdoZW4g
d3JpdGluZyB0aGUgY3VzdG9tCisgICAgICAgIHBhc3RlYm9hcmQgZGF0YS4KKworICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisKKzIwMjAtMDUt
MjMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IHNvbWUgbWlzc2luZyBpbmNsdWRlcyBkdWUgdG8gdW5pZmllZCBzb3VyY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIzMDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvcGljdHVyZWlu
cGljdHVyZS9IVE1MVmlkZW9FbGVtZW50UGljdHVyZUluUGljdHVyZS5jcHA6IEluY2x1ZGUgRW50
ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaC4KKworICAgICAgICAqIHBsYXRmb3JtL1BpY3R1cmVJ
blBpY3R1cmVPYnNlcnZlci5oOiBJbmNsdWRlIFdlYWtQdHIgYW5kIGZvcndhcmQgZGVjbGFyZSB0
aGUgSW50U2l6ZSBjbGFzcy4KKwogMjAyMC0wNS0yMiAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVz
Z18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlcyB0byB0aGUgaXNvbGF0ZWQgdHJlZSBt
dXN0IGhhcHBlbiBiZWZvcmUgcG9zdGluZyBub3RpZmljYXRpb25zIHRvIGNsaWVudHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwppbmRleCA2Y2ViOWI2NzlmNmMxN2QzMWUxMjk3MmMwZjkxMDdhOTA0ZjYwOTE2
Li5kMzc5YjEzNDZhOWZlN2E2Njg5ZjYyNzE5NWMwY2U5ODIwMTQ4ZWFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNS0yNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJkIEFQSV0gU3VwcG9ydCByZWFk
aW5nICJpbWFnZS9wbmciIG9uIENsaXBib2FyZEl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjMzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjM1ODg5NTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU29mdCBsaW5rIGBVSUltYWdlUE5HUmVwcmVzZW50YXRpb25gLgorCisgICAgICAgICogcGFs
L2lvcy9VSUtpdFNvZnRMaW5rLmg6CisgICAgICAgICogcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1t
OgorCiAyMDIwLTA1LTIyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQXBwbGUgUGF5XSBBZGQgbmV3IEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIG1l
bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmQuY3BwCmluZGV4IDRkZTZkNDE1MTU1YTk3ZDAyYzFiZWE5NjgwM2Q5YzJiN2ZlNGFm
ZDguLjhlYTE3ZWIzZThkZjQ0ZmNhMzFhZjAzYzBiMzQwMmQ2YzcyMmM0OTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNsaXBib2Fy
ZC5oIgogCisjaW5jbHVkZSAiQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCIKICNpbmNsdWRlICJDbGlw
Ym9hcmRJdGVtLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpA
QCAtMjE0LDYgKzIxNSwxNyBAQCB2b2lkIENsaXBib2FyZDo6Z2V0VHlwZShDbGlwYm9hcmRJdGVt
JiBpdGVtLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZFBybwogICAgICAgICByZXR1
cm47CiAgICAgfQogCisgICAgaWYgKHR5cGUgPT0gImltYWdlL3BuZyJfcykgeworICAgICAgICBD
bGlwYm9hcmRJbWFnZVJlYWRlciBpbWFnZVJlYWRlciB7IHR5cGUgfTsKKyAgICAgICAgYWN0aXZl
UGFzdGVib2FyZCgpLnJlYWQoaW1hZ2VSZWFkZXIsIGl0ZW1JbmRleCk7CisgICAgICAgIGF1dG8g
aW1hZ2VCbG9iID0gaW1hZ2VSZWFkZXIudGFrZVJlc3VsdCgpOworICAgICAgICBpZiAodXBkYXRl
U2Vzc2lvblZhbGlkaXR5KCkgPT0gU2Vzc2lvbklzVmFsaWQ6OlllcyAmJiBpbWFnZUJsb2IpCisg
ICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxCbG9iPj4oaW1hZ2VCbG9i
LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcm9taXNlLT5y
ZWplY3QoTm90QWxsb3dlZEVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFN0
cmluZyByZXN1bHRBc1N0cmluZzsKIAogICAgIGlmICh0eXBlID09ICJ0ZXh0L3VyaS1saXN0Il9z
KSB7CkBAIC0yMzMsMTkgKzI0NSwyNiBAQCB2b2lkIENsaXBib2FyZDo6Z2V0VHlwZShDbGlwYm9h
cmRJdGVtJiBpdGVtLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZFBybwogICAgICAg
ICByZXN1bHRBc1N0cmluZyA9IFdURk1vdmUobWFya3VwUmVhZGVyLm1hcmt1cCk7CiAgICAgfQog
Ci0gICAgLy8gRklYTUU6IFN1cHBvcnQgcmVhZGluZyAiaW1hZ2UvcG5nIiBhcyB3ZWxsIGFzIGN1
c3RvbSBkYXRhLgotICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIGNoZWNraW5nIGNoYW5nZUNvdW50
IGhlcmUsIHdlIHNob3VsZCBzZW5kIHRoZSBjaGFuZ2VDb3VudCBvdmVyIHRvIHRoZSBVSSBwcm9j
ZXNzIHRvIGJlIHZldHRlZAotICAgIC8vIHdoZW4gYXR0ZW1wdGluZyB0byByZWFkIHRoZSBkYXRh
IGluIHRoZSBmaXJzdCBwbGFjZS4KLSAgICBpZiAobV9hY3RpdmVTZXNzaW9uLT5jaGFuZ2VDb3Vu
dCAhPSBhY3RpdmVQYXN0ZWJvYXJkKCkuY2hhbmdlQ291bnQoKSkgewotICAgICAgICBtX2FjdGl2
ZVNlc3Npb24gPSBXVEY6Om51bGxvcHQ7CisgICAgLy8gRklYTUU6IFN1cHBvcnQgcmVhZGluZyBj
dXN0b20gZGF0YS4KKyAgICBpZiAodXBkYXRlU2Vzc2lvblZhbGlkaXR5KCkgPT0gU2Vzc2lvbklz
VmFsaWQ6Ok5vIHx8IHJlc3VsdEFzU3RyaW5nLmlzTnVsbCgpKSB7CiAgICAgICAgIHByb21pc2Ut
PnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKCFyZXN1bHRBc1N0cmluZy5pc051bGwoKSkKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExJbnRlcmZhY2U8QmxvYj4+KENsaXBib2FyZEl0ZW06OmJsb2JGcm9tU3RyaW5nKHJlc3VsdEFz
U3RyaW5nLCB0eXBlKSk7Ci0gICAgZWxzZQotICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxs
b3dlZEVycm9yKTsKKyAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxCbG9iPj4oQ2xp
cGJvYXJkSXRlbTo6YmxvYkZyb21TdHJpbmcocmVzdWx0QXNTdHJpbmcsIHR5cGUpKTsKK30KKwor
Q2xpcGJvYXJkOjpTZXNzaW9uSXNWYWxpZCBDbGlwYm9hcmQ6OnVwZGF0ZVNlc3Npb25WYWxpZGl0
eSgpCit7CisgICAgaWYgKCFtX2FjdGl2ZVNlc3Npb24pCisgICAgICAgIHJldHVybiBTZXNzaW9u
SXNWYWxpZDo6Tm87CisKKyAgICBpZiAobV9hY3RpdmVTZXNzaW9uLT5jaGFuZ2VDb3VudCAhPSBh
Y3RpdmVQYXN0ZWJvYXJkKCkuY2hhbmdlQ291bnQoKSkgeworICAgICAgICBtX2FjdGl2ZVNlc3Np
b24gPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBTZXNzaW9uSXNWYWxpZDo6Tm87Cisg
ICAgfQorCisgICAgcmV0dXJuIFNlc3Npb25Jc1ZhbGlkOjpZZXM7CiB9CiAKIHZvaWQgQ2xpcGJv
YXJkOjp3cml0ZShjb25zdCBWZWN0b3I8UmVmUHRyPENsaXBib2FyZEl0ZW0+PiYgaXRlbXMsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmgKaW5kZXggNDBhNmI0NjEwMjNiYjU3MThh
ZTljNTljOTIxMjY2MjI1MTRiNjJlNC4uMzZkZTYyZTJiODg2Zjk3MDk3MDQyYjhkNTUxZmY3NTkw
ZGY5YzRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkLmgKQEAgLTc3LDYgKzc3LDkgQEAgcHJpdmF0ZToKIAogICAgIFBhc3RlYm9h
cmQmIGFjdGl2ZVBhc3RlYm9hcmQoKTsKIAorICAgIGVudW0gY2xhc3MgU2Vzc2lvbklzVmFsaWQg
eyBObywgWWVzIH07CisgICAgU2Vzc2lvbklzVmFsaWQgdXBkYXRlU2Vzc2lvblZhbGlkaXR5KCk7
CisKICAgICBjbGFzcyBJdGVtV3JpdGVyIDogcHVibGljIFJlZkNvdW50ZWQ8SXRlbVdyaXRlcj4g
ewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJlZjxJdGVtV3JpdGVyPiBjcmVhdGUoQ2xp
cGJvYXJkJiBjbGlwYm9hcmQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZElt
YWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZEltYWdlUmVhZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNGIwZDllYmZiZTkyZWU4M2U2NzZi
ZjdkNTI4YThhZmM3MWYwZThmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCkBAIC0wLDAgKzEs
NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2xpcGJv
YXJkSW1hZ2VSZWFkZXIuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworI2lmICFQTEFURk9STShDT0NPQSkKKwordm9pZCBDbGlwYm9hcmRJ
bWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8
U2hhcmVkQnVmZmVyPiYmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKyNlbmRpZiAv
LyAhUExBVEZPUk0oQ09DT0EpCisKK2Jvb2wgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnNob3VsZFJl
YWRCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1f
cmVzdWx0ICYmIG1fbWltZVR5cGUgPT0gbWltZVR5cGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4ODg1NDFjMzc0MDVj
ZDhjYmJhZWRiNDM1MzI2NDI4NWY0MDI1MWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJsb2Iu
aCIKKyNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgU2hhcmVkQnVmZmVyOworCitzdHJ1Y3QgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIgOiBQYXN0ZWJv
YXJkRmlsZVJlYWRlciB7CisgICAgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKKyAgICAgICAgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlcigpCisgICAgICAgICwgbV9t
aW1lVHlwZShtaW1lVHlwZSkKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPEJsb2I+IHRha2VS
ZXN1bHQoKSB7IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fcmVzdWx0LCBudWxscHRyKTsgfQorCitw
cml2YXRlOgorICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
KworICAgIFN0cmluZyBtX21pbWVUeXBlOworICAgIFJlZlB0cjxCbG9iPiBtX3Jlc3VsdDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJl
YWRlcklPUy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzQyMmExMDI5ODk3NmM0ZTBkYzIwN2U2ZGMzMzBiZjQz
MTY2M2FhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkNsaXBib2FyZEltYWdl
UmVhZGVyLmgiCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0ICJTaGFyZWRC
dWZmZXIuaCIKKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7Cisg
ICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKKyAgICAgICAgYXV0byBpbWFnZSA9
IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVy
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUlt
YWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQorICAgICAgICAgICAgbV9yZXN1bHQg
PSBCbG9iOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhKSwgbV9taW1lVHlwZSk7
CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM3MmEwN2ZlYzA5YmUzY2Q4M2EwODliMWIwNTI2ZjZjYzNlMTViOTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCIKKwor
I2lmIFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sK
KyAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgeworICAgICAgICBhdXRvIGltYWdl
ID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CisgICAgICAgIGlmIChhdXRvIGJpdG1hcERhdGEgPSByZXRhaW5QdHIo
W2ltYWdlIFRJRkZSZXByZXNlbnRhdGlvbl0pKSB7CisgICAgICAgICAgICBhdXRvIGJpdG1hcFJl
cHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRo
RGF0YTpiaXRtYXBEYXRhLmdldCgpXSk7CisgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNy
ZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShbYml0bWFwUmVwcmVzZW50YXRpb24gcmVwcmVzZW50
YXRpb25Vc2luZ1R5cGU6TlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5HIHByb3BlcnRpZXM6QHsgfV0p
LCBtX21pbWVUeXBlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0hUTUxWaWRlb0VsZW1lbnRQaWN0dXJlSW5QaWN0
dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGljdHVyZWlucGljdHVyZS9IVE1MVmlk
ZW9FbGVtZW50UGljdHVyZUluUGljdHVyZS5jcHAKaW5kZXggNmZkOGQyNThjYmFlNDhiODliYjNk
YWI5NTBjNjI1OWJjNmJiN2JiYS4uNjFiOWE2NmI1YTExN2E3MTcwMGQyMmM5YTMzNTcyYTg0OTA4
ODY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9waWN0dXJlaW5waWN0dXJl
L0hUTUxWaWRlb0VsZW1lbnRQaWN0dXJlSW5QaWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvSFRNTFZpZGVvRWxlbWVudFBpY3R1cmVJblBpY3R1
cmUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJF
X0FQSSkKIAorI2luY2x1ZGUgIkVudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9pb3MvVUlLaXRTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlL
aXRTb2Z0TGluay5oCmluZGV4IDBhZGMxOTIyOTBkNWZmMWVjOWUxMGI2ZTY1YTAxNjE0OTk2MGVl
OTQuLjQ4ZTJjNWQ4ODY2MWE5MmQ3NmEyZjliZDRhMTJkNDNjODAyZDlkMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLmgKQEAgLTcwLDUgKzcwLDYgQEAgU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBVSUtpdCwgVUlBY2Nlc3NpYmlsaXR5UG9z
dE5vdGlmaWNhdGlvbiwgdm9pZCwKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwg
VUlLaXQsIFVJR3JhcGhpY3NHZXRDdXJyZW50Q29udGV4dCwgQ0dDb250ZXh0UmVmLCAodm9pZCks
ICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBVSUtpdCwgVUlHcmFwaGlj
c1BvcENvbnRleHQsIHZvaWQsICh2b2lkKSwgKCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hF
QURFUihQQUwsIFVJS2l0LCBVSUdyYXBoaWNzUHVzaENvbnRleHQsIHZvaWQsIChDR0NvbnRleHRS
ZWYgY29udGV4dCksIChjb250ZXh0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBB
TCwgVUlLaXQsIFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbiwgTlNEYXRhICosIChVSUltYWdlICpp
bWFnZSksIChpbWFnZSkpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9pb3MvVUlLaXRTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvaW9zL1VJ
S2l0U29mdExpbmsubW0KaW5kZXggOTljODUwNjZkNjFhNDYyMGM4MDM2YTVlYjc4M2RjMGM0YzY1
MThmNC4uNTM5YmM2NDg2ZjQ2MDdmMjY4NWYwODBiZTlkMmUyZDFmMDIyYzE5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tCkBAIC03MCw1ICs3MCw2IEBA
IFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJQWNjZXNzaWJpbGl0
eVBvc3ROb3RpZmljYXRpb24sIHZvaWQsCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQ
QUwsIFVJS2l0LCBVSUdyYXBoaWNzR2V0Q3VycmVudENvbnRleHQsIENHQ29udGV4dFJlZiwgKHZv
aWQpLCAoKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJR3Jh
cGhpY3NQb3BDb250ZXh0LCB2b2lkLCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlHcmFwaGljc1B1c2hDb250ZXh0LCB2b2lkLCAoQ0dDb250
ZXh0UmVmIGNvbnRleHQpLCAoY29udGV4dCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJD
RShQQUwsIFVJS2l0LCBVSUltYWdlUE5HUmVwcmVzZW50YXRpb24sIE5TRGF0YSAqLCAoVUlJbWFn
ZSAqaW1hZ2UpLCAoaW1hZ2UpKQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggY2NkNjcyOGI4
NGU0N2E0ZWQ0MTE4NzIxOWNjOTUwMTY3MDQxN2NiNy4uMTg0MzM3MjdmOGQ5NGM3MWUyNmM5Nzhh
ZDQ5ZWM3NTVjZGU0NTQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTM0LDYgKzM0LDcgQEAgbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCiAjZW5kaWYKIAogTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcAorTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXIuY3BwCiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtLmNwcAogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5jcHAKIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJv
YXJkRGF0YVNvdXJjZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGI4NWFkNjZlN2U2
MmU1N2RjYzRhZTY5ZjI5MDhmZjkxNmQ2ODI1N2EuLjZjZDE3NDIzZmMwMjFhYmM2MjRlNzVjZjJh
M2Q4Y2IyOWQzZmFkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMjEsNiArMjEsOSBA
QAogLy8gQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgogLy8gVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
CitNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0K
K01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQor
CiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAogCiBNb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwNDg5YWU0ODRi
ZTQ4MjlkZmQ3ZWIyODgwZGM4NTY5MzRiMzhlOWJjLi5iMzAwNjY5NzJjOWM4Y2Y1OGU3ZmM1OTRl
NThjMTljNzQzODNhZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDg0LDYgKzUwODQsNyBAQAogCQlGNEI0MjJDNDIyMEMw
NTY4MDA5RTFFN0QgLyogRE9NUGFzdGVBY2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QjQyMkMyMjIwQzAwMDAwMDlFMUU3RCAvKiBET01QYXN0
ZUFjY2Vzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUY0QkZCOTg1MUUxRERGOUIwMDg2MkMyNCAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgaW4g
Q29weSBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTgz
MUUxRERGMkIwMDc2QjdFQSAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgKi87IH07CiAJCUY0QkZC
OTg2MUUxRERGOUIwMDg2MkMyNCAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgaW4gQ29weSBTY3Jp
cHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTg0MUUxRERGMkIw
MDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgKi87IH07CisJCUY0QzVGMjA3MjQ3OUU4
ODIwMEU5QjRGNSAvKiBDbGlwYm9hcmRJbWFnZVJlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDNUYyMDUyNDc5RTdFRTAwRTlCNEY1IC8qIENs
aXBib2FyZEltYWdlUmVhZGVyLmggKi87IH07CiAJCUY0RDA3NTU4MjM0RDgyMkQwMDg4MUU3MyAv
KiBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQ2QzQ0N0EyMzQ2NTM1RTAwMzlBNzlEIC8qIENsaXBib2FyZEl0
ZW1EYXRhU291cmNlLmggKi87IH07CiAJCUY0RDA3NTU5MjM0RDgyMzMwMDg4MUU3MyAvKiBDbGlw
Ym9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NkM0NDgwMjM0NjU0N0EwMDM5QTc5RCAvKiBDbGlwYm9h
cmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaCAqLzsgfTsKIAkJRjRENDNENjYyMTg4MDM4QjAw
RUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENDNENjQyMTg4MDJFNjAwRUNFQ0FDIC8qIFNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0xNTc5Miw2ICsxNTc5MywxMCBAQAogCQlGNDk3ODY4NzFGRjQ1
RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhc3Rl
Ym9hcmRJdGVtSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDlFOThFNDIx
REVFNkMxMDA5QUU1NUUgLyogRWRpdEFjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFZGl0
QWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRCNDIyQzIyMjBDMDAw
MDAwOUUxRTdEIC8qIERPTVBhc3RlQWNjZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVBhc3RlQWNj
ZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QzVGMjA1MjQ3OUU3RUUwMEU5
QjRGNSAvKiBDbGlwYm9hcmRJbWFnZVJlYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwYm9hcmRJ
bWFnZVJlYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEM1RjIwODI0NzlF
OUM4MDBFOUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGNEM1RjIxMzI0NzlGQzRFMDBFOUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBDbGlwYm9hcmRJbWFnZVJl
YWRlck1hYy5tbTsgcGF0aCA9IG1hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRDNUYyMTYyNDc5RkNEMTAwRTlCNEY1IC8qIENsaXBi
b2FyZEltYWdlUmVhZGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW07IHBhdGggPSBpb3MvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDQzRDY0MjE4
ODAyRTYwMEVDRUNBQyAvKiBTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0RDk4MTdEMjE5NUZCRjYwMDgyMzBGQyAvKiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0RDk4MTdFMjE5NUZCRjYwMDgyMzBGQyAvKiBDaGFuZ2VMaXN0VHlwZUNv
bW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3OTA1LDkgKzI3OTEwLDEzIEBACiAJCUY0
NDBFNzZBMjMzRDkzQzgwMDYzRjlBQiAvKiBhc3luYy1jbGlwYm9hcmQgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUY0QzVGMjE1MjQ3OUZDQUYwMEU5QjRG
NSAvKiBpb3MgKi8sCisJCQkJRjRDNUYyMTIyNDc5RkM0MDAwRTlCNEY1IC8qIG1hYyAqLywKIAkJ
CQlGNDQwRTc2RTIzM0Q5NEQzMDA2M0Y5QUIgLyogQ2xpcGJvYXJkLmNwcCAqLywKIAkJCQlGNDQw
RTc3MjIzM0Q5NEQ1MDA2M0Y5QUIgLyogQ2xpcGJvYXJkLmggKi8sCiAJCQkJRjQ0MEU3NzQyMzNE
OTRENjAwNjNGOUFCIC8qIENsaXBib2FyZC5pZGwgKi8sCisJCQkJRjRDNUYyMDgyNDc5RTlDODAw
RTlCNEY1IC8qIENsaXBib2FyZEltYWdlUmVhZGVyLmNwcCAqLywKKwkJCQlGNEM1RjIwNTI0NzlF
N0VFMDBFOUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCAqLywKIAkJCQlGNDQwRTc3NTIz
M0Q5NEQ2MDA2M0Y5QUIgLyogQ2xpcGJvYXJkSXRlbS5jcHAgKi8sCiAJCQkJRjQ0MEU3NzAyMzNE
OTRENDAwNjNGOUFCIC8qIENsaXBib2FyZEl0ZW0uaCAqLywKIAkJCQlGNDQwRTc3NzIzM0Q5NEQ3
MDA2M0Y5QUIgLyogQ2xpcGJvYXJkSXRlbS5pZGwgKi8sCkBAIC0yNzkzMiw2ICsyNzk0MSwyMiBA
QAogCQkJbmFtZSA9IEVkaXRpbmdIaXN0b3J5OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
IAkJfTsKKwkJRjRDNUYyMTIyNDc5RkM0MDAwRTlCNEY1IC8qIG1hYyAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRjRDNUYyMTMyNDc5RkM0RTAwRTlCNEY1
IC8qIENsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBtYWM7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlGNEM1RjIxNTI0NzlGQ0FGMDBF
OUI0RjUgLyogaW9zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQlGNEM1RjIxNjI0NzlGQ0QxMDBFOUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1Mu
bW0gKi8sCisJCQkpOworCQkJbmFtZSA9IGlvczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CiAJCUY1MjNEMTg0MDJERTQyRTgwMTg2MzVDQSAvKiBjc3MgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjk5MTUsNiArMjk5NDAsNyBAQAogCQkJ
CUY0NDBFNzdEMjMzRDk0RDcwMDYzRjlBQiAvKiBDbGlwYm9hcmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDM0E5MUU2MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1MDMxQjQwMEE0NEVGQzcwMEY5OTJFMCAvKiBDbGlwYm9hcmRF
dmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjRDNUYyMDcyNDc5RTg4MjAwRTlCNEY1IC8qIENs
aXBib2FyZEltYWdlUmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDQwRTc3QjIzM0Q5NEQ3
MDA2M0Y5QUIgLyogQ2xpcGJvYXJkSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ2QzQ0N0Uy
MzQ2NTQ1NDAwMzlBNzlEIC8qIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUY0RDA3NTU4MjM0RDgyMkQwMDg4MUU3MyAvKiBDbGlwYm9hcmRJdGVt
RGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmgKaW5kZXggMWI4MmRkNjViYWFmM2Q0ZDE0NDEyMjVlZDI4MTM3MTVjZDIzNjRjNS4uZGNjMGEz
OTJiMzBkZWIyYjc5MzU4YWQwZWJlN2U0OTE2YTlmYmY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuaApAQCAtMTY3LDYgKzE2Nyw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkUGxhaW5U
ZXh0IHsKIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdmlydHVhbCB+UGFzdGVi
b2FyZEZpbGVSZWFkZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRGaWxlbmFt
ZShjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZFJlYWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiAvKiB0eXBlICovKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmly
dHVhbCB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9OwogCkBAIC0yMTEsNyArMjEyLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVi
b2FyZFBsYWluVGV4dCYsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgPSBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5OjpBbGxvd1VSTCwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXggPSBXVEY6
Om51bGxvcHQpOwogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9h
cmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgPSBXZWJDb250ZW50
UmVhZGluZ1BvbGljeTo6QW55VHlwZSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXggPSBXVEY6
Om51bGxvcHQpOwotICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9h
cmRGaWxlUmVhZGVyJik7CisgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFz
dGVib2FyZEZpbGVSZWFkZXImLCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCA9IFdURjo6bnVs
bG9wdCk7CiAKICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgQ29s
b3ImKTsKICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVi
b2FyZFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGljdHVyZUlu
UGljdHVyZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QaWN0dXJlSW5QaWN0
dXJlT2JzZXJ2ZXIuaAppbmRleCBlZDhjMTYyNTliN2QwNWVkNGJiYjM1YTU0M2NmNjE3MTIwMzhl
NmZiLi4xYTJmZTA4NTJmYTRlZTI4YmFkYjliYzUxNmEzYzRlMGIxM2RkZTA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIuaApAQCAt
MjcsOCArMjcsMTIgQEAKIAogI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQogCisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJ
bnRTaXplOworCiBjbGFzcyBQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8UGljdHVyZUluUGljdHVyZU9ic2VydmVyPiB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UGljdHVyZUluUGljdHVyZU9ic2VydmVyKCkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4IGJhMWFjMWNmZWY1OTk0NmI3
ODc3OWY0YWU0NWIzNzIyYTNhYWU3ZmEuLjJhZjBiNTJmMjNlYTkzYjk3NzliNDA2MzI1ODRlZDkz
NjM5M2JlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJv
YXJkQ29jb2EubW0KQEAgLTIxNSwyNSArMjE1LDIyIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIH0KICNlbmRpZgog
Ci12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImIHJlYWRlcikKK3Zv
aWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYgcmVhZGVyLCBPcHRpb25h
bDxzaXplX3Q+IGl0ZW1JbmRleCkKIHsKLSAgICBhdXRvIGZpbGVuYW1lcyA9IHJlYWRGaWxlUGF0
aHMoKTsKLSAgICBpZiAoIWZpbGVuYW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZm9yIChhdXRv
JiBmaWxlbmFtZSA6IGZpbGVuYW1lcykKLSAgICAgICAgICAgIHJlYWRlci5yZWFkRmlsZW5hbWUo
ZmlsZW5hbWUpOwotICAgICAgICByZXR1cm47CisgICAgaWYgKCFpdGVtSW5kZXgpIHsKKyAgICAg
ICAgYXV0byBmaWxlbmFtZXMgPSByZWFkRmlsZVBhdGhzKCk7CisgICAgICAgIGlmICghZmlsZW5h
bWVzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IGZpbGVu
YW1lcykKKyAgICAgICAgICAgICAgICByZWFkZXIucmVhZEZpbGVuYW1lKGZpbGVuYW1lKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gYWxsSW5mbyA9
IGFsbFBhc3RlYm9hcmRJdGVtSW5mbygpOwotICAgIGlmICghYWxsSW5mbykKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZm9yIChzaXplX3QgaXRlbUluZGV4ID0gMDsgaXRlbUluZGV4IDwgYWxsSW5m
by0+c2l6ZSgpOyArK2l0ZW1JbmRleCkgewotICAgICAgICBhdXRvJiBpbmZvID0gYWxsSW5mby0+
YXQoaXRlbUluZGV4KTsKKyAgICBhdXRvIHJlYWRCdWZmZXJBdEluZGV4ID0gWyZdKGNvbnN0IFBh
c3RlYm9hcmRJdGVtSW5mbyYgaW5mbywgc2l6ZV90IGl0ZW1JbmRleCkgewogICAgICAgICBmb3Ig
KGF1dG8gY29jb2FUeXBlIDogaW5mby5wbGF0Zm9ybVR5cGVzQnlGaWRlbGl0eSkgewogICAgICAg
ICAgICAgYXV0byBpbWFnZVR5cGUgPSBjb2NvYVR5cGVUb0ltYWdlVHlwZShjb2NvYVR5cGUpOwog
ICAgICAgICAgICAgYXV0byogbWltZVR5cGUgPSBpbWFnZVR5cGVUb01JTUVUeXBlKGltYWdlVHlw
ZSk7Ci0gICAgICAgICAgICBpZiAoIW1pbWVUeXBlKQorICAgICAgICAgICAgaWYgKCFtaW1lVHlw
ZSB8fCAhcmVhZGVyLnNob3VsZFJlYWRCdWZmZXIobWltZVR5cGUpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgYXV0byBidWZmZXIgPSByZWFkQnVmZmVyKGl0ZW1JbmRl
eCwgY29jb2FUeXBlKTsKICNpZiBQTEFURk9STShNQUMpCkBAIC0yNDUsNiArMjQyLDE3IEBAIHZv
aWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYgcmVhZGVyKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgfTsKKworICAg
IGlmIChpdGVtSW5kZXgpIHsKKyAgICAgICAgaWYgKGF1dG8gaW5mbyA9IHBhc3RlYm9hcmRJdGVt
SW5mbygqaXRlbUluZGV4KSkKKyAgICAgICAgICAgIHJlYWRCdWZmZXJBdEluZGV4KCppbmZvLCAq
aXRlbUluZGV4KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChhdXRvIGFsbElu
Zm8gPSBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oKSkgeworICAgICAgICBmb3IgKHNpemVfdCBpdGVt
SW5kZXggPSAwOyBpdGVtSW5kZXggPCBhbGxJbmZvLT5zaXplKCk7ICsraXRlbUluZGV4KQorICAg
ICAgICAgICAgcmVhZEJ1ZmZlckF0SW5kZXgoYWxsSW5mby0+YXQoaXRlbUluZGV4KSwgaXRlbUlu
ZGV4KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IGQyZjMyMjAwNDdmNmYzNDM1MzU2Yzk3ODc1
MTAzOGU2YjhiMGYxOWQuLmZkM2E4NWFlMGFiNjBmOTQ5YTI2YmYyZDhjMDI3YTdmOTU1N2E3ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBib29sIHNob3VsZFRyZWF0QXRM
ZWFzdE9uZVR5cGVBc0ZpbGUoTlNBcnJheTxOU1N0cmluZyAqPiAqcGxhdGZvcm1UeXBlcykKIAog
I2lmIFBBU1RFQk9BUkRfU1VQUE9SVFNfSVRFTV9QUk9WSURFUlMKIAotc3RhdGljIGNvbnN0IGNo
YXIgKnNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGVGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3Ry
aW5nJiBwbGF0Zm9ybVR5cGUpCitzdGF0aWMgY29uc3QgY2hhciAqc2FmZVR5cGVGb3JET01Ub1Jl
YWRBbmRXcml0ZUZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmIHBsYXRmb3JtVHlwZSwgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpJbmNsdWRlSW1hZ2VUeXBlcyBpbmNsdWRlSW1hZ2VUeXBlcykKIHsK
ICAgICBhdXRvIGNmVHlwZSA9IHBsYXRmb3JtVHlwZS5jcmVhdGVDRlN0cmluZygpOwogICAgIGlm
IChVVFR5cGVDb25mb3Jtc1RvKGNmVHlwZS5nZXQoKSwga1VUVHlwZVBsYWluVGV4dCkpCkBAIC0x
MTksMTAgKzExOSwxMyBAQCBzdGF0aWMgY29uc3QgY2hhciAqc2FmZVR5cGVGb3JET01Ub1JlYWRB
bmRXcml0ZUZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmIHBsYQogICAgIGlmIChVVFR5cGVD
b25mb3Jtc1RvKGNmVHlwZS5nZXQoKSwga1VUVHlwZVVSTCkpCiAgICAgICAgIHJldHVybiAidGV4
dC91cmktbGlzdCJfczsKIAorICAgIGlmIChpbmNsdWRlSW1hZ2VUeXBlcyA9PSBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OkluY2x1ZGVJbWFnZVR5cGVzOjpZZXMgJiYgVVRUeXBlQ29uZm9ybXNUbyhjZlR5
cGUuZ2V0KCksIGtVVFR5cGVQTkcpKQorICAgICAgICByZXR1cm4gImltYWdlL3BuZyJfczsKKwog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgVmVjdG9yPFN0cmluZz4gd2ViU2FmZVR5
cGVzKE5TQXJyYXk8TlNTdHJpbmcgKj4gKnBsYXRmb3JtVHlwZXMsIEZ1bmN0aW9uPGJvb2woKT4m
JiBzaG91bGRBdm9pZEV4cG9zaW5nVVJMVHlwZSkKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiB3ZWJT
YWZlVHlwZXMoTlNBcnJheTxOU1N0cmluZyAqPiAqcGxhdGZvcm1UeXBlcywgUGxhdGZvcm1QYXN0
ZWJvYXJkOjpJbmNsdWRlSW1hZ2VUeXBlcyBpbmNsdWRlSW1hZ2VUeXBlcywgRnVuY3Rpb248Ym9v
bCgpPiYmIHNob3VsZEF2b2lkRXhwb3NpbmdVUkxUeXBlKQogewogICAgIExpc3RIYXNoU2V0PFN0
cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOwogICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gcGxh
dGZvcm1UeXBlcykgewpAQCAtMTM0LDcgKzEzNyw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiB3
ZWJTYWZlVHlwZXMoTlNBcnJheTxOU1N0cmluZyAqPiAqcGxhdGZvcm1UeXBlcywgRnVuY3Rpb248
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChhdXRvKiBj
b2VyY2VkVHlwZSA9IHNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGVGb3JQbGF0Zm9ybVR5cGUo
dHlwZSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvZXJjZWRUeXBlID0gc2FmZVR5cGVGb3JET01U
b1JlYWRBbmRXcml0ZUZvclBsYXRmb3JtVHlwZSh0eXBlLCBpbmNsdWRlSW1hZ2VUeXBlcykpIHsK
ICAgICAgICAgICAgIGF1dG8gZG9tVHlwZUFzU3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChjb2Vy
Y2VkVHlwZSk7CiAgICAgICAgICAgICBpZiAoZG9tVHlwZUFzU3RyaW5nID09ICJ0ZXh0L3VyaS1s
aXN0Il9zICYmIChbcGxhdGZvcm1UeXBlcyBjb250YWluc09iamVjdDooX19icmlkZ2UgTlNTdHJp
bmcgKilrVVRUeXBlRmlsZVVSTF0gfHwgc2hvdWxkQXZvaWRFeHBvc2luZ1VSTFR5cGUoKSkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0yMzMsNyArMjM2LDcgQEAgT3B0aW9uYWw8UGFz
dGVib2FyZEl0ZW1JbmZvPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgoc2l6ZV8KICAgICAgICAgaW5mby5pc05vblRleHRUeXBlID0gdHJ1ZTsKICAgICB9CiAK
LSAgICBpbmZvLndlYlNhZmVUeXBlc0J5RmlkZWxpdHkgPSB3ZWJTYWZlVHlwZXMocmVnaXN0ZXJl
ZFR5cGVJZGVudGlmaWVycywgWyZdIHsKKyAgICBpbmZvLndlYlNhZmVUeXBlc0J5RmlkZWxpdHkg
PSB3ZWJTYWZlVHlwZXMocmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycywgSW5jbHVkZUltYWdlVHlw
ZXM6OlllcywgWyZdIHsKICAgICAgICAgcmV0dXJuIHNob3VsZFRyZWF0QXRMZWFzdE9uZVR5cGVB
c0ZpbGUocmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycykgJiYgIVBhc3RlYm9hcmQ6OmNhbkV4cG9z
ZVVSTFRvRE9NV2hlblBhc3RlYm9hcmRDb250YWluc0ZpbGVzKHJlYWRTdHJpbmcoaW5kZXgsIGtV
VFR5cGVVUkwpKTsKICAgICB9KTsKIApAQCAtNTY0LDcgKzU2Nyw3IEBAIFZlY3RvcjxTdHJpbmc+
IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3Qg
U3RyaW5nJiBvCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIHdlYlNhZmVQYXN0ZWJvYXJk
VHlwZXMgPSB3ZWJTYWZlVHlwZXMoW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdLCBbJl0g
eworICAgIGF1dG8gd2ViU2FmZVBhc3RlYm9hcmRUeXBlcyA9IHdlYlNhZmVUeXBlcyhbbV9wYXN0
ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10sIEluY2x1ZGVJbWFnZVR5cGVzOjpObywgWyZdIHsKICAg
ICAgICAgQk9PTCBhYmxlVG9EZXRlcm1pbmVQcm90b2NvbE9mUGFzdGVib2FyZFVSTCA9ICFbbV9w
YXN0ZWJvYXJkIGlzS2luZE9mQ2xhc3M6W1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgY2xhc3Nd
XTsKICAgICAgICAgcmV0dXJuIGFibGVUb0RldGVybWluZVByb3RvY29sT2ZQYXN0ZWJvYXJkVVJM
ICYmIHN0cmluZ0ZvclR5cGUoa1VUVHlwZVVSTCkuaXNFbXB0eSgpOwogICAgIH0pOwpAQCAtNTk2
LDE4ICs1OTksMjggQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRp
b25JbmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICAgICAgfQogICAgIH0K
IAotICAgIGRhdGEuZm9yRWFjaFBsYXRmb3JtU3RyaW5nKFsmXSAoYXV0byYgdHlwZSwgYXV0byYg
dmFsdWUpIHsKLSAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICBkYXRhLmZvckVhY2hQbGF0Zm9ybVN0
cmluZ09yQnVmZmVyKFsmXSAoYXV0byYgdHlwZSwgYXV0byYgdmFsdWUpIHsKKyAgICAgICAgYXV0
byBjb2NvYVR5cGUgPSBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnBsYXRmb3JtUGFzdGVib2FyZFR5cGVG
b3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKHR5cGUsIFBsYXRmb3JtUGFzdGVib2FyZDo6
SW5jbHVkZUltYWdlVHlwZXM6Olllcyk7CisgICAgICAgIGlmIChjb2NvYVR5cGUuaXNFbXB0eSgp
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIE5TU3RyaW5nICpzdHJpbmdWYWx1ZSA9
IHZhbHVlOwotICAgICAgICBhdXRvIGNvY29hVHlwZSA9IFBsYXRmb3JtUGFzdGVib2FyZDo6cGxh
dGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUodHlwZSwg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpJbmNsdWRlSW1hZ2VUeXBlczo6WWVzKS5jcmVhdGVDRlN0cmlu
ZygpOwotICAgICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbyhjb2NvYVR5cGUuZ2V0KCksIGtVVFR5
cGVVUkwpKQotICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVz
ZW50aW5nT2JqZWN0OltOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ1ZhbHVlXV07Ci0gICAgICAg
IGVsc2UgaWYgKFVUVHlwZUNvbmZvcm1zVG8oY29jb2FUeXBlLmdldCgpLCBrVVRUeXBlUGxhaW5U
ZXh0KSkKLSAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2Vu
dGluZ09iamVjdDpzdHJpbmdWYWx1ZV07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6W3N0cmluZ1ZhbHVlIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZS5n
ZXQoKV07CisgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4odmFsdWUp
KSB7CisgICAgICAgICAgICBpZiAoV1RGOjpnZXQ8U3RyaW5nPih2YWx1ZSkuaXNOdWxsKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBOU1N0cmluZyAqbnNTdHJpbmdW
YWx1ZSA9IFdURjo6Z2V0PFN0cmluZz4odmFsdWUpOworICAgICAgICAgICAgYXV0byBjZlR5cGUg
PSBjb2NvYVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIGlmIChVVFR5cGVDb25m
b3Jtc1RvKGNmVHlwZS5nZXQoKSwga1VUVHlwZVVSTCkpCisgICAgICAgICAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OltOU1VSTCBVUkxXaXRo
U3RyaW5nOm5zU3RyaW5nVmFsdWVdXTsKKyAgICAgICAgICAgIGVsc2UgaWYgKFVUVHlwZUNvbmZv
cm1zVG8oY2ZUeXBlLmdldCgpLCBrVVRUeXBlUGxhaW5UZXh0KSkKKyAgICAgICAgICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6bnNTdHJpbmdW
YWx1ZV07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkRGF0YTpbbnNTdHJpbmdWYWx1ZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10gZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBidWZmZXIgPSBXVEY6Omdl
dDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNT
dHJpbmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYTIwYmI4MDVjNjM2Njg2YTQ0MGJjNDA3NTg1OTA0Njk5ODI4ODk5OS4uYzE1ODdm
YThlZWVhNThkMjVlOTg2OThjODIzYTE3MGFhMjdhMmVhYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA1LTI0
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlw
Ym9hcmQgQVBJXSBTdXBwb3J0IHJlYWRpbmcgImltYWdlL3BuZyIgb24gQ2xpcGJvYXJkSXRlbQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzM5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzU4ODk1Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgQVBJIHRlc3QgdG8gdmVyaWZ5IHRo
YXQgVElGRiBpbWFnZXMgb24gdGhlIHN5c3RlbSBwYXN0ZWJvYXJkIG9uIG1hY09TIGFyZSBhdXRv
bWF0aWNhbGx5IGNvbnZlcnRlZCB0bworICAgICAgICBQTkcgZGF0YSwgYW5kIGlzIGFjY2Vzc2li
bGUgdGhyb3VnaCBgQ2xpcGJvYXJkSXRlbWAgdGhyb3VnaCB0aGUgImltYWdlL3BuZyIgdHlwZS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2xpcGJvYXJkVGVz
dHMubW06CisKIDIwMjAtMDUtMjIgIFBhdWxvIE1hdG9zICA8cG1hdG9zQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFtuby1ddXNlLWNjYWNoZSBvcHRpb24gaW4gYnVpbGQt
anNjCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Ns
aXBib2FyZFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9D
bGlwYm9hcmRUZXN0cy5tbQppbmRleCBjZjEzMzdmYTRiYmU0MjYyNWRjMjRhMGU5ZDVmYTFhNjY0
ZGYyZjE1Li40ZTU1Y2YwMWE5N2YyNzliNDJkYzBkYWQ1MjhjYWU2NWJhYTZhYTdlIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NsaXBib2FyZFRlc3Rz
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2xpcGJvYXJk
VGVzdHMubW0KQEAgLTE2NSwzICsxNjUsMjEgQEAgVEVTVChDbGlwYm9hcmRUZXN0cywgV3JpdGVT
YW5pdGl6ZWRNYXJrdXApCiAgICAgRVhQRUNUX0ZBTFNFKFt3cml0dGVuTWFya3VwIGNvbnRhaW5z
U3RyaW5nOkAic3VwZXIgc2VjcmV0Il0pOwogICAgIEVYUEVDVF9GQUxTRShbd3JpdHRlbk1hcmt1
cCBjb250YWluc1N0cmluZzpAIjxzY3JpcHQ+Il0pOwogfQorCisjaWYgUExBVEZPUk0oTUFDKQor
CitURVNUKENsaXBib2FyZFRlc3RzLCBDb252ZXJ0VElGRlRvUE5HV2hlblBhc3RpbmcpCit7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld0ZvckNsaXBib2FyZFRlc3RzKCk7CisgICAg
YXV0byB1cmwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic3Vuc2V0
LWluLWN1cGVydGluby0xMDBweCIgd2l0aEV4dGVuc2lvbjpAInRpZmYiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgYXV0byBwYXN0ZWJvYXJkID0gTlNQYXN0
ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkOworICAgIFtwYXN0ZWJvYXJkIGNsZWFyQ29udGVudHNd
OworICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6W05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6
dXJsXSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVUSUZGXTsKKyAgICBbd2ViVmlldyByZWFkQ2xp
cGJvYXJkXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImV4Y2VwdGlvbiA/IGV4Y2VwdGlvbi5tZXNzYWdlIDogJyciXSk7
CisgICAgRVhQRUNUX0VRKDFVLCBbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImNsaXBib2FyZERhdGEubGVuZ3RoIl0gdW5zaWduZWRJbnRWYWx1ZV0pOworICAgIEVYUEVD
VF9UUlVFKFtbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJk
RGF0YVswXVsnaW1hZ2UvcG5nJ10uc3JjIl0gY29udGFpbnNTdHJpbmc6QCJibG9iOiJdKTsKK30K
KworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzYmJkNzMyMDI3YWQ5YWZkODMxYTE4
YmE4MmUyMGEyZDhjMTQ2MjUxLi4yZjY5NjIzM2VhNDFkN2M1NzMwYzY1MzlhMDc5NDFjMjE5YjE4
OWNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDUtMjQgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NsaXBib2FyZCBBUEldIFN1cHBvcnQg
cmVhZGluZyAiaW1hZ2UvcG5nIiBvbiBDbGlwYm9hcmRJdGVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIzMzkKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzYzNTg4OTU3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhIG5ldyBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgdGhhdCBgQ2xpcGJvYXJkLndy
aXRlYCBhbmQgYENsaXBib2FyZC5yZWFkYCBjYW4gYmUgdXNlZCB0byBjb3B5IGFuZCB0aGVuIHJl
YWQKKyAgICAgICAgYmFjayBQTkcgaW1hZ2UgZGF0YS4KKworICAgICAgICAqIGVkaXRpbmcvYXN5
bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1yZWFkLXdyaXRlLWltYWdlcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGVkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1yZWFkLXdy
aXRlLWltYWdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2FzeW5jLWNsaXBib2Fy
ZC9yZXNvdXJjZXMvYXN5bmMtY2xpcGJvYXJkLWhlbHBlcnMuanM6CisgICAgICAgIChzYW1wbGVC
YXNlNjRQTkdJbWFnZURhdGExKToKKyAgICAgICAgKHNhbXBsZUJhc2U2NFBOR0ltYWdlRGF0YTIp
OgorICAgICAgICAoaW1hZ2VCbG9iKToKKyAgICAgICAgKHNhbXBsZUJhc2U2NFBOR0ltYWdlRGF0
YSk6IERlbGV0ZWQuCisKIDIwMjAtMDUtMjIgIEtlbm5ldGggUnVzc2VsbCAgPGtickBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW0FOR0xFIC0gaU9TXSBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1k
ZXB0aC10ZXh0dXJlLmh0bWwgaXMgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLXJlYWQtd3JpdGUtaW1hZ2VzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1yZWFk
LXdyaXRlLWltYWdlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE2MTc3NTMxNWE0NjY2NGRm
NDEwNGQyODRhOTlmZmE4NGIwMzNmMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1yZWFkLXdyaXRlLWltYWdlcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgbXVsdGlwbGUg
aW1hZ2VzIGNhbiBiZSB3cml0dGVuIHRvIGFuZCByZWFkIGZyb20gdGhlIHN5c3RlbSBjbGlwYm9h
cmQuIFRvIG1hbnVhbGx5IHJ1biB0aGUgdGVzdCwgdGFwIHRoZSBjb3B5IGJ1dHRvbiwgYW5kIHRo
ZW4gdGFwIHBhc3RlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb25l
V3JpdGluZyBiZWNhbWUgdHJ1ZQorUEFTUyBpdGVtcy5sZW5ndGggaXMgMgorUEFTUyBpdGVtLnR5
cGVzLmxlbmd0aCBpcyAxCitQQVNTIGl0ZW0udHlwZXMuaW5jbHVkZXMoJ2ltYWdlL3BuZycpIGlz
IHRydWUKK1BBU1MgUGFzdGVkIDYwIGJ5IDYwIGltYWdlLgorUEFTUyBpdGVtLnR5cGVzLmxlbmd0
aCBpcyAxCitQQVNTIGl0ZW0udHlwZXMuaW5jbHVkZXMoJ2ltYWdlL3BuZycpIGlzIHRydWUKK1BB
U1MgUGFzdGVkIDIwIGJ5IDIwIGltYWdlLgorUEFTUyBkb25lUmVhZGluZyBiZWNhbWUgdHJ1ZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisgCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtcmVh
ZC13cml0ZS1pbWFnZXMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJk
L2NsaXBib2FyZC1yZWFkLXdyaXRlLWltYWdlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmZDA3MjkwYmVk
NTZiYTA3ZjZlMGM3ZDI0ZDA1OGQyZmQyZjE2OWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtcmVhZC13cml0ZS1pbWFnZXMu
aHRtbApAQCAtMCwwICsxLDc0IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1y
dW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgZXhwZXJpbWVudGFsOkFzeW5jQ2xpcGJv
YXJkQVBJRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGY4
Ij4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9Indp
ZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvYXN5bmMtY2xpcGJvYXJkLWhl
bHBlcnMuanMiPjwvc2NyaXB0PgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICBidXR0b24g
eworICAgICAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgICAgICBwYWRkaW5n
OiAxZW07CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgPC9oZWFkPgorICAg
IDxzY3JpcHQ+CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICBkb25lV3Jp
dGluZyA9IGZhbHNlOworICAgICAgICBkb25lUmVhZGluZyA9IGZhbHNlOworCisgICAgICAgIGRl
c2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBtdWx0aXBsZSBpbWFnZXMgY2FuIGJl
IHdyaXR0ZW4gdG8gYW5kIHJlYWQgZnJvbSB0aGUgc3lzdGVtIGNsaXBib2FyZC4gVG8gbWFudWFs
bHkgcnVuIHRoZSB0ZXN0LCB0YXAgdGhlIGNvcHkgYnV0dG9uLCBhbmQgdGhlbiB0YXAgcGFzdGUu
Iik7CisKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICAgIGNv
bnN0IGNvcHlCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29weSIpOworICAgICAg
ICAgICAgY29uc3QgcGFzdGVCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFzdGUi
KTsKKyAgICAgICAgICAgIGNvbnN0IGltYWdlc0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJpbWFnZXNDb250YWluZXIiKTsKKyAgICAgICAgICAgIGNvcHlCdXR0b24uYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCBhc3luYyBldmVudCA9PiB7CisgICAgICAgICAgICAgICAgYXdh
aXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZShbCisgICAgICAgICAgICAgICAgICAgIG5ldyBD
bGlwYm9hcmRJdGVtKHsgImltYWdlL3BuZyIgOiBQcm9taXNlLnJlc29sdmUoaW1hZ2VCbG9iKCkp
IH0pLAorICAgICAgICAgICAgICAgICAgICBuZXcgQ2xpcGJvYXJkSXRlbSh7ICJpbWFnZS9wbmci
IDogUHJvbWlzZS5yZXNvbHZlKGltYWdlQmxvYihzYW1wbGVCYXNlNjRQTkdJbWFnZURhdGEyKCkp
KSB9KQorICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgIGRvbmVXcml0aW5nID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBwYXN0ZUJ1dHRvbi5hZGRFdmVu
dExpc3RlbmVyKCJjbGljayIsIGFzeW5jIGV2ZW50ID0+IHsKKyAgICAgICAgICAgICAgICB0cnkg
eworICAgICAgICAgICAgICAgICAgICBpdGVtcyA9IGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQu
cmVhZCgpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiaXRlbXMubGVuZ3RoIiwgIjIi
KTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaXRlbSA9IGl0ZW07CisgICAgICAgICAgICAgICAg
ICAgICAgICBzaG91bGRCZSgiaXRlbS50eXBlcy5sZW5ndGgiLCAiMSIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJpdGVtLnR5cGVzLmluY2x1ZGVzKCdpbWFnZS9wbmcn
KSIpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1hZ2VEYXRhID0gYXdhaXQgaXRl
bS5nZXRUeXBlKCJpbWFnZS9wbmciKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlt
YWdlID0gYXdhaXQgbG9hZEltYWdlKGltYWdlRGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpbWFnZXNDb250YWluZXIuYXBwZW5kQ2hpbGQoaW1hZ2UpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYXdhaXQgaW1hZ2UuZGVjb2RlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjbGllbnRSZWN0ID0gaW1hZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGBQYXN0ZWQgJHtjbGllbnRSZWN0LndpZHRofSBieSAk
e2NsaWVudFJlY3QuaGVpZ2h0fSBpbWFnZS5gKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKGBDYXVnaHQgZXhjZXB0aW9uOiAke2V4Y2VwdGlvbn1gKTsKKyAgICAgICAgICAg
ICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgICAgICBkb25lUmVhZGluZyA9IHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGF3YWl0
IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudChjb3B5QnV0dG9uKTsKKyAgICAgICAgICAgIGF3YWl0
IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2hvdWxkQmVjb21lRXF1YWwoImRvbmVXcml0aW5nIiwg
InRydWUiLCByZXNvbHZlKSk7CisKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRl
RWxlbWVudChwYXN0ZUJ1dHRvbik7CisgICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHNob3VsZEJlY29tZUVxdWFsKCJkb25lUmVhZGluZyIsICJ0cnVlIiwgcmVzb2x2ZSkp
OworCisgICAgICAgICAgICBbcGFzdGVCdXR0b24sIGNvcHlCdXR0b25dLm1hcChidXR0b24gPT4g
YnV0dG9uLnJlbW92ZSgpKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9
CisKKyAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHJ1blRlc3QpOworICAgIDwvc2Ny
aXB0PgorICAgIDxib2R5PgorICAgICAgICA8YnV0dG9uIGlkPSJjb3B5Ij5Db3B5PC9idXR0b24+
CisgICAgICAgIDxidXR0b24gaWQ9InBhc3RlIj5QYXN0ZTwvYnV0dG9uPgorICAgICAgICA8ZGl2
IGlkPSJpbWFnZXNDb250YWluZXIiPjwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL3Jlc291cmNlcy9hc3lu
Yy1jbGlwYm9hcmQtaGVscGVycy5qcyBiL0xheW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJv
YXJkL3Jlc291cmNlcy9hc3luYy1jbGlwYm9hcmQtaGVscGVycy5qcwppbmRleCA2MWJjNmExZjg0
NWJlYWI2NGVmZDA0MzNlMTBkMWY2MjNjMTIzYzM0Li42N2NhYTJiZmEyY2E0ZjAzZTQyZDExNWNl
ZTUyYWNjYWEwNTdkYzYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNs
aXBib2FyZC9yZXNvdXJjZXMvYXN5bmMtY2xpcGJvYXJkLWhlbHBlcnMuanMKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvcmVzb3VyY2VzL2FzeW5jLWNsaXBib2FyZC1o
ZWxwZXJzLmpzCkBAIC0xLDkgKzEsMTQgQEAKLWZ1bmN0aW9uIHNhbXBsZUJhc2U2NFBOR0ltYWdl
RGF0YSgpIHsKK2Z1bmN0aW9uIHNhbXBsZUJhc2U2NFBOR0ltYWdlRGF0YTEoKSB7CiAgICAgLy8g
QSA2MCBieSA2MCBzb2xpZCByZWQgc3F1YXJlLgogICAgIHJldHVybiAiaVZCT1J3MEtHZ29BQUFB
TlNVaEVVZ0FBQUR3QUFBQThDQVlBQUFBNi9ObHlBQUFBQVhOU1IwSUFyczRjNlFBQUFKWmxXRWxt
VFUwQUtnQUFBQWdBQkFFYUFBVUFBQUFCQUFBQVBnRWJBQVVBQUFBQkFBQUFSZ0VvQUFNQUFBQUJB
QUlBQUlkcEFBUUFBQUFCQUFBQVRnQUFBQUFBQUFDUUFBQUFBUUFBQUpBQUFBQUJBQVNTaGdBSEFB
QUFFZ0FBQUlTZ0FRQURBQUFBQVFBQkFBQ2dBZ0FFQUFBQUFRQUFBRHlnQXdBRUFBQUFBUUFBQUR3
QUFBQUFRVk5EU1VrQUFBQlRZM0psWlc1emFHOTBDVWcwbXdBQUFBbHdTRmx6QUFBV0pRQUFGaVVC
U1ZJazhBQUFBZFJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHg0T25odGNHMWxk
R0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJbGhOVUNCRGIz
SmxJRFV1TkM0d0lqNEtJQ0FnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNk
M0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0S0lDQWdJQ0Fn
UEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJS0lDQWdJQ0FnSUNBZ0lDQWdl
RzFzYm5NNlpYaHBaajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5bGVHbG1MekV1TUM4aVBn
b2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmhFYVcxbGJuTnBiMjQrTmpBOEwyVjRhV1k2VUds
NFpXeFlSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFZjMlZ5UTI5dGJXVnVkRDVU
WTNKbFpXNXphRzkwUEM5bGVHbG1PbFZ6WlhKRGIyMXRaVzUwUGdvZ0lDQWdJQ0FnSUNBOFpYaHBa
anBRYVhobGJGbEVhVzFsYm5OcGIyNCtOakE4TDJWNGFXWTZVR2w0Wld4WlJHbHRaVzV6YVc5dVBn
b2dJQ0FnSUNBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0S0lDQWdQQzl5WkdZNlVrUkdQZ284TDNn
NmVHMXdiV1YwWVQ0SzkrQm1iQUFBQUJ4cFJFOVVBQUFBQWdBQUFBQUFBQUFlQUFBQUtBQUFBQjRB
QUFBZUFBQUFscy9HVUk4QUFBQmlTVVJCVkdnRjdOSXhBUUFnRE1SQTZvZ2QvN3BBUUJ5RWRQenQv
enIzN0xzK3VxbXdYRHRoT2ZCS09HSFpBcjIwREJSMUVzWWtzaUJoR1NqcUpJeEpaRUhDTWxEVVNS
aVR5SUtFWmFDb2t6QW1rUVVKeTBCUkoyRk1JZ3NTbG9HaXpnTUFBUC8vWTRiMkpRQUFBR0JKUkVG
VTdkSXhBUUFnRE1SQTZvZ2QvN3BBUUJ5RWRQenQvenIzN0xzK3VxbXdYRHRoT2ZCS09HSFpBcjIw
REJSMUVzWWtzaUJoR1NqcUpJeEpaRUhDTWxEVVNSaVR5SUtFWmFDb2t6QW1rUVVKeTBCUkoyRk1J
Z3NTbG9HaXpnT2wzcERaQkJhMGh3QUFBQUJKUlU1RXJrSmdnZyI7CiB9CiAKLWZ1bmN0aW9uIGlt
YWdlQmxvYihiYXNlNjRTdHJpbmcgPSBzYW1wbGVCYXNlNjRQTkdJbWFnZURhdGEoKSkgeworZnVu
Y3Rpb24gc2FtcGxlQmFzZTY0UE5HSW1hZ2VEYXRhMigpIHsKKyAgICAvLyBBIDIwIGJ5IDIwIGJs
YWNrIHNxdWFyZS4KKyAgICByZXR1cm4gImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFV
Q0FZQUFBQ05pUjBOQUFBQUFYTlNSMElBcnM0YzZRQUFBSlpsV0VsbVRVMEFLZ0FBQUFnQUJBRWFB
QVVBQUFBQkFBQUFQZ0ViQUFVQUFBQUJBQUFBUmdFb0FBTUFBQUFCQUFJQUFJZHBBQVFBQUFBQkFB
QUFUZ0FBQUFBQUFBQ1FBQUFBQVFBQUFKQUFBQUFCQUFTU2hnQUhBQUFBRWdBQUFJU2dBUUFEQUFB
QUFRQUJBQUNnQWdBRUFBQUFBUUFBQUJTZ0F3QUVBQUFBQVFBQUFCUUFBQUFBUVZORFNVa0FBQUJU
WTNKbFpXNXphRzkwWHFWU3RnQUFBQWx3U0ZsekFBQVdKUUFBRmlVQlNWSWs4QUFBQWRScFZGaDBX
RTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlX
UnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWxoTlVDQkRiM0psSURZdU1DNHdJajRLSUNB
Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1
THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNEtJQ0FnSUNBZ1BISmtaanBFWlhOamNtbHdk
R2x2YmlCeVpHWTZZV0p2ZFhROUlpSUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZaWGhwWmowaWFI
UjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOWxlR2xtTHpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4Wlho
cFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K01qQThMMlY0YVdZNlVHbDRaV3hZUkdsdFpXNXphVzl1
UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBWYzJWeVEyOXRiV1Z1ZEQ1VFkzSmxaVzV6YUc5MFBDOWxl
R2xtT2xWelpYSkRiMjF0Wlc1MFBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmxFYVcxbGJu
TnBiMjQrTWpBOEwyVjRhV1k2VUdsNFpXeFpSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQThMM0prWmpw
RVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEtCa3Nz
L3dBQUFCeHBSRTlVQUFBQUFnQUFBQUFBQUFBS0FBQUFLQUFBQUFvQUFBQUtBQUFBNStqUmphZ0FB
QUN6U1VSQlZEZ1JkRklKRXNRZ0NKUC9QOXBOSUNuaXVFNUhJQWZGMmxncjlscDR0Q0pqQUdtTUVQ
RWR1VXV1UFBYZ1VXNVlKaXJTYUpKdlJTcmR4RGJHVHg1STc2bk1kdU9TMjNRM0pHN3V6QUJlelZ1
VkhNODhQMGpOU04vbkxZK2NERnhiZE1MaWlEdEZQRytBY0VNV2ZXbzZ0VkxWVTVmVVZyNjBaNjZj
UG4rUVJ0VHRDdEFGcnZOMTVHeURiWERkejhjRmdnYkV1ZkhYR0VzR2hacld4UkNxK00vZFROVkNu
MkgwUCsxblBrUW9mZ0FBQVAvL1M1T2lHZ0FBQUtsSlJFRlVmVklKRXNRZ0RETC9mN1NMQ2VEWnRU
TnF1RXh0bzBYcmVCNGpXZ1NvZ3dQNlpjaU1hQTB1SmFMU2RyQlYvb2xJOTM2QVBBNDZNdlBVYThv
Z1diYWltZ2hndlRNcUYrN1o0eFdZZ0RRTGk2QUhxbGVkUW91OEthNUt6TDYxTTdCYVpkS1FZNlRZ
Vmw0eFF3YXZqMGFvbElQQTJJcUNubGhxSVo1L0FKMVlhc2VhR1VKZEdwZytOMmJSemlteFZsVVdy
MzBtcWJ2cStGZVhEd3JEN1ZYS055UEZjLzBCZWpLZkNvcldvVm9BQUFBQVNVVk9SSzVDWUlJIjsK
K30KKworZnVuY3Rpb24gaW1hZ2VCbG9iKGJhc2U2NFN0cmluZyA9IHNhbXBsZUJhc2U2NFBOR0lt
YWdlRGF0YTEoKSkgewogICAgIHJldHVybiB0ZXh0QmxvYihhdG9iKGJhc2U2NFN0cmluZyksICJp
bWFnZS9wbmciKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9u
cwppbmRleCBhZTdlMTMxZDA2ZTU0NTI0ZjRjY2IxOWMwYjNmYjQ0ZDcxYTM2YzliLi40Njk0ODY4
MmIwYjQ3MmVjZThhMzA0ZTg0ODBiOTI3NmIyZDc4ZTNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTIwOSw2ICsxMjA5LDcgQEAgd2Via2l0Lm9yZy9i
LzIwMzEwMCBlZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtcmVhZC10ZXh0Lmh0bWwg
WyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8yMDMxMDAgZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xp
cGJvYXJkLXJlYWQtd2hpbGUtcGFzdGluZy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMjAz
MTAwIGVkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL3Nhbml0aXplLXdoZW4td3JpdGluZy1pbWFnZS5o
dG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMjAzMTAwIGVkaXRpbmcvYXN5bmMtY2xpcGJvYXJk
L3Nhbml0aXplLXdoZW4tcmVhZGluZy1tYXJrdXAuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9i
LzIwMzEwMCBlZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtcmVhZC13cml0ZS1pbWFn
ZXMuaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvMTQwNzgzIFsgUmVsZWFzZSBdIGVkaXRp
bmcvcGFzdGVib2FyZC9jb3B5LXN0YW5kYWxvbmUtaW1hZ2UuaHRtbCBbIEZhaWx1cmUgSW1hZ2VP
bmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTQwNzgzIFsgRGVidWcgXSBlZGl0aW5nL3Bhc3Rl
Ym9hcmQvY29weS1zdGFuZGFsb25lLWltYWdlLmh0bWwgWyBTa2lwIF0gIyBEZWJ1ZyBBc3NlcnRp
b24K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400215</attachid>
            <date>2020-05-25 12:26:47 -0700</date>
            <delta_ts>2020-05-25 12:40:52 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-212339-20200525122646.patch</filename>
            <type>text/plain</type>
            <size>48130</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjA4ODJhMjI0ZDc0YWUz
MTA3OGUwNGJiNmE5MmIwNDFkMDZlNDBlNy4uY2NjYzY3NTFiMmZkNmNhYWExOGFmNjQxOGNkMDJj
NjY2Y2ExZDYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDIwLTA1LTI0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlwYm9hcmQg
QVBJXSBTdXBwb3J0IHJlYWRpbmcgImltYWdlL3BuZyIgb24gQ2xpcGJvYXJkSXRlbQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzM5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MzU4ODk1Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIHJlYWRpbmcgImltYWdlL3BuZyIg
ZGF0YSB2aWEgQ2xpcGJvYXJkSXRlbS5nZXRUeXBlKCkuIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgICAgIFRlc3RzOiAgQ2xpcGJvYXJkVGVzdHMuQ29udmVydFRJRkZUb1BOR1do
ZW5QYXN0aW5nCisgICAgICAgICAgICAgICAgZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJv
YXJkLXJlYWQtd3JpdGUtaW1hZ2VzLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OmdldFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjp1cGRhdGVTZXNzaW9uVmFsaWRpdHkp
OgorCisgICAgICAgIEZhY3RvciBvdXQgbG9naWMgZm9yIGludmFsaWRhdGluZyB0aGUgYENsaXBi
b2FyZGAncyBhY3RpdmUgYFBhc3RlYm9hcmRgIG9iamVjdCBpbnRvIGEgaGVscGVyIG1ldGhvZC4g
VGhpcyBpcworICAgICAgICBpbnZva2VkIGFmdGVyIHJlYWRpbmcgZGF0YSBmcm9tIHRoZSBjbGlw
Ym9hcmQsIGFuZCB2ZXJpZmllcyB0aGF0IHRoZSBjaGFuZ2VDb3VudCBvZiB0aGUgcGFzdGVib2Fy
ZCBpcyBzdGlsbCB0aGUKKyAgICAgICAgc2FtZSBhcyBpdCB3YXMgdXBvbiBpbml0aWFsbHkgcmVh
ZGluZyB0aGUgY29udGVudHMgb2YgdGhlIGNsaXBib2FyZC4gSWYgdGhlIGNsaXBib2FyZCBjb250
ZW50cyBjaGFuZ2VkLCB3ZQorICAgICAgICBpbnZhbGlkYXRlIHRoZSBzZXNzaW9uLCBhbmQgYENs
aXBib2FyZGAgaXMgc3Vic2VxdWVudGx5IGRlbmllZCBwYXN0ZWJvYXJkIGFjY2VzcyAodW50aWwg
dGhlIG5leHQgdGltZSB0aGUgdXNlcgorICAgICAgICBleHBsaWNpdGx5IGdyYW50cyBwcm9ncmFt
bWF0aWMgcGFzdGVib2FyZCBhY2Nlc3MpLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHN0ZXAg
aXMgaGVyZSBmb3IgY29ycmVjdG5lc3MgcmF0aGVyIHRoYW4gc2VjdXJpdHkuIFdoaWxlIGl0IGlz
IHRydWUgdGhhdCBhIGNvbXByb21pc2VkIHdlYgorICAgICAgICBwcm9jZXNzIGNvdWxkIGZha2Ug
dGhlIGNoYW5nZUNvdW50IGF0IGFueSBnaXZlbiBtb21lbnQsIG90aGVyIGZhaXJseSByZWNlbnQg
Y2hhbmdlcyBhcm91bmQgV2ViUGFzdGVib2FyZFByb3h5IGluCisgICAgICAgIHRoZSBVSSBwcm9j
ZXNzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhpcyBmYWN0IHRv
IGFyYml0cmFyaWx5IHJlYWQgY29udGVudCBmcm9tIHRoZSBzeXN0ZW0KKyAgICAgICAgcGFzdGVi
b2FyZC4gSW5zdGVhZCBvZiBzaW1wbHkgcmVhZGluZyB0aGUgZW1wdHkgc3RyaW5nLCB0aGlzIGlu
dmFsaWRhdGlvbiBlbnN1cmVzIHRoYXQgd2UgYWN0dWFsbHkgcmVqZWN0IHRoZQorICAgICAgICBw
cm9taXNlIHJldHVybmVkIGJ5IHRoZSBhc3luYyBjbGlwYm9hcmQgQVBJLgorCisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmg6CisgICAgICAgICogTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwOiBBZGRlZC4KKworICAgICAg
ICBBZGQgYSBQYXN0ZWJvYXJkRmlsZVJlYWRlciBzdWJjbGFzcyB0aGF0IGlzIHJlc3BvbnNpYmxl
IGZvciBzYW5pdGl6aW5nIGltYWdlIGRhdGEgZnJvbSB0aGUgcGFzdGVib2FyZCBpbnRvCisgICAg
ICAgIGRhdGEgdGhhdCBtYXkgYmUgZXhwb3NlZCB0byB0aGUgcGFnZSB2aWEgY2xpcGJvYXJkIEFQ
SS4gT24gYm90aCBtYWNPUyBhbmQgaU9TLCB0aGlzIGVuc3VyZXMgdGhhdCBwb3RlbnRpYWxseQor
ICAgICAgICBzZW5zaXRpdmUgRVhJRiBkYXRhIGlzIHN0cmlwcGVkIHZpYSBjb252ZXJzaW9uIHRv
IHRoZSBwbGF0Zm9ybSBpbWFnZSB0eXBlIGFuZCBiYWNrLiBPbiBtYWNPUywgdGhpcyBhZGRpdGlv
bmFsbHkKKyAgICAgICAgYWxsb3dzIHVzIHRvIGhhbmRsZSB0cmFuc2NvZGluZyBUSUZGIGRhdGEg
b24gdGhlIHBhc3RlYm9hcmQgdG8gUE5HICh0aGlzIGlzIGNvdmVyZWQgYnkgdGhlIG5ldyBBUEkg
dGVzdCkuCisKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKToKKworICAgICAgICBBZGQgYSBzdHViIGltcGxlbWVudGF0aW9uIGZvciBub24tQ29jb2Eg
cGxhdGZvcm1zIGZvciBub3csIHdoaWNoIGRvbid0IGltcGxlbWVudCB0aGlzIHBhcnQgb2YgdGhl
IEFQSS4KKworICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnNob3VsZFJl
YWRCdWZmZXIgY29uc3QpOgorCisgICAgICAgIEFkZCBhIG5ldyBob29rIHRvIHNraXAgb3ZlciBj
ZXJ0YWluIHR5cGVzIHdoZW4gcmVhZGluZyBwYXN0ZWJvYXJkIGRhdGEgaW50byBGaWxlcy4gSW4g
cGFydGljdWxhciwKKyAgICAgICAgYENsaXBib2FyZEltYWdlUmVhZGVyYCBza2lwcyBvdmVyIGFu
eSBNSU1FIHR5cGUgdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGUgTUlNRSB0eXBlIHNwZWNpZmllZCAo
Zm9yIG5vdywgdGhpcyBpcworICAgICAgICBsaW1pdGVkIHRvICJpbWFnZS9wbmciLCBidXQgbWF5
IGJlIGV4dGVuZGVkIHRvIGluY2x1ZGUgbW9yZSBpbWFnZSB0eXBlcyBpbiB0aGUgZnV0dXJlIGFm
dGVyIHdlIGltcGxlbWVudCBtb3JlCisgICAgICAgIHRyYW5zY29kaW5nIGxvZ2ljKS4KKworICAg
ICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OkNsaXBib2FyZElt
YWdlUmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjp0YWtl
UmVzdWx0KToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJJT1MubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1h
Z2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorCisgICAgICAgIEFkZCBpT1Mtc3BlY2lmaWMgYChQTkcp
ID0+IFBOR2AgdHJhbnNjb2RpbmcgbG9naWMuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorCisgICAgICAgIEFk
ZCBtYWNPUy1zcGVjaWZpYyBgKFBORywgVElGRikgPT4gUE5HYCB0cmFuc2NvZGluZyBsb2dpYy4K
KworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRGaWxlUmVh
ZGVyOjpzaG91bGRSZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Q
YXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6c2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZUZvclBsYXRmb3JtVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjp3ZWJTYWZlVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKworICAgICAgICBF
eHBvc2UgImltYWdlL3BuZyIgYXMgb25lIG9mIHRoZSByZWFkYWJsZSBwYXN0ZWJvYXJkIHR5cGVz
IG9uIGlPUyB3aGVuIHVzaW5nIHRoZSBhc3luYyBjbGlwYm9hcmQgQVBJLiBGb3Igc29tZQorICAg
ICAgICByZWFzb24sIHRoaXMgYWRqdXN0bWVudCB3YXMgbWFkZSBvbiBtYWNPUywgYnV0IHdhc24n
dCBkb25lIG9uIGlPUywgd2hpY2ggbGVkIHRvIGEgbWlzc2luZyAiaW1hZ2UvcG5nIiB0eXBlIHdo
ZW4KKyAgICAgICAgYXNraW5nIGZvciBgQ2xpcGJvYXJkSXRlbS50eXBlc2AuCisKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3Jp
dGUgY29uc3QpOgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciB3cml0aW5nICJpbWFnZS9wbmcg
ImRhdGEgdG8gdGhlIHN5c3RlbSBwYXN0ZWJvYXJkIChub3RlIHRoYXQgdGhpcyBkYXRhIGhhcyBi
ZWVuIHNhbml0aXplZAorICAgICAgICBhbHJlYWR5LCBhcyBpdCBoYXMgYmVlbiBwcm9jZXNzZWQg
dGhyb3VnaCBgQ2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKClg
KS4gV2Ugc2ltcGx5IG5lZWRlZAorICAgICAgICB0byB1c2UgYGZvckVhY2hQbGF0Zm9ybVN0cmlu
Z09yQnVmZmVyYCBpbnN0ZWFkIG9mIGp1c3QgYGZvckVhY2hQbGF0Zm9ybVN0cmluZ2Agd2hlbiB3
cml0aW5nIHRoZSBjdXN0b20KKyAgICAgICAgcGFzdGVib2FyZCBkYXRhLgorCisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25MaXN0KToKKwogMjAyMC0wNS0y
MyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
c29tZSBtaXNzaW5nIGluY2x1ZGVzIGR1ZSB0byB1bmlmaWVkIHNvdXJjZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCmluZGV4IDZjZWI5YjY3OWY2YzE3ZDMxZTEyOTcyYzBmOTEwN2E5MDRmNjA5MTYuLmQzNzli
MTM0NmE5ZmU3YTY2ODlmNjI3MTk1YzBjZTk4MjAxNDhlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDIwLTA1LTI0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgorCisgICAgICAgIFtDbGlwYm9hcmQgQVBJXSBTdXBwb3J0IHJlYWRpbmcgImlt
YWdlL3BuZyIgb24gQ2xpcGJvYXJkSXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzM5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzU4ODk1
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb2Z0
IGxpbmsgYFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbmAuCisKKyAgICAgICAgKiBwYWwvaW9zL1VJ
S2l0U29mdExpbmsuaDoKKyAgICAgICAgKiBwYWwvaW9zL1VJS2l0U29mdExpbmsubW06CisKIDIw
MjAtMDUtMjIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtBcHBs
ZSBQYXldIEFkZCBuZXcgQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gbWVtYmVycwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZC5jcHAKaW5kZXggNGRlNmQ0MTUxNTVhOTdkMDJjMWJlYTk2ODAzZDljMmI3ZmU0YWZkOC4uOGVh
MTdlYjNlOGRmNDRmY2EzMWFmMDNjMGIzNDAyZDZjNzIyYzQ5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCiAK
KyNpbmNsdWRlICJDbGlwYm9hcmRJbWFnZVJlYWRlci5oIgogI2luY2x1ZGUgIkNsaXBib2FyZEl0
ZW0uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0yMTQs
NiArMjE1LDE3IEBAIHZvaWQgQ2xpcGJvYXJkOjpnZXRUeXBlKENsaXBib2FyZEl0ZW0mIGl0ZW0s
IGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVycmVkUHJvCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKKyAgICBpZiAodHlwZSA9PSAiaW1hZ2UvcG5nIl9zKSB7CisgICAgICAgIENsaXBib2Fy
ZEltYWdlUmVhZGVyIGltYWdlUmVhZGVyIHsgdHlwZSB9OworICAgICAgICBhY3RpdmVQYXN0ZWJv
YXJkKCkucmVhZChpbWFnZVJlYWRlciwgaXRlbUluZGV4KTsKKyAgICAgICAgYXV0byBpbWFnZUJs
b2IgPSBpbWFnZVJlYWRlci50YWtlUmVzdWx0KCk7CisgICAgICAgIGlmICh1cGRhdGVTZXNzaW9u
VmFsaWRpdHkoKSA9PSBTZXNzaW9uSXNWYWxpZDo6WWVzICYmIGltYWdlQmxvYikKKyAgICAgICAg
ICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihpbWFnZUJsb2IucmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChO
b3RBbGxvd2VkRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgU3RyaW5nIHJl
c3VsdEFzU3RyaW5nOwogCiAgICAgaWYgKHR5cGUgPT0gInRleHQvdXJpLWxpc3QiX3MpIHsKQEAg
LTIzMywxOSArMjQ1LDI2IEBAIHZvaWQgQ2xpcGJvYXJkOjpnZXRUeXBlKENsaXBib2FyZEl0ZW0m
IGl0ZW0sIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVycmVkUHJvCiAgICAgICAgIHJlc3Vs
dEFzU3RyaW5nID0gV1RGTW92ZShtYXJrdXBSZWFkZXIubWFya3VwKTsKICAgICB9CiAKLSAgICAv
LyBGSVhNRTogU3VwcG9ydCByZWFkaW5nICJpbWFnZS9wbmciIGFzIHdlbGwgYXMgY3VzdG9tIGRh
dGEuCi0gICAgLy8gRklYTUU6IEluc3RlYWQgb2YgY2hlY2tpbmcgY2hhbmdlQ291bnQgaGVyZSwg
d2Ugc2hvdWxkIHNlbmQgdGhlIGNoYW5nZUNvdW50IG92ZXIgdG8gdGhlIFVJIHByb2Nlc3MgdG8g
YmUgdmV0dGVkCi0gICAgLy8gd2hlbiBhdHRlbXB0aW5nIHRvIHJlYWQgdGhlIGRhdGEgaW4gdGhl
IGZpcnN0IHBsYWNlLgotICAgIGlmIChtX2FjdGl2ZVNlc3Npb24tPmNoYW5nZUNvdW50ICE9IGFj
dGl2ZVBhc3RlYm9hcmQoKS5jaGFuZ2VDb3VudCgpKSB7Ci0gICAgICAgIG1fYWN0aXZlU2Vzc2lv
biA9IFdURjo6bnVsbG9wdDsKKyAgICAvLyBGSVhNRTogU3VwcG9ydCByZWFkaW5nIGN1c3RvbSBk
YXRhLgorICAgIGlmICh1cGRhdGVTZXNzaW9uVmFsaWRpdHkoKSA9PSBTZXNzaW9uSXNWYWxpZDo6
Tm8gfHwgcmVzdWx0QXNTdHJpbmcuaXNOdWxsKCkpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KE5vdEFsbG93ZWRFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIXJl
c3VsdEFzU3RyaW5nLmlzTnVsbCgpKQotICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVy
ZmFjZTxCbG9iPj4oQ2xpcGJvYXJkSXRlbTo6YmxvYkZyb21TdHJpbmcocmVzdWx0QXNTdHJpbmcs
IHR5cGUpKTsKLSAgICBlbHNlCi0gICAgICAgIHByb21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJy
b3IpOworICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+PihDbGlwYm9hcmRJ
dGVtOjpibG9iRnJvbVN0cmluZyhyZXN1bHRBc1N0cmluZywgdHlwZSkpOworfQorCitDbGlwYm9h
cmQ6OlNlc3Npb25Jc1ZhbGlkIENsaXBib2FyZDo6dXBkYXRlU2Vzc2lvblZhbGlkaXR5KCkKK3sK
KyAgICBpZiAoIW1fYWN0aXZlU2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIFNlc3Npb25Jc1ZhbGlk
OjpObzsKKworICAgIGlmIChtX2FjdGl2ZVNlc3Npb24tPmNoYW5nZUNvdW50ICE9IGFjdGl2ZVBh
c3RlYm9hcmQoKS5jaGFuZ2VDb3VudCgpKSB7CisgICAgICAgIG1fYWN0aXZlU2Vzc2lvbiA9IFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIFNlc3Npb25Jc1ZhbGlkOjpObzsKKyAgICB9CisK
KyAgICByZXR1cm4gU2Vzc2lvbklzVmFsaWQ6OlllczsKIH0KIAogdm9pZCBDbGlwYm9hcmQ6Ondy
aXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q2xpcGJvYXJkSXRlbT4+JiBpdGVtcywgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuaAppbmRleCA0MGE2YjQ2MTAyM2JiNTcxOGFlOWM1OWM5
MjEyNjYyMjUxNGI2MmU0Li4zNmRlNjJlMmI4ODZmOTcwOTcwNDJiOGQ1NTFmZjc1OTBkZjljNGNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmQuaApAQCAtNzcsNiArNzcsOSBAQCBwcml2YXRlOgogCiAgICAgUGFzdGVib2FyZCYgYWN0
aXZlUGFzdGVib2FyZCgpOwogCisgICAgZW51bSBjbGFzcyBTZXNzaW9uSXNWYWxpZCB7IE5vLCBZ
ZXMgfTsKKyAgICBTZXNzaW9uSXNWYWxpZCB1cGRhdGVTZXNzaW9uVmFsaWRpdHkoKTsKKwogICAg
IGNsYXNzIEl0ZW1Xcml0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJdGVtV3JpdGVyPiB7CiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgUmVmPEl0ZW1Xcml0ZXI+IGNyZWF0ZShDbGlwYm9hcmQm
IGNsaXBib2FyZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0YjBkOWViZmJlOTJlZTgzZTY3NmJmN2Q1Mjhh
OGFmYzcxZjBlOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKQEAgLTAsMCArMSw0NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDbGlwYm9hcmRJbWFn
ZVJlYWRlci5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisjaWYgIVBMQVRGT1JNKENPQ09BKQorCit2b2lkIENsaXBib2FyZEltYWdlUmVh
ZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworI2VuZGlmIC8vICFQTEFU
Rk9STShDT0NPQSkKKworYm9vbCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6c2hvdWxkUmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAoreworICAgIHJldHVybiAhbV9yZXN1bHQg
JiYgbV9taW1lVHlwZSA9PSBtaW1lVHlwZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEltYWdlUmVhZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg4ODU0MWMzNzQwNWNkOGNiYmFl
ZGI0MzUzMjY0Mjg1ZjQwMjUxZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTAsMCArMSw1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQmxvYi5oIgorI2lu
Y2x1ZGUgIlBhc3RlYm9hcmQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFy
ZWRCdWZmZXI7CisKK3N0cnVjdCBDbGlwYm9hcmRJbWFnZVJlYWRlciA6IFBhc3RlYm9hcmRGaWxl
UmVhZGVyIHsKKyAgICBDbGlwYm9hcmRJbWFnZVJlYWRlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQorICAgICAgICA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyKCkKKyAgICAgICAgLCBtX21pbWVUeXBl
KG1pbWVUeXBlKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8QmxvYj4gdGFrZVJlc3VsdCgp
IHsgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9yZXN1bHQsIG51bGxwdHIpOyB9CisKK3ByaXZhdGU6
CisgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWwgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQorCisgICAgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYp
IGNvbnN0IGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworCisgICAg
U3RyaW5nIG1fbWltZVR5cGU7CisgICAgUmVmUHRyPEJsb2I+IG1fcmVzdWx0OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9T
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjgzNDIyYTEwMjk4OTc2YzRlMGRjMjA3ZTZkYzMzMGJmNDMxNjYzYWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KQEAgLTAsMCArMSw0NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ2xpcGJvYXJkSW1hZ2VSZWFkZXIu
aCIKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5o
IgorI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBpZiAo
bV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgeworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHRO
UyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdS
ZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCisgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6
OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEpLCBtX21pbWVUeXBlKTsKKyAgICB9
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzcyYTA3ZmVjMDliZTNjZDgzYTA4OWIxYjA1MjZmNmNjM2UxNWI5NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9h
cmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJDbGlwYm9hcmRJbWFnZVJlYWRlci5oIgorCisjaWYgUExB
VEZPUk0oTUFDKQorCisjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGlm
IChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9w
dE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKKyAgICAgICAgaWYgKGF1dG8gYml0bWFwRGF0YSA9IHJldGFpblB0cihbaW1hZ2Ug
VElGRlJlcHJlc2VudGF0aW9uXSkpIHsKKyAgICAgICAgICAgIGF1dG8gYml0bWFwUmVwcmVzZW50
YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOmJp
dG1hcERhdGEuZ2V0KCldKTsKKyAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFtiaXRtYXBSZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVz
aW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XSksIG1fbWlt
ZVR5cGUpOworICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtp
dFNvZnRMaW5rLmgKaW5kZXggMGFkYzE5MjI5MGQ1ZmYxZWM5ZTEwYjZlNjVhMDE2MTQ5OTYwZWU5
NC4uNDhlMmM1ZDg4NjYxYTkyZDc2YTJmOWJkNGExMmQ0M2M4MDJkOWQzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsuaApAQCAtNzAsNSArNzAsNiBAQCBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFVJS2l0LCBVSUFjY2Vzc2liaWxpdHlQb3N0
Tm90aWZpY2F0aW9uLCB2b2lkLAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBV
SUtpdCwgVUlHcmFwaGljc0dldEN1cnJlbnRDb250ZXh0LCBDR0NvbnRleHRSZWYsICh2b2lkKSwg
KCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFVJS2l0LCBVSUdyYXBoaWNz
UG9wQ29udGV4dCwgdm9pZCwgKHZvaWQpLCAoKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFBBTCwgVUlLaXQsIFVJR3JhcGhpY3NQdXNoQ29udGV4dCwgdm9pZCwgKENHQ29udGV4dFJl
ZiBjb250ZXh0KSwgKGNvbnRleHQpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBVSUtpdCwgVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uLCBOU0RhdGEgKiwgKFVJSW1hZ2UgKmlt
YWdlKSwgKGltYWdlKSkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlL
aXRTb2Z0TGluay5tbQppbmRleCA5OWM4NTA2NmQ2MWE0NjIwYzgwMzZhNWViNzgzZGMwYzRjNjUx
OGY0Li41MzliYzY0ODZmNDYwN2YyNjg1ZjA4MGJlOWQyZTJkMWYwMjJjMTk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsubW0KQEAgLTcwLDUgKzcwLDYgQEAg
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlBY2Nlc3NpYmlsaXR5
UG9zdE5vdGlmaWNhdGlvbiwgdm9pZCwKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBB
TCwgVUlLaXQsIFVJR3JhcGhpY3NHZXRDdXJyZW50Q29udGV4dCwgQ0dDb250ZXh0UmVmLCAodm9p
ZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlHcmFw
aGljc1BvcENvbnRleHQsIHZvaWQsICh2b2lkKSwgKCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRShQQUwsIFVJS2l0LCBVSUdyYXBoaWNzUHVzaENvbnRleHQsIHZvaWQsIChDR0NvbnRl
eHRSZWYgY29udGV4dCksIChjb250ZXh0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNF
KFBBTCwgVUlLaXQsIFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbiwgTlNEYXRhICosIChVSUltYWdl
ICppbWFnZSksIChpbWFnZSkpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBjY2Q2NzI4Yjg0
ZTQ3YTRlZDQxMTg3MjE5Y2M5NTAxNjcwNDE3Y2I3Li4xODQzMzcyN2Y4ZDk0YzcxZTI2Yzk3OGFk
NDllYzc1NWNkZTQ1NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMzQsNiArMzQsNyBAQCBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKICNlbmRpZgogCiBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCitNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJbWFnZVJlYWRlci5jcHAKIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW0uY3BwCiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlLmNwcAogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9h
cmREYXRhU291cmNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYjg1YWQ2NmU3ZTYy
ZTU3ZGNjNGFlNjlmMjkwOGZmOTE2ZDY4MjU3YS4uNmNkMTc0MjNmYzAyMWFiYzYyNGU3NWNmMmEz
ZDhjYjI5ZDNmYWQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yMSw2ICsyMSw5IEBA
CiAvLyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCiAvLyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
K01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQor
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisK
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCiAKIE1vZHVs
ZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA0ODlhZTQ4NGJl
NDgyOWRmZDdlYjI4ODBkYzg1NjkzNGIzOGU5YmMuLjk2ODcxNGZjNjU3NDJhNjE2M2ExZDJhZjIy
OWViZGIwOGEzYjY0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTUwODQsNiArNTA4NCw3IEBACiAJCUY0QjQyMkM0MjIwQzA1
NjgwMDlFMUU3RCAvKiBET01QYXN0ZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRCNDIyQzIyMjBDMDAwMDAwOUUxRTdEIC8qIERPTVBhc3Rl
QWNjZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRjRCRkI5ODUxRTFEREY5QjAwODYyQzI0IC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyBpbiBD
b3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4Mzg5ODMx
RTFEREYyQjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAqLzsgfTsKIAkJRjRCRkI5
ODYxRTFEREY5QjAwODYyQzI0IC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyBpbiBDb3B5IFNjcmlw
dHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4Mzg5ODQxRTFEREYyQjAw
NzZCN0VBIC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyAqLzsgfTsKKwkJRjRDNUYyMDcyNDc5RTg4
MjAwRTlCNEY1IC8qIENsaXBib2FyZEltYWdlUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEM1RjIwNTI0NzlFN0VFMDBFOUI0RjUgLyogQ2xp
cGJvYXJkSW1hZ2VSZWFkZXIuaCAqLzsgfTsKIAkJRjREMDc1NTgyMzREODIyRDAwODgxRTczIC8q
IENsaXBib2FyZEl0ZW1EYXRhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDZDNDQ3QTIzNDY1MzVFMDAzOUE3OUQgLyogQ2xpcGJvYXJkSXRl
bURhdGFTb3VyY2UuaCAqLzsgfTsKIAkJRjREMDc1NTkyMzREODIzMzAwODgxRTczIC8qIENsaXBi
b2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2QzQ0ODAyMzQ2NTQ3QTAwMzlBNzlEIC8qIENsaXBib2Fy
ZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oICovOyB9OwogCQlGNEQ0M0Q2NjIxODgwMzhCMDBF
Q0VDQUMgLyogU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ0M0Q2NDIxODgwMkU2MDBFQ0VDQUMgLyogU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTE1NzkyLDYgKzE1NzkzLDEwIEBACiAJCUY0OTc4Njg3MUZGNDVG
QTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJkSXRlbUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVi
b2FyZEl0ZW1JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OUU5OEU0MjFE
RUU2QzEwMDlBRTU1RSAvKiBFZGl0QWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVkaXRB
Y3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEI0MjJDMjIyMEMwMDAw
MDA5RTFFN0QgLyogRE9NUGFzdGVBY2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NUGFzdGVBY2Nl
c3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRDNUYyMDUyNDc5RTdFRTAwRTlC
NEY1IC8qIENsaXBib2FyZEltYWdlUmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBib2FyZElt
YWdlUmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QzVGMjA4MjQ3OUU5
QzgwMEU5QjRGNSAvKiBDbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDbGlwYm9hcmRJbWFnZVJlYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUY0QzVGMjEzMjQ3OUZDNEUwMEU5QjRGNSAvKiBDbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IENsaXBib2FyZEltYWdlUmVh
ZGVyTWFjLm1tOyBwYXRoID0gbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNEM1RjIxNjI0NzlGQ0QxMDBFOUI0RjUgLyogQ2xpcGJv
YXJkSW1hZ2VSZWFkZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBDbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbTsgcGF0aCA9IGlvcy9DbGlwYm9hcmRJbWFn
ZVJlYWRlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRENDNENjQyMTg4
MDJFNjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjREOTgxN0QyMTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFuZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjREOTgxN0UyMTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29t
bWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc5MDUsOSArMjc5MTAsMTMgQEAKIAkJRjQ0
MEU3NkEyMzNEOTNDODAwNjNGOUFCIC8qIGFzeW5jLWNsaXBib2FyZCAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRjRDNUYyMTUyNDc5RkNBRjAwRTlCNEY1
IC8qIGlvcyAqLywKKwkJCQlGNEM1RjIxMjI0NzlGQzQwMDBFOUI0RjUgLyogbWFjICovLAogCQkJ
CUY0NDBFNzZFMjMzRDk0RDMwMDYzRjlBQiAvKiBDbGlwYm9hcmQuY3BwICovLAogCQkJCUY0NDBF
NzcyMjMzRDk0RDUwMDYzRjlBQiAvKiBDbGlwYm9hcmQuaCAqLywKIAkJCQlGNDQwRTc3NDIzM0Q5
NEQ2MDA2M0Y5QUIgLyogQ2xpcGJvYXJkLmlkbCAqLywKKwkJCQlGNEM1RjIwNTI0NzlFN0VFMDBF
OUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCAqLywKKwkJCQlGNEM1RjIwODI0NzlFOUM4
MDBFOUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwICovLAogCQkJCUY0NDBFNzc1MjMz
RDk0RDYwMDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVtLmNwcCAqLywKIAkJCQlGNDQwRTc3MDIzM0Q5
NEQ0MDA2M0Y5QUIgLyogQ2xpcGJvYXJkSXRlbS5oICovLAogCQkJCUY0NDBFNzc3MjMzRDk0RDcw
MDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVtLmlkbCAqLywKQEAgLTI3OTMyLDYgKzI3OTQxLDIyIEBA
CiAJCQluYW1lID0gRWRpdGluZ0hpc3Rvcnk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwog
CQl9OworCQlGNEM1RjIxMjI0NzlGQzQwMDBFOUI0RjUgLyogbWFjICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlGNEM1RjIxMzI0NzlGQzRFMDBFOUI0RjUg
LyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IG1hYzsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUY0QzVGMjE1MjQ3OUZDQUYwMEU5
QjRGNSAvKiBpb3MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCUY0QzVGMjE2MjQ3OUZDRDEwMEU5QjRGNSAvKiBDbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5t
bSAqLywKKwkJCSk7CisJCQluYW1lID0gaW9zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKIAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNBIC8qIGNzcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0zMzU2Nyw2ICszMzU5Miw3IEBACiAJCQkJ
QUE0NzhBN0YxNkNENzBDMzAwN0QxQkI0IC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDNFRjQ0ODE5MTc5MTVDMDAwMzQxODQgLyogV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTAy
NUVEMzFGOTlGMENFMDA0QTI1MEMgLyogV2ViQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGNEM1RjIwNzI0NzlFODgyMDBFOUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTcxMDhFRUU2MjQxOEVENUEwMDVDM0RBNyAvKiBXZWJBbmltYXRpb25U
eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzEzMjQ0NTEyMDEwOURBNTAwQUU3RkIyIC8qIFdl
YkFuaW1hdGlvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4NTM2ODQxRjRFNDgx
NDAwRkUwOTFCIC8qIFdlYkFyY2hpdmVSZXNvdXJjZUZyb21OU0F0dHJpYnV0ZWRTdHJpbmcuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDFiODJk
ZDY1YmFhZjNkNGQxNDQxMjI1ZWQyODEzNzE1Y2QyMzY0YzUuLmRjYzBhMzkyYjMwZGViMmI3OTM1
OGFkMGViZTdlNDkxNmE5ZmJmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgK
QEAgLTE2Nyw2ICsxNjcsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZFBsYWluVGV4dCB7CiBzdHJ1Y3Qg
UGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZpcnR1YWwgflBhc3RlYm9hcmRGaWxlUmVhZGVy
KCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5n
JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYg
LyogdHlwZSAqLykgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCByZWFk
QnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIApAQCAtMjExLDcgKzIxMiw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRQbGFpblRleHQm
LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5ID0gUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeTo6
QWxsb3dVUkwsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0gV1RGOjpudWxsb3B0KTsKICAg
ICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJl
YWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5ID0gV2ViQ29udGVudFJlYWRpbmdQb2xpY3k6
OkFueVR5cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0gV1RGOjpudWxsb3B0KTsKLSAg
ICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYp
OworICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRGaWxlUmVh
ZGVyJiwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXggPSBXVEY6Om51bGxvcHQpOwogCiAgICAg
dmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IENvbG9yJik7CiAgICAgdmly
dHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRl
eCBiYTFhYzFjZmVmNTk5NDZiNzg3NzlmNGFlNDViMzcyMmEzYWFlN2ZhLi4yYWYwYjUyZjIzZWE5
M2I5Nzc5YjQwNjMyNTg0ZWQ5MzYzOTNiZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0yMTUsMjUgKzIxNSwyMiBAQCBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZC
dWZmZXIpCiB9CiAjZW5kaWYKIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRGaWxl
UmVhZGVyJiByZWFkZXIpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFk
ZXImIHJlYWRlciwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCiB7Ci0gICAgYXV0byBmaWxl
bmFtZXMgPSByZWFkRmlsZVBhdGhzKCk7Ci0gICAgaWYgKCFmaWxlbmFtZXMuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBmaWxlbmFtZXMpCi0gICAgICAgICAgICBy
ZWFkZXIucmVhZEZpbGVuYW1lKGZpbGVuYW1lKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlmICgh
aXRlbUluZGV4KSB7CisgICAgICAgIGF1dG8gZmlsZW5hbWVzID0gcmVhZEZpbGVQYXRocygpOwor
ICAgICAgICBpZiAoIWZpbGVuYW1lcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0
byYgZmlsZW5hbWUgOiBmaWxlbmFtZXMpCisgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRGaWxl
bmFtZShmaWxlbmFtZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAK
LSAgICBhdXRvIGFsbEluZm8gPSBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oKTsKLSAgICBpZiAoIWFs
bEluZm8pCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoc2l6ZV90IGl0ZW1JbmRleCA9IDA7
IGl0ZW1JbmRleCA8IGFsbEluZm8tPnNpemUoKTsgKytpdGVtSW5kZXgpIHsKLSAgICAgICAgYXV0
byYgaW5mbyA9IGFsbEluZm8tPmF0KGl0ZW1JbmRleCk7CisgICAgYXV0byByZWFkQnVmZmVyQXRJ
bmRleCA9IFsmXShjb25zdCBQYXN0ZWJvYXJkSXRlbUluZm8mIGluZm8sIHNpemVfdCBpdGVtSW5k
ZXgpIHsKICAgICAgICAgZm9yIChhdXRvIGNvY29hVHlwZSA6IGluZm8ucGxhdGZvcm1UeXBlc0J5
RmlkZWxpdHkpIHsKICAgICAgICAgICAgIGF1dG8gaW1hZ2VUeXBlID0gY29jb2FUeXBlVG9JbWFn
ZVR5cGUoY29jb2FUeXBlKTsKICAgICAgICAgICAgIGF1dG8qIG1pbWVUeXBlID0gaW1hZ2VUeXBl
VG9NSU1FVHlwZShpbWFnZVR5cGUpOwotICAgICAgICAgICAgaWYgKCFtaW1lVHlwZSkKKyAgICAg
ICAgICAgIGlmICghbWltZVR5cGUgfHwgIXJlYWRlci5zaG91bGRSZWFkQnVmZmVyKG1pbWVUeXBl
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0g
cmVhZEJ1ZmZlcihpdGVtSW5kZXgsIGNvY29hVHlwZSk7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAt
MjQ1LDYgKzI0MiwxNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFk
ZXImIHJlYWRlcikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQorICAgIH07CisKKyAgICBpZiAoaXRlbUluZGV4KSB7CisgICAgICAgIGlmIChhdXRvIGlu
Zm8gPSBwYXN0ZWJvYXJkSXRlbUluZm8oKml0ZW1JbmRleCkpCisgICAgICAgICAgICByZWFkQnVm
ZmVyQXRJbmRleCgqaW5mbywgKml0ZW1JbmRleCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoYXV0byBhbGxJbmZvID0gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCkpIHsKKyAgICAg
ICAgZm9yIChzaXplX3QgaXRlbUluZGV4ID0gMDsgaXRlbUluZGV4IDwgYWxsSW5mby0+c2l6ZSgp
OyArK2l0ZW1JbmRleCkKKyAgICAgICAgICAgIHJlYWRCdWZmZXJBdEluZGV4KGFsbEluZm8tPmF0
KGl0ZW1JbmRleCksIGl0ZW1JbmRleCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBkMmYzMjIw
MDQ3ZjZmMzQzNTM1NmM5Nzg3NTEwMzhlNmI4YjBmMTlkLi5mZDNhODVhZTBhYjYwZjk0OWEyNmJm
MmQ4YzAyN2E3Zjk1NTdhN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMg
Ym9vbCBzaG91bGRUcmVhdEF0TGVhc3RPbmVUeXBlQXNGaWxlKE5TQXJyYXk8TlNTdHJpbmcgKj4g
KnBsYXRmb3JtVHlwZXMpCiAKICNpZiBQQVNURUJPQVJEX1NVUFBPUlRTX0lURU1fUFJPVklERVJT
CiAKLXN0YXRpYyBjb25zdCBjaGFyICpzYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlRm9yUGxh
dGZvcm1UeXBlKGNvbnN0IFN0cmluZyYgcGxhdGZvcm1UeXBlKQorc3RhdGljIGNvbnN0IGNoYXIg
KnNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGVGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5n
JiBwbGF0Zm9ybVR5cGUsIFBsYXRmb3JtUGFzdGVib2FyZDo6SW5jbHVkZUltYWdlVHlwZXMgaW5j
bHVkZUltYWdlVHlwZXMpCiB7CiAgICAgYXV0byBjZlR5cGUgPSBwbGF0Zm9ybVR5cGUuY3JlYXRl
Q0ZTdHJpbmcoKTsKICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbyhjZlR5cGUuZ2V0KCksIGtVVFR5
cGVQbGFpblRleHQpKQpAQCAtMTE5LDEwICsxMTksMTMgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnNh
ZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGVGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5nJiBw
bGEKICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbyhjZlR5cGUuZ2V0KCksIGtVVFR5cGVVUkwpKQog
ICAgICAgICByZXR1cm4gInRleHQvdXJpLWxpc3QiX3M7CiAKKyAgICBpZiAoaW5jbHVkZUltYWdl
VHlwZXMgPT0gUGxhdGZvcm1QYXN0ZWJvYXJkOjpJbmNsdWRlSW1hZ2VUeXBlczo6WWVzICYmIFVU
VHlwZUNvbmZvcm1zVG8oY2ZUeXBlLmdldCgpLCBrVVRUeXBlUE5HKSkKKyAgICAgICAgcmV0dXJu
ICJpbWFnZS9wbmciX3M7CisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIFZlY3Rv
cjxTdHJpbmc+IHdlYlNhZmVUeXBlcyhOU0FycmF5PE5TU3RyaW5nICo+ICpwbGF0Zm9ybVR5cGVz
LCBGdW5jdGlvbjxib29sKCk+JiYgc2hvdWxkQXZvaWRFeHBvc2luZ1VSTFR5cGUpCitzdGF0aWMg
VmVjdG9yPFN0cmluZz4gd2ViU2FmZVR5cGVzKE5TQXJyYXk8TlNTdHJpbmcgKj4gKnBsYXRmb3Jt
VHlwZXMsIFBsYXRmb3JtUGFzdGVib2FyZDo6SW5jbHVkZUltYWdlVHlwZXMgaW5jbHVkZUltYWdl
VHlwZXMsIEZ1bmN0aW9uPGJvb2woKT4mJiBzaG91bGRBdm9pZEV4cG9zaW5nVVJMVHlwZSkKIHsK
ICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKICAgICBmb3IgKE5T
U3RyaW5nICp0eXBlIGluIHBsYXRmb3JtVHlwZXMpIHsKQEAgLTEzNCw3ICsxMzcsNyBAQCBzdGF0
aWMgVmVjdG9yPFN0cmluZz4gd2ViU2FmZVR5cGVzKE5TQXJyYXk8TlNTdHJpbmcgKj4gKnBsYXRm
b3JtVHlwZXMsIEZ1bmN0aW9uPAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAoYXV0byogY29lcmNlZFR5cGUgPSBzYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdy
aXRlRm9yUGxhdGZvcm1UeXBlKHR5cGUpKSB7CisgICAgICAgIGlmIChhdXRvKiBjb2VyY2VkVHlw
ZSA9IHNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGVGb3JQbGF0Zm9ybVR5cGUodHlwZSwgaW5j
bHVkZUltYWdlVHlwZXMpKSB7CiAgICAgICAgICAgICBhdXRvIGRvbVR5cGVBc1N0cmluZyA9IFN0
cmluZzo6ZnJvbVVURjgoY29lcmNlZFR5cGUpOwogICAgICAgICAgICAgaWYgKGRvbVR5cGVBc1N0
cmluZyA9PSAidGV4dC91cmktbGlzdCJfcyAmJiAoW3BsYXRmb3JtVHlwZXMgY29udGFpbnNPYmpl
Y3Q6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZpbGVVUkxdIHx8IHNob3VsZEF2b2lkRXhw
b3NpbmdVUkxUeXBlKCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjMzLDcgKzIz
Niw3IEBAIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfCiAgICAgICAgIGluZm8uaXNOb25UZXh0VHlw
ZSA9IHRydWU7CiAgICAgfQogCi0gICAgaW5mby53ZWJTYWZlVHlwZXNCeUZpZGVsaXR5ID0gd2Vi
U2FmZVR5cGVzKHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMsIFsmXSB7CisgICAgaW5mby53ZWJT
YWZlVHlwZXNCeUZpZGVsaXR5ID0gd2ViU2FmZVR5cGVzKHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmll
cnMsIEluY2x1ZGVJbWFnZVR5cGVzOjpZZXMsIFsmXSB7CiAgICAgICAgIHJldHVybiBzaG91bGRU
cmVhdEF0TGVhc3RPbmVUeXBlQXNGaWxlKHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMpICYmICFQ
YXN0ZWJvYXJkOjpjYW5FeHBvc2VVUkxUb0RPTVdoZW5QYXN0ZWJvYXJkQ29udGFpbnNGaWxlcyhy
ZWFkU3RyaW5nKGluZGV4LCBrVVRUeXBlVVJMKSk7CiAgICAgfSk7CiAKQEAgLTU2NCw3ICs1Njcs
NyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0
byB3ZWJTYWZlUGFzdGVib2FyZFR5cGVzID0gd2ViU2FmZVR5cGVzKFttX3Bhc3RlYm9hcmQgcGFz
dGVib2FyZFR5cGVzXSwgWyZdIHsKKyAgICBhdXRvIHdlYlNhZmVQYXN0ZWJvYXJkVHlwZXMgPSB3
ZWJTYWZlVHlwZXMoW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdLCBJbmNsdWRlSW1hZ2VU
eXBlczo6Tm8sIFsmXSB7CiAgICAgICAgIEJPT0wgYWJsZVRvRGV0ZXJtaW5lUHJvdG9jb2xPZlBh
c3RlYm9hcmRVUkwgPSAhW21fcGFzdGVib2FyZCBpc0tpbmRPZkNsYXNzOltXZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkIGNsYXNzXV07CiAgICAgICAgIHJldHVybiBhYmxlVG9EZXRlcm1pbmVQcm90
b2NvbE9mUGFzdGVib2FyZFVSTCAmJiBzdHJpbmdGb3JUeXBlKGtVVFR5cGVVUkwpLmlzRW1wdHko
KTsKICAgICB9KTsKQEAgLTU5NiwxOCArNTk5LDI4IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRl
bVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJh
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBkYXRhLmZvckVhY2hQbGF0Zm9ybVN0cmluZyhbJl0g
KGF1dG8mIHR5cGUsIGF1dG8mIHZhbHVlKSB7Ci0gICAgICAgIGlmICghdmFsdWUpCisgICAgZGF0
YS5mb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihbJl0gKGF1dG8mIHR5cGUsIGF1dG8mIHZh
bHVlKSB7CisgICAgICAgIGF1dG8gY29jb2FUeXBlID0gUGxhdGZvcm1QYXN0ZWJvYXJkOjpwbGF0
Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZSh0eXBlLCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OkluY2x1ZGVJbWFnZVR5cGVzOjpZZXMpOworICAgICAgICBpZiAo
Y29jb2FUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBOU1N0
cmluZyAqc3RyaW5nVmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgYXV0byBjb2NvYVR5cGUgPSBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRv
UmVhZEFuZFdyaXRlKHR5cGUsIFBsYXRmb3JtUGFzdGVib2FyZDo6SW5jbHVkZUltYWdlVHlwZXM6
OlllcykuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgaWYgKFVUVHlwZUNvbmZvcm1zVG8oY29j
b2FUeXBlLmdldCgpLCBrVVRUeXBlVVJMKSkKLSAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDpbTlNVUkwgVVJMV2l0aFN0cmluZzpzdHJp
bmdWYWx1ZV1dOwotICAgICAgICBlbHNlIGlmIChVVFR5cGVDb25mb3Jtc1RvKGNvY29hVHlwZS5n
ZXQoKSwga1VUVHlwZVBsYWluVGV4dCkpCi0gICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6c3RyaW5nVmFsdWVdOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOltzdHJpbmdW
YWx1ZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gZm9yVHlwZTooTlNT
dHJpbmcgKiljb2NvYVR5cGUuZ2V0KCldOworICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxTdHJpbmc+KHZhbHVlKSkgeworICAgICAgICAgICAgaWYgKFdURjo6Z2V0PFN0cmluZz4o
dmFsdWUpLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
TlNTdHJpbmcgKm5zU3RyaW5nVmFsdWUgPSBXVEY6OmdldDxTdHJpbmc+KHZhbHVlKTsKKyAgICAg
ICAgICAgIGF1dG8gY2ZUeXBlID0gY29jb2FUeXBlLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAg
ICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbyhjZlR5cGUuZ2V0KCksIGtVVFR5cGVVUkwpKQorICAg
ICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09i
amVjdDpbTlNVUkwgVVJMV2l0aFN0cmluZzpuc1N0cmluZ1ZhbHVlXV07CisgICAgICAgICAgICBl
bHNlIGlmIChVVFR5cGVDb25mb3Jtc1RvKGNmVHlwZS5nZXQoKSwga1VUVHlwZVBsYWluVGV4dCkp
CisgICAgICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50
aW5nT2JqZWN0Om5zU3RyaW5nVmFsdWVdOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6W25zU3RyaW5nVmFsdWUgZGF0
YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGZvclR5cGU6KE5TU3RyaW5nICop
Y29jb2FUeXBlXTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1
dG8gYnVmZmVyID0gV1RGOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKKyAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJl
dHVybiByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGEyMGJiODA1YzYzNjY4NmE0NDBiYzQwNzU4NTkw
NDY5OTgyODg5OTkuLmMxNTg3ZmE4ZWVlYTU4ZDI1ZTk4Njk4YzgyM2ExNzBhYTI3YTJlYWMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAyMC0wNS0yNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KKworICAgICAgICBbQ2xpcGJvYXJkIEFQSV0gU3VwcG9ydCByZWFkaW5nICJpbWFnZS9wbmci
IG9uIENsaXBib2FyZEl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMjMzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM1ODg5NTc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IEFQ
SSB0ZXN0IHRvIHZlcmlmeSB0aGF0IFRJRkYgaW1hZ2VzIG9uIHRoZSBzeXN0ZW0gcGFzdGVib2Fy
ZCBvbiBtYWNPUyBhcmUgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8KKyAgICAgICAgUE5HIGRh
dGEsIGFuZCBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggYENsaXBib2FyZEl0ZW1gIHRocm91Z2ggdGhl
ICJpbWFnZS9wbmciIHR5cGUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NsaXBib2FyZFRlc3RzLm1tOgorCiAyMDIwLTA1LTIyICBQYXVsbyBNYXRvcyAgPHBt
YXRvc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBbbm8tXXVzZS1jY2Fj
aGUgb3B0aW9uIGluIGJ1aWxkLWpzYwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9DbGlwYm9hcmRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQ2xpcGJvYXJkVGVzdHMubW0KaW5kZXggY2YxMzM3ZmE0YmJlNDI2
MjVkYzI0YTBlOWQ1ZmExYTY2NGRmMmYxNS4uNGU1NWNmMDFhOTdmMjc5YjQyZGMwZGFkNTI4Y2Fl
NjViYWE2YWE3ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9DbGlwYm9hcmRUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0NsaXBib2FyZFRlc3RzLm1tCkBAIC0xNjUsMyArMTY1LDIxIEBAIFRFU1QoQ2xp
cGJvYXJkVGVzdHMsIFdyaXRlU2FuaXRpemVkTWFya3VwKQogICAgIEVYUEVDVF9GQUxTRShbd3Jp
dHRlbk1hcmt1cCBjb250YWluc1N0cmluZzpAInN1cGVyIHNlY3JldCJdKTsKICAgICBFWFBFQ1Rf
RkFMU0UoW3dyaXR0ZW5NYXJrdXAgY29udGFpbnNTdHJpbmc6QCI8c2NyaXB0PiJdKTsKIH0KKwor
I2lmIFBMQVRGT1JNKE1BQykKKworVEVTVChDbGlwYm9hcmRUZXN0cywgQ29udmVydFRJRkZUb1BO
R1doZW5QYXN0aW5nKQoreworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdGb3JDbGlw
Ym9hcmRUZXN0cygpOworICAgIGF1dG8gdXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxG
b3JSZXNvdXJjZTpAInN1bnNldC1pbi1jdXBlcnRpbm8tMTAwcHgiIHdpdGhFeHRlbnNpb246QCJ0
aWZmIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIGF1dG8g
cGFzdGVib2FyZCA9IE5TUGFzdGVib2FyZC5nZW5lcmFsUGFzdGVib2FyZDsKKyAgICBbcGFzdGVi
b2FyZCBjbGVhckNvbnRlbnRzXTsKKyAgICBbcGFzdGVib2FyZCBzZXREYXRhOltOU0RhdGEgZGF0
YVdpdGhDb250ZW50c09mVVJMOnVybF0gZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlVElGRl07Cisg
ICAgW3dlYlZpZXcgcmVhZENsaXBib2FyZF07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJleGNlcHRpb24gPyBleGNlcHRp
b24ubWVzc2FnZSA6ICcnIl0pOworICAgIEVYUEVDVF9FUSgxVSwgW1t3ZWJWaWV3IG9iamVjdEJ5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRhLmxlbmd0aCJdIHVuc2lnbmVkSW50
VmFsdWVdKTsKKyAgICBFWFBFQ1RfVFJVRShbW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImNsaXBib2FyZERhdGFbMF1bJ2ltYWdlL3BuZyddLnNyYyJdIGNvbnRhaW5zU3Ry
aW5nOkAiYmxvYjoiXSk7Cit9CisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2Ji
ZDczMjAyN2FkOWFmZDgzMWExOGJhODJlMjBhMmQ4YzE0NjI1MS4uMmY2OTYyMzNlYTQxZDdjNTcz
MGM2NTM5YTA3OTQxYzIxOWIxODljYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA1LTI0
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlw
Ym9hcmQgQVBJXSBTdXBwb3J0IHJlYWRpbmcgImltYWdlL3BuZyIgb24gQ2xpcGJvYXJkSXRlbQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzM5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzU4ODk1Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgbGF5b3V0IHRlc3QgdG8gdmVyaWZ5
IHRoYXQgYENsaXBib2FyZC53cml0ZWAgYW5kIGBDbGlwYm9hcmQucmVhZGAgY2FuIGJlIHVzZWQg
dG8gY29weSBhbmQgdGhlbiByZWFkCisgICAgICAgIGJhY2sgUE5HIGltYWdlIGRhdGEuCisKKyAg
ICAgICAgKiBlZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtcmVhZC13cml0ZS1pbWFn
ZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2FzeW5jLWNsaXBib2Fy
ZC9jbGlwYm9hcmQtcmVhZC13cml0ZS1pbWFnZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRp
dGluZy9hc3luYy1jbGlwYm9hcmQvcmVzb3VyY2VzL2FzeW5jLWNsaXBib2FyZC1oZWxwZXJzLmpz
OgorICAgICAgICAoc2FtcGxlQmFzZTY0UE5HSW1hZ2VEYXRhMSk6CisgICAgICAgIChzYW1wbGVC
YXNlNjRQTkdJbWFnZURhdGEyKToKKyAgICAgICAgKGltYWdlQmxvYik6CisgICAgICAgIChzYW1w
bGVCYXNlNjRQTkdJbWFnZURhdGEpOiBEZWxldGVkLgorCiAyMDIwLTA1LTIyICBLZW5uZXRoIFJ1
c3NlbGwgIDxrYnJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtBTkdMRSAtIGlPU10gZmFzdC9j
YW52YXMvd2ViZ2wvd2ViZ2wtZGVwdGgtdGV4dHVyZS5odG1sIGlzIGZhaWxpbmcKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1yZWFkLXdy
aXRlLWltYWdlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBi
b2FyZC9jbGlwYm9hcmQtcmVhZC13cml0ZS1pbWFnZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRhNjE3NzUzMTVhNDY2NjRkZjQxMDRkMjg0YTk5ZmZhODRiMDMzZjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtcmVhZC13
cml0ZS1pbWFnZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgdGVzdCB2ZXJp
ZmllcyB0aGF0IG11bHRpcGxlIGltYWdlcyBjYW4gYmUgd3JpdHRlbiB0byBhbmQgcmVhZCBmcm9t
IHRoZSBzeXN0ZW0gY2xpcGJvYXJkLiBUbyBtYW51YWxseSBydW4gdGhlIHRlc3QsIHRhcCB0aGUg
Y29weSBidXR0b24sIGFuZCB0aGVuIHRhcCBwYXN0ZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgZG9uZVdyaXRpbmcgYmVjYW1lIHRydWUKK1BBU1MgaXRlbXMubGVuZ3Ro
IGlzIDIKK1BBU1MgaXRlbS50eXBlcy5sZW5ndGggaXMgMQorUEFTUyBpdGVtLnR5cGVzLmluY2x1
ZGVzKCdpbWFnZS9wbmcnKSBpcyB0cnVlCitQQVNTIFBhc3RlZCA2MCBieSA2MCBpbWFnZS4KK1BB
U1MgaXRlbS50eXBlcy5sZW5ndGggaXMgMQorUEFTUyBpdGVtLnR5cGVzLmluY2x1ZGVzKCdpbWFn
ZS9wbmcnKSBpcyB0cnVlCitQQVNTIFBhc3RlZCAyMCBieSAyMCBpbWFnZS4KK1BBU1MgZG9uZVJl
YWRpbmcgYmVjYW1lIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlw
Ym9hcmQvY2xpcGJvYXJkLXJlYWQtd3JpdGUtaW1hZ2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtcmVhZC13cml0ZS1pbWFnZXMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44ZmQwNzI5MGJlZDU2YmEwN2Y2ZTBjN2QyNGQwNThkMmZkMmYxNjlmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJk
LXJlYWQtd3JpdGUtaW1hZ2VzLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCFET0NUWVBFIGh0bWw+
IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIGV4cGVy
aW1lbnRhbDpBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+CisgICAg
PG1ldGEgY2hhcnNldD0idXRmOCI+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIG5hbWU9InZp
ZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdXNl
ci1zY2FsYWJsZT1ubyI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2Vz
L2FzeW5jLWNsaXBib2FyZC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHN0eWxlPgor
ICAgICAgICAgICAgYnV0dG9uIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAg
ICAgICAgICAgICAgcGFkZGluZzogMWVtOworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgIDwvaGVhZD4KKyAgICA8c2NyaXB0PgorICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKyAgICAgICAgZG9uZVdyaXRpbmcgPSBmYWxzZTsKKyAgICAgICAgZG9uZVJlYWRpbmcgPSBm
YWxzZTsKKworICAgICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgbXVs
dGlwbGUgaW1hZ2VzIGNhbiBiZSB3cml0dGVuIHRvIGFuZCByZWFkIGZyb20gdGhlIHN5c3RlbSBj
bGlwYm9hcmQuIFRvIG1hbnVhbGx5IHJ1biB0aGUgdGVzdCwgdGFwIHRoZSBjb3B5IGJ1dHRvbiwg
YW5kIHRoZW4gdGFwIHBhc3RlLiIpOworCisgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3Qo
KSB7CisgICAgICAgICAgICBjb25zdCBjb3B5QnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvcHkiKTsKKyAgICAgICAgICAgIGNvbnN0IHBhc3RlQnV0dG9uID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInBhc3RlIik7CisgICAgICAgICAgICBjb25zdCBpbWFnZXNDb250YWluZXIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1hZ2VzQ29udGFpbmVyIik7CisgICAgICAgICAg
ICBjb3B5QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgYXN5bmMgZXZlbnQgPT4gewor
ICAgICAgICAgICAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGUoWworICAgICAg
ICAgICAgICAgICAgICBuZXcgQ2xpcGJvYXJkSXRlbSh7ICJpbWFnZS9wbmciIDogUHJvbWlzZS5y
ZXNvbHZlKGltYWdlQmxvYigpKSB9KSwKKyAgICAgICAgICAgICAgICAgICAgbmV3IENsaXBib2Fy
ZEl0ZW0oeyAiaW1hZ2UvcG5nIiA6IFByb21pc2UucmVzb2x2ZShpbWFnZUJsb2Ioc2FtcGxlQmFz
ZTY0UE5HSW1hZ2VEYXRhMigpKSkgfSkKKyAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAg
ICAgICBkb25lV3JpdGluZyA9IHRydWU7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
cGFzdGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBhc3luYyBldmVudCA9PiB7Cisg
ICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSBhd2FpdCBu
YXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWQoKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUo
Iml0ZW1zLmxlbmd0aCIsICIyIik7CisgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRl
bSBvZiBpdGVtcykgeworICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Lml0ZW0gPSBpdGVt
OworICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoIml0ZW0udHlwZXMubGVuZ3RoIiwg
IjEiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiaXRlbS50eXBlcy5p
bmNsdWRlcygnaW1hZ2UvcG5nJykiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlt
YWdlRGF0YSA9IGF3YWl0IGl0ZW0uZ2V0VHlwZSgiaW1hZ2UvcG5nIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBpbWFnZSA9IGF3YWl0IGxvYWRJbWFnZShpbWFnZURhdGEpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzQ29udGFpbmVyLmFwcGVuZENoaWxkKGltYWdlKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGltYWdlLmRlY29kZSgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2xpZW50UmVjdCA9IGltYWdlLmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChgUGFzdGVkICR7Y2xp
ZW50UmVjdC53aWR0aH0gYnkgJHtjbGllbnRSZWN0LmhlaWdodH0gaW1hZ2UuYCk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChgQ2F1Z2h0IGV4Y2VwdGlvbjogJHtleGNlcHRp
b259YCk7CisgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICAgICAg
ZG9uZVJlYWRpbmcgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnQoY29weUJ1dHRvbik7
CisgICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNob3VsZEJlY29tZUVx
dWFsKCJkb25lV3JpdGluZyIsICJ0cnVlIiwgcmVzb2x2ZSkpOworCisgICAgICAgICAgICBhd2Fp
dCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnQocGFzdGVCdXR0b24pOworICAgICAgICAgICAgYXdh
aXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzaG91bGRCZWNvbWVFcXVhbCgiZG9uZVJlYWRpbmci
LCAidHJ1ZSIsIHJlc29sdmUpKTsKKworICAgICAgICAgICAgW3Bhc3RlQnV0dG9uLCBjb3B5QnV0
dG9uXS5tYXAoYnV0dG9uID0+IGJ1dHRvbi5yZW1vdmUoKSk7CisgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBy
dW5UZXN0KTsKKyAgICA8L3NjcmlwdD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGJ1dHRvbiBpZD0i
Y29weSI+Q29weTwvYnV0dG9uPgorICAgICAgICA8YnV0dG9uIGlkPSJwYXN0ZSI+UGFzdGU8L2J1
dHRvbj4KKyAgICAgICAgPGRpdiBpZD0iaW1hZ2VzQ29udGFpbmVyIj48L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBi
b2FyZC9yZXNvdXJjZXMvYXN5bmMtY2xpcGJvYXJkLWhlbHBlcnMuanMgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9yZXNvdXJjZXMvYXN5bmMtY2xpcGJvYXJkLWhlbHBlcnMu
anMKaW5kZXggNjFiYzZhMWY4NDViZWFiNjRlZmQwNDMzZTEwZDFmNjIzYzEyM2MzNC4uNjdjYWEy
YmZhMmNhNGYwM2U0MmQxMTVjZWU1MmFjY2FhMDU3ZGM2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvcmVzb3VyY2VzL2FzeW5jLWNsaXBib2FyZC1oZWxw
ZXJzLmpzCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL3Jlc291cmNl
cy9hc3luYy1jbGlwYm9hcmQtaGVscGVycy5qcwpAQCAtMSw5ICsxLDE0IEBACi1mdW5jdGlvbiBz
YW1wbGVCYXNlNjRQTkdJbWFnZURhdGEoKSB7CitmdW5jdGlvbiBzYW1wbGVCYXNlNjRQTkdJbWFn
ZURhdGExKCkgewogICAgIC8vIEEgNjAgYnkgNjAgc29saWQgcmVkIHNxdWFyZS4KICAgICByZXR1
cm4gImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEd0FBQUE4Q0FZQUFBQTYvTmx5QUFBQUFYTlNS
MElBcnM0YzZRQUFBSlpsV0VsbVRVMEFLZ0FBQUFnQUJBRWFBQVVBQUFBQkFBQUFQZ0ViQUFVQUFB
QUJBQUFBUmdFb0FBTUFBQUFCQUFJQUFJZHBBQVFBQUFBQkFBQUFUZ0FBQUFBQUFBQ1FBQUFBQVFB
QUFKQUFBQUFCQUFTU2hnQUhBQUFBRWdBQUFJU2dBUUFEQUFBQUFRQUJBQUNnQWdBRUFBQUFBUUFB
QUR5Z0F3QUVBQUFBQVFBQUFEd0FBQUFBUVZORFNVa0FBQUJUWTNKbFpXNXphRzkwQ1VnMG13QUFB
QWx3U0ZsekFBQVdKUUFBRmlVQlNWSWs4QUFBQWRScFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJY
QUFBQUFBQUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhn
NmVHMXdkR3M5SWxoTlVDQkRiM0psSURVdU5DNHdJajRLSUNBZ1BISmtaanBTUkVZZ2VHMXNibk02
Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZ
WGd0Ym5NaklqNEtJQ0FnSUNBZ1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlp
SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZaWGhwWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1O
dmJTOWxlR2xtTHpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZoRWFXMWxibk5w
YjI0K05qQThMMlY0YVdZNlVHbDRaV3hZUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0FnSUNBOFpYaHBa
anBWYzJWeVEyOXRiV1Z1ZEQ1VFkzSmxaVzV6YUc5MFBDOWxlR2xtT2xWelpYSkRiMjF0Wlc1MFBn
b2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmxFYVcxbGJuTnBiMjQrTmpBOEwyVjRhV1k2VUds
NFpXeFpSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0Fn
UEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEs5K0JtYkFBQUFCeHBSRTlVQUFBQUFnQUFB
QUFBQUFBZUFBQUFLQUFBQUI0QUFBQWVBQUFBbHMvR1VJOEFBQUJpU1VSQlZHZ0Y3Tkl4QVFBZ0RN
UkE2b2dkLzdwQVFCeUVkUHp0L3pyMzdMcyt1cW13WER0aE9mQktPR0haQXIyMERCUjFFc1lrc2lC
aEdTanFKSXhKWkVIQ01sRFVTUmlUeUlLRVphQ29rekFta1FVSnkwQlJKMkZNSWdzU2xvR2l6Z01B
QVAvL1k0YjJKUUFBQUdCSlJFRlU3ZEl4QVFBZ0RNUkE2b2dkLzdwQVFCeUVkUHp0L3pyMzdMcyt1
cW13WER0aE9mQktPR0haQXIyMERCUjFFc1lrc2lCaEdTanFKSXhKWkVIQ01sRFVTUmlUeUlLRVph
Q29rekFta1FVSnkwQlJKMkZNSWdzU2xvR2l6Z09sM3BEWkJCYTBod0FBQUFCSlJVNUVya0pnZ2ci
OwogfQogCi1mdW5jdGlvbiBpbWFnZUJsb2IoYmFzZTY0U3RyaW5nID0gc2FtcGxlQmFzZTY0UE5H
SW1hZ2VEYXRhKCkpIHsKK2Z1bmN0aW9uIHNhbXBsZUJhc2U2NFBOR0ltYWdlRGF0YTIoKSB7Cisg
ICAgLy8gQSAyMCBieSAyMCBibGFjayBzcXVhcmUuCisgICAgcmV0dXJuICJpVkJPUncwS0dnb0FB
QUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFBWE5TUjBJQXJzNGM2UUFBQUpabFdF
bG1UVTBBS2dBQUFBZ0FCQUVhQUFVQUFBQUJBQUFBUGdFYkFBVUFBQUFCQUFBQVJnRW9BQU1BQUFB
QkFBSUFBSWRwQUFRQUFBQUJBQUFBVGdBQUFBQUFBQUNRQUFBQUFRQUFBSkFBQUFBQkFBU1NoZ0FI
QUFBQUVnQUFBSVNnQVFBREFBQUFBUUFCQUFDZ0FnQUVBQUFBQVFBQUFCU2dBd0FFQUFBQUFRQUFB
QlFBQUFBQVFWTkRTVWtBQUFCVFkzSmxaVzV6YUc5MFhxVlN0Z0FBQUFsd1NGbHpBQUFXSlFBQUZp
VUJTVklrOEFBQUFkUnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEeDRPbmh0Y0cx
bGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlsaE5VQ0JE
YjNKbElEWXVNQzR3SWo0S0lDQWdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZk
M2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRLSUNBZ0lD
QWdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlLSUNBZ0lDQWdJQ0FnSUNB
Z2VHMXNibk02WlhocFpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzlsZUdsbUx6RXVNQzhp
UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtNakE4TDJWNGFXWTZV
R2w0Wld4WVJHbHRaVzV6YVc5dVBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwVmMyVnlRMjl0YldWdWRE
NVRZM0psWlc1emFHOTBQQzlsZUdsbU9sVnpaWEpEYjIxdFpXNTBQZ29nSUNBZ0lDQWdJQ0E4Wlho
cFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qQThMMlY0YVdZNlVHbDRaV3haUkdsdFpXNXphVzl1
UGdvZ0lDQWdJQ0E4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRLSUNBZ1BDOXlaR1k2VWtSR1BnbzhM
M2c2ZUcxd2JXVjBZVDRLQmtzcy93QUFBQnhwUkU5VUFBQUFBZ0FBQUFBQUFBQUtBQUFBS0FBQUFB
b0FBQUFLQUFBQTUralJqYWdBQUFDelNVUkJWRGdSZEZJSkVzUWdDSlAvUDlwTklDbml1RTVISUFm
RjJsZ3I5bHA0dENKakFHbU1FUEVkdVV1dVBQWGdVVzVZSmlyU2FKSnZSU3JkeERiR1R4NUk3Nm5N
ZHVPUzIzUTNKRzd1ekFCZXpWdVZITTg4UDBqTlNOL25MWStjREZ4YmRNTGlpRHRGUEcrQWNFTVdm
V282dFZMVlU1ZlVWcjYwWjY2Y1BuK1FSdFR0Q3RBRnJ2TjE1R3lEYlhEZHo4Y0ZnZ2JFdWZIWEdF
c0doWnJXeFJDcStNL2RUTlZDbjJIMFArMW5Qa1FvZmdBQUFQLy9TNU9pR2dBQUFLbEpSRUZVZlZJ
SkVzUWdEREwvZjdTTENlRFp0VE5xdUV4dG8wWHJlQjRqV2dTb2d3UDZaY2lNYUEwdUphTFNkckJW
L29sSTkzNkFQQTQ2TXZQVWE4b2dXYmFpbWdoZ3ZUTXFGKzdaNHhXWWdEUUxpNkFIcWxlZFFvdThL
YTVLekw2MU03QmFaZEtRWTZUWVZsNHhRd2F2ajBhb2xJUEEySXFDbmxocUlaNS9BSjFZYXNlYUdV
SmRHcGcrTjJiUnppbXhWbFVXcjMwbXFidnErRmVYRHdyRDdWWEtOeVBGYy8wQmVqS2ZDb3JXb1Zv
QUFBQUFTVVZPUks1Q1lJSSI7Cit9CisKK2Z1bmN0aW9uIGltYWdlQmxvYihiYXNlNjRTdHJpbmcg
PSBzYW1wbGVCYXNlNjRQTkdJbWFnZURhdGExKCkpIHsKICAgICByZXR1cm4gdGV4dEJsb2IoYXRv
YihiYXNlNjRTdHJpbmcpLCAiaW1hZ2UvcG5nIik7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYWU3ZTEzMWQwNmU1NDUyNGY0Y2NiMTljMGIzZmI0
NGQ3MWEzNmM5Yi4uNDY5NDg2ODJiMGI0NzJlY2U4YTMwNGU4NDgwYjkyNzZiMmQ3OGUzZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEyMDksNiArMTIw
OSw3IEBAIHdlYmtpdC5vcmcvYi8yMDMxMDAgZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJv
YXJkLXJlYWQtdGV4dC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMjAzMTAwIGVkaXRpbmcv
YXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1yZWFkLXdoaWxlLXBhc3RpbmcuaHRtbCBbIFNraXAg
XQogd2Via2l0Lm9yZy9iLzIwMzEwMCBlZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9zYW5pdGl6ZS13
aGVuLXdyaXRpbmctaW1hZ2UuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzIwMzEwMCBlZGl0
aW5nL2FzeW5jLWNsaXBib2FyZC9zYW5pdGl6ZS13aGVuLXJlYWRpbmctbWFya3VwLmh0bWwgWyBT
a2lwIF0KK3dlYmtpdC5vcmcvYi8yMDMxMDAgZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJv
YXJkLXJlYWQtd3JpdGUtaW1hZ2VzLmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzE0MDc4
MyBbIFJlbGVhc2UgXSBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1zdGFuZGFsb25lLWltYWdlLmh0
bWwgWyBGYWlsdXJlIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE0MDc4MyBbIERl
YnVnIF0gZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktc3RhbmRhbG9uZS1pbWFnZS5odG1sIFsgU2tp
cCBdICMgRGVidWcgQXNzZXJ0aW9uCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400216</attachid>
            <date>2020-05-25 12:40:54 -0700</date>
            <delta_ts>2020-05-27 11:38:52 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-212339-20200525124053.patch</filename>
            <type>text/plain</type>
            <size>50366</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjA4ODJhMjI0ZDc0YWUz
MTA3OGUwNGJiNmE5MmIwNDFkMDZlNDBlNy4uNGVkMTUxYmIwNjgwMDE3NzZkNjk1MDYwNDE4M2E5
NTE5MmM0MDQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDIwLTA1LTI0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlwYm9hcmQg
QVBJXSBTdXBwb3J0IHJlYWRpbmcgImltYWdlL3BuZyIgb24gQ2xpcGJvYXJkSXRlbQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzM5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MzU4ODk1Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIHJlYWRpbmcgImltYWdlL3BuZyIg
ZGF0YSB2aWEgQ2xpcGJvYXJkSXRlbS5nZXRUeXBlKCkuIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgICAgIFRlc3RzOiAgQ2xpcGJvYXJkVGVzdHMuQ29udmVydFRJRkZUb1BOR1do
ZW5QYXN0aW5nCisgICAgICAgICAgICAgICAgZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJv
YXJkLXJlYWQtd3JpdGUtaW1hZ2VzLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OmdldFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjp1cGRhdGVTZXNzaW9uVmFsaWRpdHkp
OgorCisgICAgICAgIEZhY3RvciBvdXQgbG9naWMgZm9yIGludmFsaWRhdGluZyB0aGUgYENsaXBi
b2FyZGAncyBhY3RpdmUgYFBhc3RlYm9hcmRgIG9iamVjdCBpbnRvIGEgaGVscGVyIG1ldGhvZC4g
VGhpcyBpcworICAgICAgICBpbnZva2VkIGFmdGVyIHJlYWRpbmcgZGF0YSBmcm9tIHRoZSBjbGlw
Ym9hcmQsIGFuZCB2ZXJpZmllcyB0aGF0IHRoZSBjaGFuZ2VDb3VudCBvZiB0aGUgcGFzdGVib2Fy
ZCBpcyBzdGlsbCB0aGUKKyAgICAgICAgc2FtZSBhcyBpdCB3YXMgdXBvbiBpbml0aWFsbHkgcmVh
ZGluZyB0aGUgY29udGVudHMgb2YgdGhlIGNsaXBib2FyZC4gSWYgdGhlIGNsaXBib2FyZCBjb250
ZW50cyBjaGFuZ2VkLCB3ZQorICAgICAgICBpbnZhbGlkYXRlIHRoZSBzZXNzaW9uLCBhbmQgYENs
aXBib2FyZGAgaXMgc3Vic2VxdWVudGx5IGRlbmllZCBwYXN0ZWJvYXJkIGFjY2VzcyAodW50aWwg
dGhlIG5leHQgdGltZSB0aGUgdXNlcgorICAgICAgICBleHBsaWNpdGx5IGdyYW50cyBwcm9ncmFt
bWF0aWMgcGFzdGVib2FyZCBhY2Nlc3MpLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHN0ZXAg
aXMgaGVyZSBmb3IgY29ycmVjdG5lc3MgcmF0aGVyIHRoYW4gc2VjdXJpdHkuIFdoaWxlIGl0IGlz
IHRydWUgdGhhdCBhIGNvbXByb21pc2VkIHdlYgorICAgICAgICBwcm9jZXNzIGNvdWxkIGZha2Ug
dGhlIGNoYW5nZUNvdW50IGF0IGFueSBnaXZlbiBtb21lbnQsIG90aGVyIGZhaXJseSByZWNlbnQg
Y2hhbmdlcyBhcm91bmQgV2ViUGFzdGVib2FyZFByb3h5IGluCisgICAgICAgIHRoZSBVSSBwcm9j
ZXNzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhpcyBmYWN0IHRv
IGFyYml0cmFyaWx5IHJlYWQgY29udGVudCBmcm9tIHRoZSBzeXN0ZW0KKyAgICAgICAgcGFzdGVi
b2FyZC4gSW5zdGVhZCBvZiBzaW1wbHkgcmVhZGluZyB0aGUgZW1wdHkgc3RyaW5nLCB0aGlzIGlu
dmFsaWRhdGlvbiBlbnN1cmVzIHRoYXQgd2UgYWN0dWFsbHkgcmVqZWN0IHRoZQorICAgICAgICBw
cm9taXNlIHJldHVybmVkIGJ5IHRoZSBhc3luYyBjbGlwYm9hcmQgQVBJLgorCisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmg6CisgICAgICAgICogTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwOiBBZGRlZC4KKworICAgICAg
ICBBZGQgYSBQYXN0ZWJvYXJkRmlsZVJlYWRlciBzdWJjbGFzcyB0aGF0IGlzIHJlc3BvbnNpYmxl
IGZvciBzYW5pdGl6aW5nIGltYWdlIGRhdGEgZnJvbSB0aGUgcGFzdGVib2FyZCBpbnRvCisgICAg
ICAgIGRhdGEgdGhhdCBtYXkgYmUgZXhwb3NlZCB0byB0aGUgcGFnZSB2aWEgY2xpcGJvYXJkIEFQ
SS4gT24gYm90aCBtYWNPUyBhbmQgaU9TLCB0aGlzIGVuc3VyZXMgdGhhdCBwb3RlbnRpYWxseQor
ICAgICAgICBzZW5zaXRpdmUgRVhJRiBkYXRhIGlzIHN0cmlwcGVkIHZpYSBjb252ZXJzaW9uIHRv
IHRoZSBwbGF0Zm9ybSBpbWFnZSB0eXBlIGFuZCBiYWNrLiBPbiBtYWNPUywgdGhpcyBhZGRpdGlv
bmFsbHkKKyAgICAgICAgYWxsb3dzIHVzIHRvIGhhbmRsZSB0cmFuc2NvZGluZyBUSUZGIGRhdGEg
b24gdGhlIHBhc3RlYm9hcmQgdG8gUE5HICh0aGlzIGlzIGNvdmVyZWQgYnkgdGhlIG5ldyBBUEkg
dGVzdCkuCisKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKToKKworICAgICAgICBBZGQgYSBzdHViIGltcGxlbWVudGF0aW9uIGZvciBub24tQ29jb2Eg
cGxhdGZvcm1zIGZvciBub3csIHdoaWNoIGRvbid0IGltcGxlbWVudCB0aGlzIHBhcnQgb2YgdGhl
IEFQSS4KKworICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnNob3VsZFJl
YWRCdWZmZXIgY29uc3QpOgorCisgICAgICAgIEFkZCBhIG5ldyBob29rIHRvIHNraXAgb3ZlciBj
ZXJ0YWluIHR5cGVzIHdoZW4gcmVhZGluZyBwYXN0ZWJvYXJkIGRhdGEgaW50byBGaWxlcy4gSW4g
cGFydGljdWxhciwKKyAgICAgICAgYENsaXBib2FyZEltYWdlUmVhZGVyYCBza2lwcyBvdmVyIGFu
eSBNSU1FIHR5cGUgdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGUgTUlNRSB0eXBlIHNwZWNpZmllZCAo
Zm9yIG5vdywgdGhpcyBpcworICAgICAgICBsaW1pdGVkIHRvICJpbWFnZS9wbmciLCBidXQgbWF5
IGJlIGV4dGVuZGVkIHRvIGluY2x1ZGUgbW9yZSBpbWFnZSB0eXBlcyBpbiB0aGUgZnV0dXJlIGFm
dGVyIHdlIGltcGxlbWVudCBtb3JlCisgICAgICAgIHRyYW5zY29kaW5nIGxvZ2ljKS4KKworICAg
ICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OkNsaXBib2FyZElt
YWdlUmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjp0YWtl
UmVzdWx0KToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJJT1MubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1h
Z2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorCisgICAgICAgIEFkZCBpT1Mtc3BlY2lmaWMgYChQTkcp
ID0+IFBOR2AgdHJhbnNjb2RpbmcgbG9naWMuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorCisgICAgICAgIEFk
ZCBtYWNPUy1zcGVjaWZpYyBgKFBORywgVElGRikgPT4gUE5HYCB0cmFuc2NvZGluZyBsb2dpYy4K
KworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRGaWxlUmVh
ZGVyOjpzaG91bGRSZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Q
YXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToK
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGFyZ2V0aW5nIGEgZ2l2ZW4gcGFzdGVib2FyZCBp
dGVtIGluZGV4IHdoZW4gcmVhZGluZyBmaWxlcyBvbiBDb2NvYSBwbGF0Zm9ybXMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0
ZUZvclBsYXRmb3JtVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJTYWZlVHlwZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KToKKworICAgICAgICBFeHBvc2UgImltYWdlL3BuZyIgYXMgb25lIG9mIHRoZSByZWFkYWJs
ZSBwYXN0ZWJvYXJkIHR5cGVzIG9uIGlPUyB3aGVuIHVzaW5nIHRoZSBhc3luYyBjbGlwYm9hcmQg
QVBJLiBGb3Igc29tZQorICAgICAgICByZWFzb24sIHRoaXMgYWRqdXN0bWVudCB3YXMgbWFkZSBv
biBtYWNPUywgYnV0IHdhc24ndCBkb25lIG9uIGlPUywgd2hpY2ggbGVkIHRvIGEgbWlzc2luZyAi
aW1hZ2UvcG5nIiB0eXBlIHdoZW4KKyAgICAgICAgYXNraW5nIGZvciBgQ2xpcGJvYXJkSXRlbS50
eXBlc2AuCisKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZl
Rm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciB3
cml0aW5nICJpbWFnZS9wbmcgImRhdGEgdG8gdGhlIHN5c3RlbSBwYXN0ZWJvYXJkIChub3RlIHRo
YXQgdGhpcyBkYXRhIGhhcyBiZWVuIHNhbml0aXplZAorICAgICAgICBhbHJlYWR5LCBhcyBpdCBo
YXMgYmVlbiBwcm9jZXNzZWQgdGhyb3VnaCBgQ2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0
aXplRGF0YUlmTmVlZGVkKClgKS4gV2Ugc2ltcGx5IG5lZWRlZAorICAgICAgICB0byB1c2UgYGZv
ckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyYCBpbnN0ZWFkIG9mIGp1c3QgYGZvckVhY2hQbGF0
Zm9ybVN0cmluZ2Agd2hlbiB3cml0aW5nIHRoZSBjdXN0b20KKyAgICAgICAgcGFzdGVib2FyZCBk
YXRhLgorCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25M
aXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFk
KToKKwogMjAyMC0wNS0yMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgc29tZSBtaXNzaW5nIGluY2x1ZGVzIGR1ZSB0byB1bmlmaWVkIHNvdXJj
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDZjZWI5YjY3OWY2YzE3ZDMxZTEyOTcyYzBmOTEwN2E5
MDRmNjA5MTYuLmQzNzliMTM0NmE5ZmU3YTY2ODlmNjI3MTk1YzBjZTk4MjAxNDhlYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA1LTI0ICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlwYm9hcmQgQVBJXSBTdXBw
b3J0IHJlYWRpbmcgImltYWdlL3BuZyIgb24gQ2xpcGJvYXJkSXRlbQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzM5CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82MzU4ODk1Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTb2Z0IGxpbmsgYFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbmAuCisKKyAgICAg
ICAgKiBwYWwvaW9zL1VJS2l0U29mdExpbmsuaDoKKyAgICAgICAgKiBwYWwvaW9zL1VJS2l0U29m
dExpbmsubW06CisKIDIwMjAtMDUtMjIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIFtBcHBsZSBQYXldIEFkZCBuZXcgQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3Vy
YXRpb24gbWVtYmVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZC5jcHAKaW5kZXggNGRlNmQ0MTUxNTVhOTdkMDJjMWJlYTk2ODAzZDlj
MmI3ZmU0YWZkOC4uOGVhMTdlYjNlOGRmNDRmY2EzMWFmMDNjMGIzNDAyZDZjNzIyYzQ5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q2xpcGJvYXJkLmgiCiAKKyNpbmNsdWRlICJDbGlwYm9hcmRJbWFnZVJlYWRlci5oIgogI2luY2x1
ZGUgIkNsaXBib2FyZEl0ZW0uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCkBAIC0yMTQsNiArMjE1LDE3IEBAIHZvaWQgQ2xpcGJvYXJkOjpnZXRUeXBlKENsaXBi
b2FyZEl0ZW0mIGl0ZW0sIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVycmVkUHJvCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAodHlwZSA9PSAiaW1hZ2UvcG5nIl9zKSB7Cisg
ICAgICAgIENsaXBib2FyZEltYWdlUmVhZGVyIGltYWdlUmVhZGVyIHsgdHlwZSB9OworICAgICAg
ICBhY3RpdmVQYXN0ZWJvYXJkKCkucmVhZChpbWFnZVJlYWRlciwgaXRlbUluZGV4KTsKKyAgICAg
ICAgYXV0byBpbWFnZUJsb2IgPSBpbWFnZVJlYWRlci50YWtlUmVzdWx0KCk7CisgICAgICAgIGlm
ICh1cGRhdGVTZXNzaW9uVmFsaWRpdHkoKSA9PSBTZXNzaW9uSXNWYWxpZDo6WWVzICYmIGltYWdl
QmxvYikKKyAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJsb2I+Pihp
bWFnZUJsb2IucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBy
b21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAgICAgU3RyaW5nIHJlc3VsdEFzU3RyaW5nOwogCiAgICAgaWYgKHR5cGUgPT0gInRleHQvdXJp
LWxpc3QiX3MpIHsKQEAgLTIzMywxOSArMjQ1LDI2IEBAIHZvaWQgQ2xpcGJvYXJkOjpnZXRUeXBl
KENsaXBib2FyZEl0ZW0mIGl0ZW0sIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPERlZmVycmVkUHJv
CiAgICAgICAgIHJlc3VsdEFzU3RyaW5nID0gV1RGTW92ZShtYXJrdXBSZWFkZXIubWFya3VwKTsK
ICAgICB9CiAKLSAgICAvLyBGSVhNRTogU3VwcG9ydCByZWFkaW5nICJpbWFnZS9wbmciIGFzIHdl
bGwgYXMgY3VzdG9tIGRhdGEuCi0gICAgLy8gRklYTUU6IEluc3RlYWQgb2YgY2hlY2tpbmcgY2hh
bmdlQ291bnQgaGVyZSwgd2Ugc2hvdWxkIHNlbmQgdGhlIGNoYW5nZUNvdW50IG92ZXIgdG8gdGhl
IFVJIHByb2Nlc3MgdG8gYmUgdmV0dGVkCi0gICAgLy8gd2hlbiBhdHRlbXB0aW5nIHRvIHJlYWQg
dGhlIGRhdGEgaW4gdGhlIGZpcnN0IHBsYWNlLgotICAgIGlmIChtX2FjdGl2ZVNlc3Npb24tPmNo
YW5nZUNvdW50ICE9IGFjdGl2ZVBhc3RlYm9hcmQoKS5jaGFuZ2VDb3VudCgpKSB7Ci0gICAgICAg
IG1fYWN0aXZlU2Vzc2lvbiA9IFdURjo6bnVsbG9wdDsKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBy
ZWFkaW5nIGN1c3RvbSBkYXRhLgorICAgIGlmICh1cGRhdGVTZXNzaW9uVmFsaWRpdHkoKSA9PSBT
ZXNzaW9uSXNWYWxpZDo6Tm8gfHwgcmVzdWx0QXNTdHJpbmcuaXNOdWxsKCkpIHsKICAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAoIXJlc3VsdEFzU3RyaW5nLmlzTnVsbCgpKQotICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlPElETEludGVyZmFjZTxCbG9iPj4oQ2xpcGJvYXJkSXRlbTo6YmxvYkZyb21TdHJpbmco
cmVzdWx0QXNTdHJpbmcsIHR5cGUpKTsKLSAgICBlbHNlCi0gICAgICAgIHByb21pc2UtPnJlamVj
dChOb3RBbGxvd2VkRXJyb3IpOworICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPEJs
b2I+PihDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyhyZXN1bHRBc1N0cmluZywgdHlwZSkp
OworfQorCitDbGlwYm9hcmQ6OlNlc3Npb25Jc1ZhbGlkIENsaXBib2FyZDo6dXBkYXRlU2Vzc2lv
blZhbGlkaXR5KCkKK3sKKyAgICBpZiAoIW1fYWN0aXZlU2Vzc2lvbikKKyAgICAgICAgcmV0dXJu
IFNlc3Npb25Jc1ZhbGlkOjpObzsKKworICAgIGlmIChtX2FjdGl2ZVNlc3Npb24tPmNoYW5nZUNv
dW50ICE9IGFjdGl2ZVBhc3RlYm9hcmQoKS5jaGFuZ2VDb3VudCgpKSB7CisgICAgICAgIG1fYWN0
aXZlU2Vzc2lvbiA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIFNlc3Npb25Jc1ZhbGlk
OjpObzsKKyAgICB9CisKKyAgICByZXR1cm4gU2Vzc2lvbklzVmFsaWQ6OlllczsKIH0KIAogdm9p
ZCBDbGlwYm9hcmQ6OndyaXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q2xpcGJvYXJkSXRlbT4+JiBp
dGVtcywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuaAppbmRleCA0MGE2YjQ2MTAy
M2JiNTcxOGFlOWM1OWM5MjEyNjYyMjUxNGI2MmU0Li4zNmRlNjJlMmI4ODZmOTcwOTcwNDJiOGQ1
NTFmZjc1OTBkZjljNGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmQuaApAQCAtNzcsNiArNzcsOSBAQCBwcml2YXRlOgogCiAgICAg
UGFzdGVib2FyZCYgYWN0aXZlUGFzdGVib2FyZCgpOwogCisgICAgZW51bSBjbGFzcyBTZXNzaW9u
SXNWYWxpZCB7IE5vLCBZZXMgfTsKKyAgICBTZXNzaW9uSXNWYWxpZCB1cGRhdGVTZXNzaW9uVmFs
aWRpdHkoKTsKKwogICAgIGNsYXNzIEl0ZW1Xcml0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJdGVt
V3JpdGVyPiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUmVmPEl0ZW1Xcml0ZXI+IGNy
ZWF0ZShDbGlwYm9hcmQmIGNsaXBib2FyZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0YjBkOWViZmJlOTJl
ZTgzZTY3NmJmN2Q1MjhhOGFmYzcxZjBlOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKQEAg
LTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDbGlwYm9hcmRJbWFnZVJlYWRlci5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgIVBMQVRGT1JNKENPQ09BKQorCit2b2lkIENs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
I2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKKworYm9vbCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6
c2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAoreworICAgIHJl
dHVybiAhbV9yZXN1bHQgJiYgbV9taW1lVHlwZSA9PSBtaW1lVHlwZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg4ODU0
MWMzNzQwNWNkOGNiYmFlZGI0MzUzMjY0Mjg1ZjQwMjUxZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVy
LmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQmxvYi5oIgorI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK3N0cnVjdCBDbGlwYm9hcmRJbWFnZVJlYWRlciA6
IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKKyAgICBDbGlwYm9hcmRJbWFnZVJlYWRlcihjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQorICAgICAgICA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyKCkKKyAgICAg
ICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8Qmxv
Yj4gdGFrZVJlc3VsdCgpIHsgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9yZXN1bHQsIG51bGxwdHIp
OyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmlu
YWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgYm9vbCBzaG91bGRSZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOworCisgICAgU3RyaW5nIG1fbWltZVR5cGU7CisgICAgUmVmUHRyPEJsb2I+IG1fcmVz
dWx0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2Fy
ZEltYWdlUmVhZGVySU9TLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzNDIyYTEwMjk4OTc2YzRlMGRjMjA3ZTZk
YzMzMGJmNDMxNjYzYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KQEAgLTAsMCAr
MSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ2xpcGJv
YXJkSW1hZ2VSZWFkZXIuaCIKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQg
IlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK3sKKyAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgeworICAgICAgICBhdXRv
IGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGlmIChhdXRvIG5zRGF0
YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCisgICAgICAgICAgICBt
X3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEpLCBtX21p
bWVUeXBlKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJN
YWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzcyYTA3ZmVjMDliZTNjZDgzYTA4OWIxYjA1MjZmNmNjM2UxNWI5
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMCwwICsxLDQ4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJDbGlwYm9hcmRJbWFnZVJlYWRl
ci5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQoreworICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7CisgICAgICAgIGF1
dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgaWYgKGF1dG8gYml0bWFwRGF0YSA9IHJl
dGFpblB0cihbaW1hZ2UgVElGRlJlcHJlc2VudGF0aW9uXSkpIHsKKyAgICAgICAgICAgIGF1dG8g
Yml0bWFwUmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10g
aW5pdFdpdGhEYXRhOmJpdG1hcERhdGEuZ2V0KCldKTsKKyAgICAgICAgICAgIG1fcmVzdWx0ID0g
QmxvYjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtiaXRtYXBSZXByZXNlbnRhdGlvbiBy
ZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGll
czpAeyB9XSksIG1fbWltZVR5cGUpOworICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLmgKaW5kZXggMGFkYzE5MjI5MGQ1ZmYxZWM5ZTEwYjZl
NjVhMDE2MTQ5OTYwZWU5NC4uNDhlMmM1ZDg4NjYxYTkyZDc2YTJmOWJkNGExMmQ0M2M4MDJkOWQz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsuaApAQCAtNzAs
NSArNzAsNiBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFVJS2l0LCBVSUFj
Y2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9uLCB2b2lkLAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoUEFMLCBVSUtpdCwgVUlHcmFwaGljc0dldEN1cnJlbnRDb250ZXh0LCBDR0NvbnRl
eHRSZWYsICh2b2lkKSwgKCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFVJ
S2l0LCBVSUdyYXBoaWNzUG9wQ29udGV4dCwgdm9pZCwgKHZvaWQpLCAoKSkKIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJR3JhcGhpY3NQdXNoQ29udGV4dCwgdm9p
ZCwgKENHQ29udGV4dFJlZiBjb250ZXh0KSwgKGNvbnRleHQpKQorU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9IRUFERVIoUEFMLCBVSUtpdCwgVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uLCBOU0RhdGEg
KiwgKFVJSW1hZ2UgKmltYWdlKSwgKGltYWdlKSkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5tbQppbmRleCA5OWM4NTA2NmQ2MWE0NjIwYzgwMzZh
NWViNzgzZGMwYzRjNjUxOGY0Li41MzliYzY0ODZmNDYwN2YyNjg1ZjA4MGJlOWQyZTJkMWYwMjJj
MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5r
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsubW0KQEAg
LTcwLDUgKzcwLDYgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwg
VUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbiwgdm9pZCwKIFNPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJR3JhcGhpY3NHZXRDdXJyZW50Q29udGV4dCwgQ0dD
b250ZXh0UmVmLCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFM
LCBVSUtpdCwgVUlHcmFwaGljc1BvcENvbnRleHQsIHZvaWQsICh2b2lkKSwgKCkpCiBTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSUdyYXBoaWNzUHVzaENvbnRleHQs
IHZvaWQsIChDR0NvbnRleHRSZWYgY29udGV4dCksIChjb250ZXh0KSkKK1NPRlRfTElOS19GVU5D
VElPTl9GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbiwgTlNE
YXRhICosIChVSUltYWdlICppbWFnZSksIChpbWFnZSkpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCBjY2Q2NzI4Yjg0ZTQ3YTRlZDQxMTg3MjE5Y2M5NTAxNjcwNDE3Y2I3Li4xODQzMzcyN2Y4
ZDk0YzcxZTI2Yzk3OGFkNDllYzc1NWNkZTQ1NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMzQsNiAr
MzQsNyBAQCBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKICNlbmRp
ZgogCiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCitNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW0uY3BwCiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggYjg1YWQ2NmU3ZTYyZTU3ZGNjNGFlNjlmMjkwOGZmOTE2ZDY4MjU3YS4uNmNkMTc0MjNmYzAy
MWFiYzYyNGU3NWNmMmEzZDhjYjI5ZDNmYWQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBA
IC0yMSw2ICsyMSw5IEBACiAvLyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCiAvLyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKK01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFn
ZVJlYWRlcklPUy5tbQorTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdl
UmVhZGVyTWFjLm1tCisKIE1vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwCiAKIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDA0ODlhZTQ4NGJlNDgyOWRmZDdlYjI4ODBkYzg1NjkzNGIzOGU5YmMuLmIzMDA2Njk3MmM5
YzhjZjU4ZTdmYzU5NGU1OGMxOWM3NDM4M2FmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUwODQsNiArNTA4NCw3IEBACiAJ
CUY0QjQyMkM0MjIwQzA1NjgwMDlFMUU3RCAvKiBET01QYXN0ZUFjY2Vzcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRCNDIyQzIyMjBDMDAwMDAwOUUx
RTdEIC8qIERPTVBhc3RlQWNjZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRjRCRkI5ODUxRTFEREY5QjAwODYyQzI0IC8qIER1bXBFZGl0aW5n
SGlzdG9yeS5qcyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQ4Mzg5ODMxRTFEREYyQjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAq
LzsgfTsKIAkJRjRCRkI5ODYxRTFEREY5QjAwODYyQzI0IC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5q
cyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4
Mzg5ODQxRTFEREYyQjAwNzZCN0VBIC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyAqLzsgfTsKKwkJ
RjRDNUYyMDcyNDc5RTg4MjAwRTlCNEY1IC8qIENsaXBib2FyZEltYWdlUmVhZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEM1RjIwNTI0NzlFN0VF
MDBFOUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCAqLzsgfTsKIAkJRjREMDc1NTgyMzRE
ODIyRDAwODgxRTczIC8qIENsaXBib2FyZEl0ZW1EYXRhU291cmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDZDNDQ3QTIzNDY1MzVFMDAzOUE3OUQg
LyogQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaCAqLzsgfTsKIAkJRjREMDc1NTkyMzREODIzMzAw
ODgxRTczIC8qIENsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2QzQ0ODAyMzQ2NTQ3QTAwMzlB
NzlEIC8qIENsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oICovOyB9OwogCQlGNEQ0
M0Q2NjIxODgwMzhCMDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ0M0Q2NDIxODgwMkU2
MDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1NzkyLDYgKzE1NzkzLDEwIEBACiAJ
CUY0OTc4Njg3MUZGNDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJkSXRlbUluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGFzdGVib2FyZEl0ZW1JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0OUU5OEU0MjFERUU2QzEwMDlBRTU1RSAvKiBFZGl0QWN0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEVkaXRBY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NEI0MjJDMjIyMEMwMDAwMDA5RTFFN0QgLyogRE9NUGFzdGVBY2Nlc3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NUGFzdGVBY2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRDNUYy
MDUyNDc5RTdFRTAwRTlCNEY1IC8qIENsaXBib2FyZEltYWdlUmVhZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENsaXBib2FyZEltYWdlUmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUY0QzVGMjA4MjQ3OUU5QzgwMEU5QjRGNSAvKiBDbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDbGlwYm9hcmRJbWFnZVJlYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUY0QzVGMjEzMjQ3OUZDNEUwMEU5QjRGNSAvKiBDbGlwYm9hcmRJbWFn
ZVJlYWRlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IENs
aXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOyBwYXRoID0gbWFjL0NsaXBib2FyZEltYWdlUmVhZGVy
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEM1RjIxNjI0NzlGQ0QxMDBF
OUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBDbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbTsgcGF0aCA9IGlv
cy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjRENDNENjQyMTg4MDJFNjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjREOTgxN0QyMTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RU
eXBlQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjREOTgxN0UyMTk1RkJGNjAwODIzMEZDIC8qIENo
YW5nZUxpc3RUeXBlQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGFuZ2VMaXN0VHlw
ZUNvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc5MDUsOSArMjc5
MTAsMTMgQEAKIAkJRjQ0MEU3NkEyMzNEOTNDODAwNjNGOUFCIC8qIGFzeW5jLWNsaXBib2FyZCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRjRDNUYyMTUy
NDc5RkNBRjAwRTlCNEY1IC8qIGlvcyAqLywKKwkJCQlGNEM1RjIxMjI0NzlGQzQwMDBFOUI0RjUg
LyogbWFjICovLAogCQkJCUY0NDBFNzZFMjMzRDk0RDMwMDYzRjlBQiAvKiBDbGlwYm9hcmQuY3Bw
ICovLAogCQkJCUY0NDBFNzcyMjMzRDk0RDUwMDYzRjlBQiAvKiBDbGlwYm9hcmQuaCAqLywKIAkJ
CQlGNDQwRTc3NDIzM0Q5NEQ2MDA2M0Y5QUIgLyogQ2xpcGJvYXJkLmlkbCAqLywKKwkJCQlGNEM1
RjIwODI0NzlFOUM4MDBFOUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwICovLAorCQkJ
CUY0QzVGMjA1MjQ3OUU3RUUwMEU5QjRGNSAvKiBDbGlwYm9hcmRJbWFnZVJlYWRlci5oICovLAog
CQkJCUY0NDBFNzc1MjMzRDk0RDYwMDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVtLmNwcCAqLywKIAkJ
CQlGNDQwRTc3MDIzM0Q5NEQ0MDA2M0Y5QUIgLyogQ2xpcGJvYXJkSXRlbS5oICovLAogCQkJCUY0
NDBFNzc3MjMzRDk0RDcwMDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVtLmlkbCAqLywKQEAgLTI3OTMy
LDYgKzI3OTQxLDIyIEBACiAJCQluYW1lID0gRWRpdGluZ0hpc3Rvcnk7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OworCQlGNEM1RjIxMjI0NzlGQzQwMDBFOUI0RjUgLyogbWFjICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlGNEM1RjIxMzI0
NzlGQzRFMDBFOUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gKi8sCisJCQkpOwor
CQkJbmFtZSA9IG1hYzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUY0QzVG
MjE1MjQ3OUZDQUYwMEU5QjRGNSAvKiBpb3MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCUY0QzVGMjE2MjQ3OUZDRDEwMEU5QjRGNSAvKiBDbGlwYm9hcmRJ
bWFnZVJlYWRlcklPUy5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gaW9zOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNBIC8qIGNzcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yOTkxNSw2ICsy
OTk0MCw3IEBACiAJCQkJRjQ0MEU3N0QyMzNEOTRENzAwNjNGOUFCIC8qIENsaXBib2FyZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0MzQTkxRTYxQzk2M0I4ODAwRDFBN0UzIC8qIENsaXBib2FyZEFj
Y2Vzc1BvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDAwQTQ0RUZDNzAwRjk5MkUw
IC8qIENsaXBib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNEM1RjIwNzI0NzlFODgy
MDBFOUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0
NDBFNzdCMjMzRDk0RDcwMDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVtLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGNDZDNDQ3RTIzNDY1NDU0MDAzOUE3OUQgLyogQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjREMDc1NTgyMzREODIyRDAwODgxRTczIC8q
IENsaXBib2FyZEl0ZW1EYXRhU291cmNlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuaAppbmRleCAxYjgyZGQ2NWJhYWYzZDRkMTQ0MTIyNWVkMjgxMzcxNWNk
MjM2NGM1Li5kY2MwYTM5MmIzMGRlYjJiNzkzNThhZDBlYmU3ZTQ5MTZhOWZiZjRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0xNjcsNiArMTY3LDcgQEAgc3RydWN0IFBh
c3RlYm9hcmRQbGFpblRleHQgewogc3RydWN0IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICB2
aXJ0dWFsIH5QYXN0ZWJvYXJkRmlsZVJlYWRlcigpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIC8qIHR5cGUgKi8pIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKQEAg
LTIxMSw3ICsyMTIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSA9
IFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6OkFsbG93VVJMLCBPcHRpb25hbDxzaXplX3Q+IGl0
ZW1JbmRleCA9IFdURjo6bnVsbG9wdCk7CiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGlj
eSA9IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5OjpBbnlUeXBlLCBPcHRpb25hbDxzaXplX3Q+IGl0
ZW1JbmRleCA9IFdURjo6bnVsbG9wdCk7Ci0gICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImKTsKKyAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUlu
ZGV4ID0gV1RGOjpudWxsb3B0KTsKIAogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCB3
cml0ZShjb25zdCBDb2xvciYpOwogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0
ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggYmExYWMxY2ZlZjU5OTQ2Yjc4Nzc5ZjRhZTQ1
YjM3MjJhM2FhZTdmYS4uMmFmMGI1MmYyM2VhOTNiOTc3OWI0MDYzMjU4NGVkOTM2MzkzYmVmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5t
bQpAQCAtMjE1LDI1ICsyMTUsMjIgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRU
SUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogfQogI2VuZGlmCiAKLXZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYgcmVhZGVyKQordm9pZCBQYXN0ZWJv
YXJkOjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiByZWFkZXIsIE9wdGlvbmFsPHNpemVfdD4g
aXRlbUluZGV4KQogewotICAgIGF1dG8gZmlsZW5hbWVzID0gcmVhZEZpbGVQYXRocygpOwotICAg
IGlmICghZmlsZW5hbWVzLmlzRW1wdHkoKSkgewotICAgICAgICBmb3IgKGF1dG8mIGZpbGVuYW1l
IDogZmlsZW5hbWVzKQotICAgICAgICAgICAgcmVhZGVyLnJlYWRGaWxlbmFtZShmaWxlbmFtZSk7
Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIWl0ZW1JbmRleCkgeworICAgICAgICBhdXRvIGZp
bGVuYW1lcyA9IHJlYWRGaWxlUGF0aHMoKTsKKyAgICAgICAgaWYgKCFmaWxlbmFtZXMuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogZmlsZW5hbWVzKQorICAg
ICAgICAgICAgICAgIHJlYWRlci5yZWFkRmlsZW5hbWUoZmlsZW5hbWUpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byBhbGxJbmZvID0gYWxsUGFzdGVi
b2FyZEl0ZW1JbmZvKCk7Ci0gICAgaWYgKCFhbGxJbmZvKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBmb3IgKHNpemVfdCBpdGVtSW5kZXggPSAwOyBpdGVtSW5kZXggPCBhbGxJbmZvLT5zaXplKCk7
ICsraXRlbUluZGV4KSB7Ci0gICAgICAgIGF1dG8mIGluZm8gPSBhbGxJbmZvLT5hdChpdGVtSW5k
ZXgpOworICAgIGF1dG8gcmVhZEJ1ZmZlckF0SW5kZXggPSBbJl0oY29uc3QgUGFzdGVib2FyZEl0
ZW1JbmZvJiBpbmZvLCBzaXplX3QgaXRlbUluZGV4KSB7CiAgICAgICAgIGZvciAoYXV0byBjb2Nv
YVR5cGUgOiBpbmZvLnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5KSB7CiAgICAgICAgICAgICBhdXRv
IGltYWdlVHlwZSA9IGNvY29hVHlwZVRvSW1hZ2VUeXBlKGNvY29hVHlwZSk7CiAgICAgICAgICAg
ICBhdXRvKiBtaW1lVHlwZSA9IGltYWdlVHlwZVRvTUlNRVR5cGUoaW1hZ2VUeXBlKTsKLSAgICAg
ICAgICAgIGlmICghbWltZVR5cGUpCisgICAgICAgICAgICBpZiAoIW1pbWVUeXBlIHx8ICFyZWFk
ZXIuc2hvdWxkUmVhZEJ1ZmZlcihtaW1lVHlwZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IHJlYWRCdWZmZXIoaXRlbUluZGV4LCBjb2NvYVR5
cGUpOwogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTI0NSw2ICsyNDIsMTcgQEAgdm9pZCBQYXN0ZWJv
YXJkOjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiByZWFkZXIpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICB9OworCisgICAgaWYgKGl0ZW1J
bmRleCkgeworICAgICAgICBpZiAoYXV0byBpbmZvID0gcGFzdGVib2FyZEl0ZW1JbmZvKCppdGVt
SW5kZXgpKQorICAgICAgICAgICAgcmVhZEJ1ZmZlckF0SW5kZXgoKmluZm8sICppdGVtSW5kZXgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGF1dG8gYWxsSW5mbyA9IGFsbFBh
c3RlYm9hcmRJdGVtSW5mbygpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGl0ZW1JbmRleCA9IDA7
IGl0ZW1JbmRleCA8IGFsbEluZm8tPnNpemUoKTsgKytpdGVtSW5kZXgpCisgICAgICAgICAgICBy
ZWFkQnVmZmVyQXRJbmRleChhbGxJbmZvLT5hdChpdGVtSW5kZXgpLCBpdGVtSW5kZXgpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3Bw
CmluZGV4IDJkN2I4ODVhNjVkZGIxMDI2ZjZlYzE2YWYzOTFhZDIyNGRhMzA1MGYuLmY3NWZmZjM4
YTZmMWQyZWNjMjBlMDVmMWM2OGQzNzRlMzdjY2QyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29u
dGVudFJlYWRpbmdQb2xpYwogICAgIH0KIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3Rl
Ym9hcmRGaWxlUmVhZGVyJiByZWFkZXIpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2Fy
ZEZpbGVSZWFkZXImIHJlYWRlciwgT3B0aW9uYWw8c2l6ZV90PikKIHsKICAgICBpZiAobV9zZWxl
Y3Rpb25EYXRhKSB7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZmlsZVBhdGggOiBtX3NlbGVj
dGlvbkRhdGEtPmZpbGVuYW1lcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggZDJmMzIyMDA0N2Y2ZjM0MzUzNTZj
OTc4NzUxMDM4ZTZiOGIwZjE5ZC4uZmQzYTg1YWUwYWI2MGY5NDlhMjZiZjJkOGMwMjdhN2Y5NTU3
YTdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVHJl
YXRBdExlYXN0T25lVHlwZUFzRmlsZShOU0FycmF5PE5TU3RyaW5nICo+ICpwbGF0Zm9ybVR5cGVz
KQogCiAjaWYgUEFTVEVCT0FSRF9TVVBQT1JUU19JVEVNX1BST1ZJREVSUwogCi1zdGF0aWMgY29u
c3QgY2hhciAqc2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZUZvclBsYXRmb3JtVHlwZShjb25z
dCBTdHJpbmcmIHBsYXRmb3JtVHlwZSkKK3N0YXRpYyBjb25zdCBjaGFyICpzYWZlVHlwZUZvckRP
TVRvUmVhZEFuZFdyaXRlRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYgcGxhdGZvcm1UeXBl
LCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OkluY2x1ZGVJbWFnZVR5cGVzIGluY2x1ZGVJbWFnZVR5cGVz
KQogewogICAgIGF1dG8gY2ZUeXBlID0gcGxhdGZvcm1UeXBlLmNyZWF0ZUNGU3RyaW5nKCk7CiAg
ICAgaWYgKFVUVHlwZUNvbmZvcm1zVG8oY2ZUeXBlLmdldCgpLCBrVVRUeXBlUGxhaW5UZXh0KSkK
QEAgLTExOSwxMCArMTE5LDEzIEBAIHN0YXRpYyBjb25zdCBjaGFyICpzYWZlVHlwZUZvckRPTVRv
UmVhZEFuZFdyaXRlRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYgcGxhCiAgICAgaWYgKFVU
VHlwZUNvbmZvcm1zVG8oY2ZUeXBlLmdldCgpLCBrVVRUeXBlVVJMKSkKICAgICAgICAgcmV0dXJu
ICJ0ZXh0L3VyaS1saXN0Il9zOwogCisgICAgaWYgKGluY2x1ZGVJbWFnZVR5cGVzID09IFBsYXRm
b3JtUGFzdGVib2FyZDo6SW5jbHVkZUltYWdlVHlwZXM6OlllcyAmJiBVVFR5cGVDb25mb3Jtc1Rv
KGNmVHlwZS5nZXQoKSwga1VUVHlwZVBORykpCisgICAgICAgIHJldHVybiAiaW1hZ2UvcG5nIl9z
OworCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBWZWN0b3I8U3RyaW5nPiB3ZWJT
YWZlVHlwZXMoTlNBcnJheTxOU1N0cmluZyAqPiAqcGxhdGZvcm1UeXBlcywgRnVuY3Rpb248Ym9v
bCgpPiYmIHNob3VsZEF2b2lkRXhwb3NpbmdVUkxUeXBlKQorc3RhdGljIFZlY3RvcjxTdHJpbmc+
IHdlYlNhZmVUeXBlcyhOU0FycmF5PE5TU3RyaW5nICo+ICpwbGF0Zm9ybVR5cGVzLCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OkluY2x1ZGVJbWFnZVR5cGVzIGluY2x1ZGVJbWFnZVR5cGVzLCBGdW5jdGlv
bjxib29sKCk+JiYgc2hvdWxkQXZvaWRFeHBvc2luZ1VSTFR5cGUpCiB7CiAgICAgTGlzdEhhc2hT
ZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlwZXM7CiAgICAgZm9yIChOU1N0cmluZyAqdHlwZSBp
biBwbGF0Zm9ybVR5cGVzKSB7CkBAIC0xMzQsNyArMTM3LDcgQEAgc3RhdGljIFZlY3RvcjxTdHJp
bmc+IHdlYlNhZmVUeXBlcyhOU0FycmF5PE5TU3RyaW5nICo+ICpwbGF0Zm9ybVR5cGVzLCBGdW5j
dGlvbjwKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGF1
dG8qIGNvZXJjZWRUeXBlID0gc2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZUZvclBsYXRmb3Jt
VHlwZSh0eXBlKSkgeworICAgICAgICBpZiAoYXV0byogY29lcmNlZFR5cGUgPSBzYWZlVHlwZUZv
ckRPTVRvUmVhZEFuZFdyaXRlRm9yUGxhdGZvcm1UeXBlKHR5cGUsIGluY2x1ZGVJbWFnZVR5cGVz
KSkgewogICAgICAgICAgICAgYXV0byBkb21UeXBlQXNTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4
KGNvZXJjZWRUeXBlKTsKICAgICAgICAgICAgIGlmIChkb21UeXBlQXNTdHJpbmcgPT0gInRleHQv
dXJpLWxpc3QiX3MgJiYgKFtwbGF0Zm9ybVR5cGVzIGNvbnRhaW5zT2JqZWN0OihfX2JyaWRnZSBO
U1N0cmluZyAqKWtVVFR5cGVGaWxlVVJMXSB8fCBzaG91bGRBdm9pZEV4cG9zaW5nVVJMVHlwZSgp
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIzMyw3ICsyMzYsNyBAQCBPcHRpb25h
bDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmRleChzaXplXwogICAgICAgICBpbmZvLmlzTm9uVGV4dFR5cGUgPSB0cnVlOwogICAg
IH0KIAotICAgIGluZm8ud2ViU2FmZVR5cGVzQnlGaWRlbGl0eSA9IHdlYlNhZmVUeXBlcyhyZWdp
c3RlcmVkVHlwZUlkZW50aWZpZXJzLCBbJl0geworICAgIGluZm8ud2ViU2FmZVR5cGVzQnlGaWRl
bGl0eSA9IHdlYlNhZmVUeXBlcyhyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzLCBJbmNsdWRlSW1h
Z2VUeXBlczo6WWVzLCBbJl0gewogICAgICAgICByZXR1cm4gc2hvdWxkVHJlYXRBdExlYXN0T25l
VHlwZUFzRmlsZShyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzKSAmJiAhUGFzdGVib2FyZDo6Y2Fu
RXhwb3NlVVJMVG9ET01XaGVuUGFzdGVib2FyZENvbnRhaW5zRmlsZXMocmVhZFN0cmluZyhpbmRl
eCwga1VUVHlwZVVSTCkpOwogICAgIH0pOwogCkBAIC01NjQsNyArNTY3LDcgQEAgVmVjdG9yPFN0
cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShj
b25zdCBTdHJpbmcmIG8KICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gd2ViU2FmZVBhc3Rl
Ym9hcmRUeXBlcyA9IHdlYlNhZmVUeXBlcyhbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10s
IFsmXSB7CisgICAgYXV0byB3ZWJTYWZlUGFzdGVib2FyZFR5cGVzID0gd2ViU2FmZVR5cGVzKFtt
X3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSwgSW5jbHVkZUltYWdlVHlwZXM6Ok5vLCBbJl0g
ewogICAgICAgICBCT09MIGFibGVUb0RldGVybWluZVByb3RvY29sT2ZQYXN0ZWJvYXJkVVJMID0g
IVttX3Bhc3RlYm9hcmQgaXNLaW5kT2ZDbGFzczpbV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBj
bGFzc11dOwogICAgICAgICByZXR1cm4gYWJsZVRvRGV0ZXJtaW5lUHJvdG9jb2xPZlBhc3RlYm9h
cmRVUkwgJiYgc3RyaW5nRm9yVHlwZShrVVRUeXBlVVJMKS5pc0VtcHR5KCk7CiAgICAgfSk7CkBA
IC01OTYsMTggKzU5OSwyOCBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lz
dHJhdGlvbkluZm9MaXN0PiBjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYQogICAgICAgICB9CiAg
ICAgfQogCi0gICAgZGF0YS5mb3JFYWNoUGxhdGZvcm1TdHJpbmcoWyZdIChhdXRvJiB0eXBlLCBh
dXRvJiB2YWx1ZSkgewotICAgICAgICBpZiAoIXZhbHVlKQorICAgIGRhdGEuZm9yRWFjaFBsYXRm
b3JtU3RyaW5nT3JCdWZmZXIoWyZdIChhdXRvJiB0eXBlLCBhdXRvJiB2YWx1ZSkgeworICAgICAg
ICBhdXRvIGNvY29hVHlwZSA9IFBsYXRmb3JtUGFzdGVib2FyZDo6cGxhdGZvcm1QYXN0ZWJvYXJk
VHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUodHlwZSwgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpJbmNsdWRlSW1hZ2VUeXBlczo6WWVzKTsKKyAgICAgICAgaWYgKGNvY29hVHlwZS5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgTlNTdHJpbmcgKnN0cmluZ1Zh
bHVlID0gdmFsdWU7Ci0gICAgICAgIGF1dG8gY29jb2FUeXBlID0gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZSh0
eXBlLCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OkluY2x1ZGVJbWFnZVR5cGVzOjpZZXMpLmNyZWF0ZUNG
U3RyaW5nKCk7Ci0gICAgICAgIGlmIChVVFR5cGVDb25mb3Jtc1RvKGNvY29hVHlwZS5nZXQoKSwg
a1VUVHlwZVVSTCkpCi0gICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRS
ZXByZXNlbnRpbmdPYmplY3Q6W05TVVJMIFVSTFdpdGhTdHJpbmc6c3RyaW5nVmFsdWVdXTsKLSAg
ICAgICAgZWxzZSBpZiAoVVRUeXBlQ29uZm9ybXNUbyhjb2NvYVR5cGUuZ2V0KCksIGtVVFR5cGVQ
bGFpblRleHQpKQotICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVw
cmVzZW50aW5nT2JqZWN0OnN0cmluZ1ZhbHVlXTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpbc3RyaW5nVmFsdWUgZGF0YVVzaW5n
RW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FU
eXBlLmdldCgpXTsKKyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPih2
YWx1ZSkpIHsKKyAgICAgICAgICAgIGlmIChXVEY6OmdldDxTdHJpbmc+KHZhbHVlKS5pc051bGwo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIE5TU3RyaW5nICpuc1N0
cmluZ1ZhbHVlID0gV1RGOjpnZXQ8U3RyaW5nPih2YWx1ZSk7CisgICAgICAgICAgICBhdXRvIGNm
VHlwZSA9IGNvY29hVHlwZS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICAgICAgaWYgKFVUVHlw
ZUNvbmZvcm1zVG8oY2ZUeXBlLmdldCgpLCBrVVRUeXBlVVJMKSkKKyAgICAgICAgICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6W05TVVJMIFVS
TFdpdGhTdHJpbmc6bnNTdHJpbmdWYWx1ZV1dOworICAgICAgICAgICAgZWxzZSBpZiAoVVRUeXBl
Q29uZm9ybXNUbyhjZlR5cGUuZ2V0KCksIGtVVFR5cGVQbGFpblRleHQpKQorICAgICAgICAgICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDpuc1N0
cmluZ1ZhbHVlXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOltuc1N0cmluZ1ZhbHVlIGRhdGFVc2luZ0VuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGJ1ZmZlciA9IFdU
Rjo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7CisgICAgICAgIFtyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
OihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKICAgICByZXR1cm4gcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xp
YndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCBiNjMwZGZiN2Q2ZTVhYTBkM2ZmNzUzOWNkOGQw
YjkyZTU3ZTEyYTU0Li43OGI0OGEzYTg5MmU0NmI4YzE1MGFiMjc3MDUwYjAyNThlZjY5MDY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQ
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJX
UEUuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9h
cmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIE9wdGkKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZp
bGVSZWFkZXImKQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwg
T3B0aW9uYWw8c2l6ZV90PikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDcxODNmOTA1NmE4MGQwZTM2ZmZkYTcwZmQyMWI0ZGY3
ZmE3MGQ1ZGQuLmYzY2I2Njg5OWJkYWE0ZTYwNTk3MmQ5YTUzNDM4OGE3ZDFkNDliNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTMyNSw3
ICszMjUsNyBAQCBQYXN0ZWJvYXJkOjpGaWxlQ29udGVudFN0YXRlIFBhc3RlYm9hcmQ6OmZpbGVD
b250ZW50U3RhdGUoKQogICAgIHJldHVybiByZWFkZXIuY291bnQgPyBGaWxlQ29udGVudFN0YXRl
OjpNYXlDb250YWluRmlsZVBhdGhzIDogRmlsZUNvbnRlbnRTdGF0ZTo6Tm9GaWxlT3JJbWFnZURh
dGE7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYgcmVh
ZGVyKQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiByZWFkZXIs
IE9wdGlvbmFsPHNpemVfdD4pCiB7CiAjaWYgVVNFKENGKQogICAgIGlmIChtX2RhdGFPYmplY3Qp
IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBh
MjBiYjgwNWM2MzY2ODZhNDQwYmM0MDc1ODU5MDQ2OTk4Mjg4OTk5Li5jMTU4N2ZhOGVlZWE1OGQy
NWU5ODY5OGM4MjNhMTcwYWEyN2EyZWFjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDUtMjQgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NsaXBib2FyZCBBUEld
IFN1cHBvcnQgcmVhZGluZyAiaW1hZ2UvcG5nIiBvbiBDbGlwYm9hcmRJdGVtCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIzMzkKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzYzNTg4OTU3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkgdGVzdCB0byB2ZXJpZnkgdGhhdCBUSUZGIGlt
YWdlcyBvbiB0aGUgc3lzdGVtIHBhc3RlYm9hcmQgb24gbWFjT1MgYXJlIGF1dG9tYXRpY2FsbHkg
Y29udmVydGVkIHRvCisgICAgICAgIFBORyBkYXRhLCBhbmQgaXMgYWNjZXNzaWJsZSB0aHJvdWdo
IGBDbGlwYm9hcmRJdGVtYCB0aHJvdWdoIHRoZSAiaW1hZ2UvcG5nIiB0eXBlLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DbGlwYm9hcmRUZXN0cy5tbToKKwog
MjAyMC0wNS0yMiAgUGF1bG8gTWF0b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgW25vLV11c2UtY2NhY2hlIG9wdGlvbiBpbiBidWlsZC1qc2MKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2xpcGJvYXJkVGVz
dHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NsaXBib2FyZFRl
c3RzLm1tCmluZGV4IGNmMTMzN2ZhNGJiZTQyNjI1ZGMyNGEwZTlkNWZhMWE2NjRkZjJmMTUuLjRl
NTVjZjAxYTk3ZjI3OWI0MmRjMGRhZDUyOGNhZTY1YmFhNmFhN2UgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2xpcGJvYXJkVGVzdHMubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DbGlwYm9hcmRUZXN0cy5tbQpA
QCAtMTY1LDMgKzE2NSwyMSBAQCBURVNUKENsaXBib2FyZFRlc3RzLCBXcml0ZVNhbml0aXplZE1h
cmt1cCkKICAgICBFWFBFQ1RfRkFMU0UoW3dyaXR0ZW5NYXJrdXAgY29udGFpbnNTdHJpbmc6QCJz
dXBlciBzZWNyZXQiXSk7CiAgICAgRVhQRUNUX0ZBTFNFKFt3cml0dGVuTWFya3VwIGNvbnRhaW5z
U3RyaW5nOkAiPHNjcmlwdD4iXSk7CiB9CisKKyNpZiBQTEFURk9STShNQUMpCisKK1RFU1QoQ2xp
cGJvYXJkVGVzdHMsIENvbnZlcnRUSUZGVG9QTkdXaGVuUGFzdGluZykKK3sKKyAgICBhdXRvIHdl
YlZpZXcgPSBjcmVhdGVXZWJWaWV3Rm9yQ2xpcGJvYXJkVGVzdHMoKTsKKyAgICBhdXRvIHVybCA9
IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzdW5zZXQtaW4tY3VwZXJ0
aW5vLTEwMHB4IiB3aXRoRXh0ZW5zaW9uOkAidGlmZiIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBOU1Bhc3RlYm9hcmQuZ2Vu
ZXJhbFBhc3RlYm9hcmQ7CisgICAgW3Bhc3RlYm9hcmQgY2xlYXJDb250ZW50c107CisgICAgW3Bh
c3RlYm9hcmQgc2V0RGF0YTpbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDp1cmxdIGZvclR5
cGU6TlNQYXN0ZWJvYXJkVHlwZVRJRkZdOworICAgIFt3ZWJWaWV3IHJlYWRDbGlwYm9hcmRdOwor
CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZXhjZXB0aW9uID8gZXhjZXB0aW9uLm1lc3NhZ2UgOiAnJyJdKTsKKyAgICBFWFBF
Q1RfRVEoMVUsIFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJv
YXJkRGF0YS5sZW5ndGgiXSB1bnNpZ25lZEludFZhbHVlXSk7CisgICAgRVhQRUNUX1RSVUUoW1t3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRhWzBdWydp
bWFnZS9wbmcnXS5zcmMiXSBjb250YWluc1N0cmluZzpAImJsb2I6Il0pOworfQorCisjZW5kaWYg
Ly8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNiYmQ3MzIwMjdhZDlhZmQ4MzFhMThiYTgyZTIwYTJk
OGMxNDYyNTEuLjY4YzYxYzY1ZjJiNGM4MTE4NzM4YTMxN2FlNmZiY2M4NjI5YmY5NGMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMyBAQAorMjAyMC0wNS0yNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJkIEFQSV0gU3VwcG9ydCByZWFkaW5nICJp
bWFnZS9wbmciIG9uIENsaXBib2FyZEl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjMzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM1ODg5
NTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGEgbmV3IGxheW91dCB0ZXN0IHRvIHZlcmlmeSB0aGF0IGBDbGlwYm9hcmQud3JpdGVgIGFuZCBg
Q2xpcGJvYXJkLnJlYWRgIGNhbiBiZSB1c2VkIHRvIGNvcHkgYW5kIHRoZW4gcmVhZAorICAgICAg
ICBiYWNrIFBORyBpbWFnZSBkYXRhLgorCisgICAgICAgICogZWRpdGluZy9hc3luYy1jbGlwYm9h
cmQvY2xpcGJvYXJkLXJlYWQtd3JpdGUtaW1hZ2VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLXJlYWQtd3JpdGUtaW1hZ2Vz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL3Jlc291cmNl
cy9hc3luYy1jbGlwYm9hcmQtaGVscGVycy5qczoKKyAgICAgICAgKHNhbXBsZUJhc2U2NFBOR0lt
YWdlRGF0YTEpOgorICAgICAgICAoc2FtcGxlQmFzZTY0UE5HSW1hZ2VEYXRhMik6CisgICAgICAg
IChpbWFnZUJsb2IpOgorICAgICAgICAoc2FtcGxlQmFzZTY0UE5HSW1hZ2VEYXRhKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0wNS0y
MiAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQU5HTEUg
LSBpT1NdIGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWRlcHRoLXRleHR1cmUuaHRtbCBpcyBmYWls
aW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlw
Ym9hcmQtcmVhZC13cml0ZS1pbWFnZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLXJlYWQtd3JpdGUtaW1hZ2VzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kYTYxNzc1MzE1YTQ2NjY0ZGY0MTA0ZDI4NGE5OWZmYTg0YjAzM2YxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xp
cGJvYXJkLXJlYWQtd3JpdGUtaW1hZ2VzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitU
aGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBtdWx0aXBsZSBpbWFnZXMgY2FuIGJlIHdyaXR0ZW4gdG8g
YW5kIHJlYWQgZnJvbSB0aGUgc3lzdGVtIGNsaXBib2FyZC4gVG8gbWFudWFsbHkgcnVuIHRoZSB0
ZXN0LCB0YXAgdGhlIGNvcHkgYnV0dG9uLCBhbmQgdGhlbiB0YXAgcGFzdGUuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvbmVXcml0aW5nIGJlY2FtZSB0cnVlCitQQVNT
IGl0ZW1zLmxlbmd0aCBpcyAyCitQQVNTIGl0ZW0udHlwZXMubGVuZ3RoIGlzIDEKK1BBU1MgaXRl
bS50eXBlcy5pbmNsdWRlcygnaW1hZ2UvcG5nJykgaXMgdHJ1ZQorUEFTUyBQYXN0ZWQgNjAgYnkg
NjAgaW1hZ2UuCitQQVNTIGl0ZW0udHlwZXMubGVuZ3RoIGlzIDEKK1BBU1MgaXRlbS50eXBlcy5p
bmNsdWRlcygnaW1hZ2UvcG5nJykgaXMgdHJ1ZQorUEFTUyBQYXN0ZWQgMjAgYnkgMjAgaW1hZ2Uu
CitQQVNTIGRvbmVSZWFkaW5nIGJlY2FtZSB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1yZWFkLXdyaXRlLWltYWdlcy5odG1sIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLXJlYWQtd3JpdGUtaW1h
Z2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGZkMDcyOTBiZWQ1NmJhMDdmNmUwYzdkMjRkMDU4ZDJmZDJm
MTY5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJv
YXJkL2NsaXBib2FyZC1yZWFkLXdyaXRlLWltYWdlcy5odG1sCkBAIC0wLDAgKzEsNzQgQEAKKzwh
RE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3Bv
cnQ9dHJ1ZSBleHBlcmltZW50YWw6QXN5bmNDbGlwYm9hcmRBUElFbmFibGVkPXRydWUgXSAtLT4K
KzxodG1sPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0ZjgiPgorICAgIDxoZWFkPgorICAgICAgICA8
bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFs
LXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuL3Jlc291cmNlcy9hc3luYy1jbGlwYm9hcmQtaGVscGVycy5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzdHlsZT4KKyAgICAgICAgICAgIGJ1dHRvbiB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDEwMHB4OworICAgICAgICAgICAgICAgIHBhZGRpbmc6IDFlbTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAganNUZXN0
SXNBc3luYyA9IHRydWU7CisgICAgICAgIGRvbmVXcml0aW5nID0gZmFsc2U7CisgICAgICAgIGRv
bmVSZWFkaW5nID0gZmFsc2U7CisKKyAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJp
ZmllcyB0aGF0IG11bHRpcGxlIGltYWdlcyBjYW4gYmUgd3JpdHRlbiB0byBhbmQgcmVhZCBmcm9t
IHRoZSBzeXN0ZW0gY2xpcGJvYXJkLiBUbyBtYW51YWxseSBydW4gdGhlIHRlc3QsIHRhcCB0aGUg
Y29weSBidXR0b24sIGFuZCB0aGVuIHRhcCBwYXN0ZS4iKTsKKworICAgICAgICBhc3luYyBmdW5j
dGlvbiBydW5UZXN0KCkgeworICAgICAgICAgICAgY29uc3QgY29weUJ1dHRvbiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb3B5Iik7CisgICAgICAgICAgICBjb25zdCBwYXN0ZUJ1dHRvbiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXN0ZSIpOworICAgICAgICAgICAgY29uc3QgaW1h
Z2VzQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltYWdlc0NvbnRhaW5lciIp
OworICAgICAgICAgICAgY29weUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGFzeW5j
IGV2ZW50ID0+IHsKKyAgICAgICAgICAgICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndy
aXRlKFsKKyAgICAgICAgICAgICAgICAgICAgbmV3IENsaXBib2FyZEl0ZW0oeyAiaW1hZ2UvcG5n
IiA6IFByb21pc2UucmVzb2x2ZShpbWFnZUJsb2IoKSkgfSksCisgICAgICAgICAgICAgICAgICAg
IG5ldyBDbGlwYm9hcmRJdGVtKHsgImltYWdlL3BuZyIgOiBQcm9taXNlLnJlc29sdmUoaW1hZ2VC
bG9iKHNhbXBsZUJhc2U2NFBOR0ltYWdlRGF0YTIoKSkpIH0pCisgICAgICAgICAgICAgICAgXSk7
CisgICAgICAgICAgICAgICAgZG9uZVdyaXRpbmcgPSB0cnVlOworICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgIHBhc3RlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgYXN5bmMg
ZXZlbnQgPT4geworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGl0
ZW1zID0gYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkKCk7CisgICAgICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJpdGVtcy5sZW5ndGgiLCAiMiIpOworICAgICAgICAgICAgICAgICAgICBm
b3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRv
dy5pdGVtID0gaXRlbTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJpdGVtLnR5
cGVzLmxlbmd0aCIsICIxIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUo
Iml0ZW0udHlwZXMuaW5jbHVkZXMoJ2ltYWdlL3BuZycpIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBpbWFnZURhdGEgPSBhd2FpdCBpdGVtLmdldFR5cGUoImltYWdlL3BuZyIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1hZ2UgPSBhd2FpdCBsb2FkSW1hZ2UoaW1h
Z2VEYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlc0NvbnRhaW5lci5hcHBlbmRD
aGlsZChpbWFnZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBpbWFnZS5kZWNvZGUo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsaWVudFJlY3QgPSBpbWFnZS5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
YFBhc3RlZCAke2NsaWVudFJlY3Qud2lkdGh9IGJ5ICR7Y2xpZW50UmVjdC5oZWlnaHR9IGltYWdl
LmApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXhj
ZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYENhdWdodCBleGNlcHRp
b246ICR7ZXhjZXB0aW9ufWApOworICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAg
ICAgICAgICAgICAgIGRvbmVSZWFkaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50
KGNvcHlCdXR0b24pOworICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBz
aG91bGRCZWNvbWVFcXVhbCgiZG9uZVdyaXRpbmciLCAidHJ1ZSIsIHJlc29sdmUpKTsKKworICAg
ICAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50KHBhc3RlQnV0dG9uKTsKKyAg
ICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2hvdWxkQmVjb21lRXF1YWwo
ImRvbmVSZWFkaW5nIiwgInRydWUiLCByZXNvbHZlKSk7CisKKyAgICAgICAgICAgIFtwYXN0ZUJ1
dHRvbiwgY29weUJ1dHRvbl0ubWFwKGJ1dHRvbiA9PiBidXR0b24ucmVtb3ZlKCkpOworICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBhZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgcnVuVGVzdCk7CisgICAgPC9zY3JpcHQ+CisgICAgPGJvZHk+CisgICAgICAg
IDxidXR0b24gaWQ9ImNvcHkiPkNvcHk8L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBpZD0icGFz
dGUiPlBhc3RlPC9idXR0b24+CisgICAgICAgIDxkaXYgaWQ9ImltYWdlc0NvbnRhaW5lciI+PC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9hc3luYy1jbGlwYm9hcmQvcmVzb3VyY2VzL2FzeW5jLWNsaXBib2FyZC1oZWxwZXJzLmpzIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvcmVzb3VyY2VzL2FzeW5jLWNsaXBi
b2FyZC1oZWxwZXJzLmpzCmluZGV4IDYxYmM2YTFmODQ1YmVhYjY0ZWZkMDQzM2UxMGQxZjYyM2Mx
MjNjMzQuLjY3Y2FhMmJmYTJjYTRmMDNlNDJkMTE1Y2VlNTJhY2NhYTA1N2RjNjAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL3Jlc291cmNlcy9hc3luYy1j
bGlwYm9hcmQtaGVscGVycy5qcworKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBi
b2FyZC9yZXNvdXJjZXMvYXN5bmMtY2xpcGJvYXJkLWhlbHBlcnMuanMKQEAgLTEsOSArMSwxNCBA
QAotZnVuY3Rpb24gc2FtcGxlQmFzZTY0UE5HSW1hZ2VEYXRhKCkgeworZnVuY3Rpb24gc2FtcGxl
QmFzZTY0UE5HSW1hZ2VEYXRhMSgpIHsKICAgICAvLyBBIDYwIGJ5IDYwIHNvbGlkIHJlZCBzcXVh
cmUuCiAgICAgcmV0dXJuICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRHdBQUFBOENBWUFBQUE2
L05seUFBQUFBWE5TUjBJQXJzNGM2UUFBQUpabFdFbG1UVTBBS2dBQUFBZ0FCQUVhQUFVQUFBQUJB
QUFBUGdFYkFBVUFBQUFCQUFBQVJnRW9BQU1BQUFBQkFBSUFBSWRwQUFRQUFBQUJBQUFBVGdBQUFB
QUFBQUNRQUFBQUFRQUFBSkFBQUFBQkFBU1NoZ0FIQUFBQUVnQUFBSVNnQVFBREFBQUFBUUFCQUFD
Z0FnQUVBQUFBQVFBQUFEeWdBd0FFQUFBQUFRQUFBRHdBQUFBQVFWTkRTVWtBQUFCVFkzSmxaVzV6
YUc5MENVZzBtd0FBQUFsd1NGbHpBQUFXSlFBQUZpVUJTVklrOEFBQUFkUnBWRmgwV0UxTU9tTnZi
UzVoWkc5aVpTNTRiWEFBQUFBQUFEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJu
TTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlsaE5VQ0JEYjNKbElEVXVOQzR3SWo0S0lDQWdQSEprWmpw
U1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5
TFhKa1ppMXplVzUwWVhndGJuTWpJajRLSUNBZ0lDQWdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnla
R1k2WVdKdmRYUTlJaUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02WlhocFpqMGlhSFIwY0Rvdkwy
NXpMbUZrYjJKbExtTnZiUzlsZUdsbUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVho
bGJGaEVhVzFsYm5OcGIyNCtOakE4TDJWNGFXWTZVR2w0Wld4WVJHbHRaVzV6YVc5dVBnb2dJQ0Fn
SUNBZ0lDQThaWGhwWmpwVmMyVnlRMjl0YldWdWRENVRZM0psWlc1emFHOTBQQzlsZUdsbU9sVnpa
WEpEYjIxdFpXNTBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K05q
QThMMlY0YVdZNlVHbDRaV3haUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0E4TDNKa1pqcEVaWE5qY21s
d2RHbHZiajRLSUNBZ1BDOXlaR1k2VWtSR1BnbzhMM2c2ZUcxd2JXVjBZVDRLOStCbWJBQUFBQnhw
UkU5VUFBQUFBZ0FBQUFBQUFBQWVBQUFBS0FBQUFCNEFBQUFlQUFBQWxzL0dVSThBQUFCaVNVUkJW
R2dGN05JeEFRQWdETVJBNm9nZC83cEFRQnlFZFB6dC96cjM3THMrdXFtd1hEdGhPZkJLT0dIWkFy
MjBEQlIxRXNZa3NpQmhHU2pxSkl4SlpFSENNbERVU1JpVHlJS0VaYUNva3pBbWtRVUp5MEJSSjJG
TUlnc1Nsb0dpemdNQUFQLy9ZNGIySlFBQUFHQkpSRUZVN2RJeEFRQWdETVJBNm9nZC83cEFRQnlF
ZFB6dC96cjM3THMrdXFtd1hEdGhPZkJLT0dIWkFyMjBEQlIxRXNZa3NpQmhHU2pxSkl4SlpFSENN
bERVU1JpVHlJS0VaYUNva3pBbWtRVUp5MEJSSjJGTUlnc1Nsb0dpemdPbDNwRFpCQmEwaHdBQUFB
QkpSVTVFcmtKZ2dnIjsKIH0KIAotZnVuY3Rpb24gaW1hZ2VCbG9iKGJhc2U2NFN0cmluZyA9IHNh
bXBsZUJhc2U2NFBOR0ltYWdlRGF0YSgpKSB7CitmdW5jdGlvbiBzYW1wbGVCYXNlNjRQTkdJbWFn
ZURhdGEyKCkgeworICAgIC8vIEEgMjAgYnkgMjAgYmxhY2sgc3F1YXJlLgorICAgIHJldHVybiAi
aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBQVhOU1IwSUFy
czRjNlFBQUFKWmxXRWxtVFUwQUtnQUFBQWdBQkFFYUFBVUFBQUFCQUFBQVBnRWJBQVVBQUFBQkFB
QUFSZ0VvQUFNQUFBQUJBQUlBQUlkcEFBUUFBQUFCQUFBQVRnQUFBQUFBQUFDUUFBQUFBUUFBQUpB
QUFBQUJBQVNTaGdBSEFBQUFFZ0FBQUlTZ0FRQURBQUFBQVFBQkFBQ2dBZ0FFQUFBQUFRQUFBQlNn
QXdBRUFBQUFBUUFBQUJRQUFBQUFRVk5EU1VrQUFBQlRZM0psWlc1emFHOTBYcVZTdGdBQUFBbHdT
Rmx6QUFBV0pRQUFGaVVCU1ZJazhBQUFBZFJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFB
QUFBRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcx
d2RHczlJbGhOVUNCRGIzSmxJRFl1TUM0d0lqNEtJQ0FnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJt
UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ri
bk1qSWo0S0lDQWdJQ0FnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJS0lD
QWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNlpYaHBaajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5
bGVHbG1MekV1TUM4aVBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmhFYVcxbGJuTnBiMjQr
TWpBOEwyVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFZj
MlZ5UTI5dGJXVnVkRDVUWTNKbFpXNXphRzkwUEM5bGVHbG1PbFZ6WlhKRGIyMXRaVzUwUGdvZ0lD
QWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGbEVhVzFsYm5OcGIyNCtNakE4TDJWNGFXWTZVR2w0Wld4
WlJHbHRaVzV6YVc5dVBnb2dJQ0FnSUNBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0S0lDQWdQQzl5
WkdZNlVrUkdQZ284TDNnNmVHMXdiV1YwWVQ0S0Jrc3Mvd0FBQUJ4cFJFOVVBQUFBQWdBQUFBQUFB
QUFLQUFBQUtBQUFBQW9BQUFBS0FBQUE1K2pSamFnQUFBQ3pTVVJCVkRnUmRGSUpFc1FnQ0pQL1A5
cE5JQ25pdUU1SElBZkYybGdyOWxwNHRDSmpBR21NRVBFZHVVdXVQUFhnVVc1WUppclNhSkp2UlNy
ZHhEYkdUeDVJNzZuTWR1T1MyM1EzSkc3dXpBQmV6VnVWSE04OFAwak5TTi9uTFkrY0RGeGJkTUxp
aUR0RlBHK0FjRU1XZldvNnRWTFZVNWZVVnI2MFo2NmNQbitRUnRUdEN0QUZydk4xNUd5RGJYRGR6
OGNGZ2diRXVmSFhHRXNHaFpyV3hSQ3ErTS9kVE5WQ24ySDBQKzFuUGtRb2ZnQUFBUC8vUzVPaUdn
QUFBS2xKUkVGVWZWSUpFc1FnRERML2Y3U0xDZURadFROcXVFeHRvMFhyZUI0aldnU29nd1A2WmNp
TWFBMHVKYUxTZHJCVi9vbEk5MzZBUEE0Nk12UFVhOG9nV2JhaW1naGd2VE1xRis3WjR4V1lnRFFM
aTZBSHFsZWRRb3U4S2E1S3pMNjFNN0JhWmRLUVk2VFlWbDR4UXdhdmowYW9sSVBBMklxQ25saHFJ
WjUvQUoxWWFzZWFHVUpkR3BnK04yYlJ6aW14VmxVV3IzMG1xYnZxK0ZlWER3ckQ3VlhLTnlQRmMv
MEJlaktmQ29yV29Wb0FBQUFBU1VWT1JLNUNZSUkiOworfQorCitmdW5jdGlvbiBpbWFnZUJsb2Io
YmFzZTY0U3RyaW5nID0gc2FtcGxlQmFzZTY0UE5HSW1hZ2VEYXRhMSgpKSB7CiAgICAgcmV0dXJu
IHRleHRCbG9iKGF0b2IoYmFzZTY0U3RyaW5nKSwgImltYWdlL3BuZyIpOwogfQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGFlN2UxMzFkMDZlNTQ1MjRm
NGNjYjE5YzBiM2ZiNDRkNzFhMzZjOWIuLjQ2OTQ4NjgyYjBiNDcyZWNlOGEzMDRlODQ4MGI5Mjc2
YjJkNzhlM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBA
IC0xMjA5LDYgKzEyMDksNyBAQCB3ZWJraXQub3JnL2IvMjAzMTAwIGVkaXRpbmcvYXN5bmMtY2xp
cGJvYXJkL2NsaXBib2FyZC1yZWFkLXRleHQuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzIw
MzEwMCBlZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtcmVhZC13aGlsZS1wYXN0aW5n
Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8yMDMxMDAgZWRpdGluZy9hc3luYy1jbGlwYm9h
cmQvc2FuaXRpemUtd2hlbi13cml0aW5nLWltYWdlLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcv
Yi8yMDMxMDAgZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvc2FuaXRpemUtd2hlbi1yZWFkaW5nLW1h
cmt1cC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjAzMTAwIGVkaXRpbmcvYXN5bmMtY2xp
cGJvYXJkL2NsaXBib2FyZC1yZWFkLXdyaXRlLWltYWdlcy5odG1sIFsgU2tpcCBdCiAKIHdlYmtp
dC5vcmcvYi8xNDA3ODMgWyBSZWxlYXNlIF0gZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktc3RhbmRh
bG9uZS1pbWFnZS5odG1sIFsgRmFpbHVyZSBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8xNDA3ODMgWyBEZWJ1ZyBdIGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXN0YW5kYWxvbmUtaW1h
Z2UuaHRtbCBbIFNraXAgXSAjIERlYnVnIEFzc2VydGlvbgo=
</data>
<flag name="review"
          id="415631"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400365</attachid>
            <date>2020-05-27 12:19:13 -0700</date>
            <delta_ts>2020-05-27 12:50:47 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-212339-20200527121912.patch</filename>
            <type>text/plain</type>
            <size>50363</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZmZTg4M2E2YTkwN2Zl
MzRhZWIwYTkyYzVlODY4NjRkY2QyMjFmNy4uZDJjNjEwZDNlNDRkN2JiMWMwZmVjMDNjZjgzNmQw
OWI5YjMxZWE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDIwLTA1LTI0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlwYm9hcmQg
QVBJXSBTdXBwb3J0IHJlYWRpbmcgImltYWdlL3BuZyIgb24gQ2xpcGJvYXJkSXRlbQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzM5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MzU4ODk1Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9y
dG9uLgorCisgICAgICAgIEFkZHMgc3VwcG9ydCBmb3IgcmVhZGluZyAiaW1hZ2UvcG5nIiBkYXRh
IHZpYSBDbGlwYm9hcmRJdGVtLmdldFR5cGUoKS4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICAgICAgVGVzdHM6ICBDbGlwYm9hcmRUZXN0cy5Db252ZXJ0VElGRlRvUE5HV2hlblBh
c3RpbmcKKyAgICAgICAgICAgICAgICBlZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQt
cmVhZC13cml0ZS1pbWFnZXMuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6Z2V0VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OnVwZGF0ZVNlc3Npb25WYWxpZGl0eSk6CisK
KyAgICAgICAgRmFjdG9yIG91dCBsb2dpYyBmb3IgaW52YWxpZGF0aW5nIHRoZSBgQ2xpcGJvYXJk
YCdzIGFjdGl2ZSBgUGFzdGVib2FyZGAgb2JqZWN0IGludG8gYSBoZWxwZXIgbWV0aG9kLiBUaGlz
IGlzCisgICAgICAgIGludm9rZWQgYWZ0ZXIgcmVhZGluZyBkYXRhIGZyb20gdGhlIGNsaXBib2Fy
ZCwgYW5kIHZlcmlmaWVzIHRoYXQgdGhlIGNoYW5nZUNvdW50IG9mIHRoZSBwYXN0ZWJvYXJkIGlz
IHN0aWxsIHRoZQorICAgICAgICBzYW1lIGFzIGl0IHdhcyB1cG9uIGluaXRpYWxseSByZWFkaW5n
IHRoZSBjb250ZW50cyBvZiB0aGUgY2xpcGJvYXJkLiBJZiB0aGUgY2xpcGJvYXJkIGNvbnRlbnRz
IGNoYW5nZWQsIHdlCisgICAgICAgIGludmFsaWRhdGUgdGhlIHNlc3Npb24sIGFuZCBgQ2xpcGJv
YXJkYCBpcyBzdWJzZXF1ZW50bHkgZGVuaWVkIHBhc3RlYm9hcmQgYWNjZXNzICh1bnRpbCB0aGUg
bmV4dCB0aW1lIHRoZSB1c2VyCisgICAgICAgIGV4cGxpY2l0bHkgZ3JhbnRzIHByb2dyYW1tYXRp
YyBwYXN0ZWJvYXJkIGFjY2VzcykuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgc3RlcCBpcyBo
ZXJlIGZvciBjb3JyZWN0bmVzcyByYXRoZXIgdGhhbiBzZWN1cml0eS4gV2hpbGUgaXQgaXMgdHJ1
ZSB0aGF0IGEgY29tcHJvbWlzZWQgd2ViCisgICAgICAgIHByb2Nlc3MgY291bGQgZmFrZSB0aGUg
Y2hhbmdlQ291bnQgYXQgYW55IGdpdmVuIG1vbWVudCwgb3RoZXIgZmFpcmx5IHJlY2VudCBjaGFu
Z2VzIGFyb3VuZCBXZWJQYXN0ZWJvYXJkUHJveHkgaW4KKyAgICAgICAgdGhlIFVJIHByb2Nlc3Mg
bWFrZXMgaXQgaW1wb3NzaWJsZSB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGlzIGZhY3QgdG8gYXJi
aXRyYXJpbHkgcmVhZCBjb250ZW50IGZyb20gdGhlIHN5c3RlbQorICAgICAgICBwYXN0ZWJvYXJk
LiBJbnN0ZWFkIG9mIHNpbXBseSByZWFkaW5nIHRoZSBlbXB0eSBzdHJpbmcsIHRoaXMgaW52YWxp
ZGF0aW9uIGVuc3VyZXMgdGhhdCB3ZSBhY3R1YWxseSByZWplY3QgdGhlCisgICAgICAgIHByb21p
c2UgcmV0dXJuZWQgYnkgdGhlIGFzeW5jIGNsaXBib2FyZCBBUEkuCisKKyAgICAgICAgKiBNb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHA6IEFkZGVkLgorCisgICAgICAgIEFk
ZCBhIFBhc3RlYm9hcmRGaWxlUmVhZGVyIHN1YmNsYXNzIHRoYXQgaXMgcmVzcG9uc2libGUgZm9y
IHNhbml0aXppbmcgaW1hZ2UgZGF0YSBmcm9tIHRoZSBwYXN0ZWJvYXJkIGludG8KKyAgICAgICAg
ZGF0YSB0aGF0IG1heSBiZSBleHBvc2VkIHRvIHRoZSBwYWdlIHZpYSBjbGlwYm9hcmQgQVBJLiBP
biBib3RoIG1hY09TIGFuZCBpT1MsIHRoaXMgZW5zdXJlcyB0aGF0IHBvdGVudGlhbGx5CisgICAg
ICAgIHNlbnNpdGl2ZSBFWElGIGRhdGEgaXMgc3RyaXBwZWQgdmlhIGNvbnZlcnNpb24gdG8gdGhl
IHBsYXRmb3JtIGltYWdlIHR5cGUgYW5kIGJhY2suIE9uIG1hY09TLCB0aGlzIGFkZGl0aW9uYWxs
eQorICAgICAgICBhbGxvd3MgdXMgdG8gaGFuZGxlIHRyYW5zY29kaW5nIFRJRkYgZGF0YSBvbiB0
aGUgcGFzdGVib2FyZCB0byBQTkcgKHRoaXMgaXMgY292ZXJlZCBieSB0aGUgbmV3IEFQSSB0ZXN0
KS4KKworICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIp
OgorCisgICAgICAgIEFkZCBhIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIG5vbi1Db2NvYSBwbGF0
Zm9ybXMgZm9yIG5vdywgd2hpY2ggZG9uJ3QgaW1wbGVtZW50IHRoaXMgcGFydCBvZiB0aGUgQVBJ
LgorCisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6c2hvdWxkUmVhZEJ1
ZmZlciBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgbmV3IGhvb2sgdG8gc2tpcCBvdmVyIGNlcnRh
aW4gdHlwZXMgd2hlbiByZWFkaW5nIHBhc3RlYm9hcmQgZGF0YSBpbnRvIEZpbGVzLiBJbiBwYXJ0
aWN1bGFyLAorICAgICAgICBgQ2xpcGJvYXJkSW1hZ2VSZWFkZXJgIHNraXBzIG92ZXIgYW55IE1J
TUUgdHlwZSB0aGF0IGRvZXMgbm90IG1hdGNoIHRoZSBNSU1FIHR5cGUgc3BlY2lmaWVkIChmb3Ig
bm93LCB0aGlzIGlzCisgICAgICAgIGxpbWl0ZWQgdG8gImltYWdlL3BuZyIsIGJ1dCBtYXkgYmUg
ZXh0ZW5kZWQgdG8gaW5jbHVkZSBtb3JlIGltYWdlIHR5cGVzIGluIHRoZSBmdXR1cmUgYWZ0ZXIg
d2UgaW1wbGVtZW50IG1vcmUKKyAgICAgICAgdHJhbnNjb2RpbmcgbG9naWMpLgorCisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6Q2xpcGJvYXJkSW1hZ2VS
ZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnRha2VSZXN1
bHQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFn
ZVJlYWRlcklPUy5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJl
YWRlcjo6cmVhZEJ1ZmZlcik6CisKKyAgICAgICAgQWRkIGlPUy1zcGVjaWZpYyBgKFBORykgPT4g
UE5HYCB0cmFuc2NvZGluZyBsb2dpYy4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisKKyAgICAgICAgQWRkIG1h
Y09TLXNwZWNpZmljIGAoUE5HLCBUSUZGKSA9PiBQTkdgIHRyYW5zY29kaW5nIGxvZ2ljLgorCisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZC5oOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEZpbGVSZWFkZXI6
OnNob3VsZFJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciB0YXJnZXRpbmcgYSBnaXZlbiBwYXN0ZWJvYXJkIGl0ZW0g
aW5kZXggd2hlbiByZWFkaW5nIGZpbGVzIG9uIENvY29hIHBsYXRmb3Jtcy4KKworICAgICAgICAq
IHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpzYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlRm9y
UGxhdGZvcm1UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OndlYlNhZmVUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgp
OgorCisgICAgICAgIEV4cG9zZSAiaW1hZ2UvcG5nIiBhcyBvbmUgb2YgdGhlIHJlYWRhYmxlIHBh
c3RlYm9hcmQgdHlwZXMgb24gaU9TIHdoZW4gdXNpbmcgdGhlIGFzeW5jIGNsaXBib2FyZCBBUEku
IEZvciBzb21lCisgICAgICAgIHJlYXNvbiwgdGhpcyBhZGp1c3RtZW50IHdhcyBtYWRlIG9uIG1h
Y09TLCBidXQgd2Fzbid0IGRvbmUgb24gaU9TLCB3aGljaCBsZWQgdG8gYSBtaXNzaW5nICJpbWFn
ZS9wbmciIHR5cGUgd2hlbgorICAgICAgICBhc2tpbmcgZm9yIGBDbGlwYm9hcmRJdGVtLnR5cGVz
YC4KKworICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JE
T01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHdyaXRp
bmcgImltYWdlL3BuZyAiZGF0YSB0byB0aGUgc3lzdGVtIHBhc3RlYm9hcmQgKG5vdGUgdGhhdCB0
aGlzIGRhdGEgaGFzIGJlZW4gc2FuaXRpemVkCisgICAgICAgIGFscmVhZHksIGFzIGl0IGhhcyBi
ZWVuIHByb2Nlc3NlZCB0aHJvdWdoIGBDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVE
YXRhSWZOZWVkZWQoKWApLiBXZSBzaW1wbHkgbmVlZGVkCisgICAgICAgIHRvIHVzZSBgZm9yRWFj
aFBsYXRmb3JtU3RyaW5nT3JCdWZmZXJgIGluc3RlYWQgb2YganVzdCBgZm9yRWFjaFBsYXRmb3Jt
U3RyaW5nYCB3aGVuIHdyaXRpbmcgdGhlIGN1c3RvbQorICAgICAgICBwYXN0ZWJvYXJkIGRhdGEu
CisKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkxpc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgor
CiAyMDIwLTA1LTI3ICBNaWd1ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dQRV0gUkVHUkVTU0lPTihyMjUzNjc1KSBDcmFzaCB3aGVuIHVzaW5nIHRocmVhZGVkIHJl
bmRlcmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggOGU2NTg1ZTI3YmY5MDRjYTI2NWJkN2UwZTUz
NThhMzQyMzhiMzc0My4uNmU2YzU4NjU2Zjg0YzhjN2FiOTYyMzVkMTJiZjA2MDEzZjYzODU1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDUtMjQgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NsaXBib2FyZCBBUEld
IFN1cHBvcnQgcmVhZGluZyAiaW1hZ2UvcG5nIiBvbiBDbGlwYm9hcmRJdGVtCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIzMzkKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzYzNTg4OTU3PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24u
CisKKyAgICAgICAgU29mdCBsaW5rIGBVSUltYWdlUE5HUmVwcmVzZW50YXRpb25gLgorCisgICAg
ICAgICogcGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg6CisgICAgICAgICogcGFsL2lvcy9VSUtpdFNv
ZnRMaW5rLm1tOgorCiAyMDIwLTA1LTIyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBkb3dubG9hZCByZXN1bWUgd29ya2Fyb3VuZCBm
b3JnaXZpbmcgb2YgY2hhbmdlcyBpbiBDRk5ldHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCmluZGV4IDRkZTZkNDE1MTU1
YTk3ZDAyYzFiZWE5NjgwM2Q5YzJiN2ZlNGFmZDguLjhlYTE3ZWIzZThkZjQ0ZmNhMzFhZjAzYzBi
MzQwMmQ2YzcyMmM0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNsaXBib2FyZC5oIgogCisjaW5jbHVkZSAiQ2xpcGJvYXJkSW1h
Z2VSZWFkZXIuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRJdGVtLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMjE0LDYgKzIxNSwxNyBAQCB2b2lkIENsaXBi
b2FyZDo6Z2V0VHlwZShDbGlwYm9hcmRJdGVtJiBpdGVtLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJl
ZjxEZWZlcnJlZFBybwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKHR5cGUgPT0g
ImltYWdlL3BuZyJfcykgeworICAgICAgICBDbGlwYm9hcmRJbWFnZVJlYWRlciBpbWFnZVJlYWRl
ciB7IHR5cGUgfTsKKyAgICAgICAgYWN0aXZlUGFzdGVib2FyZCgpLnJlYWQoaW1hZ2VSZWFkZXIs
IGl0ZW1JbmRleCk7CisgICAgICAgIGF1dG8gaW1hZ2VCbG9iID0gaW1hZ2VSZWFkZXIudGFrZVJl
c3VsdCgpOworICAgICAgICBpZiAodXBkYXRlU2Vzc2lvblZhbGlkaXR5KCkgPT0gU2Vzc2lvbklz
VmFsaWQ6OlllcyAmJiBpbWFnZUJsb2IpCisgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElE
TEludGVyZmFjZTxCbG9iPj4oaW1hZ2VCbG9iLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwogICAgIFN0cmluZyByZXN1bHRBc1N0cmluZzsKIAogICAgIGlm
ICh0eXBlID09ICJ0ZXh0L3VyaS1saXN0Il9zKSB7CkBAIC0yMzMsMTkgKzI0NSwyNiBAQCB2b2lk
IENsaXBib2FyZDo6Z2V0VHlwZShDbGlwYm9hcmRJdGVtJiBpdGVtLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFJlZjxEZWZlcnJlZFBybwogICAgICAgICByZXN1bHRBc1N0cmluZyA9IFdURk1vdmUobWFy
a3VwUmVhZGVyLm1hcmt1cCk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFN1cHBvcnQgcmVhZGlu
ZyAiaW1hZ2UvcG5nIiBhcyB3ZWxsIGFzIGN1c3RvbSBkYXRhLgotICAgIC8vIEZJWE1FOiBJbnN0
ZWFkIG9mIGNoZWNraW5nIGNoYW5nZUNvdW50IGhlcmUsIHdlIHNob3VsZCBzZW5kIHRoZSBjaGFu
Z2VDb3VudCBvdmVyIHRvIHRoZSBVSSBwcm9jZXNzIHRvIGJlIHZldHRlZAotICAgIC8vIHdoZW4g
YXR0ZW1wdGluZyB0byByZWFkIHRoZSBkYXRhIGluIHRoZSBmaXJzdCBwbGFjZS4KLSAgICBpZiAo
bV9hY3RpdmVTZXNzaW9uLT5jaGFuZ2VDb3VudCAhPSBhY3RpdmVQYXN0ZWJvYXJkKCkuY2hhbmdl
Q291bnQoKSkgewotICAgICAgICBtX2FjdGl2ZVNlc3Npb24gPSBXVEY6Om51bGxvcHQ7CisgICAg
Ly8gRklYTUU6IFN1cHBvcnQgcmVhZGluZyBjdXN0b20gZGF0YS4KKyAgICBpZiAodXBkYXRlU2Vz
c2lvblZhbGlkaXR5KCkgPT0gU2Vzc2lvbklzVmFsaWQ6Ok5vIHx8IHJlc3VsdEFzU3RyaW5nLmlz
TnVsbCgpKSB7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFyZXN1bHRBc1N0cmluZy5pc051bGwoKSkK
LSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8QmxvYj4+KENsaXBib2FyZEl0
ZW06OmJsb2JGcm9tU3RyaW5nKHJlc3VsdEFzU3RyaW5nLCB0eXBlKSk7Ci0gICAgZWxzZQotICAg
ICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKKyAgICBwcm9taXNlLT5yZXNv
bHZlPElETEludGVyZmFjZTxCbG9iPj4oQ2xpcGJvYXJkSXRlbTo6YmxvYkZyb21TdHJpbmcocmVz
dWx0QXNTdHJpbmcsIHR5cGUpKTsKK30KKworQ2xpcGJvYXJkOjpTZXNzaW9uSXNWYWxpZCBDbGlw
Ym9hcmQ6OnVwZGF0ZVNlc3Npb25WYWxpZGl0eSgpCit7CisgICAgaWYgKCFtX2FjdGl2ZVNlc3Np
b24pCisgICAgICAgIHJldHVybiBTZXNzaW9uSXNWYWxpZDo6Tm87CisKKyAgICBpZiAobV9hY3Rp
dmVTZXNzaW9uLT5jaGFuZ2VDb3VudCAhPSBhY3RpdmVQYXN0ZWJvYXJkKCkuY2hhbmdlQ291bnQo
KSkgeworICAgICAgICBtX2FjdGl2ZVNlc3Npb24gPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBTZXNzaW9uSXNWYWxpZDo6Tm87CisgICAgfQorCisgICAgcmV0dXJuIFNlc3Npb25Jc1Zh
bGlkOjpZZXM7CiB9CiAKIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZShjb25zdCBWZWN0b3I8UmVmUHRy
PENsaXBib2FyZEl0ZW0+PiYgaXRlbXMsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
LmgKaW5kZXggNDBhNmI0NjEwMjNiYjU3MThhZTljNTljOTIxMjY2MjI1MTRiNjJlNC4uMzZkZTYy
ZTJiODg2Zjk3MDk3MDQyYjhkNTUxZmY3NTkwZGY5YzRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmgKQEAgLTc3LDYgKzc3LDkg
QEAgcHJpdmF0ZToKIAogICAgIFBhc3RlYm9hcmQmIGFjdGl2ZVBhc3RlYm9hcmQoKTsKIAorICAg
IGVudW0gY2xhc3MgU2Vzc2lvbklzVmFsaWQgeyBObywgWWVzIH07CisgICAgU2Vzc2lvbklzVmFs
aWQgdXBkYXRlU2Vzc2lvblZhbGlkaXR5KCk7CisKICAgICBjbGFzcyBJdGVtV3JpdGVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8SXRlbVdyaXRlcj4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGlj
IFJlZjxJdGVtV3JpdGVyPiBjcmVhdGUoQ2xpcGJvYXJkJiBjbGlwYm9hcmQsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNGIwZDllYmZiZTkyZWU4M2U2NzZiZjdkNTI4YThhZmM3MWYwZThmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXIuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCIKKworI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmICFQTEFURk9S
TShDT0NPQSkKKwordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCisKK2Jvb2wgQ2xp
cGJvYXJkSW1hZ2VSZWFkZXI6OnNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fcmVzdWx0ICYmIG1fbWltZVR5cGUgPT0gbWltZVR5
cGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQ4ODg1NDFjMzc0MDVjZDhjYmJhZWRiNDM1MzI2NDI4NWY0MDI1MWUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJbWFnZVJlYWRlci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkJsb2IuaCIKKyNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkQnVmZmVyOworCitzdHJ1Y3QgQ2xp
cGJvYXJkSW1hZ2VSZWFkZXIgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CisgICAgQ2xpcGJvYXJk
SW1hZ2VSZWFkZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICAgICAgOiBQYXN0ZWJvYXJk
RmlsZVJlYWRlcigpCisgICAgICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKKyAgICB7CisgICAg
fQorCisgICAgUmVmUHRyPEJsb2I+IHRha2VSZXN1bHQoKSB7IHJldHVybiBzdGQ6OmV4Y2hhbmdl
KG1fcmVzdWx0LCBudWxscHRyKTsgfQorCitwcml2YXRlOgorICAgIHZvaWQgcmVhZEZpbGVuYW1l
KGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIGJv
b2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lk
IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKworICAgIFN0cmluZyBtX21pbWVUeXBlOworICAg
IFJlZlB0cjxCbG9iPiBtX3Jlc3VsdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlw
Ym9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzQyMmEx
MDI5ODk3NmM0ZTBkYzIwN2U2ZGMzMzBiZjQzMTY2M2FhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVh
ZGVySU9TLm1tCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIkNsaXBib2FyZEltYWdlUmVhZGVyLmgiCisKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorCisjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKKyNpbXBvcnQgPHBhbC9pb3MvVUlL
aXRTb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgQ2xpcGJvYXJkSW1h
Z2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3Bu
ZyIpIHsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5z
dGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAg
ICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0
KCkpKQorICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpj
cmVhdGUobnNEYXRhKSwgbV9taW1lVHlwZSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVh
ZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0Ns
aXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiY2E2Yjk3OWQ1NGY2YjZlYmRm
NjhhNDQ0MGRhNjlhZjA1M2U3YTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAg
LTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
Q2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCAi
U2hhcmVkQnVmZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBDbGlwYm9hcmRJ
bWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2Uv
cG5nIikgeworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGlu
aXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGlmIChh
dXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpu
aWwgaGludHM6bmlsXSkgeworICAgICAgICAgICAgYXV0byByZXByZXNlbnRhdGlvbiA9IGFkb3B0
TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwor
ICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
W3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxl
VHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dKSwgbV9taW1lVHlwZSk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsuaAppbmRleCAwYWRjMTky
MjkwZDVmZjFlYzllMTBiNmU2NWEwMTYxNDk5NjBlZTk0Li40OGUyYzVkODg2NjFhOTJkNzZhMmY5
YmQ0YTEyZDQzYzgwMmQ5ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lv
cy9VSUtpdFNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRT
b2Z0TGluay5oCkBAIC03MCw1ICs3MCw2IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgVUlLaXQsIFVJQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb24sIHZvaWQsCiBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFVJS2l0LCBVSUdyYXBoaWNzR2V0Q3VycmVu
dENvbnRleHQsIENHQ29udGV4dFJlZiwgKHZvaWQpLCAoKSkKIFNPRlRfTElOS19GVU5DVElPTl9G
T1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJR3JhcGhpY3NQb3BDb250ZXh0LCB2b2lkLCAodm9pZCks
ICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBVSUtpdCwgVUlHcmFwaGlj
c1B1c2hDb250ZXh0LCB2b2lkLCAoQ0dDb250ZXh0UmVmIGNvbnRleHQpLCAoY29udGV4dCkpCitT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFVJS2l0LCBVSUltYWdlUE5HUmVwcmVz
ZW50YXRpb24sIE5TRGF0YSAqLCAoVUlJbWFnZSAqaW1hZ2UpLCAoaW1hZ2UpKQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tCmluZGV4IDk5Yzg1
MDY2ZDYxYTQ2MjBjODAzNmE1ZWI3ODNkYzBjNGM2NTE4ZjQuLjUzOWJjNjQ4NmY0NjA3ZjI2ODVm
MDgwYmU5ZDJlMmQxZjAyMmMxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
aW9zL1VJS2l0U29mdExpbmsubW0KKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlL
aXRTb2Z0TGluay5tbQpAQCAtNzAsNSArNzAsNiBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShQQUwsIFVJS2l0LCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9uLCB2b2lkLAog
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlHcmFwaGljc0dldEN1
cnJlbnRDb250ZXh0LCBDR0NvbnRleHRSZWYsICh2b2lkKSwgKCkpCiBTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSUdyYXBoaWNzUG9wQ29udGV4dCwgdm9pZCwgKHZv
aWQpLCAoKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJR3Jh
cGhpY3NQdXNoQ29udGV4dCwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0KSwgKGNvbnRleHQp
KQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlJbWFnZVBOR1Jl
cHJlc2VudGF0aW9uLCBOU0RhdGEgKiwgKFVJSW1hZ2UgKmltYWdlKSwgKGltYWdlKSkKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDUxODNiOWUzODc1MWIxYzg4MjFjNzI5Y2NmZTI0MDFjOTUy
YzFiODMuLjU5ZGM5YzYxYjM1MjZlMjExM2ViYTg3ZTdiYzNhYmY4MDczZjEwN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC0zNCw2ICszNCw3IEBAIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0LmNwcAogI2VuZGlmCiAKIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5j
cHAKK01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAogTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKIE1vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAppbmRleCBiODVhZDY2ZTdlNjJlNTdkY2M0YWU2OWYyOTA4ZmY5MTZkNjgy
NTdhLi42Y2QxNzQyM2ZjMDIxYWJjNjI0ZTc1Y2YyYTNkOGNiMjlkM2ZhZDczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKQEAgLTIxLDYgKzIxLDkgQEAKIC8vIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKIC8vIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAorTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
aW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCitNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9t
YWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKwogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKIAogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZDE5MDM0MmQ1MzYxZjRhNTc0MjZkMmFmODQ2MDA1OWM4ZmY5
ZDI3ZS4uMTgyZTI5NWQ1YmZiMTZmMmYwYjBiM2U4ZmIwODI0NDYwN2I0ZTM4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTA4
NSw2ICs1MDg1LDcgQEAKIAkJRjRCNDIyQzQyMjBDMDU2ODAwOUUxRTdEIC8qIERPTVBhc3RlQWNj
ZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEI0
MjJDMjIyMEMwMDAwMDA5RTFFN0QgLyogRE9NUGFzdGVBY2Nlc3MuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNEJGQjk4NTFFMURERjlCMDA4NjJD
MjQgLyogRHVtcEVkaXRpbmdIaXN0b3J5LmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgzODk4MzFFMURERjJCMDA3NkI3RUEgLyogRHVtcEVk
aXRpbmdIaXN0b3J5LmpzICovOyB9OwogCQlGNEJGQjk4NjFFMURERjlCMDA4NjJDMjQgLyogRWRp
dGluZ0hpc3RvcnlVdGlsLmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDgzODk4NDFFMURERjJCMDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlV
dGlsLmpzICovOyB9OworCQlGNEM1RjIwNzI0NzlFODgyMDBFOUI0RjUgLyogQ2xpcGJvYXJkSW1h
Z2VSZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0QzVGMjA1MjQ3OUU3RUUwMEU5QjRGNSAvKiBDbGlwYm9hcmRJbWFnZVJlYWRlci5oICovOyB9
OwogCQlGNEQwNzU1ODIzNEQ4MjJEMDA4ODFFNzMgLyogQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NkM0NDdB
MjM0NjUzNUUwMDM5QTc5RCAvKiBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZS5oICovOyB9OwogCQlG
NEQwNzU1OTIzNEQ4MjMzMDA4ODFFNzMgLyogQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291
cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDZD
NDQ4MDIzNDY1NDdBMDAzOUE3OUQgLyogQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNl
LmggKi87IH07CiAJCUY0RDQzRDY2MjE4ODAzOEIwMEVDRUNBQyAvKiBTZXJpYWxpemVkQXR0YWNo
bWVudERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0RDQzRDY0MjE4ODAyRTYwMEVDRUNBQyAvKiBTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTU3OTUs
NiArMTU3OTYsMTAgQEAKIAkJRjQ5Nzg2ODcxRkY0NUZBNTAwRTA2MEFCIC8qIFBhc3RlYm9hcmRJ
dGVtSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXN0ZWJvYXJkSXRlbUluZm8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5RTk4RTQyMURFRTZDMTAwOUFFNTVFIC8qIEVkaXRBY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWRpdEFjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY0QjQyMkMyMjIwQzAwMDAwMDlFMUU3RCAvKiBET01QYXN0ZUFjY2Vz
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01QYXN0ZUFjY2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGNEM1RjIwNTI0NzlFN0VFMDBFOUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjRDNUYyMDgyNDc5RTlDODAwRTlCNEY1IC8qIENsaXBib2FyZElt
YWdlUmVhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaXBib2FyZEltYWdlUmVhZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRDNUYyMTMyNDc5RkM0RTAwRTlCNEY1
IC8qIENsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW07IHBhdGggPSBtYWMvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0
QzVGMjE2MjQ3OUZDRDEwMEU5QjRGNSAvKiBDbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IENsaXBib2FyZEltYWdlUmVhZGVy
SU9TLm1tOyBwYXRoID0gaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNEQ0M0Q2NDIxODgwMkU2MDBFQ0VDQUMgLyogU2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEQ5ODE3RDIxOTVGQkY2MDA4MjMw
RkMgLyogQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoYW5nZUxpc3RU
eXBlQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEQ5ODE3RTIxOTVG
QkY2MDA4MjMwRkMgLyogQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENoYW5nZUxpc3RUeXBlQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNzkxMCw5ICsyNzkxNSwxMyBAQAogCQlGNDQwRTc2QTIzM0Q5M0M4MDA2M0Y5QUIgLyog
YXN5bmMtY2xpcGJvYXJkICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQlGNEM1RjIxNTI0NzlGQ0FGMDBFOUI0RjUgLyogaW9zICovLAorCQkJCUY0QzVGMjEy
MjQ3OUZDNDAwMEU5QjRGNSAvKiBtYWMgKi8sCiAJCQkJRjQ0MEU3NkUyMzNEOTREMzAwNjNGOUFC
IC8qIENsaXBib2FyZC5jcHAgKi8sCiAJCQkJRjQ0MEU3NzIyMzNEOTRENTAwNjNGOUFCIC8qIENs
aXBib2FyZC5oICovLAogCQkJCUY0NDBFNzc0MjMzRDk0RDYwMDYzRjlBQiAvKiBDbGlwYm9hcmQu
aWRsICovLAorCQkJCUY0QzVGMjA4MjQ3OUU5QzgwMEU5QjRGNSAvKiBDbGlwYm9hcmRJbWFnZVJl
YWRlci5jcHAgKi8sCisJCQkJRjRDNUYyMDUyNDc5RTdFRTAwRTlCNEY1IC8qIENsaXBib2FyZElt
YWdlUmVhZGVyLmggKi8sCiAJCQkJRjQ0MEU3NzUyMzNEOTRENjAwNjNGOUFCIC8qIENsaXBib2Fy
ZEl0ZW0uY3BwICovLAogCQkJCUY0NDBFNzcwMjMzRDk0RDQwMDYzRjlBQiAvKiBDbGlwYm9hcmRJ
dGVtLmggKi8sCiAJCQkJRjQ0MEU3NzcyMzNEOTRENzAwNjNGOUFCIC8qIENsaXBib2FyZEl0ZW0u
aWRsICovLApAQCAtMjc5MzcsNiArMjc5NDYsMjIgQEAKIAkJCW5hbWUgPSBFZGl0aW5nSGlzdG9y
eTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUY0QzVGMjEyMjQ3OUZDNDAw
MEU5QjRGNSAvKiBtYWMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCUY0QzVGMjEzMjQ3OUZDNEUwMEU5QjRGNSAvKiBDbGlwYm9hcmRJbWFnZVJlYWRlck1h
Yy5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gbWFjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKKwkJRjRDNUYyMTUyNDc5RkNBRjAwRTlCNEY1IC8qIGlvcyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRjRDNUYyMTYyNDc5RkNEMTAwRTlC
NEY1IC8qIENsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBp
b3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlGNTIzRDE4NDAyREU0MkU4
MDE4NjM1Q0EgLyogY3NzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKQEAgLTI5OTIwLDYgKzI5OTQ1LDcgQEAKIAkJCQlGNDQwRTc3RDIzM0Q5NEQ3MDA2M0Y5QUIg
LyogQ2xpcGJvYXJkLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzNBOTFFNjFDOTYzQjg4MDBEMUE3
RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0
MDBBNDRFRkM3MDBGOTkyRTAgLyogQ2xpcGJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUY0QzVGMjA3MjQ3OUU4ODIwMEU5QjRGNSAvKiBDbGlwYm9hcmRJbWFnZVJlYWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjQ0MEU3N0IyMzNEOTRENzAwNjNGOUFCIC8qIENsaXBib2FyZEl0ZW0u
aCBpbiBIZWFkZXJzICovLAogCQkJCUY0NkM0NDdFMjM0NjU0NTQwMDM5QTc5RCAvKiBDbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEQwNzU1ODIz
NEQ4MjJEMDA4ODFFNzMgLyogQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDFiODJkZDY1YmFhZjNkNGQx
NDQxMjI1ZWQyODEzNzE1Y2QyMzY0YzUuLmRjYzBhMzkyYjMwZGViMmI3OTM1OGFkMGViZTdlNDkx
NmE5ZmJmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTE2Nyw2ICsx
NjcsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZFBsYWluVGV4dCB7CiBzdHJ1Y3QgUGFzdGVib2FyZEZp
bGVSZWFkZXIgewogICAgIHZpcnR1YWwgflBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBkZWZhdWx0
OwogICAgIHZpcnR1YWwgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgLyogdHlwZSAqLykg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JikgPSAwOwogfTsKIApAQCAtMjExLDcgKzIxMiw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmLCBQbGFpblRleHRV
UkxSZWFkaW5nUG9saWN5ID0gUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeTo6QWxsb3dVUkwsIE9w
dGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0gV1RGOjpudWxsb3B0KTsKICAgICB2aXJ0dWFsIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNv
bnRlbnRSZWFkaW5nUG9saWN5ID0gV2ViQ29udGVudFJlYWRpbmdQb2xpY3k6OkFueVR5cGUsIE9w
dGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0gV1RGOjpudWxsb3B0KTsKLSAgICB2aXJ0dWFsIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYpOworICAgIHZpcnR1
YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgT3B0aW9u
YWw8c2l6ZV90PiBpdGVtSW5kZXggPSBXVEY6Om51bGxvcHQpOwogCiAgICAgdmlydHVhbCBXRUJD
T1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IENvbG9yJik7CiAgICAgdmlydHVhbCBXRUJDT1JF
X0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCBiYTFhYzFjZmVm
NTk5NDZiNzg3NzlmNGFlNDViMzcyMmEzYWFlN2ZhLi4yYWYwYjUyZjIzZWE5M2I5Nzc5YjQwNjMy
NTg0ZWQ5MzYzOTNiZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFzdGVib2FyZENvY29hLm1tCkBAIC0yMTUsMjUgKzIxNSwyMiBAQCBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB9CiAj
ZW5kaWYKIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiByZWFk
ZXIpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImIHJlYWRlciwg
T3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgpCiB7Ci0gICAgYXV0byBmaWxlbmFtZXMgPSByZWFk
RmlsZVBhdGhzKCk7Ci0gICAgaWYgKCFmaWxlbmFtZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGZv
ciAoYXV0byYgZmlsZW5hbWUgOiBmaWxlbmFtZXMpCi0gICAgICAgICAgICByZWFkZXIucmVhZEZp
bGVuYW1lKGZpbGVuYW1lKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghaXRlbUluZGV4KSB7
CisgICAgICAgIGF1dG8gZmlsZW5hbWVzID0gcmVhZEZpbGVQYXRocygpOworICAgICAgICBpZiAo
IWZpbGVuYW1lcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZmlsZW5hbWUg
OiBmaWxlbmFtZXMpCisgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRGaWxlbmFtZShmaWxlbmFt
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIGFs
bEluZm8gPSBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oKTsKLSAgICBpZiAoIWFsbEluZm8pCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGZvciAoc2l6ZV90IGl0ZW1JbmRleCA9IDA7IGl0ZW1JbmRleCA8
IGFsbEluZm8tPnNpemUoKTsgKytpdGVtSW5kZXgpIHsKLSAgICAgICAgYXV0byYgaW5mbyA9IGFs
bEluZm8tPmF0KGl0ZW1JbmRleCk7CisgICAgYXV0byByZWFkQnVmZmVyQXRJbmRleCA9IFsmXShj
b25zdCBQYXN0ZWJvYXJkSXRlbUluZm8mIGluZm8sIHNpemVfdCBpdGVtSW5kZXgpIHsKICAgICAg
ICAgZm9yIChhdXRvIGNvY29hVHlwZSA6IGluZm8ucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkpIHsK
ICAgICAgICAgICAgIGF1dG8gaW1hZ2VUeXBlID0gY29jb2FUeXBlVG9JbWFnZVR5cGUoY29jb2FU
eXBlKTsKICAgICAgICAgICAgIGF1dG8qIG1pbWVUeXBlID0gaW1hZ2VUeXBlVG9NSU1FVHlwZShp
bWFnZVR5cGUpOwotICAgICAgICAgICAgaWYgKCFtaW1lVHlwZSkKKyAgICAgICAgICAgIGlmICgh
bWltZVR5cGUgfHwgIXJlYWRlci5zaG91bGRSZWFkQnVmZmVyKG1pbWVUeXBlKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gcmVhZEJ1ZmZlcihp
dGVtSW5kZXgsIGNvY29hVHlwZSk7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMjQ1LDYgKzI0Miwx
NyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImIHJlYWRlcikK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgIH07
CisKKyAgICBpZiAoaXRlbUluZGV4KSB7CisgICAgICAgIGlmIChhdXRvIGluZm8gPSBwYXN0ZWJv
YXJkSXRlbUluZm8oKml0ZW1JbmRleCkpCisgICAgICAgICAgICByZWFkQnVmZmVyQXRJbmRleCgq
aW5mbywgKml0ZW1JbmRleCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYXV0
byBhbGxJbmZvID0gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCkpIHsKKyAgICAgICAgZm9yIChzaXpl
X3QgaXRlbUluZGV4ID0gMDsgaXRlbUluZGV4IDwgYWxsSW5mby0+c2l6ZSgpOyArK2l0ZW1JbmRl
eCkKKyAgICAgICAgICAgIHJlYWRCdWZmZXJBdEluZGV4KGFsbEluZm8tPmF0KGl0ZW1JbmRleCks
IGl0ZW1JbmRleCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UGFzdGVib2FyZEd0ay5jcHAKaW5kZXggMmQ3Yjg4NWE2NWRkYjEwMjZmNmVjMTZhZjM5MWFkMjI0
ZGEzMDUwZi4uZjc1ZmZmMzhhNmYxZDJlY2MyMGUwNWYxYzY4ZDM3NGUzN2NjZDJjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMzAzLDcg
KzMwMyw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRl
ciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljCiAgICAgfQogfQogCi12b2lkIFBhc3Rl
Ym9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImIHJlYWRlcikKK3ZvaWQgUGFzdGVib2Fy
ZDo6cmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYgcmVhZGVyLCBPcHRpb25hbDxzaXplX3Q+KQog
ewogICAgIGlmIChtX3NlbGVjdGlvbkRhdGEpIHsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBm
aWxlUGF0aCA6IG1fc2VsZWN0aW9uRGF0YS0+ZmlsZW5hbWVzKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBkMmYz
MjIwMDQ3ZjZmMzQzNTM1NmM5Nzg3NTEwMzhlNmI4YjBmMTlkLi5mZDNhODVhZTBhYjYwZjk0OWEy
NmJmMmQ4YzAyN2E3Zjk1NTdhN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0
aWMgYm9vbCBzaG91bGRUcmVhdEF0TGVhc3RPbmVUeXBlQXNGaWxlKE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKnBsYXRmb3JtVHlwZXMpCiAKICNpZiBQQVNURUJPQVJEX1NVUFBPUlRTX0lURU1fUFJPVklE
RVJTCiAKLXN0YXRpYyBjb25zdCBjaGFyICpzYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlRm9y
UGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYgcGxhdGZvcm1UeXBlKQorc3RhdGljIGNvbnN0IGNo
YXIgKnNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGVGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3Ry
aW5nJiBwbGF0Zm9ybVR5cGUsIFBsYXRmb3JtUGFzdGVib2FyZDo6SW5jbHVkZUltYWdlVHlwZXMg
aW5jbHVkZUltYWdlVHlwZXMpCiB7CiAgICAgYXV0byBjZlR5cGUgPSBwbGF0Zm9ybVR5cGUuY3Jl
YXRlQ0ZTdHJpbmcoKTsKICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbyhjZlR5cGUuZ2V0KCksIGtV
VFR5cGVQbGFpblRleHQpKQpAQCAtMTE5LDEwICsxMTksMTMgQEAgc3RhdGljIGNvbnN0IGNoYXIg
KnNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGVGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5n
JiBwbGEKICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbyhjZlR5cGUuZ2V0KCksIGtVVFR5cGVVUkwp
KQogICAgICAgICByZXR1cm4gInRleHQvdXJpLWxpc3QiX3M7CiAKKyAgICBpZiAoaW5jbHVkZUlt
YWdlVHlwZXMgPT0gUGxhdGZvcm1QYXN0ZWJvYXJkOjpJbmNsdWRlSW1hZ2VUeXBlczo6WWVzICYm
IFVUVHlwZUNvbmZvcm1zVG8oY2ZUeXBlLmdldCgpLCBrVVRUeXBlUE5HKSkKKyAgICAgICAgcmV0
dXJuICJpbWFnZS9wbmciX3M7CisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIFZl
Y3RvcjxTdHJpbmc+IHdlYlNhZmVUeXBlcyhOU0FycmF5PE5TU3RyaW5nICo+ICpwbGF0Zm9ybVR5
cGVzLCBGdW5jdGlvbjxib29sKCk+JiYgc2hvdWxkQXZvaWRFeHBvc2luZ1VSTFR5cGUpCitzdGF0
aWMgVmVjdG9yPFN0cmluZz4gd2ViU2FmZVR5cGVzKE5TQXJyYXk8TlNTdHJpbmcgKj4gKnBsYXRm
b3JtVHlwZXMsIFBsYXRmb3JtUGFzdGVib2FyZDo6SW5jbHVkZUltYWdlVHlwZXMgaW5jbHVkZUlt
YWdlVHlwZXMsIEZ1bmN0aW9uPGJvb2woKT4mJiBzaG91bGRBdm9pZEV4cG9zaW5nVVJMVHlwZSkK
IHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKICAgICBmb3Ig
KE5TU3RyaW5nICp0eXBlIGluIHBsYXRmb3JtVHlwZXMpIHsKQEAgLTEzNCw3ICsxMzcsNyBAQCBz
dGF0aWMgVmVjdG9yPFN0cmluZz4gd2ViU2FmZVR5cGVzKE5TQXJyYXk8TlNTdHJpbmcgKj4gKnBs
YXRmb3JtVHlwZXMsIEZ1bmN0aW9uPAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoYXV0byogY29lcmNlZFR5cGUgPSBzYWZlVHlwZUZvckRPTVRvUmVhZEFu
ZFdyaXRlRm9yUGxhdGZvcm1UeXBlKHR5cGUpKSB7CisgICAgICAgIGlmIChhdXRvKiBjb2VyY2Vk
VHlwZSA9IHNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGVGb3JQbGF0Zm9ybVR5cGUodHlwZSwg
aW5jbHVkZUltYWdlVHlwZXMpKSB7CiAgICAgICAgICAgICBhdXRvIGRvbVR5cGVBc1N0cmluZyA9
IFN0cmluZzo6ZnJvbVVURjgoY29lcmNlZFR5cGUpOwogICAgICAgICAgICAgaWYgKGRvbVR5cGVB
c1N0cmluZyA9PSAidGV4dC91cmktbGlzdCJfcyAmJiAoW3BsYXRmb3JtVHlwZXMgY29udGFpbnNP
YmplY3Q6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZpbGVVUkxdIHx8IHNob3VsZEF2b2lk
RXhwb3NpbmdVUkxUeXBlKCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjMzLDcg
KzIzNiw3IEBAIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfCiAgICAgICAgIGluZm8uaXNOb25UZXh0
VHlwZSA9IHRydWU7CiAgICAgfQogCi0gICAgaW5mby53ZWJTYWZlVHlwZXNCeUZpZGVsaXR5ID0g
d2ViU2FmZVR5cGVzKHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMsIFsmXSB7CisgICAgaW5mby53
ZWJTYWZlVHlwZXNCeUZpZGVsaXR5ID0gd2ViU2FmZVR5cGVzKHJlZ2lzdGVyZWRUeXBlSWRlbnRp
ZmllcnMsIEluY2x1ZGVJbWFnZVR5cGVzOjpZZXMsIFsmXSB7CiAgICAgICAgIHJldHVybiBzaG91
bGRUcmVhdEF0TGVhc3RPbmVUeXBlQXNGaWxlKHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMpICYm
ICFQYXN0ZWJvYXJkOjpjYW5FeHBvc2VVUkxUb0RPTVdoZW5QYXN0ZWJvYXJkQ29udGFpbnNGaWxl
cyhyZWFkU3RyaW5nKGluZGV4LCBrVVRUeXBlVVJMKSk7CiAgICAgfSk7CiAKQEAgLTU2NCw3ICs1
NjcsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogICAgICAgICB9CiAgICAgfQogCi0gICAg
YXV0byB3ZWJTYWZlUGFzdGVib2FyZFR5cGVzID0gd2ViU2FmZVR5cGVzKFttX3Bhc3RlYm9hcmQg
cGFzdGVib2FyZFR5cGVzXSwgWyZdIHsKKyAgICBhdXRvIHdlYlNhZmVQYXN0ZWJvYXJkVHlwZXMg
PSB3ZWJTYWZlVHlwZXMoW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdLCBJbmNsdWRlSW1h
Z2VUeXBlczo6Tm8sIFsmXSB7CiAgICAgICAgIEJPT0wgYWJsZVRvRGV0ZXJtaW5lUHJvdG9jb2xP
ZlBhc3RlYm9hcmRVUkwgPSAhW21fcGFzdGVib2FyZCBpc0tpbmRPZkNsYXNzOltXZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkIGNsYXNzXV07CiAgICAgICAgIHJldHVybiBhYmxlVG9EZXRlcm1pbmVQ
cm90b2NvbE9mUGFzdGVib2FyZFVSTCAmJiBzdHJpbmdGb3JUeXBlKGtVVFR5cGVVUkwpLmlzRW1w
dHkoKTsKICAgICB9KTsKQEAgLTU5NiwxOCArNTk5LDI4IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2Vi
SXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lz
dHJhCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBkYXRhLmZvckVhY2hQbGF0Zm9ybVN0cmluZyhb
Jl0gKGF1dG8mIHR5cGUsIGF1dG8mIHZhbHVlKSB7Ci0gICAgICAgIGlmICghdmFsdWUpCisgICAg
ZGF0YS5mb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihbJl0gKGF1dG8mIHR5cGUsIGF1dG8m
IHZhbHVlKSB7CisgICAgICAgIGF1dG8gY29jb2FUeXBlID0gUGxhdGZvcm1QYXN0ZWJvYXJkOjpw
bGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZSh0eXBl
LCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OkluY2x1ZGVJbWFnZVR5cGVzOjpZZXMpOworICAgICAgICBp
ZiAoY29jb2FUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBO
U1N0cmluZyAqc3RyaW5nVmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgYXV0byBjb2NvYVR5cGUgPSBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRP
TVRvUmVhZEFuZFdyaXRlKHR5cGUsIFBsYXRmb3JtUGFzdGVib2FyZDo6SW5jbHVkZUltYWdlVHlw
ZXM6OlllcykuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgaWYgKFVUVHlwZUNvbmZvcm1zVG8o
Y29jb2FUeXBlLmdldCgpLCBrVVRUeXBlVVJMKSkKLSAgICAgICAgICAgIFtyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDpbTlNVUkwgVVJMV2l0aFN0cmluZzpz
dHJpbmdWYWx1ZV1dOwotICAgICAgICBlbHNlIGlmIChVVFR5cGVDb25mb3Jtc1RvKGNvY29hVHlw
ZS5nZXQoKSwga1VUVHlwZVBsYWluVGV4dCkpCi0gICAgICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6c3RyaW5nVmFsdWVdOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOltzdHJp
bmdWYWx1ZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gZm9yVHlwZToo
TlNTdHJpbmcgKiljb2NvYVR5cGUuZ2V0KCldOworICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxTdHJpbmc+KHZhbHVlKSkgeworICAgICAgICAgICAgaWYgKFdURjo6Z2V0PFN0cmlu
Zz4odmFsdWUpLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgTlNTdHJpbmcgKm5zU3RyaW5nVmFsdWUgPSBXVEY6OmdldDxTdHJpbmc+KHZhbHVlKTsKKyAg
ICAgICAgICAgIGF1dG8gY2ZUeXBlID0gY29jb2FUeXBlLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAg
ICAgICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbyhjZlR5cGUuZ2V0KCksIGtVVFR5cGVVUkwpKQor
ICAgICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGlu
Z09iamVjdDpbTlNVUkwgVVJMV2l0aFN0cmluZzpuc1N0cmluZ1ZhbHVlXV07CisgICAgICAgICAg
ICBlbHNlIGlmIChVVFR5cGVDb25mb3Jtc1RvKGNmVHlwZS5nZXQoKSwga1VUVHlwZVBsYWluVGV4
dCkpCisgICAgICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVz
ZW50aW5nT2JqZWN0Om5zU3RyaW5nVmFsdWVdOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6W25zU3RyaW5nVmFsdWUg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGZvclR5cGU6KE5TU3RyaW5n
ICopY29jb2FUeXBlXTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGF1dG8gYnVmZmVyID0gV1RGOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKKyAgICAg
ICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAg
IHJldHVybiByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCmluZGV4IGI2MzBkZmI3ZDZl
NWFhMGQzZmY3NTM5Y2Q4ZDBiOTJlNTdlMTJhNTQuLjc4YjQ4YTNhODkyZTQ2YjhjMTUwYWIyNzcw
NTBiMDI1OGVmNjkwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3
cGUvUGFzdGVib2FyZExpYldQRS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFBhc3RlYm9h
cmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1Bv
bGljeSwgT3B0aQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6
cmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZEZpbGVSZWFkZXImLCBPcHRpb25hbDxzaXplX3Q+KQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggNzE4M2Y5MDU2YTgwZDBl
MzZmZmRhNzBmZDIxYjRkZjdmYTcwZDVkZC4uZjNjYjY2ODk5YmRhYTRlNjA1OTcyZDlhNTM0Mzg4
YTdkMWQ0OWI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3Rl
Ym9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcApAQCAtMzI1LDcgKzMyNSw3IEBAIFBhc3RlYm9hcmQ6OkZpbGVDb250ZW50U3RhdGUg
UGFzdGVib2FyZDo6ZmlsZUNvbnRlbnRTdGF0ZSgpCiAgICAgcmV0dXJuIHJlYWRlci5jb3VudCA/
IEZpbGVDb250ZW50U3RhdGU6Ok1heUNvbnRhaW5GaWxlUGF0aHMgOiBGaWxlQ29udGVudFN0YXRl
OjpOb0ZpbGVPckltYWdlRGF0YTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9h
cmRGaWxlUmVhZGVyJiByZWFkZXIpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZp
bGVSZWFkZXImIHJlYWRlciwgT3B0aW9uYWw8c2l6ZV90PikKIHsKICNpZiBVU0UoQ0YpCiAgICAg
aWYgKG1fZGF0YU9iamVjdCkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGI5NGNlYjI2OGQ0ZTg4MDEzZTgwN2M0NDM0MDUyMWRhZjRlY2FjYzQu
LjgxMjgzMTk1MDQ4ZmM3ZDQ3MzM1OGRjOGJjNzc1MjhhZGYzMDMxNDggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAy
MC0wNS0yNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAg
ICBbQ2xpcGJvYXJkIEFQSV0gU3VwcG9ydCByZWFkaW5nICJpbWFnZS9wbmciIG9uIENsaXBib2Fy
ZEl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MjMzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM1ODg5NTc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGQgYSBuZXcgQVBJIHRlc3QgdG8gdmVyaWZ5
IHRoYXQgVElGRiBpbWFnZXMgb24gdGhlIHN5c3RlbSBwYXN0ZWJvYXJkIG9uIG1hY09TIGFyZSBh
dXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0bworICAgICAgICBQTkcgZGF0YSwgYW5kIGlzIGFjY2Vz
c2libGUgdGhyb3VnaCBgQ2xpcGJvYXJkSXRlbWAgdGhyb3VnaCB0aGUgImltYWdlL3BuZyIgdHlw
ZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2xpcGJvYXJk
VGVzdHMubW06CisKIDIwMjAtMDUtMjcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtGbGF0cGFrIFNES10gVXBkYXRlIG9wZW54ciByZWNpcGUKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2xpcGJvYXJk
VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NsaXBib2Fy
ZFRlc3RzLm1tCmluZGV4IGNmMTMzN2ZhNGJiZTQyNjI1ZGMyNGEwZTlkNWZhMWE2NjRkZjJmMTUu
LjRlNTVjZjAxYTk3ZjI3OWI0MmRjMGRhZDUyOGNhZTY1YmFhNmFhN2UgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2xpcGJvYXJkVGVzdHMubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DbGlwYm9hcmRUZXN0cy5t
bQpAQCAtMTY1LDMgKzE2NSwyMSBAQCBURVNUKENsaXBib2FyZFRlc3RzLCBXcml0ZVNhbml0aXpl
ZE1hcmt1cCkKICAgICBFWFBFQ1RfRkFMU0UoW3dyaXR0ZW5NYXJrdXAgY29udGFpbnNTdHJpbmc6
QCJzdXBlciBzZWNyZXQiXSk7CiAgICAgRVhQRUNUX0ZBTFNFKFt3cml0dGVuTWFya3VwIGNvbnRh
aW5zU3RyaW5nOkAiPHNjcmlwdD4iXSk7CiB9CisKKyNpZiBQTEFURk9STShNQUMpCisKK1RFU1Qo
Q2xpcGJvYXJkVGVzdHMsIENvbnZlcnRUSUZGVG9QTkdXaGVuUGFzdGluZykKK3sKKyAgICBhdXRv
IHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3Rm9yQ2xpcGJvYXJkVGVzdHMoKTsKKyAgICBhdXRvIHVy
bCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzdW5zZXQtaW4tY3Vw
ZXJ0aW5vLTEwMHB4IiB3aXRoRXh0ZW5zaW9uOkAidGlmZiIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBOU1Bhc3RlYm9hcmQu
Z2VuZXJhbFBhc3RlYm9hcmQ7CisgICAgW3Bhc3RlYm9hcmQgY2xlYXJDb250ZW50c107CisgICAg
W3Bhc3RlYm9hcmQgc2V0RGF0YTpbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDp1cmxdIGZv
clR5cGU6TlNQYXN0ZWJvYXJkVHlwZVRJRkZdOworICAgIFt3ZWJWaWV3IHJlYWRDbGlwYm9hcmRd
OworCisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZXhjZXB0aW9uID8gZXhjZXB0aW9uLm1lc3NhZ2UgOiAnJyJdKTsKKyAgICBF
WFBFQ1RfRVEoMVUsIFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xp
cGJvYXJkRGF0YS5sZW5ndGgiXSB1bnNpZ25lZEludFZhbHVlXSk7CisgICAgRVhQRUNUX1RSVUUo
W1t3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRhWzBd
WydpbWFnZS9wbmcnXS5zcmMiXSBjb250YWluc1N0cmluZzpAImJsb2I6Il0pOworfQorCisjZW5k
aWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdiZDU2M2RmOGFlYTJmZTk1NzQ3ZTk4ZmFmYzkw
M2ZmNDMxMDIyNTkuLjFjZmUzMzAzNTY3MGZmYzA3YTQ3ZWZjMzE2ZTgxNDgyNWIxZDhkZTQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMC0wNS0yNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJkIEFQSV0gU3VwcG9ydCByZWFkaW5n
ICJpbWFnZS9wbmciIG9uIENsaXBib2FyZEl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjMzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM1
ODg5NTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGQg
YSBuZXcgbGF5b3V0IHRlc3QgdG8gdmVyaWZ5IHRoYXQgYENsaXBib2FyZC53cml0ZWAgYW5kIGBD
bGlwYm9hcmQucmVhZGAgY2FuIGJlIHVzZWQgdG8gY29weSBhbmQgdGhlbiByZWFkCisgICAgICAg
IGJhY2sgUE5HIGltYWdlIGRhdGEuCisKKyAgICAgICAgKiBlZGl0aW5nL2FzeW5jLWNsaXBib2Fy
ZC9jbGlwYm9hcmQtcmVhZC13cml0ZS1pbWFnZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtcmVhZC13cml0ZS1pbWFnZXMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvcmVzb3VyY2Vz
L2FzeW5jLWNsaXBib2FyZC1oZWxwZXJzLmpzOgorICAgICAgICAoc2FtcGxlQmFzZTY0UE5HSW1h
Z2VEYXRhMSk6CisgICAgICAgIChzYW1wbGVCYXNlNjRQTkdJbWFnZURhdGEyKToKKyAgICAgICAg
KGltYWdlQmxvYik6CisgICAgICAgIChzYW1wbGVCYXNlNjRQTkdJbWFnZURhdGEpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTA1LTI3
ICBKYXNvbiBMYXdyZW5jZSAgPGxhd3JlbmNlLmpAYXBwbGUuY29tPgogCiAgICAgICAgIFsgQ2F0
YWxpbmEgd2syIF0gd2VicnRjL3ZpZGVvLWF1dG9wbGF5MS5odG1sIGlzIGZsYWt5IGZhaWxpbmcu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9h
cmQtcmVhZC13cml0ZS1pbWFnZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9h
c3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLXJlYWQtd3JpdGUtaW1hZ2VzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kYTYxNzc1MzE1YTQ2NjY0ZGY0MTA0ZDI4NGE5OWZmYTg0YjAzM2YxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJv
YXJkLXJlYWQtd3JpdGUtaW1hZ2VzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUaGlz
IHRlc3QgdmVyaWZpZXMgdGhhdCBtdWx0aXBsZSBpbWFnZXMgY2FuIGJlIHdyaXR0ZW4gdG8gYW5k
IHJlYWQgZnJvbSB0aGUgc3lzdGVtIGNsaXBib2FyZC4gVG8gbWFudWFsbHkgcnVuIHRoZSB0ZXN0
LCB0YXAgdGhlIGNvcHkgYnV0dG9uLCBhbmQgdGhlbiB0YXAgcGFzdGUuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvbmVXcml0aW5nIGJlY2FtZSB0cnVlCitQQVNTIGl0
ZW1zLmxlbmd0aCBpcyAyCitQQVNTIGl0ZW0udHlwZXMubGVuZ3RoIGlzIDEKK1BBU1MgaXRlbS50
eXBlcy5pbmNsdWRlcygnaW1hZ2UvcG5nJykgaXMgdHJ1ZQorUEFTUyBQYXN0ZWQgNjAgYnkgNjAg
aW1hZ2UuCitQQVNTIGl0ZW0udHlwZXMubGVuZ3RoIGlzIDEKK1BBU1MgaXRlbS50eXBlcy5pbmNs
dWRlcygnaW1hZ2UvcG5nJykgaXMgdHJ1ZQorUEFTUyBQYXN0ZWQgMjAgYnkgMjAgaW1hZ2UuCitQ
QVNTIGRvbmVSZWFkaW5nIGJlY2FtZSB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
YXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1yZWFkLXdyaXRlLWltYWdlcy5odG1sIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLXJlYWQtd3JpdGUtaW1hZ2Vz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGZkMDcyOTBiZWQ1NmJhMDdmNmUwYzdkMjRkMDU4ZDJmZDJmMTY5
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJk
L2NsaXBib2FyZC1yZWFkLXdyaXRlLWltYWdlcy5odG1sCkBAIC0wLDAgKzEsNzQgQEAKKzwhRE9D
VFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9
dHJ1ZSBleHBlcmltZW50YWw6QXN5bmNDbGlwYm9hcmRBUElFbmFibGVkPXRydWUgXSAtLT4KKzxo
dG1sPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0ZjgiPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0
YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNj
YWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIu
L3Jlc291cmNlcy9hc3luYy1jbGlwYm9hcmQtaGVscGVycy5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIGJ1dHRvbiB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDEw
MHB4OworICAgICAgICAgICAgICAgIHBhZGRpbmc6IDFlbTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAganNUZXN0SXNB
c3luYyA9IHRydWU7CisgICAgICAgIGRvbmVXcml0aW5nID0gZmFsc2U7CisgICAgICAgIGRvbmVS
ZWFkaW5nID0gZmFsc2U7CisKKyAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmll
cyB0aGF0IG11bHRpcGxlIGltYWdlcyBjYW4gYmUgd3JpdHRlbiB0byBhbmQgcmVhZCBmcm9tIHRo
ZSBzeXN0ZW0gY2xpcGJvYXJkLiBUbyBtYW51YWxseSBydW4gdGhlIHRlc3QsIHRhcCB0aGUgY29w
eSBidXR0b24sIGFuZCB0aGVuIHRhcCBwYXN0ZS4iKTsKKworICAgICAgICBhc3luYyBmdW5jdGlv
biBydW5UZXN0KCkgeworICAgICAgICAgICAgY29uc3QgY29weUJ1dHRvbiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjb3B5Iik7CisgICAgICAgICAgICBjb25zdCBwYXN0ZUJ1dHRvbiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXN0ZSIpOworICAgICAgICAgICAgY29uc3QgaW1hZ2Vz
Q29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltYWdlc0NvbnRhaW5lciIpOwor
ICAgICAgICAgICAgY29weUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGFzeW5jIGV2
ZW50ID0+IHsKKyAgICAgICAgICAgICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRl
KFsKKyAgICAgICAgICAgICAgICAgICAgbmV3IENsaXBib2FyZEl0ZW0oeyAiaW1hZ2UvcG5nIiA6
IFByb21pc2UucmVzb2x2ZShpbWFnZUJsb2IoKSkgfSksCisgICAgICAgICAgICAgICAgICAgIG5l
dyBDbGlwYm9hcmRJdGVtKHsgImltYWdlL3BuZyIgOiBQcm9taXNlLnJlc29sdmUoaW1hZ2VCbG9i
KHNhbXBsZUJhc2U2NFBOR0ltYWdlRGF0YTIoKSkpIH0pCisgICAgICAgICAgICAgICAgXSk7Cisg
ICAgICAgICAgICAgICAgZG9uZVdyaXRpbmcgPSB0cnVlOworICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIHBhc3RlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgYXN5bmMgZXZl
bnQgPT4geworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGl0ZW1z
ID0gYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkKCk7CisgICAgICAgICAgICAgICAgICAg
IHNob3VsZEJlKCJpdGVtcy5sZW5ndGgiLCAiMiIpOworICAgICAgICAgICAgICAgICAgICBmb3Ig
KGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5p
dGVtID0gaXRlbTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJpdGVtLnR5cGVz
Lmxlbmd0aCIsICIxIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoIml0
ZW0udHlwZXMuaW5jbHVkZXMoJ2ltYWdlL3BuZycpIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBpbWFnZURhdGEgPSBhd2FpdCBpdGVtLmdldFR5cGUoImltYWdlL3BuZyIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1hZ2UgPSBhd2FpdCBsb2FkSW1hZ2UoaW1hZ2VE
YXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlc0NvbnRhaW5lci5hcHBlbmRDaGls
ZChpbWFnZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBpbWFnZS5kZWNvZGUoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsaWVudFJlY3QgPSBpbWFnZS5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoYFBh
c3RlZCAke2NsaWVudFJlY3Qud2lkdGh9IGJ5ICR7Y2xpZW50UmVjdC5oZWlnaHR9IGltYWdlLmAp
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXhjZXB0
aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYENhdWdodCBleGNlcHRpb246
ICR7ZXhjZXB0aW9ufWApOworICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAg
ICAgICAgICAgIGRvbmVSZWFkaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50KGNv
cHlCdXR0b24pOworICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzaG91
bGRCZWNvbWVFcXVhbCgiZG9uZVdyaXRpbmciLCAidHJ1ZSIsIHJlc29sdmUpKTsKKworICAgICAg
ICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50KHBhc3RlQnV0dG9uKTsKKyAgICAg
ICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2hvdWxkQmVjb21lRXF1YWwoImRv
bmVSZWFkaW5nIiwgInRydWUiLCByZXNvbHZlKSk7CisKKyAgICAgICAgICAgIFtwYXN0ZUJ1dHRv
biwgY29weUJ1dHRvbl0ubWFwKGJ1dHRvbiA9PiBidXR0b24ucmVtb3ZlKCkpOworICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBhZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgcnVuVGVzdCk7CisgICAgPC9zY3JpcHQ+CisgICAgPGJvZHk+CisgICAgICAgIDxi
dXR0b24gaWQ9ImNvcHkiPkNvcHk8L2J1dHRvbj4KKyAgICAgICAgPGJ1dHRvbiBpZD0icGFzdGUi
PlBhc3RlPC9idXR0b24+CisgICAgICAgIDxkaXYgaWQ9ImltYWdlc0NvbnRhaW5lciI+PC9kaXY+
CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9h
c3luYy1jbGlwYm9hcmQvcmVzb3VyY2VzL2FzeW5jLWNsaXBib2FyZC1oZWxwZXJzLmpzIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvcmVzb3VyY2VzL2FzeW5jLWNsaXBib2Fy
ZC1oZWxwZXJzLmpzCmluZGV4IDYxYmM2YTFmODQ1YmVhYjY0ZWZkMDQzM2UxMGQxZjYyM2MxMjNj
MzQuLjY3Y2FhMmJmYTJjYTRmMDNlNDJkMTE1Y2VlNTJhY2NhYTA1N2RjNjAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2VkaXRpbmcvYXN5bmMtY2xpcGJvYXJkL3Jlc291cmNlcy9hc3luYy1jbGlw
Ym9hcmQtaGVscGVycy5qcworKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2FzeW5jLWNsaXBib2Fy
ZC9yZXNvdXJjZXMvYXN5bmMtY2xpcGJvYXJkLWhlbHBlcnMuanMKQEAgLTEsOSArMSwxNCBAQAot
ZnVuY3Rpb24gc2FtcGxlQmFzZTY0UE5HSW1hZ2VEYXRhKCkgeworZnVuY3Rpb24gc2FtcGxlQmFz
ZTY0UE5HSW1hZ2VEYXRhMSgpIHsKICAgICAvLyBBIDYwIGJ5IDYwIHNvbGlkIHJlZCBzcXVhcmUu
CiAgICAgcmV0dXJuICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRHdBQUFBOENBWUFBQUE2L05s
eUFBQUFBWE5TUjBJQXJzNGM2UUFBQUpabFdFbG1UVTBBS2dBQUFBZ0FCQUVhQUFVQUFBQUJBQUFB
UGdFYkFBVUFBQUFCQUFBQVJnRW9BQU1BQUFBQkFBSUFBSWRwQUFRQUFBQUJBQUFBVGdBQUFBQUFB
QUNRQUFBQUFRQUFBSkFBQUFBQkFBU1NoZ0FIQUFBQUVnQUFBSVNnQVFBREFBQUFBUUFCQUFDZ0Fn
QUVBQUFBQVFBQUFEeWdBd0FFQUFBQUFRQUFBRHdBQUFBQVFWTkRTVWtBQUFCVFkzSmxaVzV6YUc5
MENVZzBtd0FBQUFsd1NGbHpBQUFXSlFBQUZpVUJTVklrOEFBQUFkUnBWRmgwV0UxTU9tTnZiUzVo
Wkc5aVpTNTRiWEFBQUFBQUFEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZi
V1YwWVM4aUlIZzZlRzF3ZEdzOUlsaE5VQ0JEYjNKbElEVXVOQzR3SWo0S0lDQWdQSEprWmpwU1JF
WWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhK
a1ppMXplVzUwWVhndGJuTWpJajRLSUNBZ0lDQWdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2
WVdKdmRYUTlJaUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02WlhocFpqMGlhSFIwY0RvdkwyNXpM
bUZrYjJKbExtTnZiUzlsZUdsbUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJG
aEVhVzFsYm5OcGIyNCtOakE4TDJWNGFXWTZVR2w0Wld4WVJHbHRaVzV6YVc5dVBnb2dJQ0FnSUNB
Z0lDQThaWGhwWmpwVmMyVnlRMjl0YldWdWRENVRZM0psWlc1emFHOTBQQzlsZUdsbU9sVnpaWEpE
YjIxdFpXNTBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K05qQThM
MlY0YVdZNlVHbDRaV3haUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0E4TDNKa1pqcEVaWE5qY21sd2RH
bHZiajRLSUNBZ1BDOXlaR1k2VWtSR1BnbzhMM2c2ZUcxd2JXVjBZVDRLOStCbWJBQUFBQnhwUkU5
VUFBQUFBZ0FBQUFBQUFBQWVBQUFBS0FBQUFCNEFBQUFlQUFBQWxzL0dVSThBQUFCaVNVUkJWR2dG
N05JeEFRQWdETVJBNm9nZC83cEFRQnlFZFB6dC96cjM3THMrdXFtd1hEdGhPZkJLT0dIWkFyMjBE
QlIxRXNZa3NpQmhHU2pxSkl4SlpFSENNbERVU1JpVHlJS0VaYUNva3pBbWtRVUp5MEJSSjJGTUln
c1Nsb0dpemdNQUFQLy9ZNGIySlFBQUFHQkpSRUZVN2RJeEFRQWdETVJBNm9nZC83cEFRQnlFZFB6
dC96cjM3THMrdXFtd1hEdGhPZkJLT0dIWkFyMjBEQlIxRXNZa3NpQmhHU2pxSkl4SlpFSENNbERV
U1JpVHlJS0VaYUNva3pBbWtRVUp5MEJSSjJGTUlnc1Nsb0dpemdPbDNwRFpCQmEwaHdBQUFBQkpS
VTVFcmtKZ2dnIjsKIH0KIAotZnVuY3Rpb24gaW1hZ2VCbG9iKGJhc2U2NFN0cmluZyA9IHNhbXBs
ZUJhc2U2NFBOR0ltYWdlRGF0YSgpKSB7CitmdW5jdGlvbiBzYW1wbGVCYXNlNjRQTkdJbWFnZURh
dGEyKCkgeworICAgIC8vIEEgMjAgYnkgMjAgYmxhY2sgc3F1YXJlLgorICAgIHJldHVybiAiaVZC
T1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBQVhOU1IwSUFyczRj
NlFBQUFKWmxXRWxtVFUwQUtnQUFBQWdBQkFFYUFBVUFBQUFCQUFBQVBnRWJBQVVBQUFBQkFBQUFS
Z0VvQUFNQUFBQUJBQUlBQUlkcEFBUUFBQUFCQUFBQVRnQUFBQUFBQUFDUUFBQUFBUUFBQUpBQUFB
QUJBQVNTaGdBSEFBQUFFZ0FBQUlTZ0FRQURBQUFBQVFBQkFBQ2dBZ0FFQUFBQUFRQUFBQlNnQXdB
RUFBQUFBUUFBQUJRQUFBQUFRVk5EU1VrQUFBQlRZM0psWlc1emFHOTBYcVZTdGdBQUFBbHdTRmx6
QUFBV0pRQUFGaVVCU1ZJazhBQUFBZFJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFB
RHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RH
czlJbGhOVUNCRGIzSmxJRFl1TUM0d0lqNEtJQ0FnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNK
b2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1q
SWo0S0lDQWdJQ0FnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJS0lDQWdJ
Q0FnSUNBZ0lDQWdlRzFzYm5NNlpYaHBaajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5bGVH
bG1MekV1TUM4aVBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmhFYVcxbGJuTnBiMjQrTWpB
OEwyVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFZjMlZ5
UTI5dGJXVnVkRDVUWTNKbFpXNXphRzkwUEM5bGVHbG1PbFZ6WlhKRGIyMXRaVzUwUGdvZ0lDQWdJ
Q0FnSUNBOFpYaHBaanBRYVhobGJGbEVhVzFsYm5OcGIyNCtNakE4TDJWNGFXWTZVR2w0Wld4WlJH
bHRaVzV6YVc5dVBnb2dJQ0FnSUNBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0S0lDQWdQQzl5WkdZ
NlVrUkdQZ284TDNnNmVHMXdiV1YwWVQ0S0Jrc3Mvd0FBQUJ4cFJFOVVBQUFBQWdBQUFBQUFBQUFL
QUFBQUtBQUFBQW9BQUFBS0FBQUE1K2pSamFnQUFBQ3pTVVJCVkRnUmRGSUpFc1FnQ0pQL1A5cE5J
Q25pdUU1SElBZkYybGdyOWxwNHRDSmpBR21NRVBFZHVVdXVQUFhnVVc1WUppclNhSkp2UlNyZHhE
YkdUeDVJNzZuTWR1T1MyM1EzSkc3dXpBQmV6VnVWSE04OFAwak5TTi9uTFkrY0RGeGJkTUxpaUR0
RlBHK0FjRU1XZldvNnRWTFZVNWZVVnI2MFo2NmNQbitRUnRUdEN0QUZydk4xNUd5RGJYRGR6OGNG
Z2diRXVmSFhHRXNHaFpyV3hSQ3ErTS9kVE5WQ24ySDBQKzFuUGtRb2ZnQUFBUC8vUzVPaUdnQUFB
S2xKUkVGVWZWSUpFc1FnRERML2Y3U0xDZURadFROcXVFeHRvMFhyZUI0aldnU29nd1A2WmNpTWFB
MHVKYUxTZHJCVi9vbEk5MzZBUEE0Nk12UFVhOG9nV2JhaW1naGd2VE1xRis3WjR4V1lnRFFMaTZB
SHFsZWRRb3U4S2E1S3pMNjFNN0JhWmRLUVk2VFlWbDR4UXdhdmowYW9sSVBBMklxQ25saHFJWjUv
QUoxWWFzZWFHVUpkR3BnK04yYlJ6aW14VmxVV3IzMG1xYnZxK0ZlWER3ckQ3VlhLTnlQRmMvMEJl
aktmQ29yV29Wb0FBQUFBU1VWT1JLNUNZSUkiOworfQorCitmdW5jdGlvbiBpbWFnZUJsb2IoYmFz
ZTY0U3RyaW5nID0gc2FtcGxlQmFzZTY0UE5HSW1hZ2VEYXRhMSgpKSB7CiAgICAgcmV0dXJuIHRl
eHRCbG9iKGF0b2IoYmFzZTY0U3RyaW5nKSwgImltYWdlL3BuZyIpOwogfQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDZjMTY5NWU5NWZlOGVhYWEwNDE4
NmNkNGZhZWIxYTcwNTNkN2JjYzkuLjNkZTQ4MDllY2Q0MWRhNjAyNDczMTUxZmY5MzY5MzE2ODJl
N2EwODQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC0x
MjEwLDYgKzEyMTAsNyBAQCB3ZWJraXQub3JnL2IvMjAzMTAwIGVkaXRpbmcvYXN5bmMtY2xpcGJv
YXJkL2NsaXBib2FyZC1yZWFkLXRleHQuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzIwMzEw
MCBlZGl0aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtcmVhZC13aGlsZS1wYXN0aW5nLmh0
bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8yMDMxMDAgZWRpdGluZy9hc3luYy1jbGlwYm9hcmQv
c2FuaXRpemUtd2hlbi13cml0aW5nLWltYWdlLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8y
MDMxMDAgZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvc2FuaXRpemUtd2hlbi1yZWFkaW5nLW1hcmt1
cC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjAzMTAwIGVkaXRpbmcvYXN5bmMtY2xpcGJv
YXJkL2NsaXBib2FyZC1yZWFkLXdyaXRlLWltYWdlcy5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5v
cmcvYi8xNDA3ODMgWyBSZWxlYXNlIF0gZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktc3RhbmRhbG9u
ZS1pbWFnZS5odG1sIFsgRmFpbHVyZSBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8x
NDA3ODMgWyBEZWJ1ZyBdIGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXN0YW5kYWxvbmUtaW1hZ2Uu
aHRtbCBbIFNraXAgXSAjIERlYnVnIEFzc2VydGlvbgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>