<?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>174608</bug_id>
          
          <creation_ts>2017-07-17 20:47:43 -0700</creation_ts>
          <short_desc>Remove WebIconDatabase from WebKitLegacy/win</short_desc>
          <delta_ts>2017-07-20 07:30:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1329864</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-17 20:47:43 -0700</bug_when>
    <thetext>Remove WebIconDatabase from WebKitLegacy/win

Nobody uses it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1329866</commentid>
    <comment_count>1</comment_count>
      <attachid>315763</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-17 20:50:01 -0700</bug_when>
    <thetext>Created attachment 315763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1329870</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-17 20:52:37 -0700</bug_when>
    <thetext>Attachment 315763 did not pass style-queue:


ERROR: Source/WebKitLegacy/win/WebView.cpp:3226:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330266</commentid>
    <comment_count>3</comment_count>
      <attachid>315885</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-18 21:11:38 -0700</bug_when>
    <thetext>Created attachment 315885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330295</commentid>
    <comment_count>4</comment_count>
      <attachid>315898</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-18 22:49:50 -0700</bug_when>
    <thetext>Created attachment 315898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330538</commentid>
    <comment_count>5</comment_count>
      <attachid>315966</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-19 20:07:16 -0700</bug_when>
    <thetext>Created attachment 315966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330618</commentid>
    <comment_count>6</comment_count>
      <attachid>315966</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-20 07:30:13 -0700</bug_when>
    <thetext>Comment on attachment 315966
Patch

Clearing flags on attachment: 315966

Committed r219684: &lt;http://trac.webkit.org/changeset/219684&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330619</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-20 07:30:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315763</attachid>
            <date>2017-07-17 20:50:01 -0700</date>
            <delta_ts>2017-07-18 21:11:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>34663</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBjZTI5MzAzMGVmNi4uOTM2ZmM3MzE2M2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxNy0wNy0x
NyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFdl
Ykljb25EYXRhYmFzZSBmcm9tIFdlYktpdExlZ2FjeS93aW4uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ2MDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBpcyB1bnVzZWQuCisgICAgICAgIAorICAg
ICAgICAqIEZvckVhY2hDb0NsYXNzLmg6CisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJJY29u
RGF0YWJhc2UuaWRsOiBSZW1vdmVkLgorCisgICAgICAgICogSW50ZXJmYWNlcy9XZWJLaXQuaWRs
OgorCisgICAgICAgICogV2ViQ29yZVN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZVN0
YXRpc3RpY3M6Omljb25QYWdlVVJMTWFwcGluZ0NvdW50KToKKyAgICAgICAgKFdlYkNvcmVTdGF0
aXN0aWNzOjppY29uUmV0YWluZWRQYWdlVVJMQ291bnQpOgorICAgICAgICAoV2ViQ29yZVN0YXRp
c3RpY3M6Omljb25SZWNvcmRDb3VudCk6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6aWNv
bnNXaXRoRGF0YUNvdW50KToKKworICAgICAgICAqIFdlYkljb25EYXRhYmFzZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogV2ViSWNvbkRhdGFiYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICogV2Vi
S2l0Q2xhc3NGYWN0b3J5LmNwcDoKKworICAgICAgICAqIFdlYktpdERMTC5jcHA6CisgICAgICAg
IChzaHV0RG93bldlYktpdCk6CisKKyAgICAgICAgKiBXZWJLaXRMb2dnaW5nLmg6CisKKyAgICAg
ICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmNsb3NlKToKKyAgICAgICAgKFdl
YlZpZXc6Om5vdGlmeURpZEFkZEljb24pOgorICAgICAgICAoV2ViVmlldzo6cmVnaXN0ZXJGb3JJ
Y29uTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYlZpZXc6OmRpc3BhdGNoRGlkUmVjZWl2ZUlj
b25Gcm9tV2ViRnJhbWUpOgorICAgICAgICAoV2ViVmlldzo6b25Ob3RpZnkpOgorCiAyMDE3LTA3
LTE0ICBCYXN1a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KIAogICAgICAgICBb
Q3VybF0gRG9uJ3Qgc3RhcnQgZG93bmxvYWRpbmcgbW9yZSB0aGFuIG9uY2UgZm9yIHNhbWUgcmVx
dWVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRm9yRWFjaENvQ2xhc3Mu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0ZvckVhY2hDb0NsYXNzLmgKaW5kZXggM2Y5NDhk
ODRkOGMuLjg4NTk5YTUwZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9G
b3JFYWNoQ29DbGFzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0ZvckVhY2hDb0Ns
YXNzLmgKQEAgLTQyLDcgKzQyLDYgQEAKICAgICBtYWNybyhXZWJFcnJvcikgXAogICAgIG1hY3Jv
KFdlYkhpc3RvcnkpIFwKICAgICBtYWNybyhXZWJIaXN0b3J5SXRlbSkgXAotICAgIG1hY3JvKFdl
Ykljb25EYXRhYmFzZSkgXAogICAgIG1hY3JvKFdlYkphdmFTY3JpcHRDb2xsZWN0b3IpIFwKICAg
ICBtYWNybyhXZWJLaXRTdGF0aXN0aWNzKSBcCiAgICAgbWFjcm8oV2ViTXV0YWJsZVVSTFJlcXVl
c3QpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0ludGVyZmFjZXMvSVdl
Ykljb25EYXRhYmFzZS5pZGwgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9JbnRlcmZhY2VzL0lX
ZWJJY29uRGF0YWJhc2UuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmQ2MDlk
NTBhOS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vSW50ZXJmYWNl
cy9JV2ViSWNvbkRhdGFiYXNlLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDE3NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLWNwcF9xdW90ZSgiI2RlZmluZSBXZWJJY29uRGF0YWJhc2VEaWRBZGRJY29uTm90aWZp
Y2F0aW9uIFRFWFQoXCJXZWJJY29uRGF0YWJhc2VEaWRBZGRJY29uTm90aWZpY2F0aW9uXCIpIikK
LWNwcF9xdW90ZSgiI2RlZmluZSBXZWJJY29uTm90aWZpY2F0aW9uVXNlckluZm9VUkxLZXkgVEVY
VChcIldlYkljb25Ob3RpZmljYXRpb25Vc2VySW5mb1VSTEtleVwiKSIpCi1jcHBfcXVvdGUoIiNk
ZWZpbmUgV2ViSWNvbkRhdGFiYXNlRGlkUmVtb3ZlQWxsSWNvbnNOb3RpZmljYXRpb24gVEVYVChc
IldlYkljb25EYXRhYmFzZURpZFJlbW92ZUFsbEljb25zTm90aWZpY2F0aW9uXCIpIikKLQotI2lm
bmRlZiBET19OT19JTVBPUlRTCi1pbXBvcnQgIm9haWRsLmlkbCI7Ci1pbXBvcnQgIm9jaWRsLmlk
bCI7Ci0jZW5kaWYKLQotLyohCi0gICAgQGNsYXNzIFdlYkljb25EYXRhYmFzZQotICAgIEBkaXNj
dXNzaW9uIEZlYXR1cmVzOgotICAgICAgICAtIG1lbW9yeSBjYWNoZSBpY29ucyBhdCBkaWZmZXJl
bnQgc2l6ZXMKLSAgICAgICAgLSBkaXNrIHN0b3JhZ2UKLSAgICAgICAgLSBpY29uIHVwZGF0ZSBu
b3RpZmljYXRpb24KLSAgICAgICAgCi0gICAgICAgIFVzZXM6Ci0gICAgICAgIC0gV2ViSWNvbkxv
YWRlciB0byBjYWNoZSBpY29uIGltYWdlcwotICAgICAgICAtIFVJIGVsZW1lbnRzIHRvIHJldHJp
ZXZlIGljb25zIHRoYXQgcmVwcmVzZW50IHNpdGUgVVJMcy4KLSAgICAgICAgLSBTYXZlIGljb25z
IHRvIGRpc2sgZm9yIGxhdGVyIHVzZS4KLSAKLSAgICBFdmVyeSBpY29uIGluIHRoZSBkYXRhYmFz
ZSBoYXMgYSByZXRhaW4gY291bnQuICBJZiBhbiBpY29uIGhhcyBhIHJldGFpbiBjb3VudCBncmVh
dGVyIHRoYW4gMCwgaXQgd2lsbCBiZSB3cml0dGVuIHRvIGRpc2sgZm9yIGxhdGVyIHVzZS4gSWYg
YW4gaWNvbidzIHJldGFpbiBjb3VudCBlcXVhbHMgemVybyBpdCB3aWxsIGJlIHJlbW92ZWQgZnJv
bSBkaXNrLiAgVGhlIHJldGFpbiBjb3VudCBpcyBub3QgcGVyc2lzdGVudCBhY3Jvc3MgbGF1bmNo
ZXMuIElmIHRoZSBXZWJLaXQgY2xpZW50IHdpc2hlcyB0byByZXRhaW4gYW4gaWNvbiBpdCBzaG91
bGQgcmV0YWluIHRoZSBpY29uIG9uY2UgZm9yIGV2ZXJ5IGxhdW5jaC4gIFRoaXMgaXMgYmVzdCBk
b25lIGF0IGluaXRpYWxpemF0aW9uIHRpbWUgYmVmb3JlIHRoZSBkYXRhYmFzZSBiZWdpbnMgcmVt
b3ZpbmcgaWNvbnMuICBUbyBtYWtlIHN1cmUgdGhhdCB0aGUgZGF0YWJhc2UgZG9lcyBub3QgcmVt
b3ZlIHVucmV0YWluZWQgaWNvbnMgcHJlbWF0dXJlbHksIGNhbGwgZGVsYXlEYXRhYmFzZUNsZWFu
dXAgdW50aWwgYWxsIGRlc2lyZWQgaWNvbnMgYXJlIHJldGFpbmVkLiAgT25jZSBhbGwgYXJlIHJl
dGFpbmVkLCBjYWxsIGFsbG93RGF0YWJhc2VDbGVhbnVwLgotICAgIAotICAgIE5vdGUgdGhhdCBh
biBpY29uIGNhbiBiZSByZXRhaW5lZCBhZnRlciB0aGUgZGF0YWJhc2UgY2xlYW4tdXAgaGFzIGJl
Z3VuLiBUaGlzIGp1c3QgaGFzIHRvIGJlIGRvbmUgYmVmb3JlIHRoZSBpY29uIGlzIHJlbW92ZWQu
IEljb25zIGFyZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIHdoZW5ldmVyIG5ldyBpY29ucyBh
cmUgYWRkZWQgdG8gaXQuCi0gICAgCi0gICAgUmV0ZW50aW9uIG1ldGhvZHMgY2FuIGJlIGNhbGxl
ZCBmb3IgaWNvbnMgdGhhdCBhcmUgbm90IHlldCBpbiB0aGUgZGF0YWJhc2UuCi0KLSAgICBAaW50
ZXJmYWNlIFdlYkljb25EYXRhYmFzZSA6IE5TT2JqZWN0Ci0qLwotWwotICAgIG9iamVjdCwKLSAg
ICBvbGVhdXRvbWF0aW9uLAotICAgIGhpZGRlbiwKLSAgICB1dWlkKEU5M0YyNjE2LTI1NjAtNDdk
OS1CRDRELTZFMkYxRTFEMzE3NCksCi0gICAgcG9pbnRlcl9kZWZhdWx0KHVuaXF1ZSkKLV0KLWlu
dGVyZmFjZSBJV2ViSWNvbkRhdGFiYXNlIDogSVVua25vd24KLXsKLSAgICAvKiEKLSAgICAgICAg
QG1ldGhvZCBzaGFyZWRJY29uRGF0YWJhc2UKLSAgICAgICAgQGFic3RyYWN0IFJldHVybnMgYSBz
aGFyZWQgaW5zdGFuY2Ugb2YgdGhlIGljb24gZGF0YWJhc2UKLSAgICAgICAgKyAoV2ViSWNvbkRh
dGFiYXNlICopc2hhcmVkSWNvbkRhdGFiYXNlOwotICAgICovCi0gICAgSFJFU1VMVCBzaGFyZWRJ
Y29uRGF0YWJhc2UoW291dCwgcmV0dmFsXSBJV2ViSWNvbkRhdGFiYXNlKiogcmVzdWx0KTsKLQot
ICAgIC8qIQotICAgICAgICBAbWV0aG9kIGljb25Gb3JVUkw6d2l0aFNpemU6Ci0gICAgICAgIEBk
aXNjdXNzaW9uIENhbGxzIGljb25Gb3JVUkw6d2l0aFNpemU6Y2FjaGU6IHdpdGggWUVTIGZvciBj
YWNoZS4KLSAgICAgICAgQHBhcmFtIFVSTAotICAgICAgICBAcGFyYW0gc2l6ZQotICAgICAgICAt
IChOU0ltYWdlICopaWNvbkZvclVSTDooTlNTdHJpbmcgKilVUkwgd2l0aFNpemU6KE5TU2l6ZSlz
aXplOwotICAgICovCi0gICAgLyohCi0gICAgICAgIEBtZXRob2QgaWNvbkZvclVSTDp3aXRoU2l6
ZTpjYWNoZToKLSAgICAgICAgQGRpc2N1c3Npb24gUmV0dXJucyBhbiBpY29uIGZvciBhIHdlYiBz
aXRlIFVSTCBmcm9tIG1lbW9yeSBvciBkaXNrLiBuaWwgaWYgbm9uZSBpcyBmb3VuZC4KLSAgICAg
ICAgVXN1YWxseSBjYWxsZWQgYnkgYSBVSSBlbGVtZW50IHRvIGRldGVybWluZSBpZiBhIHNpdGUg
VVJMIGhhcyBhbiBhc3NvY2lhdGVkIGljb24uCi0gICAgICAgIE9mdGVuIGNhbGxlZCBieSB0aGUg
b2JzZXJ2ZXIgb2YgV2ViSWNvbkNoYW5nZWROb3RpZmljYXRpb24gYWZ0ZXIgdGhlIG5vdGlmaWNh
dGlvbiBpcyBzZW50LgotICAgICAgICBAcGFyYW0gVVJMCi0gICAgICAgIEBwYXJhbSBzaXplCi0g
ICAgICAgIEBwYXJhbSBjYWNoZSBJZiB5ZXMsIGNhY2hlcyB0aGUgcmV0dXJuZWQgaW1hZ2UgaW4g
bWVtb3J5IGlmIG5vdCBhbHJlYWR5IGNhY2hlZAotICAgICAgICAtIChOU0ltYWdlICopaWNvbkZv
clVSTDooTlNTdHJpbmcgKilVUkwgd2l0aFNpemU6KE5TU2l6ZSlzaXplIGNhY2hlOihCT09MKWNh
Y2hlOwotICAgICovCi0gICAgLyohCi0gICAgICAgIEBtZXRob2QgaWNvblVSTEZvclVSTDp3aXRo
U2l6ZTpjYWNoZToKLSAgICAgICAgQGRpc2N1c3Npb24gUmV0dXJucyBhbiBpY29uIFVSTCBmb3Ig
YSB3ZWIgc2l0ZSBVUkwgZnJvbSBtZW1vcnkgb3IgZGlzay4gbmlsIGlmIG5vbmUgaXMgZm91bmQu
Ci0gICAgICAgIEBwYXJhbSBVUkwKLSAgICAgICAgLSAoTlNTdHJpbmcgKilpY29uVVJMRm9yVVJM
OihOU1N0cmluZyAqKVVSTDsKLSAgICAqLwotICAgIEhSRVNVTFQgaWNvbkZvclVSTChbaW5dIEJT
VFIgdXJsLCBbaW5dIExQU0laRSBzaXplLCBbaW5dIEJPT0wgY2FjaGUsIFtvdXQsIHJldHZhbF0g
SEJJVE1BUCogaEJpdG1hcCk7Ci0KLSAgICAvKiEKLSAgICAgICAgQG1ldGhvZCBkZWZhdWx0SWNv
bldpdGhTaXplOgotICAgICAgICBAcGFyYW0gc2l6ZQotICAgICAgICAtIChOU0ltYWdlICopZGVm
YXVsdEljb25XaXRoU2l6ZTooTlNTaXplKXNpemU7Ci0gICAgKi8KLSAgICBIUkVTVUxUIGRlZmF1
bHRJY29uV2l0aFNpemUoW2luXSBMUFNJWkUgc2l6ZSwgW291dCwgcmV0dmFsXSBIQklUTUFQKiBo
Qml0bWFwKTsKLQotICAgIC8qIQotICAgICAgICBAbWV0aG9kIHJldGFpbkljb25Gb3JVUkw6Ci0g
ICAgICAgIEBhYnN0cmFjdCBJbmNyZW1lbnRzIHRoZSByZXRhaW4gY291bnQgb2YgdGhlIGljb24u
Ci0gICAgICAgIEBwYXJhbSBVUkwKLSAgICAgICAgLSAodm9pZClyZXRhaW5JY29uRm9yVVJMOihO
U1N0cmluZyAqKVVSTDsKLSAgICAqLwotICAgIEhSRVNVTFQgcmV0YWluSWNvbkZvclVSTChbaW5d
IEJTVFIgdXJsKTsKLQotICAgIC8qIQotICAgICAgICBAbWV0aG9kIHJlbGVhc2VJY29uRm9yVVJM
OgotICAgICAgICBAYWJzdHJhY3QgRGVjcmVtZW50cyB0aGUgcmV0YWluIGNvdW50IG9mIHRoZSBp
Y29uLgotICAgICAgICBAcGFyYW0gVVJMCi0gICAgICAgIC0gKHZvaWQpcmVsZWFzZUljb25Gb3JV
Ukw6KE5TU3RyaW5nICopVVJMOwotICAgICovCi0gICAgSFJFU1VMVCByZWxlYXNlSWNvbkZvclVS
TChbaW5dIEJTVFIgdXJsKTsKLQotICAgIC8qIQotICAgICAgICBAbWV0aG9kIHJlbW92ZUFsbElj
b25zOgotICAgICAgICBAYWJzdHJhY3QgRW10cGllcyB0aGUgSWNvbiBEYXRhYmFzZQotICAgICAg
ICAtICh2b2lkKXJlbW92ZUFsbEljb25zOwotICAgICovCi0gICAgSFJFU1VMVCByZW1vdmVBbGxJ
Y29ucygpOwotCi0gICAgLyohCi0gICAgICAgIEBtZXRob2QgZGVsYXlEYXRhYmFzZUNsZWFudXA6
Ci0gICAgICAgIEBkaXNjdXNzaW9uIE9ubHkgZWZmZWN0aXZlIGlmIGNhbGxlZCBiZWZvcmUgdGhl
IGRhdGFiYXNlIGJlZ2lucyByZW1vdmluZyBpY29ucy4KLSAgICAgICAgZGVsYXlEYXRhYmFzZUNs
ZWFuVXAgaW5jcmVtZW50cyBhbiBpbnRlcm5hbCBjb3VudGVyIHRoYXQgd2hlbiAwIGJlZ2lucyB0
aGUgZGF0YWJhc2UgY2xlYW4tdXAuCi0gICAgICAgIFRoZSBjb3VudGVyIGVxdWFscyAwIGF0IGlu
aXRpYWxpemF0aW9uLgotICAgICAgICAtICh2b2lkKWRlbGF5RGF0YWJhc2VDbGVhbnVwOwotICAg
ICovCi0gICAgSFJFU1VMVCBkZWxheURhdGFiYXNlQ2xlYW51cCgpOwotCi0gICAgLyohCi0gICAg
ICAgIEBtZXRob2QgYWxsb3dEYXRhYmFzZUNsZWFudXA6Ci0gICAgICAgIEBkaXNjdXNzaW9uIElu
Zm9ybXMgdGhlIGRhdGFiYXNlIHRoYXQgaXQgbm93IGNhbiBiZWdpbiByZW1vdmluZyBpY29ucy4K
LSAgICAgICAgYWxsb3dEYXRhYmFzZUNsZWFudXAgZGVjcmVtZW50cyBhbiBpbnRlcm5hbCBjb3Vu
dGVyIHRoYXQgd2hlbiAwIGJlZ2lucyB0aGUgZGF0YWJhc2UgY2xlYW4tdXAuCi0gICAgICAgIFRo
ZSBjb3VudGVyIGVxdWFscyAwIGF0IGluaXRpYWxpemF0aW9uLgotICAgICAgICAtICh2b2lkKWFs
bG93RGF0YWJhc2VDbGVhbnVwOwotICAgICovCi0gICAgSFJFU1VMVCBhbGxvd0RhdGFiYXNlQ2xl
YW51cCgpOwotCi0gICAgLyohCi0gICAgICAgIEBtZXRob2QgaWNvblVSTEZvclVSTDp3aXRoU2l6
ZTpjYWNoZToKLSAgICAgICAgQGRpc2N1c3Npb24gUmV0dXJucyBhbiBpY29uIFVSTCBmb3IgYSB3
ZWIgc2l0ZSBVUkwgZnJvbSBtZW1vcnkgb3IgZGlzay4gbmlsIGlmIG5vbmUgaXMgZm91bmQuCi0g
ICAgICAgIEBwYXJhbSBVUkwKLSAgICAgICAgLSAoTlNTdHJpbmcgKilpY29uVVJMRm9yVVJMOihO
U1N0cmluZyAqKVVSTDsKLSAgICAqLwotICAgIEhSRVNVTFQgaWNvblVSTEZvclVSTChbaW5dIEJT
VFIgdXJsLCBbb3V0LCByZXR2YWxdIEJTVFIqIGljb25VUkwpOwotCi0gICAgLyohCi0gICAgICAg
IEBtZXRob2QgaXNFbmFibGVkCi0gICAgICAgIEBkaXNjdXNzaW9uIFJldHVybnMgdHJ1ZSBpZiB0
aGUgaWNvbiBkYXRhYmFzZSBpcyBjdXJyZW50bHkgZW5hYmxlZCwgb3IgZmFsc2UgaWYgaXQKLSAg
ICAgICAgaXMgZGlzYWJsZWQuCi0gICAgICAgIC0gKEJPT0wpaXNFbmFibGVkOwotICAgICovCi0g
ICAgSFJFU1VMVCBpc0VuYWJsZWQoW291dCwgcmV0dmFsXSBCT09MKiByZXN1bHQpOwotCi0gICAg
LyohCi0gICAgICAgIEBtZXRob2Qgc2V0RW5hYmxlZDoKLSAgICAgICAgQGRpc2N1c3Npb24gRW5h
YmxlcyBvciBkaXNhYmxlcyB0aGUgaWNvbiBkYXRhYmFzZSBiYXNlZCBvbiB0aGUgZmxhZyBwYXNz
ZWQgaW4uCi0gICAgICAgIEBwYXJhbSBmbGFnIFBhc3MgdHJ1ZSB0byBlbmFibGUgdGhlIGljb24g
ZGF0YWJhc2UsIG9yIGZhbHNlIHRvIGRpc2FibGUgaXQuCi0gICAgICAgIC0gKHZvaWQpc2V0RW5h
YmxlZDooQk9PTClmbGFnOwotICAgICovCi0gICAgSFJFU1VMVCBzZXRFbmFibGVkKFtpbl0gQk9P
TCBmbGFnKTsKLSAgICAKLSAgICAvKiEKLSAgICAgICAgQG1ldGhvZCBoYXNJY29uRm9yVVJMOgot
ICAgICAgICBAZGlzY3Vzc2lvbiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBpY29uIGRhdGFi
YXNlIGhhcyBhbiBpY29uIGZvciB0aGlzIFVSTC4KLSAgICAgICAgQHBhcm0gdXJsIFRoZSBVUkwg
dG8gdGVzdCBmb3IuCi0gICAgKi8KLSAgICBIUkVTVUxUIGhhc0ljb25Gb3JVUkwoW2luXSBCU1RS
IHVybCwgW291dCwgcmV0dmFsXSBCT09MKiByZXN1bHQpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsCmluZGV4IGI4ZjQ0MjFiZTdmLi40YmQ4MzRm
NDBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vSW50ZXJmYWNlcy9XZWJL
aXQuaWRsCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0ludGVyZmFjZXMvV2ViS2l0Lmlk
bApAQCAtMTExLDcgKzExMSw2IEBAIGltcG9ydCAiQWNjZXNzaWJsZUFwcGxpY2F0aW9uLmlkbCI7
CiAjaW5jbHVkZSAiSVdlYkhpc3RvcnlJdGVtLmlkbCIKICNpbmNsdWRlICJJV2ViSGlzdG9yeUl0
ZW1Qcml2YXRlLmlkbCIKICNpbmNsdWRlICJJV2ViSGlzdG9yeVByaXZhdGUuaWRsIgotI2luY2x1
ZGUgIklXZWJJY29uRGF0YWJhc2UuaWRsIgogI2luY2x1ZGUgIklXZWJJbnNwZWN0b3IuaWRsIgog
I2luY2x1ZGUgIklXZWJJbnNwZWN0b3JQcml2YXRlLmlkbCIKICNpbmNsdWRlICJJV2ViSmF2YVNj
cmlwdENvbGxlY3Rvci5pZGwiCkBAIC0xNzYsMTEgKzE3NSw2IEBAIGxpYnJhcnkgV2ViS2l0CiAg
ICAgICAgIGludGVyZmFjZSBJV2ViVmlld1ByaXZhdGUyOwogICAgIH0KIAotICAgIFt1dWlkKDY2
ODI3ZWMxLTNhZWYtNDI0MS1iYWM1LWY3NzZiNDRmMDMwZildCi0gICAgY29jbGFzcyBXZWJJY29u
RGF0YWJhc2UgewotICAgICAgICBbZGVmYXVsdF0gaW50ZXJmYWNlIElXZWJJY29uRGF0YWJhc2U7
Ci0gICAgfQotCiAgICAgW3V1aWQoYTA2MmVjYzMtYmIxYi00Njk0LWE1NjktZjU5ZTBhZDZiZTBj
KV0KICAgICBjb2NsYXNzIFdlYk11dGFibGVVUkxSZXF1ZXN0IHsKICAgICAgICAgW2RlZmF1bHRd
IGludGVyZmFjZSBJV2ViTXV0YWJsZVVSTFJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKaW5kZXggZWRiNDZiMjYwYzUuLjkxMjBhY2M4ZTBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCkBA
IC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0dDQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR2x5cGhQYWdlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9JY29uRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pT
RE9NV2luZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2VDb25zb2xlQ2xpZW50Lmg+CkBAIC0xNzksNyArMTc4LDcgQEAgSFJFU1VMVCBX
ZWJDb3JlU3RhdGlzdGljczo6aWNvblBhZ2VVUkxNYXBwaW5nQ291bnQoX091dF8gVUlOVCogY291
bnQpCiB7CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAgICAq
Y291bnQgPSAoVUlOVCkgaWNvbkRhdGFiYXNlKCkucGFnZVVSTE1hcHBpbmdDb3VudCgpOworICAg
ICpjb3VudCA9IChVSU5UKTA7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTE4Nyw3ICsxODYs
NyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjppY29uUmV0YWluZWRQYWdlVVJMQ291bnQo
X091dF8gVUlOVCAqY291bnQpCiB7CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKLSAgICAqY291bnQgPSAoVUlOVCkgaWNvbkRhdGFiYXNlKCkucmV0YWluZWRQYWdl
VVJMQ291bnQoKTsKKyAgICAqY291bnQgPSAoVUlOVCkwOwogICAgIHJldHVybiBTX09LOwogfQog
CkBAIC0xOTUsNyArMTk0LDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6aWNvblJlY29y
ZENvdW50KF9PdXRfIFVJTlQgKmNvdW50KQogewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7Ci0gICAgKmNvdW50ID0gKFVJTlQpIGljb25EYXRhYmFzZSgpLmljb25S
ZWNvcmRDb3VudCgpOworICAgICpjb3VudCA9IChVSU5UKTA7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKQEAgLTIwMyw3ICsyMDIsNyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjppY29uc1dp
dGhEYXRhQ291bnQoX091dF8gVUlOVCAqY291bnQpCiB7CiAgICAgaWYgKCFjb3VudCkKICAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAgICAqY291bnQgPSAoVUlOVCkgaWNvbkRhdGFiYXNlKCku
aWNvblJlY29yZENvdW50V2l0aERhdGEoKTsKKyAgICAqY291bnQgPSAoVUlOVCkwOwogICAgIHJl
dHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJ
Y29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSWNvbkRhdGFiYXNl
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQ4NjU5ZTJhYTguLjAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkljb25EYXRhYmFzZS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0MTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDA5LCAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiV2ViS2l0RExMLmgi
Ci0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCi0KLSNpbmNsdWRlICJDT01Qcm9wZXJ0eUJh
Zy5oIgotI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbkNlbnRlci5oIgotI2luY2x1ZGUgIldlYlBy
ZWZlcmVuY2VzLmgiCi0jaW5jbHVkZSAic2hsb2JqLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9CU3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbmZvLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9DT01QdHIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0hXbmREQy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9JbWFnZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgV1RGOwot
Ci0vLyBXZWJJY29uRGF0YWJhc2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1XZWJJY29uRGF0YWJhc2UqIFdlYkljb25E
YXRhYmFzZTo6bV9zaGFyZWRXZWJJY29uRGF0YWJhc2UgPSAwOwotCi1XZWJJY29uRGF0YWJhc2U6
OldlYkljb25EYXRhYmFzZSgpCi17Ci0gICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYkljb25EYXRhYmFzZSIpOwotfQotCi1XZWJJY29uRGF0YWJhc2U6On5X
ZWJJY29uRGF0YWJhc2UoKQotewotICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJJY29uRGF0YWJhc2UiKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJh
c2U6OmluaXQoKQotewotICAgIFdlYlByZWZlcmVuY2VzKiBzdGFuZGFyZFByZWZzID0gV2ViUHJl
ZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKLSAgICBCT09MIGVuYWJsZWQg
PSBGQUxTRTsKLSAgICBpZiAoRkFJTEVEKHN0YW5kYXJkUHJlZnMtPmljb25EYXRhYmFzZUVuYWJs
ZWQoJmVuYWJsZWQpKSkgewotICAgICAgICBlbmFibGVkID0gRkFMU0U7Ci0gICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIGdldCBpY29uIGRhdGFiYXNlIGVuYWJsZWQgcHJlZmVyZW5jZSIpOwot
ICAgIH0KLSAgICBpY29uRGF0YWJhc2UoKS5zZXRFbmFibGVkKCEhZW5hYmxlZCk7Ci0gICAgaWYg
KCEoISFlbmFibGVkKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RhcnRVcEljb25EYXRhYmFz
ZSgpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6c3RhcnRVcEljb25EYXRhYmFzZSgpCi17
Ci0gICAgV2ViUHJlZmVyZW5jZXMqIHN0YW5kYXJkUHJlZnMgPSBXZWJQcmVmZXJlbmNlczo6c2hh
cmVkU3RhbmRhcmRQcmVmZXJlbmNlcygpOwotCi0gICAgaWNvbkRhdGFiYXNlKCkuc2V0Q2xpZW50
KHRoaXMpOwotCi0gICAgQlN0cmluZyBwcmVmRGF0YWJhc2VQYXRoOwotICAgIGlmIChGQUlMRUQo
c3RhbmRhcmRQcmVmcy0+aWNvbkRhdGFiYXNlTG9jYXRpb24oJnByZWZEYXRhYmFzZVBhdGgpKSkK
LSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZ2V0IGljb24gZGF0YWJhc2UgbG9jYXRpb24g
cHJlZmVyZW5jZSIpOwotCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aChwcmVmRGF0YWJhc2VQYXRo
LCBTeXNTdHJpbmdMZW4ocHJlZkRhdGFiYXNlUGF0aCkpOwotCi0gICAgaWYgKGRhdGFiYXNlUGF0
aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgZGF0YWJhc2VQYXRoID0gbG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgICAgIGlmIChkYXRhYmFzZVBhdGguaXNFbXB0eSgpKQot
ICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY29uc3RydWN0IGRlZmF1bHQgaWNvbiBk
YXRhYmFzZSBwYXRoIik7Ci0gICAgfQotCi0gICAgaWYgKCFpY29uRGF0YWJhc2UoKS5vcGVuKGRh
dGFiYXNlUGF0aCwgV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpkZWZhdWx0RGF0YWJhc2VGaWxlbmFt
ZSgpKSkKLSAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gaWNvbiBkYXRhYmFz
ZSBwYXRoIik7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpzaHV0RG93bkljb25EYXRhYmFz
ZSgpCi17Ci19Ci0KLVdlYkljb25EYXRhYmFzZSogV2ViSWNvbkRhdGFiYXNlOjpjcmVhdGVJbnN0
YW5jZSgpCi17Ci0gICAgV2ViSWNvbkRhdGFiYXNlKiBpbnN0YW5jZSA9IG5ldyBXZWJJY29uRGF0
YWJhc2UoKTsKLSAgICBpbnN0YW5jZS0+QWRkUmVmKCk7Ci0gICAgcmV0dXJuIGluc3RhbmNlOwot
fQotCi1XZWJJY29uRGF0YWJhc2UqIFdlYkljb25EYXRhYmFzZTo6c2hhcmVkV2ViSWNvbkRhdGFi
YXNlKCkKLXsKLSAgICBpZiAobV9zaGFyZWRXZWJJY29uRGF0YWJhc2UpIHsKLSAgICAgICAgbV9z
aGFyZWRXZWJJY29uRGF0YWJhc2UtPkFkZFJlZigpOwotICAgICAgICByZXR1cm4gbV9zaGFyZWRX
ZWJJY29uRGF0YWJhc2U7Ci0gICAgfQotICAgIG1fc2hhcmVkV2ViSWNvbkRhdGFiYXNlID0gY3Jl
YXRlSW5zdGFuY2UoKTsKLSAgICBtX3NoYXJlZFdlYkljb25EYXRhYmFzZS0+aW5pdCgpOwotICAg
IHJldHVybiBtX3NoYXJlZFdlYkljb25EYXRhYmFzZTsKLX0KLQotLy8gSVVua25vd24gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi1IUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJ
SUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCi17Ci0gICAgaWYgKCFwcHZP
YmplY3QpCi0gICAgICAgIHJldHVybiBFX1BPSU5URVI7Ci0gICAgKnBwdk9iamVjdCA9IG51bGxw
dHI7Ci0gICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JVW5rbm93bikpCi0gICAgICAgICpw
cHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViSWNvbkRhdGFiYXNlKj4odGhpcyk7Ci0gICAgZWxz
ZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lXZWJJY29uRGF0YWJhc2UpKQotICAgICAgICAq
cHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYkljb25EYXRhYmFzZSo+KHRoaXMpOwotICAgIGVs
c2UKLSAgICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7Ci0KLSAgICBBZGRSZWYoKTsKLSAgICBy
ZXR1cm4gU19PSzsKLX0KLQotVUxPTkcgV2ViSWNvbkRhdGFiYXNlOjpBZGRSZWYoKQotewotICAg
IHJldHVybiArK21fcmVmQ291bnQ7Ci19Ci0KLVVMT05HIFdlYkljb25EYXRhYmFzZTo6UmVsZWFz
ZSgpCi17Ci0gICAgVUxPTkcgbmV3UmVmID0gLS1tX3JlZkNvdW50OwotICAgIGlmICghbmV3UmVm
KQotICAgICAgICBkZWxldGUodGhpcyk7Ci0KLSAgICByZXR1cm4gbmV3UmVmOwotfQotCi0vLyBJ
V2ViSWNvbkRhdGFiYXNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUhSRVNVTFQgV2ViSWNvbkRhdGFiYXNlOjpz
aGFyZWRJY29uRGF0YWJhc2UoX0NPTV9PdXRwdHJfb3B0XyBJV2ViSWNvbkRhdGFiYXNlKiogcmVz
dWx0KQotewotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotICAg
ICpyZXN1bHQgPSBzaGFyZWRXZWJJY29uRGF0YWJhc2UoKTsKLSAgICByZXR1cm4gU19PSzsKLX0K
LQotSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6Omljb25Gb3JVUkwoX0luXyBCU1RSIHVybCwgX0lu
XyBMUFNJWkUgc2l6ZSwgQk9PTCAvKmNhY2hlKi8sIF9fZGVyZWZfb3B0X291dCBIQklUTUFQKiBi
aXRtYXApCi17Ci0gICAgaWYgKCFzaXplIHx8ICFiaXRtYXApCi0gICAgICAgIHJldHVybiBFX1BP
SU5URVI7Ci0KLSAgICBJbnRTaXplIGludFNpemUoKnNpemUpOwotCi0gICAgSW1hZ2UqIGljb24g
PSBudWxscHRyOwotICAgIGlmICh1cmwpCi0gICAgICAgIGljb24gPSBpY29uRGF0YWJhc2UoKS5z
eW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKFN0cmluZyh1cmwsIFN5c1N0cmluZ0xlbih1cmwpKSwg
aW50U2l6ZSk7Ci0KLSAgICAvLyBNYWtlIHN1cmUgd2UgY2hlY2sgZm9yIHRoZSBjYXNlIG9mIGFu
ICJlbXB0eSBpbWFnZSIKLSAgICBpZiAoaWNvbiAmJiBpY29uLT53aWR0aCgpKSB7Ci0gICAgICAg
ICpiaXRtYXAgPSBnZXRPckNyZWF0ZVNoYXJlZEJpdG1hcChpbnRTaXplKTsKLSAgICAgICAgaWYg
KCFpY29uLT5nZXRIQklUTUFQT2ZTaXplKCpiaXRtYXAsICZpbnRTaXplKSkgewotICAgICAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZHJhdyBJbWFnZSB0byBIQklUTUFQIik7Ci0gICAgICAg
ICAgICAqYml0bWFwID0gMDsKLSAgICAgICAgICAgIHJldHVybiBFX0ZBSUw7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIFNfT0s7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRlZmF1bHRJY29uV2l0
aFNpemUoc2l6ZSwgYml0bWFwKTsKLX0KLQotSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6OmRlZmF1
bHRJY29uV2l0aFNpemUoX0luXyBMUFNJWkUgc2l6ZSwgX19kZXJlZl9vcHRfb3V0IEhCSVRNQVAq
IHJlc3VsdCkKLXsKLSAgICBpZiAoIXNpemUgfHwgIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKLQotICAgIEludFNpemUgaW50U2l6ZSgqc2l6ZSk7Ci0KLSAgICAqcmVzdWx0ID0g
Z2V0T3JDcmVhdGVEZWZhdWx0SWNvbkJpdG1hcChpbnRTaXplKTsKLSAgICByZXR1cm4gU19PSzsK
LX0KLQotSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6OnJldGFpbkljb25Gb3JVUkwoX0luXyBCU1RS
IHVybCkKLXsKLSAgICBpY29uRGF0YWJhc2UoKS5yZXRhaW5JY29uRm9yUGFnZVVSTChTdHJpbmco
dXJsLCBTeXNTdHJpbmdMZW4odXJsKSkpOwotICAgIHJldHVybiBTX09LOwotfQotCi1IUkVTVUxU
IFdlYkljb25EYXRhYmFzZTo6cmVsZWFzZUljb25Gb3JVUkwoX0luXyBCU1RSIHVybCkKLXsKLSAg
ICBpY29uRGF0YWJhc2UoKS5yZWxlYXNlSWNvbkZvclBhZ2VVUkwoU3RyaW5nKHVybCwgU3lzU3Ry
aW5nTGVuKHVybCkpKTsKLSAgICByZXR1cm4gU19PSzsKLX0KLQotSFJFU1VMVCBXZWJJY29uRGF0
YWJhc2U6OnJlbW92ZUFsbEljb25zKCkKLXsKLSAgICBpY29uRGF0YWJhc2UoKS5yZW1vdmVBbGxJ
Y29ucygpOwotICAgIHJldHVybiBTX09LOwotfQotCi1IUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6
ZGVsYXlEYXRhYmFzZUNsZWFudXAoKQotewotICAgIEljb25EYXRhYmFzZTo6ZGVsYXlEYXRhYmFz
ZUNsZWFudXAoKTsKLSAgICByZXR1cm4gU19PSzsKLX0KLQotSFJFU1VMVCBXZWJJY29uRGF0YWJh
c2U6OmFsbG93RGF0YWJhc2VDbGVhbnVwKCkKLXsKLSAgICBJY29uRGF0YWJhc2U6OmFsbG93RGF0
YWJhc2VDbGVhbnVwKCk7Ci0gICAgcmV0dXJuIFNfT0s7Ci19Ci0KLUhSRVNVTFQgV2ViSWNvbkRh
dGFiYXNlOjppY29uVVJMRm9yVVJMKF9Jbl8gQlNUUiB1cmwsIF9fZGVyZWZfb3B0X291dCBCU1RS
KiBpY29uVVJMKQotewotICAgIGlmICghdXJsIHx8ICFpY29uVVJMKQotICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOwotICAgIEJTdHJpbmcgaWNvblVSTEJTVFIoaWNvbkRhdGFiYXNlKCkuc3luY2hy
b25vdXNJY29uVVJMRm9yUGFnZVVSTChTdHJpbmcodXJsLCBTeXNTdHJpbmdMZW4odXJsKSkpKTsK
LSAgICAqaWNvblVSTCA9IGljb25VUkxCU1RSLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gU19PSzsK
LX0KLQotSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6OmlzRW5hYmxlZChfT3V0XyBCT09MKiByZXN1
bHQpCi17Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBFX1BPSU5URVI7Ci0gICAg
KnJlc3VsdCA9IGljb25EYXRhYmFzZSgpLmlzRW5hYmxlZCgpOwotICAgIHJldHVybiBTX09LOwot
fQotCi1IUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6c2V0RW5hYmxlZChCT09MIGZsYWcpCi17Ci0g
ICAgQk9PTCBjdXJyZW50bHlFbmFibGVkOwotICAgIGlzRW5hYmxlZCgmY3VycmVudGx5RW5hYmxl
ZCk7Ci0gICAgaWYgKGN1cnJlbnRseUVuYWJsZWQgJiYgIWZsYWcpIHsKLSAgICAgICAgaWNvbkRh
dGFiYXNlKCkuc2V0RW5hYmxlZChmYWxzZSk7Ci0gICAgICAgIHNodXREb3duSWNvbkRhdGFiYXNl
KCk7Ci0gICAgfSBlbHNlIGlmICghY3VycmVudGx5RW5hYmxlZCAmJiBmbGFnKSB7Ci0gICAgICAg
IGljb25EYXRhYmFzZSgpLnNldEVuYWJsZWQodHJ1ZSk7Ci0gICAgICAgIHN0YXJ0VXBJY29uRGF0
YWJhc2UoKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNfT0s7Ci19Ci0KLUhSRVNVTFQgV2ViSWNvbkRh
dGFiYXNlOjpoYXNJY29uRm9yVVJMKF9Jbl8gQlNUUiB1cmwsIF9PdXRfIEJPT0wqIHJlc3VsdCkK
LXsKLSAgICBpZiAoIXVybCB8fCAhcmVzdWx0KQotICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwot
Ci0gICAgU3RyaW5nIHVybFN0cmluZyh1cmwsIFN5c1N0cmluZ0xlbih1cmwpKTsKLQotICAgIC8v
IFBhc3NpbmcgYSBzaXplIHBhcmFtZXRlciBvZiAwLCAwIG1lYW5zIHdlIGRvbid0IGNhcmUgYWJv
dXQgdGhlIHJlc3VsdCBvZiB0aGUgaW1hZ2UsIHdlIGp1c3QKLSAgICAvLyB3YW50IHRvIG1ha2Ug
c3VyZSB0aGUgcmVhZCBmcm9tIGRpc2sgdG8gbG9hZCB0aGUgaWNvbiBpcyBraWNrZWQgb2ZmLgot
ICAgIGljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwodXJsU3RyaW5nLCBJ
bnRTaXplKDAsIDApKTsKLQotICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGEgbm9uLWVt
cHR5IGljb24gVVJMIGZvciB0aGUgcGFnZSwgYW5kIGlmIHdlIGRvLCB3ZSBoYXZlIGFuIGljb24g
Zm9yCi0gICAgLy8gdGhlIHBhZ2UuCi0gICAgKnJlc3VsdCA9ICEoaWNvbkRhdGFiYXNlKCkuc3lu
Y2hyb25vdXNJY29uVVJMRm9yUGFnZVVSTCh1cmxTdHJpbmcpLmlzRW1wdHkoKSk7Ci0KLSAgICBy
ZXR1cm4gU19PSzsKLX0KLQotc3RhdGljIEhCSVRNQVAgY3JlYXRlRElCKGNvbnN0IEludFNpemUm
IHNpemUpCi17Ci0gICAgQml0bWFwSW5mbyBibUluZm8gPSBCaXRtYXBJbmZvOjpjcmVhdGUoc2l6
ZSk7Ci0KLSAgICBIV25kREMgZGMoMCk7Ci0gICAgcmV0dXJuIENyZWF0ZURJQlNlY3Rpb24oZGMs
ICZibUluZm8sIERJQl9SR0JfQ09MT1JTLCAwLCAwLCAwKTsKLX0KLQotSEJJVE1BUCBXZWJJY29u
RGF0YWJhc2U6OmdldE9yQ3JlYXRlU2hhcmVkQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUpCi17
Ci0gICAgSEJJVE1BUCByZXN1bHQgPSBtX3NoYXJlZEljb25NYXAuZ2V0KHNpemUpOwotICAgIGlm
IChyZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgcmVzdWx0ID0gY3JlYXRlRElC
KHNpemUpOwotICAgIG1fc2hhcmVkSWNvbk1hcC5zZXQoc2l6ZSwgcmVzdWx0KTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1IQklUTUFQIFdlYkljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVEZWZh
dWx0SWNvbkJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplKQotewotICAgIEhCSVRNQVAgcmVzdWx0
ID0gbV9kZWZhdWx0SWNvbk1hcC5nZXQoc2l6ZSk7Ci0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLQotICAgIHJlc3VsdCA9IGNyZWF0ZURJQihzaXplKTsKLQotICAgIG1f
ZGVmYXVsdEljb25NYXAuc2V0KHNpemUsIHJlc3VsdCk7Ci0gICAgaWYgKCFpY29uRGF0YWJhc2Uo
KS5kZWZhdWx0SWNvbihzaXplKSB8fCAhaWNvbkRhdGFiYXNlKCkuZGVmYXVsdEljb24oc2l6ZSkt
PmdldEhCSVRNQVBPZlNpemUocmVzdWx0LCAmc2l6ZSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gZHJhdyBJbWFnZSB0byBIQklUTUFQIik7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vLyBJY29uRGF0YWJhc2VDbGllbnQKLQotdm9p
ZCBXZWJJY29uRGF0YWJhc2U6OmRpZFJlbW92ZUFsbEljb25zKCkKLXsKLSAgICAvLyBRdWV1ZWlu
ZyB0aGUgZW1wdHkgc3RyaW5nIGlzIGEgc3BlY2lhbCB3YXkgb2Ygc2F5aW5nICJ0aGlzIHF1ZXVl
ZCBub3RpZmljYXRpb24gaXMgdGhlIGRpZFJlbW92ZUFsbEljb25zIG5vdGlmaWNhdGlvbiIKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX25vdGlmaWNhdGlvbk11dGV4KTsKLSAgICBtX25vdGlmaWNh
dGlvblF1ZXVlLmFwcGVuZChTdHJpbmcoKSk7Ci0gICAgc2NoZWR1bGVOb3RpZmljYXRpb25EZWxp
dmVyeSgpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6ZGlkSW1wb3J0SWNvblVSTEZvclBh
Z2VVUkwoY29uc3QgV1RGOjpTdHJpbmcmIHBhZ2VVUkwpCi17Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9ub3RpZmljYXRpb25NdXRleCk7Ci0gICAgbV9ub3RpZmljYXRpb25RdWV1ZS5hcHBlbmQo
cGFnZVVSTC5pc29sYXRlZENvcHkoKSk7Ci0gICAgc2NoZWR1bGVOb3RpZmljYXRpb25EZWxpdmVy
eSgpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6ZGlkSW1wb3J0SWNvbkRhdGFGb3JQYWdl
VVJMKGNvbnN0IFdURjo6U3RyaW5nJiBwYWdlVVJMKQotewotICAgIC8vIFdlYktpdDEgb25seSBo
YXMgYSBzaW5nbGUgImljb24gZGlkIGNoYW5nZSIgbm90aWZpY2F0aW9uLgotICAgIGRpZEltcG9y
dEljb25VUkxGb3JQYWdlVVJMKHBhZ2VVUkwpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6
ZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwoY29uc3QgV1RGOjpTdHJpbmcmIHBhZ2VVUkwpCi17Ci0g
ICAgLy8gV2ViS2l0MSBvbmx5IGhhcyBhIHNpbmdsZSAiaWNvbiBkaWQgY2hhbmdlIiBub3RpZmlj
YXRpb24uCi0gICAgZGlkSW1wb3J0SWNvblVSTEZvclBhZ2VVUkwocGFnZVVSTCk7Ci19Ci0KLXZv
aWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRGaW5pc2hVUkxJbXBvcnQoKQotewotfQotCi12b2lkIFdl
Ykljb25EYXRhYmFzZTo6c2NoZWR1bGVOb3RpZmljYXRpb25EZWxpdmVyeSgpCi17Ci0gICAgLy8g
Q2FsbGVyIG9mIHRoaXMgbWV0aG9kIG11c3QgaG9sZCB0aGUgbV9ub3RpZmljYXRpb25RdWV1ZSBs
b2NrCi0gICAgQVNTRVJUKCFtX25vdGlmaWNhdGlvbk11dGV4LnRyeUxvY2soKSk7Ci0KLSAgICBp
ZiAoIW1fZGVsaXZlcnlSZXF1ZXN0ZWQpIHsKLSAgICAgICAgbV9kZWxpdmVyeVJlcXVlc3RlZCA9
IHRydWU7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW10gewotICAgICAgICAgICAgZGVsaXZl
ck5vdGlmaWNhdGlvbnMoMCk7Ci0gICAgICAgIH0pOwotICAgIH0KLX0KLQotQlNUUiBXZWJJY29u
RGF0YWJhc2U6Omljb25EYXRhYmFzZURpZEFkZEljb25Ob3RpZmljYXRpb24oKQotewotICAgIHN0
YXRpYyBCU1RSIGRpZEFkZEljb25OYW1lID0gU3lzQWxsb2NTdHJpbmcoV2ViSWNvbkRhdGFiYXNl
RGlkQWRkSWNvbk5vdGlmaWNhdGlvbik7Ci0gICAgcmV0dXJuIGRpZEFkZEljb25OYW1lOwotfQot
Ci1CU1RSIFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlTm90aWZpY2F0aW9uVXNlckluZm9V
UkxLZXkoKQotewotICAgIHN0YXRpYyBCU1RSIGljb25Vc2VySW5mb1VSTEtleSA9IFN5c0FsbG9j
U3RyaW5nKFdlYkljb25Ob3RpZmljYXRpb25Vc2VySW5mb1VSTEtleSk7Ci0gICAgcmV0dXJuIGlj
b25Vc2VySW5mb1VSTEtleTsKLX0KLQotQlNUUiBXZWJJY29uRGF0YWJhc2U6Omljb25EYXRhYmFz
ZURpZFJlbW92ZUFsbEljb25zTm90aWZpY2F0aW9uKCkKLXsKLSAgICBzdGF0aWMgQlNUUiBkaWRS
ZW1vdmVBbGxJY29uc05hbWUgPSBTeXNBbGxvY1N0cmluZyhXZWJJY29uRGF0YWJhc2VEaWRSZW1v
dmVBbGxJY29uc05vdGlmaWNhdGlvbik7Ci0gICAgcmV0dXJuIGRpZFJlbW92ZUFsbEljb25zTmFt
ZTsKLX0KLQotc3RhdGljIHZvaWQgcG9zdERpZFJlbW92ZUFsbEljb25zTm90aWZpY2F0aW9uKFdl
Ykljb25EYXRhYmFzZSogaWNvbkRCKQotewotICAgIElXZWJOb3RpZmljYXRpb25DZW50ZXIqIG5v
dGlmeUNlbnRlciA9IFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6ZGVmYXVsdENlbnRlckludGVybmFs
KCk7Ci0gICAgbm90aWZ5Q2VudGVyLT5wb3N0Tm90aWZpY2F0aW9uTmFtZShXZWJJY29uRGF0YWJh
c2U6Omljb25EYXRhYmFzZURpZFJlbW92ZUFsbEljb25zTm90aWZpY2F0aW9uKCksIHN0YXRpY19j
YXN0PElXZWJJY29uRGF0YWJhc2UqPihpY29uREIpLCAwKTsKLX0KLQotc3RhdGljIHZvaWQgcG9z
dERpZEFkZEljb25Ob3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBXZWJJY29uRGF0
YWJhc2UqIGljb25EQikKLXsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBkaWN0aW9uYXJ5
OwotICAgIGRpY3Rpb25hcnkuc2V0KFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlTm90aWZp
Y2F0aW9uVXNlckluZm9VUkxLZXkoKSwgcGFnZVVSTCk7Ci0gICAgQ09NUHRyPElQcm9wZXJ0eUJh
Zz4gdXNlckluZm8oQWRvcHRDT00sIENPTVByb3BlcnR5QmFnPFN0cmluZz46OmFkb3B0KGRpY3Rp
b25hcnkpKTsKLQotICAgIElXZWJOb3RpZmljYXRpb25DZW50ZXIqIG5vdGlmeUNlbnRlciA9IFdl
Yk5vdGlmaWNhdGlvbkNlbnRlcjo6ZGVmYXVsdENlbnRlckludGVybmFsKCk7Ci0gICAgbm90aWZ5
Q2VudGVyLT5wb3N0Tm90aWZpY2F0aW9uTmFtZShXZWJJY29uRGF0YWJhc2U6Omljb25EYXRhYmFz
ZURpZEFkZEljb25Ob3RpZmljYXRpb24oKSwgc3RhdGljX2Nhc3Q8SVdlYkljb25EYXRhYmFzZSo+
KGljb25EQiksIHVzZXJJbmZvLmdldCgpKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OmRl
bGl2ZXJOb3RpZmljYXRpb25zKHZvaWQqKQotewotICAgIEFTU0VSVChtX3NoYXJlZFdlYkljb25E
YXRhYmFzZSk7Ci0gICAgaWYgKCFtX3NoYXJlZFdlYkljb25EYXRhYmFzZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgQVNTRVJUKG1fc2hhcmVkV2ViSWNvbkRhdGFiYXNlLT5tX2RlbGl2ZXJ5UmVx
dWVzdGVkKTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IHF1ZXVlOwotICAgIHsKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zaGFyZWRXZWJJY29uRGF0YWJhc2UtPm1fbm90aWZpY2F0aW9uTXV0
ZXgpOwotICAgICAgICBxdWV1ZS5zd2FwKG1fc2hhcmVkV2ViSWNvbkRhdGFiYXNlLT5tX25vdGlm
aWNhdGlvblF1ZXVlKTsKLSAgICAgICAgbV9zaGFyZWRXZWJJY29uRGF0YWJhc2UtPm1fZGVsaXZl
cnlSZXF1ZXN0ZWQgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcXVldWUuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKHF1ZXVlW2ldLmlzTnVsbCgpKQot
ICAgICAgICAgICAgcG9zdERpZFJlbW92ZUFsbEljb25zTm90aWZpY2F0aW9uKG1fc2hhcmVkV2Vi
SWNvbkRhdGFiYXNlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcG9zdERpZEFkZEljb25O
b3RpZmljYXRpb24ocXVldWVbaV0sIG1fc2hhcmVkV2ViSWNvbkRhdGFiYXNlKTsKLSAgICB9Ci19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJY29uRGF0YWJhc2UuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkljb25EYXRhYmFzZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhZWZkYjJlNGZjMy4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViSWNvbkRhdGFiYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDA5LCAyMDEzLTIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2lmbmRlZiBXZWJJY29uRGF0YWJhc2VfSAotI2RlZmluZSBXZWJJY29u
RGF0YWJhc2VfSAotCi0jaW5jbHVkZSAiV2ViS2l0LmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0lj
b25EYXRhYmFzZUNsaWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvSW50U2l6ZUhhc2guaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLSNpbmNsdWRl
IDx3aW5kb3dzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlCi17Ci0gICAgY2xhc3MgSWNvbkRhdGFi
YXNlOwotfTsgLy9uYW1lc3BhY2UgV2ViQ29yZQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11
c2luZyBuYW1lc3BhY2UgV1RGOwotCi1jbGFzcyBXZWJJY29uRGF0YWJhc2UgOiBwdWJsaWMgSVdl
Ykljb25EYXRhYmFzZSwgcHVibGljIFdlYkNvcmU6Okljb25EYXRhYmFzZUNsaWVudAotewotcHVi
bGljOgotICAgIHN0YXRpYyBXZWJJY29uRGF0YWJhc2UqIGNyZWF0ZUluc3RhbmNlKCk7Ci0gICAg
c3RhdGljIFdlYkljb25EYXRhYmFzZSogc2hhcmVkV2ViSWNvbkRhdGFiYXNlKCk7Ci1wcml2YXRl
OgotICAgIFdlYkljb25EYXRhYmFzZSgpOwotICAgIH5XZWJJY29uRGF0YWJhc2UoKTsKLSAgICB2
b2lkIGluaXQoKTsKLSAgICB2b2lkIHN0YXJ0VXBJY29uRGF0YWJhc2UoKTsKLSAgICB2b2lkIHNo
dXREb3duSWNvbkRhdGFiYXNlKCk7Ci1wdWJsaWM6Ci0KLSAgICAvLyBJVW5rbm93bgotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJ
RCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9O
RyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhP
RENBTExUWVBFIFJlbGVhc2UoKTsKLQotICAgIC8vIElXZWJJY29uRGF0YWJhc2UKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hhcmVkSWNvbkRhdGFiYXNlKF9DT01fT3V0
cHRyX29wdF8gSVdlYkljb25EYXRhYmFzZSoqKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgaWNvbkZvclVSTChfSW5fIEJTVFIgdXJsLCBfSW5fIExQU0laRSwgQk9PTCBj
YWNoZSwgX19kZXJlZl9vcHRfb3V0IEhCSVRNQVAqIGltYWdlKTsKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVmYXVsdEljb25XaXRoU2l6ZShfSW5fIExQU0laRSwgX19k
ZXJlZl9vcHRfb3V0IEhCSVRNQVAqIHJlc3VsdCk7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHJldGFpbkljb25Gb3JVUkwoX0luXyBCU1RSKTsKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVsZWFzZUljb25Gb3JVUkwoX0luXyBCU1RSKTsKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQWxsSWNvbnMoKTsKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVsYXlEYXRhYmFzZUNsZWFudXAo
KTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsb3dEYXRhYmFzZUNs
ZWFudXAoKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaWNvblVSTEZv
clVSTChfSW5fIEJTVFIgdXJsLCBfX2RlcmVmX29wdF9vdXQgQlNUUiogaWNvblVSTCk7Ci0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzRW5hYmxlZChfT3V0XyBCT09MKik7
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEVuYWJsZWQoQk9PTCk7
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0ljb25Gb3JVUkwoX0lu
XyBCU1RSIHVybCwgX091dF8gQk9PTCogcmVzdWx0KTsKLQotICAgIC8vIEljb25EYXRhYmFzZUNs
aWVudAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVBbGxJY29ucygpOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRJbXBvcnRJY29uVVJMRm9yUGFnZVVSTChjb25zdCBXVEY6OlN0cmluZyYpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRJbXBvcnRJY29uRGF0YUZvclBhZ2VVUkwoY29uc3QgV1RGOjpTdHJp
bmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwoY29uc3QgV1RG
OjpTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoVVJMSW1wb3J0KCk7Ci0KLSAg
ICBzdGF0aWMgQlNUUiBpY29uRGF0YWJhc2VEaWRBZGRJY29uTm90aWZpY2F0aW9uKCk7Ci0gICAg
c3RhdGljIEJTVFIgaWNvbkRhdGFiYXNlRGlkUmVtb3ZlQWxsSWNvbnNOb3RpZmljYXRpb24oKTsK
LSAgICBzdGF0aWMgQlNUUiBpY29uRGF0YWJhc2VOb3RpZmljYXRpb25Vc2VySW5mb1VSTEtleSgp
OwotcHJvdGVjdGVkOgotICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07Ci0gICAgc3RhdGljIFdl
Ykljb25EYXRhYmFzZSogbV9zaGFyZWRXZWJJY29uRGF0YWJhc2U7Ci0KLSAgICAvLyBLZWVwIGEg
c2V0IG9mIEhCSVRNQVBzIGFyb3VuZCBmb3IgdGhlIGRlZmF1bHQgaWNvbiwgYW5kIGFub3RoZXIK
LSAgICAvLyB0byBzaGFyZSBhbW9uZ3N0IHByZXNlbnQgc2l0ZSBpY29ucwotICAgIEhCSVRNQVAg
Z2V0T3JDcmVhdGVTaGFyZWRCaXRtYXAoY29uc3QgSW50U2l6ZSYpOwotICAgIEhCSVRNQVAgZ2V0
T3JDcmVhdGVEZWZhdWx0SWNvbkJpdG1hcChjb25zdCBJbnRTaXplJik7Ci0gICAgSGFzaE1hcDxJ
bnRTaXplLCBIQklUTUFQPiBtX2RlZmF1bHRJY29uTWFwOwotICAgIEhhc2hNYXA8SW50U2l6ZSwg
SEJJVE1BUD4gbV9zaGFyZWRJY29uTWFwOwotCi0gICAgTG9jayBtX25vdGlmaWNhdGlvbk11dGV4
OwotICAgIFZlY3RvcjxTdHJpbmc+IG1fbm90aWZpY2F0aW9uUXVldWU7Ci0gICAgdm9pZCBzY2hl
ZHVsZU5vdGlmaWNhdGlvbkRlbGl2ZXJ5KCk7Ci0gICAgYm9vbCBtX2RlbGl2ZXJ5UmVxdWVzdGVk
IHsgZmFsc2UgfTsKLQotICAgIHN0YXRpYyB2b2lkIGRlbGl2ZXJOb3RpZmljYXRpb25zKHZvaWQq
KTsKLX07Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0Q2xhc3NGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNz
RmFjdG9yeS5jcHAKaW5kZXggZDg3MDhhNTQ2ZTUuLmE2MWVkZTdlYWNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKQEAgLTM5LDcgKzM5LDYg
QEAKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiV2ViSGlz
dG9yeS5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgiCi0jaW5jbHVkZSAiV2ViSWNvbkRh
dGFiYXNlLmgiCiAjaW5jbHVkZSAiV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5oIgogI2luY2x1ZGUg
IldlYktpdC5oIgogI2luY2x1ZGUgIldlYktpdE1lc3NhZ2VMb29wLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0RExMLmNwcAppbmRleCA3YzNmYmIyNzNmNi4uNWRjMmMxMmJkMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1
ZGUgIldlYktpdENsYXNzRmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9JY29uRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+
CkBAIC0xNjMsNyArMTYyLDYgQEAgU1REQVBJIExvY2FsU2VydmVyRGlkRGllKCkKIAogdm9pZCBz
aHV0RG93bldlYktpdCgpCiB7Ci0gICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuY2xvc2UoKTsK
ICAgICBXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y2xvc2VMb2NhbFN0b3Jh
Z2UoKTsKICNpZiBVU0UoRUdMKQogICAgIFBsYXRmb3JtRGlzcGxheTo6c2h1dERvd25FZ2xEaXNw
bGF5cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TG9nZ2lu
Zy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TG9nZ2luZy5oCmluZGV4IDU4OWVl
Yjk5ODc0Li5mNjJlMDg4OWJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0TG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdExvZ2dp
bmcuaApAQCAtNTAsNyArNTAsNiBAQAogICAgIE0oRm9udFN1YnN0aXR1dGlvbikgXAogICAgIE0o
Rm9ybURlbGVnYXRlKSBcCiAgICAgTShIaXN0b3J5KSBcCi0gICAgTShJY29uRGF0YWJhc2UpIFwK
ICAgICBNKExpdmVDb25uZWN0KSBcCiAgICAgTShMb2FkaW5nKSBcCiAgICAgTShQYWdlQ2FjaGUp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggNDQ2Mzk4YjU5YTUuLjk2ZjQ5
NDIxZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNTQsNyArNTQsNiBA
QAogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJH
ZW9sb2NhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIK
LSNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3IuaCIK
ICNpbmNsdWRlICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKQEAg
LTc3OSw3ICs3NzgsNiBAQCBIUkVTVUxUIFdlYlZpZXc6OmNsb3NlKCkKIAogICAgIG1fbWFpbkZy
YW1lID0gbnVsbHB0cjsKIAotICAgIHJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbihmYWxzZSk7
CiAgICAgSVdlYk5vdGlmaWNhdGlvbkNlbnRlciogbm90aWZ5Q2VudGVyID0gV2ViTm90aWZpY2F0
aW9uQ2VudGVyOjpkZWZhdWx0Q2VudGVySW50ZXJuYWwoKTsKICAgICBub3RpZnlDZW50ZXItPnJl
bW92ZU9ic2VydmVyKHRoaXMsIFdlYlByZWZlcmVuY2VzOjp3ZWJQcmVmZXJlbmNlc0NoYW5nZWRO
b3RpZmljYXRpb24oKSwgc3RhdGljX2Nhc3Q8SVdlYlByZWZlcmVuY2VzKj4obV9wcmVmZXJlbmNl
cy5nZXQoKSkpOwogCkBAIC0zMjIzLDY3ICszMjIxLDE3IEBAIHZvaWQgV2ViVmlldzo6c2V0VG9v
bFRpcChjb25zdCBTdHJpbmcmIHRvb2xUaXApCiAgICAgOjpTZW5kTWVzc2FnZShtX3Rvb2xUaXBI
d25kLCBUVE1fQUNUSVZBVEUsICFtX3Rvb2xUaXAuaXNFbXB0eSgpLCAwKTsKIH0KIAotSFJFU1VM
VCBXZWJWaWV3Ojpub3RpZnlEaWRBZGRJY29uKElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlv
bikKK0hSRVNVTFQgV2ViVmlldzo6bm90aWZ5RGlkQWRkSWNvbihJV2ViTm90aWZpY2F0aW9uKikK
IHsKLSAgICBDT01QdHI8SVByb3BlcnR5QmFnPiBwcm9wZXJ0eUJhZzsKLSAgICBIUkVTVUxUIGhy
ID0gbm90aWZpY2F0aW9uLT51c2VySW5mbygmcHJvcGVydHlCYWcpOwotICAgIGlmIChGQUlMRUQo
aHIpKQotICAgICAgICByZXR1cm4gaHI7Ci0gICAgaWYgKCFwcm9wZXJ0eUJhZykKLSAgICAgICAg
cmV0dXJuIEVfRkFJTDsKLQotICAgIENPTVZhcmlhbnQgaWNvblVzZXJJbmZvVVJMOwotICAgIGhy
ID0gcHJvcGVydHlCYWctPlJlYWQoV2ViSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VOb3RpZmlj
YXRpb25Vc2VySW5mb1VSTEtleSgpLCAmaWNvblVzZXJJbmZvVVJMLCBudWxscHRyKTsKLSAgICBp
ZiAoRkFJTEVEKGhyKSkKLSAgICAgICAgcmV0dXJuIGhyOwotCi0gICAgaWYgKGljb25Vc2VySW5m
b1VSTC52YXJpYW50VHlwZSgpICE9IFZUX0JTVFIpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7Ci0K
LSAgICBTdHJpbmcgbWFpbkZyYW1lVVJMOwotICAgIGlmIChtX21haW5GcmFtZSkKLSAgICAgICAg
bWFpbkZyYW1lVVJMID0gbV9tYWluRnJhbWUtPnVybCgpLnN0cmluZygpOwotCi0gICAgaWYgKCFt
YWluRnJhbWVVUkwuaXNFbXB0eSgpICYmIG1haW5GcmFtZVVSTCA9PSB0b1N0cmluZyhWX0JTVFIo
Jmljb25Vc2VySW5mb1VSTCkpKQotICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVJY29uRnJvbVdl
YkZyYW1lKG1fbWFpbkZyYW1lKTsKLQotICAgIHJldHVybiBocjsKKwlyZXR1cm4gRV9GQUlMOwog
fQogCi12b2lkIFdlYlZpZXc6OnJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbihib29sIGxpc3Rl
bikKK3ZvaWQgV2ViVmlldzo6cmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wpCiB7Ci0g
ICAgSVdlYk5vdGlmaWNhdGlvbkNlbnRlciogbmMgPSBXZWJOb3RpZmljYXRpb25DZW50ZXI6OmRl
ZmF1bHRDZW50ZXJJbnRlcm5hbCgpOwotICAgIGlmIChsaXN0ZW4pCi0gICAgICAgIG5jLT5hZGRP
YnNlcnZlcih0aGlzLCBXZWJJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZURpZEFkZEljb25Ob3Rp
ZmljYXRpb24oKSwgMCk7Ci0gICAgZWxzZQotICAgICAgICBuYy0+cmVtb3ZlT2JzZXJ2ZXIodGhp
cywgV2ViSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VEaWRBZGRJY29uTm90aWZpY2F0aW9uKCks
IDApOwogfQogCi12b2lkIFdlYlZpZXc6OmRpc3BhdGNoRGlkUmVjZWl2ZUljb25Gcm9tV2ViRnJh
bWUoV2ViRnJhbWUqIGZyYW1lKQordm9pZCBXZWJWaWV3OjpkaXNwYXRjaERpZFJlY2VpdmVJY29u
RnJvbVdlYkZyYW1lKFdlYkZyYW1lKikKIHsKLSAgICByZWdpc3RlckZvckljb25Ob3RpZmljYXRp
b24oZmFsc2UpOwotCi0gICAgaWYgKG1fZnJhbWVMb2FkRGVsZWdhdGUpIHsKLSAgICAgICAgU3Ry
aW5nIHN0ciA9IGZyYW1lLT51cmwoKS5zdHJpbmcoKTsKLQotICAgICAgICBJbnRTaXplIHN6KDE2
LCAxNik7Ci0KLSAgICAgICAgQml0bWFwSW5mbyBibUluZm8gPSBCaXRtYXBJbmZvOjpjcmVhdGUo
c3opOwotCi0gICAgICAgIEhCSVRNQVAgaEJpdG1hcCA9IG51bGxwdHI7Ci0KLSAgICAgICAgSW1h
Z2UqIGljb24gPSBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKHN0ciwg
c3opOwotCi0gICAgICAgIGlmIChpY29uICYmIGljb24tPndpZHRoKCkpIHsKLSAgICAgICAgICAg
IEhXbmREQyBkYygwKTsKLSAgICAgICAgICAgIGhCaXRtYXAgPSBDcmVhdGVESUJTZWN0aW9uKGRj
LCAmYm1JbmZvLCBESUJfUkdCX0NPTE9SUywgMCwgMCwgMCk7Ci0gICAgICAgICAgICBpY29uLT5n
ZXRIQklUTUFQT2ZTaXplKGhCaXRtYXAsICZzeik7Ci0gICAgICAgIH0KLQotICAgICAgICBIUkVT
VUxUIGhyID0gbV9mcmFtZUxvYWREZWxlZ2F0ZS0+ZGlkUmVjZWl2ZUljb24odGhpcywgaEJpdG1h
cCwgZnJhbWUpOwotICAgICAgICBpZiAoKGhyID09IEVfTk9USU1QTCkgJiYgaEJpdG1hcCkKLSAg
ICAgICAgICAgIERlbGV0ZU9iamVjdChoQml0bWFwKTsKLSAgICB9CiB9CiAKIEhSRVNVTFQgV2Vi
Vmlldzo6c2V0QWNjZXNzaWJpbGl0eURlbGVnYXRlKF9Jbl9vcHRfIElBY2Nlc3NpYmlsaXR5RGVs
ZWdhdGUqIGQpCkBAIC01MTA1LDkgKzUwNTMsNiBAQCBIUkVTVUxUIFdlYlZpZXc6Om9uTm90aWZ5
KF9Jbl9vcHRfIElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKICAgICBpZiAoRkFJTEVE
KGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwogCi0gICAgaWYgKCF3Y3NjbXAobmFtZSwgV2ViSWNv
bkRhdGFiYXNlOjppY29uRGF0YWJhc2VEaWRBZGRJY29uTm90aWZpY2F0aW9uKCkpKQotICAgICAg
ICByZXR1cm4gbm90aWZ5RGlkQWRkSWNvbihub3RpZmljYXRpb24pOwotCiAgICAgaWYgKCF3Y3Nj
bXAobmFtZSwgV2ViUHJlZmVyZW5jZXM6OndlYlByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlv
bigpKSkKICAgICAgICAgcmV0dXJuIG5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChub3RpZmljYXRp
b24pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315885</attachid>
            <date>2017-07-18 21:11:38 -0700</date>
            <delta_ts>2017-07-18 22:49:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>winpatch</filename>
            <type>text/plain</type>
            <size>35142</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDgzMzZlMzg2NDlkLi4wMTVl
ZTY1NjEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9QbGF0Zm9ybVdpbi5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xNzMsNyAr
MTczLDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVNfQ2xhc3NlcwogICAgIHdpbi9XZWJI
VE1MUmVwcmVzZW50YXRpb24uY3BwCiAgICAgd2luL1dlYkhpc3RvcnkuY3BwCiAgICAgd2luL1dl
Ykhpc3RvcnlJdGVtLmNwcAotICAgIHdpbi9XZWJJY29uRGF0YWJhc2UuY3BwCiAgICAgd2luL1dl
Ykluc3BlY3Rvci5jcHAKICAgICB3aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKICAgICB3
aW4vV2ViS2l0Q09NQVBJLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGNlMjkz
MDMwZWY2Li45MzZmYzczMTYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQwIEBACisyMDE3LTA3LTE3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmUgV2ViSWNvbkRhdGFiYXNlIGZyb20gV2ViS2l0TGVnYWN5L3dpbi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDYwOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0IGlzIHVu
dXNlZC4KKyAgICAgICAgCisgICAgICAgICogRm9yRWFjaENvQ2xhc3MuaDoKKworICAgICAgICAq
IEludGVyZmFjZXMvSVdlYkljb25EYXRhYmFzZS5pZGw6IFJlbW92ZWQuCisKKyAgICAgICAgKiBJ
bnRlcmZhY2VzL1dlYktpdC5pZGw6CisKKyAgICAgICAgKiBXZWJDb3JlU3RhdGlzdGljcy5jcHA6
CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6aWNvblBhZ2VVUkxNYXBwaW5nQ291bnQpOgor
ICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6Omljb25SZXRhaW5lZFBhZ2VVUkxDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6aWNvblJlY29yZENvdW50KToKKyAgICAgICAgKFdl
YkNvcmVTdGF0aXN0aWNzOjppY29uc1dpdGhEYXRhQ291bnQpOgorCisgICAgICAgICogV2ViSWNv
bkRhdGFiYXNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJY29uRGF0YWJhc2UuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBXZWJLaXRDbGFzc0ZhY3RvcnkuY3BwOgorCisgICAgICAgICogV2Vi
S2l0RExMLmNwcDoKKyAgICAgICAgKHNodXREb3duV2ViS2l0KToKKworICAgICAgICAqIFdlYktp
dExvZ2dpbmcuaDoKKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6
Y2xvc2UpOgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5RGlkQWRkSWNvbik6CisgICAgICAgIChX
ZWJWaWV3OjpyZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24pOgorICAgICAgICAoV2ViVmlldzo6
ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbkZyb21XZWJGcmFtZSk6CisgICAgICAgIChXZWJWaWV3Ojpv
bk5vdGlmeSk6CisKIDIwMTctMDctMTQgIEJhc3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNv
bnkuY29tPgogCiAgICAgICAgIFtDdXJsXSBEb24ndCBzdGFydCBkb3dubG9hZGluZyBtb3JlIHRo
YW4gb25jZSBmb3Igc2FtZSByZXF1ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9Gb3JFYWNoQ29DbGFzcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRm9yRWFjaENv
Q2xhc3MuaAppbmRleCAzZjk0OGQ4NGQ4Yy4uODg1OTlhNTBlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0ZvckVhY2hDb0NsYXNzLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vRm9yRWFjaENvQ2xhc3MuaApAQCAtNDIsNyArNDIsNiBAQAogICAgIG1hY3JvKFdl
YkVycm9yKSBcCiAgICAgbWFjcm8oV2ViSGlzdG9yeSkgXAogICAgIG1hY3JvKFdlYkhpc3RvcnlJ
dGVtKSBcCi0gICAgbWFjcm8oV2ViSWNvbkRhdGFiYXNlKSBcCiAgICAgbWFjcm8oV2ViSmF2YVNj
cmlwdENvbGxlY3RvcikgXAogICAgIG1hY3JvKFdlYktpdFN0YXRpc3RpY3MpIFwKICAgICBtYWNy
byhXZWJNdXRhYmxlVVJMUmVxdWVzdCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vSW50ZXJmYWNlcy9JV2ViSWNvbkRhdGFiYXNlLmlkbCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0ludGVyZmFjZXMvSVdlYkljb25EYXRhYmFzZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDVmZDYwOWQ1MGE5Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9JbnRlcmZhY2VzL0lXZWJJY29uRGF0YWJhc2UuaWRsCisrKyAvZGV2L251bGwK
QEAgLTEsMTc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotY3BwX3F1b3RlKCIjZGVmaW5lIFdlYkljb25EYXRh
YmFzZURpZEFkZEljb25Ob3RpZmljYXRpb24gVEVYVChcIldlYkljb25EYXRhYmFzZURpZEFkZElj
b25Ob3RpZmljYXRpb25cIikiKQotY3BwX3F1b3RlKCIjZGVmaW5lIFdlYkljb25Ob3RpZmljYXRp
b25Vc2VySW5mb1VSTEtleSBURVhUKFwiV2ViSWNvbk5vdGlmaWNhdGlvblVzZXJJbmZvVVJMS2V5
XCIpIikKLWNwcF9xdW90ZSgiI2RlZmluZSBXZWJJY29uRGF0YWJhc2VEaWRSZW1vdmVBbGxJY29u
c05vdGlmaWNhdGlvbiBURVhUKFwiV2ViSWNvbkRhdGFiYXNlRGlkUmVtb3ZlQWxsSWNvbnNOb3Rp
ZmljYXRpb25cIikiKQotCi0jaWZuZGVmIERPX05PX0lNUE9SVFMKLWltcG9ydCAib2FpZGwuaWRs
IjsKLWltcG9ydCAib2NpZGwuaWRsIjsKLSNlbmRpZgotCi0vKiEKLSAgICBAY2xhc3MgV2ViSWNv
bkRhdGFiYXNlCi0gICAgQGRpc2N1c3Npb24gRmVhdHVyZXM6Ci0gICAgICAgIC0gbWVtb3J5IGNh
Y2hlIGljb25zIGF0IGRpZmZlcmVudCBzaXplcwotICAgICAgICAtIGRpc2sgc3RvcmFnZQotICAg
ICAgICAtIGljb24gdXBkYXRlIG5vdGlmaWNhdGlvbgotICAgICAgICAKLSAgICAgICAgVXNlczoK
LSAgICAgICAgLSBXZWJJY29uTG9hZGVyIHRvIGNhY2hlIGljb24gaW1hZ2VzCi0gICAgICAgIC0g
VUkgZWxlbWVudHMgdG8gcmV0cmlldmUgaWNvbnMgdGhhdCByZXByZXNlbnQgc2l0ZSBVUkxzLgot
ICAgICAgICAtIFNhdmUgaWNvbnMgdG8gZGlzayBmb3IgbGF0ZXIgdXNlLgotIAotICAgIEV2ZXJ5
IGljb24gaW4gdGhlIGRhdGFiYXNlIGhhcyBhIHJldGFpbiBjb3VudC4gIElmIGFuIGljb24gaGFz
IGEgcmV0YWluIGNvdW50IGdyZWF0ZXIgdGhhbiAwLCBpdCB3aWxsIGJlIHdyaXR0ZW4gdG8gZGlz
ayBmb3IgbGF0ZXIgdXNlLiBJZiBhbiBpY29uJ3MgcmV0YWluIGNvdW50IGVxdWFscyB6ZXJvIGl0
IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIGRpc2suICBUaGUgcmV0YWluIGNvdW50IGlzIG5vdCBwZXJz
aXN0ZW50IGFjcm9zcyBsYXVuY2hlcy4gSWYgdGhlIFdlYktpdCBjbGllbnQgd2lzaGVzIHRvIHJl
dGFpbiBhbiBpY29uIGl0IHNob3VsZCByZXRhaW4gdGhlIGljb24gb25jZSBmb3IgZXZlcnkgbGF1
bmNoLiAgVGhpcyBpcyBiZXN0IGRvbmUgYXQgaW5pdGlhbGl6YXRpb24gdGltZSBiZWZvcmUgdGhl
IGRhdGFiYXNlIGJlZ2lucyByZW1vdmluZyBpY29ucy4gIFRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBk
YXRhYmFzZSBkb2VzIG5vdCByZW1vdmUgdW5yZXRhaW5lZCBpY29ucyBwcmVtYXR1cmVseSwgY2Fs
bCBkZWxheURhdGFiYXNlQ2xlYW51cCB1bnRpbCBhbGwgZGVzaXJlZCBpY29ucyBhcmUgcmV0YWlu
ZWQuICBPbmNlIGFsbCBhcmUgcmV0YWluZWQsIGNhbGwgYWxsb3dEYXRhYmFzZUNsZWFudXAuCi0g
ICAgCi0gICAgTm90ZSB0aGF0IGFuIGljb24gY2FuIGJlIHJldGFpbmVkIGFmdGVyIHRoZSBkYXRh
YmFzZSBjbGVhbi11cCBoYXMgYmVndW4uIFRoaXMganVzdCBoYXMgdG8gYmUgZG9uZSBiZWZvcmUg
dGhlIGljb24gaXMgcmVtb3ZlZC4gSWNvbnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2Ug
d2hlbmV2ZXIgbmV3IGljb25zIGFyZSBhZGRlZCB0byBpdC4KLSAgICAKLSAgICBSZXRlbnRpb24g
bWV0aG9kcyBjYW4gYmUgY2FsbGVkIGZvciBpY29ucyB0aGF0IGFyZSBub3QgeWV0IGluIHRoZSBk
YXRhYmFzZS4KLQotICAgIEBpbnRlcmZhY2UgV2ViSWNvbkRhdGFiYXNlIDogTlNPYmplY3QKLSov
Ci1bCi0gICAgb2JqZWN0LAotICAgIG9sZWF1dG9tYXRpb24sCi0gICAgaGlkZGVuLAotICAgIHV1
aWQoRTkzRjI2MTYtMjU2MC00N2Q5LUJENEQtNkUyRjFFMUQzMTc0KSwKLSAgICBwb2ludGVyX2Rl
ZmF1bHQodW5pcXVlKQotXQotaW50ZXJmYWNlIElXZWJJY29uRGF0YWJhc2UgOiBJVW5rbm93bgot
ewotICAgIC8qIQotICAgICAgICBAbWV0aG9kIHNoYXJlZEljb25EYXRhYmFzZQotICAgICAgICBA
YWJzdHJhY3QgUmV0dXJucyBhIHNoYXJlZCBpbnN0YW5jZSBvZiB0aGUgaWNvbiBkYXRhYmFzZQot
ICAgICAgICArIChXZWJJY29uRGF0YWJhc2UgKilzaGFyZWRJY29uRGF0YWJhc2U7Ci0gICAgKi8K
LSAgICBIUkVTVUxUIHNoYXJlZEljb25EYXRhYmFzZShbb3V0LCByZXR2YWxdIElXZWJJY29uRGF0
YWJhc2UqKiByZXN1bHQpOwotCi0gICAgLyohCi0gICAgICAgIEBtZXRob2QgaWNvbkZvclVSTDp3
aXRoU2l6ZToKLSAgICAgICAgQGRpc2N1c3Npb24gQ2FsbHMgaWNvbkZvclVSTDp3aXRoU2l6ZTpj
YWNoZTogd2l0aCBZRVMgZm9yIGNhY2hlLgotICAgICAgICBAcGFyYW0gVVJMCi0gICAgICAgIEBw
YXJhbSBzaXplCi0gICAgICAgIC0gKE5TSW1hZ2UgKilpY29uRm9yVVJMOihOU1N0cmluZyAqKVVS
TCB3aXRoU2l6ZTooTlNTaXplKXNpemU7Ci0gICAgKi8KLSAgICAvKiEKLSAgICAgICAgQG1ldGhv
ZCBpY29uRm9yVVJMOndpdGhTaXplOmNhY2hlOgotICAgICAgICBAZGlzY3Vzc2lvbiBSZXR1cm5z
IGFuIGljb24gZm9yIGEgd2ViIHNpdGUgVVJMIGZyb20gbWVtb3J5IG9yIGRpc2suIG5pbCBpZiBu
b25lIGlzIGZvdW5kLgotICAgICAgICBVc3VhbGx5IGNhbGxlZCBieSBhIFVJIGVsZW1lbnQgdG8g
ZGV0ZXJtaW5lIGlmIGEgc2l0ZSBVUkwgaGFzIGFuIGFzc29jaWF0ZWQgaWNvbi4KLSAgICAgICAg
T2Z0ZW4gY2FsbGVkIGJ5IHRoZSBvYnNlcnZlciBvZiBXZWJJY29uQ2hhbmdlZE5vdGlmaWNhdGlv
biBhZnRlciB0aGUgbm90aWZpY2F0aW9uIGlzIHNlbnQuCi0gICAgICAgIEBwYXJhbSBVUkwKLSAg
ICAgICAgQHBhcmFtIHNpemUKLSAgICAgICAgQHBhcmFtIGNhY2hlIElmIHllcywgY2FjaGVzIHRo
ZSByZXR1cm5lZCBpbWFnZSBpbiBtZW1vcnkgaWYgbm90IGFscmVhZHkgY2FjaGVkCi0gICAgICAg
IC0gKE5TSW1hZ2UgKilpY29uRm9yVVJMOihOU1N0cmluZyAqKVVSTCB3aXRoU2l6ZTooTlNTaXpl
KXNpemUgY2FjaGU6KEJPT0wpY2FjaGU7Ci0gICAgKi8KLSAgICAvKiEKLSAgICAgICAgQG1ldGhv
ZCBpY29uVVJMRm9yVVJMOndpdGhTaXplOmNhY2hlOgotICAgICAgICBAZGlzY3Vzc2lvbiBSZXR1
cm5zIGFuIGljb24gVVJMIGZvciBhIHdlYiBzaXRlIFVSTCBmcm9tIG1lbW9yeSBvciBkaXNrLiBu
aWwgaWYgbm9uZSBpcyBmb3VuZC4KLSAgICAgICAgQHBhcmFtIFVSTAotICAgICAgICAtIChOU1N0
cmluZyAqKWljb25VUkxGb3JVUkw6KE5TU3RyaW5nICopVVJMOwotICAgICovCi0gICAgSFJFU1VM
VCBpY29uRm9yVVJMKFtpbl0gQlNUUiB1cmwsIFtpbl0gTFBTSVpFIHNpemUsIFtpbl0gQk9PTCBj
YWNoZSwgW291dCwgcmV0dmFsXSBIQklUTUFQKiBoQml0bWFwKTsKLQotICAgIC8qIQotICAgICAg
ICBAbWV0aG9kIGRlZmF1bHRJY29uV2l0aFNpemU6Ci0gICAgICAgIEBwYXJhbSBzaXplCi0gICAg
ICAgIC0gKE5TSW1hZ2UgKilkZWZhdWx0SWNvbldpdGhTaXplOihOU1NpemUpc2l6ZTsKLSAgICAq
LwotICAgIEhSRVNVTFQgZGVmYXVsdEljb25XaXRoU2l6ZShbaW5dIExQU0laRSBzaXplLCBbb3V0
LCByZXR2YWxdIEhCSVRNQVAqIGhCaXRtYXApOwotCi0gICAgLyohCi0gICAgICAgIEBtZXRob2Qg
cmV0YWluSWNvbkZvclVSTDoKLSAgICAgICAgQGFic3RyYWN0IEluY3JlbWVudHMgdGhlIHJldGFp
biBjb3VudCBvZiB0aGUgaWNvbi4KLSAgICAgICAgQHBhcmFtIFVSTAotICAgICAgICAtICh2b2lk
KXJldGFpbkljb25Gb3JVUkw6KE5TU3RyaW5nICopVVJMOwotICAgICovCi0gICAgSFJFU1VMVCBy
ZXRhaW5JY29uRm9yVVJMKFtpbl0gQlNUUiB1cmwpOwotCi0gICAgLyohCi0gICAgICAgIEBtZXRo
b2QgcmVsZWFzZUljb25Gb3JVUkw6Ci0gICAgICAgIEBhYnN0cmFjdCBEZWNyZW1lbnRzIHRoZSBy
ZXRhaW4gY291bnQgb2YgdGhlIGljb24uCi0gICAgICAgIEBwYXJhbSBVUkwKLSAgICAgICAgLSAo
dm9pZClyZWxlYXNlSWNvbkZvclVSTDooTlNTdHJpbmcgKilVUkw7Ci0gICAgKi8KLSAgICBIUkVT
VUxUIHJlbGVhc2VJY29uRm9yVVJMKFtpbl0gQlNUUiB1cmwpOwotCi0gICAgLyohCi0gICAgICAg
IEBtZXRob2QgcmVtb3ZlQWxsSWNvbnM6Ci0gICAgICAgIEBhYnN0cmFjdCBFbXRwaWVzIHRoZSBJ
Y29uIERhdGFiYXNlCi0gICAgICAgIC0gKHZvaWQpcmVtb3ZlQWxsSWNvbnM7Ci0gICAgKi8KLSAg
ICBIUkVTVUxUIHJlbW92ZUFsbEljb25zKCk7Ci0KLSAgICAvKiEKLSAgICAgICAgQG1ldGhvZCBk
ZWxheURhdGFiYXNlQ2xlYW51cDoKLSAgICAgICAgQGRpc2N1c3Npb24gT25seSBlZmZlY3RpdmUg
aWYgY2FsbGVkIGJlZm9yZSB0aGUgZGF0YWJhc2UgYmVnaW5zIHJlbW92aW5nIGljb25zLgotICAg
ICAgICBkZWxheURhdGFiYXNlQ2xlYW5VcCBpbmNyZW1lbnRzIGFuIGludGVybmFsIGNvdW50ZXIg
dGhhdCB3aGVuIDAgYmVnaW5zIHRoZSBkYXRhYmFzZSBjbGVhbi11cC4KLSAgICAgICAgVGhlIGNv
dW50ZXIgZXF1YWxzIDAgYXQgaW5pdGlhbGl6YXRpb24uCi0gICAgICAgIC0gKHZvaWQpZGVsYXlE
YXRhYmFzZUNsZWFudXA7Ci0gICAgKi8KLSAgICBIUkVTVUxUIGRlbGF5RGF0YWJhc2VDbGVhbnVw
KCk7Ci0KLSAgICAvKiEKLSAgICAgICAgQG1ldGhvZCBhbGxvd0RhdGFiYXNlQ2xlYW51cDoKLSAg
ICAgICAgQGRpc2N1c3Npb24gSW5mb3JtcyB0aGUgZGF0YWJhc2UgdGhhdCBpdCBub3cgY2FuIGJl
Z2luIHJlbW92aW5nIGljb25zLgotICAgICAgICBhbGxvd0RhdGFiYXNlQ2xlYW51cCBkZWNyZW1l
bnRzIGFuIGludGVybmFsIGNvdW50ZXIgdGhhdCB3aGVuIDAgYmVnaW5zIHRoZSBkYXRhYmFzZSBj
bGVhbi11cC4KLSAgICAgICAgVGhlIGNvdW50ZXIgZXF1YWxzIDAgYXQgaW5pdGlhbGl6YXRpb24u
Ci0gICAgICAgIC0gKHZvaWQpYWxsb3dEYXRhYmFzZUNsZWFudXA7Ci0gICAgKi8KLSAgICBIUkVT
VUxUIGFsbG93RGF0YWJhc2VDbGVhbnVwKCk7Ci0KLSAgICAvKiEKLSAgICAgICAgQG1ldGhvZCBp
Y29uVVJMRm9yVVJMOndpdGhTaXplOmNhY2hlOgotICAgICAgICBAZGlzY3Vzc2lvbiBSZXR1cm5z
IGFuIGljb24gVVJMIGZvciBhIHdlYiBzaXRlIFVSTCBmcm9tIG1lbW9yeSBvciBkaXNrLiBuaWwg
aWYgbm9uZSBpcyBmb3VuZC4KLSAgICAgICAgQHBhcmFtIFVSTAotICAgICAgICAtIChOU1N0cmlu
ZyAqKWljb25VUkxGb3JVUkw6KE5TU3RyaW5nICopVVJMOwotICAgICovCi0gICAgSFJFU1VMVCBp
Y29uVVJMRm9yVVJMKFtpbl0gQlNUUiB1cmwsIFtvdXQsIHJldHZhbF0gQlNUUiogaWNvblVSTCk7
Ci0KLSAgICAvKiEKLSAgICAgICAgQG1ldGhvZCBpc0VuYWJsZWQKLSAgICAgICAgQGRpc2N1c3Np
b24gUmV0dXJucyB0cnVlIGlmIHRoZSBpY29uIGRhdGFiYXNlIGlzIGN1cnJlbnRseSBlbmFibGVk
LCBvciBmYWxzZSBpZiBpdAotICAgICAgICBpcyBkaXNhYmxlZC4KLSAgICAgICAgLSAoQk9PTClp
c0VuYWJsZWQ7Ci0gICAgKi8KLSAgICBIUkVTVUxUIGlzRW5hYmxlZChbb3V0LCByZXR2YWxdIEJP
T0wqIHJlc3VsdCk7Ci0KLSAgICAvKiEKLSAgICAgICAgQG1ldGhvZCBzZXRFbmFibGVkOgotICAg
ICAgICBAZGlzY3Vzc2lvbiBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBpY29uIGRhdGFiYXNlIGJh
c2VkIG9uIHRoZSBmbGFnIHBhc3NlZCBpbi4KLSAgICAgICAgQHBhcmFtIGZsYWcgUGFzcyB0cnVl
IHRvIGVuYWJsZSB0aGUgaWNvbiBkYXRhYmFzZSwgb3IgZmFsc2UgdG8gZGlzYWJsZSBpdC4KLSAg
ICAgICAgLSAodm9pZClzZXRFbmFibGVkOihCT09MKWZsYWc7Ci0gICAgKi8KLSAgICBIUkVTVUxU
IHNldEVuYWJsZWQoW2luXSBCT09MIGZsYWcpOwotICAgIAotICAgIC8qIQotICAgICAgICBAbWV0
aG9kIGhhc0ljb25Gb3JVUkw6Ci0gICAgICAgIEBkaXNjdXNzaW9uIFJldHVybnMgd2hldGhlciBv
ciBub3QgdGhlIGljb24gZGF0YWJhc2UgaGFzIGFuIGljb24gZm9yIHRoaXMgVVJMLgotICAgICAg
ICBAcGFybSB1cmwgVGhlIFVSTCB0byB0ZXN0IGZvci4KLSAgICAqLwotICAgIEhSRVNVTFQgaGFz
SWNvbkZvclVSTChbaW5dIEJTVFIgdXJsLCBbb3V0LCByZXR2YWxdIEJPT0wqIHJlc3VsdCk7Ci19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5p
ZGwgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwKaW5kZXgg
YjhmNDQyMWJlN2YuLjRiZDgzNGY0MGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
SW50ZXJmYWNlcy9XZWJLaXQuaWRsCkBAIC0xMTEsNyArMTExLDYgQEAgaW1wb3J0ICJBY2Nlc3Np
YmxlQXBwbGljYXRpb24uaWRsIjsKICNpbmNsdWRlICJJV2ViSGlzdG9yeUl0ZW0uaWRsIgogI2lu
Y2x1ZGUgIklXZWJIaXN0b3J5SXRlbVByaXZhdGUuaWRsIgogI2luY2x1ZGUgIklXZWJIaXN0b3J5
UHJpdmF0ZS5pZGwiCi0jaW5jbHVkZSAiSVdlYkljb25EYXRhYmFzZS5pZGwiCiAjaW5jbHVkZSAi
SVdlYkluc3BlY3Rvci5pZGwiCiAjaW5jbHVkZSAiSVdlYkluc3BlY3RvclByaXZhdGUuaWRsIgog
I2luY2x1ZGUgIklXZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmlkbCIKQEAgLTE3NiwxMSArMTc1LDYg
QEAgbGlicmFyeSBXZWJLaXQKICAgICAgICAgaW50ZXJmYWNlIElXZWJWaWV3UHJpdmF0ZTI7CiAg
ICAgfQogCi0gICAgW3V1aWQoNjY4MjdlYzEtM2FlZi00MjQxLWJhYzUtZjc3NmI0NGYwMzBmKV0K
LSAgICBjb2NsYXNzIFdlYkljb25EYXRhYmFzZSB7Ci0gICAgICAgIFtkZWZhdWx0XSBpbnRlcmZh
Y2UgSVdlYkljb25EYXRhYmFzZTsKLSAgICB9Ci0KICAgICBbdXVpZChhMDYyZWNjMy1iYjFiLTQ2
OTQtYTU2OS1mNTllMGFkNmJlMGMpXQogICAgIGNvY2xhc3MgV2ViTXV0YWJsZVVSTFJlcXVlc3Qg
ewogICAgICAgICBbZGVmYXVsdF0gaW50ZXJmYWNlIElXZWJNdXRhYmxlVVJMUmVxdWVzdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAppbmRleCBlZGI0
NmIyNjBjNS4uOTEyMGFjYzhlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3RhdGlzdGljcy5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Zv
bnRDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR0NDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9HbHlwaFBhZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VD
YWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNvbnNvbGVDbGllbnQuaD4KQEAgLTE3OSw3
ICsxNzgsNyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjppY29uUGFnZVVSTE1hcHBpbmdD
b3VudChfT3V0XyBVSU5UKiBjb3VudCkKIHsKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOwotICAgICpjb3VudCA9IChVSU5UKSBpY29uRGF0YWJhc2UoKS5wYWdlVVJM
TWFwcGluZ0NvdW50KCk7CisgICAgKmNvdW50ID0gKFVJTlQpMDsKICAgICByZXR1cm4gU19PSzsK
IH0KIApAQCAtMTg3LDcgKzE4Niw3IEBAIEhSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6Omljb25S
ZXRhaW5lZFBhZ2VVUkxDb3VudChfT3V0XyBVSU5UICpjb3VudCkKIHsKICAgICBpZiAoIWNvdW50
KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotICAgICpjb3VudCA9IChVSU5UKSBpY29uRGF0
YWJhc2UoKS5yZXRhaW5lZFBhZ2VVUkxDb3VudCgpOworICAgICpjb3VudCA9IChVSU5UKTA7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTE5NSw3ICsxOTQsNyBAQCBIUkVTVUxUIFdlYkNvcmVT
dGF0aXN0aWNzOjppY29uUmVjb3JkQ291bnQoX091dF8gVUlOVCAqY291bnQpCiB7CiAgICAgaWYg
KCFjb3VudCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAgICAqY291bnQgPSAoVUlOVCkg
aWNvbkRhdGFiYXNlKCkuaWNvblJlY29yZENvdW50KCk7CisgICAgKmNvdW50ID0gKFVJTlQpMDsK
ICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMjAzLDcgKzIwMiw3IEBAIEhSRVNVTFQgV2ViQ29y
ZVN0YXRpc3RpY3M6Omljb25zV2l0aERhdGFDb3VudChfT3V0XyBVSU5UICpjb3VudCkKIHsKICAg
ICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotICAgICpjb3VudCA9IChV
SU5UKSBpY29uRGF0YWJhc2UoKS5pY29uUmVjb3JkQ291bnRXaXRoRGF0YSgpOworICAgICpjb3Vu
dCA9IChVSU5UKTA7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJJY29uRGF0YWJhc2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
ZDg2NTllMmFhOC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
SWNvbkRhdGFiYXNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxNCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA2LTIwMDksIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJXZWJLaXRETEwuaCIKLSNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKLQotI2lu
Y2x1ZGUgIkNPTVByb3BlcnR5QmFnLmgiCi0jaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uQ2VudGVy
LmgiCi0jaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKLSNpbmNsdWRlICJzaGxvYmouaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEluZm8u
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSFduZERDLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9J
Y29uRGF0YWJhc2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVz
aW5nIG5hbWVzcGFjZSBXVEY7Ci0KLS8vIFdlYkljb25EYXRhYmFzZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVdlYklj
b25EYXRhYmFzZSogV2ViSWNvbkRhdGFiYXNlOjptX3NoYXJlZFdlYkljb25EYXRhYmFzZSA9IDA7
Ci0KLVdlYkljb25EYXRhYmFzZTo6V2ViSWNvbkRhdGFiYXNlKCkKLXsKLSAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSWNvbkRhdGFiYXNlIik7Ci19Ci0K
LVdlYkljb25EYXRhYmFzZTo6fldlYkljb25EYXRhYmFzZSgpCi17Ci0gICAgZ0NsYXNzQ291bnQt
LTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkljb25EYXRhYmFzZSIpOwotfQot
Ci12b2lkIFdlYkljb25EYXRhYmFzZTo6aW5pdCgpCi17Ci0gICAgV2ViUHJlZmVyZW5jZXMqIHN0
YW5kYXJkUHJlZnMgPSBXZWJQcmVmZXJlbmNlczo6c2hhcmVkU3RhbmRhcmRQcmVmZXJlbmNlcygp
OwotICAgIEJPT0wgZW5hYmxlZCA9IEZBTFNFOwotICAgIGlmIChGQUlMRUQoc3RhbmRhcmRQcmVm
cy0+aWNvbkRhdGFiYXNlRW5hYmxlZCgmZW5hYmxlZCkpKSB7Ci0gICAgICAgIGVuYWJsZWQgPSBG
QUxTRTsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZ2V0IGljb24gZGF0YWJhc2UgZW5h
YmxlZCBwcmVmZXJlbmNlIik7Ci0gICAgfQotICAgIGljb25EYXRhYmFzZSgpLnNldEVuYWJsZWQo
ISFlbmFibGVkKTsKLSAgICBpZiAoISghIWVuYWJsZWQpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBzdGFydFVwSWNvbkRhdGFiYXNlKCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpzdGFy
dFVwSWNvbkRhdGFiYXNlKCkKLXsKLSAgICBXZWJQcmVmZXJlbmNlcyogc3RhbmRhcmRQcmVmcyA9
IFdlYlByZWZlcmVuY2VzOjpzaGFyZWRTdGFuZGFyZFByZWZlcmVuY2VzKCk7Ci0KLSAgICBpY29u
RGF0YWJhc2UoKS5zZXRDbGllbnQodGhpcyk7Ci0KLSAgICBCU3RyaW5nIHByZWZEYXRhYmFzZVBh
dGg7Ci0gICAgaWYgKEZBSUxFRChzdGFuZGFyZFByZWZzLT5pY29uRGF0YWJhc2VMb2NhdGlvbigm
cHJlZkRhdGFiYXNlUGF0aCkpKQotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBnZXQgaWNv
biBkYXRhYmFzZSBsb2NhdGlvbiBwcmVmZXJlbmNlIik7Ci0KLSAgICBTdHJpbmcgZGF0YWJhc2VQ
YXRoKHByZWZEYXRhYmFzZVBhdGgsIFN5c1N0cmluZ0xlbihwcmVmRGF0YWJhc2VQYXRoKSk7Ci0K
LSAgICBpZiAoZGF0YWJhc2VQYXRoLmlzRW1wdHkoKSkgewotICAgICAgICBkYXRhYmFzZVBhdGgg
PSBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICAgICAgaWYgKGRhdGFi
YXNlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjb25z
dHJ1Y3QgZGVmYXVsdCBpY29uIGRhdGFiYXNlIHBhdGgiKTsKLSAgICB9Ci0KLSAgICBpZiAoIWlj
b25EYXRhYmFzZSgpLm9wZW4oZGF0YWJhc2VQYXRoLCBXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRl
ZmF1bHREYXRhYmFzZUZpbGVuYW1lKCkpKQotICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gb3BlbiBpY29uIGRhdGFiYXNlIHBhdGgiKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6
OnNodXREb3duSWNvbkRhdGFiYXNlKCkKLXsKLX0KLQotV2ViSWNvbkRhdGFiYXNlKiBXZWJJY29u
RGF0YWJhc2U6OmNyZWF0ZUluc3RhbmNlKCkKLXsKLSAgICBXZWJJY29uRGF0YWJhc2UqIGluc3Rh
bmNlID0gbmV3IFdlYkljb25EYXRhYmFzZSgpOwotICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKLSAg
ICByZXR1cm4gaW5zdGFuY2U7Ci19Ci0KLVdlYkljb25EYXRhYmFzZSogV2ViSWNvbkRhdGFiYXNl
OjpzaGFyZWRXZWJJY29uRGF0YWJhc2UoKQotewotICAgIGlmIChtX3NoYXJlZFdlYkljb25EYXRh
YmFzZSkgewotICAgICAgICBtX3NoYXJlZFdlYkljb25EYXRhYmFzZS0+QWRkUmVmKCk7Ci0gICAg
ICAgIHJldHVybiBtX3NoYXJlZFdlYkljb25EYXRhYmFzZTsKLSAgICB9Ci0gICAgbV9zaGFyZWRX
ZWJJY29uRGF0YWJhc2UgPSBjcmVhdGVJbnN0YW5jZSgpOwotICAgIG1fc2hhcmVkV2ViSWNvbkRh
dGFiYXNlLT5pbml0KCk7Ci0gICAgcmV0dXJuIG1fc2hhcmVkV2ViSWNvbkRhdGFiYXNlOwotfQot
Ci0vLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUhSRVNVTFQgV2ViSWNvbkRhdGFiYXNlOjpRdWVy
eUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVj
dCkKLXsKLSAgICBpZiAoIXBwdk9iamVjdCkKLSAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAg
ICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKLSAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lV
bmtub3duKSkKLSAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElXZWJJY29uRGF0YWJh
c2UqPih0aGlzKTsKLSAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVdlYkljb25E
YXRhYmFzZSkpCi0gICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViSWNvbkRhdGFi
YXNlKj4odGhpcyk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gRV9OT0lOVEVSRkFDRTsKLQot
ICAgIEFkZFJlZigpOwotICAgIHJldHVybiBTX09LOwotfQotCi1VTE9ORyBXZWJJY29uRGF0YWJh
c2U6OkFkZFJlZigpCi17Ci0gICAgcmV0dXJuICsrbV9yZWZDb3VudDsKLX0KLQotVUxPTkcgV2Vi
SWNvbkRhdGFiYXNlOjpSZWxlYXNlKCkKLXsKLSAgICBVTE9ORyBuZXdSZWYgPSAtLW1fcmVmQ291
bnQ7Ci0gICAgaWYgKCFuZXdSZWYpCi0gICAgICAgIGRlbGV0ZSh0aGlzKTsKLQotICAgIHJldHVy
biBuZXdSZWY7Ci19Ci0KLS8vIElXZWJJY29uRGF0YWJhc2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSFJFU1VM
VCBXZWJJY29uRGF0YWJhc2U6OnNoYXJlZEljb25EYXRhYmFzZShfQ09NX091dHB0cl9vcHRfIElX
ZWJJY29uRGF0YWJhc2UqKiByZXN1bHQpCi17Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJl
dHVybiBFX1BPSU5URVI7Ci0gICAgKnJlc3VsdCA9IHNoYXJlZFdlYkljb25EYXRhYmFzZSgpOwot
ICAgIHJldHVybiBTX09LOwotfQotCi1IUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6aWNvbkZvclVS
TChfSW5fIEJTVFIgdXJsLCBfSW5fIExQU0laRSBzaXplLCBCT09MIC8qY2FjaGUqLywgX19kZXJl
Zl9vcHRfb3V0IEhCSVRNQVAqIGJpdG1hcCkKLXsKLSAgICBpZiAoIXNpemUgfHwgIWJpdG1hcCkK
LSAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLQotICAgIEludFNpemUgaW50U2l6ZSgqc2l6ZSk7
Ci0KLSAgICBJbWFnZSogaWNvbiA9IG51bGxwdHI7Ci0gICAgaWYgKHVybCkKLSAgICAgICAgaWNv
biA9IGljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoU3RyaW5nKHVybCwg
U3lzU3RyaW5nTGVuKHVybCkpLCBpbnRTaXplKTsKLQotICAgIC8vIE1ha2Ugc3VyZSB3ZSBjaGVj
ayBmb3IgdGhlIGNhc2Ugb2YgYW4gImVtcHR5IGltYWdlIgotICAgIGlmIChpY29uICYmIGljb24t
PndpZHRoKCkpIHsKLSAgICAgICAgKmJpdG1hcCA9IGdldE9yQ3JlYXRlU2hhcmVkQml0bWFwKGlu
dFNpemUpOwotICAgICAgICBpZiAoIWljb24tPmdldEhCSVRNQVBPZlNpemUoKmJpdG1hcCwgJmlu
dFNpemUpKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkcmF3IEltYWdlIHRv
IEhCSVRNQVAiKTsKLSAgICAgICAgICAgICpiaXRtYXAgPSAwOwotICAgICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gU19PSzsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gZGVmYXVsdEljb25XaXRoU2l6ZShzaXplLCBiaXRtYXApOwotfQotCi1IUkVTVUxUIFdl
Ykljb25EYXRhYmFzZTo6ZGVmYXVsdEljb25XaXRoU2l6ZShfSW5fIExQU0laRSBzaXplLCBfX2Rl
cmVmX29wdF9vdXQgSEJJVE1BUCogcmVzdWx0KQotewotICAgIGlmICghc2l6ZSB8fCAhcmVzdWx0
KQotICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotCi0gICAgSW50U2l6ZSBpbnRTaXplKCpzaXpl
KTsKLQotICAgICpyZXN1bHQgPSBnZXRPckNyZWF0ZURlZmF1bHRJY29uQml0bWFwKGludFNpemUp
OwotICAgIHJldHVybiBTX09LOwotfQotCi1IUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6cmV0YWlu
SWNvbkZvclVSTChfSW5fIEJTVFIgdXJsKQotewotICAgIGljb25EYXRhYmFzZSgpLnJldGFpbklj
b25Gb3JQYWdlVVJMKFN0cmluZyh1cmwsIFN5c1N0cmluZ0xlbih1cmwpKSk7Ci0gICAgcmV0dXJu
IFNfT0s7Ci19Ci0KLUhSRVNVTFQgV2ViSWNvbkRhdGFiYXNlOjpyZWxlYXNlSWNvbkZvclVSTChf
SW5fIEJTVFIgdXJsKQotewotICAgIGljb25EYXRhYmFzZSgpLnJlbGVhc2VJY29uRm9yUGFnZVVS
TChTdHJpbmcodXJsLCBTeXNTdHJpbmdMZW4odXJsKSkpOwotICAgIHJldHVybiBTX09LOwotfQot
Ci1IUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6cmVtb3ZlQWxsSWNvbnMoKQotewotICAgIGljb25E
YXRhYmFzZSgpLnJlbW92ZUFsbEljb25zKCk7Ci0gICAgcmV0dXJuIFNfT0s7Ci19Ci0KLUhSRVNV
TFQgV2ViSWNvbkRhdGFiYXNlOjpkZWxheURhdGFiYXNlQ2xlYW51cCgpCi17Ci0gICAgSWNvbkRh
dGFiYXNlOjpkZWxheURhdGFiYXNlQ2xlYW51cCgpOwotICAgIHJldHVybiBTX09LOwotfQotCi1I
UkVTVUxUIFdlYkljb25EYXRhYmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFudXAoKQotewotICAgIElj
b25EYXRhYmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFudXAoKTsKLSAgICByZXR1cm4gU19PSzsKLX0K
LQotSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6Omljb25VUkxGb3JVUkwoX0luXyBCU1RSIHVybCwg
X19kZXJlZl9vcHRfb3V0IEJTVFIqIGljb25VUkwpCi17Ci0gICAgaWYgKCF1cmwgfHwgIWljb25V
UkwpCi0gICAgICAgIHJldHVybiBFX1BPSU5URVI7Ci0gICAgQlN0cmluZyBpY29uVVJMQlNUUihp
Y29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKFN0cmluZyh1cmwsIFN5
c1N0cmluZ0xlbih1cmwpKSkpOwotICAgICppY29uVVJMID0gaWNvblVSTEJTVFIucmVsZWFzZSgp
OwotICAgIHJldHVybiBTX09LOwotfQotCi1IUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6aXNFbmFi
bGVkKF9PdXRfIEJPT0wqIHJlc3VsdCkKLXsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKLSAgICAqcmVzdWx0ID0gaWNvbkRhdGFiYXNlKCkuaXNFbmFibGVkKCk7
Ci0gICAgcmV0dXJuIFNfT0s7Ci19Ci0KLUhSRVNVTFQgV2ViSWNvbkRhdGFiYXNlOjpzZXRFbmFi
bGVkKEJPT0wgZmxhZykKLXsKLSAgICBCT09MIGN1cnJlbnRseUVuYWJsZWQ7Ci0gICAgaXNFbmFi
bGVkKCZjdXJyZW50bHlFbmFibGVkKTsKLSAgICBpZiAoY3VycmVudGx5RW5hYmxlZCAmJiAhZmxh
ZykgewotICAgICAgICBpY29uRGF0YWJhc2UoKS5zZXRFbmFibGVkKGZhbHNlKTsKLSAgICAgICAg
c2h1dERvd25JY29uRGF0YWJhc2UoKTsKLSAgICB9IGVsc2UgaWYgKCFjdXJyZW50bHlFbmFibGVk
ICYmIGZsYWcpIHsKLSAgICAgICAgaWNvbkRhdGFiYXNlKCkuc2V0RW5hYmxlZCh0cnVlKTsKLSAg
ICAgICAgc3RhcnRVcEljb25EYXRhYmFzZSgpOwotICAgIH0KLSAgICByZXR1cm4gU19PSzsKLX0K
LQotSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6Omhhc0ljb25Gb3JVUkwoX0luXyBCU1RSIHVybCwg
X091dF8gQk9PTCogcmVzdWx0KQotewotICAgIGlmICghdXJsIHx8ICFyZXN1bHQpCi0gICAgICAg
IHJldHVybiBFX1BPSU5URVI7Ci0KLSAgICBTdHJpbmcgdXJsU3RyaW5nKHVybCwgU3lzU3RyaW5n
TGVuKHVybCkpOwotCi0gICAgLy8gUGFzc2luZyBhIHNpemUgcGFyYW1ldGVyIG9mIDAsIDAgbWVh
bnMgd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgcmVzdWx0IG9mIHRoZSBpbWFnZSwgd2UganVzdAot
ICAgIC8vIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSByZWFkIGZyb20gZGlzayB0byBsb2FkIHRoZSBp
Y29uIGlzIGtpY2tlZCBvZmYuCi0gICAgaWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uRm9y
UGFnZVVSTCh1cmxTdHJpbmcsIEludFNpemUoMCwgMCkpOwotCi0gICAgLy8gQ2hlY2sgdG8gc2Vl
IGlmIHdlIGhhdmUgYSBub24tZW1wdHkgaWNvbiBVUkwgZm9yIHRoZSBwYWdlLCBhbmQgaWYgd2Ug
ZG8sIHdlIGhhdmUgYW4gaWNvbiBmb3IKLSAgICAvLyB0aGUgcGFnZS4KLSAgICAqcmVzdWx0ID0g
IShpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKHVybFN0cmluZyku
aXNFbXB0eSgpKTsKLQotICAgIHJldHVybiBTX09LOwotfQotCi1zdGF0aWMgSEJJVE1BUCBjcmVh
dGVESUIoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBCaXRtYXBJbmZvIGJtSW5mbyA9IEJp
dG1hcEluZm86OmNyZWF0ZShzaXplKTsKLQotICAgIEhXbmREQyBkYygwKTsKLSAgICByZXR1cm4g
Q3JlYXRlRElCU2VjdGlvbihkYywgJmJtSW5mbywgRElCX1JHQl9DT0xPUlMsIDAsIDAsIDApOwot
fQotCi1IQklUTUFQIFdlYkljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVTaGFyZWRCaXRtYXAoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBIQklUTUFQIHJlc3VsdCA9IG1fc2hhcmVkSWNvbk1h
cC5nZXQoc2l6ZSk7Ci0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICByZXN1bHQgPSBjcmVhdGVESUIoc2l6ZSk7Ci0gICAgbV9zaGFyZWRJY29uTWFwLnNldChzaXpl
LCByZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUhCSVRNQVAgV2ViSWNvbkRhdGFi
YXNlOjpnZXRPckNyZWF0ZURlZmF1bHRJY29uQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUpCi17
Ci0gICAgSEJJVE1BUCByZXN1bHQgPSBtX2RlZmF1bHRJY29uTWFwLmdldChzaXplKTsKLSAgICBp
ZiAocmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgcmVzdWx0ID0gY3JlYXRl
RElCKHNpemUpOwotCi0gICAgbV9kZWZhdWx0SWNvbk1hcC5zZXQoc2l6ZSwgcmVzdWx0KTsKLSAg
ICBpZiAoIWljb25EYXRhYmFzZSgpLmRlZmF1bHRJY29uKHNpemUpIHx8ICFpY29uRGF0YWJhc2Uo
KS5kZWZhdWx0SWNvbihzaXplKS0+Z2V0SEJJVE1BUE9mU2l6ZShyZXN1bHQsICZzaXplKSkgewot
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkcmF3IEltYWdlIHRvIEhCSVRNQVAiKTsKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vIEljb25E
YXRhYmFzZUNsaWVudAotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6ZGlkUmVtb3ZlQWxsSWNvbnMo
KQotewotICAgIC8vIFF1ZXVlaW5nIHRoZSBlbXB0eSBzdHJpbmcgaXMgYSBzcGVjaWFsIHdheSBv
ZiBzYXlpbmcgInRoaXMgcXVldWVkIG5vdGlmaWNhdGlvbiBpcyB0aGUgZGlkUmVtb3ZlQWxsSWNv
bnMgbm90aWZpY2F0aW9uIgotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbm90aWZpY2F0aW9uTXV0
ZXgpOwotICAgIG1fbm90aWZpY2F0aW9uUXVldWUuYXBwZW5kKFN0cmluZygpKTsKLSAgICBzY2hl
ZHVsZU5vdGlmaWNhdGlvbkRlbGl2ZXJ5KCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpk
aWRJbXBvcnRJY29uVVJMRm9yUGFnZVVSTChjb25zdCBXVEY6OlN0cmluZyYgcGFnZVVSTCkKLXsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX25vdGlmaWNhdGlvbk11dGV4KTsKLSAgICBtX25vdGlm
aWNhdGlvblF1ZXVlLmFwcGVuZChwYWdlVVJMLmlzb2xhdGVkQ29weSgpKTsKLSAgICBzY2hlZHVs
ZU5vdGlmaWNhdGlvbkRlbGl2ZXJ5KCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRJ
bXBvcnRJY29uRGF0YUZvclBhZ2VVUkwoY29uc3QgV1RGOjpTdHJpbmcmIHBhZ2VVUkwpCi17Ci0g
ICAgLy8gV2ViS2l0MSBvbmx5IGhhcyBhIHNpbmdsZSAiaWNvbiBkaWQgY2hhbmdlIiBub3RpZmlj
YXRpb24uCi0gICAgZGlkSW1wb3J0SWNvblVSTEZvclBhZ2VVUkwocGFnZVVSTCk7Ci19Ci0KLXZv
aWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRDaGFuZ2VJY29uRm9yUGFnZVVSTChjb25zdCBXVEY6OlN0
cmluZyYgcGFnZVVSTCkKLXsKLSAgICAvLyBXZWJLaXQxIG9ubHkgaGFzIGEgc2luZ2xlICJpY29u
IGRpZCBjaGFuZ2UiIG5vdGlmaWNhdGlvbi4KLSAgICBkaWRJbXBvcnRJY29uVVJMRm9yUGFnZVVS
TChwYWdlVVJMKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OmRpZEZpbmlzaFVSTEltcG9y
dCgpCi17Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpzY2hlZHVsZU5vdGlmaWNhdGlvbkRl
bGl2ZXJ5KCkKLXsKLSAgICAvLyBDYWxsZXIgb2YgdGhpcyBtZXRob2QgbXVzdCBob2xkIHRoZSBt
X25vdGlmaWNhdGlvblF1ZXVlIGxvY2sKLSAgICBBU1NFUlQoIW1fbm90aWZpY2F0aW9uTXV0ZXgu
dHJ5TG9jaygpKTsKLQotICAgIGlmICghbV9kZWxpdmVyeVJlcXVlc3RlZCkgewotICAgICAgICBt
X2RlbGl2ZXJ5UmVxdWVzdGVkID0gdHJ1ZTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbXSB7
Ci0gICAgICAgICAgICBkZWxpdmVyTm90aWZpY2F0aW9ucygwKTsKLSAgICAgICAgfSk7Ci0gICAg
fQotfQotCi1CU1RSIFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlRGlkQWRkSWNvbk5vdGlm
aWNhdGlvbigpCi17Ci0gICAgc3RhdGljIEJTVFIgZGlkQWRkSWNvbk5hbWUgPSBTeXNBbGxvY1N0
cmluZyhXZWJJY29uRGF0YWJhc2VEaWRBZGRJY29uTm90aWZpY2F0aW9uKTsKLSAgICByZXR1cm4g
ZGlkQWRkSWNvbk5hbWU7Ci19Ci0KLUJTVFIgV2ViSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VO
b3RpZmljYXRpb25Vc2VySW5mb1VSTEtleSgpCi17Ci0gICAgc3RhdGljIEJTVFIgaWNvblVzZXJJ
bmZvVVJMS2V5ID0gU3lzQWxsb2NTdHJpbmcoV2ViSWNvbk5vdGlmaWNhdGlvblVzZXJJbmZvVVJM
S2V5KTsKLSAgICByZXR1cm4gaWNvblVzZXJJbmZvVVJMS2V5OwotfQotCi1CU1RSIFdlYkljb25E
YXRhYmFzZTo6aWNvbkRhdGFiYXNlRGlkUmVtb3ZlQWxsSWNvbnNOb3RpZmljYXRpb24oKQotewot
ICAgIHN0YXRpYyBCU1RSIGRpZFJlbW92ZUFsbEljb25zTmFtZSA9IFN5c0FsbG9jU3RyaW5nKFdl
Ykljb25EYXRhYmFzZURpZFJlbW92ZUFsbEljb25zTm90aWZpY2F0aW9uKTsKLSAgICByZXR1cm4g
ZGlkUmVtb3ZlQWxsSWNvbnNOYW1lOwotfQotCi1zdGF0aWMgdm9pZCBwb3N0RGlkUmVtb3ZlQWxs
SWNvbnNOb3RpZmljYXRpb24oV2ViSWNvbkRhdGFiYXNlKiBpY29uREIpCi17Ci0gICAgSVdlYk5v
dGlmaWNhdGlvbkNlbnRlciogbm90aWZ5Q2VudGVyID0gV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpk
ZWZhdWx0Q2VudGVySW50ZXJuYWwoKTsKLSAgICBub3RpZnlDZW50ZXItPnBvc3ROb3RpZmljYXRp
b25OYW1lKFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlRGlkUmVtb3ZlQWxsSWNvbnNOb3Rp
ZmljYXRpb24oKSwgc3RhdGljX2Nhc3Q8SVdlYkljb25EYXRhYmFzZSo+KGljb25EQiksIDApOwot
fQotCi1zdGF0aWMgdm9pZCBwb3N0RGlkQWRkSWNvbk5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcm
IHBhZ2VVUkwsIFdlYkljb25EYXRhYmFzZSogaWNvbkRCKQotewotICAgIEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+IGRpY3Rpb25hcnk7Ci0gICAgZGljdGlvbmFyeS5zZXQoV2ViSWNvbkRhdGFiYXNl
OjppY29uRGF0YWJhc2VOb3RpZmljYXRpb25Vc2VySW5mb1VSTEtleSgpLCBwYWdlVVJMKTsKLSAg
ICBDT01QdHI8SVByb3BlcnR5QmFnPiB1c2VySW5mbyhBZG9wdENPTSwgQ09NUHJvcGVydHlCYWc8
U3RyaW5nPjo6YWRvcHQoZGljdGlvbmFyeSkpOwotCi0gICAgSVdlYk5vdGlmaWNhdGlvbkNlbnRl
ciogbm90aWZ5Q2VudGVyID0gV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpkZWZhdWx0Q2VudGVySW50
ZXJuYWwoKTsKLSAgICBub3RpZnlDZW50ZXItPnBvc3ROb3RpZmljYXRpb25OYW1lKFdlYkljb25E
YXRhYmFzZTo6aWNvbkRhdGFiYXNlRGlkQWRkSWNvbk5vdGlmaWNhdGlvbigpLCBzdGF0aWNfY2Fz
dDxJV2ViSWNvbkRhdGFiYXNlKj4oaWNvbkRCKSwgdXNlckluZm8uZ2V0KCkpOwotfQotCi12b2lk
IFdlYkljb25EYXRhYmFzZTo6ZGVsaXZlck5vdGlmaWNhdGlvbnModm9pZCopCi17Ci0gICAgQVNT
RVJUKG1fc2hhcmVkV2ViSWNvbkRhdGFiYXNlKTsKLSAgICBpZiAoIW1fc2hhcmVkV2ViSWNvbkRh
dGFiYXNlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQobV9zaGFyZWRXZWJJY29uRGF0
YWJhc2UtPm1fZGVsaXZlcnlSZXF1ZXN0ZWQpOwotCi0gICAgVmVjdG9yPFN0cmluZz4gcXVldWU7
Ci0gICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NoYXJlZFdlYkljb25EYXRhYmFz
ZS0+bV9ub3RpZmljYXRpb25NdXRleCk7Ci0gICAgICAgIHF1ZXVlLnN3YXAobV9zaGFyZWRXZWJJ
Y29uRGF0YWJhc2UtPm1fbm90aWZpY2F0aW9uUXVldWUpOwotICAgICAgICBtX3NoYXJlZFdlYklj
b25EYXRhYmFzZS0+bV9kZWxpdmVyeVJlcXVlc3RlZCA9IGZhbHNlOwotICAgIH0KLQotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBxdWV1ZS5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAo
cXVldWVbaV0uaXNOdWxsKCkpCi0gICAgICAgICAgICBwb3N0RGlkUmVtb3ZlQWxsSWNvbnNOb3Rp
ZmljYXRpb24obV9zaGFyZWRXZWJJY29uRGF0YWJhc2UpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBwb3N0RGlkQWRkSWNvbk5vdGlmaWNhdGlvbihxdWV1ZVtpXSwgbV9zaGFyZWRXZWJJY29u
RGF0YWJhc2UpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSWNvbkRhdGFi
YXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlZmRiMmU0ZmMzLi4wMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJY29uRGF0YWJhc2UuaAorKysg
L2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIw
MDksIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFdlYkljb25EYXRhYmFz
ZV9ICi0jZGVmaW5lIFdlYkljb25EYXRhYmFzZV9ICi0KLSNpbmNsdWRlICJXZWJLaXQuaCIKLQot
I2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9JbnRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplSGFzaC5oPgotI2luY2x1ZGUg
PHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUKLXsK
LSAgICBjbGFzcyBJY29uRGF0YWJhc2U7Ci19OyAvL25hbWVzcGFjZSBXZWJDb3JlCi11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KLWNsYXNzIFdlYkljb25E
YXRhYmFzZSA6IHB1YmxpYyBJV2ViSWNvbkRhdGFiYXNlLCBwdWJsaWMgV2ViQ29yZTo6SWNvbkRh
dGFiYXNlQ2xpZW50Ci17Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFdlYkljb25EYXRhYmFzZSogY3Jl
YXRlSW5zdGFuY2UoKTsKLSAgICBzdGF0aWMgV2ViSWNvbkRhdGFiYXNlKiBzaGFyZWRXZWJJY29u
RGF0YWJhc2UoKTsKLXByaXZhdGU6Ci0gICAgV2ViSWNvbkRhdGFiYXNlKCk7Ci0gICAgfldlYklj
b25EYXRhYmFzZSgpOwotICAgIHZvaWQgaW5pdCgpOwotICAgIHZvaWQgc3RhcnRVcEljb25EYXRh
YmFzZSgpOwotICAgIHZvaWQgc2h1dERvd25JY29uRGF0YWJhc2UoKTsKLXB1YmxpYzoKLQotICAg
IC8vIElVbmtub3duCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5
SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0
KTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpOwotICAgIHZp
cnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSgpOwotCi0gICAgLy8gSVdlYklj
b25EYXRhYmFzZQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzaGFyZWRJ
Y29uRGF0YWJhc2UoX0NPTV9PdXRwdHJfb3B0XyBJV2ViSWNvbkRhdGFiYXNlKiopOwotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpY29uRm9yVVJMKF9Jbl8gQlNUUiB1cmws
IF9Jbl8gTFBTSVpFLCBCT09MIGNhY2hlLCBfX2RlcmVmX29wdF9vdXQgSEJJVE1BUCogaW1hZ2Up
OwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWZhdWx0SWNvbldpdGhT
aXplKF9Jbl8gTFBTSVpFLCBfX2RlcmVmX29wdF9vdXQgSEJJVE1BUCogcmVzdWx0KTsKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmV0YWluSWNvbkZvclVSTChfSW5fIEJT
VFIpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWxlYXNlSWNvbkZv
clVSTChfSW5fIEJTVFIpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBy
ZW1vdmVBbGxJY29ucygpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBk
ZWxheURhdGFiYXNlQ2xlYW51cCgpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBhbGxvd0RhdGFiYXNlQ2xlYW51cCgpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBpY29uVVJMRm9yVVJMKF9Jbl8gQlNUUiB1cmwsIF9fZGVyZWZfb3B0X291dCBC
U1RSKiBpY29uVVJMKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNF
bmFibGVkKF9PdXRfIEJPT0wqKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0RW5hYmxlZChCT09MKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaGFzSWNvbkZvclVSTChfSW5fIEJTVFIgdXJsLCBfT3V0XyBCT09MKiByZXN1bHQpOwotCi0g
ICAgLy8gSWNvbkRhdGFiYXNlQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZUFsbElj
b25zKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEltcG9ydEljb25VUkxGb3JQYWdlVVJMKGNvbnN0
IFdURjo6U3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEltcG9ydEljb25EYXRhRm9yUGFn
ZVVSTChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29u
Rm9yUGFnZVVSTChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hVUkxJbXBvcnQoKTsKLQotICAgIHN0YXRpYyBCU1RSIGljb25EYXRhYmFzZURpZEFkZEljb25O
b3RpZmljYXRpb24oKTsKLSAgICBzdGF0aWMgQlNUUiBpY29uRGF0YWJhc2VEaWRSZW1vdmVBbGxJ
Y29uc05vdGlmaWNhdGlvbigpOwotICAgIHN0YXRpYyBCU1RSIGljb25EYXRhYmFzZU5vdGlmaWNh
dGlvblVzZXJJbmZvVVJMS2V5KCk7Ci1wcm90ZWN0ZWQ6Ci0gICAgVUxPTkcgbV9yZWZDb3VudCB7
IDAgfTsKLSAgICBzdGF0aWMgV2ViSWNvbkRhdGFiYXNlKiBtX3NoYXJlZFdlYkljb25EYXRhYmFz
ZTsKLQotICAgIC8vIEtlZXAgYSBzZXQgb2YgSEJJVE1BUHMgYXJvdW5kIGZvciB0aGUgZGVmYXVs
dCBpY29uLCBhbmQgYW5vdGhlcgotICAgIC8vIHRvIHNoYXJlIGFtb25nc3QgcHJlc2VudCBzaXRl
IGljb25zCi0gICAgSEJJVE1BUCBnZXRPckNyZWF0ZVNoYXJlZEJpdG1hcChjb25zdCBJbnRTaXpl
Jik7Ci0gICAgSEJJVE1BUCBnZXRPckNyZWF0ZURlZmF1bHRJY29uQml0bWFwKGNvbnN0IEludFNp
emUmKTsKLSAgICBIYXNoTWFwPEludFNpemUsIEhCSVRNQVA+IG1fZGVmYXVsdEljb25NYXA7Ci0g
ICAgSGFzaE1hcDxJbnRTaXplLCBIQklUTUFQPiBtX3NoYXJlZEljb25NYXA7Ci0KLSAgICBMb2Nr
IG1fbm90aWZpY2F0aW9uTXV0ZXg7Ci0gICAgVmVjdG9yPFN0cmluZz4gbV9ub3RpZmljYXRpb25R
dWV1ZTsKLSAgICB2b2lkIHNjaGVkdWxlTm90aWZpY2F0aW9uRGVsaXZlcnkoKTsKLSAgICBib29s
IG1fZGVsaXZlcnlSZXF1ZXN0ZWQgeyBmYWxzZSB9OwotCi0gICAgc3RhdGljIHZvaWQgZGVsaXZl
ck5vdGlmaWNhdGlvbnModm9pZCopOwotfTsKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAppbmRleCBkODcwOGE1NDZlNS4uYTYxZWRl
N2VhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFj
dG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5
LmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24u
aCIKICNpbmNsdWRlICJXZWJIaXN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIK
LSNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJXZWJKYXZhU2NyaXB0Q29s
bGVjdG9yLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViS2l0TWVzc2FnZUxv
b3AuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCmluZGV4IDdjM2ZiYjI3M2Y2
Li41ZGMyYzEyYmQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
RExMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCkBAIC0z
Niw3ICszNiw2IEBACiAjaW5jbHVkZSAiV2ViS2l0Q2xhc3NGYWN0b3J5LmgiCiAjaW5jbHVkZSAi
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QbGF0Zm9ybURpc3BsYXkuaD4KQEAgLTE2Myw3ICsxNjIsNiBAQCBTVERBUEkgTG9jYWxTZXJ2
ZXJEaWREaWUoKQogCiB2b2lkIHNodXREb3duV2ViS2l0KCkKIHsKLSAgICBXZWJDb3JlOjppY29u
RGF0YWJhc2UoKS5jbG9zZSgpOwogICAgIFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyOjpjbG9zZUxvY2FsU3RvcmFnZSgpOwogI2lmIFVTRShFR0wpCiAgICAgUGxhdGZvcm1EaXNw
bGF5OjpzaHV0RG93bkVnbERpc3BsYXlzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRMb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRM
b2dnaW5nLmgKaW5kZXggNTg5ZWViOTk4NzQuLmY2MmUwODg5YmUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRMb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViS2l0TG9nZ2luZy5oCkBAIC01MCw3ICs1MCw2IEBACiAgICAgTShGb250U3Vi
c3RpdHV0aW9uKSBcCiAgICAgTShGb3JtRGVsZWdhdGUpIFwKICAgICBNKEhpc3RvcnkpIFwKLSAg
ICBNKEljb25EYXRhYmFzZSkgXAogICAgIE0oTGl2ZUNvbm5lY3QpIFwKICAgICBNKExvYWRpbmcp
IFwKICAgICBNKFBhZ2VDYWNoZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRl
eCA0NDYzOThiNTlhNS4uZDA2NmQzYWExMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
Y3BwCkBAIC01NCw3ICs1NCw2IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5oIgotI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZS5oIgogI2luY2x1
ZGUgIldlYkluc3BlY3Rvci5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvckNsaWVudC5oIgogI2lu
Y2x1ZGUgIldlYktpdC5oIgpAQCAtNzc5LDcgKzc3OCw2IEBAIEhSRVNVTFQgV2ViVmlldzo6Y2xv
c2UoKQogCiAgICAgbV9tYWluRnJhbWUgPSBudWxscHRyOwogCi0gICAgcmVnaXN0ZXJGb3JJY29u
Tm90aWZpY2F0aW9uKGZhbHNlKTsKICAgICBJV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBub3RpZnlD
ZW50ZXIgPSBXZWJOb3RpZmljYXRpb25DZW50ZXI6OmRlZmF1bHRDZW50ZXJJbnRlcm5hbCgpOwog
ICAgIG5vdGlmeUNlbnRlci0+cmVtb3ZlT2JzZXJ2ZXIodGhpcywgV2ViUHJlZmVyZW5jZXM6Ondl
YlByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbigpLCBzdGF0aWNfY2FzdDxJV2ViUHJlZmVy
ZW5jZXMqPihtX3ByZWZlcmVuY2VzLmdldCgpKSk7CiAKQEAgLTMyMjMsNjcgKzMyMjEsMTcgQEAg
dm9pZCBXZWJWaWV3OjpzZXRUb29sVGlwKGNvbnN0IFN0cmluZyYgdG9vbFRpcCkKICAgICA6OlNl
bmRNZXNzYWdlKG1fdG9vbFRpcEh3bmQsIFRUTV9BQ1RJVkFURSwgIW1fdG9vbFRpcC5pc0VtcHR5
KCksIDApOwogfQogCi1IUkVTVUxUIFdlYlZpZXc6Om5vdGlmeURpZEFkZEljb24oSVdlYk5vdGlm
aWNhdGlvbiogbm90aWZpY2F0aW9uKQorSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlEaWRBZGRJY29u
KElXZWJOb3RpZmljYXRpb24qKQogewotICAgIENPTVB0cjxJUHJvcGVydHlCYWc+IHByb3BlcnR5
QmFnOwotICAgIEhSRVNVTFQgaHIgPSBub3RpZmljYXRpb24tPnVzZXJJbmZvKCZwcm9wZXJ0eUJh
Zyk7Ci0gICAgaWYgKEZBSUxFRChocikpCi0gICAgICAgIHJldHVybiBocjsKLSAgICBpZiAoIXBy
b3BlcnR5QmFnKQotICAgICAgICByZXR1cm4gRV9GQUlMOwotCi0gICAgQ09NVmFyaWFudCBpY29u
VXNlckluZm9VUkw7Ci0gICAgaHIgPSBwcm9wZXJ0eUJhZy0+UmVhZChXZWJJY29uRGF0YWJhc2U6
Omljb25EYXRhYmFzZU5vdGlmaWNhdGlvblVzZXJJbmZvVVJMS2V5KCksICZpY29uVXNlckluZm9V
UkwsIG51bGxwdHIpOwotICAgIGlmIChGQUlMRUQoaHIpKQotICAgICAgICByZXR1cm4gaHI7Ci0K
LSAgICBpZiAoaWNvblVzZXJJbmZvVVJMLnZhcmlhbnRUeXBlKCkgIT0gVlRfQlNUUikKLSAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKLQotICAgIFN0cmluZyBtYWluRnJhbWVVUkw7Ci0gICAgaWYgKG1f
bWFpbkZyYW1lKQotICAgICAgICBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFtZS0+dXJsKCkuc3Ry
aW5nKCk7Ci0KLSAgICBpZiAoIW1haW5GcmFtZVVSTC5pc0VtcHR5KCkgJiYgbWFpbkZyYW1lVVJM
ID09IHRvU3RyaW5nKFZfQlNUUigmaWNvblVzZXJJbmZvVVJMKSkpCi0gICAgICAgIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb25Gcm9tV2ViRnJhbWUobV9tYWluRnJhbWUpOwotCi0gICAgcmV0dXJuIGhy
OworICAgIHJldHVybiBFX0ZBSUw7CiB9CiAKLXZvaWQgV2ViVmlldzo6cmVnaXN0ZXJGb3JJY29u
Tm90aWZpY2F0aW9uKGJvb2wgbGlzdGVuKQordm9pZCBXZWJWaWV3OjpyZWdpc3RlckZvckljb25O
b3RpZmljYXRpb24oYm9vbCkKIHsKLSAgICBJV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBuYyA9IFdl
Yk5vdGlmaWNhdGlvbkNlbnRlcjo6ZGVmYXVsdENlbnRlckludGVybmFsKCk7Ci0gICAgaWYgKGxp
c3RlbikKLSAgICAgICAgbmMtPmFkZE9ic2VydmVyKHRoaXMsIFdlYkljb25EYXRhYmFzZTo6aWNv
bkRhdGFiYXNlRGlkQWRkSWNvbk5vdGlmaWNhdGlvbigpLCAwKTsKLSAgICBlbHNlCi0gICAgICAg
IG5jLT5yZW1vdmVPYnNlcnZlcih0aGlzLCBXZWJJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZURp
ZEFkZEljb25Ob3RpZmljYXRpb24oKSwgMCk7CiB9CiAKLXZvaWQgV2ViVmlldzo6ZGlzcGF0Y2hE
aWRSZWNlaXZlSWNvbkZyb21XZWJGcmFtZShXZWJGcmFtZSogZnJhbWUpCit2b2lkIFdlYlZpZXc6
OmRpc3BhdGNoRGlkUmVjZWl2ZUljb25Gcm9tV2ViRnJhbWUoV2ViRnJhbWUqKQogewotICAgIHJl
Z2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbihmYWxzZSk7Ci0KLSAgICBpZiAobV9mcmFtZUxvYWRE
ZWxlZ2F0ZSkgewotICAgICAgICBTdHJpbmcgc3RyID0gZnJhbWUtPnVybCgpLnN0cmluZygpOwot
Ci0gICAgICAgIEludFNpemUgc3ooMTYsIDE2KTsKLQotICAgICAgICBCaXRtYXBJbmZvIGJtSW5m
byA9IEJpdG1hcEluZm86OmNyZWF0ZShzeik7Ci0KLSAgICAgICAgSEJJVE1BUCBoQml0bWFwID0g
bnVsbHB0cjsKLQotICAgICAgICBJbWFnZSogaWNvbiA9IGljb25EYXRhYmFzZSgpLnN5bmNocm9u
b3VzSWNvbkZvclBhZ2VVUkwoc3RyLCBzeik7Ci0KLSAgICAgICAgaWYgKGljb24gJiYgaWNvbi0+
d2lkdGgoKSkgewotICAgICAgICAgICAgSFduZERDIGRjKDApOwotICAgICAgICAgICAgaEJpdG1h
cCA9IENyZWF0ZURJQlNlY3Rpb24oZGMsICZibUluZm8sIERJQl9SR0JfQ09MT1JTLCAwLCAwLCAw
KTsKLSAgICAgICAgICAgIGljb24tPmdldEhCSVRNQVBPZlNpemUoaEJpdG1hcCwgJnN6KTsKLSAg
ICAgICAgfQotCi0gICAgICAgIEhSRVNVTFQgaHIgPSBtX2ZyYW1lTG9hZERlbGVnYXRlLT5kaWRS
ZWNlaXZlSWNvbih0aGlzLCBoQml0bWFwLCBmcmFtZSk7Ci0gICAgICAgIGlmICgoaHIgPT0gRV9O
T1RJTVBMKSAmJiBoQml0bWFwKQotICAgICAgICAgICAgRGVsZXRlT2JqZWN0KGhCaXRtYXApOwot
ICAgIH0KIH0KIAogSFJFU1VMVCBXZWJWaWV3OjpzZXRBY2Nlc3NpYmlsaXR5RGVsZWdhdGUoX0lu
X29wdF8gSUFjY2Vzc2liaWxpdHlEZWxlZ2F0ZSogZCkKQEAgLTUxMDUsOSArNTA1Myw2IEBAIEhS
RVNVTFQgV2ViVmlldzo6b25Ob3RpZnkoX0luX29wdF8gSVdlYk5vdGlmaWNhdGlvbiogbm90aWZp
Y2F0aW9uKQogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7CiAKLSAgICBp
ZiAoIXdjc2NtcChuYW1lLCBXZWJJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZURpZEFkZEljb25O
b3RpZmljYXRpb24oKSkpCi0gICAgICAgIHJldHVybiBub3RpZnlEaWRBZGRJY29uKG5vdGlmaWNh
dGlvbik7Ci0KICAgICBpZiAoIXdjc2NtcChuYW1lLCBXZWJQcmVmZXJlbmNlczo6d2ViUHJlZmVy
ZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uKCkpKQogICAgICAgICByZXR1cm4gbm90aWZ5UHJlZmVy
ZW5jZXNDaGFuZ2VkKG5vdGlmaWNhdGlvbik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315898</attachid>
            <date>2017-07-18 22:49:50 -0700</date>
            <delta_ts>2017-07-19 20:07:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>winpatch</filename>
            <type>text/plain</type>
            <size>35736</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDgzMzZlMzg2NDlkLi42OTNm
YjgyMjQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9QbGF0Zm9ybVdpbi5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xMDEsNyAr
MTAxLDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X0lOQ0xVREVTCiAgICAgd2luL1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5oCiAgICAgd2luL1dlYkhpc3RvcnkuaAogICAgIHdpbi9XZWJIaXN0b3J5SXRl
bS5oCi0gICAgd2luL1dlYkljb25EYXRhYmFzZS5oCiAgICAgd2luL1dlYkphdmFTY3JpcHRDb2xs
ZWN0b3IuaAogICAgIHdpbi9XZWJLaXRDT01BUEkuaAogICAgIHdpbi9XZWJLaXRDbGFzc0ZhY3Rv
cnkuaApAQCAtMTczLDcgKzE3Miw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTX0NsYXNz
ZXMKICAgICB3aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcAogICAgIHdpbi9XZWJIaXN0b3J5
LmNwcAogICAgIHdpbi9XZWJIaXN0b3J5SXRlbS5jcHAKLSAgICB3aW4vV2ViSWNvbkRhdGFiYXNl
LmNwcAogICAgIHdpbi9XZWJJbnNwZWN0b3IuY3BwCiAgICAgd2luL1dlYkphdmFTY3JpcHRDb2xs
ZWN0b3IuY3BwCiAgICAgd2luL1dlYktpdENPTUFQSS5jcHAKQEAgLTMzNyw3ICszMzUsNiBAQCBz
ZXQoV0VCS0lUX0lETF9ERVBFTkRFTkNJRVMKICAgICB3aW4vSW50ZXJmYWNlcy9JV2ViSGlzdG9y
eUl0ZW0uaWRsCiAgICAgd2luL0ludGVyZmFjZXMvSVdlYkhpc3RvcnlJdGVtUHJpdmF0ZS5pZGwK
ICAgICB3aW4vSW50ZXJmYWNlcy9JV2ViSGlzdG9yeVByaXZhdGUuaWRsCi0gICAgd2luL0ludGVy
ZmFjZXMvSVdlYkljb25EYXRhYmFzZS5pZGwKICAgICB3aW4vSW50ZXJmYWNlcy9JV2ViSW5zcGVj
dG9yLmlkbAogICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJJbnNwZWN0b3JQcml2YXRlLmlkbAogICAg
IHdpbi9JbnRlcmZhY2VzL0lXZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmlkbApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IGNlMjkzMDMwZWY2Li45MzZmYzczMTYzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE3LTA3LTE3ICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgV2ViSWNvbkRhdGFiYXNl
IGZyb20gV2ViS2l0TGVnYWN5L3dpbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NDYwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEl0IGlzIHVudXNlZC4KKyAgICAgICAgCisgICAgICAgICogRm9yRWFj
aENvQ2xhc3MuaDoKKworICAgICAgICAqIEludGVyZmFjZXMvSVdlYkljb25EYXRhYmFzZS5pZGw6
IFJlbW92ZWQuCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL1dlYktpdC5pZGw6CisKKyAgICAgICAg
KiBXZWJDb3JlU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6aWNv
blBhZ2VVUkxNYXBwaW5nQ291bnQpOgorICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6Omljb25S
ZXRhaW5lZFBhZ2VVUkxDb3VudCk6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6aWNvblJl
Y29yZENvdW50KToKKyAgICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjppY29uc1dpdGhEYXRhQ291
bnQpOgorCisgICAgICAgICogV2ViSWNvbkRhdGFiYXNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBXZWJJY29uRGF0YWJhc2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXRDbGFzc0ZhY3Rv
cnkuY3BwOgorCisgICAgICAgICogV2ViS2l0RExMLmNwcDoKKyAgICAgICAgKHNodXREb3duV2Vi
S2l0KToKKworICAgICAgICAqIFdlYktpdExvZ2dpbmcuaDoKKworICAgICAgICAqIFdlYlZpZXcu
Y3BwOgorICAgICAgICAoV2ViVmlldzo6Y2xvc2UpOgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5
RGlkQWRkSWNvbik6CisgICAgICAgIChXZWJWaWV3OjpyZWdpc3RlckZvckljb25Ob3RpZmljYXRp
b24pOgorICAgICAgICAoV2ViVmlldzo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbkZyb21XZWJGcmFt
ZSk6CisgICAgICAgIChXZWJWaWV3Ojpvbk5vdGlmeSk6CisKIDIwMTctMDctMTQgIEJhc3VrZSBT
dXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtDdXJsXSBEb24ndCBz
dGFydCBkb3dubG9hZGluZyBtb3JlIHRoYW4gb25jZSBmb3Igc2FtZSByZXF1ZXN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Gb3JFYWNoQ29DbGFzcy5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vRm9yRWFjaENvQ2xhc3MuaAppbmRleCAzZjk0OGQ4NGQ4Yy4uODg1OTlh
NTBlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0ZvckVhY2hDb0NsYXNz
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRm9yRWFjaENvQ2xhc3MuaApAQCAtNDIs
NyArNDIsNiBAQAogICAgIG1hY3JvKFdlYkVycm9yKSBcCiAgICAgbWFjcm8oV2ViSGlzdG9yeSkg
XAogICAgIG1hY3JvKFdlYkhpc3RvcnlJdGVtKSBcCi0gICAgbWFjcm8oV2ViSWNvbkRhdGFiYXNl
KSBcCiAgICAgbWFjcm8oV2ViSmF2YVNjcmlwdENvbGxlY3RvcikgXAogICAgIG1hY3JvKFdlYktp
dFN0YXRpc3RpY3MpIFwKICAgICBtYWNybyhXZWJNdXRhYmxlVVJMUmVxdWVzdCkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vSW50ZXJmYWNlcy9JV2ViSWNvbkRhdGFiYXNl
LmlkbCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0ludGVyZmFjZXMvSVdlYkljb25EYXRhYmFz
ZS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZDYwOWQ1MGE5Li4wMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9JbnRlcmZhY2VzL0lXZWJJY29uRGF0
YWJhc2UuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotY3BwX3F1
b3RlKCIjZGVmaW5lIFdlYkljb25EYXRhYmFzZURpZEFkZEljb25Ob3RpZmljYXRpb24gVEVYVChc
IldlYkljb25EYXRhYmFzZURpZEFkZEljb25Ob3RpZmljYXRpb25cIikiKQotY3BwX3F1b3RlKCIj
ZGVmaW5lIFdlYkljb25Ob3RpZmljYXRpb25Vc2VySW5mb1VSTEtleSBURVhUKFwiV2ViSWNvbk5v
dGlmaWNhdGlvblVzZXJJbmZvVVJMS2V5XCIpIikKLWNwcF9xdW90ZSgiI2RlZmluZSBXZWJJY29u
RGF0YWJhc2VEaWRSZW1vdmVBbGxJY29uc05vdGlmaWNhdGlvbiBURVhUKFwiV2ViSWNvbkRhdGFi
YXNlRGlkUmVtb3ZlQWxsSWNvbnNOb3RpZmljYXRpb25cIikiKQotCi0jaWZuZGVmIERPX05PX0lN
UE9SVFMKLWltcG9ydCAib2FpZGwuaWRsIjsKLWltcG9ydCAib2NpZGwuaWRsIjsKLSNlbmRpZgot
Ci0vKiEKLSAgICBAY2xhc3MgV2ViSWNvbkRhdGFiYXNlCi0gICAgQGRpc2N1c3Npb24gRmVhdHVy
ZXM6Ci0gICAgICAgIC0gbWVtb3J5IGNhY2hlIGljb25zIGF0IGRpZmZlcmVudCBzaXplcwotICAg
ICAgICAtIGRpc2sgc3RvcmFnZQotICAgICAgICAtIGljb24gdXBkYXRlIG5vdGlmaWNhdGlvbgot
ICAgICAgICAKLSAgICAgICAgVXNlczoKLSAgICAgICAgLSBXZWJJY29uTG9hZGVyIHRvIGNhY2hl
IGljb24gaW1hZ2VzCi0gICAgICAgIC0gVUkgZWxlbWVudHMgdG8gcmV0cmlldmUgaWNvbnMgdGhh
dCByZXByZXNlbnQgc2l0ZSBVUkxzLgotICAgICAgICAtIFNhdmUgaWNvbnMgdG8gZGlzayBmb3Ig
bGF0ZXIgdXNlLgotIAotICAgIEV2ZXJ5IGljb24gaW4gdGhlIGRhdGFiYXNlIGhhcyBhIHJldGFp
biBjb3VudC4gIElmIGFuIGljb24gaGFzIGEgcmV0YWluIGNvdW50IGdyZWF0ZXIgdGhhbiAwLCBp
dCB3aWxsIGJlIHdyaXR0ZW4gdG8gZGlzayBmb3IgbGF0ZXIgdXNlLiBJZiBhbiBpY29uJ3MgcmV0
YWluIGNvdW50IGVxdWFscyB6ZXJvIGl0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIGRpc2suICBUaGUg
cmV0YWluIGNvdW50IGlzIG5vdCBwZXJzaXN0ZW50IGFjcm9zcyBsYXVuY2hlcy4gSWYgdGhlIFdl
YktpdCBjbGllbnQgd2lzaGVzIHRvIHJldGFpbiBhbiBpY29uIGl0IHNob3VsZCByZXRhaW4gdGhl
IGljb24gb25jZSBmb3IgZXZlcnkgbGF1bmNoLiAgVGhpcyBpcyBiZXN0IGRvbmUgYXQgaW5pdGlh
bGl6YXRpb24gdGltZSBiZWZvcmUgdGhlIGRhdGFiYXNlIGJlZ2lucyByZW1vdmluZyBpY29ucy4g
IFRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBkYXRhYmFzZSBkb2VzIG5vdCByZW1vdmUgdW5yZXRhaW5l
ZCBpY29ucyBwcmVtYXR1cmVseSwgY2FsbCBkZWxheURhdGFiYXNlQ2xlYW51cCB1bnRpbCBhbGwg
ZGVzaXJlZCBpY29ucyBhcmUgcmV0YWluZWQuICBPbmNlIGFsbCBhcmUgcmV0YWluZWQsIGNhbGwg
YWxsb3dEYXRhYmFzZUNsZWFudXAuCi0gICAgCi0gICAgTm90ZSB0aGF0IGFuIGljb24gY2FuIGJl
IHJldGFpbmVkIGFmdGVyIHRoZSBkYXRhYmFzZSBjbGVhbi11cCBoYXMgYmVndW4uIFRoaXMganVz
dCBoYXMgdG8gYmUgZG9uZSBiZWZvcmUgdGhlIGljb24gaXMgcmVtb3ZlZC4gSWNvbnMgYXJlIHJl
bW92ZWQgZnJvbSB0aGUgZGF0YWJhc2Ugd2hlbmV2ZXIgbmV3IGljb25zIGFyZSBhZGRlZCB0byBp
dC4KLSAgICAKLSAgICBSZXRlbnRpb24gbWV0aG9kcyBjYW4gYmUgY2FsbGVkIGZvciBpY29ucyB0
aGF0IGFyZSBub3QgeWV0IGluIHRoZSBkYXRhYmFzZS4KLQotICAgIEBpbnRlcmZhY2UgV2ViSWNv
bkRhdGFiYXNlIDogTlNPYmplY3QKLSovCi1bCi0gICAgb2JqZWN0LAotICAgIG9sZWF1dG9tYXRp
b24sCi0gICAgaGlkZGVuLAotICAgIHV1aWQoRTkzRjI2MTYtMjU2MC00N2Q5LUJENEQtNkUyRjFF
MUQzMTc0KSwKLSAgICBwb2ludGVyX2RlZmF1bHQodW5pcXVlKQotXQotaW50ZXJmYWNlIElXZWJJ
Y29uRGF0YWJhc2UgOiBJVW5rbm93bgotewotICAgIC8qIQotICAgICAgICBAbWV0aG9kIHNoYXJl
ZEljb25EYXRhYmFzZQotICAgICAgICBAYWJzdHJhY3QgUmV0dXJucyBhIHNoYXJlZCBpbnN0YW5j
ZSBvZiB0aGUgaWNvbiBkYXRhYmFzZQotICAgICAgICArIChXZWJJY29uRGF0YWJhc2UgKilzaGFy
ZWRJY29uRGF0YWJhc2U7Ci0gICAgKi8KLSAgICBIUkVTVUxUIHNoYXJlZEljb25EYXRhYmFzZShb
b3V0LCByZXR2YWxdIElXZWJJY29uRGF0YWJhc2UqKiByZXN1bHQpOwotCi0gICAgLyohCi0gICAg
ICAgIEBtZXRob2QgaWNvbkZvclVSTDp3aXRoU2l6ZToKLSAgICAgICAgQGRpc2N1c3Npb24gQ2Fs
bHMgaWNvbkZvclVSTDp3aXRoU2l6ZTpjYWNoZTogd2l0aCBZRVMgZm9yIGNhY2hlLgotICAgICAg
ICBAcGFyYW0gVVJMCi0gICAgICAgIEBwYXJhbSBzaXplCi0gICAgICAgIC0gKE5TSW1hZ2UgKilp
Y29uRm9yVVJMOihOU1N0cmluZyAqKVVSTCB3aXRoU2l6ZTooTlNTaXplKXNpemU7Ci0gICAgKi8K
LSAgICAvKiEKLSAgICAgICAgQG1ldGhvZCBpY29uRm9yVVJMOndpdGhTaXplOmNhY2hlOgotICAg
ICAgICBAZGlzY3Vzc2lvbiBSZXR1cm5zIGFuIGljb24gZm9yIGEgd2ViIHNpdGUgVVJMIGZyb20g
bWVtb3J5IG9yIGRpc2suIG5pbCBpZiBub25lIGlzIGZvdW5kLgotICAgICAgICBVc3VhbGx5IGNh
bGxlZCBieSBhIFVJIGVsZW1lbnQgdG8gZGV0ZXJtaW5lIGlmIGEgc2l0ZSBVUkwgaGFzIGFuIGFz
c29jaWF0ZWQgaWNvbi4KLSAgICAgICAgT2Z0ZW4gY2FsbGVkIGJ5IHRoZSBvYnNlcnZlciBvZiBX
ZWJJY29uQ2hhbmdlZE5vdGlmaWNhdGlvbiBhZnRlciB0aGUgbm90aWZpY2F0aW9uIGlzIHNlbnQu
Ci0gICAgICAgIEBwYXJhbSBVUkwKLSAgICAgICAgQHBhcmFtIHNpemUKLSAgICAgICAgQHBhcmFt
IGNhY2hlIElmIHllcywgY2FjaGVzIHRoZSByZXR1cm5lZCBpbWFnZSBpbiBtZW1vcnkgaWYgbm90
IGFscmVhZHkgY2FjaGVkCi0gICAgICAgIC0gKE5TSW1hZ2UgKilpY29uRm9yVVJMOihOU1N0cmlu
ZyAqKVVSTCB3aXRoU2l6ZTooTlNTaXplKXNpemUgY2FjaGU6KEJPT0wpY2FjaGU7Ci0gICAgKi8K
LSAgICAvKiEKLSAgICAgICAgQG1ldGhvZCBpY29uVVJMRm9yVVJMOndpdGhTaXplOmNhY2hlOgot
ICAgICAgICBAZGlzY3Vzc2lvbiBSZXR1cm5zIGFuIGljb24gVVJMIGZvciBhIHdlYiBzaXRlIFVS
TCBmcm9tIG1lbW9yeSBvciBkaXNrLiBuaWwgaWYgbm9uZSBpcyBmb3VuZC4KLSAgICAgICAgQHBh
cmFtIFVSTAotICAgICAgICAtIChOU1N0cmluZyAqKWljb25VUkxGb3JVUkw6KE5TU3RyaW5nICop
VVJMOwotICAgICovCi0gICAgSFJFU1VMVCBpY29uRm9yVVJMKFtpbl0gQlNUUiB1cmwsIFtpbl0g
TFBTSVpFIHNpemUsIFtpbl0gQk9PTCBjYWNoZSwgW291dCwgcmV0dmFsXSBIQklUTUFQKiBoQml0
bWFwKTsKLQotICAgIC8qIQotICAgICAgICBAbWV0aG9kIGRlZmF1bHRJY29uV2l0aFNpemU6Ci0g
ICAgICAgIEBwYXJhbSBzaXplCi0gICAgICAgIC0gKE5TSW1hZ2UgKilkZWZhdWx0SWNvbldpdGhT
aXplOihOU1NpemUpc2l6ZTsKLSAgICAqLwotICAgIEhSRVNVTFQgZGVmYXVsdEljb25XaXRoU2l6
ZShbaW5dIExQU0laRSBzaXplLCBbb3V0LCByZXR2YWxdIEhCSVRNQVAqIGhCaXRtYXApOwotCi0g
ICAgLyohCi0gICAgICAgIEBtZXRob2QgcmV0YWluSWNvbkZvclVSTDoKLSAgICAgICAgQGFic3Ry
YWN0IEluY3JlbWVudHMgdGhlIHJldGFpbiBjb3VudCBvZiB0aGUgaWNvbi4KLSAgICAgICAgQHBh
cmFtIFVSTAotICAgICAgICAtICh2b2lkKXJldGFpbkljb25Gb3JVUkw6KE5TU3RyaW5nICopVVJM
OwotICAgICovCi0gICAgSFJFU1VMVCByZXRhaW5JY29uRm9yVVJMKFtpbl0gQlNUUiB1cmwpOwot
Ci0gICAgLyohCi0gICAgICAgIEBtZXRob2QgcmVsZWFzZUljb25Gb3JVUkw6Ci0gICAgICAgIEBh
YnN0cmFjdCBEZWNyZW1lbnRzIHRoZSByZXRhaW4gY291bnQgb2YgdGhlIGljb24uCi0gICAgICAg
IEBwYXJhbSBVUkwKLSAgICAgICAgLSAodm9pZClyZWxlYXNlSWNvbkZvclVSTDooTlNTdHJpbmcg
KilVUkw7Ci0gICAgKi8KLSAgICBIUkVTVUxUIHJlbGVhc2VJY29uRm9yVVJMKFtpbl0gQlNUUiB1
cmwpOwotCi0gICAgLyohCi0gICAgICAgIEBtZXRob2QgcmVtb3ZlQWxsSWNvbnM6Ci0gICAgICAg
IEBhYnN0cmFjdCBFbXRwaWVzIHRoZSBJY29uIERhdGFiYXNlCi0gICAgICAgIC0gKHZvaWQpcmVt
b3ZlQWxsSWNvbnM7Ci0gICAgKi8KLSAgICBIUkVTVUxUIHJlbW92ZUFsbEljb25zKCk7Ci0KLSAg
ICAvKiEKLSAgICAgICAgQG1ldGhvZCBkZWxheURhdGFiYXNlQ2xlYW51cDoKLSAgICAgICAgQGRp
c2N1c3Npb24gT25seSBlZmZlY3RpdmUgaWYgY2FsbGVkIGJlZm9yZSB0aGUgZGF0YWJhc2UgYmVn
aW5zIHJlbW92aW5nIGljb25zLgotICAgICAgICBkZWxheURhdGFiYXNlQ2xlYW5VcCBpbmNyZW1l
bnRzIGFuIGludGVybmFsIGNvdW50ZXIgdGhhdCB3aGVuIDAgYmVnaW5zIHRoZSBkYXRhYmFzZSBj
bGVhbi11cC4KLSAgICAgICAgVGhlIGNvdW50ZXIgZXF1YWxzIDAgYXQgaW5pdGlhbGl6YXRpb24u
Ci0gICAgICAgIC0gKHZvaWQpZGVsYXlEYXRhYmFzZUNsZWFudXA7Ci0gICAgKi8KLSAgICBIUkVT
VUxUIGRlbGF5RGF0YWJhc2VDbGVhbnVwKCk7Ci0KLSAgICAvKiEKLSAgICAgICAgQG1ldGhvZCBh
bGxvd0RhdGFiYXNlQ2xlYW51cDoKLSAgICAgICAgQGRpc2N1c3Npb24gSW5mb3JtcyB0aGUgZGF0
YWJhc2UgdGhhdCBpdCBub3cgY2FuIGJlZ2luIHJlbW92aW5nIGljb25zLgotICAgICAgICBhbGxv
d0RhdGFiYXNlQ2xlYW51cCBkZWNyZW1lbnRzIGFuIGludGVybmFsIGNvdW50ZXIgdGhhdCB3aGVu
IDAgYmVnaW5zIHRoZSBkYXRhYmFzZSBjbGVhbi11cC4KLSAgICAgICAgVGhlIGNvdW50ZXIgZXF1
YWxzIDAgYXQgaW5pdGlhbGl6YXRpb24uCi0gICAgICAgIC0gKHZvaWQpYWxsb3dEYXRhYmFzZUNs
ZWFudXA7Ci0gICAgKi8KLSAgICBIUkVTVUxUIGFsbG93RGF0YWJhc2VDbGVhbnVwKCk7Ci0KLSAg
ICAvKiEKLSAgICAgICAgQG1ldGhvZCBpY29uVVJMRm9yVVJMOndpdGhTaXplOmNhY2hlOgotICAg
ICAgICBAZGlzY3Vzc2lvbiBSZXR1cm5zIGFuIGljb24gVVJMIGZvciBhIHdlYiBzaXRlIFVSTCBm
cm9tIG1lbW9yeSBvciBkaXNrLiBuaWwgaWYgbm9uZSBpcyBmb3VuZC4KLSAgICAgICAgQHBhcmFt
IFVSTAotICAgICAgICAtIChOU1N0cmluZyAqKWljb25VUkxGb3JVUkw6KE5TU3RyaW5nICopVVJM
OwotICAgICovCi0gICAgSFJFU1VMVCBpY29uVVJMRm9yVVJMKFtpbl0gQlNUUiB1cmwsIFtvdXQs
IHJldHZhbF0gQlNUUiogaWNvblVSTCk7Ci0KLSAgICAvKiEKLSAgICAgICAgQG1ldGhvZCBpc0Vu
YWJsZWQKLSAgICAgICAgQGRpc2N1c3Npb24gUmV0dXJucyB0cnVlIGlmIHRoZSBpY29uIGRhdGFi
YXNlIGlzIGN1cnJlbnRseSBlbmFibGVkLCBvciBmYWxzZSBpZiBpdAotICAgICAgICBpcyBkaXNh
YmxlZC4KLSAgICAgICAgLSAoQk9PTClpc0VuYWJsZWQ7Ci0gICAgKi8KLSAgICBIUkVTVUxUIGlz
RW5hYmxlZChbb3V0LCByZXR2YWxdIEJPT0wqIHJlc3VsdCk7Ci0KLSAgICAvKiEKLSAgICAgICAg
QG1ldGhvZCBzZXRFbmFibGVkOgotICAgICAgICBAZGlzY3Vzc2lvbiBFbmFibGVzIG9yIGRpc2Fi
bGVzIHRoZSBpY29uIGRhdGFiYXNlIGJhc2VkIG9uIHRoZSBmbGFnIHBhc3NlZCBpbi4KLSAgICAg
ICAgQHBhcmFtIGZsYWcgUGFzcyB0cnVlIHRvIGVuYWJsZSB0aGUgaWNvbiBkYXRhYmFzZSwgb3Ig
ZmFsc2UgdG8gZGlzYWJsZSBpdC4KLSAgICAgICAgLSAodm9pZClzZXRFbmFibGVkOihCT09MKWZs
YWc7Ci0gICAgKi8KLSAgICBIUkVTVUxUIHNldEVuYWJsZWQoW2luXSBCT09MIGZsYWcpOwotICAg
IAotICAgIC8qIQotICAgICAgICBAbWV0aG9kIGhhc0ljb25Gb3JVUkw6Ci0gICAgICAgIEBkaXNj
dXNzaW9uIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGljb24gZGF0YWJhc2UgaGFzIGFuIGlj
b24gZm9yIHRoaXMgVVJMLgotICAgICAgICBAcGFybSB1cmwgVGhlIFVSTCB0byB0ZXN0IGZvci4K
LSAgICAqLwotICAgIEhSRVNVTFQgaGFzSWNvbkZvclVSTChbaW5dIEJTVFIgdXJsLCBbb3V0LCBy
ZXR2YWxdIEJPT0wqIHJlc3VsdCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9JbnRl
cmZhY2VzL1dlYktpdC5pZGwKaW5kZXggYjhmNDQyMWJlN2YuLjRiZDgzNGY0MGE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsCkBAIC0xMTEsNyAr
MTExLDYgQEAgaW1wb3J0ICJBY2Nlc3NpYmxlQXBwbGljYXRpb24uaWRsIjsKICNpbmNsdWRlICJJ
V2ViSGlzdG9yeUl0ZW0uaWRsIgogI2luY2x1ZGUgIklXZWJIaXN0b3J5SXRlbVByaXZhdGUuaWRs
IgogI2luY2x1ZGUgIklXZWJIaXN0b3J5UHJpdmF0ZS5pZGwiCi0jaW5jbHVkZSAiSVdlYkljb25E
YXRhYmFzZS5pZGwiCiAjaW5jbHVkZSAiSVdlYkluc3BlY3Rvci5pZGwiCiAjaW5jbHVkZSAiSVdl
Ykluc3BlY3RvclByaXZhdGUuaWRsIgogI2luY2x1ZGUgIklXZWJKYXZhU2NyaXB0Q29sbGVjdG9y
LmlkbCIKQEAgLTE3NiwxMSArMTc1LDYgQEAgbGlicmFyeSBXZWJLaXQKICAgICAgICAgaW50ZXJm
YWNlIElXZWJWaWV3UHJpdmF0ZTI7CiAgICAgfQogCi0gICAgW3V1aWQoNjY4MjdlYzEtM2FlZi00
MjQxLWJhYzUtZjc3NmI0NGYwMzBmKV0KLSAgICBjb2NsYXNzIFdlYkljb25EYXRhYmFzZSB7Ci0g
ICAgICAgIFtkZWZhdWx0XSBpbnRlcmZhY2UgSVdlYkljb25EYXRhYmFzZTsKLSAgICB9Ci0KICAg
ICBbdXVpZChhMDYyZWNjMy1iYjFiLTQ2OTQtYTU2OS1mNTllMGFkNmJlMGMpXQogICAgIGNvY2xh
c3MgV2ViTXV0YWJsZVVSTFJlcXVlc3QgewogICAgICAgICBbZGVmYXVsdF0gaW50ZXJmYWNlIElX
ZWJNdXRhYmxlVVJMUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdGF0aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dGF0aXN0aWNzLmNwcAppbmRleCBlZGI0NmIyNjBjNS4uOTEyMGFjYzhlMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKQEAgLTM0LDcgKzM0LDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR0ND
b250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HbHlwaFBhZ2UuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0ljb25EYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNv
bnNvbGVDbGllbnQuaD4KQEAgLTE3OSw3ICsxNzgsNyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0
aWNzOjppY29uUGFnZVVSTE1hcHBpbmdDb3VudChfT3V0XyBVSU5UKiBjb3VudCkKIHsKICAgICBp
ZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotICAgICpjb3VudCA9IChVSU5U
KSBpY29uRGF0YWJhc2UoKS5wYWdlVVJMTWFwcGluZ0NvdW50KCk7CisgICAgKmNvdW50ID0gKFVJ
TlQpMDsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTg3LDcgKzE4Niw3IEBAIEhSRVNVTFQg
V2ViQ29yZVN0YXRpc3RpY3M6Omljb25SZXRhaW5lZFBhZ2VVUkxDb3VudChfT3V0XyBVSU5UICpj
b3VudCkKIHsKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotICAg
ICpjb3VudCA9IChVSU5UKSBpY29uRGF0YWJhc2UoKS5yZXRhaW5lZFBhZ2VVUkxDb3VudCgpOwor
ICAgICpjb3VudCA9IChVSU5UKTA7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTE5NSw3ICsx
OTQsNyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjppY29uUmVjb3JkQ291bnQoX091dF8g
VUlOVCAqY291bnQpCiB7CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKLSAgICAqY291bnQgPSAoVUlOVCkgaWNvbkRhdGFiYXNlKCkuaWNvblJlY29yZENvdW50KCk7
CisgICAgKmNvdW50ID0gKFVJTlQpMDsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMjAzLDcg
KzIwMiw3IEBAIEhSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6Omljb25zV2l0aERhdGFDb3VudChf
T3V0XyBVSU5UICpjb3VudCkKIHsKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOwotICAgICpjb3VudCA9IChVSU5UKSBpY29uRGF0YWJhc2UoKS5pY29uUmVjb3JkQ291
bnRXaXRoRGF0YSgpOworICAgICpjb3VudCA9IChVSU5UKTA7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkljb25EYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJY29uRGF0YWJhc2UuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDg2NTllMmFhOC4uMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSWNvbkRhdGFiYXNlLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDQxNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMDksIDIwMTMtMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJXZWJLaXRETEwuaCIKLSNpbmNsdWRlICJX
ZWJJY29uRGF0YWJhc2UuaCIKLQotI2luY2x1ZGUgIkNPTVByb3BlcnR5QmFnLmgiCi0jaW5jbHVk
ZSAiV2ViTm90aWZpY2F0aW9uQ2VudGVyLmgiCi0jaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIK
LSNpbmNsdWRlICJzaGxvYmouaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0JpdG1hcEluZm8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSFduZERD
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JY29uRGF0YWJhc2UuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0ltYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KLS8vIFdlYkljb25E
YXRhYmFzZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLVdlYkljb25EYXRhYmFzZSogV2ViSWNvbkRhdGFiYXNlOjptX3No
YXJlZFdlYkljb25EYXRhYmFzZSA9IDA7Ci0KLVdlYkljb25EYXRhYmFzZTo6V2ViSWNvbkRhdGFi
YXNlKCkKLXsKLSAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViSWNvbkRhdGFiYXNlIik7Ci19Ci0KLVdlYkljb25EYXRhYmFzZTo6fldlYkljb25EYXRhYmFz
ZSgpCi17Ci0gICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkljb25EYXRhYmFzZSIpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6aW5pdCgpCi17
Ci0gICAgV2ViUHJlZmVyZW5jZXMqIHN0YW5kYXJkUHJlZnMgPSBXZWJQcmVmZXJlbmNlczo6c2hh
cmVkU3RhbmRhcmRQcmVmZXJlbmNlcygpOwotICAgIEJPT0wgZW5hYmxlZCA9IEZBTFNFOwotICAg
IGlmIChGQUlMRUQoc3RhbmRhcmRQcmVmcy0+aWNvbkRhdGFiYXNlRW5hYmxlZCgmZW5hYmxlZCkp
KSB7Ci0gICAgICAgIGVuYWJsZWQgPSBGQUxTRTsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gZ2V0IGljb24gZGF0YWJhc2UgZW5hYmxlZCBwcmVmZXJlbmNlIik7Ci0gICAgfQotICAgIGlj
b25EYXRhYmFzZSgpLnNldEVuYWJsZWQoISFlbmFibGVkKTsKLSAgICBpZiAoISghIWVuYWJsZWQp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdGFydFVwSWNvbkRhdGFiYXNlKCk7Ci19Ci0KLXZv
aWQgV2ViSWNvbkRhdGFiYXNlOjpzdGFydFVwSWNvbkRhdGFiYXNlKCkKLXsKLSAgICBXZWJQcmVm
ZXJlbmNlcyogc3RhbmRhcmRQcmVmcyA9IFdlYlByZWZlcmVuY2VzOjpzaGFyZWRTdGFuZGFyZFBy
ZWZlcmVuY2VzKCk7Ci0KLSAgICBpY29uRGF0YWJhc2UoKS5zZXRDbGllbnQodGhpcyk7Ci0KLSAg
ICBCU3RyaW5nIHByZWZEYXRhYmFzZVBhdGg7Ci0gICAgaWYgKEZBSUxFRChzdGFuZGFyZFByZWZz
LT5pY29uRGF0YWJhc2VMb2NhdGlvbigmcHJlZkRhdGFiYXNlUGF0aCkpKQotICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBnZXQgaWNvbiBkYXRhYmFzZSBsb2NhdGlvbiBwcmVmZXJlbmNlIik7
Ci0KLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoKHByZWZEYXRhYmFzZVBhdGgsIFN5c1N0cmluZ0xl
bihwcmVmRGF0YWJhc2VQYXRoKSk7Ci0KLSAgICBpZiAoZGF0YWJhc2VQYXRoLmlzRW1wdHkoKSkg
ewotICAgICAgICBkYXRhYmFzZVBhdGggPSBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKTsKLSAgICAgICAgaWYgKGRhdGFiYXNlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBjb25zdHJ1Y3QgZGVmYXVsdCBpY29uIGRhdGFiYXNlIHBhdGgi
KTsKLSAgICB9Ci0KLSAgICBpZiAoIWljb25EYXRhYmFzZSgpLm9wZW4oZGF0YWJhc2VQYXRoLCBX
ZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKCkpKQotICAgICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBpY29uIGRhdGFiYXNlIHBhdGgiKTsKLX0K
LQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OnNodXREb3duSWNvbkRhdGFiYXNlKCkKLXsKLX0KLQot
V2ViSWNvbkRhdGFiYXNlKiBXZWJJY29uRGF0YWJhc2U6OmNyZWF0ZUluc3RhbmNlKCkKLXsKLSAg
ICBXZWJJY29uRGF0YWJhc2UqIGluc3RhbmNlID0gbmV3IFdlYkljb25EYXRhYmFzZSgpOwotICAg
IGluc3RhbmNlLT5BZGRSZWYoKTsKLSAgICByZXR1cm4gaW5zdGFuY2U7Ci19Ci0KLVdlYkljb25E
YXRhYmFzZSogV2ViSWNvbkRhdGFiYXNlOjpzaGFyZWRXZWJJY29uRGF0YWJhc2UoKQotewotICAg
IGlmIChtX3NoYXJlZFdlYkljb25EYXRhYmFzZSkgewotICAgICAgICBtX3NoYXJlZFdlYkljb25E
YXRhYmFzZS0+QWRkUmVmKCk7Ci0gICAgICAgIHJldHVybiBtX3NoYXJlZFdlYkljb25EYXRhYmFz
ZTsKLSAgICB9Ci0gICAgbV9zaGFyZWRXZWJJY29uRGF0YWJhc2UgPSBjcmVhdGVJbnN0YW5jZSgp
OwotICAgIG1fc2hhcmVkV2ViSWNvbkRhdGFiYXNlLT5pbml0KCk7Ci0gICAgcmV0dXJuIG1fc2hh
cmVkV2ViSWNvbkRhdGFiYXNlOwotfQotCi0vLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUhSRVNV
TFQgV2ViSWNvbkRhdGFiYXNlOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09N
X091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKLXsKLSAgICBpZiAoIXBwdk9iamVjdCkKLSAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKLSAgICBpZiAo
SXNFcXVhbEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkKLSAgICAgICAgKnBwdk9iamVjdCA9IHN0
YXRpY19jYXN0PElXZWJJY29uRGF0YWJhc2UqPih0aGlzKTsKLSAgICBlbHNlIGlmIChJc0VxdWFs
R1VJRChyaWlkLCBJSURfSVdlYkljb25EYXRhYmFzZSkpCi0gICAgICAgICpwcHZPYmplY3QgPSBz
dGF0aWNfY2FzdDxJV2ViSWNvbkRhdGFiYXNlKj4odGhpcyk7Ci0gICAgZWxzZQotICAgICAgICBy
ZXR1cm4gRV9OT0lOVEVSRkFDRTsKLQotICAgIEFkZFJlZigpOwotICAgIHJldHVybiBTX09LOwot
fQotCi1VTE9ORyBXZWJJY29uRGF0YWJhc2U6OkFkZFJlZigpCi17Ci0gICAgcmV0dXJuICsrbV9y
ZWZDb3VudDsKLX0KLQotVUxPTkcgV2ViSWNvbkRhdGFiYXNlOjpSZWxlYXNlKCkKLXsKLSAgICBV
TE9ORyBuZXdSZWYgPSAtLW1fcmVmQ291bnQ7Ci0gICAgaWYgKCFuZXdSZWYpCi0gICAgICAgIGRl
bGV0ZSh0aGlzKTsKLQotICAgIHJldHVybiBuZXdSZWY7Ci19Ci0KLS8vIElXZWJJY29uRGF0YWJh
c2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLQotSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6OnNoYXJlZEljb25EYXRh
YmFzZShfQ09NX091dHB0cl9vcHRfIElXZWJJY29uRGF0YWJhc2UqKiByZXN1bHQpCi17Ci0gICAg
aWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBFX1BPSU5URVI7Ci0gICAgKnJlc3VsdCA9IHNo
YXJlZFdlYkljb25EYXRhYmFzZSgpOwotICAgIHJldHVybiBTX09LOwotfQotCi1IUkVTVUxUIFdl
Ykljb25EYXRhYmFzZTo6aWNvbkZvclVSTChfSW5fIEJTVFIgdXJsLCBfSW5fIExQU0laRSBzaXpl
LCBCT09MIC8qY2FjaGUqLywgX19kZXJlZl9vcHRfb3V0IEhCSVRNQVAqIGJpdG1hcCkKLXsKLSAg
ICBpZiAoIXNpemUgfHwgIWJpdG1hcCkKLSAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLQotICAg
IEludFNpemUgaW50U2l6ZSgqc2l6ZSk7Ci0KLSAgICBJbWFnZSogaWNvbiA9IG51bGxwdHI7Ci0g
ICAgaWYgKHVybCkKLSAgICAgICAgaWNvbiA9IGljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNv
bkZvclBhZ2VVUkwoU3RyaW5nKHVybCwgU3lzU3RyaW5nTGVuKHVybCkpLCBpbnRTaXplKTsKLQot
ICAgIC8vIE1ha2Ugc3VyZSB3ZSBjaGVjayBmb3IgdGhlIGNhc2Ugb2YgYW4gImVtcHR5IGltYWdl
IgotICAgIGlmIChpY29uICYmIGljb24tPndpZHRoKCkpIHsKLSAgICAgICAgKmJpdG1hcCA9IGdl
dE9yQ3JlYXRlU2hhcmVkQml0bWFwKGludFNpemUpOwotICAgICAgICBpZiAoIWljb24tPmdldEhC
SVRNQVBPZlNpemUoKmJpdG1hcCwgJmludFNpemUpKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBkcmF3IEltYWdlIHRvIEhCSVRNQVAiKTsKLSAgICAgICAgICAgICpiaXRtYXAg
PSAwOwotICAgICAgICAgICAgcmV0dXJuIEVfRkFJTDsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gU19PSzsKLSAgICB9Ci0KLSAgICByZXR1cm4gZGVmYXVsdEljb25XaXRoU2l6ZShzaXplLCBi
aXRtYXApOwotfQotCi1IUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6ZGVmYXVsdEljb25XaXRoU2l6
ZShfSW5fIExQU0laRSBzaXplLCBfX2RlcmVmX29wdF9vdXQgSEJJVE1BUCogcmVzdWx0KQotewot
ICAgIGlmICghc2l6ZSB8fCAhcmVzdWx0KQotICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotCi0g
ICAgSW50U2l6ZSBpbnRTaXplKCpzaXplKTsKLQotICAgICpyZXN1bHQgPSBnZXRPckNyZWF0ZURl
ZmF1bHRJY29uQml0bWFwKGludFNpemUpOwotICAgIHJldHVybiBTX09LOwotfQotCi1IUkVTVUxU
IFdlYkljb25EYXRhYmFzZTo6cmV0YWluSWNvbkZvclVSTChfSW5fIEJTVFIgdXJsKQotewotICAg
IGljb25EYXRhYmFzZSgpLnJldGFpbkljb25Gb3JQYWdlVVJMKFN0cmluZyh1cmwsIFN5c1N0cmlu
Z0xlbih1cmwpKSk7Ci0gICAgcmV0dXJuIFNfT0s7Ci19Ci0KLUhSRVNVTFQgV2ViSWNvbkRhdGFi
YXNlOjpyZWxlYXNlSWNvbkZvclVSTChfSW5fIEJTVFIgdXJsKQotewotICAgIGljb25EYXRhYmFz
ZSgpLnJlbGVhc2VJY29uRm9yUGFnZVVSTChTdHJpbmcodXJsLCBTeXNTdHJpbmdMZW4odXJsKSkp
OwotICAgIHJldHVybiBTX09LOwotfQotCi1IUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6cmVtb3Zl
QWxsSWNvbnMoKQotewotICAgIGljb25EYXRhYmFzZSgpLnJlbW92ZUFsbEljb25zKCk7Ci0gICAg
cmV0dXJuIFNfT0s7Ci19Ci0KLUhSRVNVTFQgV2ViSWNvbkRhdGFiYXNlOjpkZWxheURhdGFiYXNl
Q2xlYW51cCgpCi17Ci0gICAgSWNvbkRhdGFiYXNlOjpkZWxheURhdGFiYXNlQ2xlYW51cCgpOwot
ICAgIHJldHVybiBTX09LOwotfQotCi1IUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6YWxsb3dEYXRh
YmFzZUNsZWFudXAoKQotewotICAgIEljb25EYXRhYmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFudXAo
KTsKLSAgICByZXR1cm4gU19PSzsKLX0KLQotSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6Omljb25V
UkxGb3JVUkwoX0luXyBCU1RSIHVybCwgX19kZXJlZl9vcHRfb3V0IEJTVFIqIGljb25VUkwpCi17
Ci0gICAgaWYgKCF1cmwgfHwgIWljb25VUkwpCi0gICAgICAgIHJldHVybiBFX1BPSU5URVI7Ci0g
ICAgQlN0cmluZyBpY29uVVJMQlNUUihpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25VUkxG
b3JQYWdlVVJMKFN0cmluZyh1cmwsIFN5c1N0cmluZ0xlbih1cmwpKSkpOwotICAgICppY29uVVJM
ID0gaWNvblVSTEJTVFIucmVsZWFzZSgpOwotICAgIHJldHVybiBTX09LOwotfQotCi1IUkVTVUxU
IFdlYkljb25EYXRhYmFzZTo6aXNFbmFibGVkKF9PdXRfIEJPT0wqIHJlc3VsdCkKLXsKLSAgICBp
ZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAgICAqcmVzdWx0ID0gaWNv
bkRhdGFiYXNlKCkuaXNFbmFibGVkKCk7Ci0gICAgcmV0dXJuIFNfT0s7Ci19Ci0KLUhSRVNVTFQg
V2ViSWNvbkRhdGFiYXNlOjpzZXRFbmFibGVkKEJPT0wgZmxhZykKLXsKLSAgICBCT09MIGN1cnJl
bnRseUVuYWJsZWQ7Ci0gICAgaXNFbmFibGVkKCZjdXJyZW50bHlFbmFibGVkKTsKLSAgICBpZiAo
Y3VycmVudGx5RW5hYmxlZCAmJiAhZmxhZykgewotICAgICAgICBpY29uRGF0YWJhc2UoKS5zZXRF
bmFibGVkKGZhbHNlKTsKLSAgICAgICAgc2h1dERvd25JY29uRGF0YWJhc2UoKTsKLSAgICB9IGVs
c2UgaWYgKCFjdXJyZW50bHlFbmFibGVkICYmIGZsYWcpIHsKLSAgICAgICAgaWNvbkRhdGFiYXNl
KCkuc2V0RW5hYmxlZCh0cnVlKTsKLSAgICAgICAgc3RhcnRVcEljb25EYXRhYmFzZSgpOwotICAg
IH0KLSAgICByZXR1cm4gU19PSzsKLX0KLQotSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6Omhhc0lj
b25Gb3JVUkwoX0luXyBCU1RSIHVybCwgX091dF8gQk9PTCogcmVzdWx0KQotewotICAgIGlmICgh
dXJsIHx8ICFyZXN1bHQpCi0gICAgICAgIHJldHVybiBFX1BPSU5URVI7Ci0KLSAgICBTdHJpbmcg
dXJsU3RyaW5nKHVybCwgU3lzU3RyaW5nTGVuKHVybCkpOwotCi0gICAgLy8gUGFzc2luZyBhIHNp
emUgcGFyYW1ldGVyIG9mIDAsIDAgbWVhbnMgd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgcmVzdWx0
IG9mIHRoZSBpbWFnZSwgd2UganVzdAotICAgIC8vIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSByZWFk
IGZyb20gZGlzayB0byBsb2FkIHRoZSBpY29uIGlzIGtpY2tlZCBvZmYuCi0gICAgaWNvbkRhdGFi
YXNlKCkuc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTCh1cmxTdHJpbmcsIEludFNpemUoMCwgMCkp
OwotCi0gICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYSBub24tZW1wdHkgaWNvbiBVUkwg
Zm9yIHRoZSBwYWdlLCBhbmQgaWYgd2UgZG8sIHdlIGhhdmUgYW4gaWNvbiBmb3IKLSAgICAvLyB0
aGUgcGFnZS4KLSAgICAqcmVzdWx0ID0gIShpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25V
UkxGb3JQYWdlVVJMKHVybFN0cmluZykuaXNFbXB0eSgpKTsKLQotICAgIHJldHVybiBTX09LOwot
fQotCi1zdGF0aWMgSEJJVE1BUCBjcmVhdGVESUIoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAg
ICBCaXRtYXBJbmZvIGJtSW5mbyA9IEJpdG1hcEluZm86OmNyZWF0ZShzaXplKTsKLQotICAgIEhX
bmREQyBkYygwKTsKLSAgICByZXR1cm4gQ3JlYXRlRElCU2VjdGlvbihkYywgJmJtSW5mbywgRElC
X1JHQl9DT0xPUlMsIDAsIDAsIDApOwotfQotCi1IQklUTUFQIFdlYkljb25EYXRhYmFzZTo6Z2V0
T3JDcmVhdGVTaGFyZWRCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBIQklUTUFQ
IHJlc3VsdCA9IG1fc2hhcmVkSWNvbk1hcC5nZXQoc2l6ZSk7Ci0gICAgaWYgKHJlc3VsdCkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXN1bHQgPSBjcmVhdGVESUIoc2l6ZSk7Ci0gICAg
bV9zaGFyZWRJY29uTWFwLnNldChzaXplLCByZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLUhCSVRNQVAgV2ViSWNvbkRhdGFiYXNlOjpnZXRPckNyZWF0ZURlZmF1bHRJY29uQml0bWFw
KGNvbnN0IEludFNpemUmIHNpemUpCi17Ci0gICAgSEJJVE1BUCByZXN1bHQgPSBtX2RlZmF1bHRJ
Y29uTWFwLmdldChzaXplKTsKLSAgICBpZiAocmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0
OwotCi0gICAgcmVzdWx0ID0gY3JlYXRlRElCKHNpemUpOwotCi0gICAgbV9kZWZhdWx0SWNvbk1h
cC5zZXQoc2l6ZSwgcmVzdWx0KTsKLSAgICBpZiAoIWljb25EYXRhYmFzZSgpLmRlZmF1bHRJY29u
KHNpemUpIHx8ICFpY29uRGF0YWJhc2UoKS5kZWZhdWx0SWNvbihzaXplKS0+Z2V0SEJJVE1BUE9m
U2l6ZShyZXN1bHQsICZzaXplKSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkcmF3
IEltYWdlIHRvIEhCSVRNQVAiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLS8vIEljb25EYXRhYmFzZUNsaWVudAotCi12b2lkIFdlYkljb25EYXRh
YmFzZTo6ZGlkUmVtb3ZlQWxsSWNvbnMoKQotewotICAgIC8vIFF1ZXVlaW5nIHRoZSBlbXB0eSBz
dHJpbmcgaXMgYSBzcGVjaWFsIHdheSBvZiBzYXlpbmcgInRoaXMgcXVldWVkIG5vdGlmaWNhdGlv
biBpcyB0aGUgZGlkUmVtb3ZlQWxsSWNvbnMgbm90aWZpY2F0aW9uIgotICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbm90aWZpY2F0aW9uTXV0ZXgpOwotICAgIG1fbm90aWZpY2F0aW9uUXVldWUuYXBw
ZW5kKFN0cmluZygpKTsKLSAgICBzY2hlZHVsZU5vdGlmaWNhdGlvbkRlbGl2ZXJ5KCk7Ci19Ci0K
LXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRJbXBvcnRJY29uVVJMRm9yUGFnZVVSTChjb25zdCBX
VEY6OlN0cmluZyYgcGFnZVVSTCkKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX25vdGlmaWNh
dGlvbk11dGV4KTsKLSAgICBtX25vdGlmaWNhdGlvblF1ZXVlLmFwcGVuZChwYWdlVVJMLmlzb2xh
dGVkQ29weSgpKTsKLSAgICBzY2hlZHVsZU5vdGlmaWNhdGlvbkRlbGl2ZXJ5KCk7Ci19Ci0KLXZv
aWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRJbXBvcnRJY29uRGF0YUZvclBhZ2VVUkwoY29uc3QgV1RG
OjpTdHJpbmcmIHBhZ2VVUkwpCi17Ci0gICAgLy8gV2ViS2l0MSBvbmx5IGhhcyBhIHNpbmdsZSAi
aWNvbiBkaWQgY2hhbmdlIiBub3RpZmljYXRpb24uCi0gICAgZGlkSW1wb3J0SWNvblVSTEZvclBh
Z2VVUkwocGFnZVVSTCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRDaGFuZ2VJY29u
Rm9yUGFnZVVSTChjb25zdCBXVEY6OlN0cmluZyYgcGFnZVVSTCkKLXsKLSAgICAvLyBXZWJLaXQx
IG9ubHkgaGFzIGEgc2luZ2xlICJpY29uIGRpZCBjaGFuZ2UiIG5vdGlmaWNhdGlvbi4KLSAgICBk
aWRJbXBvcnRJY29uVVJMRm9yUGFnZVVSTChwYWdlVVJMKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0
YWJhc2U6OmRpZEZpbmlzaFVSTEltcG9ydCgpCi17Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNl
OjpzY2hlZHVsZU5vdGlmaWNhdGlvbkRlbGl2ZXJ5KCkKLXsKLSAgICAvLyBDYWxsZXIgb2YgdGhp
cyBtZXRob2QgbXVzdCBob2xkIHRoZSBtX25vdGlmaWNhdGlvblF1ZXVlIGxvY2sKLSAgICBBU1NF
UlQoIW1fbm90aWZpY2F0aW9uTXV0ZXgudHJ5TG9jaygpKTsKLQotICAgIGlmICghbV9kZWxpdmVy
eVJlcXVlc3RlZCkgewotICAgICAgICBtX2RlbGl2ZXJ5UmVxdWVzdGVkID0gdHJ1ZTsKLSAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbXSB7Ci0gICAgICAgICAgICBkZWxpdmVyTm90aWZpY2F0aW9u
cygwKTsKLSAgICAgICAgfSk7Ci0gICAgfQotfQotCi1CU1RSIFdlYkljb25EYXRhYmFzZTo6aWNv
bkRhdGFiYXNlRGlkQWRkSWNvbk5vdGlmaWNhdGlvbigpCi17Ci0gICAgc3RhdGljIEJTVFIgZGlk
QWRkSWNvbk5hbWUgPSBTeXNBbGxvY1N0cmluZyhXZWJJY29uRGF0YWJhc2VEaWRBZGRJY29uTm90
aWZpY2F0aW9uKTsKLSAgICByZXR1cm4gZGlkQWRkSWNvbk5hbWU7Ci19Ci0KLUJTVFIgV2ViSWNv
bkRhdGFiYXNlOjppY29uRGF0YWJhc2VOb3RpZmljYXRpb25Vc2VySW5mb1VSTEtleSgpCi17Ci0g
ICAgc3RhdGljIEJTVFIgaWNvblVzZXJJbmZvVVJMS2V5ID0gU3lzQWxsb2NTdHJpbmcoV2ViSWNv
bk5vdGlmaWNhdGlvblVzZXJJbmZvVVJMS2V5KTsKLSAgICByZXR1cm4gaWNvblVzZXJJbmZvVVJM
S2V5OwotfQotCi1CU1RSIFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlRGlkUmVtb3ZlQWxs
SWNvbnNOb3RpZmljYXRpb24oKQotewotICAgIHN0YXRpYyBCU1RSIGRpZFJlbW92ZUFsbEljb25z
TmFtZSA9IFN5c0FsbG9jU3RyaW5nKFdlYkljb25EYXRhYmFzZURpZFJlbW92ZUFsbEljb25zTm90
aWZpY2F0aW9uKTsKLSAgICByZXR1cm4gZGlkUmVtb3ZlQWxsSWNvbnNOYW1lOwotfQotCi1zdGF0
aWMgdm9pZCBwb3N0RGlkUmVtb3ZlQWxsSWNvbnNOb3RpZmljYXRpb24oV2ViSWNvbkRhdGFiYXNl
KiBpY29uREIpCi17Ci0gICAgSVdlYk5vdGlmaWNhdGlvbkNlbnRlciogbm90aWZ5Q2VudGVyID0g
V2ViTm90aWZpY2F0aW9uQ2VudGVyOjpkZWZhdWx0Q2VudGVySW50ZXJuYWwoKTsKLSAgICBub3Rp
ZnlDZW50ZXItPnBvc3ROb3RpZmljYXRpb25OYW1lKFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFi
YXNlRGlkUmVtb3ZlQWxsSWNvbnNOb3RpZmljYXRpb24oKSwgc3RhdGljX2Nhc3Q8SVdlYkljb25E
YXRhYmFzZSo+KGljb25EQiksIDApOwotfQotCi1zdGF0aWMgdm9pZCBwb3N0RGlkQWRkSWNvbk5v
dGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIFdlYkljb25EYXRhYmFzZSogaWNvbkRC
KQotewotICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGRpY3Rpb25hcnk7Ci0gICAgZGljdGlv
bmFyeS5zZXQoV2ViSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VOb3RpZmljYXRpb25Vc2VySW5m
b1VSTEtleSgpLCBwYWdlVVJMKTsKLSAgICBDT01QdHI8SVByb3BlcnR5QmFnPiB1c2VySW5mbyhB
ZG9wdENPTSwgQ09NUHJvcGVydHlCYWc8U3RyaW5nPjo6YWRvcHQoZGljdGlvbmFyeSkpOwotCi0g
ICAgSVdlYk5vdGlmaWNhdGlvbkNlbnRlciogbm90aWZ5Q2VudGVyID0gV2ViTm90aWZpY2F0aW9u
Q2VudGVyOjpkZWZhdWx0Q2VudGVySW50ZXJuYWwoKTsKLSAgICBub3RpZnlDZW50ZXItPnBvc3RO
b3RpZmljYXRpb25OYW1lKFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlRGlkQWRkSWNvbk5v
dGlmaWNhdGlvbigpLCBzdGF0aWNfY2FzdDxJV2ViSWNvbkRhdGFiYXNlKj4oaWNvbkRCKSwgdXNl
ckluZm8uZ2V0KCkpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6ZGVsaXZlck5vdGlmaWNh
dGlvbnModm9pZCopCi17Ci0gICAgQVNTRVJUKG1fc2hhcmVkV2ViSWNvbkRhdGFiYXNlKTsKLSAg
ICBpZiAoIW1fc2hhcmVkV2ViSWNvbkRhdGFiYXNlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBB
U1NFUlQobV9zaGFyZWRXZWJJY29uRGF0YWJhc2UtPm1fZGVsaXZlcnlSZXF1ZXN0ZWQpOwotCi0g
ICAgVmVjdG9yPFN0cmluZz4gcXVldWU7Ci0gICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX3NoYXJlZFdlYkljb25EYXRhYmFzZS0+bV9ub3RpZmljYXRpb25NdXRleCk7Ci0gICAgICAg
IHF1ZXVlLnN3YXAobV9zaGFyZWRXZWJJY29uRGF0YWJhc2UtPm1fbm90aWZpY2F0aW9uUXVldWUp
OwotICAgICAgICBtX3NoYXJlZFdlYkljb25EYXRhYmFzZS0+bV9kZWxpdmVyeVJlcXVlc3RlZCA9
IGZhbHNlOwotICAgIH0KLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBxdWV1ZS5zaXpl
KCk7ICsraSkgewotICAgICAgICBpZiAocXVldWVbaV0uaXNOdWxsKCkpCi0gICAgICAgICAgICBw
b3N0RGlkUmVtb3ZlQWxsSWNvbnNOb3RpZmljYXRpb24obV9zaGFyZWRXZWJJY29uRGF0YWJhc2Up
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3N0RGlkQWRkSWNvbk5vdGlmaWNhdGlvbihx
dWV1ZVtpXSwgbV9zaGFyZWRXZWJJY29uRGF0YWJhc2UpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViSWNvbkRhdGFiYXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGFlZmRiMmU0ZmMzLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJJY29uRGF0YWJhc2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMDksIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaWZuZGVmIFdlYkljb25EYXRhYmFzZV9ICi0jZGVmaW5lIFdlYkljb25EYXRhYmFzZV9ICi0K
LSNpbmNsdWRlICJXZWJLaXQuaCIKLQotI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlQ2xp
ZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9J
bnRTaXplSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotI2luY2x1ZGUgPHdpbmRvd3MuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUKLXsKLSAgICBjbGFzcyBJY29uRGF0YWJhc2U7Ci19OyAvL25h
bWVzcGFjZSBXZWJDb3JlCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFj
ZSBXVEY7Ci0KLWNsYXNzIFdlYkljb25EYXRhYmFzZSA6IHB1YmxpYyBJV2ViSWNvbkRhdGFiYXNl
LCBwdWJsaWMgV2ViQ29yZTo6SWNvbkRhdGFiYXNlQ2xpZW50Ci17Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFdlYkljb25EYXRhYmFzZSogY3JlYXRlSW5zdGFuY2UoKTsKLSAgICBzdGF0aWMgV2ViSWNv
bkRhdGFiYXNlKiBzaGFyZWRXZWJJY29uRGF0YWJhc2UoKTsKLXByaXZhdGU6Ci0gICAgV2ViSWNv
bkRhdGFiYXNlKCk7Ci0gICAgfldlYkljb25EYXRhYmFzZSgpOwotICAgIHZvaWQgaW5pdCgpOwot
ICAgIHZvaWQgc3RhcnRVcEljb25EYXRhYmFzZSgpOwotICAgIHZvaWQgc2h1dERvd25JY29uRGF0
YWJhc2UoKTsKLXB1YmxpYzoKLQotICAgIC8vIElVbmtub3duCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01f
T3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENB
TExUWVBFIEFkZFJlZigpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVs
ZWFzZSgpOwotCi0gICAgLy8gSVdlYkljb25EYXRhYmFzZQotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzaGFyZWRJY29uRGF0YWJhc2UoX0NPTV9PdXRwdHJfb3B0XyBJV2Vi
SWNvbkRhdGFiYXNlKiopOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBp
Y29uRm9yVVJMKF9Jbl8gQlNUUiB1cmwsIF9Jbl8gTFBTSVpFLCBCT09MIGNhY2hlLCBfX2RlcmVm
X29wdF9vdXQgSEJJVE1BUCogaW1hZ2UpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBkZWZhdWx0SWNvbldpdGhTaXplKF9Jbl8gTFBTSVpFLCBfX2RlcmVmX29wdF9vdXQg
SEJJVE1BUCogcmVzdWx0KTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
cmV0YWluSWNvbkZvclVSTChfSW5fIEJTVFIpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSByZWxlYXNlSWNvbkZvclVSTChfSW5fIEJTVFIpOwotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVBbGxJY29ucygpOwotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWxheURhdGFiYXNlQ2xlYW51cCgpOwotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhbGxvd0RhdGFiYXNlQ2xlYW51cCgpOwotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpY29uVVJMRm9yVVJMKF9Jbl8gQlNU
UiB1cmwsIF9fZGVyZWZfb3B0X291dCBCU1RSKiBpY29uVVJMKTsKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNFbmFibGVkKF9PdXRfIEJPT0wqKTsKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RW5hYmxlZChCT09MKTsKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzSWNvbkZvclVSTChfSW5fIEJTVFIgdXJsLCBf
T3V0XyBCT09MKiByZXN1bHQpOwotCi0gICAgLy8gSWNvbkRhdGFiYXNlQ2xpZW50Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlbW92ZUFsbEljb25zKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEltcG9y
dEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFdURjo6U3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZEltcG9ydEljb25EYXRhRm9yUGFnZVVSTChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29uRm9yUGFnZVVSTChjb25zdCBXVEY6OlN0cmluZyYpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hVUkxJbXBvcnQoKTsKLQotICAgIHN0YXRpYyBCU1RS
IGljb25EYXRhYmFzZURpZEFkZEljb25Ob3RpZmljYXRpb24oKTsKLSAgICBzdGF0aWMgQlNUUiBp
Y29uRGF0YWJhc2VEaWRSZW1vdmVBbGxJY29uc05vdGlmaWNhdGlvbigpOwotICAgIHN0YXRpYyBC
U1RSIGljb25EYXRhYmFzZU5vdGlmaWNhdGlvblVzZXJJbmZvVVJMS2V5KCk7Ci1wcm90ZWN0ZWQ6
Ci0gICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKLSAgICBzdGF0aWMgV2ViSWNvbkRhdGFiYXNl
KiBtX3NoYXJlZFdlYkljb25EYXRhYmFzZTsKLQotICAgIC8vIEtlZXAgYSBzZXQgb2YgSEJJVE1B
UHMgYXJvdW5kIGZvciB0aGUgZGVmYXVsdCBpY29uLCBhbmQgYW5vdGhlcgotICAgIC8vIHRvIHNo
YXJlIGFtb25nc3QgcHJlc2VudCBzaXRlIGljb25zCi0gICAgSEJJVE1BUCBnZXRPckNyZWF0ZVNo
YXJlZEJpdG1hcChjb25zdCBJbnRTaXplJik7Ci0gICAgSEJJVE1BUCBnZXRPckNyZWF0ZURlZmF1
bHRJY29uQml0bWFwKGNvbnN0IEludFNpemUmKTsKLSAgICBIYXNoTWFwPEludFNpemUsIEhCSVRN
QVA+IG1fZGVmYXVsdEljb25NYXA7Ci0gICAgSGFzaE1hcDxJbnRTaXplLCBIQklUTUFQPiBtX3No
YXJlZEljb25NYXA7Ci0KLSAgICBMb2NrIG1fbm90aWZpY2F0aW9uTXV0ZXg7Ci0gICAgVmVjdG9y
PFN0cmluZz4gbV9ub3RpZmljYXRpb25RdWV1ZTsKLSAgICB2b2lkIHNjaGVkdWxlTm90aWZpY2F0
aW9uRGVsaXZlcnkoKTsKLSAgICBib29sIG1fZGVsaXZlcnlSZXF1ZXN0ZWQgeyBmYWxzZSB9Owot
Ci0gICAgc3RhdGljIHZvaWQgZGVsaXZlck5vdGlmaWNhdGlvbnModm9pZCopOwotfTsKLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3Rv
cnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcApp
bmRleCBkODcwOGE1NDZlNS4uYTYxZWRlN2VhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUg
IldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJXZWJIaXN0b3J5LmgiCiAjaW5j
bHVkZSAiV2ViSGlzdG9yeUl0ZW0uaCIKLSNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKICNp
bmNsdWRlICJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAj
aW5jbHVkZSAiV2ViS2l0TWVzc2FnZUxvb3AuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdERMTC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRE
TEwuY3BwCmluZGV4IDdjM2ZiYjI3M2Y2Li41ZGMyYzEyYmQzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRETEwuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiV2ViS2l0Q2xh
c3NGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ljb25EYXRhYmFz
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdy
b3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KQEAgLTE2Myw3ICsx
NjIsNiBAQCBTVERBUEkgTG9jYWxTZXJ2ZXJEaWREaWUoKQogCiB2b2lkIHNodXREb3duV2ViS2l0
KCkKIHsKLSAgICBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5jbG9zZSgpOwogICAgIFdlYktpdDo6
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjbG9zZUxvY2FsU3RvcmFnZSgpOwogI2lmIFVT
RShFR0wpCiAgICAgUGxhdGZvcm1EaXNwbGF5OjpzaHV0RG93bkVnbERpc3BsYXlzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRMb2dnaW5nLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRMb2dnaW5nLmgKaW5kZXggNTg5ZWViOTk4NzQuLmY2MmUw
ODg5YmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRMb2dnaW5n
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TG9nZ2luZy5oCkBAIC01MCw3
ICs1MCw2IEBACiAgICAgTShGb250U3Vic3RpdHV0aW9uKSBcCiAgICAgTShGb3JtRGVsZWdhdGUp
IFwKICAgICBNKEhpc3RvcnkpIFwKLSAgICBNKEljb25EYXRhYmFzZSkgXAogICAgIE0oTGl2ZUNv
bm5lY3QpIFwKICAgICBNKExvYWRpbmcpIFwKICAgICBNKFBhZ2VDYWNoZSkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCA0NDYzOThiNTlhNS4uZDA2NmQzYWExMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC01NCw3ICs1NCw2IEBACiAjaW5jbHVkZSAi
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgotI2luY2x1ZGUgIldl
Ykljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgogI2luY2x1ZGUgIldl
Ykluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdC5oIgpAQCAtNzc5LDcgKzc3OCw2
IEBAIEhSRVNVTFQgV2ViVmlldzo6Y2xvc2UoKQogCiAgICAgbV9tYWluRnJhbWUgPSBudWxscHRy
OwogCi0gICAgcmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGZhbHNlKTsKICAgICBJV2ViTm90
aWZpY2F0aW9uQ2VudGVyKiBub3RpZnlDZW50ZXIgPSBXZWJOb3RpZmljYXRpb25DZW50ZXI6OmRl
ZmF1bHRDZW50ZXJJbnRlcm5hbCgpOwogICAgIG5vdGlmeUNlbnRlci0+cmVtb3ZlT2JzZXJ2ZXIo
dGhpcywgV2ViUHJlZmVyZW5jZXM6OndlYlByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbigp
LCBzdGF0aWNfY2FzdDxJV2ViUHJlZmVyZW5jZXMqPihtX3ByZWZlcmVuY2VzLmdldCgpKSk7CiAK
QEAgLTMyMjMsNjcgKzMyMjEsMTcgQEAgdm9pZCBXZWJWaWV3OjpzZXRUb29sVGlwKGNvbnN0IFN0
cmluZyYgdG9vbFRpcCkKICAgICA6OlNlbmRNZXNzYWdlKG1fdG9vbFRpcEh3bmQsIFRUTV9BQ1RJ
VkFURSwgIW1fdG9vbFRpcC5pc0VtcHR5KCksIDApOwogfQogCi1IUkVTVUxUIFdlYlZpZXc6Om5v
dGlmeURpZEFkZEljb24oSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQorSFJFU1VMVCBX
ZWJWaWV3Ojpub3RpZnlEaWRBZGRJY29uKElXZWJOb3RpZmljYXRpb24qKQogewotICAgIENPTVB0
cjxJUHJvcGVydHlCYWc+IHByb3BlcnR5QmFnOwotICAgIEhSRVNVTFQgaHIgPSBub3RpZmljYXRp
b24tPnVzZXJJbmZvKCZwcm9wZXJ0eUJhZyk7Ci0gICAgaWYgKEZBSUxFRChocikpCi0gICAgICAg
IHJldHVybiBocjsKLSAgICBpZiAoIXByb3BlcnR5QmFnKQotICAgICAgICByZXR1cm4gRV9GQUlM
OwotCi0gICAgQ09NVmFyaWFudCBpY29uVXNlckluZm9VUkw7Ci0gICAgaHIgPSBwcm9wZXJ0eUJh
Zy0+UmVhZChXZWJJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZU5vdGlmaWNhdGlvblVzZXJJbmZv
VVJMS2V5KCksICZpY29uVXNlckluZm9VUkwsIG51bGxwdHIpOwotICAgIGlmIChGQUlMRUQoaHIp
KQotICAgICAgICByZXR1cm4gaHI7Ci0KLSAgICBpZiAoaWNvblVzZXJJbmZvVVJMLnZhcmlhbnRU
eXBlKCkgIT0gVlRfQlNUUikKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKLQotICAgIFN0cmluZyBt
YWluRnJhbWVVUkw7Ci0gICAgaWYgKG1fbWFpbkZyYW1lKQotICAgICAgICBtYWluRnJhbWVVUkwg
PSBtX21haW5GcmFtZS0+dXJsKCkuc3RyaW5nKCk7Ci0KLSAgICBpZiAoIW1haW5GcmFtZVVSTC5p
c0VtcHR5KCkgJiYgbWFpbkZyYW1lVVJMID09IHRvU3RyaW5nKFZfQlNUUigmaWNvblVzZXJJbmZv
VVJMKSkpCi0gICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZUljb25Gcm9tV2ViRnJhbWUobV9tYWlu
RnJhbWUpOwotCi0gICAgcmV0dXJuIGhyOworICAgIHJldHVybiBFX0ZBSUw7CiB9CiAKLXZvaWQg
V2ViVmlldzo6cmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wgbGlzdGVuKQordm9pZCBX
ZWJWaWV3OjpyZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCkKIHsKLSAgICBJV2ViTm90
aWZpY2F0aW9uQ2VudGVyKiBuYyA9IFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6ZGVmYXVsdENlbnRl
ckludGVybmFsKCk7Ci0gICAgaWYgKGxpc3RlbikKLSAgICAgICAgbmMtPmFkZE9ic2VydmVyKHRo
aXMsIFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlRGlkQWRkSWNvbk5vdGlmaWNhdGlvbigp
LCAwKTsKLSAgICBlbHNlCi0gICAgICAgIG5jLT5yZW1vdmVPYnNlcnZlcih0aGlzLCBXZWJJY29u
RGF0YWJhc2U6Omljb25EYXRhYmFzZURpZEFkZEljb25Ob3RpZmljYXRpb24oKSwgMCk7CiB9CiAK
LXZvaWQgV2ViVmlldzo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbkZyb21XZWJGcmFtZShXZWJGcmFt
ZSogZnJhbWUpCit2b2lkIFdlYlZpZXc6OmRpc3BhdGNoRGlkUmVjZWl2ZUljb25Gcm9tV2ViRnJh
bWUoV2ViRnJhbWUqKQogewotICAgIHJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbihmYWxzZSk7
Ci0KLSAgICBpZiAobV9mcmFtZUxvYWREZWxlZ2F0ZSkgewotICAgICAgICBTdHJpbmcgc3RyID0g
ZnJhbWUtPnVybCgpLnN0cmluZygpOwotCi0gICAgICAgIEludFNpemUgc3ooMTYsIDE2KTsKLQot
ICAgICAgICBCaXRtYXBJbmZvIGJtSW5mbyA9IEJpdG1hcEluZm86OmNyZWF0ZShzeik7Ci0KLSAg
ICAgICAgSEJJVE1BUCBoQml0bWFwID0gbnVsbHB0cjsKLQotICAgICAgICBJbWFnZSogaWNvbiA9
IGljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoc3RyLCBzeik7Ci0KLSAg
ICAgICAgaWYgKGljb24gJiYgaWNvbi0+d2lkdGgoKSkgewotICAgICAgICAgICAgSFduZERDIGRj
KDApOwotICAgICAgICAgICAgaEJpdG1hcCA9IENyZWF0ZURJQlNlY3Rpb24oZGMsICZibUluZm8s
IERJQl9SR0JfQ09MT1JTLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIGljb24tPmdldEhCSVRNQVBP
ZlNpemUoaEJpdG1hcCwgJnN6KTsKLSAgICAgICAgfQotCi0gICAgICAgIEhSRVNVTFQgaHIgPSBt
X2ZyYW1lTG9hZERlbGVnYXRlLT5kaWRSZWNlaXZlSWNvbih0aGlzLCBoQml0bWFwLCBmcmFtZSk7
Ci0gICAgICAgIGlmICgoaHIgPT0gRV9OT1RJTVBMKSAmJiBoQml0bWFwKQotICAgICAgICAgICAg
RGVsZXRlT2JqZWN0KGhCaXRtYXApOwotICAgIH0KIH0KIAogSFJFU1VMVCBXZWJWaWV3OjpzZXRB
Y2Nlc3NpYmlsaXR5RGVsZWdhdGUoX0luX29wdF8gSUFjY2Vzc2liaWxpdHlEZWxlZ2F0ZSogZCkK
QEAgLTUxMDUsOSArNTA1Myw2IEBAIEhSRVNVTFQgV2ViVmlldzo6b25Ob3RpZnkoX0luX29wdF8g
SVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogICAgIGlmIChGQUlMRUQoaHIpKQogICAg
ICAgICByZXR1cm4gaHI7CiAKLSAgICBpZiAoIXdjc2NtcChuYW1lLCBXZWJJY29uRGF0YWJhc2U6
Omljb25EYXRhYmFzZURpZEFkZEljb25Ob3RpZmljYXRpb24oKSkpCi0gICAgICAgIHJldHVybiBu
b3RpZnlEaWRBZGRJY29uKG5vdGlmaWNhdGlvbik7Ci0KICAgICBpZiAoIXdjc2NtcChuYW1lLCBX
ZWJQcmVmZXJlbmNlczo6d2ViUHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gbm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKG5vdGlmaWNhdGlvbik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315966</attachid>
            <date>2017-07-19 20:07:16 -0700</date>
            <delta_ts>2017-07-20 07:30:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174608-20170719200720.patch</filename>
            <type>text/plain</type>
            <size>38937</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggY2UyOTMwMzBlZjYzMmE0NDYyNmI0MzZmOGE4NTU1ZDIzNDg4ZjVmMS4uOTM2ZmM3MzE2M2M1
YTc2ODkxMDk1NGJhNTRiZjA0ZDU5ZmY1YzE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQwIEBACisyMDE3LTA3LTE3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgV2ViSWNvbkRhdGFiYXNlIGZyb20gV2ViS2l0TGVn
YWN5L3dpbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NDYwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEl0IGlzIHVudXNlZC4KKyAgICAgICAgCisgICAgICAgICogRm9yRWFjaENvQ2xhc3MuaDoKKwor
ICAgICAgICAqIEludGVyZmFjZXMvSVdlYkljb25EYXRhYmFzZS5pZGw6IFJlbW92ZWQuCisKKyAg
ICAgICAgKiBJbnRlcmZhY2VzL1dlYktpdC5pZGw6CisKKyAgICAgICAgKiBXZWJDb3JlU3RhdGlz
dGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6aWNvblBhZ2VVUkxNYXBwaW5n
Q291bnQpOgorICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6Omljb25SZXRhaW5lZFBhZ2VVUkxD
b3VudCk6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6aWNvblJlY29yZENvdW50KToKKyAg
ICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjppY29uc1dpdGhEYXRhQ291bnQpOgorCisgICAgICAg
ICogV2ViSWNvbkRhdGFiYXNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJY29uRGF0YWJh
c2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXRDbGFzc0ZhY3RvcnkuY3BwOgorCisgICAg
ICAgICogV2ViS2l0RExMLmNwcDoKKyAgICAgICAgKHNodXREb3duV2ViS2l0KToKKworICAgICAg
ICAqIFdlYktpdExvZ2dpbmcuaDoKKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAo
V2ViVmlldzo6Y2xvc2UpOgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5RGlkQWRkSWNvbik6Cisg
ICAgICAgIChXZWJWaWV3OjpyZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24pOgorICAgICAgICAo
V2ViVmlldzo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbkZyb21XZWJGcmFtZSk6CisgICAgICAgIChX
ZWJWaWV3Ojpvbk5vdGlmeSk6CisKIDIwMTctMDctMTQgIEJhc3VrZSBTdXp1a2kgIDxCYXN1a2Uu
U3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtDdXJsXSBEb24ndCBzdGFydCBkb3dubG9hZGlu
ZyBtb3JlIHRoYW4gb25jZSBmb3Igc2FtZSByZXF1ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYktpdExlZ2FjeS9QbGF0Zm9y
bVdpbi5jbWFrZQppbmRleCA4MzM2ZTM4NjQ5ZGY3YmZmMDBjZDRmNGQ3YmM5YWI4YjBhZjgyM2Zh
Li42OTNmYjgyMjQzY2RlYjM3MDU1ZGYyZDljMjNhNWRlMTAyMWVkNGE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTEwMSw3ICsxMDEsNiBAQCBsaXN0KEFQUEVORCBX
ZWJLaXRfSU5DTFVERVMKICAgICB3aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmgKICAgICB3aW4v
V2ViSGlzdG9yeS5oCiAgICAgd2luL1dlYkhpc3RvcnlJdGVtLmgKLSAgICB3aW4vV2ViSWNvbkRh
dGFiYXNlLmgKICAgICB3aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5oCiAgICAgd2luL1dlYktp
dENPTUFQSS5oCiAgICAgd2luL1dlYktpdENsYXNzRmFjdG9yeS5oCkBAIC0xNzMsNyArMTcyLDYg
QEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVNfQ2xhc3NlcwogICAgIHdpbi9XZWJIVE1MUmVw
cmVzZW50YXRpb24uY3BwCiAgICAgd2luL1dlYkhpc3RvcnkuY3BwCiAgICAgd2luL1dlYkhpc3Rv
cnlJdGVtLmNwcAotICAgIHdpbi9XZWJJY29uRGF0YWJhc2UuY3BwCiAgICAgd2luL1dlYkluc3Bl
Y3Rvci5jcHAKICAgICB3aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKICAgICB3aW4vV2Vi
S2l0Q09NQVBJLmNwcApAQCAtMzM3LDcgKzMzNSw2IEBAIHNldChXRUJLSVRfSURMX0RFUEVOREVO
Q0lFUwogICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJIaXN0b3J5SXRlbS5pZGwKICAgICB3aW4vSW50
ZXJmYWNlcy9JV2ViSGlzdG9yeUl0ZW1Qcml2YXRlLmlkbAogICAgIHdpbi9JbnRlcmZhY2VzL0lX
ZWJIaXN0b3J5UHJpdmF0ZS5pZGwKLSAgICB3aW4vSW50ZXJmYWNlcy9JV2ViSWNvbkRhdGFiYXNl
LmlkbAogICAgIHdpbi9JbnRlcmZhY2VzL0lXZWJJbnNwZWN0b3IuaWRsCiAgICAgd2luL0ludGVy
ZmFjZXMvSVdlYkluc3BlY3RvclByaXZhdGUuaWRsCiAgICAgd2luL0ludGVyZmFjZXMvSVdlYkph
dmFTY3JpcHRDb2xsZWN0b3IuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9Gb3JFYWNoQ29DbGFzcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRm9yRWFjaENvQ2xh
c3MuaAppbmRleCAzZjk0OGQ4NGQ4YzAwYjlmYjlhOThhYjFlZjA0OGJlMmUyNjg0NjczLi44ODU5
OWE1MGU3YWU5MzRiNTAzZTdlOTAxNTE4MjExMDJmNDVlNWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9Gb3JFYWNoQ29DbGFzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0ZvckVhY2hDb0NsYXNzLmgKQEAgLTQyLDcgKzQyLDYgQEAKICAgICBtYWNybyhXZWJF
cnJvcikgXAogICAgIG1hY3JvKFdlYkhpc3RvcnkpIFwKICAgICBtYWNybyhXZWJIaXN0b3J5SXRl
bSkgXAotICAgIG1hY3JvKFdlYkljb25EYXRhYmFzZSkgXAogICAgIG1hY3JvKFdlYkphdmFTY3Jp
cHRDb2xsZWN0b3IpIFwKICAgICBtYWNybyhXZWJLaXRTdGF0aXN0aWNzKSBcCiAgICAgbWFjcm8o
V2ViTXV0YWJsZVVSTFJlcXVlc3QpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0ludGVyZmFjZXMvSVdlYkljb25EYXRhYmFzZS5pZGwgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9JbnRlcmZhY2VzL0lXZWJJY29uRGF0YWJhc2UuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1ZmQ2MDlkNTBhOTVjZmRlOTkxZmUzZjU3NjM0NjcxZmMwNmJiNWVhLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0ludGVyZmFjZXMvSVdlYkljb25EYXRhYmFzZS5pZGwKKysrIC9kZXYvbnVsbApA
QCAtMSwxNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi1jcHBfcXVvdGUoIiNkZWZpbmUgV2ViSWNvbkRhdGFi
YXNlRGlkQWRkSWNvbk5vdGlmaWNhdGlvbiBURVhUKFwiV2ViSWNvbkRhdGFiYXNlRGlkQWRkSWNv
bk5vdGlmaWNhdGlvblwiKSIpCi1jcHBfcXVvdGUoIiNkZWZpbmUgV2ViSWNvbk5vdGlmaWNhdGlv
blVzZXJJbmZvVVJMS2V5IFRFWFQoXCJXZWJJY29uTm90aWZpY2F0aW9uVXNlckluZm9VUkxLZXlc
IikiKQotY3BwX3F1b3RlKCIjZGVmaW5lIFdlYkljb25EYXRhYmFzZURpZFJlbW92ZUFsbEljb25z
Tm90aWZpY2F0aW9uIFRFWFQoXCJXZWJJY29uRGF0YWJhc2VEaWRSZW1vdmVBbGxJY29uc05vdGlm
aWNhdGlvblwiKSIpCi0KLSNpZm5kZWYgRE9fTk9fSU1QT1JUUwotaW1wb3J0ICJvYWlkbC5pZGwi
OwotaW1wb3J0ICJvY2lkbC5pZGwiOwotI2VuZGlmCi0KLS8qIQotICAgIEBjbGFzcyBXZWJJY29u
RGF0YWJhc2UKLSAgICBAZGlzY3Vzc2lvbiBGZWF0dXJlczoKLSAgICAgICAgLSBtZW1vcnkgY2Fj
aGUgaWNvbnMgYXQgZGlmZmVyZW50IHNpemVzCi0gICAgICAgIC0gZGlzayBzdG9yYWdlCi0gICAg
ICAgIC0gaWNvbiB1cGRhdGUgbm90aWZpY2F0aW9uCi0gICAgICAgIAotICAgICAgICBVc2VzOgot
ICAgICAgICAtIFdlYkljb25Mb2FkZXIgdG8gY2FjaGUgaWNvbiBpbWFnZXMKLSAgICAgICAgLSBV
SSBlbGVtZW50cyB0byByZXRyaWV2ZSBpY29ucyB0aGF0IHJlcHJlc2VudCBzaXRlIFVSTHMuCi0g
ICAgICAgIC0gU2F2ZSBpY29ucyB0byBkaXNrIGZvciBsYXRlciB1c2UuCi0gCi0gICAgRXZlcnkg
aWNvbiBpbiB0aGUgZGF0YWJhc2UgaGFzIGEgcmV0YWluIGNvdW50LiAgSWYgYW4gaWNvbiBoYXMg
YSByZXRhaW4gY291bnQgZ3JlYXRlciB0aGFuIDAsIGl0IHdpbGwgYmUgd3JpdHRlbiB0byBkaXNr
IGZvciBsYXRlciB1c2UuIElmIGFuIGljb24ncyByZXRhaW4gY291bnQgZXF1YWxzIHplcm8gaXQg
d2lsbCBiZSByZW1vdmVkIGZyb20gZGlzay4gIFRoZSByZXRhaW4gY291bnQgaXMgbm90IHBlcnNp
c3RlbnQgYWNyb3NzIGxhdW5jaGVzLiBJZiB0aGUgV2ViS2l0IGNsaWVudCB3aXNoZXMgdG8gcmV0
YWluIGFuIGljb24gaXQgc2hvdWxkIHJldGFpbiB0aGUgaWNvbiBvbmNlIGZvciBldmVyeSBsYXVu
Y2guICBUaGlzIGlzIGJlc3QgZG9uZSBhdCBpbml0aWFsaXphdGlvbiB0aW1lIGJlZm9yZSB0aGUg
ZGF0YWJhc2UgYmVnaW5zIHJlbW92aW5nIGljb25zLiAgVG8gbWFrZSBzdXJlIHRoYXQgdGhlIGRh
dGFiYXNlIGRvZXMgbm90IHJlbW92ZSB1bnJldGFpbmVkIGljb25zIHByZW1hdHVyZWx5LCBjYWxs
IGRlbGF5RGF0YWJhc2VDbGVhbnVwIHVudGlsIGFsbCBkZXNpcmVkIGljb25zIGFyZSByZXRhaW5l
ZC4gIE9uY2UgYWxsIGFyZSByZXRhaW5lZCwgY2FsbCBhbGxvd0RhdGFiYXNlQ2xlYW51cC4KLSAg
ICAKLSAgICBOb3RlIHRoYXQgYW4gaWNvbiBjYW4gYmUgcmV0YWluZWQgYWZ0ZXIgdGhlIGRhdGFi
YXNlIGNsZWFuLXVwIGhhcyBiZWd1bi4gVGhpcyBqdXN0IGhhcyB0byBiZSBkb25lIGJlZm9yZSB0
aGUgaWNvbiBpcyByZW1vdmVkLiBJY29ucyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSB3
aGVuZXZlciBuZXcgaWNvbnMgYXJlIGFkZGVkIHRvIGl0LgotICAgIAotICAgIFJldGVudGlvbiBt
ZXRob2RzIGNhbiBiZSBjYWxsZWQgZm9yIGljb25zIHRoYXQgYXJlIG5vdCB5ZXQgaW4gdGhlIGRh
dGFiYXNlLgotCi0gICAgQGludGVyZmFjZSBXZWJJY29uRGF0YWJhc2UgOiBOU09iamVjdAotKi8K
LVsKLSAgICBvYmplY3QsCi0gICAgb2xlYXV0b21hdGlvbiwKLSAgICBoaWRkZW4sCi0gICAgdXVp
ZChFOTNGMjYxNi0yNTYwLTQ3ZDktQkQ0RC02RTJGMUUxRDMxNzQpLAotICAgIHBvaW50ZXJfZGVm
YXVsdCh1bmlxdWUpCi1dCi1pbnRlcmZhY2UgSVdlYkljb25EYXRhYmFzZSA6IElVbmtub3duCi17
Ci0gICAgLyohCi0gICAgICAgIEBtZXRob2Qgc2hhcmVkSWNvbkRhdGFiYXNlCi0gICAgICAgIEBh
YnN0cmFjdCBSZXR1cm5zIGEgc2hhcmVkIGluc3RhbmNlIG9mIHRoZSBpY29uIGRhdGFiYXNlCi0g
ICAgICAgICsgKFdlYkljb25EYXRhYmFzZSAqKXNoYXJlZEljb25EYXRhYmFzZTsKLSAgICAqLwot
ICAgIEhSRVNVTFQgc2hhcmVkSWNvbkRhdGFiYXNlKFtvdXQsIHJldHZhbF0gSVdlYkljb25EYXRh
YmFzZSoqIHJlc3VsdCk7Ci0KLSAgICAvKiEKLSAgICAgICAgQG1ldGhvZCBpY29uRm9yVVJMOndp
dGhTaXplOgotICAgICAgICBAZGlzY3Vzc2lvbiBDYWxscyBpY29uRm9yVVJMOndpdGhTaXplOmNh
Y2hlOiB3aXRoIFlFUyBmb3IgY2FjaGUuCi0gICAgICAgIEBwYXJhbSBVUkwKLSAgICAgICAgQHBh
cmFtIHNpemUKLSAgICAgICAgLSAoTlNJbWFnZSAqKWljb25Gb3JVUkw6KE5TU3RyaW5nICopVVJM
IHdpdGhTaXplOihOU1NpemUpc2l6ZTsKLSAgICAqLwotICAgIC8qIQotICAgICAgICBAbWV0aG9k
IGljb25Gb3JVUkw6d2l0aFNpemU6Y2FjaGU6Ci0gICAgICAgIEBkaXNjdXNzaW9uIFJldHVybnMg
YW4gaWNvbiBmb3IgYSB3ZWIgc2l0ZSBVUkwgZnJvbSBtZW1vcnkgb3IgZGlzay4gbmlsIGlmIG5v
bmUgaXMgZm91bmQuCi0gICAgICAgIFVzdWFsbHkgY2FsbGVkIGJ5IGEgVUkgZWxlbWVudCB0byBk
ZXRlcm1pbmUgaWYgYSBzaXRlIFVSTCBoYXMgYW4gYXNzb2NpYXRlZCBpY29uLgotICAgICAgICBP
ZnRlbiBjYWxsZWQgYnkgdGhlIG9ic2VydmVyIG9mIFdlYkljb25DaGFuZ2VkTm90aWZpY2F0aW9u
IGFmdGVyIHRoZSBub3RpZmljYXRpb24gaXMgc2VudC4KLSAgICAgICAgQHBhcmFtIFVSTAotICAg
ICAgICBAcGFyYW0gc2l6ZQotICAgICAgICBAcGFyYW0gY2FjaGUgSWYgeWVzLCBjYWNoZXMgdGhl
IHJldHVybmVkIGltYWdlIGluIG1lbW9yeSBpZiBub3QgYWxyZWFkeSBjYWNoZWQKLSAgICAgICAg
LSAoTlNJbWFnZSAqKWljb25Gb3JVUkw6KE5TU3RyaW5nICopVVJMIHdpdGhTaXplOihOU1NpemUp
c2l6ZSBjYWNoZTooQk9PTCljYWNoZTsKLSAgICAqLwotICAgIC8qIQotICAgICAgICBAbWV0aG9k
IGljb25VUkxGb3JVUkw6d2l0aFNpemU6Y2FjaGU6Ci0gICAgICAgIEBkaXNjdXNzaW9uIFJldHVy
bnMgYW4gaWNvbiBVUkwgZm9yIGEgd2ViIHNpdGUgVVJMIGZyb20gbWVtb3J5IG9yIGRpc2suIG5p
bCBpZiBub25lIGlzIGZvdW5kLgotICAgICAgICBAcGFyYW0gVVJMCi0gICAgICAgIC0gKE5TU3Ry
aW5nICopaWNvblVSTEZvclVSTDooTlNTdHJpbmcgKilVUkw7Ci0gICAgKi8KLSAgICBIUkVTVUxU
IGljb25Gb3JVUkwoW2luXSBCU1RSIHVybCwgW2luXSBMUFNJWkUgc2l6ZSwgW2luXSBCT09MIGNh
Y2hlLCBbb3V0LCByZXR2YWxdIEhCSVRNQVAqIGhCaXRtYXApOwotCi0gICAgLyohCi0gICAgICAg
IEBtZXRob2QgZGVmYXVsdEljb25XaXRoU2l6ZToKLSAgICAgICAgQHBhcmFtIHNpemUKLSAgICAg
ICAgLSAoTlNJbWFnZSAqKWRlZmF1bHRJY29uV2l0aFNpemU6KE5TU2l6ZSlzaXplOwotICAgICov
Ci0gICAgSFJFU1VMVCBkZWZhdWx0SWNvbldpdGhTaXplKFtpbl0gTFBTSVpFIHNpemUsIFtvdXQs
IHJldHZhbF0gSEJJVE1BUCogaEJpdG1hcCk7Ci0KLSAgICAvKiEKLSAgICAgICAgQG1ldGhvZCBy
ZXRhaW5JY29uRm9yVVJMOgotICAgICAgICBAYWJzdHJhY3QgSW5jcmVtZW50cyB0aGUgcmV0YWlu
IGNvdW50IG9mIHRoZSBpY29uLgotICAgICAgICBAcGFyYW0gVVJMCi0gICAgICAgIC0gKHZvaWQp
cmV0YWluSWNvbkZvclVSTDooTlNTdHJpbmcgKilVUkw7Ci0gICAgKi8KLSAgICBIUkVTVUxUIHJl
dGFpbkljb25Gb3JVUkwoW2luXSBCU1RSIHVybCk7Ci0KLSAgICAvKiEKLSAgICAgICAgQG1ldGhv
ZCByZWxlYXNlSWNvbkZvclVSTDoKLSAgICAgICAgQGFic3RyYWN0IERlY3JlbWVudHMgdGhlIHJl
dGFpbiBjb3VudCBvZiB0aGUgaWNvbi4KLSAgICAgICAgQHBhcmFtIFVSTAotICAgICAgICAtICh2
b2lkKXJlbGVhc2VJY29uRm9yVVJMOihOU1N0cmluZyAqKVVSTDsKLSAgICAqLwotICAgIEhSRVNV
TFQgcmVsZWFzZUljb25Gb3JVUkwoW2luXSBCU1RSIHVybCk7Ci0KLSAgICAvKiEKLSAgICAgICAg
QG1ldGhvZCByZW1vdmVBbGxJY29uczoKLSAgICAgICAgQGFic3RyYWN0IEVtdHBpZXMgdGhlIElj
b24gRGF0YWJhc2UKLSAgICAgICAgLSAodm9pZClyZW1vdmVBbGxJY29uczsKLSAgICAqLwotICAg
IEhSRVNVTFQgcmVtb3ZlQWxsSWNvbnMoKTsKLQotICAgIC8qIQotICAgICAgICBAbWV0aG9kIGRl
bGF5RGF0YWJhc2VDbGVhbnVwOgotICAgICAgICBAZGlzY3Vzc2lvbiBPbmx5IGVmZmVjdGl2ZSBp
ZiBjYWxsZWQgYmVmb3JlIHRoZSBkYXRhYmFzZSBiZWdpbnMgcmVtb3ZpbmcgaWNvbnMuCi0gICAg
ICAgIGRlbGF5RGF0YWJhc2VDbGVhblVwIGluY3JlbWVudHMgYW4gaW50ZXJuYWwgY291bnRlciB0
aGF0IHdoZW4gMCBiZWdpbnMgdGhlIGRhdGFiYXNlIGNsZWFuLXVwLgotICAgICAgICBUaGUgY291
bnRlciBlcXVhbHMgMCBhdCBpbml0aWFsaXphdGlvbi4KLSAgICAgICAgLSAodm9pZClkZWxheURh
dGFiYXNlQ2xlYW51cDsKLSAgICAqLwotICAgIEhSRVNVTFQgZGVsYXlEYXRhYmFzZUNsZWFudXAo
KTsKLQotICAgIC8qIQotICAgICAgICBAbWV0aG9kIGFsbG93RGF0YWJhc2VDbGVhbnVwOgotICAg
ICAgICBAZGlzY3Vzc2lvbiBJbmZvcm1zIHRoZSBkYXRhYmFzZSB0aGF0IGl0IG5vdyBjYW4gYmVn
aW4gcmVtb3ZpbmcgaWNvbnMuCi0gICAgICAgIGFsbG93RGF0YWJhc2VDbGVhbnVwIGRlY3JlbWVu
dHMgYW4gaW50ZXJuYWwgY291bnRlciB0aGF0IHdoZW4gMCBiZWdpbnMgdGhlIGRhdGFiYXNlIGNs
ZWFuLXVwLgotICAgICAgICBUaGUgY291bnRlciBlcXVhbHMgMCBhdCBpbml0aWFsaXphdGlvbi4K
LSAgICAgICAgLSAodm9pZClhbGxvd0RhdGFiYXNlQ2xlYW51cDsKLSAgICAqLwotICAgIEhSRVNV
TFQgYWxsb3dEYXRhYmFzZUNsZWFudXAoKTsKLQotICAgIC8qIQotICAgICAgICBAbWV0aG9kIGlj
b25VUkxGb3JVUkw6d2l0aFNpemU6Y2FjaGU6Ci0gICAgICAgIEBkaXNjdXNzaW9uIFJldHVybnMg
YW4gaWNvbiBVUkwgZm9yIGEgd2ViIHNpdGUgVVJMIGZyb20gbWVtb3J5IG9yIGRpc2suIG5pbCBp
ZiBub25lIGlzIGZvdW5kLgotICAgICAgICBAcGFyYW0gVVJMCi0gICAgICAgIC0gKE5TU3RyaW5n
ICopaWNvblVSTEZvclVSTDooTlNTdHJpbmcgKilVUkw7Ci0gICAgKi8KLSAgICBIUkVTVUxUIGlj
b25VUkxGb3JVUkwoW2luXSBCU1RSIHVybCwgW291dCwgcmV0dmFsXSBCU1RSKiBpY29uVVJMKTsK
LQotICAgIC8qIQotICAgICAgICBAbWV0aG9kIGlzRW5hYmxlZAotICAgICAgICBAZGlzY3Vzc2lv
biBSZXR1cm5zIHRydWUgaWYgdGhlIGljb24gZGF0YWJhc2UgaXMgY3VycmVudGx5IGVuYWJsZWQs
IG9yIGZhbHNlIGlmIGl0Ci0gICAgICAgIGlzIGRpc2FibGVkLgotICAgICAgICAtIChCT09MKWlz
RW5hYmxlZDsKLSAgICAqLwotICAgIEhSRVNVTFQgaXNFbmFibGVkKFtvdXQsIHJldHZhbF0gQk9P
TCogcmVzdWx0KTsKLQotICAgIC8qIQotICAgICAgICBAbWV0aG9kIHNldEVuYWJsZWQ6Ci0gICAg
ICAgIEBkaXNjdXNzaW9uIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIGljb24gZGF0YWJhc2UgYmFz
ZWQgb24gdGhlIGZsYWcgcGFzc2VkIGluLgotICAgICAgICBAcGFyYW0gZmxhZyBQYXNzIHRydWUg
dG8gZW5hYmxlIHRoZSBpY29uIGRhdGFiYXNlLCBvciBmYWxzZSB0byBkaXNhYmxlIGl0LgotICAg
ICAgICAtICh2b2lkKXNldEVuYWJsZWQ6KEJPT0wpZmxhZzsKLSAgICAqLwotICAgIEhSRVNVTFQg
c2V0RW5hYmxlZChbaW5dIEJPT0wgZmxhZyk7Ci0gICAgCi0gICAgLyohCi0gICAgICAgIEBtZXRo
b2QgaGFzSWNvbkZvclVSTDoKLSAgICAgICAgQGRpc2N1c3Npb24gUmV0dXJucyB3aGV0aGVyIG9y
IG5vdCB0aGUgaWNvbiBkYXRhYmFzZSBoYXMgYW4gaWNvbiBmb3IgdGhpcyBVUkwuCi0gICAgICAg
IEBwYXJtIHVybCBUaGUgVVJMIHRvIHRlc3QgZm9yLgotICAgICovCi0gICAgSFJFU1VMVCBoYXNJ
Y29uRm9yVVJMKFtpbl0gQlNUUiB1cmwsIFtvdXQsIHJldHZhbF0gQk9PTCogcmVzdWx0KTsKLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0ludGVyZmFjZXMvV2ViS2l0Lmlk
bCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAppbmRleCBi
OGY0NDIxYmU3ZjZjZWNjMDUzOTBhOWRkZGU2MzE0NGMxZmVkNTc4Li40YmQ4MzRmNDBhNWZlYTNk
OGZlNDY0OTI5NTc3ODc0MzU5YzQ5YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
SW50ZXJmYWNlcy9XZWJLaXQuaWRsCkBAIC0xMTEsNyArMTExLDYgQEAgaW1wb3J0ICJBY2Nlc3Np
YmxlQXBwbGljYXRpb24uaWRsIjsKICNpbmNsdWRlICJJV2ViSGlzdG9yeUl0ZW0uaWRsIgogI2lu
Y2x1ZGUgIklXZWJIaXN0b3J5SXRlbVByaXZhdGUuaWRsIgogI2luY2x1ZGUgIklXZWJIaXN0b3J5
UHJpdmF0ZS5pZGwiCi0jaW5jbHVkZSAiSVdlYkljb25EYXRhYmFzZS5pZGwiCiAjaW5jbHVkZSAi
SVdlYkluc3BlY3Rvci5pZGwiCiAjaW5jbHVkZSAiSVdlYkluc3BlY3RvclByaXZhdGUuaWRsIgog
I2luY2x1ZGUgIklXZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmlkbCIKQEAgLTE3NiwxMSArMTc1LDYg
QEAgbGlicmFyeSBXZWJLaXQKICAgICAgICAgaW50ZXJmYWNlIElXZWJWaWV3UHJpdmF0ZTI7CiAg
ICAgfQogCi0gICAgW3V1aWQoNjY4MjdlYzEtM2FlZi00MjQxLWJhYzUtZjc3NmI0NGYwMzBmKV0K
LSAgICBjb2NsYXNzIFdlYkljb25EYXRhYmFzZSB7Ci0gICAgICAgIFtkZWZhdWx0XSBpbnRlcmZh
Y2UgSVdlYkljb25EYXRhYmFzZTsKLSAgICB9Ci0KICAgICBbdXVpZChhMDYyZWNjMy1iYjFiLTQ2
OTQtYTU2OS1mNTllMGFkNmJlMGMpXQogICAgIGNvY2xhc3MgV2ViTXV0YWJsZVVSTFJlcXVlc3Qg
ewogICAgICAgICBbZGVmYXVsdF0gaW50ZXJmYWNlIElXZWJNdXRhYmxlVVJMUmVxdWVzdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAppbmRleCBlZGI0
NmIyNjBjNWNkMDJmYzYxY2IyZmIwNDU2NWViZWYyZTJiNWIyLi45MTIwYWNjOGUwYjlmOTVlNTY3
OTYxNGMwOTg4MjExZjJlODUzNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN0YXRpc3RpY3MuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9G
b250Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dDQ29udHJvbGxlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvR2x5cGhQYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JY29uRGF0YWJhc2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NV2luZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VDb25zb2xlQ2xpZW50Lmg+CkBAIC0xNzks
NyArMTc4LDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6aWNvblBhZ2VVUkxNYXBwaW5n
Q291bnQoX091dF8gVUlOVCogY291bnQpCiB7CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKLSAgICAqY291bnQgPSAoVUlOVCkgaWNvbkRhdGFiYXNlKCkucGFnZVVS
TE1hcHBpbmdDb3VudCgpOworICAgICpjb3VudCA9IChVSU5UKTA7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKQEAgLTE4Nyw3ICsxODYsNyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjppY29u
UmV0YWluZWRQYWdlVVJMQ291bnQoX091dF8gVUlOVCAqY291bnQpCiB7CiAgICAgaWYgKCFjb3Vu
dCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAgICAqY291bnQgPSAoVUlOVCkgaWNvbkRh
dGFiYXNlKCkucmV0YWluZWRQYWdlVVJMQ291bnQoKTsKKyAgICAqY291bnQgPSAoVUlOVCkwOwog
ICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xOTUsNyArMTk0LDcgQEAgSFJFU1VMVCBXZWJDb3Jl
U3RhdGlzdGljczo6aWNvblJlY29yZENvdW50KF9PdXRfIFVJTlQgKmNvdW50KQogewogICAgIGlm
ICghY291bnQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7Ci0gICAgKmNvdW50ID0gKFVJTlQp
IGljb25EYXRhYmFzZSgpLmljb25SZWNvcmRDb3VudCgpOworICAgICpjb3VudCA9IChVSU5UKTA7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTIwMyw3ICsyMDIsNyBAQCBIUkVTVUxUIFdlYkNv
cmVTdGF0aXN0aWNzOjppY29uc1dpdGhEYXRhQ291bnQoX091dF8gVUlOVCAqY291bnQpCiB7CiAg
ICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAgICAqY291bnQgPSAo
VUlOVCkgaWNvbkRhdGFiYXNlKCkuaWNvblJlY29yZENvdW50V2l0aERhdGEoKTsKKyAgICAqY291
bnQgPSAoVUlOVCkwOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJJY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViSWNvbkRhdGFiYXNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OGQ4NjU5ZTJhYThiYTk5MjdhYmYxNmIzN2M4YjhjN2Y2ZDVkZTFlYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJJY29uRGF0YWJhc2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDE0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwOSwgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgIldlYktpdERMTC5oIgotI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZS5oIgotCi0j
aW5jbHVkZSAiQ09NUHJvcGVydHlCYWcuaCIKLSNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25DZW50
ZXIuaCIKLSNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgotI2luY2x1ZGUgInNobG9iai5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW5m
by5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9IV25kREMuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0ljb25EYXRhYmFzZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2UuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
dXNpbmcgbmFtZXNwYWNlIFdURjsKLQotLy8gV2ViSWNvbkRhdGFiYXNlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotV2Vi
SWNvbkRhdGFiYXNlKiBXZWJJY29uRGF0YWJhc2U6Om1fc2hhcmVkV2ViSWNvbkRhdGFiYXNlID0g
MDsKLQotV2ViSWNvbkRhdGFiYXNlOjpXZWJJY29uRGF0YWJhc2UoKQotewotICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJY29uRGF0YWJhc2UiKTsKLX0K
LQotV2ViSWNvbkRhdGFiYXNlOjp+V2ViSWNvbkRhdGFiYXNlKCkKLXsKLSAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSWNvbkRhdGFiYXNlIik7Ci19
Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjppbml0KCkKLXsKLSAgICBXZWJQcmVmZXJlbmNlcyog
c3RhbmRhcmRQcmVmcyA9IFdlYlByZWZlcmVuY2VzOjpzaGFyZWRTdGFuZGFyZFByZWZlcmVuY2Vz
KCk7Ci0gICAgQk9PTCBlbmFibGVkID0gRkFMU0U7Ci0gICAgaWYgKEZBSUxFRChzdGFuZGFyZFBy
ZWZzLT5pY29uRGF0YWJhc2VFbmFibGVkKCZlbmFibGVkKSkpIHsKLSAgICAgICAgZW5hYmxlZCA9
IEZBTFNFOwotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBnZXQgaWNvbiBkYXRhYmFzZSBl
bmFibGVkIHByZWZlcmVuY2UiKTsKLSAgICB9Ci0gICAgaWNvbkRhdGFiYXNlKCkuc2V0RW5hYmxl
ZCghIWVuYWJsZWQpOwotICAgIGlmICghKCEhZW5hYmxlZCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHN0YXJ0VXBJY29uRGF0YWJhc2UoKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OnN0
YXJ0VXBJY29uRGF0YWJhc2UoKQotewotICAgIFdlYlByZWZlcmVuY2VzKiBzdGFuZGFyZFByZWZz
ID0gV2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKLQotICAgIGlj
b25EYXRhYmFzZSgpLnNldENsaWVudCh0aGlzKTsKLQotICAgIEJTdHJpbmcgcHJlZkRhdGFiYXNl
UGF0aDsKLSAgICBpZiAoRkFJTEVEKHN0YW5kYXJkUHJlZnMtPmljb25EYXRhYmFzZUxvY2F0aW9u
KCZwcmVmRGF0YWJhc2VQYXRoKSkpCi0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGdldCBp
Y29uIGRhdGFiYXNlIGxvY2F0aW9uIHByZWZlcmVuY2UiKTsKLQotICAgIFN0cmluZyBkYXRhYmFz
ZVBhdGgocHJlZkRhdGFiYXNlUGF0aCwgU3lzU3RyaW5nTGVuKHByZWZEYXRhYmFzZVBhdGgpKTsK
LQotICAgIGlmIChkYXRhYmFzZVBhdGguaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRhdGFiYXNlUGF0
aCA9IGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwotICAgICAgICBpZiAoZGF0
YWJhc2VQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNv
bnN0cnVjdCBkZWZhdWx0IGljb24gZGF0YWJhc2UgcGF0aCIpOwotICAgIH0KLQotICAgIGlmICgh
aWNvbkRhdGFiYXNlKCkub3BlbihkYXRhYmFzZVBhdGgsIFdlYkNvcmU6Okljb25EYXRhYmFzZTo6
ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoKSkpCi0gICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBvcGVuIGljb24gZGF0YWJhc2UgcGF0aCIpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFz
ZTo6c2h1dERvd25JY29uRGF0YWJhc2UoKQotewotfQotCi1XZWJJY29uRGF0YWJhc2UqIFdlYklj
b25EYXRhYmFzZTo6Y3JlYXRlSW5zdGFuY2UoKQotewotICAgIFdlYkljb25EYXRhYmFzZSogaW5z
dGFuY2UgPSBuZXcgV2ViSWNvbkRhdGFiYXNlKCk7Ci0gICAgaW5zdGFuY2UtPkFkZFJlZigpOwot
ICAgIHJldHVybiBpbnN0YW5jZTsKLX0KLQotV2ViSWNvbkRhdGFiYXNlKiBXZWJJY29uRGF0YWJh
c2U6OnNoYXJlZFdlYkljb25EYXRhYmFzZSgpCi17Ci0gICAgaWYgKG1fc2hhcmVkV2ViSWNvbkRh
dGFiYXNlKSB7Ci0gICAgICAgIG1fc2hhcmVkV2ViSWNvbkRhdGFiYXNlLT5BZGRSZWYoKTsKLSAg
ICAgICAgcmV0dXJuIG1fc2hhcmVkV2ViSWNvbkRhdGFiYXNlOwotICAgIH0KLSAgICBtX3NoYXJl
ZFdlYkljb25EYXRhYmFzZSA9IGNyZWF0ZUluc3RhbmNlKCk7Ci0gICAgbV9zaGFyZWRXZWJJY29u
RGF0YWJhc2UtPmluaXQoKTsKLSAgICByZXR1cm4gbV9zaGFyZWRXZWJJY29uRGF0YWJhc2U7Ci19
Ci0KLS8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6OlF1
ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2Jq
ZWN0KQotewotICAgIGlmICghcHB2T2JqZWN0KQotICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwot
ICAgICpwcHZPYmplY3QgPSBudWxscHRyOwotICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURf
SVVua25vd24pKQotICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYkljb25EYXRh
YmFzZSo+KHRoaXMpOwotICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JV2ViSWNv
bkRhdGFiYXNlKSkKLSAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElXZWJJY29uRGF0
YWJhc2UqPih0aGlzKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBFX05PSU5URVJGQUNFOwot
Ci0gICAgQWRkUmVmKCk7Ci0gICAgcmV0dXJuIFNfT0s7Ci19Ci0KLVVMT05HIFdlYkljb25EYXRh
YmFzZTo6QWRkUmVmKCkKLXsKLSAgICByZXR1cm4gKyttX3JlZkNvdW50OwotfQotCi1VTE9ORyBX
ZWJJY29uRGF0YWJhc2U6OlJlbGVhc2UoKQotewotICAgIFVMT05HIG5ld1JlZiA9IC0tbV9yZWZD
b3VudDsKLSAgICBpZiAoIW5ld1JlZikKLSAgICAgICAgZGVsZXRlKHRoaXMpOwotCi0gICAgcmV0
dXJuIG5ld1JlZjsKLX0KLQotLy8gSVdlYkljb25EYXRhYmFzZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1IUkVT
VUxUIFdlYkljb25EYXRhYmFzZTo6c2hhcmVkSWNvbkRhdGFiYXNlKF9DT01fT3V0cHRyX29wdF8g
SVdlYkljb25EYXRhYmFzZSoqIHJlc3VsdCkKLXsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKLSAgICAqcmVzdWx0ID0gc2hhcmVkV2ViSWNvbkRhdGFiYXNlKCk7
Ci0gICAgcmV0dXJuIFNfT0s7Ci19Ci0KLUhSRVNVTFQgV2ViSWNvbkRhdGFiYXNlOjppY29uRm9y
VVJMKF9Jbl8gQlNUUiB1cmwsIF9Jbl8gTFBTSVpFIHNpemUsIEJPT0wgLypjYWNoZSovLCBfX2Rl
cmVmX29wdF9vdXQgSEJJVE1BUCogYml0bWFwKQotewotICAgIGlmICghc2l6ZSB8fCAhYml0bWFw
KQotICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotCi0gICAgSW50U2l6ZSBpbnRTaXplKCpzaXpl
KTsKLQotICAgIEltYWdlKiBpY29uID0gbnVsbHB0cjsKLSAgICBpZiAodXJsKQotICAgICAgICBp
Y29uID0gaWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChTdHJpbmcodXJs
LCBTeXNTdHJpbmdMZW4odXJsKSksIGludFNpemUpOwotCi0gICAgLy8gTWFrZSBzdXJlIHdlIGNo
ZWNrIGZvciB0aGUgY2FzZSBvZiBhbiAiZW1wdHkgaW1hZ2UiCi0gICAgaWYgKGljb24gJiYgaWNv
bi0+d2lkdGgoKSkgewotICAgICAgICAqYml0bWFwID0gZ2V0T3JDcmVhdGVTaGFyZWRCaXRtYXAo
aW50U2l6ZSk7Ci0gICAgICAgIGlmICghaWNvbi0+Z2V0SEJJVE1BUE9mU2l6ZSgqYml0bWFwLCAm
aW50U2l6ZSkpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRyYXcgSW1hZ2Ug
dG8gSEJJVE1BUCIpOwotICAgICAgICAgICAgKmJpdG1hcCA9IDA7Ci0gICAgICAgICAgICByZXR1
cm4gRV9GQUlMOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBTX09LOwotICAgIH0KLQotICAg
IHJldHVybiBkZWZhdWx0SWNvbldpdGhTaXplKHNpemUsIGJpdG1hcCk7Ci19Ci0KLUhSRVNVTFQg
V2ViSWNvbkRhdGFiYXNlOjpkZWZhdWx0SWNvbldpdGhTaXplKF9Jbl8gTFBTSVpFIHNpemUsIF9f
ZGVyZWZfb3B0X291dCBIQklUTUFQKiByZXN1bHQpCi17Ci0gICAgaWYgKCFzaXplIHx8ICFyZXN1
bHQpCi0gICAgICAgIHJldHVybiBFX1BPSU5URVI7Ci0KLSAgICBJbnRTaXplIGludFNpemUoKnNp
emUpOwotCi0gICAgKnJlc3VsdCA9IGdldE9yQ3JlYXRlRGVmYXVsdEljb25CaXRtYXAoaW50U2l6
ZSk7Ci0gICAgcmV0dXJuIFNfT0s7Ci19Ci0KLUhSRVNVTFQgV2ViSWNvbkRhdGFiYXNlOjpyZXRh
aW5JY29uRm9yVVJMKF9Jbl8gQlNUUiB1cmwpCi17Ci0gICAgaWNvbkRhdGFiYXNlKCkucmV0YWlu
SWNvbkZvclBhZ2VVUkwoU3RyaW5nKHVybCwgU3lzU3RyaW5nTGVuKHVybCkpKTsKLSAgICByZXR1
cm4gU19PSzsKLX0KLQotSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6OnJlbGVhc2VJY29uRm9yVVJM
KF9Jbl8gQlNUUiB1cmwpCi17Ci0gICAgaWNvbkRhdGFiYXNlKCkucmVsZWFzZUljb25Gb3JQYWdl
VVJMKFN0cmluZyh1cmwsIFN5c1N0cmluZ0xlbih1cmwpKSk7Ci0gICAgcmV0dXJuIFNfT0s7Ci19
Ci0KLUhSRVNVTFQgV2ViSWNvbkRhdGFiYXNlOjpyZW1vdmVBbGxJY29ucygpCi17Ci0gICAgaWNv
bkRhdGFiYXNlKCkucmVtb3ZlQWxsSWNvbnMoKTsKLSAgICByZXR1cm4gU19PSzsKLX0KLQotSFJF
U1VMVCBXZWJJY29uRGF0YWJhc2U6OmRlbGF5RGF0YWJhc2VDbGVhbnVwKCkKLXsKLSAgICBJY29u
RGF0YWJhc2U6OmRlbGF5RGF0YWJhc2VDbGVhbnVwKCk7Ci0gICAgcmV0dXJuIFNfT0s7Ci19Ci0K
LUhSRVNVTFQgV2ViSWNvbkRhdGFiYXNlOjphbGxvd0RhdGFiYXNlQ2xlYW51cCgpCi17Ci0gICAg
SWNvbkRhdGFiYXNlOjphbGxvd0RhdGFiYXNlQ2xlYW51cCgpOwotICAgIHJldHVybiBTX09LOwot
fQotCi1IUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6aWNvblVSTEZvclVSTChfSW5fIEJTVFIgdXJs
LCBfX2RlcmVmX29wdF9vdXQgQlNUUiogaWNvblVSTCkKLXsKLSAgICBpZiAoIXVybCB8fCAhaWNv
blVSTCkKLSAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAgICBCU3RyaW5nIGljb25VUkxCU1RS
KGljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwoU3RyaW5nKHVybCwg
U3lzU3RyaW5nTGVuKHVybCkpKSk7Ci0gICAgKmljb25VUkwgPSBpY29uVVJMQlNUUi5yZWxlYXNl
KCk7Ci0gICAgcmV0dXJuIFNfT0s7Ci19Ci0KLUhSRVNVTFQgV2ViSWNvbkRhdGFiYXNlOjppc0Vu
YWJsZWQoX091dF8gQk9PTCogcmVzdWx0KQotewotICAgIGlmICghcmVzdWx0KQotICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOwotICAgICpyZXN1bHQgPSBpY29uRGF0YWJhc2UoKS5pc0VuYWJsZWQo
KTsKLSAgICByZXR1cm4gU19PSzsKLX0KLQotSFJFU1VMVCBXZWJJY29uRGF0YWJhc2U6OnNldEVu
YWJsZWQoQk9PTCBmbGFnKQotewotICAgIEJPT0wgY3VycmVudGx5RW5hYmxlZDsKLSAgICBpc0Vu
YWJsZWQoJmN1cnJlbnRseUVuYWJsZWQpOwotICAgIGlmIChjdXJyZW50bHlFbmFibGVkICYmICFm
bGFnKSB7Ci0gICAgICAgIGljb25EYXRhYmFzZSgpLnNldEVuYWJsZWQoZmFsc2UpOwotICAgICAg
ICBzaHV0RG93bkljb25EYXRhYmFzZSgpOwotICAgIH0gZWxzZSBpZiAoIWN1cnJlbnRseUVuYWJs
ZWQgJiYgZmxhZykgewotICAgICAgICBpY29uRGF0YWJhc2UoKS5zZXRFbmFibGVkKHRydWUpOwot
ICAgICAgICBzdGFydFVwSWNvbkRhdGFiYXNlKCk7Ci0gICAgfQotICAgIHJldHVybiBTX09LOwot
fQotCi1IUkVTVUxUIFdlYkljb25EYXRhYmFzZTo6aGFzSWNvbkZvclVSTChfSW5fIEJTVFIgdXJs
LCBfT3V0XyBCT09MKiByZXN1bHQpCi17Ci0gICAgaWYgKCF1cmwgfHwgIXJlc3VsdCkKLSAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKLQotICAgIFN0cmluZyB1cmxTdHJpbmcodXJsLCBTeXNTdHJp
bmdMZW4odXJsKSk7Ci0KLSAgICAvLyBQYXNzaW5nIGEgc2l6ZSBwYXJhbWV0ZXIgb2YgMCwgMCBt
ZWFucyB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSByZXN1bHQgb2YgdGhlIGltYWdlLCB3ZSBqdXN0
Ci0gICAgLy8gd2FudCB0byBtYWtlIHN1cmUgdGhlIHJlYWQgZnJvbSBkaXNrIHRvIGxvYWQgdGhl
IGljb24gaXMga2lja2VkIG9mZi4KLSAgICBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25G
b3JQYWdlVVJMKHVybFN0cmluZywgSW50U2l6ZSgwLCAwKSk7Ci0KLSAgICAvLyBDaGVjayB0byBz
ZWUgaWYgd2UgaGF2ZSBhIG5vbi1lbXB0eSBpY29uIFVSTCBmb3IgdGhlIHBhZ2UsIGFuZCBpZiB3
ZSBkbywgd2UgaGF2ZSBhbiBpY29uIGZvcgotICAgIC8vIHRoZSBwYWdlLgotICAgICpyZXN1bHQg
PSAhKGljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwodXJsU3RyaW5n
KS5pc0VtcHR5KCkpOwotCi0gICAgcmV0dXJuIFNfT0s7Ci19Ci0KLXN0YXRpYyBIQklUTUFQIGNy
ZWF0ZURJQihjb25zdCBJbnRTaXplJiBzaXplKQotewotICAgIEJpdG1hcEluZm8gYm1JbmZvID0g
Qml0bWFwSW5mbzo6Y3JlYXRlKHNpemUpOwotCi0gICAgSFduZERDIGRjKDApOwotICAgIHJldHVy
biBDcmVhdGVESUJTZWN0aW9uKGRjLCAmYm1JbmZvLCBESUJfUkdCX0NPTE9SUywgMCwgMCwgMCk7
Ci19Ci0KLUhCSVRNQVAgV2ViSWNvbkRhdGFiYXNlOjpnZXRPckNyZWF0ZVNoYXJlZEJpdG1hcChj
b25zdCBJbnRTaXplJiBzaXplKQotewotICAgIEhCSVRNQVAgcmVzdWx0ID0gbV9zaGFyZWRJY29u
TWFwLmdldChzaXplKTsKLSAgICBpZiAocmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIHJlc3VsdCA9IGNyZWF0ZURJQihzaXplKTsKLSAgICBtX3NoYXJlZEljb25NYXAuc2V0KHNp
emUsIHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotSEJJVE1BUCBXZWJJY29uRGF0
YWJhc2U6OmdldE9yQ3JlYXRlRGVmYXVsdEljb25CaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
LXsKLSAgICBIQklUTUFQIHJlc3VsdCA9IG1fZGVmYXVsdEljb25NYXAuZ2V0KHNpemUpOwotICAg
IGlmIChyZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICByZXN1bHQgPSBjcmVh
dGVESUIoc2l6ZSk7Ci0KLSAgICBtX2RlZmF1bHRJY29uTWFwLnNldChzaXplLCByZXN1bHQpOwot
ICAgIGlmICghaWNvbkRhdGFiYXNlKCkuZGVmYXVsdEljb24oc2l6ZSkgfHwgIWljb25EYXRhYmFz
ZSgpLmRlZmF1bHRJY29uKHNpemUpLT5nZXRIQklUTUFQT2ZTaXplKHJlc3VsdCwgJnNpemUpKSB7
Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRyYXcgSW1hZ2UgdG8gSEJJVE1BUCIpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8gSWNv
bkRhdGFiYXNlQ2xpZW50Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRSZW1vdmVBbGxJY29u
cygpCi17Ci0gICAgLy8gUXVldWVpbmcgdGhlIGVtcHR5IHN0cmluZyBpcyBhIHNwZWNpYWwgd2F5
IG9mIHNheWluZyAidGhpcyBxdWV1ZWQgbm90aWZpY2F0aW9uIGlzIHRoZSBkaWRSZW1vdmVBbGxJ
Y29ucyBub3RpZmljYXRpb24iCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9ub3RpZmljYXRpb25N
dXRleCk7Ci0gICAgbV9ub3RpZmljYXRpb25RdWV1ZS5hcHBlbmQoU3RyaW5nKCkpOwotICAgIHNj
aGVkdWxlTm90aWZpY2F0aW9uRGVsaXZlcnkoKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6
OmRpZEltcG9ydEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFdURjo6U3RyaW5nJiBwYWdlVVJMKQot
ewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbm90aWZpY2F0aW9uTXV0ZXgpOwotICAgIG1fbm90
aWZpY2F0aW9uUXVldWUuYXBwZW5kKHBhZ2VVUkwuaXNvbGF0ZWRDb3B5KCkpOwotICAgIHNjaGVk
dWxlTm90aWZpY2F0aW9uRGVsaXZlcnkoKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OmRp
ZEltcG9ydEljb25EYXRhRm9yUGFnZVVSTChjb25zdCBXVEY6OlN0cmluZyYgcGFnZVVSTCkKLXsK
LSAgICAvLyBXZWJLaXQxIG9ubHkgaGFzIGEgc2luZ2xlICJpY29uIGRpZCBjaGFuZ2UiIG5vdGlm
aWNhdGlvbi4KLSAgICBkaWRJbXBvcnRJY29uVVJMRm9yUGFnZVVSTChwYWdlVVJMKTsKLX0KLQot
dm9pZCBXZWJJY29uRGF0YWJhc2U6OmRpZENoYW5nZUljb25Gb3JQYWdlVVJMKGNvbnN0IFdURjo6
U3RyaW5nJiBwYWdlVVJMKQotewotICAgIC8vIFdlYktpdDEgb25seSBoYXMgYSBzaW5nbGUgImlj
b24gZGlkIGNoYW5nZSIgbm90aWZpY2F0aW9uLgotICAgIGRpZEltcG9ydEljb25VUkxGb3JQYWdl
VVJMKHBhZ2VVUkwpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6ZGlkRmluaXNoVVJMSW1w
b3J0KCkKLXsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OnNjaGVkdWxlTm90aWZpY2F0aW9u
RGVsaXZlcnkoKQotewotICAgIC8vIENhbGxlciBvZiB0aGlzIG1ldGhvZCBtdXN0IGhvbGQgdGhl
IG1fbm90aWZpY2F0aW9uUXVldWUgbG9jawotICAgIEFTU0VSVCghbV9ub3RpZmljYXRpb25NdXRl
eC50cnlMb2NrKCkpOwotCi0gICAgaWYgKCFtX2RlbGl2ZXJ5UmVxdWVzdGVkKSB7Ci0gICAgICAg
IG1fZGVsaXZlcnlSZXF1ZXN0ZWQgPSB0cnVlOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtd
IHsKLSAgICAgICAgICAgIGRlbGl2ZXJOb3RpZmljYXRpb25zKDApOwotICAgICAgICB9KTsKLSAg
ICB9Ci19Ci0KLUJTVFIgV2ViSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VEaWRBZGRJY29uTm90
aWZpY2F0aW9uKCkKLXsKLSAgICBzdGF0aWMgQlNUUiBkaWRBZGRJY29uTmFtZSA9IFN5c0FsbG9j
U3RyaW5nKFdlYkljb25EYXRhYmFzZURpZEFkZEljb25Ob3RpZmljYXRpb24pOwotICAgIHJldHVy
biBkaWRBZGRJY29uTmFtZTsKLX0KLQotQlNUUiBXZWJJY29uRGF0YWJhc2U6Omljb25EYXRhYmFz
ZU5vdGlmaWNhdGlvblVzZXJJbmZvVVJMS2V5KCkKLXsKLSAgICBzdGF0aWMgQlNUUiBpY29uVXNl
ckluZm9VUkxLZXkgPSBTeXNBbGxvY1N0cmluZyhXZWJJY29uTm90aWZpY2F0aW9uVXNlckluZm9V
UkxLZXkpOwotICAgIHJldHVybiBpY29uVXNlckluZm9VUkxLZXk7Ci19Ci0KLUJTVFIgV2ViSWNv
bkRhdGFiYXNlOjppY29uRGF0YWJhc2VEaWRSZW1vdmVBbGxJY29uc05vdGlmaWNhdGlvbigpCi17
Ci0gICAgc3RhdGljIEJTVFIgZGlkUmVtb3ZlQWxsSWNvbnNOYW1lID0gU3lzQWxsb2NTdHJpbmco
V2ViSWNvbkRhdGFiYXNlRGlkUmVtb3ZlQWxsSWNvbnNOb3RpZmljYXRpb24pOwotICAgIHJldHVy
biBkaWRSZW1vdmVBbGxJY29uc05hbWU7Ci19Ci0KLXN0YXRpYyB2b2lkIHBvc3REaWRSZW1vdmVB
bGxJY29uc05vdGlmaWNhdGlvbihXZWJJY29uRGF0YWJhc2UqIGljb25EQikKLXsKLSAgICBJV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyKiBub3RpZnlDZW50ZXIgPSBXZWJOb3RpZmljYXRpb25DZW50ZXI6
OmRlZmF1bHRDZW50ZXJJbnRlcm5hbCgpOwotICAgIG5vdGlmeUNlbnRlci0+cG9zdE5vdGlmaWNh
dGlvbk5hbWUoV2ViSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VEaWRSZW1vdmVBbGxJY29uc05v
dGlmaWNhdGlvbigpLCBzdGF0aWNfY2FzdDxJV2ViSWNvbkRhdGFiYXNlKj4oaWNvbkRCKSwgMCk7
Ci19Ci0KLXN0YXRpYyB2b2lkIHBvc3REaWRBZGRJY29uTm90aWZpY2F0aW9uKGNvbnN0IFN0cmlu
ZyYgcGFnZVVSTCwgV2ViSWNvbkRhdGFiYXNlKiBpY29uREIpCi17Ci0gICAgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4gZGljdGlvbmFyeTsKLSAgICBkaWN0aW9uYXJ5LnNldChXZWJJY29uRGF0YWJh
c2U6Omljb25EYXRhYmFzZU5vdGlmaWNhdGlvblVzZXJJbmZvVVJMS2V5KCksIHBhZ2VVUkwpOwot
ICAgIENPTVB0cjxJUHJvcGVydHlCYWc+IHVzZXJJbmZvKEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJh
ZzxTdHJpbmc+OjphZG9wdChkaWN0aW9uYXJ5KSk7Ci0KLSAgICBJV2ViTm90aWZpY2F0aW9uQ2Vu
dGVyKiBub3RpZnlDZW50ZXIgPSBXZWJOb3RpZmljYXRpb25DZW50ZXI6OmRlZmF1bHRDZW50ZXJJ
bnRlcm5hbCgpOwotICAgIG5vdGlmeUNlbnRlci0+cG9zdE5vdGlmaWNhdGlvbk5hbWUoV2ViSWNv
bkRhdGFiYXNlOjppY29uRGF0YWJhc2VEaWRBZGRJY29uTm90aWZpY2F0aW9uKCksIHN0YXRpY19j
YXN0PElXZWJJY29uRGF0YWJhc2UqPihpY29uREIpLCB1c2VySW5mby5nZXQoKSk7Ci19Ci0KLXZv
aWQgV2ViSWNvbkRhdGFiYXNlOjpkZWxpdmVyTm90aWZpY2F0aW9ucyh2b2lkKikKLXsKLSAgICBB
U1NFUlQobV9zaGFyZWRXZWJJY29uRGF0YWJhc2UpOwotICAgIGlmICghbV9zaGFyZWRXZWJJY29u
RGF0YWJhc2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChtX3NoYXJlZFdlYkljb25E
YXRhYmFzZS0+bV9kZWxpdmVyeVJlcXVlc3RlZCk7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiBxdWV1
ZTsKLSAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2hhcmVkV2ViSWNvbkRhdGFi
YXNlLT5tX25vdGlmaWNhdGlvbk11dGV4KTsKLSAgICAgICAgcXVldWUuc3dhcChtX3NoYXJlZFdl
Ykljb25EYXRhYmFzZS0+bV9ub3RpZmljYXRpb25RdWV1ZSk7Ci0gICAgICAgIG1fc2hhcmVkV2Vi
SWNvbkRhdGFiYXNlLT5tX2RlbGl2ZXJ5UmVxdWVzdGVkID0gZmFsc2U7Ci0gICAgfQotCi0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHF1ZXVlLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlm
IChxdWV1ZVtpXS5pc051bGwoKSkKLSAgICAgICAgICAgIHBvc3REaWRSZW1vdmVBbGxJY29uc05v
dGlmaWNhdGlvbihtX3NoYXJlZFdlYkljb25EYXRhYmFzZSk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHBvc3REaWRBZGRJY29uTm90aWZpY2F0aW9uKHF1ZXVlW2ldLCBtX3NoYXJlZFdlYklj
b25EYXRhYmFzZSk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJY29uRGF0
YWJhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVmZGIyZTRmYzM1OTkwZGU2
Mjg1ZDFjMzZlMjlmN2IyZWVjZWJhZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJY29uRGF0YWJhc2UuaAor
KysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2
LTIwMDksIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFdlYkljb25EYXRh
YmFzZV9ICi0jZGVmaW5lIFdlYkljb25EYXRhYmFzZV9ICi0KLSNpbmNsdWRlICJXZWJLaXQuaCIK
LQotI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9JbnRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplSGFzaC5oPgotI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KLQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUK
LXsKLSAgICBjbGFzcyBJY29uRGF0YWJhc2U7Ci19OyAvL25hbWVzcGFjZSBXZWJDb3JlCi11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KLWNsYXNzIFdlYklj
b25EYXRhYmFzZSA6IHB1YmxpYyBJV2ViSWNvbkRhdGFiYXNlLCBwdWJsaWMgV2ViQ29yZTo6SWNv
bkRhdGFiYXNlQ2xpZW50Ci17Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFdlYkljb25EYXRhYmFzZSog
Y3JlYXRlSW5zdGFuY2UoKTsKLSAgICBzdGF0aWMgV2ViSWNvbkRhdGFiYXNlKiBzaGFyZWRXZWJJ
Y29uRGF0YWJhc2UoKTsKLXByaXZhdGU6Ci0gICAgV2ViSWNvbkRhdGFiYXNlKCk7Ci0gICAgfldl
Ykljb25EYXRhYmFzZSgpOwotICAgIHZvaWQgaW5pdCgpOwotICAgIHZvaWQgc3RhcnRVcEljb25E
YXRhYmFzZSgpOwotICAgIHZvaWQgc2h1dERvd25JY29uRGF0YWJhc2UoKTsKLXB1YmxpYzoKLQot
ICAgIC8vIElVbmtub3duCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1
ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2Jq
ZWN0KTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpOwotICAg
IHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSgpOwotCi0gICAgLy8gSVdl
Ykljb25EYXRhYmFzZQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzaGFy
ZWRJY29uRGF0YWJhc2UoX0NPTV9PdXRwdHJfb3B0XyBJV2ViSWNvbkRhdGFiYXNlKiopOwotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpY29uRm9yVVJMKF9Jbl8gQlNUUiB1
cmwsIF9Jbl8gTFBTSVpFLCBCT09MIGNhY2hlLCBfX2RlcmVmX29wdF9vdXQgSEJJVE1BUCogaW1h
Z2UpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWZhdWx0SWNvbldp
dGhTaXplKF9Jbl8gTFBTSVpFLCBfX2RlcmVmX29wdF9vdXQgSEJJVE1BUCogcmVzdWx0KTsKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmV0YWluSWNvbkZvclVSTChfSW5f
IEJTVFIpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWxlYXNlSWNv
bkZvclVSTChfSW5fIEJTVFIpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSByZW1vdmVBbGxJY29ucygpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBkZWxheURhdGFiYXNlQ2xlYW51cCgpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBhbGxvd0RhdGFiYXNlQ2xlYW51cCgpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBpY29uVVJMRm9yVVJMKF9Jbl8gQlNUUiB1cmwsIF9fZGVyZWZfb3B0X291
dCBCU1RSKiBpY29uVVJMKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
aXNFbmFibGVkKF9PdXRfIEJPT0wqKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc2V0RW5hYmxlZChCT09MKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgaGFzSWNvbkZvclVSTChfSW5fIEJTVFIgdXJsLCBfT3V0XyBCT09MKiByZXN1bHQpOwot
Ci0gICAgLy8gSWNvbkRhdGFiYXNlQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZUFs
bEljb25zKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEltcG9ydEljb25VUkxGb3JQYWdlVVJMKGNv
bnN0IFdURjo6U3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEltcG9ydEljb25EYXRhRm9y
UGFnZVVSTChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJ
Y29uRm9yUGFnZVVSTChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hVUkxJbXBvcnQoKTsKLQotICAgIHN0YXRpYyBCU1RSIGljb25EYXRhYmFzZURpZEFkZElj
b25Ob3RpZmljYXRpb24oKTsKLSAgICBzdGF0aWMgQlNUUiBpY29uRGF0YWJhc2VEaWRSZW1vdmVB
bGxJY29uc05vdGlmaWNhdGlvbigpOwotICAgIHN0YXRpYyBCU1RSIGljb25EYXRhYmFzZU5vdGlm
aWNhdGlvblVzZXJJbmZvVVJMS2V5KCk7Ci1wcm90ZWN0ZWQ6Ci0gICAgVUxPTkcgbV9yZWZDb3Vu
dCB7IDAgfTsKLSAgICBzdGF0aWMgV2ViSWNvbkRhdGFiYXNlKiBtX3NoYXJlZFdlYkljb25EYXRh
YmFzZTsKLQotICAgIC8vIEtlZXAgYSBzZXQgb2YgSEJJVE1BUHMgYXJvdW5kIGZvciB0aGUgZGVm
YXVsdCBpY29uLCBhbmQgYW5vdGhlcgotICAgIC8vIHRvIHNoYXJlIGFtb25nc3QgcHJlc2VudCBz
aXRlIGljb25zCi0gICAgSEJJVE1BUCBnZXRPckNyZWF0ZVNoYXJlZEJpdG1hcChjb25zdCBJbnRT
aXplJik7Ci0gICAgSEJJVE1BUCBnZXRPckNyZWF0ZURlZmF1bHRJY29uQml0bWFwKGNvbnN0IElu
dFNpemUmKTsKLSAgICBIYXNoTWFwPEludFNpemUsIEhCSVRNQVA+IG1fZGVmYXVsdEljb25NYXA7
Ci0gICAgSGFzaE1hcDxJbnRTaXplLCBIQklUTUFQPiBtX3NoYXJlZEljb25NYXA7Ci0KLSAgICBM
b2NrIG1fbm90aWZpY2F0aW9uTXV0ZXg7Ci0gICAgVmVjdG9yPFN0cmluZz4gbV9ub3RpZmljYXRp
b25RdWV1ZTsKLSAgICB2b2lkIHNjaGVkdWxlTm90aWZpY2F0aW9uRGVsaXZlcnkoKTsKLSAgICBi
b29sIG1fZGVsaXZlcnlSZXF1ZXN0ZWQgeyBmYWxzZSB9OwotCi0gICAgc3RhdGljIHZvaWQgZGVs
aXZlck5vdGlmaWNhdGlvbnModm9pZCopOwotfTsKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAppbmRleCBkODcwOGE1NDZlNWQwM2Nm
ZDFjODUwZjE3OWI3MDY5ZTY4Zjc2ZmNlLi5hNjFlZGU3ZWFjZTgyZjZjNTY2NjdhZDI3MWNmNzY2
NTFmNmY5NmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFz
c0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFj
dG9yeS5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0
aW9uLmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeS5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVt
LmgiCi0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiV2ViSmF2YVNjcmlw
dENvbGxlY3Rvci5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYktpdE1lc3Nh
Z2VMb29wLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcAppbmRleCA3YzNmYmIy
NzNmNjE3NGI3NDgxZDRjNTVjNWI3M2EyZTUxMmZjZjI1Li41ZGMyYzEyYmQzNTNhZWY0OTcwN2Uy
ZDA1N2I2Y2I4OWEyNDY0NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRETEwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAK
QEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJXZWJLaXRDbGFzc0ZhY3RvcnkuaCIKICNpbmNs
dWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NP
TVB0ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgpAQCAtMTYzLDcgKzE2Miw2IEBAIFNUREFQSSBMb2Nh
bFNlcnZlckRpZERpZSgpCiAKIHZvaWQgc2h1dERvd25XZWJLaXQoKQogewotICAgIFdlYkNvcmU6
Omljb25EYXRhYmFzZSgpLmNsb3NlKCk7CiAgICAgV2ViS2l0OjpXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmNsb3NlTG9jYWxTdG9yYWdlKCk7CiAjaWYgVVNFKEVHTCkKICAgICBQbGF0Zm9y
bURpc3BsYXk6OnNodXREb3duRWdsRGlzcGxheXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdExvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YktpdExvZ2dpbmcuaAppbmRleCA1ODllZWI5OTg3NGViOWU1NmUzMzE2OTY0NWNhNjlkODI0ZmQ4
NTlkLi5mNjJlMDg4OWJlMWVjYWU1Nzk3Yzc3NjEzMzBlMTU3NWI3ZWU5ZDk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRMb2dnaW5nLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0TG9nZ2luZy5oCkBAIC01MCw3ICs1MCw2IEBACiAgICAgTShG
b250U3Vic3RpdHV0aW9uKSBcCiAgICAgTShGb3JtRGVsZWdhdGUpIFwKICAgICBNKEhpc3Rvcnkp
IFwKLSAgICBNKEljb25EYXRhYmFzZSkgXAogICAgIE0oTGl2ZUNvbm5lY3QpIFwKICAgICBNKExv
YWRpbmcpIFwKICAgICBNKFBhZ2VDYWNoZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNw
cAppbmRleCA0NDYzOThiNTlhNTg3MTYyMDNkZDJkZDNmOTM1YmZjMWFkMmRjODMxLi5kMDY2ZDNh
YTEwODk1ZjZiNjBmYWE3ZTg1NzkzZDM3MTI3NjRjZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcApAQCAtNTQsNyArNTQsNiBAQAogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUg
IldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKLSNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIK
ICNpbmNsdWRlICJXZWJJbnNwZWN0b3IuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJLaXQuaCIKQEAgLTc3OSw3ICs3NzgsNiBAQCBIUkVTVUxUIFdlYlZp
ZXc6OmNsb3NlKCkKIAogICAgIG1fbWFpbkZyYW1lID0gbnVsbHB0cjsKIAotICAgIHJlZ2lzdGVy
Rm9ySWNvbk5vdGlmaWNhdGlvbihmYWxzZSk7CiAgICAgSVdlYk5vdGlmaWNhdGlvbkNlbnRlciog
bm90aWZ5Q2VudGVyID0gV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpkZWZhdWx0Q2VudGVySW50ZXJu
YWwoKTsKICAgICBub3RpZnlDZW50ZXItPnJlbW92ZU9ic2VydmVyKHRoaXMsIFdlYlByZWZlcmVu
Y2VzOjp3ZWJQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb24oKSwgc3RhdGljX2Nhc3Q8SVdl
YlByZWZlcmVuY2VzKj4obV9wcmVmZXJlbmNlcy5nZXQoKSkpOwogCkBAIC0zMjIzLDY3ICszMjIx
LDE3IEBAIHZvaWQgV2ViVmlldzo6c2V0VG9vbFRpcChjb25zdCBTdHJpbmcmIHRvb2xUaXApCiAg
ICAgOjpTZW5kTWVzc2FnZShtX3Rvb2xUaXBId25kLCBUVE1fQUNUSVZBVEUsICFtX3Rvb2xUaXAu
aXNFbXB0eSgpLCAwKTsKIH0KIAotSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlEaWRBZGRJY29uKElX
ZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK0hSRVNVTFQgV2ViVmlldzo6bm90aWZ5RGlk
QWRkSWNvbihJV2ViTm90aWZpY2F0aW9uKikKIHsKLSAgICBDT01QdHI8SVByb3BlcnR5QmFnPiBw
cm9wZXJ0eUJhZzsKLSAgICBIUkVTVUxUIGhyID0gbm90aWZpY2F0aW9uLT51c2VySW5mbygmcHJv
cGVydHlCYWcpOwotICAgIGlmIChGQUlMRUQoaHIpKQotICAgICAgICByZXR1cm4gaHI7Ci0gICAg
aWYgKCFwcm9wZXJ0eUJhZykKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKLQotICAgIENPTVZhcmlh
bnQgaWNvblVzZXJJbmZvVVJMOwotICAgIGhyID0gcHJvcGVydHlCYWctPlJlYWQoV2ViSWNvbkRh
dGFiYXNlOjppY29uRGF0YWJhc2VOb3RpZmljYXRpb25Vc2VySW5mb1VSTEtleSgpLCAmaWNvblVz
ZXJJbmZvVVJMLCBudWxscHRyKTsKLSAgICBpZiAoRkFJTEVEKGhyKSkKLSAgICAgICAgcmV0dXJu
IGhyOwotCi0gICAgaWYgKGljb25Vc2VySW5mb1VSTC52YXJpYW50VHlwZSgpICE9IFZUX0JTVFIp
Ci0gICAgICAgIHJldHVybiBFX0ZBSUw7Ci0KLSAgICBTdHJpbmcgbWFpbkZyYW1lVVJMOwotICAg
IGlmIChtX21haW5GcmFtZSkKLSAgICAgICAgbWFpbkZyYW1lVVJMID0gbV9tYWluRnJhbWUtPnVy
bCgpLnN0cmluZygpOwotCi0gICAgaWYgKCFtYWluRnJhbWVVUkwuaXNFbXB0eSgpICYmIG1haW5G
cmFtZVVSTCA9PSB0b1N0cmluZyhWX0JTVFIoJmljb25Vc2VySW5mb1VSTCkpKQotICAgICAgICBk
aXNwYXRjaERpZFJlY2VpdmVJY29uRnJvbVdlYkZyYW1lKG1fbWFpbkZyYW1lKTsKLQotICAgIHJl
dHVybiBocjsKKyAgICByZXR1cm4gRV9GQUlMOwogfQogCi12b2lkIFdlYlZpZXc6OnJlZ2lzdGVy
Rm9ySWNvbk5vdGlmaWNhdGlvbihib29sIGxpc3RlbikKK3ZvaWQgV2ViVmlldzo6cmVnaXN0ZXJG
b3JJY29uTm90aWZpY2F0aW9uKGJvb2wpCiB7Ci0gICAgSVdlYk5vdGlmaWNhdGlvbkNlbnRlciog
bmMgPSBXZWJOb3RpZmljYXRpb25DZW50ZXI6OmRlZmF1bHRDZW50ZXJJbnRlcm5hbCgpOwotICAg
IGlmIChsaXN0ZW4pCi0gICAgICAgIG5jLT5hZGRPYnNlcnZlcih0aGlzLCBXZWJJY29uRGF0YWJh
c2U6Omljb25EYXRhYmFzZURpZEFkZEljb25Ob3RpZmljYXRpb24oKSwgMCk7Ci0gICAgZWxzZQot
ICAgICAgICBuYy0+cmVtb3ZlT2JzZXJ2ZXIodGhpcywgV2ViSWNvbkRhdGFiYXNlOjppY29uRGF0
YWJhc2VEaWRBZGRJY29uTm90aWZpY2F0aW9uKCksIDApOwogfQogCi12b2lkIFdlYlZpZXc6OmRp
c3BhdGNoRGlkUmVjZWl2ZUljb25Gcm9tV2ViRnJhbWUoV2ViRnJhbWUqIGZyYW1lKQordm9pZCBX
ZWJWaWV3OjpkaXNwYXRjaERpZFJlY2VpdmVJY29uRnJvbVdlYkZyYW1lKFdlYkZyYW1lKikKIHsK
LSAgICByZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oZmFsc2UpOwotCi0gICAgaWYgKG1fZnJh
bWVMb2FkRGVsZWdhdGUpIHsKLSAgICAgICAgU3RyaW5nIHN0ciA9IGZyYW1lLT51cmwoKS5zdHJp
bmcoKTsKLQotICAgICAgICBJbnRTaXplIHN6KDE2LCAxNik7Ci0KLSAgICAgICAgQml0bWFwSW5m
byBibUluZm8gPSBCaXRtYXBJbmZvOjpjcmVhdGUoc3opOwotCi0gICAgICAgIEhCSVRNQVAgaEJp
dG1hcCA9IG51bGxwdHI7Ci0KLSAgICAgICAgSW1hZ2UqIGljb24gPSBpY29uRGF0YWJhc2UoKS5z
eW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKHN0ciwgc3opOwotCi0gICAgICAgIGlmIChpY29uICYm
IGljb24tPndpZHRoKCkpIHsKLSAgICAgICAgICAgIEhXbmREQyBkYygwKTsKLSAgICAgICAgICAg
IGhCaXRtYXAgPSBDcmVhdGVESUJTZWN0aW9uKGRjLCAmYm1JbmZvLCBESUJfUkdCX0NPTE9SUywg
MCwgMCwgMCk7Ci0gICAgICAgICAgICBpY29uLT5nZXRIQklUTUFQT2ZTaXplKGhCaXRtYXAsICZz
eik7Ci0gICAgICAgIH0KLQotICAgICAgICBIUkVTVUxUIGhyID0gbV9mcmFtZUxvYWREZWxlZ2F0
ZS0+ZGlkUmVjZWl2ZUljb24odGhpcywgaEJpdG1hcCwgZnJhbWUpOwotICAgICAgICBpZiAoKGhy
ID09IEVfTk9USU1QTCkgJiYgaEJpdG1hcCkKLSAgICAgICAgICAgIERlbGV0ZU9iamVjdChoQml0
bWFwKTsKLSAgICB9CiB9CiAKIEhSRVNVTFQgV2ViVmlldzo6c2V0QWNjZXNzaWJpbGl0eURlbGVn
YXRlKF9Jbl9vcHRfIElBY2Nlc3NpYmlsaXR5RGVsZWdhdGUqIGQpCkBAIC01MTA1LDkgKzUwNTMs
NiBAQCBIUkVTVUxUIFdlYlZpZXc6Om9uTm90aWZ5KF9Jbl9vcHRfIElXZWJOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbikKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwog
Ci0gICAgaWYgKCF3Y3NjbXAobmFtZSwgV2ViSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VEaWRB
ZGRJY29uTm90aWZpY2F0aW9uKCkpKQotICAgICAgICByZXR1cm4gbm90aWZ5RGlkQWRkSWNvbihu
b3RpZmljYXRpb24pOwotCiAgICAgaWYgKCF3Y3NjbXAobmFtZSwgV2ViUHJlZmVyZW5jZXM6Ondl
YlByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbigpKSkKICAgICAgICAgcmV0dXJuIG5vdGlm
eVByZWZlcmVuY2VzQ2hhbmdlZChub3RpZmljYXRpb24pOwogCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzljNDlhNTRjMTYwODEyNTljOWFhNjhh
ODVjYzRjMWE4ZmNmZDg4ZC4uYzcyYTE4ZjJlN2RlY2UwNTU1Njk5ZjFiOGY5ZjBhMDc5NGQwYTM3
YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDE3LTA3LTE5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBSZW1vdmUgV2ViSWNvbkRhdGFiYXNlIGZyb20gV2ViS2l0TGVnYWN5L3dp
bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDYw
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDoKKyAgICAgICAgKFRl
c3RSdW5uZXI6OnNldEljb25EYXRhYmFzZUVuYWJsZWQpOgorCiAyMDE3LTA3LTE3ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZp
eCB0aGUgaU9TIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1
bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAKaW5kZXggZGNjZjk0ZDEzMWQyYTBjYTA1NjgyMGNiNGQ5ZjMxNTFlZThmNzNhYi4uYzc4
M2NkYzEwZmY3ODI4ZDNiMGJkNWYwYjJiNzYyZjVjMWZmNmYzYiAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC0xNTY2LDEyICsxNTY2LDYgQEAgaW50
IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICBpZiAoIXdlYlZpZXcpCiAg
ICAgICAgIHJldHVybiAtNDsKIAotICAgIENPTVB0cjxJV2ViSWNvbkRhdGFiYXNlPiBpY29uRGF0
YWJhc2U7Ci0gICAgQ09NUHRyPElXZWJJY29uRGF0YWJhc2U+IHRtcEljb25EYXRhYmFzZTsKLSAg
ICBpZiAoRkFJTEVEKFdlYktpdENyZWF0ZUluc3RhbmNlKENMU0lEX1dlYkljb25EYXRhYmFzZSwg
MCwgSUlEX0lXZWJJY29uRGF0YWJhc2UsICh2b2lkKiopJnRtcEljb25EYXRhYmFzZSkpKQotICAg
ICAgICByZXR1cm4gLTU7Ci0gICAgaWYgKEZBSUxFRCh0bXBJY29uRGF0YWJhc2UtPnNoYXJlZElj
b25EYXRhYmFzZSgmaWNvbkRhdGFiYXNlKSkpCi0gICAgICAgIHJldHVybiAtNjsKICAgICBpZiAo
RkFJTEVEKHdlYlZpZXctPm1haW5GcmFtZSgmZnJhbWUpKSkKICAgICAgICAgcmV0dXJuIC03Owog
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKaW5kZXggODc0MjRi
YTcyYWUyN2E3ODQwNDU4ZTI3MWEzYzFmN2NmMjc2MmVhMC4uODljNTI0YTlmNjYwOTU0YTM4MTRh
YTU2MmE1ZjMyNjcwNmY4MTE2YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L1Rlc3RSdW5uZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVu
bmVyV2luLmNwcApAQCAtNDg1LDE5ICs0ODUsOCBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEdlb2xv
Y2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQogICAgIHNldEdlb2xvY2F0aW9uUGVybWlzc2lv
bkNvbW1vbihhbGxvdyk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0SWNvbkRhdGFiYXNlRW5h
YmxlZChib29sIGljb25EYXRhYmFzZUVuYWJsZWQpCit2b2lkIFRlc3RSdW5uZXI6OnNldEljb25E
YXRhYmFzZUVuYWJsZWQoYm9vbCkKIHsKLSNpZiBFTkFCTEUoSUNPTkRBVEFCQVNFKQotICAgIC8v
IFNlZSBhbHNvIDxyZGFyOi8vcHJvYmxlbS82NDgwMTA4PgotICAgIENPTVB0cjxJV2ViSWNvbkRh
dGFiYXNlPiBpY29uRGF0YWJhc2U7Ci0gICAgQ09NUHRyPElXZWJJY29uRGF0YWJhc2U+IHRtcElj
b25EYXRhYmFzZTsKLSAgICBpZiAoRkFJTEVEKFdlYktpdENyZWF0ZUluc3RhbmNlKENMU0lEX1dl
Ykljb25EYXRhYmFzZSwgMCwgSUlEX0lXZWJJY29uRGF0YWJhc2UsICh2b2lkKiopJnRtcEljb25E
YXRhYmFzZSkpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKEZBSUxFRCh0bXBJY29uRGF0YWJh
c2UtPnNoYXJlZEljb25EYXRhYmFzZSgmaWNvbkRhdGFiYXNlKSkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGljb25EYXRhYmFzZS0+c2V0RW5hYmxlZChpY29uRGF0YWJhc2VFbmFibGVkKTsKLSNl
bmRpZgogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXIo
Ym9vbCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>