<?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>207608</bug_id>
          
          <creation_ts>2020-02-11 18:58:48 -0800</creation_ts>
          <short_desc>Mask WebGL strings</short_desc>
          <delta_ts>2020-02-14 19:20:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</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="Jon Lee">jonlee</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>justin_fan</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1617814</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2020-02-11 18:58:48 -0800</bug_when>
    <thetext>Mask WebGL strings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617818</commentid>
    <comment_count>1</comment_count>
      <attachid>390480</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2020-02-11 19:06:29 -0800</bug_when>
    <thetext>Created attachment 390480
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618796</commentid>
    <comment_count>2</comment_count>
      <attachid>390707</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2020-02-13 17:18:10 -0800</bug_when>
    <thetext>Created attachment 390707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618834</commentid>
    <comment_count>3</comment_count>
      <attachid>390718</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2020-02-13 18:48:12 -0800</bug_when>
    <thetext>Created attachment 390718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619345</commentid>
    <comment_count>4</comment_count>
      <attachid>390718</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-14 19:19:07 -0800</bug_when>
    <thetext>Comment on attachment 390718
Patch

Clearing flags on attachment: 390718

Committed r256697: &lt;https://trac.webkit.org/changeset/256697&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619346</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-14 19:19:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619348</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-14 19:20:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/59481429&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390480</attachid>
            <date>2020-02-11 19:06:29 -0800</date>
            <delta_ts>2020-02-13 17:18:06 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-207608-20200211190628.patch</filename>
            <type>text/plain</type>
            <size>22349</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U5NWY3MGVjZjY0YTll
ODViMmIxYTVjYzQ4ZTM5NzMxMDAwM2FlNi4uZWE1ODhjNGMzYzY0NTZhOWM0MjY1ODNlODA5NTA2
MWFlZDU4M2QzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAyLTExICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBNYXNrIFdlYkdMIHN0cmluZ3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYwOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgZXhw
ZXJpbWVudGFsIGZlYXR1cmUgdG8gbWFzayBXZWJHTCB2ZW5kb3IsIHJlbmRlcmVyLCBhbmQgc2hh
ZGluZyBsYW5ndWFnZSBzdHJpbmdzLgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHA6IFdoaXRlc3BhY2UgY2xlYW51cCBhbHNvLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKTogQ2hlY2sgYWdhaW5z
dCB0aGUgcnVudGltZSBmZWF0dXJlIHRvIHJldHVybiB0aGUKKyAgICAgICAgb2xkIHN0cmluZy4K
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOiBEaXR0by4K
KyAgICAgICAgKiBwYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldE1hc2tXZWJHTFN0cmluZ3NFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1hc2tXZWJHTFN0cmlu
Z3NFbmFibGVkIGNvbnN0KToKKwogMjAyMC0wMi0xMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjM2MDI1KTogQ29ycmVjdCBmbGFr
eSBXZWJHTDIgdGVzdCBmYWlsdXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiNTQwZGY0OTI0ODY2MjhkOTMwMWM0
Njc5YmE0OGZkMmU5ZjE3MTJlLi5kZDhlNTdiNTQyMGJhZWU2Y2M2ZTY0ZmYxZDU2YTE1NzU3MDRi
YTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAyLTExICBKb24gTGVlICA8am9u
bGVlQGFwcGxlLmNvbT4KKworICAgICAgICBNYXNrIFdlYkdMIHN0cmluZ3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYwOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVu
Y2VzLnlhbWw6IEFkZCBuZXcgZXhwZXJpbWVudGFsIGZlYXR1cmUuCisKIDIwMjAtMDItMTEgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUGFnZTo6
Z2V0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiBzaG91bGQgYmUgcm9idXN0IHdoZW4gdGhlIGZv
Y3VzZWQgZWxlbWVudCBjaGFuZ2VzIGR1cmluZyBsYXlvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMjlhMjky
ZTgxNGMwMGM1MzEzODM3OTk4MmIyNTFkZTFkYzY1YTE2Yy4uMTdlNjU4OWE0ZWZiNWFiMjdmODhi
YzNlYjM2ZDE2ZGI4ZWY3ZGQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw2ICs0Myw3IEBACiAjaW5j
bHVkZSAiT0VTVGV4dHVyZUhhbGZGbG9hdC5oIgogI2luY2x1ZGUgIk9FU1RleHR1cmVIYWxmRmxv
YXRMaW5lYXIuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKKyNpbmNsdWRlICJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2ViR0xBY3RpdmVJbmZvLmgiCiAjaW5jbHVkZSAi
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaCIKICNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDLmgiCkBAIC05NDAsNyArOTQxLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc28K
IHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgCisKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJEaXZpc29y
KGluZGV4LCBkaXZpc29yKTsKIH0KIApAQCAtMTUxNiw3ICsxNTE3LDcgQEAgUmVmUHRyPFdlYkdM
VmVydGV4QXJyYXlPYmplY3Q+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVZlcnRleEFy
cmF5KCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAKKwogICAgIGF1dG8gb2JqZWN0ID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6Y3Jl
YXRlKCp0aGlzLCBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpUeXBlOjpVc2VyKTsKICAgICBhZGRD
b250ZXh0T2JqZWN0KG9iamVjdC5nZXQoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUob2JqZWN0KTsK
QEAgLTE1MjYsMTcgKzE1MjcsMTcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxl
dGVWZXJ0ZXhBcnJheShXZWJHTFZlcnRleEFycmF5T2JqZWN0KiBhcnJheU9iamUKIHsKICAgICBp
ZiAoIWFycmF5T2JqZWN0IHx8IGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IAorCiAgICAgaWYgKGFycmF5T2JqZWN0LT5pc0RlbGV0ZWQoKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIAorCiAgICAgaWYgKCFhcnJheU9iamVjdC0+aXNEZWZhdWx0T2JqZWN0KCkgJiYgYXJyYXlP
YmplY3QgPT0gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0KQogI2lmIFVTRShPUEVOR0xfRVMpCiAg
ICAgICAgIHNldEJvdW5kVmVydGV4QXJyYXlPYmplY3QobnVsbHB0cik7CiAjZWxzZQogICAgICAg
ICBiaW5kVmVydGV4QXJyYXkobnVsbHB0cik7IC8vIFRoZSBkZWZhdWx0IFZBTyB3YXMgcmVtb3Zl
ZCBpbiBPcGVuR0wgMy4zIGJ1dCBub3QgZnJvbSBXZWJHTCAyOyBiaW5kIHRoZSBkZWZhdWx0IGZv
ciBXZWJHTCB0byB1c2UuCiAjZW5kaWYKLSAgICAKKwogICAgIGFycmF5T2JqZWN0LT5kZWxldGVP
YmplY3QoZ3JhcGhpY3NDb250ZXh0R0woKSk7CiB9CiAKQEAgLTE1NDQsMTAgKzE1NDUsMTAgQEAg
R0NHTGJvb2xlYW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNWZXJ0ZXhBcnJheShXZWJHTFZl
cnRleEFycmF5T2JqZWN0KiBhcnJheU8KIHsKICAgICBpZiAoIWFycmF5T2JqZWN0IHx8IGlzQ29u
dGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgaWYgKCFhcnJh
eU9iamVjdC0+aGFzRXZlckJlZW5Cb3VuZCgpIHx8ICFhcnJheU9iamVjdC0+dmFsaWRhdGUoMCwg
KnRoaXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICByZXR1cm4gbV9jb250
ZXh0LT5pc1ZlcnRleEFycmF5KGFycmF5T2JqZWN0LT5vYmplY3QoKSk7CiB9CiAKQEAgLTE1NTUs
MTQgKzE1NTYsMTQgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kVmVydGV4QXJy
YXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJyYXlPYmplY3QKIHsKICAgICBpZiAoaXNDb250
ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAoYXJyYXlPYmplY3Qg
JiYgKGFycmF5T2JqZWN0LT5pc0RlbGV0ZWQoKSB8fCAhYXJyYXlPYmplY3QtPnZhbGlkYXRlKDAs
ICp0aGlzKSB8fCAhbV9jb250ZXh0T2JqZWN0cy5jb250YWlucyhhcnJheU9iamVjdCkpKSB7CiAg
ICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoYXJyYXlP
YmplY3QgJiYgIWFycmF5T2JqZWN0LT5pc0RlZmF1bHRPYmplY3QoKSAmJiBhcnJheU9iamVjdC0+
b2JqZWN0KCkpIHsKICAgICAgICAgbV9jb250ZXh0LT5iaW5kVmVydGV4QXJyYXkoYXJyYXlPYmpl
Y3QtPm9iamVjdCgpKTsKLSAgICAgICAgCisKICAgICAgICAgYXJyYXlPYmplY3QtPnNldEhhc0V2
ZXJCZWVuQm91bmQoKTsKICAgICAgICAgc2V0Qm91bmRWZXJ0ZXhBcnJheU9iamVjdChhcnJheU9i
amVjdCk7CiAgICAgfSBlbHNlIHsKQEAgLTE2MTAsNyArMTYxMSw3IEBAIE9wdGlvbmFsPFZlY3Rv
cjxTdHJpbmc+PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25z
KCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHJl
c3VsdDsKLSAgICAKKwogICAgIGlmIChtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAKQEAgLTE3MDQsNyArMTcwNSw3IEBAIFdlYkdMQW55IFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHQ0dM
ZW51bSB0YXJnCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAgICAgfQotICAgIAorCiAg
ICAgaWYgKG9iamVjdC0+aXNUZXh0dXJlKCkpIHsKICAgICAgICAgc3dpdGNoIChwbmFtZSkgewog
ICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09C
SkVDVF9UWVBFOgpAQCAtMjExNCw3ICsyMTE1LDkgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlNDSVNTT1JfVEVTVDoKICAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJhbWV0
ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNIQURJTkdfTEFOR1VBR0Vf
VkVSU0lPTjoKLSAgICAgICAgcmV0dXJuICJXZWJHTCBHTFNMIEVTIDEuMCAoIiArIG1fY29udGV4
dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpTSEFESU5HX0xBTkdVQUdFX1ZFUlNJT04p
ICsgIikiOworICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkubWFza1dlYkdMU3RyaW5nc0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAiV2Vi
R0wgR0xTTCBFUyAxLjAgKCIgKyBtX2NvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRH
TDo6U0hBRElOR19MQU5HVUFHRV9WRVJTSU9OKSArICIpIjsKKyAgICAgICAgcmV0dXJuICJXZWJH
TCBHTFNMIEVTIDEuMCAoMS4wKSJfc3RyOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNU
RU5DSUxfQkFDS19GQUlMOgogICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRJbnRQYXJhbWV0ZXIo
cG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNURU5DSUxfQkFDS19GVU5DOgpA
QCAtMjE3MywxNyArMjE3NiwyMiBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUpCiAgICAgICAgIHJldHVybiBnZXRXZWJHTEludEFy
cmF5UGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIFdlYkdMRGVidWdSZW5kZXJlckluZm86OlVO
TUFTS0VEX1JFTkRFUkVSX1dFQkdMOgogICAgICAgICBpZiAobV93ZWJnbERlYnVnUmVuZGVyZXJJ
bmZvKSB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgICAgIHJldHVybiAiQXBw
bGUgR1BVIl9zdHI7Ci0jZWxzZQotICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0U3Ry
aW5nKEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUik7CisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkubWFza1dlYkdMU3RyaW5nc0VuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKTsKICNlbmRp
ZgorICAgICAgICAgICAgcmV0dXJuICJBcHBsZSBHUFUiX3N0cjsKICAgICAgICAgfQogICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0
UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUsIFdFQkdMX2RlYnVnX3JlbmRlcmVy
X2luZm8gbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgY2FzZSBX
ZWJHTERlYnVnUmVuZGVyZXJJbmZvOjpVTk1BU0tFRF9WRU5ET1JfV0VCR0w6Ci0gICAgICAgIGlm
IChtX3dlYmdsRGVidWdSZW5kZXJlckluZm8pCi0gICAgICAgICAgICByZXR1cm4gbV9jb250ZXh0
LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlZFTkRPUik7CisgICAgICAgIGlmIChtX3dl
YmdsRGVidWdSZW5kZXJlckluZm8pIHsKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAg
ICAgICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5tYXNr
V2ViR0xTdHJpbmdzRW5hYmxlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQt
PmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6VkVORE9SKTsKKyNlbmRpZgorICAgICAgICAg
ICAgcmV0dXJuICJBcHBsZSBJbmMuIl9zdHI7CisgICAgICAgIH0KICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFBhcmFtZXRlciIs
ICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIG5vdCBl
bmFibGVkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNhc2UgRXh0ZW5zaW9uc0dM
OjpNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IC8vIEVYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYwpAQCAtMjI0MSw4ICsyMjQ5LDggQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogICAgICAgICByZXR1cm4gZ2V0
SW50UGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVkVS
VEVYX1VOSUZPUk1fQkxPQ0tTOgogICAgICAgICByZXR1cm4gZ2V0SW50UGFyYW1ldGVyKHBuYW1l
KTsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9O
RU5UUzogCi0gICAgICAgIHJldHVybiBnZXRJbnRQYXJhbWV0ZXIocG5hbWUpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVkVSVEVY
X1VOSUZPUk1fQ09NUE9ORU5UUzoKKyAgICAgICAgcmV0dXJuIGdldEludFBhcmFtZXRlcihwbmFt
ZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6TUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VU
OgogICAgICAgICByZXR1cm4gZ2V0SW50UGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpQQUNLX1JPV19MRU5HVEg6CkBAIC0yMzA2LDcgKzIzMTQsNyBAQCBXZWJH
TEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIoR0NHTGVudW0gcG5hbWUp
CiAgICAgICAgIHJldHVybiBtX2JvdW5kU2FtcGxlcnNbbV9hY3RpdmVUZXh0dXJlVW5pdF07CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09QWV9SRUFEX0JVRkZFUjoKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpDT1BZX1dSSVRFX0JVRkZFUjoKLSAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpQSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOiAgIAorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlBJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkc6CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6UElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HOgogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0R0w6OlJFQURfQlVGRkVSOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRV
UkVfQklORElOR18yRF9BUlJBWToKQEAgLTIzMjcsMTkgKzIzMzUsMTkgQEAgYm9vbCBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0NHTGVudW0g
dHlwZSwgdW5zaWcKICAgICAvLyBhcnJheSBidWZmZXJzIGhhdmUgZW5vdWdoIGVsZW1lbnRzIHRv
IHNhdGlzZnkgdGhhdCBtYXhpbXVtCiAgICAgLy8gaW5kZXgsIHNraXBzIHRoZSBleHBlbnNpdmUg
cGVyLWRyYXctY2FsbCBpdGVyYXRpb24gaW4KICAgICAvLyB2YWxpZGF0ZUluZGV4QXJyYXlQcmVj
aXNlLgotICAgIAorCiAgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBlbGVtZW50QXJyYXlCdWZmZXIg
PSBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpOwotICAg
IAorCiAgICAgaWYgKCFlbGVtZW50QXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAKKwogICAgIEdDR0xzaXplaXB0ciBudW1FbGVtZW50cyA9IGVsZW1lbnRBcnJheUJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpOwogICAgIC8vIFRoZSBjYXNlIGNvdW50PT0wIGlzIGFscmVhZHkgZGVh
bHQgd2l0aCBpbiBkcmF3RWxlbWVudHMgYmVmb3JlIHZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZh
dGl2ZS4KICAgICBpZiAoIW51bUVsZW1lbnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
YXV0byBidWZmZXIgPSBlbGVtZW50QXJyYXlCdWZmZXItPmVsZW1lbnRBcnJheUJ1ZmZlcigpOwog
ICAgIEFTU0VSVChidWZmZXIpOwotICAgIAorCiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1heElu
ZGV4ID0gZWxlbWVudEFycmF5QnVmZmVyLT5nZXRDYWNoZWRNYXhJbmRleCh0eXBlKTsKICAgICBp
ZiAoIW1heEluZGV4KSB7CiAgICAgICAgIC8vIENvbXB1dGUgdGhlIG1heGltdW0gaW5kZXggaW4g
dGhlIGVudGlyZSBidWZmZXIgZm9yIHRoZSBnaXZlbiB0eXBlIG9mIGluZGV4LgpAQCAtMjM1OSw3
ICsyMzY3LDcgQEAgYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUluZGV4QXJy
YXlDb25zZXJ2YXRpdmUoR0NHTGVudW0gdHlwZSwgdW5zaWcKICAgICAgICAgaWYgKG1heEluZGV4
KQogICAgICAgICAgICAgZWxlbWVudEFycmF5QnVmZmVyLT5zZXRDYWNoZWRNYXhJbmRleCh0eXBl
LCBtYXhJbmRleC52YWx1ZSgpKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIW1heEluZGV4KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDc1ODUwZGQxOGJlNGVlMDcyNDBj
NjlhODI1ZjdhNWNhNjRmYzNjY2EuLmI1ZGZjYjk2YzZmN2U3NGRjNjQ0NGE3MjkyMjA2MzFkMzVk
OGM3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIk9FU1Rl
eHR1cmVIYWxmRmxvYXRMaW5lYXIuaCIKICNpbmNsdWRlICJPRVNWZXJ0ZXhBcnJheU9iamVjdC5o
IgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCIKICNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oIgogI2luY2x1ZGUg
IldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCIKICNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRU
ZXh0dXJlRVRDLmgiCkBAIC0xOTEsMTAgKzE5MiwxMCBAQCBPcHRpb25hbDxWZWN0b3I8U3RyaW5n
Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKLSAg
ICAKKwogICAgIGlmIChtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCiAgICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgCisKICAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX0VYVF9ibGVuZF9taW5tYXgiX3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJF
WFRfYmxlbmRfbWlubWF4Il9zKTsKICAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
c3VwcG9ydHMoIkdMX0VYVF9zUkdCIl9zKSkKQEAgLTI0OSwxMiArMjUwLDEyIEBAIFdlYkdMQW55
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KEdDR0xlbnVtIHRhcmdlCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVGcmFtZWJ1ZmZlckZ1bmNQYXJhbWV0ZXJzKCJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXIiLCB0YXJnZXQsIGF0dGFjaG1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAKKwogICAgIGlmICghbV9mcmFtZWJ1ZmZlckJpbmRpbmcgfHwgIW1fZnJhbWVidWZm
ZXJCaW5kaW5nLT5vYmplY3QoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXIiLCAibm8gZnJhbWVidWZmZXIgYm91bmQiKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQotICAgIAorCiAgICAgYXV0byBvYmplY3QgPSBtYWtlUmVmUHRyKG1fZnJhbWVi
dWZmZXJCaW5kaW5nLT5nZXRBdHRhY2htZW50T2JqZWN0KGF0dGFjaG1lbnQpKTsKICAgICBpZiAo
IW9iamVjdCkgewogICAgICAgICBpZiAocG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpCkBAIC0yNjQsNyArMjY1LDcgQEAgV2ViR0xB
bnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXIoR0NHTGVudW0gdGFyZ2UKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlciIs
ICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICAKKwogICAgIGlmIChvYmplY3QtPmlzVGV4dHVyZSgpKSB7CiAgICAgICAgIHN3aXRj
aCAocG5hbWUpIHsKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9PQkpFQ1RfVFlQRToKQEAgLTMzMSw3ICszMzIsNyBAQCBib29sIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVGcmFtZWJ1ZmZlckZ1bmNQYXJhbWV0ZXJzKGNvbnN0IGNo
YXIqIGZ1bmN0aQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQotICAgIAorCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKQEAgLTM5Niw3ICsz
OTcsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aGludChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIG1vZGUpCiAgICAgfQogICAgIG1fY29udGV4dC0+aGludCh0YXJnZXQsIG1vZGUp
OwogfQotICAgIAorCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIoR0NHTGJpdGZp
ZWxkIG1hc2spCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKQEAgLTU0Niw3
ICs1NDcsOSBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcihH
Q0dMZW51bSBwbmFtZSkKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTQ0lTU09SX1RFU1Q6
CiAgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpTSEFESU5HX0xBTkdVQUdFX1ZFUlNJT046Ci0gICAgICAgIHJldHVy
biAiV2ViR0wgR0xTTCBFUyAxLjAgKCIgKyBtX2NvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0Nv
bnRleHRHTDo6U0hBRElOR19MQU5HVUFHRV9WRVJTSU9OKSArICIpIjsKKyAgICAgICAgaWYgKCFS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLm1hc2tXZWJHTFN0cmluZ3NF
bmFibGVkKCkpCisgICAgICAgICAgICByZXR1cm4gIldlYkdMIEdMU0wgRVMgMS4wICgiICsgbV9j
b250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlNIQURJTkdfTEFOR1VBR0VfVkVS
U0lPTikgKyAiKSI7CisgICAgICAgIHJldHVybiAiV2ViR0wgR0xTTCBFUyAxLjAgKDEuMCkiX3N0
cjsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0JBQ0tfRkFJTDoKICAgICAg
ICAgcmV0dXJuIGdldFVuc2lnbmVkSW50UGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMOjpTVEVOQ0lMX0JBQ0tfRlVOQzoKQEAgLTYxMCwxNyArNjEzLDIyIEBAIFdl
YkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1l
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNlIFdlYkdMRGVidWdSZW5kZXJlcklu
Zm86OlVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMOgogICAgICAgICBpZiAobV93ZWJnbERlYnVnUmVu
ZGVyZXJJbmZvKSB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgICAgIHJldHVy
biAiQXBwbGUgR1BVIl9zdHI7Ci0jZWxzZQotICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+
Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUik7CisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkubWFza1dlYkdMU3RyaW5nc0VuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKTsK
ICNlbmRpZgorICAgICAgICAgICAgcmV0dXJuICJBcHBsZSBHUFUiX3N0cjsKICAgICAgICAgfQog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVN
LCAiZ2V0UGFyYW1ldGVyIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUsIFdFQkdMX2RlYnVnX3Jl
bmRlcmVyX2luZm8gbm90IGVuYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
Y2FzZSBXZWJHTERlYnVnUmVuZGVyZXJJbmZvOjpVTk1BU0tFRF9WRU5ET1JfV0VCR0w6Ci0gICAg
ICAgIGlmIChtX3dlYmdsRGVidWdSZW5kZXJlckluZm8pCi0gICAgICAgICAgICByZXR1cm4gbV9j
b250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlZFTkRPUik7CisgICAgICAgIGlm
IChtX3dlYmdsRGVidWdSZW5kZXJlckluZm8pIHsKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICAgICAgICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5tYXNrV2ViR0xTdHJpbmdzRW5hYmxlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBtX2Nv
bnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6VkVORE9SKTsKKyNlbmRpZgorICAg
ICAgICAgICAgcmV0dXJuICJBcHBsZSBJbmMuIl9zdHI7CisgICAgICAgIH0KICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFBhcmFt
ZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZv
IG5vdCBlbmFibGVkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNhc2UgRXh0ZW5z
aW9uc0dMOjpWRVJURVhfQVJSQVlfQklORElOR19PRVM6IC8vIE9FU192ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0CkBAIC02ODIsNyArNjkwLDcgQEAgR0NHTGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dE1heENvbG9yQXR0YWNobWVudHMoKQogICAgICAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEV4
dGVuc2lvbnNHTDo6TUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCwgJm1fbWF4Q29sb3JBdHRhY2ht
ZW50cyk7CiAgICAgcmV0dXJuIG1fbWF4Q29sb3JBdHRhY2htZW50czsKIH0KLSAgICAKKwogYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZShH
Q0dMZW51bSB0eXBlLCB1bnNpZ25lZCYgbnVtRWxlbWVudHNSZXF1aXJlZCkKIHsKICAgICAvLyBQ
ZXJmb3JtcyBjb25zZXJ2YXRpdmUgdmFsaWRhdGlvbiBieSBjYWNoaW5nIGEgbWF4aW11bSBpbmRl
eCBvZgpAQCAtNjkwLDE5ICs2OTgsMTkgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZh
bGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZShHQ0dMZW51bSB0eXBlLCB1bnNpZ24KICAgICAv
LyBhcnJheSBidWZmZXJzIGhhdmUgZW5vdWdoIGVsZW1lbnRzIHRvIHNhdGlzZnkgdGhhdCBtYXhp
bXVtCiAgICAgLy8gaW5kZXgsIHNraXBzIHRoZSBleHBlbnNpdmUgcGVyLWRyYXctY2FsbCBpdGVy
YXRpb24gaW4KICAgICAvLyB2YWxpZGF0ZUluZGV4QXJyYXlQcmVjaXNlLgotICAgIAorCiAgICAg
UmVmUHRyPFdlYkdMQnVmZmVyPiBlbGVtZW50QXJyYXlCdWZmZXIgPSBtX2JvdW5kVmVydGV4QXJy
YXlPYmplY3QtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpOwotICAgIAorCiAgICAgaWYgKCFlbGVt
ZW50QXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIEdDR0xz
aXplaXB0ciBudW1FbGVtZW50cyA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwog
ICAgIC8vIFRoZSBjYXNlIGNvdW50PT0wIGlzIGFscmVhZHkgZGVhbHQgd2l0aCBpbiBkcmF3RWxl
bWVudHMgYmVmb3JlIHZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZS4KICAgICBpZiAoIW51
bUVsZW1lbnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byBidWZmZXIgPSBlbGVt
ZW50QXJyYXlCdWZmZXItPmVsZW1lbnRBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVChidWZmZXIp
OwotICAgIAorCiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1heEluZGV4ID0gZWxlbWVudEFycmF5
QnVmZmVyLT5nZXRDYWNoZWRNYXhJbmRleCh0eXBlKTsKICAgICBpZiAoIW1heEluZGV4KSB7CiAg
ICAgICAgIC8vIENvbXB1dGUgdGhlIG1heGltdW0gaW5kZXggaW4gdGhlIGVudGlyZSBidWZmZXIg
Zm9yIHRoZSBnaXZlbiB0eXBlIG9mIGluZGV4LgpAQCAtNzM1LDcgKzc0Myw3IEBAIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0NHTGVu
dW0gdHlwZSwgdW5zaWduCiAgICAgICAgIGlmIChtYXhJbmRleCkKICAgICAgICAgICAgIGVsZW1l
bnRBcnJheUJ1ZmZlci0+c2V0Q2FjaGVkTWF4SW5kZXgodHlwZSwgbWF4SW5kZXgudmFsdWUoKSk7
CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFtYXhJbmRleCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4
IGQ1ZWY5M2E3YjUzZDMzMjQ2NDkyZGFmNjQ3MzQ5NjdiOGMyZmZmZTYuLjdiMzA0NmVlNjJmNjI1
NGIwN2E2ZTc1ZjQxMTBhMDc1MTZkYjY3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0TWVudUl0ZW1FbGVtZW50RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzTWVudUl0
ZW1FbGVtZW50RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogICAgIGJvb2wgbWVudUl0ZW1FbGVtZW50
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZW51SXRlbUVsZW1lbnRFbmFibGVkOyB9Ci0g
ICAgCisKICAgICB2b2lkIHNldERpcmVjdG9yeVVwbG9hZEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgbV9pc0RpcmVjdG9yeVVwbG9hZEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIGRp
cmVjdG9yeVVwbG9hZEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGlyZWN0b3J5VXBsb2Fk
RW5hYmxlZDsgfQogCkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q3Vz
dG9tUGFzdGVib2FyZERhdGFFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNDdXN0b21QYXN0
ZWJvYXJkRGF0YUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIGN1c3RvbVBhc3RlYm9h
cmREYXRhRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDdXN0b21QYXN0ZWJvYXJkRGF0YUVu
YWJsZWQ7IH0KLSAgICAKKwogICAgIHZvaWQgc2V0V2ViU2hhcmVFbmFibGVkKGJvb2wgaXNFbmFi
bGVkKSB7IG1faXNXZWJTaGFyZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIHdlYlNo
YXJlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNXZWJTaGFyZUVuYWJsZWQ7IH0KIApAQCAt
MTc2LDE0ICsxNzYsMTQgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRQb2ludGVyRXZlbnRzRW5h
YmxlZChib29sIGlzRW5hYmxlZCkgeyBtX3BvaW50ZXJFdmVudHNFbmFibGVkID0gaXNFbmFibGVk
OyB9CiAgICAgYm9vbCBwb2ludGVyRXZlbnRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9p
bnRlckV2ZW50c0VuYWJsZWQ7IH0KLSAgICAKKwogICAgIHZvaWQgc2V0U3ludGhldGljRWRpdGlu
Z0NvbW1hbmRzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX3N5bnRoZXRpY0VkaXRpbmdDb21t
YW5kc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIHN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3N5bnRoZXRpY0VkaXRpbmdDb21tYW5kc0Vu
YWJsZWQ7IH0KIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogICAgIHZv
aWQgc2V0TGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1f
bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRFbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAgYm9vbCBs
YXlvdXRGb3JtYXR0aW5nQ29udGV4dEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2xheW91dEZv
cm1hdHRpbmdDb250ZXh0RW5hYmxlZDsgfQotICAgIAorCiAgICAgdm9pZCBzZXRMYXlvdXRGb3Jt
YXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2xheW91
dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAg
Ym9vbCBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQ7IH0KICNl
bmRpZgpAQCAtMjA2LDcgKzIwNiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0S2V5Z2VuRWxl
bWVudEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9rZXlnZW5FbGVtZW50RW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQogICAgIGJvb2wga2V5Z2VuRWxlbWVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2tleWdlbkVsZW1lbnRFbmFibGVkOyB9Ci0gICAgCisKICAgICB2b2lkIHNldEhpZ2hsaWdo
dEFQSUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9oaWdobGlnaHRBUElFbmFibGVkID0gaXNF
bmFibGVkOyB9CiAgICAgYm9vbCBoaWdobGlnaHRBUElFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9oaWdobGlnaHRBUElFbmFibGVkOyB9CiAKQEAgLTI5OCwxOSArMjk4LDI0IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFdlYkdMMkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1dlYkdMMkVu
YWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIHdlYkdMMkVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzV2ViR0wyRW5hYmxlZDsgfQogI2VuZGlmCi0gICAgCisKICNpZiBFTkFCTEUoV0VC
R1BVKQogICAgIHZvaWQgc2V0V2ViR1BVRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzV2Vi
R1BVRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogICAgIGJvb2wgd2ViR1BVRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNXZWJHUFVFbmFibGVkOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJH
TCkgfHwgRU5BQkxFKFdFQkdMMikKKyAgICB2b2lkIHNldE1hc2tXZWJHTFN0cmluZ3NFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IG1faXNNYXNrV2ViR0xTdHJpbmdzRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQorICAgIGJvb2wgbWFza1dlYkdMU3RyaW5nc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzTWFza1dlYkdMU3RyaW5nc0VuYWJsZWQ7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNUUkVB
TVNfQVBJKQogICAgIHZvaWQgc2V0UmVhZGFibGVCeXRlU3RyZWFtQVBJRW5hYmxlZChib29sIGlz
RW5hYmxlZCkgeyBtX2lzUmVhZGFibGVCeXRlU3RyZWFtQVBJRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQogICAgIGJvb2wgcmVhZGFibGVCeXRlU3RyZWFtQVBJRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkOyB9CiAgICAgdm9pZCBzZXRXcml0YWJs
ZVN0cmVhbUFQSUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1dyaXRhYmxlU3RyZWFtQVBJ
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogICAgIGJvb2wgd3JpdGFibGVTdHJlYW1BUElFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9pc1dyaXRhYmxlU3RyZWFtQVBJRW5hYmxlZDsgfQogI2VuZGlm
Ci0gICAgCisKICNpZiBFTkFCTEUoRE9XTkxPQURfQVRUUklCVVRFKQogICAgIHZvaWQgc2V0RG93
bmxvYWRBdHRyaWJ1dGVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNEb3dubG9hZEF0dHJp
YnV0ZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIGRvd25sb2FkQXR0cmlidXRlRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEb3dubG9hZEF0dHJpYnV0ZUVuYWJsZWQ7IH0KQEAg
LTM1OCw3ICszNjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB0b3VjaEV2ZW50c0VuYWJsZWQoKSBj
b25zdDsKICAgICB2b2lkIHNldFRvdWNoRXZlbnRzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBt
X3RvdWNoRXZlbnRzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCi0gICAgCisKICAgICBi
b29sIHJlZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVm
ZXJyZXJQb2xpY3lBdHRyaWJ1dGVFbmFibGVkOyB9CiAgICAgdm9pZCBzZXRSZWZlcnJlclBvbGlj
eUF0dHJpYnV0ZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9yZWZlcnJlclBvbGljeUF0dHJp
YnV0ZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KIApAQCAtNTM0LDExICs1MzksMTUgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoV0VCR0wyKQogICAgIGJvb2wgbV9pc1dlYkdMMkVuYWJsZWQgeyBmYWxz
ZSB9OwogI2VuZGlmCi0gICAgCisKICNpZiBFTkFCTEUoV0VCR1BVKQogICAgIGJvb2wgbV9pc1dl
YkdQVUVuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR0wpIHx8IEVO
QUJMRShXRUJHTDIpCisgICAgYm9vbCBtX2lzTWFza1dlYkdMU3RyaW5nc0VuYWJsZWQgeyBmYWxz
ZSB9OworI2VuZGlmCisKICNpZiBFTkFCTEUoRE9XTkxPQURfQVRUUklCVVRFKQogICAgIGJvb2wg
bV9pc0Rvd25sb2FkQXR0cmlidXRlRW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGI2NGExZjdkNTJmNGMwOWZmY2Yy
MWEzMzkyZWYyZDE0NjgzOTUwOTUuLjFjMGUxMzM2NDczNmM5MGI1YzkzZjk1MGQwYmJhZDk5MWQw
N2QzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlh
bWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtNzcy
LDcgKzc3Miw3IEBAIEdhbWVwYWRzRW5hYmxlZDoKICAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9u
OiAiV2ViIEdhbWVwYWQgQVBJIHN1cHBvcnQiCiAgIHdlYmNvcmVCaW5kaW5nOiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzCiAgIGNvbmRpdGlvbjogRU5BQkxFKEdBTUVQQUQpCi0gIAorCiBIaWdobGln
aHRBUElFbmFibGVkOgogICAgIHR5cGU6IGJvb2wKICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlCkBA
IC0xMzg4LDYgKzEzODgsMTUgQEAgV2ViR1BVRW5hYmxlZDoKICAgd2ViY29yZUJpbmRpbmc6IFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMKICAgY29uZGl0aW9uOiBFTkFCTEUoV0VCR1BVKQogCitNYXNr
V2ViR0xTdHJpbmdzRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBkZWZhdWx0VmFsdWU6IERFRkFV
TFRfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTX0VOQUJMRUQKKyAgaHVtYW5SZWFkYWJsZU5hbWU6ICJN
YXNrIFdlYkdMIFN0cmluZ3MiCisgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIk1hc2sgV2Vi
R0wgVmVuZG9yLCBSZW5kZXJlciwgU2hhZGVyIExhbmd1YWdlIFN0cmluZ3MiCisgIGNhdGVnb3J5
OiBleHBlcmltZW50YWwKKyAgd2ViY29yZUJpbmRpbmc6IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMK
KyAgY29uZGl0aW9uOiBFTkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHTDIpCisKIEFjY2Vzc2li
aWxpdHlPYmplY3RNb2RlbEVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOiBm
YWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390707</attachid>
            <date>2020-02-13 17:18:10 -0800</date>
            <delta_ts>2020-02-13 18:48:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207608-20200213171808.patch</filename>
            <type>text/plain</type>
            <size>26417</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U5NWY3MGVjZjY0YTll
ODViMmIxYTVjYzQ4ZTM5NzMxMDAwM2FlNi4uOGEyYjA0MzFkZGU1NWEzNjJkZDEzNDYzNzRjNTE3
ZTA3MzdhMGVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAyLTEzICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBNYXNrIFdlYkdMIHN0cmluZ3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYwOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgZXhw
ZXJpbWVudGFsIGZlYXR1cmUgdG8gbWFzayBXZWJHTCB2ZW5kb3IsIHJlbmRlcmVyLCBhbmQgc2hh
ZGluZyBsYW5ndWFnZSBzdHJpbmdzLgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHA6IFdoaXRlc3BhY2UgY2xlYW51cCBhbHNvLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKTogQ2hlY2sgYWdhaW5z
dCB0aGUgcnVudGltZSBmZWF0dXJlIHRvIHJldHVybiB0aGUKKyAgICAgICAgb2xkIHN0cmluZy4K
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOiBEaXR0by4K
KyAgICAgICAgKiBwYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldE1hc2tXZWJHTFN0cmluZ3NFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1hc2tXZWJHTFN0cmlu
Z3NFbmFibGVkIGNvbnN0KToKKwogMjAyMC0wMi0xMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjM2MDI1KTogQ29ycmVjdCBmbGFr
eSBXZWJHTDIgdGVzdCBmYWlsdXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiNTQwZGY0OTI0ODY2MjhkOTMwMWM0
Njc5YmE0OGZkMmU5ZjE3MTJlLi42NzA5MTFhZmJiZDIyYTUzMTQwNDJhYzlhMTY3M2QzY2UxNjE5
NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAyLTEzICBKb24gTGVlICA8am9u
bGVlQGFwcGxlLmNvbT4KKworICAgICAgICBNYXNrIFdlYkdMIHN0cmluZ3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYwOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHBsYXRmb3JtL21hYy93
ZWJnbC9maW5nZXJwcmludGluZy1zdHJpbmdzLmh0bWwKKworICAgICAgICAqIFNoYXJlZC9XZWJQ
cmVmZXJlbmNlcy55YW1sOiBBZGQgbmV3IGV4cGVyaW1lbnRhbCBmZWF0dXJlLgorCiAyMDIwLTAy
LTExICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YlBhZ2U6OmdldEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24gc2hvdWxkIGJlIHJvYnVzdCB3aGVu
IHRoZSBmb2N1c2VkIGVsZW1lbnQgY2hhbmdlcyBkdXJpbmcgbGF5b3V0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4
IDI5YTI5MmU4MTRjMDBjNTMxMzgzNzk5ODJiMjUxZGUxZGM2NWExNmMuLjE3ZTY1ODlhNGVmYjVh
YjI3Zjg4YmMzZWIzNmQxNmRiOGVmN2RkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNiArNDMsNyBA
QAogI2luY2x1ZGUgIk9FU1RleHR1cmVIYWxmRmxvYXQuaCIKICNpbmNsdWRlICJPRVNUZXh0dXJl
SGFsZkZsb2F0TGluZWFyLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCisjaW5jbHVkZSAiUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYkdMQWN0aXZlSW5mby5oIgogI2lu
Y2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmgiCiAjaW5jbHVkZSAiV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFUQy5oIgpAQCAtOTQwLDcgKzk0MSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQg
ZGl2aXNvCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIAorCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmli
RGl2aXNvcihpbmRleCwgZGl2aXNvcik7CiB9CiAKQEAgLTE1MTYsNyArMTUxNyw3IEBAIFJlZlB0
cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVW
ZXJ0ZXhBcnJheSgpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgCisKICAgICBhdXRvIG9iamVjdCA9IFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3Q6OmNyZWF0ZSgqdGhpcywgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6VHlwZTo6VXNlcik7CiAg
ICAgYWRkQ29udGV4dE9iamVjdChvYmplY3QuZ2V0KCkpOwogICAgIHJldHVybiBXVEZNb3ZlKG9i
amVjdCk7CkBAIC0xNTI2LDE3ICsxNTI3LDE3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6ZGVsZXRlVmVydGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJyYXlPYmplCiB7
CiAgICAgaWYgKCFhcnJheU9iamVjdCB8fCBpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICAKKwogICAgIGlmIChhcnJheU9iamVjdC0+aXNEZWxldGVkKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIGlmICghYXJyYXlPYmplY3QtPmlzRGVmYXVsdE9iamVjdCgpICYm
IGFycmF5T2JqZWN0ID09IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdCkKICNpZiBVU0UoT1BFTkdM
X0VTKQogICAgICAgICBzZXRCb3VuZFZlcnRleEFycmF5T2JqZWN0KG51bGxwdHIpOwogI2Vsc2UK
ICAgICAgICAgYmluZFZlcnRleEFycmF5KG51bGxwdHIpOyAvLyBUaGUgZGVmYXVsdCBWQU8gd2Fz
IHJlbW92ZWQgaW4gT3BlbkdMIDMuMyBidXQgbm90IGZyb20gV2ViR0wgMjsgYmluZCB0aGUgZGVm
YXVsdCBmb3IgV2ViR0wgdG8gdXNlLgogI2VuZGlmCi0gICAgCisKICAgICBhcnJheU9iamVjdC0+
ZGVsZXRlT2JqZWN0KGdyYXBoaWNzQ29udGV4dEdMKCkpOwogfQogCkBAIC0xNTQ0LDEwICsxNTQ1
LDEwIEBAIEdDR0xib29sZWFuIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmlzVmVydGV4QXJyYXko
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJyYXlPCiB7CiAgICAgaWYgKCFhcnJheU9iamVjdCB8
fCBpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIGlm
ICghYXJyYXlPYmplY3QtPmhhc0V2ZXJCZWVuQm91bmQoKSB8fCAhYXJyYXlPYmplY3QtPnZhbGlk
YXRlKDAsICp0aGlzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgcmV0dXJu
IG1fY29udGV4dC0+aXNWZXJ0ZXhBcnJheShhcnJheU9iamVjdC0+b2JqZWN0KCkpOwogfQogCkBA
IC0xNTU1LDE0ICsxNTU2LDE0IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFZl
cnRleEFycmF5KFdlYkdMVmVydGV4QXJyYXlPYmplY3QqIGFycmF5T2JqZWN0CiB7CiAgICAgaWYg
KGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKGFycmF5
T2JqZWN0ICYmIChhcnJheU9iamVjdC0+aXNEZWxldGVkKCkgfHwgIWFycmF5T2JqZWN0LT52YWxp
ZGF0ZSgwLCAqdGhpcykgfHwgIW1fY29udGV4dE9iamVjdHMuY29udGFpbnMoYXJyYXlPYmplY3Qp
KSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYg
KGFycmF5T2JqZWN0ICYmICFhcnJheU9iamVjdC0+aXNEZWZhdWx0T2JqZWN0KCkgJiYgYXJyYXlP
YmplY3QtPm9iamVjdCgpKSB7CiAgICAgICAgIG1fY29udGV4dC0+YmluZFZlcnRleEFycmF5KGFy
cmF5T2JqZWN0LT5vYmplY3QoKSk7Ci0gICAgICAgIAorCiAgICAgICAgIGFycmF5T2JqZWN0LT5z
ZXRIYXNFdmVyQmVlbkJvdW5kKCk7CiAgICAgICAgIHNldEJvdW5kVmVydGV4QXJyYXlPYmplY3Qo
YXJyYXlPYmplY3QpOwogICAgIH0gZWxzZSB7CkBAIC0xNjEwLDcgKzE2MTEsNyBAQCBPcHRpb25h
bDxWZWN0b3I8U3RyaW5nPj4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0
ZW5zaW9ucygpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8U3Ry
aW5nPiByZXN1bHQ7Ci0gICAgCisKICAgICBpZiAobV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9u
KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCkBAIC0xNzA0LDcgKzE3MDUsNyBAQCBXZWJHTEFu
eSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXIoR0NHTGVudW0gdGFyZwogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogICAgIH0KLSAg
ICAKKwogICAgIGlmIChvYmplY3QtPmlzVGV4dHVyZSgpKSB7CiAgICAgICAgIHN3aXRjaCAocG5h
bWUpIHsKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNI
TUVOVF9PQkpFQ1RfVFlQRToKQEAgLTIxMTQsNyArMjExNSw5IEBAIFdlYkdMQW55IFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpTQ0lTU09SX1RFU1Q6CiAgICAgICAgIHJldHVybiBnZXRCb29sZWFu
UGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFESU5HX0xB
TkdVQUdFX1ZFUlNJT046Ci0gICAgICAgIHJldHVybiAiV2ViR0wgR0xTTCBFUyAxLjAgKCIgKyBt
X2NvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6U0hBRElOR19MQU5HVUFHRV9W
RVJTSU9OKSArICIpIjsKKyAgICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLm1hc2tXZWJHTFN0cmluZ3NFbmFibGVkKCkpCisgICAgICAgICAgICByZXR1
cm4gIldlYkdMIEdMU0wgRVMgMS4wICgiICsgbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3ND
b250ZXh0R0w6OlNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTikgKyAiKSI7CisgICAgICAgIHJldHVy
biAiV2ViR0wgR0xTTCBFUyAxLjAgKDEuMCkiX3N0cjsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpTVEVOQ0lMX0JBQ0tfRkFJTDoKICAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkSW50UGFy
YW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0JBQ0tf
RlVOQzoKQEAgLTIxNzMsMTcgKzIxNzYsMjIgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogICAgICAgICByZXR1cm4gZ2V0V2Vi
R0xJbnRBcnJheVBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBXZWJHTERlYnVnUmVuZGVyZXJJ
bmZvOjpVTk1BU0tFRF9SRU5ERVJFUl9XRUJHTDoKICAgICAgICAgaWYgKG1fd2ViZ2xEZWJ1Z1Jl
bmRlcmVySW5mbykgewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICAgICByZXR1
cm4gIkFwcGxlIEdQVSJfc3RyOwotI2Vsc2UKLSAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQt
PmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSRVIpOworI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgICAgICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLm1hc2tXZWJHTFN0cmluZ3NFbmFibGVkKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUik7
CiAjZW5kaWYKKyAgICAgICAgICAgIHJldHVybiAiQXBwbGUgR1BVIl9zdHI7CiAgICAgICAgIH0K
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5V
TSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9kZWJ1Z19y
ZW5kZXJlcl9pbmZvIG5vdCBlbmFibGVkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IGNhc2UgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbzo6VU5NQVNLRURfVkVORE9SX1dFQkdMOgotICAg
ICAgICBpZiAobV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvKQotICAgICAgICAgICAgcmV0dXJuIG1f
Y29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpWRU5ET1IpOworICAgICAgICBp
ZiAobV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvKSB7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkubWFza1dlYkdMU3RyaW5nc0VuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9j
b250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlZFTkRPUik7CisjZW5kaWYKKyAg
ICAgICAgICAgIHJldHVybiAiQXBwbGUgSW5jLiJfc3RyOworICAgICAgICB9CiAgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQYXJh
bWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSwgV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5m
byBub3QgZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNlIEV4dGVu
c2lvbnNHTDo6TUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMKQEAgLTIyNDEsOCArMjI0OSw4IEBAIFdlYkdMQW55IFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKICAgICAgICAgcmV0
dXJuIGdldEludFBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
TUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NLUzoKICAgICAgICAgcmV0dXJuIGdldEludFBhcmFtZXRl
cihwbmFtZSk7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6TUFYX1ZFUlRFWF9VTklGT1JN
X0NPTVBPTkVOVFM6IAotICAgICAgICByZXR1cm4gZ2V0SW50UGFyYW1ldGVyKHBuYW1lKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6TUFY
X1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFM6CisgICAgICAgIHJldHVybiBnZXRJbnRQYXJhbWV0
ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1JTl9QUk9HUkFNX1RFWEVM
X09GRlNFVDoKICAgICAgICAgcmV0dXJuIGdldEludFBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6UEFDS19ST1dfTEVOR1RIOgpAQCAtMjMwNiw3ICsyMzE0LDcg
QEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDR0xlbnVt
IHBuYW1lKQogICAgICAgICByZXR1cm4gbV9ib3VuZFNhbXBsZXJzW21fYWN0aXZlVGV4dHVyZVVu
aXRdOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPUFlfUkVBRF9CVUZGRVI6CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Q09QWV9XUklURV9CVUZGRVI6Ci0gICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6UElYRUxfUEFDS19CVUZGRVJfQklORElORzogICAKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpQSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOgogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OlBJWEVMX1VOUEFDS19CVUZGRVJfQklORElORzoKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpSRUFEX0JVRkZFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpURVhUVVJFX0JJTkRJTkdfMkRfQVJSQVk6CkBAIC0yMzI3LDE5ICsyMzM1LDE5IEBAIGJvb2wg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZlKEdD
R0xlbnVtIHR5cGUsIHVuc2lnCiAgICAgLy8gYXJyYXkgYnVmZmVycyBoYXZlIGVub3VnaCBlbGVt
ZW50cyB0byBzYXRpc2Z5IHRoYXQgbWF4aW11bQogICAgIC8vIGluZGV4LCBza2lwcyB0aGUgZXhw
ZW5zaXZlIHBlci1kcmF3LWNhbGwgaXRlcmF0aW9uIGluCiAgICAgLy8gdmFsaWRhdGVJbmRleEFy
cmF5UHJlY2lzZS4KLSAgICAKKwogICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gZWxlbWVudEFycmF5
QnVmZmVyID0gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRFbGVtZW50QXJyYXlCdWZmZXIo
KTsKLSAgICAKKwogICAgIGlmICghZWxlbWVudEFycmF5QnVmZmVyKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgCisKICAgICBHQ0dMc2l6ZWlwdHIgbnVtRWxlbWVudHMgPSBlbGVtZW50QXJy
YXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICAvLyBUaGUgY2FzZSBjb3VudD09MCBpcyBhbHJl
YWR5IGRlYWx0IHdpdGggaW4gZHJhd0VsZW1lbnRzIGJlZm9yZSB2YWxpZGF0ZUluZGV4QXJyYXlD
b25zZXJ2YXRpdmUuCiAgICAgaWYgKCFudW1FbGVtZW50cykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGF1dG8gYnVmZmVyID0gZWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlCdWZm
ZXIoKTsKICAgICBBU1NFUlQoYnVmZmVyKTsKLSAgICAKKwogICAgIE9wdGlvbmFsPHVuc2lnbmVk
PiBtYXhJbmRleCA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+Z2V0Q2FjaGVkTWF4SW5kZXgodHlwZSk7
CiAgICAgaWYgKCFtYXhJbmRleCkgewogICAgICAgICAvLyBDb21wdXRlIHRoZSBtYXhpbXVtIGlu
ZGV4IGluIHRoZSBlbnRpcmUgYnVmZmVyIGZvciB0aGUgZ2l2ZW4gdHlwZSBvZiBpbmRleC4KQEAg
LTIzNTksNyArMjM2Nyw3IEBAIGJvb2wgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJ
bmRleEFycmF5Q29uc2VydmF0aXZlKEdDR0xlbnVtIHR5cGUsIHVuc2lnCiAgICAgICAgIGlmICht
YXhJbmRleCkKICAgICAgICAgICAgIGVsZW1lbnRBcnJheUJ1ZmZlci0+c2V0Q2FjaGVkTWF4SW5k
ZXgodHlwZSwgbWF4SW5kZXgudmFsdWUoKSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFtYXhJ
bmRleCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA3NTg1MGRkMThiZTRl
ZTA3MjQwYzY5YTgyNWY3YTVjYTY0ZmMzY2NhLi5iNWRmY2I5NmM2ZjdlNzRkYzY0NDRhNzI5MjIw
NjMxZDM1ZDhjNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRl
ICJPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmgiCiAjaW5jbHVkZSAiT0VTVmVydGV4QXJyYXlP
YmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaCIKICNp
bmNsdWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmgiCiAjaW5jbHVkZSAiV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQy5oIgpAQCAtMTkxLDEwICsxOTIsMTAgQEAgT3B0aW9uYWw8VmVjdG9y
PFN0cmluZz4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8U3RyaW5nPiByZXN1
bHQ7Ci0gICAgCisKICAgICBpZiAobV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQogICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgIAorCiAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLnN1cHBvcnRzKCJHTF9FWFRfYmxlbmRfbWlubWF4Il9zKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiRVhUX2JsZW5kX21pbm1heCJfcyk7CiAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfc1JHQiJfcykpCkBAIC0yNDksMTIgKzI1MCwxMiBAQCBX
ZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcihHQ0dMZW51bSB0YXJnZQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkgfHwgIXZhbGlkYXRlRnJhbWVidWZmZXJGdW5jUGFyYW1ldGVycygiZ2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyIiwgdGFyZ2V0LCBhdHRhY2htZW50KSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgCisKICAgICBpZiAoIW1fZnJhbWVidWZmZXJCaW5kaW5nIHx8ICFtX2Zy
YW1lYnVmZmVyQmluZGluZy0+b2JqZWN0KCkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyIiwgIm5vIGZyYW1lYnVmZmVyIGJvdW5kIik7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gb2JqZWN0ID0gbWFrZVJlZlB0ciht
X2ZyYW1lYnVmZmVyQmluZGluZy0+Z2V0QXR0YWNobWVudE9iamVjdChhdHRhY2htZW50KSk7CiAg
ICAgaWYgKCFvYmplY3QpIHsKICAgICAgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29udGV4dEdM
OjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKQpAQCAtMjY0LDcgKzI2NSw3IEBA
IFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdlCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAob2JqZWN0LT5pc1RleHR1cmUoKSkgewogICAgICAg
ICBzd2l0Y2ggKHBuYW1lKSB7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEU6CkBAIC0zMzEsNyArMzMyLDcgQEAgYm9vbCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlRnJhbWVidWZmZXJGdW5jUGFyYW1ldGVycyhj
b25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KLSAgICAK
Kwogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCkBAIC0z
OTYsNyArMzk3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmhpbnQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBtb2RlKQogICAgIH0KICAgICBtX2NvbnRleHQtPmhpbnQodGFyZ2V0
LCBtb2RlKTsKIH0KLSAgICAKKwogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyKEdD
R0xiaXRmaWVsZCBtYXNrKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCkBA
IC01NDYsNyArNTQ3LDkgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJh
bWV0ZXIoR0NHTGVudW0gcG5hbWUpCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U0NJU1NP
Ul9URVNUOgogICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U0hBRElOR19MQU5HVUFHRV9WRVJTSU9OOgotICAgICAg
ICByZXR1cm4gIldlYkdMIEdMU0wgRVMgMS4wICgiICsgbV9jb250ZXh0LT5nZXRTdHJpbmcoR3Jh
cGhpY3NDb250ZXh0R0w6OlNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTikgKyAiKSI7CisgICAgICAg
IGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5tYXNrV2ViR0xT
dHJpbmdzRW5hYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuICJXZWJHTCBHTFNMIEVTIDEuMCAo
IiArIG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpTSEFESU5HX0xBTkdV
QUdFX1ZFUlNJT04pICsgIikiOworICAgICAgICByZXR1cm4gIldlYkdMIEdMU0wgRVMgMS4wICgx
LjApIl9zdHI7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTF9CQUNLX0ZBSUw6
CiAgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTF9CQUNLX0ZVTkM6CkBAIC02MTAsMTcgKzYxMywy
MiBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcihHQ0dMZW51
bSBwbmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgY2FzZSBXZWJHTERlYnVnUmVu
ZGVyZXJJbmZvOjpVTk1BU0tFRF9SRU5ERVJFUl9XRUJHTDoKICAgICAgICAgaWYgKG1fd2ViZ2xE
ZWJ1Z1JlbmRlcmVySW5mbykgewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICAg
ICByZXR1cm4gIkFwcGxlIEdQVSJfc3RyOwotI2Vsc2UKLSAgICAgICAgICAgIHJldHVybiBtX2Nv
bnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSRVIpOworI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQorICAgICAgICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLm1hc2tXZWJHTFN0cmluZ3NFbmFibGVkKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpSRU5E
RVJFUik7CiAjZW5kaWYKKyAgICAgICAgICAgIHJldHVybiAiQXBwbGUgR1BVIl9zdHI7CiAgICAg
ICAgIH0KICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfRU5VTSwgImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9k
ZWJ1Z19yZW5kZXJlcl9pbmZvIG5vdCBlbmFibGVkIik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGNhc2UgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbzo6VU5NQVNLRURfVkVORE9SX1dFQkdM
OgotICAgICAgICBpZiAobV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvKQotICAgICAgICAgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpWRU5ET1IpOworICAg
ICAgICBpZiAobV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvKSB7CisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCisgICAgICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkubWFza1dlYkdMU3RyaW5nc0VuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlZFTkRPUik7CisjZW5k
aWYKKyAgICAgICAgICAgIHJldHVybiAiQXBwbGUgSW5jLiJfc3RyOworICAgICAgICB9CiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJn
ZXRQYXJhbWV0ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSwgV0VCR0xfZGVidWdfcmVuZGVy
ZXJfaW5mbyBub3QgZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNl
IEV4dGVuc2lvbnNHTDo6VkVSVEVYX0FSUkFZX0JJTkRJTkdfT0VTOiAvLyBPRVNfdmVydGV4X2Fy
cmF5X29iamVjdApAQCAtNjgyLDcgKzY5MCw3IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkKICAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRl
Z2VydihFeHRlbnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQsICZtX21heENvbG9y
QXR0YWNobWVudHMpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7CiB9Ci0gICAg
CisKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2
YXRpdmUoR0NHTGVudW0gdHlwZSwgdW5zaWduZWQmIG51bUVsZW1lbnRzUmVxdWlyZWQpCiB7CiAg
ICAgLy8gUGVyZm9ybXMgY29uc2VydmF0aXZlIHZhbGlkYXRpb24gYnkgY2FjaGluZyBhIG1heGlt
dW0gaW5kZXggb2YKQEAgLTY5MCwxOSArNjk4LDE5IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0NHTGVudW0gdHlwZSwgdW5zaWdu
CiAgICAgLy8gYXJyYXkgYnVmZmVycyBoYXZlIGVub3VnaCBlbGVtZW50cyB0byBzYXRpc2Z5IHRo
YXQgbWF4aW11bQogICAgIC8vIGluZGV4LCBza2lwcyB0aGUgZXhwZW5zaXZlIHBlci1kcmF3LWNh
bGwgaXRlcmF0aW9uIGluCiAgICAgLy8gdmFsaWRhdGVJbmRleEFycmF5UHJlY2lzZS4KLSAgICAK
KwogICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gZWxlbWVudEFycmF5QnVmZmVyID0gbV9ib3VuZFZl
cnRleEFycmF5T2JqZWN0LT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKTsKLSAgICAKKwogICAgIGlm
ICghZWxlbWVudEFycmF5QnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAg
ICBHQ0dMc2l6ZWlwdHIgbnVtRWxlbWVudHMgPSBlbGVtZW50QXJyYXlCdWZmZXItPmJ5dGVMZW5n
dGgoKTsKICAgICAvLyBUaGUgY2FzZSBjb3VudD09MCBpcyBhbHJlYWR5IGRlYWx0IHdpdGggaW4g
ZHJhd0VsZW1lbnRzIGJlZm9yZSB2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUuCiAgICAg
aWYgKCFudW1FbGVtZW50cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8gYnVmZmVy
ID0gZWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlQo
YnVmZmVyKTsKLSAgICAKKwogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtYXhJbmRleCA9IGVsZW1l
bnRBcnJheUJ1ZmZlci0+Z2V0Q2FjaGVkTWF4SW5kZXgodHlwZSk7CiAgICAgaWYgKCFtYXhJbmRl
eCkgewogICAgICAgICAvLyBDb21wdXRlIHRoZSBtYXhpbXVtIGluZGV4IGluIHRoZSBlbnRpcmUg
YnVmZmVyIGZvciB0aGUgZ2l2ZW4gdHlwZSBvZiBpbmRleC4KQEAgLTczNSw3ICs3NDMsNyBAQCBi
b29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZl
KEdDR0xlbnVtIHR5cGUsIHVuc2lnbgogICAgICAgICBpZiAobWF4SW5kZXgpCiAgICAgICAgICAg
ICBlbGVtZW50QXJyYXlCdWZmZXItPnNldENhY2hlZE1heEluZGV4KHR5cGUsIG1heEluZGV4LnZh
bHVlKCkpOwogICAgIH0KLSAgICAKKwogICAgIGlmICghbWF4SW5kZXgpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aAppbmRleCBkNWVmOTNhN2I1M2QzMzI0NjQ5MmRhZjY0NzM0OTY3YjhjMmZmZmU2Li43YjMwNDZl
ZTYyZjYyNTRiMDdhNmU3NWY0MTEwYTA3NTE2ZGI2N2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldE1lbnVJdGVtRWxlbWVudEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9p
c01lbnVJdGVtRWxlbWVudEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIG1lbnVJdGVt
RWxlbWVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWVudUl0ZW1FbGVtZW50RW5hYmxl
ZDsgfQotICAgIAorCiAgICAgdm9pZCBzZXREaXJlY3RvcnlVcGxvYWRFbmFibGVkKGJvb2wgaXNF
bmFibGVkKSB7IG1faXNEaXJlY3RvcnlVcGxvYWRFbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAg
Ym9vbCBkaXJlY3RvcnlVcGxvYWRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcmVjdG9y
eVVwbG9hZEVuYWJsZWQ7IH0KIApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzQ3Vz
dG9tUGFzdGVib2FyZERhdGFFbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAgYm9vbCBjdXN0b21Q
YXN0ZWJvYXJkRGF0YUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ3VzdG9tUGFzdGVib2Fy
ZERhdGFFbmFibGVkOyB9Ci0gICAgCisKICAgICB2b2lkIHNldFdlYlNoYXJlRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBtX2lzV2ViU2hhcmVFbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAgYm9v
bCB3ZWJTaGFyZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzV2ViU2hhcmVFbmFibGVkOyB9
CiAKQEAgLTE3NiwxNCArMTc2LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UG9pbnRlckV2
ZW50c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9wb2ludGVyRXZlbnRzRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQogICAgIGJvb2wgcG9pbnRlckV2ZW50c0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3BvaW50ZXJFdmVudHNFbmFibGVkOyB9Ci0gICAgCisKICAgICB2b2lkIHNldFN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9zeW50aGV0aWNFZGl0
aW5nQ29tbWFuZHNFbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAgYm9vbCBzeW50aGV0aWNFZGl0
aW5nQ29tbWFuZHNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zeW50aGV0aWNFZGl0aW5nQ29t
bWFuZHNFbmFibGVkOyB9CiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkK
ICAgICB2b2lkIHNldExheW91dEZvcm1hdHRpbmdDb250ZXh0RW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBtX2xheW91dEZvcm1hdHRpbmdDb250ZXh0RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogICAg
IGJvb2wgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9s
YXlvdXRGb3JtYXR0aW5nQ29udGV4dEVuYWJsZWQ7IH0KLSAgICAKKwogICAgIHZvaWQgc2V0TGF5
b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsg
bV9sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQogICAgIGJvb2wgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2xheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVk
OyB9CiAjZW5kaWYKQEAgLTIwNiw3ICsyMDYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEtl
eWdlbkVsZW1lbnRFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1fa2V5Z2VuRWxlbWVudEVuYWJs
ZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIGtleWdlbkVsZW1lbnRFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9rZXlnZW5FbGVtZW50RW5hYmxlZDsgfQotICAgIAorCiAgICAgdm9pZCBzZXRI
aWdobGlnaHRBUElFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faGlnaGxpZ2h0QVBJRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQogICAgIGJvb2wgaGlnaGxpZ2h0QVBJRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faGlnaGxpZ2h0QVBJRW5hYmxlZDsgfQogCkBAIC0yOTgsMTkgKzI5OCwyNCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRXZWJHTDJFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNX
ZWJHTDJFbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAgYm9vbCB3ZWJHTDJFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc1dlYkdMMkVuYWJsZWQ7IH0KICNlbmRpZgotICAgIAorCiAjaWYgRU5B
QkxFKFdFQkdQVSkKICAgICB2b2lkIHNldFdlYkdQVUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsg
bV9pc1dlYkdQVUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIHdlYkdQVUVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzV2ViR1BVRW5hYmxlZDsgfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHTDIpCisgICAgdm9pZCBzZXRNYXNrV2ViR0xTdHJpbmdz
RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzTWFza1dlYkdMU3RyaW5nc0VuYWJsZWQgPSBp
c0VuYWJsZWQ7IH0KKyAgICBib29sIG1hc2tXZWJHTFN0cmluZ3NFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc01hc2tXZWJHTFN0cmluZ3NFbmFibGVkOyB9CisjZW5kaWYKKwogI2lmIEVOQUJM
RShTVFJFQU1TX0FQSSkKICAgICB2b2lkIHNldFJlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgbV9pc1JlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KICAgICBib29sIHJlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzUmVhZGFibGVCeXRlU3RyZWFtQVBJRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0
V3JpdGFibGVTdHJlYW1BUElFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNXcml0YWJsZVN0
cmVhbUFQSUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIHdyaXRhYmxlU3RyZWFtQVBJ
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNXcml0YWJsZVN0cmVhbUFQSUVuYWJsZWQ7IH0K
ICNlbmRpZgotICAgIAorCiAjaWYgRU5BQkxFKERPV05MT0FEX0FUVFJJQlVURSkKICAgICB2b2lk
IHNldERvd25sb2FkQXR0cmlidXRlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzRG93bmxv
YWRBdHRyaWJ1dGVFbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAgYm9vbCBkb3dubG9hZEF0dHJp
YnV0ZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRG93bmxvYWRBdHRyaWJ1dGVFbmFibGVk
OyB9CkBAIC0zNTgsNyArMzYzLDcgQEAgcHVibGljOgogICAgIGJvb2wgdG91Y2hFdmVudHNFbmFi
bGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUb3VjaEV2ZW50c0VuYWJsZWQoYm9vbCBpc0VuYWJs
ZWQpIHsgbV90b3VjaEV2ZW50c0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgotICAgIAor
CiAgICAgYm9vbCByZWZlcnJlclBvbGljeUF0dHJpYnV0ZUVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3JlZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0UmVmZXJy
ZXJQb2xpY3lBdHRyaWJ1dGVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1fcmVmZXJyZXJQb2xp
Y3lBdHRyaWJ1dGVFbmFibGVkID0gaXNFbmFibGVkOyB9CiAKQEAgLTUzNCwxMSArNTM5LDE1IEBA
IHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICBib29sIG1faXNXZWJHTDJFbmFibGVk
IHsgZmFsc2UgfTsKICNlbmRpZgotICAgIAorCiAjaWYgRU5BQkxFKFdFQkdQVSkKICAgICBib29s
IG1faXNXZWJHUFVFbmFibGVkIHsgZmFsc2UgfTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQkdM
KSB8fCBFTkFCTEUoV0VCR0wyKQorICAgIGJvb2wgbV9pc01hc2tXZWJHTFN0cmluZ3NFbmFibGVk
IHsgZmFsc2UgfTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKERPV05MT0FEX0FUVFJJQlVURSkKICAg
ICBib29sIG1faXNEb3dubG9hZEF0dHJpYnV0ZUVuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBiNjRhMWY3ZDUyZjRj
MDlmZmNmMjFhMzM5MmVmMmQxNDY4Mzk1MDk1Li4wOTc5ZTJlMjVjMzI3NzE3N2EwM2MzZDc3NDhm
ZWQ1YzU2ZWE3NTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJl
bmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwK
QEAgLTc3Miw3ICs3NzIsNyBAQCBHYW1lcGFkc0VuYWJsZWQ6CiAgIGh1bWFuUmVhZGFibGVEZXNj
cmlwdGlvbjogIldlYiBHYW1lcGFkIEFQSSBzdXBwb3J0IgogICB3ZWJjb3JlQmluZGluZzogUnVu
dGltZUVuYWJsZWRGZWF0dXJlcwogICBjb25kaXRpb246IEVOQUJMRShHQU1FUEFEKQotICAKKwog
SGlnaGxpZ2h0QVBJRW5hYmxlZDoKICAgICB0eXBlOiBib29sCiAgICAgZGVmYXVsdFZhbHVlOiBm
YWxzZQpAQCAtMTM4OCw2ICsxMzg4LDE1IEBAIFdlYkdQVUVuYWJsZWQ6CiAgIHdlYmNvcmVCaW5k
aW5nOiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCiAgIGNvbmRpdGlvbjogRU5BQkxFKFdFQkdQVSkK
IAorTWFza1dlYkdMU3RyaW5nc0VuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgZGVmYXVsdFZhbHVl
OiB0cnVlCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiTWFzayBXZWJHTCBTdHJpbmdzIgorICBodW1h
blJlYWRhYmxlRGVzY3JpcHRpb246ICJNYXNrIFdlYkdMIFZlbmRvciwgUmVuZGVyZXIsIFNoYWRl
ciBMYW5ndWFnZSBTdHJpbmdzIgorICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCisgIHdlYmNvcmVC
aW5kaW5nOiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCisgIGNvbmRpdGlvbjogRU5BQkxFKFdFQkdM
KSB8fCBFTkFCTEUoV0VCR0wyKQorCiBBY2Nlc3NpYmlsaXR5T2JqZWN0TW9kZWxFbmFibGVkOgog
ICB0eXBlOiBib29sCiAgIGRlZmF1bHRWYWx1ZTogZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YTcwYWFmYTIzOTg4
NzViYTE3YzUzMjZlMGY2OGEwYzY0YWUwYWRmLi4zMGJlZTM1YTc5OGUyNzYxNTFkMGY0ZTljMGY0
ZjI3NzliNWJkMDY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDItMTMgIEpvbiBMZWUg
IDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIE1hc2sgV2ViR0wgc3RyaW5ncworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NjA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
d2ViZ2wvZmluZ2VycHJpbnRpbmctc3RyaW5ncy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy93ZWJnbC9maW5nZXJwcmludGluZy1zdHJpbmdzLmh0bWw6IEFkZGVk
LgorCiAyMDIwLTAyLTExICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAg
ICAgIEluZGV4ZWREQjogaXRlcmF0aW9uIG9mIGN1cnNvcnMgc2tpcCByZWNvcmRzIGlmIGRlbGV0
ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy93ZWJnbC9maW5nZXJwcmlu
dGluZy1zdHJpbmdzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy93ZWJn
bC9maW5nZXJwcmludGluZy1zdHJpbmdzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzA0NTFj
NGEyZTQ4ODY0N2Q5Mjc3OTE2Zjk5MGZlNTBlMGM3NmEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3dlYmdsL2ZpbmdlcnByaW50aW5nLXN0cmluZ3MtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKKyAKK1dlYkdMIDEgdmVuZG9yIGlzOiBXZWJLaXQKK1dl
YkdMIDEgcmVuZGVyZXIgaXM6IFdlYktpdCBXZWJHTAorV2ViR0wgMSBzaGFkaW5nIGxhbmd1YWdl
IHZlcnNpb24gaXM6IFdlYkdMIEdMU0wgRVMgMS4wICgxLjApCitXZWJHTCAxIHVubWFza2VkIHZl
bmRvciBpczogQXBwbGUgSW5jLgorV2ViR0wgMSB1bm1hc2tlZCByZW5kZXJlciBpczogQXBwbGUg
R1BVCitXZWJHTCAyIHZlbmRvciBpczogV2ViS2l0CitXZWJHTCAyIHJlbmRlcmVyIGlzOiBXZWJL
aXQgV2ViR0wKK1dlYkdMIDIgc2hhZGluZyBsYW5ndWFnZSB2ZXJzaW9uIGlzOiBXZWJHTCBHTFNM
IEVTIDEuMCAoMS4wKQorV2ViR0wgMiB1bm1hc2tlZCB2ZW5kb3IgaXM6IEFwcGxlIEluYy4KK1dl
YkdMIDIgdW5tYXNrZWQgcmVuZGVyZXIgaXM6IEFwcGxlIEdQVQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL3dlYmdsL2ZpbmdlcnByaW50aW5nLXN0cmluZ3MuaHRtbCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy93ZWJnbC9maW5nZXJwcmludGluZy1zdHJpbmdzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjk2Mjc2NmJkNzRlMDM1N2IyN2VkNzc2YTdkNmNmZjRiZTExY2NkMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy93ZWJnbC9maW5nZXJwcmlu
dGluZy1zdHJpbmdzLmh0bWwKQEAgLTAsMCArMSw1NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5
bGU+CitjYW52YXMgeworICAgIHdpZHRoOiAxcHg7CisgICAgaGVpZ2h0OiAxcHg7Cit9Cis8L3N0
eWxlPgorPGNhbnZhcyBpZD0iY2FudmFzMSI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJjYW52YXMy
Ij48L2NhbnZhcz4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW4oKSB7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIH0KKyAg
ICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhczEiKTsKKyAgICBj
YW52YXMud2lkdGggPSAxOworICAgIGNhbnZhcy5oZWlnaHQgPSAxOworICAgIG91dHB1dFN0cmlu
ZygiI3dlYmdsMSIsIGNhbnZhcy5nZXRDb250ZXh0KCJ3ZWJnbCIpKTsKKworICAgIGNhbnZhcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMyIik7CisgICAgY2FudmFzLndpZHRoID0g
MTsKKyAgICBjYW52YXMuaGVpZ2h0ID0gMTsKKyAgICBvdXRwdXRTdHJpbmcoIiN3ZWJnbDIiLCBj
YW52YXMuZ2V0Q29udGV4dCgid2ViZ2wyIikpOworfQorCitmdW5jdGlvbiBvdXRwdXRTdHJpbmco
Z2xJZCwgZ2wpIHsKKyAgICBpZiAoIWdsKQorICAgICAgICByZXR1cm47CisgICAgZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcihnbElkICsgIiAudmVuZG9yIikuaW5uZXJUZXh0ID0gZ2wuZ2V0UGFyYW1l
dGVyKGdsLlZFTkRPUik7CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihnbElkICsgIiAucmVu
ZGVyZXIiKS5pbm5lclRleHQgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuUkVOREVSRVIpOworICAgIGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoZ2xJZCArICIgLnNoYWRpbmdfbGFuZ3VhZ2VfdmVyc2lvbiIp
LmlubmVyVGV4dCA9IGdsLmdldFBhcmFtZXRlcihnbC5TSEFESU5HX0xBTkdVQUdFX1ZFUlNJT04p
OworCisgICAgY29uc3QgZGVidWdJbmZvID0gZ2wuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9kZWJ1Z19y
ZW5kZXJlcl9pbmZvIik7CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihnbElkICsgIiAudW5t
YXNrZWRfdmVuZG9yIikuaW5uZXJUZXh0ID0gZ2wuZ2V0UGFyYW1ldGVyKGRlYnVnSW5mby5VTk1B
U0tFRF9WRU5ET1JfV0VCR0wpOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZ2xJZCArICIg
LnVubWFza2VkX3JlbmRlcmVyIikuaW5uZXJUZXh0ID0gZ2wuZ2V0UGFyYW1ldGVyKGRlYnVnSW5m
by5VTk1BU0tFRF9SRU5ERVJFUl9XRUJHTCk7Cit9Cit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
bG9hZCIsIHJ1biwgZmFsc2UpOworPC9zY3JpcHQ+CisKKzxzZWN0aW9uIGlkPSJ3ZWJnbDEiPgor
PGRpdj5XZWJHTCAxIHZlbmRvciBpczogPHNwYW4gY2xhc3M9InZlbmRvciI+Tk9UIFNVUFBPUlRF
RDwvc3Bhbj48L2Rpdj4KKzxkaXY+V2ViR0wgMSByZW5kZXJlciBpczogPHNwYW4gY2xhc3M9InJl
bmRlcmVyIj5OT1QgU1VQUE9SVEVEPC9zcGFuPjwvZGl2PgorPGRpdj5XZWJHTCAxIHNoYWRpbmcg
bGFuZ3VhZ2UgdmVyc2lvbiBpczogPHNwYW4gY2xhc3M9InNoYWRpbmdfbGFuZ3VhZ2VfdmVyc2lv
biI+Tk9UIFNVUFBPUlRFRDwvc3Bhbj48L2Rpdj4KKzxkaXY+V2ViR0wgMSB1bm1hc2tlZCB2ZW5k
b3IgaXM6IDxzcGFuIGNsYXNzPSJ1bm1hc2tlZF92ZW5kb3IiPk5PVCBTVVBQT1JURUQ8L3NwYW4+
PC9kaXY+Cis8ZGl2PldlYkdMIDEgdW5tYXNrZWQgcmVuZGVyZXIgaXM6IDxzcGFuIGNsYXNzPSJ1
bm1hc2tlZF9yZW5kZXJlciI+Tk9UIFNVUFBPUlRFRDwvc3Bhbj48L2Rpdj4KKzwvc2VjdGlvbj4K
KworPHNlY3Rpb24gaWQ9IndlYmdsMiI+Cis8ZGl2PldlYkdMIDIgdmVuZG9yIGlzOiA8c3BhbiBj
bGFzcz0idmVuZG9yIj5OT1QgU1VQUE9SVEVEPC9zcGFuPjwvZGl2PgorPGRpdj5XZWJHTCAyIHJl
bmRlcmVyIGlzOiA8c3BhbiBjbGFzcz0icmVuZGVyZXIiPk5PVCBTVVBQT1JURUQ8L3NwYW4+PC9k
aXY+Cis8ZGl2PldlYkdMIDIgc2hhZGluZyBsYW5ndWFnZSB2ZXJzaW9uIGlzOiA8c3BhbiBjbGFz
cz0ic2hhZGluZ19sYW5ndWFnZV92ZXJzaW9uIj5OT1QgU1VQUE9SVEVEPC9zcGFuPjwvZGl2Pgor
PGRpdj5XZWJHTCAyIHVubWFza2VkIHZlbmRvciBpczogPHNwYW4gY2xhc3M9InVubWFza2VkX3Zl
bmRvciI+Tk9UIFNVUFBPUlRFRDwvc3Bhbj48L2Rpdj4KKzxkaXY+V2ViR0wgMiB1bm1hc2tlZCBy
ZW5kZXJlciBpczogPHNwYW4gY2xhc3M9InVubWFza2VkX3JlbmRlcmVyIj5OT1QgU1VQUE9SVEVE
PC9zcGFuPjwvZGl2PgorPC9zZWN0aW9uPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390718</attachid>
            <date>2020-02-13 18:48:12 -0800</date>
            <delta_ts>2020-02-14 19:19:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207608-20200213184809.patch</filename>
            <type>text/plain</type>
            <size>90712</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U5NWY3MGVjZjY0YTll
ODViMmIxYTVjYzQ4ZTM5NzMxMDAwM2FlNi4uYzhmMzgyZjVhZGViYTM3OTc4NGUzZjQ4OTM2Yzcz
NzQ4NTNkNzY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTAyLTEzICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBNYXNrIFdlYkdMIHN0cmluZ3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzYwOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHBsYXRm
b3JtL21hYy93ZWJnbC9maW5nZXJwcmludGluZy1zdHJpbmdzLmh0bWwKKworICAgICAgICBBZGQg
bmV3IGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRvIG1hc2sgV2ViR0wgdmVuZG9yLCByZW5kZXJlciwg
YW5kIHNoYWRpbmcgbGFuZ3VhZ2Ugc3RyaW5ncy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwOiBXaGl0ZXNwYWNlIGNsZWFudXAgYWxzby4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcik6IENoZWNr
IGFnYWluc3QgdGhlIHJ1bnRpbWUgZmVhdHVyZSB0byByZXR1cm4gdGhlCisgICAgICAgIG9sZCBz
dHJpbmcuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKTog
RGl0dG8uCisgICAgICAgICogcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRNYXNrV2ViR0xTdHJpbmdzRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptYXNrV2Vi
R0xTdHJpbmdzRW5hYmxlZCBjb25zdCk6CisKIDIwMjAtMDItMTEgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIzNjAyNSk6IENvcnJl
Y3QgZmxha3kgV2ViR0wyIHRlc3QgZmFpbHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjU0MGRmNDkyNDg2NjI4
ZDkzMDFjNDY3OWJhNDhmZDJlOWYxNzEyZS4uNjcwOTExYWZiYmQyMmE1MzE0MDQyYWM5YTE2NzNk
M2NlMTYxOTVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMi0xMyAgSm9uIExl
ZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFzayBXZWJHTCBzdHJpbmdzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBwbGF0Zm9y
bS9tYWMvd2ViZ2wvZmluZ2VycHJpbnRpbmctc3RyaW5ncy5odG1sCisKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUHJlZmVyZW5jZXMueWFtbDogQWRkIG5ldyBleHBlcmltZW50YWwgZmVhdHVyZS4KKwog
MjAyMC0wMi0xMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWJQYWdlOjpnZXRGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uIHNob3VsZCBiZSByb2J1
c3Qgd2hlbiB0aGUgZm9jdXNlZCBlbGVtZW50IGNoYW5nZXMgZHVyaW5nIGxheW91dApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGIyNmVjNDFlYTU4YTAyZDU5YmRhMThmMzQxOGNhOTRm
ZDE5ZTQwYzcuLjRkODQ2MTc5OWFmYzgwYTQ1OTcwNzBmNjU1ZTE4Y2RkYjQwMzdjZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wMi0xMyAgSm9u
IExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFzayBXZWJHTCBzdHJpbmdzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MDgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBwbGF0
Zm9ybS9tYWMvd2ViZ2wvZmluZ2VycHJpbnRpbmctc3RyaW5ncy5odG1sCisKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
UHJlZmVyZW5jZXMubW06CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUu
aDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisKIDIwMjAtMDItMTAgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FsbG93IHNldHRpbmcgYmFz
ZSBVUkwgdG8gYSBkYXRhIG9yIEphdmFTY3JpcHQgVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDI5YTI5MmU4
MTRjMDBjNTMxMzgzNzk5ODJiMjUxZGUxZGM2NWExNmMuLjE3ZTY1ODlhNGVmYjVhYjI3Zjg4YmMz
ZWIzNmQxNmRiOGVmN2RkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1
ZGUgIk9FU1RleHR1cmVIYWxmRmxvYXQuaCIKICNpbmNsdWRlICJPRVNUZXh0dXJlSGFsZkZsb2F0
TGluZWFyLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYkdMQWN0aXZlSW5mby5oIgogI2luY2x1ZGUgIldl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmgiCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFUQy5oIgpAQCAtOTQwLDcgKzk0MSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvCiB7
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IAorCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliRGl2aXNvcihp
bmRleCwgZGl2aXNvcik7CiB9CiAKQEAgLTE1MTYsNyArMTUxNyw3IEBAIFJlZlB0cjxXZWJHTFZl
cnRleEFycmF5T2JqZWN0PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVWZXJ0ZXhBcnJh
eSgpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgCisKICAgICBhdXRvIG9iamVjdCA9IFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6OmNyZWF0
ZSgqdGhpcywgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6VHlwZTo6VXNlcik7CiAgICAgYWRkQ29u
dGV4dE9iamVjdChvYmplY3QuZ2V0KCkpOwogICAgIHJldHVybiBXVEZNb3ZlKG9iamVjdCk7CkBA
IC0xNTI2LDE3ICsxNTI3LDE3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRl
VmVydGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJyYXlPYmplCiB7CiAgICAgaWYg
KCFhcnJheU9iamVjdCB8fCBpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICAK
KwogICAgIGlmIChhcnJheU9iamVjdC0+aXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICAKKwogICAgIGlmICghYXJyYXlPYmplY3QtPmlzRGVmYXVsdE9iamVjdCgpICYmIGFycmF5T2Jq
ZWN0ID09IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdCkKICNpZiBVU0UoT1BFTkdMX0VTKQogICAg
ICAgICBzZXRCb3VuZFZlcnRleEFycmF5T2JqZWN0KG51bGxwdHIpOwogI2Vsc2UKICAgICAgICAg
YmluZFZlcnRleEFycmF5KG51bGxwdHIpOyAvLyBUaGUgZGVmYXVsdCBWQU8gd2FzIHJlbW92ZWQg
aW4gT3BlbkdMIDMuMyBidXQgbm90IGZyb20gV2ViR0wgMjsgYmluZCB0aGUgZGVmYXVsdCBmb3Ig
V2ViR0wgdG8gdXNlLgogI2VuZGlmCi0gICAgCisKICAgICBhcnJheU9iamVjdC0+ZGVsZXRlT2Jq
ZWN0KGdyYXBoaWNzQ29udGV4dEdMKCkpOwogfQogCkBAIC0xNTQ0LDEwICsxNTQ1LDEwIEBAIEdD
R0xib29sZWFuIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmlzVmVydGV4QXJyYXkoV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdCogYXJyYXlPCiB7CiAgICAgaWYgKCFhcnJheU9iamVjdCB8fCBpc0NvbnRl
eHRMb3N0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIGlmICghYXJyYXlP
YmplY3QtPmhhc0V2ZXJCZWVuQm91bmQoKSB8fCAhYXJyYXlPYmplY3QtPnZhbGlkYXRlKDAsICp0
aGlzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgcmV0dXJuIG1fY29udGV4
dC0+aXNWZXJ0ZXhBcnJheShhcnJheU9iamVjdC0+b2JqZWN0KCkpOwogfQogCkBAIC0xNTU1LDE0
ICsxNTU2LDE0IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFZlcnRleEFycmF5
KFdlYkdMVmVydGV4QXJyYXlPYmplY3QqIGFycmF5T2JqZWN0CiB7CiAgICAgaWYgKGlzQ29udGV4
dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKGFycmF5T2JqZWN0ICYm
IChhcnJheU9iamVjdC0+aXNEZWxldGVkKCkgfHwgIWFycmF5T2JqZWN0LT52YWxpZGF0ZSgwLCAq
dGhpcykgfHwgIW1fY29udGV4dE9iamVjdHMuY29udGFpbnMoYXJyYXlPYmplY3QpKSkgewogICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGFycmF5T2Jq
ZWN0ICYmICFhcnJheU9iamVjdC0+aXNEZWZhdWx0T2JqZWN0KCkgJiYgYXJyYXlPYmplY3QtPm9i
amVjdCgpKSB7CiAgICAgICAgIG1fY29udGV4dC0+YmluZFZlcnRleEFycmF5KGFycmF5T2JqZWN0
LT5vYmplY3QoKSk7Ci0gICAgICAgIAorCiAgICAgICAgIGFycmF5T2JqZWN0LT5zZXRIYXNFdmVy
QmVlbkJvdW5kKCk7CiAgICAgICAgIHNldEJvdW5kVmVydGV4QXJyYXlPYmplY3QoYXJyYXlPYmpl
Y3QpOwogICAgIH0gZWxzZSB7CkBAIC0xNjEwLDcgKzE2MTEsNyBAQCBPcHRpb25hbDxWZWN0b3I8
U3RyaW5nPj4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8U3RyaW5nPiByZXN1
bHQ7Ci0gICAgCisKICAgICBpZiAobV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogCkBAIC0xNzA0LDcgKzE3MDUsNyBAQCBXZWJHTEFueSBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoR0NHTGVu
dW0gdGFyZwogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogICAgIH0KLSAgICAKKwogICAg
IGlmIChvYmplY3QtPmlzVGV4dHVyZSgpKSB7CiAgICAgICAgIHN3aXRjaCAocG5hbWUpIHsKICAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpF
Q1RfVFlQRToKQEAgLTIxMTQsNyArMjExNSw5IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpTQ0lTU09SX1RFU1Q6CiAgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVy
KHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTSEFESU5HX0xBTkdVQUdFX1ZF
UlNJT046Ci0gICAgICAgIHJldHVybiAiV2ViR0wgR0xTTCBFUyAxLjAgKCIgKyBtX2NvbnRleHQt
PmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6U0hBRElOR19MQU5HVUFHRV9WRVJTSU9OKSAr
ICIpIjsKKyAgICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLm1hc2tXZWJHTFN0cmluZ3NFbmFibGVkKCkpCisgICAgICAgICAgICByZXR1cm4gIldlYkdM
IEdMU0wgRVMgMS4wICgiICsgbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6
OlNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTikgKyAiKSI7CisgICAgICAgIHJldHVybiAiV2ViR0wg
R0xTTCBFUyAxLjAgKDEuMCkiX3N0cjsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTVEVO
Q0lMX0JBQ0tfRkFJTDoKICAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkSW50UGFyYW1ldGVyKHBu
YW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTVEVOQ0lMX0JBQ0tfRlVOQzoKQEAg
LTIxNzMsMTcgKzIxNzYsMjIgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQogICAgICAgICByZXR1cm4gZ2V0V2ViR0xJbnRBcnJh
eVBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBXZWJHTERlYnVnUmVuZGVyZXJJbmZvOjpVTk1B
U0tFRF9SRU5ERVJFUl9XRUJHTDoKICAgICAgICAgaWYgKG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5m
bykgewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICAgICByZXR1cm4gIkFwcGxl
IEdQVSJfc3RyOwotI2Vsc2UKLSAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFN0cmlu
ZyhHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSRVIpOworI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgICAgICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLm1hc2tXZWJHTFN0cmluZ3NFbmFibGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1f
Y29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUik7CiAjZW5kaWYK
KyAgICAgICAgICAgIHJldHVybiAiQXBwbGUgR1BVIl9zdHI7CiAgICAgICAgIH0KICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFBh
cmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9kZWJ1Z19yZW5kZXJlcl9p
bmZvIG5vdCBlbmFibGVkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNhc2UgV2Vi
R0xEZWJ1Z1JlbmRlcmVySW5mbzo6VU5NQVNLRURfVkVORE9SX1dFQkdMOgotICAgICAgICBpZiAo
bV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvKQotICAgICAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+
Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpWRU5ET1IpOworICAgICAgICBpZiAobV93ZWJn
bERlYnVnUmVuZGVyZXJJbmZvKSB7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAg
ICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubWFza1dl
YkdMU3RyaW5nc0VuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5n
ZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlZFTkRPUik7CisjZW5kaWYKKyAgICAgICAgICAg
IHJldHVybiAiQXBwbGUgSW5jLiJfc3RyOworICAgICAgICB9CiAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQYXJhbWV0ZXIiLCAi
aW52YWxpZCBwYXJhbWV0ZXIgbmFtZSwgV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyBub3QgZW5h
YmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNlIEV4dGVuc2lvbnNHTDo6
TUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiAvLyBFWFRfdGV4dHVyZV9maWx0ZXJfYW5p
c290cm9waWMKQEAgLTIyNDEsOCArMjI0OSw4IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkKICAgICAgICAgcmV0dXJuIGdldElu
dFBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6TUFYX1ZFUlRF
WF9VTklGT1JNX0JMT0NLUzoKICAgICAgICAgcmV0dXJuIGdldEludFBhcmFtZXRlcihwbmFtZSk7
Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6TUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVO
VFM6IAotICAgICAgICByZXR1cm4gZ2V0SW50UGFyYW1ldGVyKHBuYW1lKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6TUFYX1ZFUlRFWF9V
TklGT1JNX0NPTVBPTkVOVFM6CisgICAgICAgIHJldHVybiBnZXRJbnRQYXJhbWV0ZXIocG5hbWUp
OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6Ok1JTl9QUk9HUkFNX1RFWEVMX09GRlNFVDoK
ICAgICAgICAgcmV0dXJuIGdldEludFBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6UEFDS19ST1dfTEVOR1RIOgpAQCAtMjMwNiw3ICsyMzE0LDcgQEAgV2ViR0xB
bnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDR0xlbnVtIHBuYW1lKQog
ICAgICAgICByZXR1cm4gbV9ib3VuZFNhbXBsZXJzW21fYWN0aXZlVGV4dHVyZVVuaXRdOwogICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkNPUFlfUkVBRF9CVUZGRVI6CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6Q09QWV9XUklURV9CVUZGRVI6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRHTDo6UElYRUxfUEFDS19CVUZGRVJfQklORElORzogICAKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpQSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlBJWEVMX1VOUEFDS19CVUZGRVJfQklORElORzoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpSRUFEX0JVRkZFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJF
X0JJTkRJTkdfMkRfQVJSQVk6CkBAIC0yMzI3LDE5ICsyMzM1LDE5IEBAIGJvb2wgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZlKEdDR0xlbnVtIHR5
cGUsIHVuc2lnCiAgICAgLy8gYXJyYXkgYnVmZmVycyBoYXZlIGVub3VnaCBlbGVtZW50cyB0byBz
YXRpc2Z5IHRoYXQgbWF4aW11bQogICAgIC8vIGluZGV4LCBza2lwcyB0aGUgZXhwZW5zaXZlIHBl
ci1kcmF3LWNhbGwgaXRlcmF0aW9uIGluCiAgICAgLy8gdmFsaWRhdGVJbmRleEFycmF5UHJlY2lz
ZS4KLSAgICAKKwogICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gZWxlbWVudEFycmF5QnVmZmVyID0g
bV9ib3VuZFZlcnRleEFycmF5T2JqZWN0LT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKTsKLSAgICAK
KwogICAgIGlmICghZWxlbWVudEFycmF5QnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgCisKICAgICBHQ0dMc2l6ZWlwdHIgbnVtRWxlbWVudHMgPSBlbGVtZW50QXJyYXlCdWZmZXIt
PmJ5dGVMZW5ndGgoKTsKICAgICAvLyBUaGUgY2FzZSBjb3VudD09MCBpcyBhbHJlYWR5IGRlYWx0
IHdpdGggaW4gZHJhd0VsZW1lbnRzIGJlZm9yZSB2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRp
dmUuCiAgICAgaWYgKCFudW1FbGVtZW50cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1
dG8gYnVmZmVyID0gZWxlbWVudEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlCdWZmZXIoKTsKICAg
ICBBU1NFUlQoYnVmZmVyKTsKLSAgICAKKwogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtYXhJbmRl
eCA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+Z2V0Q2FjaGVkTWF4SW5kZXgodHlwZSk7CiAgICAgaWYg
KCFtYXhJbmRleCkgewogICAgICAgICAvLyBDb21wdXRlIHRoZSBtYXhpbXVtIGluZGV4IGluIHRo
ZSBlbnRpcmUgYnVmZmVyIGZvciB0aGUgZ2l2ZW4gdHlwZSBvZiBpbmRleC4KQEAgLTIzNTksNyAr
MjM2Nyw3IEBAIGJvb2wgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5
Q29uc2VydmF0aXZlKEdDR0xlbnVtIHR5cGUsIHVuc2lnCiAgICAgICAgIGlmIChtYXhJbmRleCkK
ICAgICAgICAgICAgIGVsZW1lbnRBcnJheUJ1ZmZlci0+c2V0Q2FjaGVkTWF4SW5kZXgodHlwZSwg
bWF4SW5kZXgudmFsdWUoKSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFtYXhJbmRleCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA3NTg1MGRkMThiZTRlZTA3MjQwYzY5
YTgyNWY3YTVjYTY0ZmMzY2NhLi5iNWRmY2I5NmM2ZjdlNzRkYzY0NDRhNzI5MjIwNjMxZDM1ZDhj
NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
ICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJPRVNUZXh0
dXJlSGFsZkZsb2F0TGluZWFyLmgiCiAjaW5jbHVkZSAiT0VTVmVydGV4QXJyYXlPYmplY3QuaCIK
ICNpbmNsdWRlICJSZW5kZXJCb3guaCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaCIKICNpbmNsdWRlICJX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmgiCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUVUQy5oIgpAQCAtMTkxLDEwICsxOTIsMTAgQEAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7Ci0gICAg
CisKICAgICBpZiAobV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQogICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgIAorCiAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBv
cnRzKCJHTF9FWFRfYmxlbmRfbWlubWF4Il9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhU
X2JsZW5kX21pbm1heCJfcyk7CiAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9FWFRfc1JHQiJfcykpCkBAIC0yNDksMTIgKzI1MCwxMiBAQCBXZWJHTEFueSBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihH
Q0dMZW51bSB0YXJnZQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZh
bGlkYXRlRnJhbWVidWZmZXJGdW5jUGFyYW1ldGVycygiZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyIiwgdGFyZ2V0LCBhdHRhY2htZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgCisKICAgICBpZiAoIW1fZnJhbWVidWZmZXJCaW5kaW5nIHx8ICFtX2ZyYW1lYnVmZmVy
QmluZGluZy0+b2JqZWN0KCkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAiZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyIiwgIm5vIGZyYW1lYnVmZmVyIGJvdW5kIik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gb2JqZWN0ID0gbWFrZVJlZlB0cihtX2ZyYW1lYnVm
ZmVyQmluZGluZy0+Z2V0QXR0YWNobWVudE9iamVjdChhdHRhY2htZW50KSk7CiAgICAgaWYgKCFv
YmplY3QpIHsKICAgICAgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKQpAQCAtMjY0LDcgKzI2NSw3IEBAIFdlYkdMQW55
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KEdDR0xlbnVtIHRhcmdlCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dEdMOjpJTlZBTElEX0VOVU0sICJnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIiLCAi
aW52YWxpZCBwYXJhbWV0ZXIgbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
Ci0gICAgCisKICAgICBpZiAob2JqZWN0LT5pc1RleHR1cmUoKSkgewogICAgICAgICBzd2l0Y2gg
KHBuYW1lKSB7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfT0JKRUNUX1RZUEU6CkBAIC0zMzEsNyArMzMyLDcgQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnZhbGlkYXRlRnJhbWVidWZmZXJGdW5jUGFyYW1ldGVycyhjb25zdCBjaGFy
KiBmdW5jdGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KLSAgICAKKwogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCkBAIC0zOTYsNyArMzk3
LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmhpbnQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBtb2RlKQogICAgIH0KICAgICBtX2NvbnRleHQtPmhpbnQodGFyZ2V0LCBtb2RlKTsK
IH0KLSAgICAKKwogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyKEdDR0xiaXRmaWVs
ZCBtYXNrKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCkBAIC01NDYsNyAr
NTQ3LDkgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIoR0NH
TGVudW0gcG5hbWUpCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U0NJU1NPUl9URVNUOgog
ICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6U0hBRElOR19MQU5HVUFHRV9WRVJTSU9OOgotICAgICAgICByZXR1cm4g
IldlYkdMIEdMU0wgRVMgMS4wICgiICsgbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250
ZXh0R0w6OlNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTikgKyAiKSI7CisgICAgICAgIGlmICghUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5tYXNrV2ViR0xTdHJpbmdzRW5h
YmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuICJXZWJHTCBHTFNMIEVTIDEuMCAoIiArIG1fY29u
dGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpTSEFESU5HX0xBTkdVQUdFX1ZFUlNJ
T04pICsgIikiOworICAgICAgICByZXR1cm4gIldlYkdMIEdMU0wgRVMgMS4wICgxLjApIl9zdHI7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U1RFTkNJTF9CQUNLX0ZBSUw6CiAgICAgICAg
IHJldHVybiBnZXRVbnNpZ25lZEludFBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6U1RFTkNJTF9CQUNLX0ZVTkM6CkBAIC02MTAsMTcgKzYxMywyMiBAQCBXZWJH
TEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcihHQ0dMZW51bSBwbmFtZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgY2FzZSBXZWJHTERlYnVnUmVuZGVyZXJJbmZv
OjpVTk1BU0tFRF9SRU5ERVJFUl9XRUJHTDoKICAgICAgICAgaWYgKG1fd2ViZ2xEZWJ1Z1JlbmRl
cmVySW5mbykgewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICAgICByZXR1cm4g
IkFwcGxlIEdQVSJfc3RyOwotI2Vsc2UKLSAgICAgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdl
dFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSRVIpOworI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgICAgICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLm1hc2tXZWJHTFN0cmluZ3NFbmFibGVkKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUik7CiAj
ZW5kaWYKKyAgICAgICAgICAgIHJldHVybiAiQXBwbGUgR1BVIl9zdHI7CiAgICAgICAgIH0KICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwg
ImdldFBhcmFtZXRlciIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lLCBXRUJHTF9kZWJ1Z19yZW5k
ZXJlcl9pbmZvIG5vdCBlbmFibGVkIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNh
c2UgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbzo6VU5NQVNLRURfVkVORE9SX1dFQkdMOgotICAgICAg
ICBpZiAobV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvKQotICAgICAgICAgICAgcmV0dXJuIG1fY29u
dGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpWRU5ET1IpOworICAgICAgICBpZiAo
bV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvKSB7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisg
ICAgICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
bWFza1dlYkdMU3RyaW5nc0VuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jb250
ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlZFTkRPUik7CisjZW5kaWYKKyAgICAg
ICAgICAgIHJldHVybiAiQXBwbGUgSW5jLiJfc3RyOworICAgICAgICB9CiAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRQYXJhbWV0
ZXIiLCAiaW52YWxpZCBwYXJhbWV0ZXIgbmFtZSwgV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyBu
b3QgZW5hYmxlZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNlIEV4dGVuc2lv
bnNHTDo6VkVSVEVYX0FSUkFZX0JJTkRJTkdfT0VTOiAvLyBPRVNfdmVydGV4X2FycmF5X29iamVj
dApAQCAtNjgyLDcgKzY5MCw3IEBAIEdDR0xpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRN
YXhDb2xvckF0dGFjaG1lbnRzKCkKICAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihFeHRl
bnNpb25zR0w6Ok1BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQsICZtX21heENvbG9yQXR0YWNobWVu
dHMpOwogICAgIHJldHVybiBtX21heENvbG9yQXR0YWNobWVudHM7CiB9Ci0gICAgCisKIGJvb2wg
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0NH
TGVudW0gdHlwZSwgdW5zaWduZWQmIG51bUVsZW1lbnRzUmVxdWlyZWQpCiB7CiAgICAgLy8gUGVy
Zm9ybXMgY29uc2VydmF0aXZlIHZhbGlkYXRpb24gYnkgY2FjaGluZyBhIG1heGltdW0gaW5kZXgg
b2YKQEAgLTY5MCwxOSArNjk4LDE5IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxp
ZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0NHTGVudW0gdHlwZSwgdW5zaWduCiAgICAgLy8g
YXJyYXkgYnVmZmVycyBoYXZlIGVub3VnaCBlbGVtZW50cyB0byBzYXRpc2Z5IHRoYXQgbWF4aW11
bQogICAgIC8vIGluZGV4LCBza2lwcyB0aGUgZXhwZW5zaXZlIHBlci1kcmF3LWNhbGwgaXRlcmF0
aW9uIGluCiAgICAgLy8gdmFsaWRhdGVJbmRleEFycmF5UHJlY2lzZS4KLSAgICAKKwogICAgIFJl
ZlB0cjxXZWJHTEJ1ZmZlcj4gZWxlbWVudEFycmF5QnVmZmVyID0gbV9ib3VuZFZlcnRleEFycmF5
T2JqZWN0LT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKTsKLSAgICAKKwogICAgIGlmICghZWxlbWVu
dEFycmF5QnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICBHQ0dMc2l6
ZWlwdHIgbnVtRWxlbWVudHMgPSBlbGVtZW50QXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKTsKICAg
ICAvLyBUaGUgY2FzZSBjb3VudD09MCBpcyBhbHJlYWR5IGRlYWx0IHdpdGggaW4gZHJhd0VsZW1l
bnRzIGJlZm9yZSB2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUuCiAgICAgaWYgKCFudW1F
bGVtZW50cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGF1dG8gYnVmZmVyID0gZWxlbWVu
dEFycmF5QnVmZmVyLT5lbGVtZW50QXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlQoYnVmZmVyKTsK
LSAgICAKKwogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtYXhJbmRleCA9IGVsZW1lbnRBcnJheUJ1
ZmZlci0+Z2V0Q2FjaGVkTWF4SW5kZXgodHlwZSk7CiAgICAgaWYgKCFtYXhJbmRleCkgewogICAg
ICAgICAvLyBDb21wdXRlIHRoZSBtYXhpbXVtIGluZGV4IGluIHRoZSBlbnRpcmUgYnVmZmVyIGZv
ciB0aGUgZ2l2ZW4gdHlwZSBvZiBpbmRleC4KQEAgLTczNSw3ICs3NDMsNyBAQCBib29sIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZlKEdDR0xlbnVt
IHR5cGUsIHVuc2lnbgogICAgICAgICBpZiAobWF4SW5kZXgpCiAgICAgICAgICAgICBlbGVtZW50
QXJyYXlCdWZmZXItPnNldENhY2hlZE1heEluZGV4KHR5cGUsIG1heEluZGV4LnZhbHVlKCkpOwog
ICAgIH0KLSAgICAKKwogICAgIGlmICghbWF4SW5kZXgpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCBk
NWVmOTNhN2I1M2QzMzI0NjQ5MmRhZjY0NzM0OTY3YjhjMmZmZmU2Li43YjMwNDZlZTYyZjYyNTRi
MDdhNmU3NWY0MTEwYTA3NTE2ZGI2N2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldE1lbnVJdGVtRWxlbWVudEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc01lbnVJdGVt
RWxlbWVudEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIG1lbnVJdGVtRWxlbWVudEVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWVudUl0ZW1FbGVtZW50RW5hYmxlZDsgfQotICAg
IAorCiAgICAgdm9pZCBzZXREaXJlY3RvcnlVcGxvYWRFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7
IG1faXNEaXJlY3RvcnlVcGxvYWRFbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAgYm9vbCBkaXJl
Y3RvcnlVcGxvYWRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcmVjdG9yeVVwbG9hZEVu
YWJsZWQ7IH0KIApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEN1c3Rv
bVBhc3RlYm9hcmREYXRhRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzQ3VzdG9tUGFzdGVi
b2FyZERhdGFFbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAgYm9vbCBjdXN0b21QYXN0ZWJvYXJk
RGF0YUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ3VzdG9tUGFzdGVib2FyZERhdGFFbmFi
bGVkOyB9Ci0gICAgCisKICAgICB2b2lkIHNldFdlYlNoYXJlRW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBtX2lzV2ViU2hhcmVFbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAgYm9vbCB3ZWJTaGFy
ZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzV2ViU2hhcmVFbmFibGVkOyB9CiAKQEAgLTE3
NiwxNCArMTc2LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UG9pbnRlckV2ZW50c0VuYWJs
ZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9wb2ludGVyRXZlbnRzRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQogICAgIGJvb2wgcG9pbnRlckV2ZW50c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3BvaW50
ZXJFdmVudHNFbmFibGVkOyB9Ci0gICAgCisKICAgICB2b2lkIHNldFN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9zeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZHNFbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAgYm9vbCBzeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZHNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zeW50aGV0aWNFZGl0aW5nQ29tbWFuZHNFbmFi
bGVkOyB9CiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICB2b2lk
IHNldExheW91dEZvcm1hdHRpbmdDb250ZXh0RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2xh
eW91dEZvcm1hdHRpbmdDb250ZXh0RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogICAgIGJvb2wgbGF5
b3V0Rm9ybWF0dGluZ0NvbnRleHRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRGb3Jt
YXR0aW5nQ29udGV4dEVuYWJsZWQ7IH0KLSAgICAKKwogICAgIHZvaWQgc2V0TGF5b3V0Rm9ybWF0
dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9sYXlvdXRG
b3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogICAgIGJv
b2wgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2xheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkOyB9CiAjZW5k
aWYKQEAgLTIwNiw3ICsyMDYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEtleWdlbkVsZW1l
bnRFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1fa2V5Z2VuRWxlbWVudEVuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KICAgICBib29sIGtleWdlbkVsZW1lbnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9rZXlnZW5FbGVtZW50RW5hYmxlZDsgfQotICAgIAorCiAgICAgdm9pZCBzZXRIaWdobGlnaHRB
UElFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faGlnaGxpZ2h0QVBJRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQogICAgIGJvb2wgaGlnaGxpZ2h0QVBJRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGlnaGxpZ2h0QVBJRW5hYmxlZDsgfQogCkBAIC0yOTgsMTkgKzI5OCwyNCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRXZWJHTDJFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNXZWJHTDJFbmFi
bGVkID0gaXNFbmFibGVkOyB9CiAgICAgYm9vbCB3ZWJHTDJFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc1dlYkdMMkVuYWJsZWQ7IH0KICNlbmRpZgotICAgIAorCiAjaWYgRU5BQkxFKFdFQkdQ
VSkKICAgICB2b2lkIHNldFdlYkdQVUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1dlYkdQ
VUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIHdlYkdQVUVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzV2ViR1BVRW5hYmxlZDsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR0wp
IHx8IEVOQUJMRShXRUJHTDIpCisgICAgdm9pZCBzZXRNYXNrV2ViR0xTdHJpbmdzRW5hYmxlZChi
b29sIGlzRW5hYmxlZCkgeyBtX2lzTWFza1dlYkdMU3RyaW5nc0VuYWJsZWQgPSBpc0VuYWJsZWQ7
IH0KKyAgICBib29sIG1hc2tXZWJHTFN0cmluZ3NFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c01hc2tXZWJHTFN0cmluZ3NFbmFibGVkOyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShTVFJFQU1T
X0FQSSkKICAgICB2b2lkIHNldFJlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgbV9pc1JlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
ICAgICBib29sIHJlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzUmVhZGFibGVCeXRlU3RyZWFtQVBJRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0V3JpdGFibGVT
dHJlYW1BUElFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNXcml0YWJsZVN0cmVhbUFQSUVu
YWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIHdyaXRhYmxlU3RyZWFtQVBJRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNXcml0YWJsZVN0cmVhbUFQSUVuYWJsZWQ7IH0KICNlbmRpZgot
ICAgIAorCiAjaWYgRU5BQkxFKERPV05MT0FEX0FUVFJJQlVURSkKICAgICB2b2lkIHNldERvd25s
b2FkQXR0cmlidXRlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzRG93bmxvYWRBdHRyaWJ1
dGVFbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAgYm9vbCBkb3dubG9hZEF0dHJpYnV0ZUVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRG93bmxvYWRBdHRyaWJ1dGVFbmFibGVkOyB9CkBAIC0z
NTgsNyArMzYzLDcgQEAgcHVibGljOgogICAgIGJvb2wgdG91Y2hFdmVudHNFbmFibGVkKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRUb3VjaEV2ZW50c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV90
b3VjaEV2ZW50c0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgotICAgIAorCiAgICAgYm9v
bCByZWZlcnJlclBvbGljeUF0dHJpYnV0ZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3JlZmVy
cmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0UmVmZXJyZXJQb2xpY3lB
dHRyaWJ1dGVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1fcmVmZXJyZXJQb2xpY3lBdHRyaWJ1
dGVFbmFibGVkID0gaXNFbmFibGVkOyB9CiAKQEAgLTUzNCwxMSArNTM5LDE1IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICBib29sIG1faXNXZWJHTDJFbmFibGVkIHsgZmFsc2Ug
fTsKICNlbmRpZgotICAgIAorCiAjaWYgRU5BQkxFKFdFQkdQVSkKICAgICBib29sIG1faXNXZWJH
UFVFbmFibGVkIHsgZmFsc2UgfTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQkdMKSB8fCBFTkFC
TEUoV0VCR0wyKQorICAgIGJvb2wgbV9pc01hc2tXZWJHTFN0cmluZ3NFbmFibGVkIHsgZmFsc2Ug
fTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKERPV05MT0FEX0FUVFJJQlVURSkKICAgICBib29sIG1f
aXNEb3dubG9hZEF0dHJpYnV0ZUVuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBiNjRhMWY3ZDUyZjRjMDlmZmNmMjFh
MzM5MmVmMmQxNDY4Mzk1MDk1Li4wOTc5ZTJlMjVjMzI3NzE3N2EwM2MzZDc3NDhmZWQ1YzU2ZWE3
NTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1s
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTc3Miw3
ICs3NzIsNyBAQCBHYW1lcGFkc0VuYWJsZWQ6CiAgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjog
IldlYiBHYW1lcGFkIEFQSSBzdXBwb3J0IgogICB3ZWJjb3JlQmluZGluZzogUnVudGltZUVuYWJs
ZWRGZWF0dXJlcwogICBjb25kaXRpb246IEVOQUJMRShHQU1FUEFEKQotICAKKwogSGlnaGxpZ2h0
QVBJRW5hYmxlZDoKICAgICB0eXBlOiBib29sCiAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZQpAQCAt
MTM4OCw2ICsxMzg4LDE1IEBAIFdlYkdQVUVuYWJsZWQ6CiAgIHdlYmNvcmVCaW5kaW5nOiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzCiAgIGNvbmRpdGlvbjogRU5BQkxFKFdFQkdQVSkKIAorTWFza1dl
YkdMU3RyaW5nc0VuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgZGVmYXVsdFZhbHVlOiB0cnVlCisg
IGh1bWFuUmVhZGFibGVOYW1lOiAiTWFzayBXZWJHTCBTdHJpbmdzIgorICBodW1hblJlYWRhYmxl
RGVzY3JpcHRpb246ICJNYXNrIFdlYkdMIFZlbmRvciwgUmVuZGVyZXIsIFNoYWRlciBMYW5ndWFn
ZSBTdHJpbmdzIgorICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCisgIHdlYmNvcmVCaW5kaW5nOiBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzCisgIGNvbmRpdGlvbjogRU5BQkxFKFdFQkdMKSB8fCBFTkFC
TEUoV0VCR0wyKQorCiBBY2Nlc3NpYmlsaXR5T2JqZWN0TW9kZWxFbmFibGVkOgogICB0eXBlOiBi
b29sCiAgIGRlZmF1bHRWYWx1ZTogZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCmluZGV4IDU4MWM4
ZjA0ZGYxNjJiZDJmN2FkY2ZiNDEzYmMzMTc1MDlhMDc4NjYuLjNiZjI0ZTVkYTZlNjBkODYwNmFj
MzBiNGM5YjMzNDhjN2FiMmRkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaApAQCAtNiwxMyArNiwx
MyBAQAogICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLiAKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgogICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uIAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQogICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRApAQCAtMTIyLDYgKzEyMiw3IEBACiAjZGVmaW5lIFdlYktpdFdlYkdMMkVuYWJs
ZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViR0wyRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0V2Vi
R1BVRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRXZWJHUFVFbmFibGVkIgogI2RlZmluZSBX
ZWJLaXRGb3JjZVdlYkdMVXNlc0xvd1Bvd2VyUHJlZmVyZW5jZUtleSBAIldlYktpdEZvcmNlV2Vi
R0xVc2VzTG93UG93ZXIiCisjZGVmaW5lIFdlYktpdE1hc2tXZWJHTFN0cmluZ3NFbmFibGVkUHJl
ZmVyZW5jZUtleSBAIldlYktpdE1hc2tXZWJHTFN0cmluZ3NFbmFibGVkIgogI2RlZmluZSBXZWJL
aXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRBY2NlbGVy
YXRlZDJkQ2FudmFzRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0RnJhbWVGbGF0dGVuaW5nUHJlZmVy
ZW5jZUtleSBAIldlYktpdEZyYW1lRmxhdHRlbmluZyIKICNkZWZpbmUgV2ViS2l0QXN5bmNGcmFt
ZVNjcm9sbGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0QXN5bmNGcmFtZVNjcm9sbGlu
Z0VuYWJsZWQiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbQppbmRleCBkZjhhY2E3MGRkNGY2YjJlYjE4MmYyZDFlNTIxZjVhZjQ5YWU0ODhh
Li4zYjdlZmIxNTRhMTVjNDBhOWFlODNjY2Y3ZDk2NGQxYTZjZmFkZGMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTcsMTMg
KzcsMTMgQEAKICAqIGFyZSBtZXQ6CiAgKgogICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCiAgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4gCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKICAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
Ci0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKICAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKQEAgLTkwLDEwICs5MCwxMCBAQCBzdGF0aWMgV2ViQ2FjaGVNb2RlbCBj
YWNoZU1vZGVsRm9yTWFpbkJ1bmRsZSh2b2lkKQogICAgICAgICAvLyBBcHBzIHRoYXQgcHJvYmFi
bHkgbmVlZCB0aGUgc21hbGwgc2V0dGluZwogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3QgZG9jdW1lbnRWaWV3ZXJJRHNbXSA9IHsKICAgICAgICAgICAgICJNaWNyb3NvZnQvY29tLm1p
Y3Jvc29mdC5NZXNzZW5nZXIiLAotICAgICAgICAgICAgImNvbS5hZGl1bVguYWRpdW1YIiwgCisg
ICAgICAgICAgICAiY29tLmFkaXVtWC5hZGl1bVgiLAogICAgICAgICAgICAgImNvbS5hbGllbnRl
Y2hub2xvZ3kuUHJvdGV1cyIsCiAgICAgICAgICAgICAiY29tLmFwcGxlLkRhc2hjb2RlIiwKLSAg
ICAgICAgICAgICJjb20uYXBwbGUuaUNoYXQiLCAKKyAgICAgICAgICAgICJjb20uYXBwbGUuaUNo
YXQiLAogICAgICAgICAgICAgImNvbS5iYXJlYm9uZXMuYmJlZGl0IiwKICAgICAgICAgICAgICJj
b20uYmFyZWJvbmVzLnRleHR3cmFuZ2xlciIsCiAgICAgICAgICAgICAiY29tLmJhcmVib25lcy55
b2ppbWJvIiwKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgV2ViQ2FjaGVNb2RlbCBjYWNoZU1v
ZGVsRm9yTWFpbkJ1bmRsZSh2b2lkKQogICAgICAgICAgICAgImNvbS55YWhvby5tZXNzZW5nZXIz
IiwKICAgICAgICAgICAgICJkZS5jb2Rpbmdtb25rZXlzLlN1YkV0aGFFZGl0IiwKICAgICAgICAg
ICAgICJmaS5rYXJwcGluZW4uUHlybyIsCi0gICAgICAgICAgICAiaW5mby5jb2xsb3F1eSIsIAor
ICAgICAgICAgICAgImluZm8uY29sbG9xdXkiLAogICAgICAgICAgICAgImt1bmdmb28udHYuZWN0
byIsCiAgICAgICAgIH07CiAKQEAgLTIyOCwxMyArMjI4LDEzIEBAIHB1YmxpYzoKICAgICAvLyBD
cmVhdGUgZmFrZSBpZGVudGlmaWVyCiAgICAgc3RhdGljIGludCBpbnN0YW5jZUNvdW50ID0gMTsK
ICAgICBOU1N0cmluZyAqZmFrZUlkZW50aWZpZXI7Ci0gICAgCi0gICAgLy8gQXQgbGVhc3QgZW5z
dXJlIHRoYXQgaWRlbnRpZmllciBoYXNuJ3QgYmVlbiBhbHJlYWR5IHVzZWQuICAKKworICAgIC8v
IEF0IGxlYXN0IGVuc3VyZSB0aGF0IGlkZW50aWZpZXIgaGFzbid0IGJlZW4gYWxyZWFkeSB1c2Vk
LgogICAgIGZha2VJZGVudGlmaWVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJXZWJQ
cmVmZXJlbmNlcyVkIiwgaW5zdGFuY2VDb3VudCsrXTsKICAgICB3aGlsZSAoW1tzZWxmIGNsYXNz
XSBfZ2V0SW5zdGFuY2VGb3JJZGVudGlmaWVyOmZha2VJZGVudGlmaWVyXSl7CiAgICAgICAgIGZh
a2VJZGVudGlmaWVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJXZWJQcmVmZXJlbmNl
cyVkIiwgaW5zdGFuY2VDb3VudCsrXTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gW3NlbGYg
aW5pdFdpdGhJZGVudGlmaWVyOmZha2VJZGVudGlmaWVyXTsKIH0KIApAQCAtNTk2LDcgKzU5Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgQFlFUywgV2ViS2l0SGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1
c3BlbnNpb25FbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgQFlFUywgV2ViS2l0UmVuZGVy
aW5nVXBkYXRlVGhyb3R0bGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBATk8sIFdl
YktpdExvd1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkUHJlZmVyZW5jZUtleSwKLSAg
ICAgICAgCisKICAgICAgICAgQE5PLCBXZWJLaXRVc2VMZWdhY3lUZXh0QWxpZ25Qb3NpdGlvbmVk
RWxlbWVudEJlaGF2aW9yUHJlZmVyZW5jZUtleSwKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQog
ICAgICAgICBAWUVTLCBXZWJLaXRNZWRpYVNvdXJjZUVuYWJsZWRQcmVmZXJlbmNlS2V5LApAQCAt
NjQzLDYgKzY0Myw5IEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIEVOQUJMRShXRUJHUFUpCiAgICAg
ICAgIEBOTywgV2ViS2l0V2ViR1BVRW5hYmxlZFByZWZlcmVuY2VLZXksCisjZW5kaWYKKyNpZiBF
TkFCTEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHTDIpCisgICAgICAgIEBZRVMsIFdlYktpdE1hc2tX
ZWJHTFN0cmluZ3NFbmFibGVkUHJlZmVyZW5jZUtleSwKICNlbmRpZgogICAgICAgICBATk8sIFdl
YktpdENhY2hlQVBJRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIEBZRVMsIFdlYktpdEZl
dGNoQVBJRW5hYmxlZFByZWZlcmVuY2VLZXksCkBAIC05NjksNyArOTcyLDcgQEAgcHVibGljOgog
ICAgIHJldHVybiBbc2VsZiBfc3RyaW5nVmFsdWVGb3JLZXk6IFdlYktpdFNlcmlmRm9udFByZWZl
cmVuY2VLZXldOwogfQogCi0tICh2b2lkKXNldFNlcmlmRm9udEZhbWlseTooTlNTdHJpbmcgKilm
YW1pbHkgCistICh2b2lkKXNldFNlcmlmRm9udEZhbWlseTooTlNTdHJpbmcgKilmYW1pbHkKIHsK
ICAgICBbc2VsZiBfc2V0U3RyaW5nVmFsdWU6IGZhbWlseSBmb3JLZXk6IFdlYktpdFNlcmlmRm9u
dFByZWZlcmVuY2VLZXldOwogfQpAQCAtMTA2OCw3ICsxMDcxLDcgQEAgcHVibGljOgogLSAoTlNV
UkwgKil1c2VyU3R5bGVTaGVldExvY2F0aW9uCiB7CiAgICAgTlNTdHJpbmcgKmxvY2F0aW9uU3Ry
aW5nID0gW3NlbGYgX3N0cmluZ1ZhbHVlRm9yS2V5OiBXZWJLaXRVc2VyU3R5bGVTaGVldExvY2F0
aW9uUHJlZmVyZW5jZUtleV07Ci0gICAgCisKICAgICBpZiAoW2xvY2F0aW9uU3RyaW5nIF93ZWJr
aXRfbG9va3NMaWtlQWJzb2x1dGVVUkxdKSB7CiAgICAgICAgIHJldHVybiBbTlNVUkwgX3dlYl9V
UkxXaXRoRGF0YUFzU3RyaW5nOmxvY2F0aW9uU3RyaW5nXTsKICAgICB9IGVsc2UgewpAQCAtMTA4
MCw3ICsxMDgzLDcgQEAgcHVibGljOgogLSAodm9pZClzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9u
OihOU1VSTCAqKVVSTAogewogICAgIE5TU3RyaW5nICpsb2NhdGlvblN0cmluZzsKLSAgICAKKwog
ICAgIGlmIChbVVJMIGlzRmlsZVVSTF0pIHsKICAgICAgICAgbG9jYXRpb25TdHJpbmcgPSBbW1VS
TCBwYXRoXSBfd2ViX3N0cmluZ0J5QWJicmV2aWF0aW5nV2l0aFRpbGRlSW5QYXRoXTsKICAgICB9
IGVsc2UgewpAQCAtMTEwMSw3ICsxMTA0LDcgQEAgcHVibGljOgogLy8gaW4gdXNlIGRpc3BsYXkg
d2ViIGNvbnRlbnQgaW4gYSBzdHJhaWdodGZvcndhcmQgbWFubmVyLiBIb3dldmVyLCBpdCBpcwog
Ly8gd3JvbmcgZm9yIGlPUywgd2hlcmUgV2ViVmlld3MgYXJlIHVzZWQgZm9yIHZhcmlvdXMgcHVy
cG9zZXMsIGxpa2UKIC8vIHRleHQgZWRpdGluZywgdGV4dCByZW5kZXJpbmcsIGFuZCBkaXNwbGF5
aW5nIHdlYiBjb250ZW50LgotLy8gCisvLwogLy8gSSBoYXZlIGNoYW5nZWQgdGhlIHVzZXIgc3R5
bGUgc2hlZXQgbWVjaGFuaXNtIHRvIGJlIGEgcGVyLVdlYlZpZXcKIC8vIHNldHRpbmcsIHJhdGhl
ciB0aGFuIGEgcGVyLXByb2Nlc3MgcHJlZmVyZW5jZS4gVGhpcyBzZWVtcyB0byBnaXZlIHRoZQog
Ly8gYmVoYXZpb3Igd2Ugd2FudCBmb3IgaU9TLgpAQCAtMTgwNiw3ICsxODA5LDcgQEAgcHVibGlj
OgogICAgICAgICAvLyBlbnN1cmUgdGhhdCBhIHZhbGlkIHJlc3VsdCBpcyByZXR1cm5lZAogICAg
ICAgICB2YWx1ZSA9IFdlYktpdEVkaXRhYmxlTGlua0RlZmF1bHRCZWhhdmlvcjsKICAgICB9Ci0g
ICAgCisKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTE4OTAsNyArMTg5Myw3IEBAIHB1Ymxp
YzoKIAogICAgIGlmICghaWRlbnQpCiAgICAgICAgIHJldHVybiBfc3RhbmRhcmRQcmVmZXJlbmNl
czsKLSAgICAKKwogICAgIFdlYlByZWZlcmVuY2VzICppbnN0YW5jZSA9IFt3ZWJQcmVmZXJlbmNl
c0luc3RhbmNlcyBvYmplY3RGb3JLZXk6W3NlbGYgX2NvbmNhdGVuYXRlS2V5V2l0aElCQ3JlYXRv
cklEOmlkZW50XV07CiAKICAgICByZXR1cm4gaW5zdGFuY2U7CkBAIC0yMjA0LDYgKzIyMDcsMTYg
QEAgc3RhdGljIE5TU3RyaW5nICpjbGFzc0lCQ3JlYXRvcklEID0gbmlsOwogICAgIFtzZWxmIF9z
ZXRCb29sVmFsdWU6ZW5hYmxlZCBmb3JLZXk6V2ViS2l0V2ViR1BVRW5hYmxlZFByZWZlcmVuY2VL
ZXldOwogfQogCistIChCT09MKW1hc2tXZWJHTFN0cmluZ3NFbmFibGVkCit7CisgICAgcmV0dXJu
IFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0TWFza1dlYkdMU3RyaW5nc0VuYWJsZWRQcmVm
ZXJlbmNlS2V5XTsKK30KKworLSAodm9pZClzZXRNYXNrV2ViR0xTdHJpbmdzRW5hYmxlZDooQk9P
TCllbmFibGVkCit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJL
aXRNYXNrV2ViR0xTdHJpbmdzRW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCiAtIChCT09MKWFj
Y2VsZXJhdGVkMmRDYW52YXNFbmFibGVkCiB7CiAgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVG
b3JLZXk6V2ViS2l0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWRQcmVmZXJlbmNlS2V5XTsKQEAg
LTI2NDQsNyArMjY1Nyw3IEBAIHN0YXRpYyBOU1N0cmluZyAqY2xhc3NJQkNyZWF0b3JJRCA9IG5p
bDsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHN0b3JhZ2VCbG9ja2lu
Z1BvbGljeSA9IFdlYkJsb2NrQWxsU3RvcmFnZTsKICAgICAgICAgYnJlYWs7Ci0gICAgfSAgICAK
KyAgICB9CiAKICAgICBbc2VsZiBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3k6c3RvcmFnZUJsb2Nr
aW5nUG9saWN5XTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDIzMDM3NWFiMTZmM2M0NWQ1OWE3ZjBm
NjUwM2VlNjAzMWI5ODgzOTYuLmQwZGI4ZGMwNTQ3ZjEyN2Y4NTIwNzA0Y2ZjMmQ4YzI3NzE5MTVl
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtNiwxMyArNiwxMyBAQAogICogYXJlIG1ldDoKICAqCiAg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAog
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgogICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgogICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
ICAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRApAQCAtMjg0LDYgKzI4
NCw5IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViUHJlZmVyZW5jZXNDYWNoZU1vZGVsQ2hhbmdlZElu
dGVybmFsTm90aWZpY2F0aW9uIFdFQktJVF9ERVBSCiAtIChCT09MKXdlYkdQVUVuYWJsZWQ7CiAt
ICh2b2lkKXNldFdlYkdQVUVuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKIAorLSAoQk9PTCltYXNrV2Vi
R0xTdHJpbmdzRW5hYmxlZDsKKy0gKHZvaWQpc2V0TWFza1dlYkdMU3RyaW5nc0VuYWJsZWQ6KEJP
T0wpZW5hYmxlZDsKKwogLSAoQk9PTClhY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZDsKIC0gKHZv
aWQpc2V0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKIApAQCAtNDE3
LDcgKzQyMCw3IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViUHJlZmVyZW5jZXNDYWNoZU1vZGVsQ2hh
bmdlZEludGVybmFsTm90aWZpY2F0aW9uIFdFQktJVF9ERVBSCiAtICh2b2lkKWRpZFJlbW92ZUZy
b21XZWJWaWV3OwogCiAvLyBGdWxsIHNjcmVlbiBzdXBwb3J0IGlzIGRlcGVuZGVudCBvbiBXZWJD
b3JlL1dlYktpdCBiZWluZwotLy8gY29tcGlsZWQgd2l0aCBFTkFCTEVfRlVMTFNDUkVFTl9BUEku
IAorLy8gY29tcGlsZWQgd2l0aCBFTkFCTEVfRlVMTFNDUkVFTl9BUEkuCiAtICh2b2lkKXNldEZ1
bGxTY3JlZW5FbmFibGVkOihCT09MKWZsYWc7CiAtIChCT09MKWZ1bGxTY3JlZW5FbmFibGVkOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMjJhODgw
NGJjMGE2NDY0ODkxMTgwN2ZiOWMxYzc3MTM4MDJmMjM3NC4uNTMzNDhhZTQ0ZDQ2YTJmMDM1Y2I0
Nzc3MjVlMDRkZjU1N2JlZWVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQpAQCAtOCwxMyArOCwxMyBAQAogICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgogICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRApAQCAtNjg4LDExICs2ODgsMTEgQEAg
cHJpdmF0ZToKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICAKKwogICAgIF9kYXRhSW50ZXJhY3Rpb25JbWFnZSA9IFtQQUw6OmFsbG9j
VUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmltYWdlIHNjYWxlOnNjYWxlIG9yaWVu
dGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF07CiAgICAgX3NlbGVjdGlvblJl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBpbmRpY2F0b3JEYXRhLnNlbGVjdGlvblJlY3RJblJv
b3RWaWV3Q29vcmRpbmF0ZXM7CiAgICAgX3RleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXMgPSBpbmRpY2F0b3JEYXRhLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0
ZXM7Ci0gICAgCisKICAgICBOU011dGFibGVBcnJheSAqdGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RD
b29yZGluYXRlcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAgICAgZm9yIChhdXRvIHJlY3Qg
OiBpbmRpY2F0b3JEYXRhLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMpCiAgICAg
ICAgIFt0ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzIGFkZE9iamVjdDpbTlNWYWx1
ZSB2YWx1ZVdpdGhDR1JlY3Q6cmVjdF1dOwpAQCAtNzIxLDkgKzcyMSw5IEBAIHByaXZhdGU6CiB7
CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgCisKICAgICBfZGF0YUludGVyYWN0aW9uSW1hZ2UgPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0
YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbWFnZSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUlt
YWdlT3JpZW50YXRpb25Eb3duTWlycm9yZWRdOwotICAgIAorCiAgICAgcmV0dXJuIHNlbGY7CiB9
CiAKQEAgLTEzNTMsNyArMTM1Myw3IEBAIHN0YXRpYyB2b2lkIFdlYktpdEluaXRpYWxpemVHYW1l
cGFkUHJvdmlkZXJJZk5lY2Vzc2FyeSgpCiAjaWZuZGVmIE5ERUJVRwogICAgIFdURjo6UmVmQ291
bnRlZExlYWtDb3VudGVyOjpzdXBwcmVzc01lc3NhZ2VzKHdlYlZpZXdJc09wZW4pOwogI2VuZGlm
Ci0gICAgCisKICAgICBXZWJQcmVmZXJlbmNlcyAqc3RhbmRhcmRQcmVmZXJlbmNlcyA9IFtXZWJQ
cmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXTsKICAgICBbc3RhbmRhcmRQcmVmZXJlbmNl
cyB3aWxsQWRkVG9XZWJWaWV3XTsKIApAQCAtMTQxMCw3ICsxNDEwLDcgQEAgc3RhdGljIHZvaWQg
V2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRlcklmTmVjZXNzYXJ5KCkKICNlbmRpZgogICAg
ICAgICBbV2ViRGF0YWJhc2VNYW5hZ2VyIHNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlcl07CiAKLSNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKSAgICAgICAgCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAgICAgaWYgKFtzdGFuZGFyZFByZWZlcmVuY2VzIHN0b3JhZ2VUcmFja2VyRW5hYmxlZF0p
CiAjZW5kaWYKICAgICAgICAgV2ViS2l0SW5pdGlhbGl6ZVN0b3JhZ2VJZk5lY2Vzc2FyeSgpOwpA
QCAtMTUzOCwxMCArMTUzOCwxMCBAQCBzdGF0aWMgdm9pZCBXZWJLaXRJbml0aWFsaXplR2FtZXBh
ZFByb3ZpZGVySWZOZWNlc3NhcnkoKQogICAgICAgICBbc2VsZiBzY2hlZHVsZUluUnVuTG9vcDpy
dW5Mb29wIGZvck1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGVdOwogCiAgICAgW3NlbGYgX2FkZFRv
QWxsV2ViVmlld3NTZXRdOwotICAgIAorCiAgICAgLy8gSWYgdGhlcmUncyBhbHJlYWR5IGEgbmV4
dCBrZXkgdmlldyAoZS5nLiwgZnJvbSBhIG5pYiksIHdpcmUgaXQgdXAgdG8gb3VyCiAgICAgLy8g
Y29udGFpbmVkIGZyYW1lIHZpZXcuIEluIGFueSBjYXNlLCB3aXJlIG91ciBuZXh0IGtleSB2aWV3
IHVwIHRvIHRoZSBvdXIKLSAgICAvLyBjb250YWluZWQgZnJhbWUgdmlldy4gVGhpcyB3b3JrcyB0
b2dldGhlciB3aXRoIG91ciBiZWNvbWVGaXJzdFJlc3BvbmRlciAKKyAgICAvLyBjb250YWluZWQg
ZnJhbWUgdmlldy4gVGhpcyB3b3JrcyB0b2dldGhlciB3aXRoIG91ciBiZWNvbWVGaXJzdFJlc3Bv
bmRlcgogICAgIC8vIGFuZCBzZXROZXh0S2V5VmlldyBvdmVycmlkZXMuCiAgICAgTlNWaWV3ICpu
ZXh0S2V5VmlldyA9IFtzZWxmIG5leHRLZXlWaWV3XTsKICAgICBpZiAobmV4dEtleVZpZXcgJiYg
bmV4dEtleVZpZXcgIT0gZnJhbWVWaWV3KQpAQCAtMTY3OSwxNyArMTY3OSwxNyBAQCBzdGF0aWMg
dm9pZCBXZWJLaXRJbml0aWFsaXplR2FtZXBhZFByb3ZpZGVySWZOZWNlc3NhcnkoKQogICAgIHNl
bGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZV07CiAgICAgaWYgKCFzZWxmKQogICAgICAg
ICByZXR1cm4gbmlsOwotICAgIAorCiAgICAgX3ByaXZhdGUgPSBbW1dlYlZpZXdQcml2YXRlIGFs
bG9jXSBpbml0XTsKLSAgICAKKwogI2lmbmRlZiBOREVCVUcKICAgICBXVEY6OlJlZkNvdW50ZWRM
ZWFrQ291bnRlcjo6c3VwcHJlc3NNZXNzYWdlcyh3ZWJWaWV3SXNPcGVuKTsKICNlbmRpZgotICAg
IAorCiAgICAgaWYgKCFwcmVmZXJlbmNlcykKICAgICAgICAgcHJlZmVyZW5jZXMgPSBbV2ViUHJl
ZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc107CiAgICAgW3ByZWZlcmVuY2VzIHdpbGxBZGRU
b1dlYlZpZXddOwotICAgIAorCiAgICAgX3ByaXZhdGUtPnByZWZlcmVuY2VzID0gW3ByZWZlcmVu
Y2VzIHJldGFpbl07CiAgICAgX3ByaXZhdGUtPm1haW5GcmFtZURvY3VtZW50UmVhZHkgPSBOTzsK
ICAgICBfcHJpdmF0ZS0+ZHJhd3NCYWNrZ3JvdW5kID0gWUVTOwpAQCAtMTczNiw5ICsxNzM2LDkg
QEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRlcklmTmVjZXNzYXJ5
KCkKIAogICAgIF9wcml2YXRlLT5wYWdlID0gbmV3IFdlYkNvcmU6OlBhZ2UoV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbikpOwogICAgIHN0b3JhZ2VQcm92aWRlci0+c2V0UGFnZSgqX3ByaXZhdGUt
PnBhZ2UpOwotICAgIAorCiAgICAgW3NlbGYgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkOllF
U107Ci0gICAgCisKICAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzY4NTE0NTE+IFNob3Vs
ZCByZXNwZWN0IHByZWZlcmVuY2VzIGluIGZhc3QgcGF0aCBXZWJWaWV3IGluaXRpYWxpemF0aW9u
CiAgICAgLy8gV2UgYXJlIGlnbm9yaW5nIHRoZSBwcmVmZXJlbmNlcyBvYmplY3Qgb24gZmFzdCBw
YXRoIGFuZCBqdXN0IHVzaW5nIFNldHRpbmdzIGRlZmF1bHRzIChldmVyeXRoaW5nIGZhbmN5IG9m
ZikuCiAgICAgLy8gVGhpcyBtYXRjaGVzIGhvdyBVSUtpdCBzZXRzIHVwIHRoZSBwcmVmZXJlbmNl
cy4gV2UgbmVlZCB0byBzZXQgIGRlZmF1bHQgdmFsdWVzIGZvciBmb250cyB0aG91Z2gsIDxyZGFy
Oi8vcHJvYmxlbS82ODUwNjExPi4KQEAgLTE3NDgsMTYgKzE3NDgsMTYgQEAgc3RhdGljIHZvaWQg
V2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRlcklmTmVjZXNzYXJ5KCkKICAgICBfcHJpdmF0
ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZSgxMyk7CiAgICAgX3By
aXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChbcHJl
ZmVyZW5jZXMgYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZF0pOwogICAgIF9wcml2YXRlLT5wYWdl
LT5zZXR0aW5ncygpLnNldERpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGRp
c3BsYXlMaXN0RHJhd2luZ0VuYWJsZWRdKTsKLSAgICAKKwogICAgIF9wcml2YXRlLT5wYWdlLT5z
ZXR0aW5ncygpLnNldEZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyh0cnVlKTsKICAgICBf
cHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgiQXBwbGVD
b2xvckVtb2ppIik7Ci0gICAgCisKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRT
Y3JpcHRNYXJrdXBFbmFibGVkKGZhbHNlKTsKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3Mo
KS5zZXRTY3JpcHRFbmFibGVkKHRydWUpOwotICAgIAorCiAgICAgLy8gRklYTUU6IHRoaXMgaXMg
YSB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vMTE1MTg2ODg+IFJFR1JFU1NJT046IFF1
b3RlZCB0ZXh0IGZvbnQgY2hhbmdlcyB3aGVuIHJlcGx5aW5nIHRvIGNlcnRhaW4gZW1haWwKICAg
ICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoW19wcml2
YXRlLT5wcmVmZXJlbmNlcyBzdGFuZGFyZEZvbnRGYW1pbHldKTsKLSAgICAKKwogICAgIC8vIEZJ
WE1FOiB0aGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzExODIwMDkwPiBR
dW90ZWQgdGV4dCBjaGFuZ2VzIGluIHNpemUgd2hlbiByZXBseWluZyB0byBjZXJ0YWluIGVtYWls
CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0TWluaW11bUZvbnRTaXplKFtfcHJp
dmF0ZS0+cHJlZmVyZW5jZXMgbWluaW11bUZvbnRTaXplXSk7CiAKQEAgLTE3NjksMTkgKzE3Njks
MTkgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRlcklmTmVjZXNz
YXJ5KCkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBfcHJpdmF0ZS0+cGFnZS0+
c2V0UmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQoaXNJbnRlcm5hbEluc3RhbGwoKSk7CiAjZW5kaWYK
LSAgICAKKwogICAgIFtzZWxmIF91cGRhdGVTY3JlZW5TY2FsZUZyb21XaW5kb3ddOwogICAgIFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxl
Y3RvcjpAc2VsZWN0b3IoX3dha1dpbmRvd1NjcmVlblNjYWxlQ2hhbmdlZDopIG5hbWU6V0FLV2lu
ZG93U2NyZWVuU2NhbGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAgICAgW1tO
U05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVj
dG9yOkBzZWxlY3Rvcihfd2FrV2luZG93VmlzaWJpbGl0eUNoYW5nZWQ6KSBuYW1lOldBS1dpbmRv
d1Zpc2liaWxpdHlEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAKICAgICBbV2Vi
RnJhbWUgX2NyZWF0ZU1haW5GcmFtZVdpdGhTaW1wbGVIVE1MRG9jdW1lbnRXaXRoUGFnZTpfcHJp
dmF0ZS0+cGFnZSBmcmFtZVZpZXc6ZnJhbWVWaWV3IHN0eWxlOnN0eWxlXTsKLSAgICAKKwogICAg
IFtzZWxmIF9hZGRUb0FsbFdlYlZpZXdzU2V0XTsKLSAgICAKKwogICAgICsrV2ViVmlld0NvdW50
OwotICAgIAorCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnNldExvY2FsTG9hZFBvbGlj
eShXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxBbmRTdWJz
dGl0dXRlRGF0YSk7Ci0gICAgCisKICAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnNldEF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZChzZWxmLnByZWZl
cmVuY2VzLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCk7CiAKICAgICByZXR1cm4gc2VsZjsKQEAg
LTIwMzUsNyArMjAzNSw3IEBAIHN0YXRpYyB2b2lkIFdlYktpdEluaXRpYWxpemVHYW1lcGFkUHJv
dmlkZXJJZk5lY2Vzc2FyeSgpCiBzdGF0aWMgTlNNdXRhYmxlU2V0ICprbm93blBsdWdpbk1JTUVU
eXBlcygpCiB7CiAgICAgc3RhdGljIE5TTXV0YWJsZVNldCAqbWltZVR5cGVzID0gW1tOU011dGFi
bGVTZXQgYWxsb2NdIGluaXRdOwotICAgIAorCiAgICAgcmV0dXJuIG1pbWVUeXBlczsKIH0KIApA
QCAtMjA3NSw3ICsyMDc1LDcgQEAgc3RhdGljIE5TTXV0YWJsZVNldCAqa25vd25QbHVnaW5NSU1F
VHlwZXMoKQogICAgICAgICB2aWV3Q2xhc3MgPSBbW1dlYkZyYW1lVmlldyBfdmlld1R5cGVzQWxs
b3dJbWFnZVR5cGVPbWlzc2lvbjpOT10gX3dlYmtpdF9vYmplY3RGb3JNSU1FVHlwZTpNSU1FVHlw
ZV07CiAgICAgICAgIHJlcENsYXNzID0gW1tXZWJEYXRhU291cmNlIF9yZXBUeXBlc0FsbG93SW1h
Z2VUeXBlT21pc3Npb246Tk9dIF93ZWJraXRfb2JqZWN0Rm9yTUlNRVR5cGU6TUlNRVR5cGVdOwog
ICAgIH0KLSAgICAKKwogICAgIGlmICh2aWV3Q2xhc3MgJiYgcmVwQ2xhc3MpIHsKICAgICAgICAg
aWYgKHZpZXdDbGFzcyA9PSBbV2ViSFRNTFZpZXcgY2xhc3NdICYmIHJlcENsYXNzID09IFtXZWJI
VE1MUmVwcmVzZW50YXRpb24gY2xhc3NdKSB7CiAgICAgICAgICAgICAvLyBTcGVjaWFsLWNhc2Ug
V2ViSFRNTFZpZXcgZm9yIHRleHQgdHlwZXMgdGhhdCBzaG91bGRuJ3QgYmUgc2hvd24uCkBAIC0y
MDg2LDcgKzIwODYsNyBAQCBzdGF0aWMgTlNNdXRhYmxlU2V0ICprbm93blBsdWdpbk1JTUVUeXBl
cygpCiAgICAgICAgICAgICBpZiAoIWFsbG93UGx1Z2lucyAmJiBba25vd25QbHVnaW5NSU1FVHlw
ZXMoKSBjb250YWluc09iamVjdDpNSU1FVHlwZV0pIHsKICAgICAgICAgICAgICAgICBCT09MIGlz
U3VwcG9ydGVkQnlXZWJLaXQgPSBbW1dlYkhUTUxWaWV3IHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5
cGVzXSBjb250YWluc09iamVjdDpNSU1FVHlwZV0gfHwKICAgICAgICAgICAgICAgICAgICAgW1tX
ZWJIVE1MVmlldyBzdXBwb3J0ZWRNSU1FVHlwZXNdIGNvbnRhaW5zT2JqZWN0Ok1JTUVUeXBlXTsK
LSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBrbm93
biBwbHVnLWluIE1JTUUgdHlwZSBhbmQgV2ViS2l0IGNhbid0IHNob3cgaXQgbmF0aXZlbHksIHdl
IGRvbid0IHdhbnQgdG8gc2hvdyBpdC4KICAgICAgICAgICAgICAgICBpZiAoIWlzU3VwcG9ydGVk
QnlXZWJLaXQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOTzsKQEAgLTIwOTgsNyArMjA5
OCw3IEBAIHN0YXRpYyBOU011dGFibGVTZXQgKmtub3duUGx1Z2luTUlNRVR5cGVzKCkKICAgICAg
ICAgICAgICpyQ2xhc3MgPSByZXBDbGFzczsKICAgICAgICAgcmV0dXJuIFlFUzsKICAgICB9Ci0g
ICAgCisKICAgICByZXR1cm4gTk87CiB9CiAKQEAgLTIyNjEsNyArMjI2MSw3IEBAIHN0YXRpYyBO
U011dGFibGVTZXQgKmtub3duUGx1Z2luTUlNRVR5cGVzKCkKICAgICAvLyBDbG9zZSBib3RoIHNl
dHMgb2YgcGx1Zy1pbiBkYXRhYmFzZXMgYmVjYXVzZSBwbHVnLWlucyBuZWVkIGFuIG9wcG9ydHVu
aXR5IHRvIGNsZWFuIHVwIGZpbGVzLCBldGMuCiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICAvLyBVbmxvYWQgdGhlIFdlYlZpZXcgbG9jYWwgcGx1Zy1pbiBkYXRhYmFzZS4gCisgICAg
Ly8gVW5sb2FkIHRoZSBXZWJWaWV3IGxvY2FsIHBsdWctaW4gZGF0YWJhc2UuCiAgICAgaWYgKF9w
cml2YXRlLT5wbHVnaW5EYXRhYmFzZSkgewogICAgICAgICBbX3ByaXZhdGUtPnBsdWdpbkRhdGFi
YXNlIGRlc3Ryb3lBbGxQbHVnaW5JbnN0YW5jZVZpZXdzXTsKICAgICAgICAgW19wcml2YXRlLT5w
bHVnaW5EYXRhYmFzZSBjbG9zZV07CkBAIC0yMjY5LDEzICsyMjY5LDEzIEBAIHN0YXRpYyBOU011
dGFibGVTZXQgKmtub3duUGx1Z2luTUlNRVR5cGVzKCkKICAgICAgICAgX3ByaXZhdGUtPnBsdWdp
bkRhdGFiYXNlID0gbmlsOwogICAgIH0KICNlbmRpZgotICAgIAorCiAgICAgLy8gS2VlcCB0aGUg
Z2xvYmFsIHBsdWctaW4gZGF0YWJhc2UgYWN0aXZlIHVudGlsIHRoZSBhcHAgdGVybWluYXRlcyB0
byBhdm9pZCBoYXZpbmcgdG8gcmVsb2FkIHBsdWctaW4gYnVuZGxlcy4KICAgICBpZiAoIXBsdWdp
bkRhdGFiYXNlQ2xpZW50Q291bnQgJiYgYXBwbGljYXRpb25Jc1Rlcm1pbmF0aW5nKQogICAgICAg
ICBbV2ViUGx1Z2luRGF0YWJhc2UgY2xvc2VTaGFyZWREYXRhYmFzZV07CiB9CiAKLS0gKHZvaWQp
X2Nsb3NlV2l0aEZhc3RUZWFyZG93biAKKy0gKHZvaWQpX2Nsb3NlV2l0aEZhc3RUZWFyZG93bgog
ewogI2lmbmRlZiBOREVCVUcKICAgICBXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlcjo6c3VwcHJl
c3NNZXNzYWdlcygiQXQgbGVhc3Qgb25lIFdlYlZpZXcgd2FzIGNsb3NlZCB3aXRoIGZhc3QgdGVh
cmRvd24uIik7CkBAIC0yMzIwLDcgKzIzMjAsNyBAQCBzdGF0aWMgYm9vbCBmYXN0RG9jdW1lbnRU
ZWFyZG93bkVuYWJsZWQoKQogCiAgICAgLy8gRml4IGZvciBwcm9ibGVtcyBzdWNoIGFzIDxyZGFy
Oi8vcHJvYmxlbS81Nzc0NTg3PiBDcmFzaCBjbG9zaW5nIHRhYiBpbiBXZWJDb3JlOjpGcmFtZTo6
cGFnZSgpIGZyb20gLVtXZWJDb3JlRnJhbWVCcmlkZ2UgcGF1c2VUaW1lb3V0c10KICAgICBXZWJU
aHJlYWRSdW4oXnsKLSNlbmRpZiAgICAgICAgICAgIAorI2VuZGlmCiAKICAgICBpZiAoIV9wcml2
YXRlIHx8IF9wcml2YXRlLT5jbG9zZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI0MjgsNyArMjQy
OCw3IEBAIHN0YXRpYyBib29sIGZhc3REb2N1bWVudFRlYXJkb3duRW5hYmxlZCgpCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGaXggZm9yIHByb2JsZW1zIHN1Y2ggYXMgPHJkYXI6
Ly9wcm9ibGVtLzU3NzQ1ODc+IENyYXNoIGNsb3NpbmcgdGFiIGluIFdlYkNvcmU6OkZyYW1lOjpw
YWdlKCkgZnJvbSAtW1dlYkNvcmVGcmFtZUJyaWRnZSBwYXVzZVRpbWVvdXRzXQogICAgIH0pOwot
I2VuZGlmICAgICAgICAgICAgCisjZW5kaWYKIH0KIAogLy8gSW5kaWNhdGVzIGlmIHRoZSBXZWJW
aWV3IGlzIGluIHRoZSBtaWRzdCBvZiBhIHVzZXIgZ2VzdHVyZS4KQEAgLTI0NzAsNyArMjQ3MCw3
IEBAIHN0YXRpYyBib29sIGZhc3REb2N1bWVudFRlYXJkb3duRW5hYmxlZCgpCiAtIChXZWJEb3du
bG9hZCAqKV9kb3dubG9hZFVSTDooTlNVUkwgKilVUkwKIHsKICAgICBBU1NFUlQoVVJMKTsKLSAg
ICAKKwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBp
bml0V2l0aFVSTDpVUkxdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAg
ICBXZWJEb3dubG9hZCAqZG93bmxvYWQgPSBbV2ViRG93bmxvYWQgX2Rvd25sb2FkV2l0aFJlcXVl
c3Q6cmVxdWVzdCBkZWxlZ2F0ZTpfcHJpdmF0ZS0+ZG93bmxvYWREZWxlZ2F0ZSBkaXJlY3Rvcnk6
bmlsXTsKQEAgLTI2NjQsMTAgKzI2NjQsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+cGFnZSkKICAgICAgICAgcmV0dXJuOwotICAg
IAorCiAgICAgaWYgKCFvdGhlclZpZXctPl9wcml2YXRlLT5wYWdlKQogICAgICAgICByZXR1cm47
Ci0gICAgCisKICAgICAvLyBJdCB0dXJucyBvdXQgdGhlIHJpZ2h0IGNvbWJpbmF0aW9uIG9mIGJl
aGF2aW9yIGlzIGRvbmUgd2l0aCB0aGUgYmFjay9mb3J3YXJkIGxvYWQKICAgICAvLyB0eXBlLiAg
KFNlZSBiZWhhdmlvciBtYXRyaXggYXQgdGhlIHRvcCBvZiBXZWJGcmFtZVByaXZhdGUuKSAgU28g
d2UgY29weSBhbGwgdGhlIGl0ZW1zCiAgICAgLy8gaW4gdGhlIGJhY2sgZm9yd2FyZCBsaXN0LCBh
bmQgZ28gdG8gdGhlIGN1cnJlbnQgb25lLgpAQCAtMjY3OCw3ICsyNjc4LDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXV0byYgb3RoZXJCYWNrRm9yd2FyZCA9IG90
aGVyVmlldy0+X3ByaXZhdGUtPnBhZ2UtPmJhY2tGb3J3YXJkKCk7CiAgICAgaWYgKCFvdGhlckJh
Y2tGb3J3YXJkLmN1cnJlbnRJdGVtKCkpCiAgICAgICAgIHJldHVybjsgLy8gZW1wdHkgYmFjayBm
b3J3YXJkIGxpc3QsIGJhaWwKLSAgICAKKwogICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBuZXdJ
dGVtVG9Hb1RvID0gbnVsbHB0cjsKIAogICAgIGludCBsYXN0SXRlbUluZGV4ID0gb3RoZXJCYWNr
Rm9yd2FyZC5mb3J3YXJkQ291bnQoKTsKQEAgLTI2OTAsNyArMjY5MCw3IEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgb3RoZXJWaWV3LT5fcHJpdmF0ZS0+
cGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9yeSgpLnNhdmVEb2N1bWVudEFuZFNjcm9s
bFN0YXRlKCk7CiAgICAgICAgIH0KICAgICAgICAgUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBu
ZXdJdGVtID0gb3RoZXJCYWNrRm9yd2FyZC5pdGVtQXRJbmRleChpKS0+Y29weSgpOwotICAgICAg
ICBpZiAoaSA9PSAwKSAKKyAgICAgICAgaWYgKGkgPT0gMCkKICAgICAgICAgICAgIG5ld0l0ZW1U
b0dvVG8gPSBuZXdJdGVtLnB0cigpOwogICAgICAgICBiYWNrRm9yd2FyZC5jbGllbnQoKS5hZGRJ
dGVtKFdURk1vdmUobmV3SXRlbSkpOwogICAgIH0KQEAgLTI3NzIsNyArMjc3Miw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogLSAoQk9PTClfbmVlZHNJc0xvYWRpbmdJbkFQ
SVNlbnNlUXVpcmsKIHsKICAgICBzdGF0aWMgQk9PTCBuZWVkc1F1aXJrID0gX0NGQXBwVmVyc2lv
bkNoZWNrTGVzc1RoYW4oQ0ZTVFIoImNvbS5hcHBsZS5pQWRQcm9kdWNlciIpLCAtMSwgMi4xKTsK
LSAgICAKKwogICAgIHJldHVybiBuZWVkc1F1aXJrOwogfQogCkBAIC0yNzk2LDE3ICsyNzk2LDE3
IEBAIHN0YXRpYyBib29sIG5lZWRzU2VsZlJldGFpbldoaWxlTG9hZGluZ1F1aXJrKCkKICNlbmRp
ZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAoQk9PTClfbmVlZHNQcmVIVE1MNVBhcnNl
clF1aXJrcwoteyAgICAKK3sKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBBT0wg
SW5zdGFudCBNZXNzZW5nZXIgYW5kIE1pY3Jvc29mdCBNeSBEYXkgY29udGFpbiBtYXJrdXAgaW5j
b21wYXRpYmxlCiAgICAgLy8gd2l0aCB0aGUgbmV3IEhUTUw1IHBhcnNlci4gSWYgdGhlc2UgYXBw
bGljYXRpb25zIHdlcmUgbGlua2VkIGFnYWluc3QgYQogICAgIC8vIHZlcnNpb24gb2YgV2ViS2l0
IHByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIEhUTUw1IHBhcnNlciwgZW5hYmxlCi0g
ICAgLy8gcGFyc2VyIHF1aXJrcyB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5LiBGb3IgZGV0YWls
cywgc2VlIAorICAgIC8vIHBhcnNlciBxdWlya3MgdG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eS4g
Rm9yIGRldGFpbHMsIHNlZQogICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDYxMzQ+IGFuZAogICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDYzMzQ+LgogICAgIHN0YXRpYyBib29sIGlzQXBwbGljYXRpb25OZWVkaW5n
UGFyc2VyUXVpcmtzID0gIVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lP
Tl9XSVRIX0hUTUw1X1BBUlNFUikKICAgICAgICAgJiYgKFdlYkNvcmU6Ok1hY0FwcGxpY2F0aW9u
Ojppc0FPTEluc3RhbnRNZXNzZW5nZXIoKSB8fCBXZWJDb3JlOjpNYWNBcHBsaWNhdGlvbjo6aXNN
aWNyb3NvZnRNeURheSgpKTsKLSAgICAKKwogICAgIC8vIE1haWwuYXBwIG11c3QgY29udGludWUg
dG8gZGlzcGxheSBIVE1MIGVtYWlsIHRoYXQgY29udGFpbnMgcXVpcmt5IG1hcmt1cC4KICAgICBz
dGF0aWMgYm9vbCBpc0FwcGxlTWFpbCA9IFdlYkNvcmU6Ok1hY0FwcGxpY2F0aW9uOjppc0FwcGxl
TWFpbCgpOwogCkBAIC0zMTY2LDExICszMTY2LDE1IEBAIHN0YXRpYyBib29sIG5lZWRzU2VsZlJl
dGFpbldoaWxlTG9hZGluZ1F1aXJrKCkKICNpZiBFTkFCTEUoV0VCR0wyKQogICAgIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0V2ViR0wyRW5hYmxlZChbcHJlZmVy
ZW5jZXMgd2ViR0wyRW5hYmxlZF0pOwogI2VuZGlmCi0gICAgCisKICNpZiBFTkFCTEUoV0VCR1BV
KQogICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0V2ViR1BV
RW5hYmxlZChbcHJlZmVyZW5jZXMgd2ViR1BVRW5hYmxlZF0pOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoV0VCR0wpIHx8IEVOQUJMRShXRUJHTDIpCisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5zZXRNYXNrV2ViR0xTdHJpbmdzRW5hYmxlZChbcHJlZmVyZW5jZXMg
bWFza1dlYkdMU3RyaW5nc0VuYWJsZWRdKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKERPV05MT0FE
X0FUVFJJQlVURSkKICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LnNldERvd25sb2FkQXR0cmlidXRlRW5hYmxlZChbcHJlZmVyZW5jZXMgZG93bmxvYWRBdHRyaWJ1
dGVFbmFibGVkXSk7CiAjZW5kaWYKQEAgLTMyOTAsNyArMzI5NCw3IEBAIHN0YXRpYyBpbmxpbmUg
SU1QIGdldE1ldGhvZChpZCBvLCBTRUwgcykKIHsKICAgICBpZiAoX3ByaXZhdGUtPmNsb3Npbmcp
CiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIAorCiAgICAgaWYgKCFfcHJpdmF0ZS0+VUlL
aXREZWxlZ2F0ZUZvcndhcmRlcikKICAgICAgICAgX3ByaXZhdGUtPlVJS2l0RGVsZWdhdGVGb3J3
YXJkZXIgPSBbW19XZWJTYWZlRm9yd2FyZGVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpfcHJpdmF0
ZS0+VUlLaXREZWxlZ2F0ZSBkZWZhdWx0VGFyZ2V0OltXZWJEZWZhdWx0VUlLaXREZWxlZ2F0ZSBz
aGFyZWRVSUtpdERlbGVnYXRlXV07CiAgICAgcmV0dXJuIF9wcml2YXRlLT5VSUtpdERlbGVnYXRl
Rm9yd2FyZGVyOwpAQCAtMzQ5MSw3ICszNDk1LDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKF9wcml2YXRlLT5jbG9zaW5nKQogICAgICAg
ICByZXR1cm4gbmlsOwotI2VuZGlmICAgIAorI2VuZGlmCiAgICAgLy8gVGhpcyBjYW4gYmUgY2Fs
bGVkIGR1cmluZyB3aW5kb3cgZGVhbGxvY2F0aW9uIGJ5IFFUTW92aWVWaWV3IGluIHRoZSBRdWlj
a1RpbWUgQ29jb2EgUGx1Zy1pbi4KICAgICAvLyBOb3Qgc3VyZSBpZiB0aGF0IGlzIGEgYnVnIG9y
IG5vdC4KICAgICBpZiAoIV9wcml2YXRlKQpAQCAtMzUwNiw3ICszNTEwLDcgQEAgSUdOT1JFX1dB
Uk5JTkdTX0VORAogewogICAgIFtbV2ViRnJhbWVWaWV3IF92aWV3VHlwZXNBbGxvd0ltYWdlVHlw
ZU9taXNzaW9uOk5PXSByZW1vdmVPYmplY3RGb3JLZXk6TUlNRVR5cGVdOwogICAgIFtbV2ViRGF0
YVNvdXJjZSBfcmVwVHlwZXNBbGxvd0ltYWdlVHlwZU9taXNzaW9uOk5PXSByZW1vdmVPYmplY3RG
b3JLZXk6TUlNRVR5cGVdOwotICAgIAorCiAgICAgLy8gRklYTUU6IFdlIGFsc28gbmVlZCB0byBt
YWludGFpbiBNSU1FVHlwZSByZWdpc3RyYXRpb25zICh3aGljaCBjYW4gYmUgZHluYW1pY2FsbHkg
Y2hhbmdlZCkKICAgICAvLyBpbiB0aGUgV2ViQ29yZSBNSU1FVHlwZSByZWdpc3RyeS4gIEZvciBu
b3cgd2UncmUgZG9pbmcgdGhpcyBpbiBhIHNhZmUsIGxpbWl0ZWQgbWFubmVyCiAgICAgLy8gdG8g
Zml4IDxyZGFyOi8vcHJvYmxlbS81MzcyOTg5PiAtIGEgZnV0dXJlIHJldmFtcGluZyBvZiB0aGUg
ZW50aXJlIHN5c3RlbSBpcyBuZWNjZXNhcnkgZm9yIGZ1dHVyZSByb2J1c3RuZXNzCkBAIC0zNTIz
LDcgKzM1MjcsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgLy8gdG8gZml4IDxyZGFyOi8v
cHJvYmxlbS81MzcyOTg5PiAtIGEgZnV0dXJlIHJldmFtcGluZyBvZiB0aGUgZW50aXJlIHN5c3Rl
bSBpcyBuZWNjZXNhcnkgZm9yIGZ1dHVyZSByb2J1c3RuZXNzCiAgICAgaWYgKFt2aWV3Q2xhc3Mg
Y2xhc3NdID09IFtXZWJIVE1MVmlldyBjbGFzc10pCiAgICAgICAgIFdlYkNvcmU6Ok1JTUVUeXBl
UmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCkuYWRkKE1JTUVUeXBlKTsKLSAg
ICAKKwogICAgIC8vIFRoaXMgaXMgdXNlZCB0byBtYWtlIF9yZXByZXNlbnRhdGlvbkV4aXN0c0Zv
clVSTFNjaGVtZSBmYXN0ZXIuCiAgICAgLy8gV2l0aG91dCB0aGlzIHNldCwgd2UnZCBoYXZlIHRv
IGNyZWF0ZSB0aGUgTUlNRSB0eXBlIGVhY2ggdGltZS4KICAgICBpZiAoc2NoZW1lc1dpdGhSZXBy
ZXNlbnRhdGlvbnNTZXQgPT0gbmlsKSB7CkBAIC0zNzAzLDcgKzM3MDcsNyBAQCBJR05PUkVfV0FS
TklOR1NfRU5ECiB7CiAgICAgaWYgKG5lZWRzU2VsZlJldGFpbldoaWxlTG9hZGluZ1F1aXJrKCkp
CiAgICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IocmVsZWFzZSkgd2l0aE9i
amVjdDpuaWwgYWZ0ZXJEZWxheTowXTsKLSAgICAgICAgCisKICAgICBbc2VsZiBfZGlkQ2hhbmdl
QmFja0ZvcndhcmRLZXlzXTsKICAgICBpZiAoZnJhbWUgPT0gW3NlbGYgbWFpbkZyYW1lXSl7CiAg
ICAgICAgIC8vIEZvcmNlIGFuIG9ic2VydmVyIHVwZGF0ZSBieSBzZW5kaW5nIGEgd2lsbC9kaWQu
CkBAIC0zNzM3LDcgKzM3NDEsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgICAgIC8vIEZv
cmNlIGFuIG9ic2VydmVyIHVwZGF0ZSBieSBzZW5kaW5nIGEgd2lsbC9kaWQuCiAgICAgICAgIFtz
ZWxmIF93aWxsQ2hhbmdlVmFsdWVGb3JLZXk6IF9XZWJJc0xvYWRpbmdLZXldOwogICAgICAgICBb
c2VsZiBfZGlkQ2hhbmdlVmFsdWVGb3JLZXk6IF9XZWJJc0xvYWRpbmdLZXldOwotICAgICAgICAK
KwogICAgICAgICBbc2VsZiBfZGlkQ2hhbmdlVmFsdWVGb3JLZXk6IF9XZWJNYWluRnJhbWVVUkxL
ZXldOwogICAgIH0KICAgICBbTlNBcHAgc2V0V2luZG93c05lZWRVcGRhdGU6WUVTXTsKQEAgLTM3
NjcsNyArMzc3MSw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICBbcGFzdGVib2FyZCBfd2Vi
X3dyaXRlSW1hZ2U6KE5TSW1hZ2UgKikoZG9tRWxlbWVudCA/IG5pbCA6IFtlbGVtZW50IG9iamVj
dEZvcktleTpXZWJFbGVtZW50SW1hZ2VLZXldKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxl
bWVudDpkb21FbGVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJMOmxpbmtVUkwg
PyBsaW5rVVJMIDogKE5TVVJMICopW2VsZW1lbnQgb2JqZWN0Rm9yS2V5OldlYkVsZW1lbnRJbWFn
ZVVSTEtleV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6W2VsZW1lbnQgb2JqZWN0
Rm9yS2V5OldlYkVsZW1lbnRJbWFnZUFsdFN0cmluZ0tleV0gCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRpdGxlOltlbGVtZW50IG9iamVjdEZvcktleTpXZWJFbGVtZW50SW1hZ2VBbHRTdHJp
bmdLZXldCiAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZlOltbZWxlbWVudCBvYmplY3RG
b3JLZXk6V2ViRWxlbWVudERPTU5vZGVLZXldIHdlYkFyY2hpdmVdCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGVzOnR5cGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOm5p
bF07CkBAIC0zODg5LDcgKzM4OTMsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgaWYgKF9w
cml2YXRlLT5fY2FyZXRDaGFuZ2VMaXN0ZW5lcnMgPT0gbmlsKSB7CiAgICAgICAgIF9wcml2YXRl
LT5fY2FyZXRDaGFuZ2VMaXN0ZW5lcnMgPSBbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF07CiAg
ICAgfQotICAgIAorCiAgICAgW19wcml2YXRlLT5fY2FyZXRDaGFuZ2VMaXN0ZW5lcnMgYWRkT2Jq
ZWN0Omxpc3RlbmVyXTsKIH0KIApAQCAtMzkxNiwyMCArMzkyMCwyMCBAQCBJR05PUkVfV0FSTklO
R1NfRU5ECiAtICh2b2lkKV9jbGVhckRlbGVnYXRlcwogewogICAgIEFTU0VSVChXZWJUaHJlYWRJ
c0xvY2tlZCgpIHx8ICFXZWJUaHJlYWRJc0VuYWJsZWQoKSk7Ci0gICAgCisKICAgICBbc2VsZiBf
c2V0Rm9ybURlbGVnYXRlOm5pbF07CiAgICAgW3NlbGYgX3NldFVJS2l0RGVsZWdhdGU6bmlsXTsK
ICAgICBbc2VsZiBzZXRDYXJldENoYW5nZUxpc3RlbmVyOm5pbF07CiAgICAgW3NlbGYgcmVtb3Zl
QWxsQ2FyZXRDaGFuZ2VMaXN0ZW5lcnNdOwogICAgIFtzZWxmIHNldFdlYk1haWxEZWxlZ2F0ZTpu
aWxdOwotICAgIAorCiAgICAgW3NlbGYgc2V0RG93bmxvYWREZWxlZ2F0ZTpuaWxdOwotICAgIFtz
ZWxmIHNldEVkaXRpbmdEZWxlZ2F0ZTpuaWxdOyAKKyAgICBbc2VsZiBzZXRFZGl0aW5nRGVsZWdh
dGU6bmlsXTsKICAgICBbc2VsZiBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpuaWxdOwogICAgIFtzZWxm
IHNldFBvbGljeURlbGVnYXRlOm5pbF07CiAgICAgW3NlbGYgc2V0UmVzb3VyY2VMb2FkRGVsZWdh
dGU6bmlsXTsKICAgICBbc2VsZiBzZXRTY3JpcHREZWJ1Z0RlbGVnYXRlOm5pbF07Ci0gICAgW3Nl
bGYgc2V0VUlEZWxlZ2F0ZTpuaWxdOyAgICAgCisgICAgW3NlbGYgc2V0VUlEZWxlZ2F0ZTpuaWxd
OwogfQogCiAtIChOU1VSTCAqKV9kaXNwbGF5VVJMCkBAIC00MDIyLDcgKzQwMjYsNyBAQCBJR05P
UkVfV0FSTklOR1NfRU5ECiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+cGx1Z2luRGF0YWJhc2UpCiAg
ICAgICAgIF9wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSA9IFtbV2ViUGx1Z2luRGF0YWJhc2UgYWxs
b2NdIGluaXRdOwotICAgICAgICAKKwogICAgIFtfcHJpdmF0ZS0+cGx1Z2luRGF0YWJhc2Ugc2V0
UGx1Z0luUGF0aHM6bmV3UGF0aHNdOwogICAgIFtfcHJpdmF0ZS0+cGx1Z2luRGF0YWJhc2UgcmVm
cmVzaF07CiB9CkBAIC00MDQ2LDcgKzQwNTAsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAg
ICAgIGlmIChbc2VsZiBfbG9ja2VkX3BsdWdJbnNBcmVSdW5uaW5nSW5GcmFtZTpbY2hpbGRGcmFt
ZXMgb2JqZWN0QXRJbmRleDpjaGlsZEluZGV4XV0pCiAgICAgICAgICAgICByZXR1cm4gWUVTOwog
ICAgIH0KLSAgICAKKwogICAgIHJldHVybiBOTzsKIH0KIApAQCAtNDExNiw3ICs0MTIwLDcgQEAg
SUdOT1JFX1dBUk5JTkdTX0VORAogICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBsYXll
ckZvcldpZGdldCA9IGNvcmVWaWV3LT5ncmFwaGljc0xheWVyRm9yUGxhdGZvcm1XaWRnZXQocGx1
Z2luVmlldyk7CiAgICAgICAgIGlmICghbGF5ZXJGb3JXaWRnZXQpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKGxheWVyRm9yV2lkZ2V0LT5jb250ZW50c0xh
eWVyRm9yTWVkaWEoKSAhPSBsYXllcikgewogICAgICAgICAgICAgbGF5ZXJGb3JXaWRnZXQtPnNl
dENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKGxheWVyLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpD
b250ZW50c0xheWVyUHVycG9zZTo6TWVkaWEpOwogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBt
YWtlIHN1cmUgdGhlIGxheWVyIGhpZXJhcmNoeSBjaGFuZ2UgaXMgYXBwbGllZCBpbW1lZGlhdGVs
eS4KQEAgLTQzMTcsNyArNDMyMSw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKIC0gKHZvaWQpX3Zp
ZXdHZW9tZXRyeURpZENoYW5nZQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZCgpKTsK
LSAgICAKKwogICAgIGlmIChhdXRvKiBjb3JlRnJhbWUgPSBbc2VsZiBfbWFpbkNvcmVGcmFtZV0p
CiAgICAgICAgIGNvcmVGcmFtZS0+dmlld3BvcnRPZmZzZXRDaGFuZ2VkKFdlYkNvcmU6OkZyYW1l
OjpJbmNyZW1lbnRhbFNjcm9sbE9mZnNldCk7CiB9CkBAIC00MzQ1LDcgKzQzNDksNyBAQCBJR05P
UkVfV0FSTklOR1NfRU5ECiAgICAgYXV0byogZnJhbWUgPSBbc2VsZiBfbWFpbkNvcmVGcmFtZV07
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKKwogICAgIGF1dG8q
IGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAg
ICAgcmV0dXJuIG5pbDsKQEAgLTQ0MDgsMTMgKzQ0MTIsMTMgQEAgSUdOT1JFX1dBUk5JTkdTX0VO
RAogewogICAgIFdlYkNvcmU6OkludFBvaW50IHJlY3RTdGFydChyZWN0Lm9yaWdpbi54LCByZWN0
Lm9yaWdpbi55KTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCByZWN0RW5kKHJlY3Qub3JpZ2luLngg
KyByZWN0LnNpemUud2lkdGgsIHJlY3Qub3JpZ2luLnkgKyByZWN0LnNpemUuaGVpZ2h0KTsKLSAg
ICAKKwogICAgIGF1dG8qIGNvcmVGcmFtZSA9IFtzZWxmIF9tYWluQ29yZUZyYW1lXTsKICAgICBp
ZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKKwogICAgIFdlYkNvcmU6
OlZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uSW5zaWRlUmVjdChjb3JlRnJhbWUtPnZpc2libGVQ
b3NpdGlvbkZvclBvaW50KHJlY3RTdGFydCksIGNvcmVGcmFtZS0+dmlzaWJsZVBvc2l0aW9uRm9y
UG9pbnQocmVjdEVuZCkpOwotICAgIAorCiAgICAgcmV0dXJuIFtbW1dlYlRleHRJdGVyYXRvciBh
bGxvY10gaW5pdFdpdGhSYW5nZTpraXQoc2VsZWN0aW9uSW5zaWRlUmVjdC50b05vcm1hbGl6ZWRS
YW5nZSgpLmdldCgpKV0gYXV0b3JlbGVhc2VdOwogfQogCkBAIC00NTQ2LDcgKzQ1NTAsNyBAQCBJ
R05PUkVfV0FSTklOR1NfRU5ECiAgICAgYXV0byogY29yZUZyYW1lID0gW3NlbGYgX21haW5Db3Jl
RnJhbWVdOwogICAgIGlmIChhdXRvKiB2aWV3ID0gY29yZUZyYW1lLT52aWV3KCkpCiAgICAgICAg
IHJldHVybiB2aWV3LT5pc1RyYWNraW5nUmVwYWludHMoKTsKLSAgICAKKwogICAgIHJldHVybiBO
TzsKIH0KIApAQCAtNDU2Niw3ICs0NTcwLDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogCiAgICAg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mIHJlcGFpbnRSZWN0cyA9IHZpZXctPnRy
YWNrZWRSZXBhaW50UmVjdHMoKTsKICAgICBOU011dGFibGVBcnJheSogcmVjdHNBcnJheSA9IFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6cmVwYWludFJlY3RzLnNpemUo
KV07Ci0gICAgCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVwYWludFJlY3RzLnNp
emUoKTsgKytpKQogICAgICAgICBbcmVjdHNBcnJheSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVX
aXRoUmVjdDpzbmFwcGVkSW50UmVjdChXZWJDb3JlOjpMYXlvdXRSZWN0KHJlcGFpbnRSZWN0c1tp
XSkpXV07CiAKQEAgLTQ4MTYsNyArNDgyMCw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1N0
cmluZ1ZlY3RvcihOU0FycmF5KiBwYXR0ZXJucykKICAgICBhdXRvKiBmcmFtZSA9IGNvcmUoW3Nl
bGYgbWFpbkZyYW1lXSk7CiAgICAgaWYgKHN1c3BlbmRlZCA9PSBmcmFtZS0+YW5pbWF0aW9uKCku
aXNTdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgIGlmIChzdXNw
ZW5kZWQpCiAgICAgICAgIGZyYW1lLT5hbmltYXRpb24oKS5zdXNwZW5kQW5pbWF0aW9ucygpOwog
ICAgIGVsc2UKQEAgLTQ4NzUsMTEgKzQ4NzksMTEgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IHRv
U3RyaW5nVmVjdG9yKE5TQXJyYXkqIHBhdHRlcm5zKQogICAgIGF1dG8qIGNvcmVGcmFtZSA9IFtz
ZWxmIF9tYWluQ29yZUZyYW1lXTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJu
OwotICAgIAorCiAgICAgYXV0byogdmlldyA9IGNvcmVGcmFtZS0+dmlldygpOwogICAgIGlmICgh
dmlldykKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgdmlldy0+c2V0Rml4ZWRMYXlvdXRT
aXplKFdlYkNvcmU6OkludFNpemUoc2l6ZSkpOwogICAgIHZpZXctPmZvcmNlTGF5b3V0KCk7CiB9
CkBAIC00ODkwLDExICs0ODk0LDExIEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1N0cmluZ1Zl
Y3RvcihOU0FycmF5KiBwYXR0ZXJucykKICAgICBhdXRvKiBjb3JlRnJhbWUgPSBbc2VsZiBfbWFp
bkNvcmVGcmFtZV07CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBOTzsKLSAg
ICAKKwogICAgIGF1dG8qIHZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcp
CiAgICAgICAgIHJldHVybiBOTzsKLSAgICAKKwogICAgIHJldHVybiB2aWV3LT51c2VGaXhlZExh
eW91dCgpOwogfQogCkBAIC00OTA0LDcgKzQ5MDgsNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4g
dG9TdHJpbmdWZWN0b3IoTlNBcnJheSogcGF0dGVybnMpCiAgICAgYXV0byogY29yZUZyYW1lID0g
W3NlbGYgX21haW5Db3JlRnJhbWVdOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1
cm4gV2ViQ29yZTo6SW50U2l6ZSgpOwotICAgIAorCiAgICAgYXV0byogdmlldyA9IGNvcmVGcmFt
ZS0+dmlldygpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkludFNp
emUoKTsKQEAgLTUwODcsNyArNTA5MSw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1N0cmlu
Z1ZlY3RvcihOU0FycmF5KiBwYXR0ZXJucykKICAgICBhdXRvKiBwYWdlID0gY29yZShzZWxmKTsK
ICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIHBhZ2UtPnNldFBh
Z2luYXRpb25MaW5lR3JpZEVuYWJsZWQobGluZUdyaWRFbmFibGVkKTsKIH0KIApAQCAtNTA5Niw3
ICs1MTAwLDcgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKE5TQXJyYXkq
IHBhdHRlcm5zKQogICAgIGF1dG8qIHBhZ2UgPSBjb3JlKHNlbGYpOwogICAgIGlmICghcGFnZSkK
ICAgICAgICAgcmV0dXJuIE5POwotICAgIAorCiAgICAgcmV0dXJuIHBhZ2UtPnBhZ2luYXRpb25M
aW5lR3JpZEVuYWJsZWQoKTsKIH0KIApAQCAtNTE0MSw3ICs1MTQ1LDcgQEAgc3RhdGljIFZlY3Rv
cjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKE5TQXJyYXkqIHBhdHRlcm5zKQogICAgIHJldHVybiBb
c2VsZiBmaW5kU3RyaW5nOnN0cmluZyBvcHRpb25zOigoZm9yd2FyZCA/IDAgOiBXZWJGaW5kT3B0
aW9uc0JhY2t3YXJkcykgfCAoY2FzZUZsYWcgPyAwIDogV2ViRmluZE9wdGlvbnNDYXNlSW5zZW5z
aXRpdmUpIHwgKHdyYXBGbGFnID8gV2ViRmluZE9wdGlvbnNXcmFwQXJvdW5kIDogMCkgfCAoc3Rh
cnRJblNlbGVjdGlvbiA/IFdlYkZpbmRPcHRpb25zU3RhcnRJblNlbGVjdGlvbiA6IDApKV07CiB9
CiAKLSsgKHZvaWQpX3NldExvYWRSZXNvdXJjZXNTZXJpYWxseTooQk9PTClzZXJpYWxpemUgCisr
ICh2b2lkKV9zZXRMb2FkUmVzb3VyY2VzU2VyaWFsbHk6KEJPT0wpc2VyaWFsaXplCiB7CiAgICAg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplSWZOZWNlc3NhcnkoKTsKIApAQCAtNTU1
OSw3ICs1NTYzLDcgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKE5TQXJy
YXkqIHBhdHRlcm5zKQogfQogCiArICh2b2lkKV9hcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUKLXsg
ICAKK3sKICAgICBhcHBsaWNhdGlvbklzVGVybWluYXRpbmcgPSBZRVM7CiAKICAgICBpZiAoZmFz
dERvY3VtZW50VGVhcmRvd25FbmFibGVkKCkpCkBAIC01NTk1LDEyICs1NTk5LDEyIEBAIHN0YXRp
YyBWZWN0b3I8U3RyaW5nPiB0b1N0cmluZ1ZlY3RvcihOU0FycmF5KiBwYXR0ZXJucykKICAgICBX
ZWJCYXNlUGx1Z2luUGFja2FnZSAqcGx1Z2luUGFja2FnZSA9IFtbV2ViUGx1Z2luRGF0YWJhc2Ug
c2hhcmVkRGF0YWJhc2VdIHBsdWdpbkZvck1JTUVUeXBlOk1JTUVUeXBlXTsKICAgICBpZiAocGx1
Z2luUGFja2FnZSkKICAgICAgICAgcmV0dXJuIHBsdWdpblBhY2thZ2U7Ci0gICAgCisKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNlKQog
ICAgICAgICByZXR1cm4gW19wcml2YXRlLT5wbHVnaW5EYXRhYmFzZSBwbHVnaW5Gb3JNSU1FVHlw
ZTpNSU1FVHlwZV07CiAjZW5kaWYKLSAgICAKKwogICAgIHJldHVybiBuaWw7CiB9CiAKQEAgLTU2
MTIsMTIgKzU2MTYsMTIgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKE5T
QXJyYXkqIHBhdHRlcm5zKQogICAgIFdlYkJhc2VQbHVnaW5QYWNrYWdlICpwbHVnaW5QYWNrYWdl
ID0gW1tXZWJQbHVnaW5EYXRhYmFzZSBzaGFyZWREYXRhYmFzZV0gcGx1Z2luRm9yRXh0ZW5zaW9u
OmV4dGVuc2lvbl07CiAgICAgaWYgKHBsdWdpblBhY2thZ2UpCiAgICAgICAgIHJldHVybiBwbHVn
aW5QYWNrYWdlOwotICAgIAorCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKF9w
cml2YXRlLT5wbHVnaW5EYXRhYmFzZSkKICAgICAgICAgcmV0dXJuIFtfcHJpdmF0ZS0+cGx1Z2lu
RGF0YWJhc2UgcGx1Z2luRm9yRXh0ZW5zaW9uOmV4dGVuc2lvbl07CiAjZW5kaWYKLSAgICAKKwog
ICAgIHJldHVybiBuaWw7CiB9CiAKQEAgLTU2MzIsMTMgKzU2MzYsMTMgQEAgc3RhdGljIFZlY3Rv
cjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKE5TQXJyYXkqIHBhdHRlcm5zKQogLSAodm9pZClyZW1v
dmVQbHVnaW5JbnN0YW5jZVZpZXc6KE5TVmlldyAqKXZpZXcKIHsKICAgICBpZiAoX3ByaXZhdGUt
PnBsdWdpbkRhdGFiYXNlKQotICAgICAgICBbX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNlIHJlbW92
ZVBsdWdpbkluc3RhbmNlVmlldzp2aWV3XTsgICAgCisgICAgICAgIFtfcHJpdmF0ZS0+cGx1Z2lu
RGF0YWJhc2UgcmVtb3ZlUGx1Z2luSW5zdGFuY2VWaWV3OnZpZXddOwogfQogCiAtICh2b2lkKXJl
bW92ZVBsdWdpbkluc3RhbmNlVmlld3NGb3I6KFdlYkZyYW1lKil3ZWJGcmFtZQogewogICAgIGlm
IChfcHJpdmF0ZS0+cGx1Z2luRGF0YWJhc2UpCi0gICAgICAgIFtfcHJpdmF0ZS0+cGx1Z2luRGF0
YWJhc2UgcmVtb3ZlUGx1Z2luSW5zdGFuY2VWaWV3c0Zvcjp3ZWJGcmFtZV07ICAgIAorICAgICAg
ICBbX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNlIHJlbW92ZVBsdWdpbkluc3RhbmNlVmlld3NGb3I6
d2ViRnJhbWVdOwogfQogI2VuZGlmCiAKQEAgLTU2NDksMTIgKzU2NTMsMTIgQEAgc3RhdGljIFZl
Y3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKE5TQXJyYXkqIHBhdHRlcm5zKQogCiAgICAgaWYg
KFtbV2ViUGx1Z2luRGF0YWJhc2Ugc2hhcmVkRGF0YWJhc2VdIGlzTUlNRVR5cGVSZWdpc3RlcmVk
Ok1JTUVUeXBlXSkKICAgICAgICAgcmV0dXJuIFlFUzsKLSAgICAgICAgCisKICNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoX3ByaXZhdGUtPnBsdWdpbkRhdGFiYXNlICYmIFtfcHJp
dmF0ZS0+cGx1Z2luRGF0YWJhc2UgaXNNSU1FVHlwZVJlZ2lzdGVyZWQ6TUlNRVR5cGVdKQogICAg
ICAgICByZXR1cm4gWUVTOwogI2VuZGlmCi0gICAgCisKICAgICByZXR1cm4gTk87CiB9CiAKQEAg
LTU2NzUsMTIgKzU2NzksMTIgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9y
KE5TQXJyYXkqIHBhdHRlcm5zKQogICAgIE5TRW51bWVyYXRvciAqZW51bWVyYXRvciA9IFt2aWV3
VHlwZXMga2V5RW51bWVyYXRvcl07CiAgICAgaWQga2V5OwogICAgIE5TTXV0YWJsZUFycmF5ICph
cnJheSA9IFtbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAg
CisKICAgICB3aGlsZSAoKGtleSA9IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdKSkgewogICAgICAg
ICBpZiAoW3ZpZXdUeXBlcyBvYmplY3RGb3JLZXk6a2V5XSA9PSBbV2ViSFRNTFZpZXcgY2xhc3Nd
KQogICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDprZXldOwogICAgIH0KLSAgICAKKwogICAg
IHJldHVybiBhcnJheTsKIH0KIApAQCAtNTY5MywxMSArNTY5NywxMSBAQCBzdGF0aWMgVmVjdG9y
PFN0cmluZz4gdG9TdHJpbmdWZWN0b3IoTlNBcnJheSogcGF0dGVybnMpCiAgICAgICAgIGlmIChb
dmlld1R5cGVzIG9iamVjdEZvcktleTprZXldID09IFtXZWJIVE1MVmlldyBjbGFzc10pCiAgICAg
ICAgICAgICBbV2ViVmlldyBfdW5yZWdpc3RlclZpZXdDbGFzc0FuZFJlcHJlc2VudGF0aW9uQ2xh
c3NGb3JNSU1FVHlwZTprZXldOwogICAgIH0KLSAgICAKKwogICAgIGludCBpLCBjb3VudCA9IFtN
SU1FVHlwZXMgY291bnRdOwogICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAg
ICAgIFtXZWJWaWV3IHJlZ2lzdGVyVmlld0NsYXNzOltXZWJIVE1MVmlldyBjbGFzc10gCi0gICAg
ICAgICAgICAgICAgcmVwcmVzZW50YXRpb25DbGFzczpbV2ViSFRNTFJlcHJlc2VudGF0aW9uIGNs
YXNzXSAKKyAgICAgICAgW1dlYlZpZXcgcmVnaXN0ZXJWaWV3Q2xhc3M6W1dlYkhUTUxWaWV3IGNs
YXNzXQorICAgICAgICAgICAgICAgIHJlcHJlc2VudGF0aW9uQ2xhc3M6W1dlYkhUTUxSZXByZXNl
bnRhdGlvbiBjbGFzc10KICAgICAgICAgICAgICAgICBmb3JNSU1FVHlwZTpbTUlNRVR5cGVzIG9i
amVjdEF0SW5kZXg6aV1dOwogICAgIH0KICAgICBbdmlld1R5cGVzIHJlbGVhc2VdOwpAQCAtNTgw
Niw3ICs1ODEwLDcgQEAgc3RhdGljIGJvb2wgbmVlZHNXZWJWaWV3SW5pdFRocmVhZFdvcmthcm91
bmQoKQogICAgICAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXM7CiAgICAgICAgIEJPT0wg
dXNlQmFja0ZvcndhcmRMaXN0ID0gTk87CiAgICAgICAgIEJPT0wgYWxsb3dzVW5kbyA9IFlFUzsK
LSAgICAgICAgCisKICAgICAgICAgcmVzdWx0ID0gW3N1cGVyIGluaXRXaXRoQ29kZXI6ZGVjb2Rl
cl07CiAgICAgICAgIHJlc3VsdC0+X3ByaXZhdGUgPSBbW1dlYlZpZXdQcml2YXRlIGFsbG9jXSBp
bml0XTsKIApAQCAtNTk1Miw3ICs1OTU2LDcgQEAgc3RhdGljIGJvb2wgbmVlZHNXZWJWaWV3SW5p
dFRocmVhZFdvcmthcm91bmQoKQogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogLy8gRklYTUU6
IFVzZSBBcHBLaXQgY29uc3RhbnRzIGZvciB0aGVzZSB3aGVuIHRoZXkgYXJlIGF2YWlsYWJsZS4K
IHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHdpbmRvd0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVz
Tm90aWZpY2F0aW9uID0gQCJOU1dpbmRvd0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzTm90aWZp
Y2F0aW9uIjsKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGJhY2tpbmdQcm9wZXJ0eU9sZFNjYWxl
RmFjdG9yS2V5ID0gQCJOU0JhY2tpbmdQcm9wZXJ0eU9sZFNjYWxlRmFjdG9yS2V5IjsgCitzdGF0
aWMgTlNTdHJpbmcgKiBjb25zdCBiYWNraW5nUHJvcGVydHlPbGRTY2FsZUZhY3RvcktleSA9IEAi
TlNCYWNraW5nUHJvcGVydHlPbGRTY2FsZUZhY3RvcktleSI7CiAKIC0gKHZvaWQpYWRkV2luZG93
T2JzZXJ2ZXJzRm9yV2luZG93OihOU1dpbmRvdyAqKXdpbmRvdwogewpAQCAtNjAyMiw3ICs2MDI2
LDcgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgYmFja2luZ1Byb3BlcnR5T2xkU2NhbGVGYWN0
b3JLZXkgPSBAIk5TQmFja2luZ1Byb3BlcnR5T2wKIAogICAgIGlmICh3aW5kb3cpIHsKICAgICAg
ICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxm
IHNlbGVjdG9yOkBzZWxlY3Rvcihfd2luZG93V2lsbENsb3NlOikgbmFtZTpOU1dpbmRvd1dpbGxD
bG9zZU5vdGlmaWNhdGlvbiBvYmplY3Q6d2luZG93XTsKLSAgICAgICAgIAorCiAgICAgICAgIC8v
IEVuc3VyZSB0aGF0IHdlIHdpbGwgcmVjZWl2ZSB0aGUgZXZlbnRzIHRoYXQgV2ViSFRNTFZpZXcg
KGF0IGxlYXN0KSBuZWVkcy4KICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgZXhwZW5zaXZl
IGVub3VnaCB0aGF0IHdlIGRvbid0IHdhbnQgdG8gY2FsbCB0aGVtIG92ZXIKICAgICAgICAgLy8g
YW5kIG92ZXIsIHNvIGRvIHRoZW0gd2hlbiB3ZSBtb3ZlIGludG8gYSB3aW5kb3cuCkBAIC02MDMy
LDcgKzYwMzYsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBiYWNraW5nUHJvcGVydHlPbGRT
Y2FsZUZhY3RvcktleSA9IEAiTlNCYWNraW5nUHJvcGVydHlPbAogICAgICAgICBfcHJpdmF0ZS0+
cGFnZS0+c2V0Q2FuU3RhcnRNZWRpYShmYWxzZSk7CiAgICAgICAgIF9wcml2YXRlLT5wYWdlLT5z
ZXRJc0luV2luZG93KGZhbHNlKTsKICAgICB9Ci0gICAgICAgIAorCiAgICAgaWYgKHdpbmRvdyAh
PSBbc2VsZiB3aW5kb3ddKSB7CiAgICAgICAgIFtzZWxmIHJlbW92ZVdpbmRvd09ic2VydmVyc107
CiAgICAgICAgIFtzZWxmIGFkZFdpbmRvd09ic2VydmVyc0ZvcldpbmRvdzp3aW5kb3ddOwpAQCAt
NjE0OCwxMCArNjE1MiwxMCBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBiYWNraW5nUHJvcGVy
dHlPbGRTY2FsZUZhY3RvcktleSA9IEAiTlNCYWNraW5nUHJvcGVydHlPbAogCiAtICh2b2lkKV93
aW5kb3dEaWRDaGFuZ2VCYWNraW5nUHJvcGVydGllczooTlNOb3RpZmljYXRpb24gKilub3RpZmlj
YXRpb24KIHsKLSAgICBDR0Zsb2F0IG9sZEJhY2tpbmdTY2FsZUZhY3RvciA9IFtbbm90aWZpY2F0
aW9uLnVzZXJJbmZvIG9iamVjdEZvcktleTpiYWNraW5nUHJvcGVydHlPbGRTY2FsZUZhY3Rvcktl
eV0gZG91YmxlVmFsdWVdOyAKKyAgICBDR0Zsb2F0IG9sZEJhY2tpbmdTY2FsZUZhY3RvciA9IFtb
bm90aWZpY2F0aW9uLnVzZXJJbmZvIG9iamVjdEZvcktleTpiYWNraW5nUHJvcGVydHlPbGRTY2Fs
ZUZhY3RvcktleV0gZG91YmxlVmFsdWVdOwogICAgIENHRmxvYXQgbmV3QmFja2luZ1NjYWxlRmFj
dG9yID0gW3NlbGYgX2RldmljZVNjYWxlRmFjdG9yXTsKLSAgICBpZiAob2xkQmFja2luZ1NjYWxl
RmFjdG9yID09IG5ld0JhY2tpbmdTY2FsZUZhY3RvcikgCi0gICAgICAgIHJldHVybjsgCisgICAg
aWYgKG9sZEJhY2tpbmdTY2FsZUZhY3RvciA9PSBuZXdCYWNraW5nU2NhbGVGYWN0b3IpCisgICAg
ICAgIHJldHVybjsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXREZXZpY2VTY2FsZUZhY3Rvcihu
ZXdCYWNraW5nU2NhbGVGYWN0b3IpOwogfQpAQCAtNjM1NCw3ICs2MzU4LDcgQEAgc3RhdGljIE5T
U3RyaW5nICogY29uc3QgYmFja2luZ1Byb3BlcnR5T2xkU2NhbGVGYWN0b3JLZXkgPSBAIk5TQmFj
a2luZ1Byb3BlcnR5T2wKICAgICBXZWJGcmFtZSAqZm9jdXNlZEZyYW1lID0gW3NlbGYgX2ZvY3Vz
ZWRGcmFtZV07CiAgICAgaWYgKGZvY3VzZWRGcmFtZSkKICAgICAgICAgcmV0dXJuIGZvY3VzZWRG
cmFtZTsKLSAgICAKKwogICAgIC8vIElmIHRoZSBmaXJzdCByZXNwb25kZXIgaXMgb3V0c2lkZSBv
ZiBvdXIgdmlldyB0cmVlLCB3ZSBzZWFyY2ggZm9yIGEgZnJhbWUgY29udGFpbmluZyBhIHNlbGVj
dGlvbi4KICAgICAvLyBUaGVyZSBzaG91bGQgYmUgYXQgbW9zdCBvbmx5IG9uZSBvZiB0aGVzZS4K
ICAgICByZXR1cm4gW1tzZWxmIG1haW5GcmFtZV0gX2ZpbmRGcmFtZVdpdGhTZWxlY3Rpb25dOwpA
QCAtNjM4MSw3ICs2Mzg1LDcgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgYmFja2luZ1Byb3Bl
cnR5T2xkU2NhbGVGYWN0b3JLZXkgPSBAIk5TQmFja2luZ1Byb3BlcnR5T2wKIHsKICAgICBpZiAo
IV9wcml2YXRlLT5wYWdlKQogICAgICAgICByZXR1cm4gTk87Ci0gICAgCisKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSB8fCAhV2ViVGhyZWFk
SXNFbmFibGVkKCkpCiAjZW5kaWYKQEAgLTY0NjgsNyArNjQ3Miw3IEBAIHN0YXRpYyBOU1N0cmlu
ZyAqIGNvbnN0IGJhY2tpbmdQcm9wZXJ0eU9sZFNjYWxlRmFjdG9yS2V5ID0gQCJOU0JhY2tpbmdQ
cm9wZXJ0eU9sCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+cGFnZSkKICAgICAgICAgcmV0dXJuIE5P
OwotICAgIAorCiAgICAgcmV0dXJuIF9wcml2YXRlLT56b29tc1RleHRPbmx5OwogfQogCkBAIC02
NzA1LDcgKzY3MDksNyBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBiYWNraW5nUHJvcGVydHlP
bGRTY2FsZUZhY3RvcktleSA9IEAiTlNCYWNraW5nUHJvcGVydHlPbAogICAgIC8vIHNvIHdlIGNo
ZWNrIGhlcmUgdG8gbWFrZSBzdXJlIGl0J3Mgbm90IG51bGwuCiAgICAgaWYgKCFfcHJpdmF0ZSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKKwogICAgIHJldHVybiBfcHJpdmF0ZS0+aG9zdFdp
bmRvdzsKIH0KIApAQCAtNjczNCw4ICs2NzM4LDggQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
YmFja2luZ1Byb3BlcnR5T2xkU2NhbGVGYWN0b3JLZXkgPSBAIk5TQmFja2luZ1Byb3BlcnR5T2wK
IAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykKIC8vIFRoZSBmb2xs
b3dpbmcgMiBpbnRlcm5hbCBOU1ZpZXcgbWV0aG9kcyBhcmUgY2FsbGVkIG9uIHRoZSBkcmFnIGRl
c3RpbmF0aW9uIHRvIG1ha2Ugc2Nyb2xsaW5nIHdoaWxlIGRyYWdnaW5nIHdvcmsuCi0vLyBTY3Jv
bGxpbmcgd2hpbGUgZHJhZ2dpbmcgd2lsbCBvbmx5IHdvcmsgaWYgdGhlIGRyYWcgZGVzdGluYXRp
b24gaXMgaW4gYSBzY3JvbGwgdmlldy4gVGhlIFdlYlZpZXcgaXMgdGhlIGRyYWcgZGVzdGluYXRp
b24uIAotLy8gV2hlbiBkcmFnZ2luZyB0byBhIFdlYlZpZXcsIHRoZSBkb2N1bWVudCBzdWJ2aWV3
IHNob3VsZCBzY3JvbGwsIGJ1dCBpdCBkb2Vzbid0IGJlY2F1c2UgaXQgaXMgbm90IHRoZSBkcmFn
IGRlc3RpbmF0aW9uLiAKKy8vIFNjcm9sbGluZyB3aGlsZSBkcmFnZ2luZyB3aWxsIG9ubHkgd29y
ayBpZiB0aGUgZHJhZyBkZXN0aW5hdGlvbiBpcyBpbiBhIHNjcm9sbCB2aWV3LiBUaGUgV2ViVmll
dyBpcyB0aGUgZHJhZyBkZXN0aW5hdGlvbi4KKy8vIFdoZW4gZHJhZ2dpbmcgdG8gYSBXZWJWaWV3
LCB0aGUgZG9jdW1lbnQgc3VidmlldyBzaG91bGQgc2Nyb2xsLCBidXQgaXQgZG9lc24ndCBiZWNh
dXNlIGl0IGlzIG5vdCB0aGUgZHJhZyBkZXN0aW5hdGlvbi4KIC8vIEZvcndhcmQgdGhlc2UgY2Fs
bHMgdG8gdGhlIGRvY3VtZW50IHN1YnZpZXcgdG8gbWFrZSBpdHMgc2Nyb2xsIHZpZXcgc2Nyb2xs
LgogLSAodm9pZClfYXV0b3Njcm9sbEZvckRyYWdnaW5nSW5mbzooaWQpZHJhZ2dpbmdJbmZvIHRp
bWVEZWx0YTooTlNUaW1lSW50ZXJ2YWwpcmVwZWF0RGVsdGEKIHsKQEAgLTY4MTUsNyArNjgxOSw3
IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGJhY2tpbmdQcm9wZXJ0eU9sZFNjYWxlRmFjdG9y
S2V5ID0gQCJOU0JhY2tpbmdQcm9wZXJ0eU9sCiAKICAgICBOU0FycmF5KiB0eXBlcyA9IGRyYWdn
aW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQudHlwZXM7CiAgICAgaWYgKCFbdHlwZXMgY29udGFp
bnNPYmplY3Q6V2ViQXJjaGl2ZVBib2FyZFR5cGVdICYmIFt0eXBlcyBjb250YWluc09iamVjdDpX
ZWJDb3JlOjpsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpXSkgewotICAgICAgICAK
KwogICAgICAgICAvLyBGSVhNRTogbGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSBj
b250YWlucyBVVElzLCBub3QgcGF0aCBuYW1lcy4gQWxzbywgaXQncyBub3QKICAgICAgICAgLy8g
Z3VhcmFudGVlZCB0aGF0IHRoZSBjb3VudCBvZiBVVElzIGVxdWFscyB0aGUgY291bnQgb2YgZmls
ZXMsIHNpbmNlIHNvbWUgY2xpZW50cyBvbmx5IHdyaXRlCiAgICAgICAgIC8vIHVuaXF1ZSBVVElz
LgpAQCAtNjg4NSw3ICs2ODg5LDcgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgYmFja2luZ1By
b3BlcnR5T2xkU2NhbGVGYWN0b3JLZXkgPSBAIk5TQmFja2luZ1Byb3BlcnR5T2wKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBOTzsKICAgICB9Ci0gICAgCisK
ICAgICAvLyBUaGlzIHdvcmtzIHRvZ2V0aGVyIHdpdGggc2V0TmV4dEtleVZpZXcgdG8gc3BsaWNl
IHRoZSBXZWJWaWV3IGludG8KICAgICAvLyB0aGUga2V5IGxvb3Agc2ltaWxhciB0byB0aGUgd2F5
IE5TU2Nyb2xsVmlldyBkb2VzIHRoaXMuIE5vdGUgdGhhdAogICAgIC8vIFdlYkZyYW1lVmlldyBo
YXMgdmVyeSBzaW1pbGFyIGNvZGUuCkBAIC02OTIxLDcgKzY5MjUsNyBAQCBzdGF0aWMgTlNTdHJp
bmcgKiBjb25zdCBiYWNraW5nUHJvcGVydHlPbGRTY2FsZUZhY3RvcktleSA9IEAiTlNCYWNraW5n
UHJvcGVydHlPbAogICAgICAgICBfcHJpdmF0ZS0+YmVjb21pbmdGaXJzdFJlc3BvbmRlciA9IE5P
OwogI2VuZGlmCiAgICAgICAgIHJldHVybiBZRVM7Ci0gICAgfSAKKyAgICB9CiAKICAgICByZXR1
cm4gTk87CiB9CkBAIC02OTY1LDcgKzY5NjksNyBAQCBzdGF0aWMgV2ViRnJhbWUgKmluY3JlbWVu
dEZyYW1lKFdlYkZyYW1lICpmcmFtZSwgV2ViRmluZE9wdGlvbnMgb3B0aW9ucyA9IDApCiB7CiAg
ICAgW1tXZWJGcmFtZVZpZXcgX3ZpZXdUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246WUVTXSBz
ZXRPYmplY3Q6dmlld0NsYXNzIGZvcktleTpNSU1FVHlwZV07CiAgICAgW1tXZWJEYXRhU291cmNl
IF9yZXBUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246WUVTXSBzZXRPYmplY3Q6cmVwcmVzZW50
YXRpb25DbGFzcyBmb3JLZXk6TUlNRVR5cGVdOwotICAgIAorCiAgICAgLy8gRklYTUU6IFdlIGFs
c28gbmVlZCB0byBtYWludGFpbiBNSU1FVHlwZSByZWdpc3RyYXRpb25zICh3aGljaCBjYW4gYmUg
ZHluYW1pY2FsbHkgY2hhbmdlZCkKICAgICAvLyBpbiB0aGUgV2ViQ29yZSBNSU1FVHlwZSByZWdp
c3RyeS4gIEZvciBub3cgd2UncmUgZG9pbmcgdGhpcyBpbiBhIHNhZmUsIGxpbWl0ZWQgbWFubmVy
CiAgICAgLy8gdG8gZml4IDxyZGFyOi8vcHJvYmxlbS81MzcyOTg5PiAtIGEgZnV0dXJlIHJldmFt
cGluZyBvZiB0aGUgZW50aXJlIHN5c3RlbSBpcyBuZWNjZXNhcnkgZm9yIGZ1dHVyZSByb2J1c3Ru
ZXNzCkBAIC03MTM2LDExICs3MTQwLDExIEBAIHN0YXRpYyBXZWJGcmFtZSAqaW5jcmVtZW50RnJh
bWUoV2ViRnJhbWUgKmZyYW1lLCBXZWJGaW5kT3B0aW9ucyBvcHRpb25zID0gMCkKICAgICBhdXRv
KiBjb3JlTWFpbkZyYW1lID0gY29yZShtYWluRnJhbWUpOwogICAgIGlmICghY29yZU1haW5GcmFt
ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKKwogICAgIGF1dG8qIGRvY3VtZW50TG9hZGVy
ID0gY29yZU1haW5GcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRv
Y3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAorCiAgICAgYXV0byYgbGlu
a0ljb25zID0gZG9jdW1lbnRMb2FkZXItPmxpbmtJY29ucygpOwogICAgIGlmIChsaW5rSWNvbnMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNzQ3MCw3ICs3NDc0LDcgQEAgc3Rh
dGljIFdlYkZyYW1lVmlldyAqY29udGFpbmluZ0ZyYW1lVmlldyhOU1ZpZXcgKnZpZXcpCiAtIChJ
QkFjdGlvbil0YWtlU3RyaW5nVVJMRnJvbTogc2VuZGVyCiB7CiAgICAgTlNTdHJpbmcgKlVSTFN0
cmluZyA9IFtzZW5kZXIgc3RyaW5nVmFsdWVdOwotICAgIAorCiAgICAgW1tzZWxmIG1haW5GcmFt
ZV0gbG9hZFJlcXVlc3Q6IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6IFtOU1VSTCBfd2Vi
X1VSTFdpdGhEYXRhQXNTdHJpbmc6IFVSTFN0cmluZ11dXTsKIH0KIApAQCAtNzU1NiwxMSArNzU2
MCwxMSBAQCBzdGF0aWMgV2ViRnJhbWVWaWV3ICpjb250YWluaW5nRnJhbWVWaWV3KE5TVmlldyAq
dmlldykKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYlRocmVhZFJ1biheewot
I2VuZGlmICAgICAgICAgICAgCisjZW5kaWYKICAgICBbW3NlbGYgbWFpbkZyYW1lXSByZWxvYWRd
OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgfSk7Ci0jZW5kaWYgICAgICAgICAgICAK
KyNlbmRpZgogfQogCiAtIChJQkFjdGlvbilyZWxvYWRGcm9tT3JpZ2luOihpZClzZW5kZXIKQEAg
LTc3NDgsMjggKzc3NTIsMjggQEAgc3RhdGljIEJPT0wgZmluZFN0cmluZyhOU1ZpZXcgPFdlYkRv
Y3VtZW50U2VhcmNoaW5nPiAqc2VhcmNoVmlldywgTlNTdHJpbmcgKnN0cmkKIHsKICAgICBpZiAo
X3ByaXZhdGUtPmNsb3NlZCkKICAgICAgICAgcmV0dXJuIE5POwotICAgIAorCiAgICAgLy8gR2V0
IHRoZSBmcmFtZSBob2xkaW5nIHRoZSBzZWxlY3Rpb24sIG9yIHN0YXJ0IHdpdGggdGhlIG1haW4g
ZnJhbWUKICAgICBXZWJGcmFtZSAqc3RhcnRGcmFtZSA9IFtzZWxmIF9zZWxlY3RlZE9yTWFpbkZy
YW1lXTsKLSAgICAKKwogICAgIC8vIFNlYXJjaCB0aGUgZmlyc3QgZnJhbWUsIHRoZW4gYWxsIHRo
ZSBvdGhlciBmcmFtZXMsIGluIG9yZGVyCiAgICAgTlNWaWV3IDxXZWJEb2N1bWVudFNlYXJjaGlu
Zz4gKnN0YXJ0U2VhcmNoVmlldyA9IG5pbDsKICAgICBXZWJGcmFtZSAqZnJhbWUgPSBzdGFydEZy
YW1lOwogICAgIGRvIHsKICAgICAgICAgV2ViRnJhbWUgKm5leHRGcmFtZSA9IGluY3JlbWVudEZy
YW1lKGZyYW1lLCBvcHRpb25zKTsKLSAgICAgICAgCisKICAgICAgICAgQk9PTCBvbmx5T25lRnJh
bWUgPSAoZnJhbWUgPT0gbmV4dEZyYW1lKTsKICAgICAgICAgQVNTRVJUKCFvbmx5T25lRnJhbWUg
fHwgZnJhbWUgPT0gc3RhcnRGcmFtZSk7Ci0gICAgICAgIAorCiAgICAgICAgIGlkIDxXZWJEb2N1
bWVudFZpZXc+IHZpZXcgPSBbW2ZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKICAgICAg
ICAgaWYgKFt2aWV3IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woV2ViRG9jdW1lbnRTZWFy
Y2hpbmcpXSkgewogICAgICAgICAgICAgTlNWaWV3IDxXZWJEb2N1bWVudFNlYXJjaGluZz4gKnNl
YXJjaFZpZXcgPSAoTlNWaWV3IDxXZWJEb2N1bWVudFNlYXJjaGluZz4gKil2aWV3OwotICAgICAg
ICAgICAgCisKICAgICAgICAgICAgIGlmIChmcmFtZSA9PSBzdGFydEZyYW1lKQogICAgICAgICAg
ICAgICAgIHN0YXJ0U2VhcmNoVmlldyA9IHNlYXJjaFZpZXc7Ci0gICAgICAgICAgICAKKwogICAg
ICAgICAgICAgLy8gSW4gc29tZSBjYXNlcyB3ZSBoYXZlIHRvIHNlYXJjaCBzb21lIGNvbnRlbnQg
dHdpY2U7IHNlZSBjb21tZW50IGxhdGVyIGluIHRoaXMgbWV0aG9kLgotICAgICAgICAgICAgLy8g
V2UgY2FuIGF2b2lkIGV2ZXIgZG9pbmcgdGhpcyBpbiB0aGUgY29tbW9uIG9uZS1mcmFtZSBjYXNl
IGJ5IHBhc3NpbmcgdGhlIHdyYXAgb3B0aW9uIHRocm91Z2ggCisgICAgICAgICAgICAvLyBXZSBj
YW4gYXZvaWQgZXZlciBkb2luZyB0aGlzIGluIHRoZSBjb21tb24gb25lLWZyYW1lIGNhc2UgYnkg
cGFzc2luZyB0aGUgd3JhcCBvcHRpb24gdGhyb3VnaAogICAgICAgICAgICAgLy8gaGVyZSwgYW5k
IHRoZW4gYmFpbGluZyBvdXQgYmVmb3JlIHdlIGdldCB0byB0aGUgY29kZSB0aGF0IHdvdWxkIHNl
YXJjaCBhZ2FpbiBpbiB0aGUKICAgICAgICAgICAgIC8vIHNhbWUgY29udGVudC4KICAgICAgICAg
ICAgIFdlYkZpbmRPcHRpb25zIG9wdGlvbnNGb3JUaGlzUGFzcyA9IG9ubHlPbmVGcmFtZSA/IG9w
dGlvbnMgOiAob3B0aW9ucyAmIH5XZWJGaW5kT3B0aW9uc1dyYXBBcm91bmQpOwpAQCAtNzc4MCwx
NSArNzc4NCwxNSBAQCBzdGF0aWMgQk9PTCBmaW5kU3RyaW5nKE5TVmlldyA8V2ViRG9jdW1lbnRT
ZWFyY2hpbmc+ICpzZWFyY2hWaWV3LCBOU1N0cmluZyAqc3RyaQogICAgICAgICAgICAgICAgIFtb
c2VsZiB3aW5kb3ddIG1ha2VGaXJzdFJlc3BvbmRlcjpzZWFyY2hWaWV3XTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gWUVTOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAg
ICAgIGlmIChvbmx5T25lRnJhbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5POwogICAgICAg
ICB9CiAgICAgICAgIGZyYW1lID0gbmV4dEZyYW1lOwogICAgIH0gd2hpbGUgKGZyYW1lICYmIGZy
YW1lICE9IHN0YXJ0RnJhbWUpOwotICAgIAotICAgIC8vIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBm
cmFtZXMgYW5kIFdlYkZpbmRPcHRpb25zV3JhcEFyb3VuZCBpcyBzZXQgYW5kIHdlJ3ZlIHZpc2l0
ZWQgZWFjaCBvbmUgd2l0aG91dCBmaW5kaW5nIGEgcmVzdWx0LCB3ZSBzdGlsbCBuZWVkIHRvIHNl
YXJjaCBpbiB0aGUgCi0gICAgLy8gZmlyc3Qtc2VhcmNoZWQgZnJhbWUgdXAgdG8gdGhlIHNlbGVj
dGlvbi4gSG93ZXZlciwgdGhlIEFQSSBkb2Vzbid0IHByb3ZpZGUgYSB3YXkgdG8gc2VhcmNoIG9u
bHkgdXAgdG8gYSBwYXJ0aWN1bGFyIHBvaW50LiBUaGUgb25seSAKKworICAgIC8vIElmIHRoZXJl
IGFyZSBtdWx0aXBsZSBmcmFtZXMgYW5kIFdlYkZpbmRPcHRpb25zV3JhcEFyb3VuZCBpcyBzZXQg
YW5kIHdlJ3ZlIHZpc2l0ZWQgZWFjaCBvbmUgd2l0aG91dCBmaW5kaW5nIGEgcmVzdWx0LCB3ZSBz
dGlsbCBuZWVkIHRvIHNlYXJjaCBpbiB0aGUKKyAgICAvLyBmaXJzdC1zZWFyY2hlZCBmcmFtZSB1
cCB0byB0aGUgc2VsZWN0aW9uLiBIb3dldmVyLCB0aGUgQVBJIGRvZXNuJ3QgcHJvdmlkZSBhIHdh
eSB0byBzZWFyY2ggb25seSB1cCB0byBhIHBhcnRpY3VsYXIgcG9pbnQuIFRoZSBvbmx5CiAgICAg
Ly8gd2F5IHRvIG1ha2Ugc3VyZSB0aGUgZW50aXJlIGZyYW1lIGlzIHNlYXJjaGVkIGlzIHRvIHBh
c3MgV2ViRmluZE9wdGlvbnNXcmFwQXJvdW5kLiBXaGVuIHRoZXJlIGFyZSBubyBtYXRjaGVzLCB0
aGlzIHdpbGwgc2VhcmNoCiAgICAgLy8gc29tZSBjb250ZW50IHRoYXQgd2UgYWxyZWFkeSBzZWFy
Y2hlZCBvbiB0aGUgZmlyc3QgcGFzcy4gSW4gdGhlIHdvcnN0IGNhc2UsIHdlIGNvdWxkIHNlYXJj
aCB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoaXMgZnJhbWUgdHdpY2UuCiAgICAgLy8gVG8gZml4
IHRoaXMsIHdlJ2QgbmVlZCB0byBhZGQgYSBtZWNoYW5pc20gdG8gc3BlY2lmeSBhIHJhbmdlIGlu
IHdoaWNoIHRvIHNlYXJjaC4KQEAgLTc4NTEsNyArNzg1NSw3IEBAIHN0YXRpYyBCT09MIGZpbmRT
dHJpbmcoTlNWaWV3IDxXZWJEb2N1bWVudFNlYXJjaGluZz4gKnNlYXJjaFZpZXcsIE5TU3RyaW5n
ICpzdHJpCiB7CiAgICAgcmV0dXJuIF9wcml2YXRlLT5zY3JpcHREZWJ1Z0RlbGVnYXRlOwogfQot
ICAKKwogLSAodm9pZClzZXRIaXN0b3J5RGVsZWdhdGU6KGlkKWRlbGVnYXRlCiB7CiAgICAgX3By
aXZhdGUtPmhpc3RvcnlEZWxlZ2F0ZSA9IGRlbGVnYXRlOwpAQCAtNzk1MSwxMCArNzk1NSwxMCBA
QCBzdGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsbwogICAgICAgICBpZCA8V2ViRG9jdW1lbnRWaWV3PiB2
aWV3ID0gW1tmcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107CiAgICAgICAgIGlmICh2aWV3
ICYmICFbdmlldyBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKFdlYk11bHRpcGxlVGV4dE1h
dGNoZXMpXSkKICAgICAgICAgICAgIHJldHVybiBOTzsKLSAgICAgICAgCisKICAgICAgICAgZnJh
bWUgPSBpbmNyZW1lbnRGcmFtZShmcmFtZSk7CiAgICAgfSB3aGlsZSAoZnJhbWUpOwotICAgIAor
CiAgICAgcmV0dXJuIFlFUzsKIH0KIApAQCAtNzk3NSw3ICs3OTc5LDcgQEAgc3RhdGljIE5TQXBw
bGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG8KICAgICAgICAgaWYgKFt2aWV3IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9j
b2woV2ViTXVsdGlwbGVUZXh0TWF0Y2hlcyldKSB7CiAgICAgICAgICAgICBpZiAobWFya01hdGNo
ZXMpCiAgICAgICAgICAgICAgICAgWyhOU1ZpZXcgPFdlYk11bHRpcGxlVGV4dE1hdGNoZXM+Kil2
aWV3IHNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQ6aGlnaGxpZ2h0XTsKLSAgICAg
ICAgCisKICAgICAgICAgICAgIEFTU0VSVChsaW1pdCA9PSAwIHx8IG1hdGNoQ291bnQgPCBsaW1p
dCk7CiAgICAgICAgICAgICBtYXRjaENvdW50ICs9IFsoTlNWaWV3IDxXZWJNdWx0aXBsZVRleHRN
YXRjaGVzPiopdmlldyBjb3VudE1hdGNoZXNGb3JUZXh0OnN0cmluZyBpbkRPTVJhbmdlOnJhbmdl
IG9wdGlvbnM6b3B0aW9ucyBsaW1pdDoobGltaXQgPT0gMCA/IDAgOiBsaW1pdCAtIG1hdGNoQ291
bnQpIG1hcmtNYXRjaGVzOm1hcmtNYXRjaGVzXTsKIApAQCAtNzk4MywxMCArNzk4NywxMCBAQCBz
dGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsbwogICAgICAgICAgICAgaWYgKGxpbWl0ID4gMCAmJiBtYXRj
aENvdW50ID49IGxpbWl0KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIAorCiAgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUoZnJhbWUpOwogICAgIH0gd2hp
bGUgKGZyYW1lKTsKLSAgICAKKwogICAgIHJldHVybiBtYXRjaENvdW50OwogfQogCkBAIC04MDAw
LDcgKzgwMDQsNyBAQCBzdGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpT
VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsbwogICAgICAgICBpZCA8V2ViRG9j
dW1lbnRWaWV3PiB2aWV3ID0gW1tmcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107CiAgICAg
ICAgIGlmIChbdmlldyBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKFdlYk11bHRpcGxlVGV4
dE1hdGNoZXMpXSkKICAgICAgICAgICAgIFsoTlNWaWV3IDxXZWJNdWx0aXBsZVRleHRNYXRjaGVz
PiopdmlldyB1bm1hcmtBbGxUZXh0TWF0Y2hlc107Ci0gICAgICAgIAorCiAgICAgICAgIGZyYW1l
ID0gaW5jcmVtZW50RnJhbWUoZnJhbWUpOwogICAgIH0gd2hpbGUgKGZyYW1lKTsKIH0KQEAgLTgw
MzQsNyArODAzOCw3IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9t
SlNWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvCiAKICAgICAgICAgZnJhbWUg
PSBpbmNyZW1lbnRGcmFtZShmcmFtZSk7CiAgICAgfSB3aGlsZSAoZnJhbWUpOwotICAgIAorCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtODE4Nyw3ICs4MTkxLDcgQEAgc3RhdGljIE5TQXBw
bGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG8KICAgICBOU1JlY3RGaWxsKHJlY3QpOwogICAgIFtjdXJyZW50Q29udGV4dCBy
ZXN0b3JlR3JhcGhpY3NTdGF0ZV07CiAjZW5kaWYKLSAgICAKKwogICAgIFNFTCBzZWxlY3RvciA9
IEBzZWxlY3Rvcih3ZWJWaWV3OmRyYXdGb290ZXJJblJlY3Q6KTsKICAgICBpZiAoIVtfcHJpdmF0
ZS0+VUlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKQogICAgICAgICByZXR1
cm47CkBAIC04MjA2LDcgKzgyMTAsNyBAQCBzdGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciog
YWVEZXNjRnJvbUpTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsbwogICAgIE5T
UHJpbnRPcGVyYXRpb24gKm9wID0gW05TUHJpbnRPcGVyYXRpb24gY3VycmVudE9wZXJhdGlvbl07
CiAgICAgTlNQcmludEluZm8gKmluZm8gPSBbb3AgcHJpbnRJbmZvXTsKICAgICBOU011dGFibGVE
aWN0aW9uYXJ5ICppbmZvRGljdGlvbmFyeSA9IFtpbmZvIGRpY3Rpb25hcnldOwotICAgIAorCiAg
ICAgLy8gV2UgbmVlZCB0byBtb2RpZnkgdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgaW4gdGhl
IE5TUHJpbnRJbmZvIHRvIGFjY291bnQgZm9yIHRoZSBzcGFjZSBuZWVkZWQgYnkgdGhlCiAgICAg
Ly8gaGVhZGVyIGFuZCBmb290ZXIuIEJlY2F1c2UgdGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBt
b3JlIHRoYW4gb25jZSBvbiB0aGUgc2FtZSBOU1ByaW50SW5mbyAoc2VlIDUwMzgwODcpLAogICAg
IC8vIHdlIHN0YXNoIGF3YXkgdGhlIHVubW9kaWZpZWQgdG9wIGFuZCBib3R0b20gbWFyZ2lucyB0
aGUgZmlyc3QgdGltZSB0aGlzIG1ldGhvZCBpcyBjYWxsZWQsIGFuZCB3ZSByZWFkIGZyb20KQEAg
LTgyMjYsNyArODIzMCw3IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NG
cm9tSlNWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvCiAgICAgICAgIG9yaWdp
bmFsVG9wTWFyZ2luID0gW29yaWdpbmFsVG9wTWFyZ2luTnVtYmVyIGZsb2F0VmFsdWVdOwogICAg
ICAgICBvcmlnaW5hbEJvdHRvbU1hcmdpbiA9IFtbaW5mb0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5
OldlYktpdE9yaWdpbmFsQm90dG9tUHJpbnRpbmdNYXJnaW5LZXldIGZsb2F0VmFsdWVdOwogICAg
IH0KLSAgICAKKwogICAgIGZsb2F0IHNjYWxlID0gW29wIF93ZWJfcGFnZVNldHVwU2NhbGVGYWN0
b3JdOwogICAgIFtpbmZvIHNldFRvcE1hcmdpbjpvcmlnaW5hbFRvcE1hcmdpbiArIFtzZWxmIF9o
ZWFkZXJIZWlnaHRdICogc2NhbGVdOwogICAgIFtpbmZvIHNldEJvdHRvbU1hcmdpbjpvcmlnaW5h
bEJvdHRvbU1hcmdpbiArIFtzZWxmIF9mb290ZXJIZWlnaHRdICogc2NhbGVdOwpAQCAtODI0Miwx
MSArODI0NiwxMSBAQCBzdGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpT
VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsbwogICAgIE5TU2l6ZSBwYXBlclNp
emUgPSBbcHJpbnRJbmZvIHBhcGVyU2l6ZV07CiAgICAgZmxvYXQgaGVhZGVyRm9vdGVyTGVmdCA9
IFtwcmludEluZm8gbGVmdE1hcmdpbl0vc2NhbGU7CiAgICAgZmxvYXQgaGVhZGVyRm9vdGVyV2lk
dGggPSAocGFwZXJTaXplLndpZHRoIC0gKFtwcmludEluZm8gbGVmdE1hcmdpbl0gKyBbcHJpbnRJ
bmZvIHJpZ2h0TWFyZ2luXSkpL3NjYWxlOwotICAgIE5TUmVjdCBmb290ZXJSZWN0ID0gTlNNYWtl
UmVjdChoZWFkZXJGb290ZXJMZWZ0LCBbcHJpbnRJbmZvIGJvdHRvbU1hcmdpbl0vc2NhbGUgLSBb
c2VsZiBfZm9vdGVySGVpZ2h0XSAsIAorICAgIE5TUmVjdCBmb290ZXJSZWN0ID0gTlNNYWtlUmVj
dChoZWFkZXJGb290ZXJMZWZ0LCBbcHJpbnRJbmZvIGJvdHRvbU1hcmdpbl0vc2NhbGUgLSBbc2Vs
ZiBfZm9vdGVySGVpZ2h0XSAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhl
YWRlckZvb3RlcldpZHRoLCBbc2VsZiBfZm9vdGVySGVpZ2h0XSk7Ci0gICAgTlNSZWN0IGhlYWRl
clJlY3QgPSBOU01ha2VSZWN0KGhlYWRlckZvb3RlckxlZnQsIChwYXBlclNpemUuaGVpZ2h0IC0g
W3ByaW50SW5mbyB0b3BNYXJnaW5dKS9zY2FsZSwgCisgICAgTlNSZWN0IGhlYWRlclJlY3QgPSBO
U01ha2VSZWN0KGhlYWRlckZvb3RlckxlZnQsIChwYXBlclNpemUuaGVpZ2h0IC0gW3ByaW50SW5m
byB0b3BNYXJnaW5dKS9zY2FsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVhZGVyRm9vdGVyV2lkdGgsIFtzZWxmIF9oZWFkZXJIZWlnaHRdKTsKLSAgICAKKwogICAgIFtz
ZWxmIF9kcmF3SGVhZGVySW5SZWN0OmhlYWRlclJlY3RdOwogICAgIFtzZWxmIF9kcmF3Rm9vdGVy
SW5SZWN0OmZvb3RlclJlY3RdOwogfQpAQCAtODQ3NSwxMSArODQ3OSwxMSBAQCBzdGF0aWMgTlNB
cHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsbwogICAgIFtkZWZhdWx0Q2VudGVyIHJlbW92ZU9ic2VydmVyOl9wcml2YXRl
LT5lZGl0aW5nRGVsZWdhdGUgbmFtZTpXZWJWaWV3RGlkRW5kRWRpdGluZ05vdGlmaWNhdGlvbiBv
YmplY3Q6c2VsZl07CiAgICAgW2RlZmF1bHRDZW50ZXIgcmVtb3ZlT2JzZXJ2ZXI6X3ByaXZhdGUt
PmVkaXRpbmdEZWxlZ2F0ZSBuYW1lOldlYlZpZXdEaWRDaGFuZ2VUeXBpbmdTdHlsZU5vdGlmaWNh
dGlvbiBvYmplY3Q6c2VsZl07CiAgICAgW2RlZmF1bHRDZW50ZXIgcmVtb3ZlT2JzZXJ2ZXI6X3By
aXZhdGUtPmVkaXRpbmdEZWxlZ2F0ZSBuYW1lOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3Rp
ZmljYXRpb24gb2JqZWN0OnNlbGZdOwotICAgIAorCiAgICAgX3ByaXZhdGUtPmVkaXRpbmdEZWxl
Z2F0ZSA9IGRlbGVnYXRlOwogICAgIFtfcHJpdmF0ZS0+ZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVy
IHJlbGVhc2VdOwogICAgIF9wcml2YXRlLT5lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXIgPSBuaWw7
Ci0gICAgCisKICAgICAvLyBhZGQgbm90aWZpY2F0aW9ucyBmb3IgbmV3IGRlbGVnYXRlCiAgICAg
W3NlbGYgcmVnaXN0ZXJGb3JFZGl0aW5nRGVsZWdhdGVOb3RpZmljYXRpb246V2ViVmlld0RpZEJl
Z2luRWRpdGluZ05vdGlmaWNhdGlvbiBzZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlld0RpZEJlZ2lu
RWRpdGluZzopXTsKICAgICBbc2VsZiByZWdpc3RlckZvckVkaXRpbmdEZWxlZ2F0ZU5vdGlmaWNh
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uIHNlbGVjdG9yOkBzZWxlY3Rvcih3ZWJW
aWV3RGlkQ2hhbmdlOildOwpAQCAtODUxNywxNCArODUyMSwxNCBAQCBzdGF0aWMgTlNBcHBsZUV2
ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsbwogewogICAgIGlmIChncmFtbWFyQ2hlY2tpbmdFbmFibGVkID09IGZsYWcpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKwogICAgIGdyYW1tYXJDaGVja2luZ0VuYWJsZWQgPSBmbGFnOwot
ICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6Z3JhbW1h
ckNoZWNraW5nRW5hYmxlZCBmb3JLZXk6V2ViR3JhbW1hckNoZWNraW5nRW5hYmxlZF07ICAgIAor
ICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6Z3JhbW1h
ckNoZWNraW5nRW5hYmxlZCBmb3JLZXk6V2ViR3JhbW1hckNoZWNraW5nRW5hYmxlZF07CiAgICAg
W1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVBhbmVsc107CiAKICAg
ICAvLyBXZSBjYWxsIF9wcmVmbGlnaHRTcGVsbENoZWNrZXIgd2hlbiB0dXJuaW5nIGNvbnRpbnVv
dXMgc3BlbGwgY2hlY2tpbmcgb24sIGJ1dCB3ZSBkb24ndCBuZWVkIHRvIGRvIHRoYXQgaGVyZQog
ICAgIC8vIGJlY2F1c2UgZ3JhbW1hciBjaGVja2luZyBvbmx5IG9jY3VycyBvbiBjb2RlIHBhdGhz
IHRoYXQgYWxyZWFkeSBwcmVmbGlnaHQgc3BlbGwgY2hlY2tpbmcgYXBwcm9wcmlhdGVseS4KLSAg
ICAKKwogICAgIGlmICghW3NlbGYgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkXSkKICAgICAgICAg
W1tzZWxmIG1haW5GcmFtZV0gX3VubWFya0FsbEJhZEdyYW1tYXJdOwogfQpAQCAtODU5Miw3ICs4
NTk2LDcgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVl
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG8KICAgICBpZiAoYXV0b21hdGljUXVvdGVT
dWJzdGl0dXRpb25FbmFibGVkID09IGZsYWcpCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvbWF0
aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQgPSBmbGFnOwotICAgIFtbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6YXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25F
bmFibGVkIGZvcktleTpXZWJBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWRdOyAgICAK
KyAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRCb29sOmF1dG9t
YXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCBmb3JLZXk6V2ViQXV0b21hdGljUXVvdGVTdWJz
dGl0dXRpb25FbmFibGVkXTsKICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tl
cl0gdXBkYXRlUGFuZWxzXTsKIH0KIApAQCAtODYwNiw3ICs4NjEwLDcgQEAgc3RhdGljIE5TQXBw
bGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG8KICAgICBpZiAoYXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQgPT0gZmxh
ZykKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkID0g
ZmxhZzsKLSAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRCb29s
OmF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkIGZvcktleTpXZWJBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uRW5hYmxlZF07ICAgIAorICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVm
YXVsdHNdIHNldEJvb2w6YXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQgZm9yS2V5OldlYkF1
dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkXTsKICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gdXBkYXRlUGFuZWxzXTsKIH0KIApAQCAtODYyMCw3ICs4NjI0LDcgQEAg
c3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG8KICAgICBpZiAoYXV0b21hdGljRGFzaFN1YnN0aXR1dGlv
bkVuYWJsZWQgPT0gZmxhZykKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG9tYXRpY0Rhc2hTdWJz
dGl0dXRpb25FbmFibGVkID0gZmxhZzsKLSAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXSBzZXRCb29sOmF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkIGZvcktl
eTpXZWJBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZF07ICAgIAorICAgIFtbTlNVc2Vy
RGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6YXV0b21hdGljRGFzaFN1YnN0
aXR1dGlvbkVuYWJsZWQgZm9yS2V5OldlYkF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVk
XTsKICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlUGFuZWxz
XTsKIH0KIApAQCAtODYzNCw3ICs4NjM4LDcgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0
b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG8KICAg
ICBpZiAoYXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCA9PSBmbGFnKQogICAgICAgICBy
ZXR1cm47CiAgICAgYXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCA9IGZsYWc7Ci0gICAg
W1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDphdXRvbWF0aWNU
ZXh0UmVwbGFjZW1lbnRFbmFibGVkIGZvcktleTpXZWJBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRF
bmFibGVkXTsgICAgCisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10g
c2V0Qm9vbDphdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkIGZvcktleTpXZWJBdXRvbWF0
aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkXTsKICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNw
ZWxsQ2hlY2tlcl0gdXBkYXRlUGFuZWxzXTsKIH0KIApAQCAtODY0OCw3ICs4NjUyLDcgQEAgc3Rh
dGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG8KICAgICBpZiAoYXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9u
RW5hYmxlZCA9PSBmbGFnKQogICAgICAgICByZXR1cm47CiAgICAgYXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCA9IGZsYWc7Ci0gICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gc2V0Qm9vbDphdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkIGZv
cktleTpXZWJBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkXTsgICAgCisgICAgW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDphdXRvbWF0aWNTcGVs
bGluZ0NvcnJlY3Rpb25FbmFibGVkIGZvcktleTpXZWJBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rp
b25FbmFibGVkXTsKICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gdXBk
YXRlUGFuZWxzXTsKIH0KIApAQCAtODY2Niw3ICs4NjcwLDcgQEAgc3RhdGljIE5TQXBwbGVFdmVu
dERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG8KIC0gKHZvaWQpcmVwbGFjZVNlbGVjdGlvbldpdGhOb2RlOihET01Ob2RlICopbm9kZQog
ewogICAgIFtbc2VsZiBfc2VsZWN0ZWRPck1haW5GcmFtZV0gX3JlcGxhY2VTZWxlY3Rpb25XaXRo
Tm9kZTpub2RlIHNlbGVjdFJlcGxhY2VtZW50OllFUyBzbWFydFJlcGxhY2U6Tk8gbWF0Y2hTdHls
ZTpOT107Ci19ICAgIAorfQogCiAtICh2b2lkKXJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dDooTlNT
dHJpbmcgKil0ZXh0CiB7CkBAIC04NjkwLDcgKzg2OTQsNyBAQCBzdGF0aWMgTlNBcHBsZUV2ZW50
RGVzY3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsbwogICAgIGlmIChjb3JlRnJhbWUpCiAgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuZGVs
ZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRlKFsoV2ViSFRNTFZpZXcgKilbW3dlYkZyYW1lIGZy
YW1lVmlld10gZG9jdW1lbnRWaWV3XSBfY2FuU21hcnRDb3B5T3JEZWxldGVdKTsKIH0KLSAgICAK
KwogLSAodm9pZClhcHBseVN0eWxlOihET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGUKIHsK
ICAgICAvLyBXZSBkb24ndCBrbm93IGVub3VnaCBhdCB0aGxzIGxldmVsIHRvIHBhc3MgaW4gYSBy
ZWxldmFudCBXZWJVbmRvQWN0aW9uOyB3ZSdkIGhhdmUgdG8KQEAgLTg3NDksNyArODc1Myw3IEBA
IEZPUldBUkQodG9nZ2xlVW5kZXJsaW5lKQogICAgIGF1dG8qIGNvcmVGcmFtZSA9IGNvcmUoW3Nl
bGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAg
cmV0dXJuOwotICAgIAorCiAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5pbnNlcnREaWN0YXRpb25Q
aHJhc2VzKHZlY3RvckZvckRpY3RhdGlvblBocmFzZXNBcnJheShkaWN0YXRpb25QaHJhc2VzKSwg
bWV0YWRhdGEpOwogfQogI2VuZGlmCkBAIC04NzYzLDcgKzg3NjcsNyBAQCBGT1JXQVJEKHRvZ2ds
ZVVuZGVybGluZSkKIHsKICAgICBpZiAoYXV0byogY29yZUZyYW1lID0gY29yZShbc2VsZiBfc2Vs
ZWN0ZWRPck1haW5GcmFtZV0pKQogICAgICAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5m
b250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKS5jcmVhdGVEaWN0aW9uYXJ5KCkuYXV0b3Jl
bGVhc2UoKTsKLSAgICAKKwogICAgIHJldHVybiBuaWw7CiB9CiAKQEAgLTg4NTMsNyArODg1Nyw3
IEBAIEZPUldBUkQodG9nZ2xlVW5kZXJsaW5lKQogICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFj
aXR5ID0gMTYgKiAxMDI0ICogMTAyNDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSA0ICogMTAyNCAqIDEwMjQ7
IAorICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5ID0gNCAqIDEwMjQgKiAxMDI0OwogI2Vu
ZGlmCiAKICAgICAgICAgY2FjaGVNaW5EZWFkQ2FwYWNpdHkgPSAwOwpAQCAtODkwNCw3ICs4OTA4
LDcgQEAgRk9SV0FSRCh0b2dnbGVVbmRlcmxpbmUpCiAgICAgICAgIGVsc2UgaWYgKG1lbVNpemUg
Pj0gNTEyKQogICAgICAgICAgICAgbnN1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gMSAqIDEwMjQg
KiAxMDI0OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBuc3VybENhY2hlTWVtb3J5Q2FwYWNp
dHkgPSAgICAgIDUxMiAqIDEwMjQ7IAorICAgICAgICAgICAgbnN1cmxDYWNoZU1lbW9yeUNhcGFj
aXR5ID0gICAgICA1MTIgKiAxMDI0OwogCiAgICAgICAgIC8vIEZvdW5kYXRpb24gZGlzayBjYWNo
ZSBjYXBhY2l0eSAoaW4gYnl0ZXMpCiAgICAgICAgIGlmIChkaXNrRnJlZVNpemUgPj0gMTYzODQp
CkBAIC04OTM2LDcgKzg5NDAsNyBAQCBGT1JXQVJEKHRvZ2dsZVVuZGVybGluZSkKIAogICAgICAg
ICAvLyBPYmplY3QgY2FjaGUgY2FwYWNpdGllcyAoaW4gYnl0ZXMpCiAgICAgICAgIC8vIChUZXN0
aW5nIGluZGljYXRlcyB0aGF0IHZhbHVlIC8gTUIgZGVwZW5kcyBoZWF2aWx5IG9uIGNvbnRlbnQg
YW5kCi0gICAgICAgIC8vIGJyb3dzaW5nIHBhdHRlcm4uIEV2ZW4gZ3Jvd3RoIGFib3ZlIDEyOE1C
IGNhbiBoYXZlIHN1YnN0YW50aWFsIAorICAgICAgICAvLyBicm93c2luZyBwYXR0ZXJuLiBFdmVu
IGdyb3d0aCBhYm92ZSAxMjhNQiBjYW4gaGF2ZSBzdWJzdGFudGlhbAogICAgICAgICAvLyB2YWx1
ZSAvIE1CIGZvciBzb21lIGNvbnRlbnQgLyBicm93c2luZyBwYXR0ZXJucy4pCiAgICAgICAgIGlm
IChtZW1TaXplID49IDQwOTYpCiAgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAxOTIg
KiAxMDI0ICogMTAyNDsKQEAgLTg5NzEsNyArODk3NSw3IEBAIEZPUldBUkQodG9nZ2xlVW5kZXJs
aW5lKQogICAgICAgICBlbHNlIGlmIChtZW1TaXplID49IDI1NikKICAgICAgICAgICAgIG5zdXJs
Q2FjaGVNZW1vcnlDYXBhY2l0eSA9IDEgKiAxMDI0ICogMTAyNDsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbnN1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gICAgICA1MTIgKiAxMDI0OyAKKyAg
ICAgICAgICAgIG5zdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9ICAgICAgNTEyICogMTAyNDsKICNl
bmRpZgogCiAgICAgICAgIC8vIEZvdW5kYXRpb24gZGlzayBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0
ZXMpCkBAIC05MDQ3LDcgKzkwNTEsNyBAQCBGT1JXQVJEKHRvZ2dsZVVuZGVybGluZSkKICAgICBX
ZWJEYXRhU291cmNlICpkYXRhU291cmNlID0gWyhXZWJGcmFtZSAqKVtlbGVtZW50IG9iamVjdEZv
cktleTpXZWJFbGVtZW50RnJhbWVLZXldIGRhdGFTb3VyY2VdOwogICAgIE5TVVJMUmVxdWVzdCAq
cmVxdWVzdCA9IFtbZGF0YVNvdXJjZSByZXF1ZXN0XSBjb3B5XTsKICAgICBBU1NFUlQocmVxdWVz
dCk7Ci0gICAgCisKICAgICBbc2VsZiBfb3Blbk5ld1dpbmRvd1dpdGhSZXF1ZXN0OnJlcXVlc3Rd
OwogICAgIFtyZXF1ZXN0IHJlbGVhc2VdOwogfQpAQCAtOTA1OCwxMiArOTA2MiwxMiBAQCBGT1JX
QVJEKHRvZ2dsZVVuZGVybGluZSkKICAgICBpZiAoIVtkb2N1bWVudFZpZXcgY29uZm9ybXNUb1By
b3RvY29sOkBwcm90b2NvbChXZWJEb2N1bWVudFRleHQpXSkgewogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCiAgICAgTlNTdHJpbmcgKnNlbGVjdGVkU3RyaW5nID0gWyhpZCA8V2ViRG9j
dW1lbnRUZXh0Pilkb2N1bWVudFZpZXcgc2VsZWN0ZWRTdHJpbmddOwogICAgIGlmIChbc2VsZWN0
ZWRTdHJpbmcgbGVuZ3RoXSA9PSAwKSB7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisK
ICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRX
aXRoVW5pcXVlTmFtZV07CiAgICAgW3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOltOU0FycmF5IGFy
cmF5V2l0aE9iamVjdDpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSBvd25l
cjpuaWxdOwogICAgIE5TTXV0YWJsZVN0cmluZyAqcyA9IFtzZWxlY3RlZFN0cmluZyBtdXRhYmxl
Q29weV07CkBAIC05MDcyLDcgKzkwNzYsNyBAQCBGT1JXQVJEKHRvZ2dsZVVuZGVybGluZSkKICAg
ICBbcyByZXBsYWNlT2NjdXJyZW5jZXNPZlN0cmluZzpub25CcmVha2luZ1NwYWNlU3RyaW5nIHdp
dGhTdHJpbmc6QCIgIiBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3MgbGVuZ3RoXSld
OwogICAgIFtwYXN0ZWJvYXJkIHNldFN0cmluZzpzIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3Ry
aW5nUGFzdGVib2FyZFR5cGUoKV07CiAgICAgW3MgcmVsZWFzZV07Ci0gICAgCisKICAgICAvLyBG
SVhNRTogc2VlbXMgZnJhZ2lsZSB0byB1c2UgdGhlIHNlcnZpY2UgYnkgbmFtZSwgYnV0IHRoaXMg
aXMgd2hhdCBBcHBLaXQgZG9lcwogICAgIE5TUGVyZm9ybVNlcnZpY2UoQCJTZWFyY2ggV2l0aCBH
b29nbGUiLCBwYXN0ZWJvYXJkKTsKIH0KQEAgLTkxMTAsMTEgKzkxMTQsMTEgQEAgRk9SV0FSRCh0
b2dnbGVVbmRlcmxpbmUpCiAgICAgQVNTRVJUKCFfcHJpdmF0ZS0+aWRlbnRpZmllck1hcC5jb250
YWlucyhpZGVudGlmaWVyKSk7CiAKICAgICAvLyBJZiB0aGUgaWRlbnRpZmllciBtYXAgaXMgaW5p
dGlhbGx5IGVtcHR5IGl0IG1lYW5zIHdlJ3JlIHN0YXJ0aW5nIGEgbG9hZAotICAgIC8vIG9mIHNv
bWV0aGluZy4gVGhlIHNlbWFudGljIGlzIHRoYXQgdGhlIHdlYiB2aWV3IHNob3VsZCBiZSBhcm91
bmQgYXMgbG9uZyAKKyAgICAvLyBvZiBzb21ldGhpbmcuIFRoZSBzZW1hbnRpYyBpcyB0aGF0IHRo
ZSB3ZWIgdmlldyBzaG91bGQgYmUgYXJvdW5kIGFzIGxvbmcKICAgICAvLyBhcyBzb21ldGhpbmcg
aXMgbG9hZGluZy4gQmVjYXVzZSBvZiB0aGF0IHdlIHJldGFpbiB0aGUgd2ViIHZpZXcuCiAgICAg
aWYgKF9wcml2YXRlLT5pZGVudGlmaWVyTWFwLmlzRW1wdHkoKSkKICAgICAgICAgQ0ZSZXRhaW4o
c2VsZik7Ci0gICAgCisKICAgICBfcHJpdmF0ZS0+aWRlbnRpZmllck1hcC5zZXQoaWRlbnRpZmll
ciwgb2JqZWN0KTsKIH0KIApAQCAtOTEyNyw3ICs5MTMxLDcgQEAgRk9SV0FSRCh0b2dnbGVVbmRl
cmxpbmUpCiB7CiAgICAgQVNTRVJUKF9wcml2YXRlLT5pZGVudGlmaWVyTWFwLmNvbnRhaW5zKGlk
ZW50aWZpZXIpKTsKICAgICBfcHJpdmF0ZS0+aWRlbnRpZmllck1hcC5yZW1vdmUoaWRlbnRpZmll
cik7Ci0gICAgCisKICAgICAvLyBJZiB0aGUgaWRlbnRpZmllciBtYXAgaXMgbm93IGVtcHR5IGl0
IG1lYW5zIHdlJ3JlIG5vIGxvbmdlciBsb2FkaW5nIGFueXRoaW5nCiAgICAgLy8gYW5kIHdlIHNo
b3VsZCByZWxlYXNlIHRoZSB3ZWIgdmlldy4gQXV0b3JlbGVhc2UgcmF0aGVyIHRoYW4gcmVsZWFz
ZSBpbiBvcmRlciB0bwogICAgIC8vIGF2b2lkIHJlLWVudGVyaW5nIHRoaXMgbWV0aG9kIGJlbmVh
dGggLWRlYWxsb2Mgd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyLiA8cmRhcjovL3Byb2JsZW0vMTA1
MjM3MjE+CkBAIC05MTU5LDE1ICs5MTYzLDE1IEBAIEZPUldBUkQodG9nZ2xlVW5kZXJsaW5lKQog
ICAgICAgICBfcHJpdmF0ZS0+X2tleWJvYXJkVUlNb2RlQWNjZXNzZWQgPSBZRVM7CiAKICAgICAg
ICAgW3NlbGYgX3JldHJpZXZlS2V5Ym9hcmRVSU1vZGVGcm9tUHJlZmVyZW5jZXM6bmlsXTsKLSAg
ICAgICAgCisKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgW1tOU0Rpc3RyaWJ1
dGVkTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIAotICAgICAgICAgICAgYWRkT2Jz
ZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX3JldHJpZXZlS2V5Ym9hcmRVSU1vZGVGcm9t
UHJlZmVyZW5jZXM6KSAKKyAgICAgICAgW1tOU0Rpc3RyaWJ1dGVkTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdCisgICAgICAgICAgICBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBz
ZWxlY3RvcihfcmV0cmlldmVLZXlib2FyZFVJTW9kZUZyb21QcmVmZXJlbmNlczopCiAgICAgICAg
ICAgICBuYW1lOktleWJvYXJkVUlNb2RlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxd
OwogI2VuZGlmCiAKLSAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVy
XSAKLSAgICAgICAgICAgIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9yZXRy
aWV2ZUtleWJvYXJkVUlNb2RlRnJvbVByZWZlcmVuY2VzOikgCisgICAgICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0KKyAgICAgICAgICAgIGFkZE9ic2VydmVyOnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKF9yZXRyaWV2ZUtleWJvYXJkVUlNb2RlRnJvbVByZWZlcmVuY2Vz
OikKICAgICAgICAgICAgIG5hbWU6V2ViUHJlZmVyZW5jZXNDaGFuZ2VkSW50ZXJuYWxOb3RpZmlj
YXRpb24gb2JqZWN0Om5pbF07CiAgICAgfQogICAgIHJldHVybiBfcHJpdmF0ZS0+X2tleWJvYXJk
VUlNb2RlOwpAQCAtOTIxOCwxNSArOTIyMiwxNSBAQCBGT1JXQVJEKHRvZ2dsZVVuZGVybGluZSkK
IAogLyoKICAgICBUaGUgb3JkZXIgb2YgZXZlbnRzIHdpdGggY29tcG9zaXRpbmcgdXBkYXRlcyBp
cyB0aGlzOgotICAgIAorCiAgICBTdGFydCBvZiBydW5sb29wICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVuZCBvZiBydW5sb29wCiAgICAgICAgIHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgLS18LS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLQog
ICAgICAgICAgICBeICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBeCiAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKICAgICBOU1dpbmRvdyB1cGRhdGUsIHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ0EgY29tbWl0Ci0gICAgIE5TVmlldyBkcmF3aW5nICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICBmbHVzaCAgICAgICAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgTlNWaWV3IGRyYXdpbmcgIHwKKyAg
ICAgICAgZmx1c2ggICAgICAgIHwKICAgICAgICAgICAgICAgICBsYXllclN5bmNSdW5Mb29wT2Jz
ZXJ2ZXJDYWxsQmFjawogCiAgICAgVG8gYXZvaWQgZmxhc2hpbmcsIHdlIGhhdmUgdG8gZW5zdXJl
IHRoYXQgY29tcG9zaXRpbmcgY2hhbmdlcyAocmVuZGVyZWQgdmlhCkBAIC05MjM2LDE5ICs5MjQw
LDE5IEBAIEZPUldBUkQodG9nZ2xlVW5kZXJsaW5lKQogICAgIENvcmVBbmltYXRpb24gd2lsbCBj
b21taXQgYW55IGxheWVyIGNoYW5nZXMgYXQgdGhlIGVuZCBvZiB0aGUgcnVubG9vcCB2aWEKICAg
ICBpdHMgIkNBIGNvbW1pdCIgb2JzZXJ2ZXIuIFRob3NlIGNoYW5nZXMgY2FuIHRoZW4gYXBwZWFy
IG9uc2NyZWVuIGF0IGFueSB0aW1lCiAgICAgd2hlbiB0aGUgZGlzcGxheSBsaW5rIGZpcmVzLCB3
aGljaCBjYW4gcmVzdWx0IGluIHVuc3luY2hyb25pemVkIHJlbmRlcmluZy4KLSAgICAKKwogICAg
IFRvIGZpeCB0aGlzLCB0aGUgR3JhcGhpY3NMYXllckNBIGNvZGUgaW4gV2ViQ29yZSBkb2VzIG5v
dCBjaGFuZ2UgdGhlIENBCiAgICAgbGF5ZXIgdHJlZSBkdXJpbmcgc3R5bGUgY2hhbmdlcyBhbmQg
bGF5b3V0OyBpdCBzdG9yZXMgdXAgYWxsIGNoYW5nZXMgYW5kCiAgICAgY29tbWl0cyB0aGVtIHZp
YSBmbHVzaENvbXBvc2l0aW5nU3RhdGUoKS4gVGhlcmUgYXJlIHRoZW4gdHdvIHNpdHVhdGlvbnMg
aW4KICAgICB3aGljaCB3ZSBjYW4gY2FsbCBmbHVzaENvbXBvc2l0aW5nU3RhdGUoKToKLSAgICAK
KwogICAgIDEuIFdoZW4gcGFpbnRpbmcuIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cygpIG1ha2Vz
IGEgY2FsbCB0byBmbHVzaENvbXBvc2l0aW5nU3RhdGUoKS4KLSAgICAKKwogICAgIDIuIFdoZW4g
c3R5bGUgY2hhbmdlcy9sYXlvdXQgaGF2ZSBtYWRlIGNoYW5nZXMgdG8gdGhlIGxheWVyIHRyZWUg
d2hpY2ggZG8gbm90CiAgICAgICAgcmVzdWx0IGluIHBhaW50aW5nLiBJbiB0aGlzIGNhc2Ugd2Ug
bmVlZCBhIHJ1biBsb29wIG9ic2VydmVyIHRvIGRvIGEKICAgICAgICBmbHVzaENvbXBvc2l0aW5n
U3RhdGUoKSBhdCBhbiBhcHByb3ByaWF0ZSB0aW1lLiBUaGUgb2JzZXJ2ZXIgd2lsbCBrZWVwIGZp
cmluZwogICAgICAgIHVudGlsIHRoZSB0aW1lIGlzIHJpZ2h0IChlc3NlbnRpYWxseSB3aGVuIHRo
ZXJlIGFyZSBubyBtb3JlIHBlbmRpbmcgbGF5b3V0cykuCi0gICAgCisKICovCiBib29sIExheWVy
Rmx1c2hDb250cm9sbGVyOjpmbHVzaExheWVycygpCiB7CkBAIC05NDEyLDcgKzk0MTYsNyBAQCBi
b29sIExheWVyRmx1c2hDb250cm9sbGVyOjpmbHVzaExheWVycygpCiAKICAgICBbX3ByaXZhdGUt
Pm5ld0Z1bGxzY3JlZW5Db250cm9sbGVyIHNldEVsZW1lbnQ6ZWxlbWVudC5nZXQoKV07CiAgICAg
W19wcml2YXRlLT5uZXdGdWxsc2NyZWVuQ29udHJvbGxlciBzZXRXZWJWaWV3OnNlbGZdOwotICAg
IFtfcHJpdmF0ZS0+bmV3RnVsbHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsU2NyZWVuOltbc2Vs
ZiB3aW5kb3ddIHNjcmVlbl1dOyAgICAgICAgCisgICAgW19wcml2YXRlLT5uZXdGdWxsc2NyZWVu
Q29udHJvbGxlciBlbnRlckZ1bGxTY3JlZW46W1tzZWxmIHdpbmRvd10gc2NyZWVuXV07CiB9CiAK
IC0gKHZvaWQpX2V4aXRGdWxsU2NyZWVuRm9yRWxlbWVudDooTmFrZWRQdHI8V2ViQ29yZTo6RWxl
bWVudD4pZWxlbWVudApAQCAtOTU1MSwxMiArOTU1NSwxMiBAQCBib29sIExheWVyRmx1c2hDb250
cm9sbGVyOjpmbHVzaExheWVycygpCiAgICAgICAgIHJldHVybjsKIAogICAgIF9wcml2YXRlLT5o
YXNJbml0aWFsaXplZExvb2t1cE9ic2VydmVyID0gWUVTOwotICAgIAorCiAjaWYgIUVOQUJMRShS
RVZFQUwpCiAgICAgaWYgKFBBTDo6Y2FuTG9hZF9Mb29rdXBfTFVOb3RpZmljYXRpb25Qb3BvdmVy
V2lsbENsb3NlKCkpCiAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2RpY3Rpb25hcnlMb29rdXBQ
b3BvdmVyV2lsbENsb3NlOikgbmFtZTpQQUw6OmdldF9Mb29rdXBfTFVOb3RpZmljYXRpb25Qb3Bv
dmVyV2lsbENsb3NlKCkgb2JqZWN0Om5pbF07CiAjZW5kaWYgLy8gIUVOQUJMRShSRVZFQUwpCi0g
ICAgCisKIH0KIAogLSAodm9pZClfc2hvd0RpY3Rpb25hcnlMb29rdXBQb3B1cDooY29uc3QgV2Vi
Q29yZTo6RGljdGlvbmFyeVBvcHVwSW5mbyYpZGljdGlvbmFyeVBvcHVwSW5mbwpAQCAtOTgxNSw3
ICs5ODE5LDcgQEAgc3RhdGljIE5TVGV4dEFsaWdubWVudCBuc1RleHRBbGlnbm1lbnRGcm9tUmVu
ZGVyU3R5bGUoY29uc3QgV2ViQ29yZTo6UmVuZGVyU3R5bGUKICAgICBOU1ZpZXcgKmRvY3VtZW50
VmlldyA9IFtbW3NlbGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdIGZyYW1lVmlld10gZG9jdW1lbnRW
aWV3XTsKICAgICBpZiAoIVtkb2N1bWVudFZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcg
Y2xhc3NdXSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgV2ViSFRNTFZpZXcgKndlYkhU
TUxWaWV3ID0gKFdlYkhUTUxWaWV3ICopZG9jdW1lbnRWaWV3OwogICAgIGlmICghW3dlYkhUTUxW
aWV3IF9pc0VkaXRhYmxlXSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRhNzBhYWZhMjM5ODg3
NWJhMTdjNTMyNmUwZjY4YTBjNjRhZTBhZGYuLjMwYmVlMzVhNzk4ZTI3NjE1MWQwZjRlOWMwZjRm
Mjc3OWI1YmQwNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMi0xMyAgSm9uIExlZSAg
PGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFzayBXZWJHTCBzdHJpbmdzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MDgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy93
ZWJnbC9maW5nZXJwcmludGluZy1zdHJpbmdzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL3dlYmdsL2ZpbmdlcnByaW50aW5nLXN0cmluZ3MuaHRtbDogQWRkZWQu
CisKIDIwMjAtMDItMTEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW5kZXhlZERCOiBpdGVyYXRpb24gb2YgY3Vyc29ycyBza2lwIHJlY29yZHMgaWYgZGVsZXRl
ZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3dlYmdsL2ZpbmdlcnByaW50
aW5nLXN0cmluZ3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3dlYmds
L2ZpbmdlcnByaW50aW5nLXN0cmluZ3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjMDQ1MWM0
YTJlNDg4NjQ3ZDkyNzc5MTZmOTkwZmU1MGUwYzc2YTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvd2ViZ2wvZmluZ2VycHJpbnRpbmctc3RyaW5ncy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMSBAQAorIAorV2ViR0wgMSB2ZW5kb3IgaXM6IFdlYktpdAorV2Vi
R0wgMSByZW5kZXJlciBpczogV2ViS2l0IFdlYkdMCitXZWJHTCAxIHNoYWRpbmcgbGFuZ3VhZ2Ug
dmVyc2lvbiBpczogV2ViR0wgR0xTTCBFUyAxLjAgKDEuMCkKK1dlYkdMIDEgdW5tYXNrZWQgdmVu
ZG9yIGlzOiBBcHBsZSBJbmMuCitXZWJHTCAxIHVubWFza2VkIHJlbmRlcmVyIGlzOiBBcHBsZSBH
UFUKK1dlYkdMIDIgdmVuZG9yIGlzOiBXZWJLaXQKK1dlYkdMIDIgcmVuZGVyZXIgaXM6IFdlYktp
dCBXZWJHTAorV2ViR0wgMiBzaGFkaW5nIGxhbmd1YWdlIHZlcnNpb24gaXM6IFdlYkdMIEdMU0wg
RVMgMS4wICgxLjApCitXZWJHTCAyIHVubWFza2VkIHZlbmRvciBpczogQXBwbGUgSW5jLgorV2Vi
R0wgMiB1bm1hc2tlZCByZW5kZXJlciBpczogQXBwbGUgR1BVCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvd2ViZ2wvZmluZ2VycHJpbnRpbmctc3RyaW5ncy5odG1sIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3dlYmdsL2ZpbmdlcnByaW50aW5nLXN0cmluZ3MuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42OTYyNzY2YmQ3NGUwMzU3YjI3ZWQ3NzZhN2Q2Y2ZmNGJlMTFjY2QzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3dlYmdsL2ZpbmdlcnByaW50
aW5nLXN0cmluZ3MuaHRtbApAQCAtMCwwICsxLDU0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzdHls
ZT4KK2NhbnZhcyB7CisgICAgd2lkdGg6IDFweDsKKyAgICBoZWlnaHQ6IDFweDsKK30KKzwvc3R5
bGU+Cis8Y2FudmFzIGlkPSJjYW52YXMxIj48L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImNhbnZhczIi
PjwvY2FudmFzPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1bigpIHsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgfQorICAg
IHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzMSIpOworICAgIGNh
bnZhcy53aWR0aCA9IDE7CisgICAgY2FudmFzLmhlaWdodCA9IDE7CisgICAgb3V0cHV0U3RyaW5n
KCIjd2ViZ2wxIiwgY2FudmFzLmdldENvbnRleHQoIndlYmdsIikpOworCisgICAgY2FudmFzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhczIiKTsKKyAgICBjYW52YXMud2lkdGggPSAx
OworICAgIGNhbnZhcy5oZWlnaHQgPSAxOworICAgIG91dHB1dFN0cmluZygiI3dlYmdsMiIsIGNh
bnZhcy5nZXRDb250ZXh0KCJ3ZWJnbDIiKSk7Cit9CisKK2Z1bmN0aW9uIG91dHB1dFN0cmluZyhn
bElkLCBnbCkgeworICAgIGlmICghZ2wpCisgICAgICAgIHJldHVybjsKKyAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKGdsSWQgKyAiIC52ZW5kb3IiKS5pbm5lclRleHQgPSBnbC5nZXRQYXJhbWV0
ZXIoZ2wuVkVORE9SKTsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGdsSWQgKyAiIC5yZW5k
ZXJlciIpLmlubmVyVGV4dCA9IGdsLmdldFBhcmFtZXRlcihnbC5SRU5ERVJFUik7CisgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3RvcihnbElkICsgIiAuc2hhZGluZ19sYW5ndWFnZV92ZXJzaW9uIiku
aW5uZXJUZXh0ID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLlNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTik7
CisKKyAgICBjb25zdCBkZWJ1Z0luZm8gPSBnbC5nZXRFeHRlbnNpb24oIldFQkdMX2RlYnVnX3Jl
bmRlcmVyX2luZm8iKTsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGdsSWQgKyAiIC51bm1h
c2tlZF92ZW5kb3IiKS5pbm5lclRleHQgPSBnbC5nZXRQYXJhbWV0ZXIoZGVidWdJbmZvLlVOTUFT
S0VEX1ZFTkRPUl9XRUJHTCk7CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihnbElkICsgIiAu
dW5tYXNrZWRfcmVuZGVyZXIiKS5pbm5lclRleHQgPSBnbC5nZXRQYXJhbWV0ZXIoZGVidWdJbmZv
LlVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMKTsKK30KK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJs
b2FkIiwgcnVuLCBmYWxzZSk7Cis8L3NjcmlwdD4KKworPHNlY3Rpb24gaWQ9IndlYmdsMSI+Cis8
ZGl2PldlYkdMIDEgdmVuZG9yIGlzOiA8c3BhbiBjbGFzcz0idmVuZG9yIj5OT1QgU1VQUE9SVEVE
PC9zcGFuPjwvZGl2PgorPGRpdj5XZWJHTCAxIHJlbmRlcmVyIGlzOiA8c3BhbiBjbGFzcz0icmVu
ZGVyZXIiPk5PVCBTVVBQT1JURUQ8L3NwYW4+PC9kaXY+Cis8ZGl2PldlYkdMIDEgc2hhZGluZyBs
YW5ndWFnZSB2ZXJzaW9uIGlzOiA8c3BhbiBjbGFzcz0ic2hhZGluZ19sYW5ndWFnZV92ZXJzaW9u
Ij5OT1QgU1VQUE9SVEVEPC9zcGFuPjwvZGl2PgorPGRpdj5XZWJHTCAxIHVubWFza2VkIHZlbmRv
ciBpczogPHNwYW4gY2xhc3M9InVubWFza2VkX3ZlbmRvciI+Tk9UIFNVUFBPUlRFRDwvc3Bhbj48
L2Rpdj4KKzxkaXY+V2ViR0wgMSB1bm1hc2tlZCByZW5kZXJlciBpczogPHNwYW4gY2xhc3M9InVu
bWFza2VkX3JlbmRlcmVyIj5OT1QgU1VQUE9SVEVEPC9zcGFuPjwvZGl2PgorPC9zZWN0aW9uPgor
Cis8c2VjdGlvbiBpZD0id2ViZ2wyIj4KKzxkaXY+V2ViR0wgMiB2ZW5kb3IgaXM6IDxzcGFuIGNs
YXNzPSJ2ZW5kb3IiPk5PVCBTVVBQT1JURUQ8L3NwYW4+PC9kaXY+Cis8ZGl2PldlYkdMIDIgcmVu
ZGVyZXIgaXM6IDxzcGFuIGNsYXNzPSJyZW5kZXJlciI+Tk9UIFNVUFBPUlRFRDwvc3Bhbj48L2Rp
dj4KKzxkaXY+V2ViR0wgMiBzaGFkaW5nIGxhbmd1YWdlIHZlcnNpb24gaXM6IDxzcGFuIGNsYXNz
PSJzaGFkaW5nX2xhbmd1YWdlX3ZlcnNpb24iPk5PVCBTVVBQT1JURUQ8L3NwYW4+PC9kaXY+Cis8
ZGl2PldlYkdMIDIgdW5tYXNrZWQgdmVuZG9yIGlzOiA8c3BhbiBjbGFzcz0idW5tYXNrZWRfdmVu
ZG9yIj5OT1QgU1VQUE9SVEVEPC9zcGFuPjwvZGl2PgorPGRpdj5XZWJHTCAyIHVubWFza2VkIHJl
bmRlcmVyIGlzOiA8c3BhbiBjbGFzcz0idW5tYXNrZWRfcmVuZGVyZXIiPk5PVCBTVVBQT1JURUQ8
L3NwYW4+PC9kaXY+Cis8L3NlY3Rpb24+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>