<?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>188744</bug_id>
          
          <creation_ts>2018-08-20 07:21:10 -0700</creation_ts>
          <short_desc>Test bug; please ignore</short_desc>
          <delta_ts>2018-08-20 10:15:44 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>DoNotImportToRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1451597</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-20 07:21:10 -0700</bug_when>
    <thetext>Test bug; please ignore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451601</commentid>
    <comment_count>1</comment_count>
      <attachid>347497</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-20 07:54:21 -0700</bug_when>
    <thetext>Created attachment 347497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451606</commentid>
    <comment_count>2</comment_count>
      <attachid>347500</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-20 08:53:42 -0700</bug_when>
    <thetext>Created attachment 347500
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347497</attachid>
            <date>2018-08-20 07:54:21 -0700</date>
            <delta_ts>2018-08-20 08:53:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188744-20180820075420.patch</filename>
            <type>text/plain</type>
            <size>147627</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBiZDFhOWNkNzU1ODA2
NGI1N2M5OTFhZTFjYmI0MDUwYWI0M2Y3YS4uYTFmMGIyY2IxMDAxOGFkYjk0NWEzODU3NTdiZDM1
NGFhZGEzYTA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNCBAQAorMjAxOC0wOC0xOCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBUZXN0IGJ1Zzsg
cGxlYXNlIGlnbm9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg4NzQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVmYWN0b3JzIGxvZ2ljIGFyb3VuZCBIVE1MQXR0YWNobWVudEVsZW1lbnQgYW5kIHBh
c3RlYm9hcmQgcmVhZGluZyBoZWxwZXJzLCBpbiBzdXBwb3J0IG9mIG1vdmluZyB0aGUgZGF0YQor
ICAgICAgICBiYWNraW5nIGZvciBhdHRhY2htZW50IGVsZW1lbnRzIHRvIHRoZSBjbGllbnQgbGF5
ZXIsIGluc3RlYWQgb2Yga2VlcGluZyBpdCBpbiB0aGUgYXR0YWNobWVudCBlbGVtZW50J3MgRmls
ZS4KKyAgICAgICAgQXVnbWVudGVkIGV4aXN0aW5nIEFQSSB0ZXN0cyBpbiBXS0F0dGFjaG1lbnRU
ZXN0cywgYW5kIGFsc28gYWRkZWQgYSBuZXcgQVBJIHRlc3QgKHNlZSBUb29scyBmb3IgbW9yZSBk
ZXRhaWwpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
ZGlkSW5zZXJ0QXR0YWNobWVudEVsZW1lbnQpOgorCisgICAgICAgIE5vdGlmeSB0aGUgY2xpZW50
IGxheWVyIHdoZW4gYSBuZXdseSBpbnNlcnRlZCBhdHRhY2htZW50IGVsZW1lbnQncyBpZGVudGlm
aWVyIGhhcyBiZWVuIHVwZGF0ZWQgdG8gYXZvaWQKKyAgICAgICAgY29sbGlkaW5nIHdpdGggdGhl
IGlkZW50aWZpZXIgb2YgYW4gZXhpc3RpbmcgYXR0YWNobWVudCBlbGVtZW50LiBUaGlzIGNhbiBo
YXBwZW4gaWYsIGZvciBpbnN0YW5jZSwgb25lIG9yIG1vcmUKKyAgICAgICAgYXR0YWNobWVudHMg
YXJlIGNvcGllZCBhbmQgcGFzdGVkIHdpdGhpbiB0aGUgc2FtZSBkb2N1bWVudC4KKworICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNsb25l
QXR0YWNobWVudERhdGEpOgorCisgICAgICAgIEFkZCBuZXcgaGVscGVyIGZ1bmN0aW9ucyB0byBu
b3RpZnkgdGhlIGNsaWVudCB3aGVuIHRoZSBhdHRhY2htZW50IGlkZW50aWZpZXIgdG8gZGF0YSBt
YXBwaW5nIG5lZWRzIHRvIGJlCisgICAgICAgIHVwZGF0ZWQuIFRoaXMgY2FuIGhhcHBlbiBpbiB0
aHJlZSB3YXlzOiAoMSkgYW4gYXR0YWNobWVudCBpcyBjcmVhdGVkIHdpdGggcmF3IGRhdGEsIG9y
ICgyKSBhbiBhdHRhY2htZW50IGlzCisgICAgICAgIGNyZWF0ZWQgd2l0aCBhIGZpbGUgcGF0aCwg
b3IgKDMpIHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYW4gYXR0YWNobWVudCBlbGVtZW50IGhh
cyBiZWVuIHJlYXNzaWduZWQuIFRoZXNlCisgICAgICAgIGNvcnJlc3BvbmQgdG8gdGhlIHR3byB2
ZXJzaW9ucyBvZiBgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcmAsIGFuZCBgY2xvbmVBdHRh
Y2htZW50RGF0YWAsIHJlc3BlY3RpdmVseS4KKworICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50OjpzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YSBjb25zdCk6CisKKyAgICAgICAg
QWRkIGEgbmV3IEVkaXRvckNsaWVudCBob29rIHRvIGRldGVybWluZSB3aGV0aGVyIGNsaWVudC1z
aWRlIGF0dGFjaG1lbnQgZGF0YSBtYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4gQ3VycmVudGx5LAor
ICAgICAgICB0aGlzIG9ubHkgcmV0dXJucyB0cnVlIGZvciBXZWJLaXQyLiBJZiB0aGlzIGZsYWcg
aXMgc2V0IHRvIHRydWUsIHdlIHJlZ2lzdGVyIGF0dGFjaG1lbnQgaWRlbnRpZmllcnMgYW5kIGRv
bid0CisgICAgICAgIGNyZWF0ZSBhIG5ldyBGaWxlIG9iamVjdCBmb3IgdGhlIGF0dGFjaG1lbnQg
ZWxlbWVudDsgb3RoZXJ3aXNlLCBmYWxsIGJhY2sgdG8gY3JlYXRpbmcgYW5kIHNldHRpbmcgYSBG
aWxlIGZvciB0aGUKKyAgICAgICAgbmV3IGF0dGFjaG1lbnQgZWxlbWVudC4KKworICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjppbnNlcnRBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKTogRGVsZXRlZC4KKworICAgICAgICBBZGp1
c3QgbG9naWMgd2hlbiBpbnNlcnRpbmcgYW4gYXR0YWNobWVudDsgd2Ugbm93IG9ubHkgbmVlZCB0
byB1cGRhdGUgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGF0dGFjaG1lbnQgZWxlbWVudAorICAgICAg
ICB3aXRoIG1ldGFkYXRhIGZyb20gdGhlIGNsaWVudCBsYXllci4KKworICAgICAgICAqIGVkaXRp
bmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudCk6
CisKKyAgICAgICAgTm90aWZ5IHRoZSBjbGllbnQgd2hlbiBjcmVhdGluZyBhbiBhdHRhY2htZW50
IGVsZW1lbnQgZnJvbSBpbWFnZSBkYXRhIG9uIHRoZSBwYXN0ZWJvYXJkLgorCisgICAgICAgIChX
ZWJDb3JlOjpyZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMpOgorCisgICAgICAgIFJl
ZmFjdG9yIHRoaXMgaGVscGVyIGZ1bmN0aW9uIHRvIG5vIGxvbmdlciBjb25uZWN0IGF0dGFjaG1l
bnQgZWxlbWVudHMgdG8gRmlsZSBvYmplY3RzIGNyZWF0ZWQgZnJvbQorICAgICAgICBzdWJyZXNv
dXJjZXMuIEluc3RlYWQsIGp1c3QgdXBkYXRlIGVhY2ggYXR0YWNobWVudCBlbGVtZW50J3MgYXR0
cmlidXRlcyB1c2luZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3VicmVzb3VyY2UsCisgICAgICAg
IGFuZCB0aGVuIG5vdGlmeSB0aGUgY2xpZW50IGFib3V0IHRoZSBuZXcgYXR0YWNobWVudCBkYXRh
IGFuZCBhdHRhY2htZW50IGlkZW50aWZpZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZy
YWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3Vw
V2l0aEFyY2hpdmUpOgorCisgICAgICAgIFBsdW1iIHRoZSBjdXJyZW50IFdlYkNvbnRlbnRSZWFk
ZXIncyBGcmFtZSYgdG8gZWFjaCBvZiB0aGVzZSBoZWxwZXJzLCBzbyB0aGF0IGl0IGNhbiBjYWxs
IG91dCB0byB0aGUgY2xpZW50LgorCisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVy
OjpyZWFkV2ViQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVh
ZGVyOjpyZWFkV2ViQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVy
OjpyZWFkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEZp
bGVQYXRocyk6CisKKyAgICAgICAgTm90aWZ5IHRoZSBjbGllbnQgd2hlbiBjcmVhdGluZyBhbiBh
dHRhY2htZW50IGZyb20gdGhlIHBhdGggb2YgYSBkcm9wcGVkIGZpbGUuCisKKyAgICAgICAgKiBo
dG1sL0F0dGFjaG1lbnRUeXBlcy5oOgorCisgICAgICAgIFJlbW92ZSBBdHRhY2htZW50SW5mby4g
VGhpcyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCB0byByZXF1
ZXN0IGF0dGFjaG1lbnQgZGF0YSBmcm9tIHRoZSB3ZWIKKyAgICAgICAgcHJvY2VzcyBhbnltb3Jl
LgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjplbnN1cmVVbmlxdWVJZGVudGlmaWVyKToK
KworICAgICAgICBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gb24gdGhlIGF0dGFjaG1lbnQgZWxlbWVu
dCB0byBjcmVhdGUgYW5kIHJldHVybiBhIHVuaXF1ZSBpZGVudGlmaWVyIGlmIG5lZWRlZC4KKwor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVBdHRyaWJ1dGVz
KToKKworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIHRvIHVwZGF0ZSB0aGUgZGlzcGxheWVk
IGVsZW1lbnQgYXR0cmlidXRlcyAodHlwZSwgdGl0bGUgYW5kIHN1YnRpdGxlKSBvciBhbiBhdHRh
Y2htZW50LgorCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50RGF0YVJlYWRlcjo6Y3JlYXRl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnREYXRhUmVhZGVyOjpBdHRh
Y2htZW50RGF0YVJlYWRlcik6IERlbGV0ZWQuCisKKyAgICAgICAgUmVtb3ZlIEF0dGFjaG1lbnRE
YXRhUmVhZGVyLiBUaGlzIGhlbHBlciBjbGFzcyB3YXMgb25seSB1c2VkIHRvIGxvYWQgYXR0YWNo
bWVudCBkYXRhIHdoZW4gcmVxdWVzdGluZyBhdHRhY2htZW50CisgICAgICAgIGluZm9ybWF0aW9u
IGluIHRoZSBjbGllbnQsIGJ1dCB0aGlzIGlzIG5vdyBvYnZpYXRlZCBieSBtb3ZpbmcgYXR0YWNo
bWVudCBkYXRhIHRvIHRoZSBjbGllbnQgbGF5ZXIuCisKKyAgICAgICAgKCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUZpbGVXaXRoRGF0
YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJl
cXVlc3RJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxl
bWVudDo6ZGVzdHJveVJlYWRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2ht
ZW50RGF0YVJlYWRlcjo6fkF0dGFjaG1lbnREYXRhUmVhZGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF0dGFjaG1lbnREYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnREYXRhUmVhZGVyOjpkaWRGYWlsKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnREYXRhUmVhZGVyOjppbnZva2VDYWxs
YmFja0FuZEZpbmlzaFJlYWRpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9EcmFnQ2xpZW50Lmg6CisgICAgICAgICog
cGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxl
cjo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkb1N5c3Rl
bURyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnByb21pc2VkQXR0YWNo
bWVudEluZm8pOgorCisgICAgICAgIEFsbG93IGRyYWdnaW5nIGFuIGF0dGFjaG1lbnQgKGV2ZW4g
aWYgaXQgZG9lcyBub3QgaGF2ZSBhIGZpbGUpIGFzIGxvbmcgYXMgaXQgaGFzIGEgdW5pcXVlIGlk
ZW50aWZpZXIgYW5kIGEKKyAgICAgICAgY29udGVudCB0eXBlLgorCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6cHJvbWlzZWRCbG9iSW5mbyk6IERlbGV0ZWQuCisgICAgICAgICog
cGFnZS9EcmFnQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpjbG9uZUF0dGFjaG1lbnREYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSXRlbS5oOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0l0ZW06OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnSXRlbTo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEJsb2JJbmZvLmguCisKKyAgICAg
ICAgQWRkIGFuIGF0dGFjaG1lbnQgaWRlbnRpZmllciB0byBQcm9taXNlZEJsb2JJbmZvLiBBZGRp
dGlvbmFsbHksIHJlbmFtZSBQcm9taXNlZEJsb2JJbmZvIHRvCisgICAgICAgIFByb21pc2VkQXR0
YWNobWVudEluZm8sIHNpbmNlIGl0IGlzIGN1cnJlbnRseSBleGNsdXNpdmVseSB1c2VkIHRvIGF0
dGFjaG1lbnQgZWxlbWVudCBkYXRhIHRvIHRoZSBwYXN0ZWJvYXJkLgorICAgICAgICBJbiB0aGUg
ZnV0dXJlLCB0aGlzIGNvdWxkIGJlIHJlbmFtZWQgdG8gc29tZXRoaW5nIG1vcmUgZ2VuZXJhbCAo
ZS5nLiBQcm9taXNlZFBhc3RlYm9hcmREYXRhKSwgc2hvdWxkIHdlIHVzZSB0aGlzCisgICAgICAg
IG1lY2hhbmlzbSB0byB3cml0ZSBkYXRhIGZyb20gb3RoZXIgc291cmNlcyB0byB0aGUgcGFzdGVi
b2FyZC4KKworICAgICAgICAoV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2htZW50SW5mbzo6b3BlcmF0
b3IgYm9vbCBjb25zdCk6CisKIDIwMTgtMDgtMjAgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNv
bT4KIAogICAgICAgICBUaHJvdyBhbiBleGNlcHRpb24gaWYgd2luZG93Lm9wZW4oKSBnZXRzIHBh
c3NlZCBhIFVSTCB0aGF0IGNhbm5vdCBiZSBwYXJzZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjVmNGYxMDJhYzVm
MjNkMGJiYWFiNDZjMDViNDA2ZWIwZWQ0YTliYi4uNzY1Nzk5NmUxNGMyODdiNDI1OTk3MWY4NmE5
YTViMmU5NjRlYmIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODMgQEAKKzIwMTgtMDgtMTggIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgVGVzdCBidWc7
IHBsZWFzZSBpZ25vcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODc0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkanVzdHMgV2ViS2l0J3MgYXR0YWNobWVudCBlZGl0aW5nIFNQSSB3aXRoIHRoZSBm
b2xsb3dpbmcgbW9kaWZpY2F0aW9uczoKKyAgICAgICAg4oCiICAgRGVwcmVjYXRlIGAtX2luc2Vy
dEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6Y29udGVudFR5cGU6ZGF0YTpvcHRpb25zOmNvbXBsZXRp
b246YCBpbiBmYXZvciBvZgorICAgICAgICAgICAgYC1faW5zZXJ0QXR0YWNobWVudFdpdGhGaWxl
V3JhcHBlcjpjb250ZW50VHlwZTpvcHRpb25zOmNvbXBsZXRpb246YC4KKyAgICAgICAg4oCiICAg
RGVwcmVjYXRlIGAtcmVxdWVzdEluZm86YCBhbmQgaW4gZmF2b3Igb2YganVzdCBgLWluZm9gLgor
ICAgICAgICDigKIgICBBZGQgYSBgLWZpbGVXcmFwcGVyYCBwcm9wZXJ0eSB0byBgX1dLQXR0YWNo
bWVudEluZm9gIHRoYXQgcmV0dXJucyBhbiBgTlNGaWxlV3JhcHBlcmAuCisgICAgICAgIOKAoiAg
IFJlbW92ZSBzb21lIFNQSSBtZXRob2RzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIGRlcHJlY2F0
ZWQsIGJ1dCBhcmUgbm90IGV2ZW4gbmVjZXNzYXJ5LCBzaW5jZSB0aGV5J3JlIG5vCisgICAgICAg
ICAgICBsb25nZXIgZXZlbiB1c2VkIGJ5IE1haWwuCisKKyAgICAgICAgVG8gbWFrZSB0aGlzIHBv
c3NpYmxlLCB3ZSByZWZhY3RvciB3aGVyZSBhbmQgaG93IGF0dGFjaG1lbnQgZGF0YSBpcyB0cmFj
a2VkLiBDdXJyZW50bHksIHRoZSBkYXRhIGlzIHN0b3JlZCBpbgorICAgICAgICB0aGUgbmV0d29y
ayBwcm9jZXNzLCBhbmQgbWFkZSBhY2Nlc3NpYmxlIHRvIHRoZSB3ZWIgcHJvY2VzcyB2aWEgYmxv
YiBVUkxzIHN0b3JlZCBpbiB0aGUgRmlsZSBvYmplY3QgaW4gdGhlCisgICAgICAgIGF0dGFjaG1l
bnQgZWxlbWVudC4gQXMgc3VjaCwgcmVxdWVzdHMgZnJvbSB0aGUgVUkgcHJvY2VzcyBmb3IgYXR0
YWNobWVudCBkYXRhIHdvdWxkIGZpcnN0IGJlIHJvdXRlZCB0aHJvdWdoIHRoZQorICAgICAgICB3
ZWIgcHJvY2VzcyB0byBuZXR3b3JrIHByb2Nlc3MgYW5kIGJhY2suCisKKyAgICAgICAgSW5zdGVh
ZCwgd2Ugbm93IGtlZXAgdGhlIHJlbGV2YW50IGF0dGFjaG1lbnQgZGF0YSAoaW4gdGhlIGZvcm0g
b2YgTlNGaWxlV3JhcHBlciBvbiBDb2NvYSBwbGF0Zm9ybXMpIGluIHRoZSBVSQorICAgICAgICBw
cm9jZXNzLCBvbiBBUEk6OkF0dGFjaG1lbnQuIFdlIGFkZGl0aW9uYWxseSBrZWVwIGEgbWFwIG9m
IGF0dGFjaG1lbnQgaWRlbnRpZmllcnMgdG8gQVBJOjpBdHRhY2htZW50cywgd2hpY2gKKyAgICAg
ICAgYWxsb3dzIHVzIHRvIHByb3BhZ2F0ZSB0aGUgc2FtZSBfV0tBdHRhY2htZW50IHdyYXBwZXIg
b2JqZWN0IHRvIHRoZSBTUEkgY2xpZW50IGZvciBlYWNoIHVuaXF1ZWx5IGlkZW50aWZpZWQKKyAg
ICAgICAgYXR0YWNobWVudCBlbGVtZW50LiBUaGlzIGFsc28gaGFzIHRoZSBiZW5lZml0IG9mIGFs
bG93aW5nIHVzIHRvIHJlbW92ZSB0aGUgYXN5bmNocm9ub3VzIHZlcnNpb24gb2YgYC1yZXF1ZXN0
SW5mbzpgCisgICAgICAgIGFuZCByZXBsYWNlIGl0IHdpdGgganVzdCBhbiBgaW5mb2AgcHJvcGVy
dHkuCisKKyAgICAgICAgQ2hhbmdlcyBhcmUgY292ZXJlZCBieSBuZXcgYW5kIGV4aXN0aW5nIEFQ
SSB0ZXN0cy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFByb21pc2VkQXR0YWNobWVudEluZm8+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFByb21pc2VkQXR0YWNobWVudEluZm8+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFByb21pc2VkQmxvYkluZm8+OjplbmNvZGUpOiBEZWxldGVk
LgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFByb21pc2VkQmxvYkluZm8+OjpkZWNvZGUp
OiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEF0dGFjaG1lbnRJbmZvPjo6
ZW5jb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxBdHRhY2htZW50
SW5mbz46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oOgorCisgICAgICAgIENvbnRpbnVlIHJlbW92aW5nIGVuY29kaW5nIHN1cHBvcnQg
Zm9yIFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvLiBBZGRpdGlvbmFsbHksIHJlbmFtZSBQcm9taXNl
ZEJsb2JJbmZvIHRvCisgICAgICAgIFByb21pc2VkQXR0YWNobWVudEluZm8uCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoQVBJOjpBdHRhY2ht
ZW50Ojp1cGRhdGVBdHRyaWJ1dGVzKToKKworICAgICAgICBSZW5hbWUgc2V0RGF0YUFuZENvbnRl
bnRUeXBlIHRvIGp1c3QgdXBkYXRlQXR0cmlidXRlczsgaW5zdGVhZCBvZiBzZW5kaW5nIGRhdGEs
IG9ubHkgc2VuZCB0aGUgaW5mb3JtYXRpb24gbmVlZGVkCisgICAgICAgIHRvIHVwZGF0ZSB0aGUg
cHJlc2VudGF0aW9uYWwgYXR0cmlidXRlcyBvZiB0aGUgYXR0YWNobWVudCBlbGVtZW50LgorCisg
ICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnJlcXVlc3RJbmZvKTogRGVsZXRlZC4KKworICAgICAg
ICBKdXN0IGNhbGwgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB3aXRoIHRoZSByZXN1bHQgb2YgYHNl
bGYuaW5mb2AuCisKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6c2V0RGF0YUFuZENvbnRlbnRU
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoK
KworICAgICAgICBBZGQgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOiBhIGNvbnRlbnQgdHlwZSwgYSBm
aWxlIHBhdGgsIGFuZCAob24gQ29jb2EgcGxhdGZvcm1zKSBhbiBOU0ZpbGVXcmFwcGVyLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisKKyAg
ICAgICAgUmVtb3ZlIC1fd2ViVmlldzpkaWRJbnNlcnRBdHRhY2htZW50Oiwgc2luY2UgdGhpcyBp
cyB1bnVzZWQgYnkgYW55IGNsaWVudCBjdXJyZW50bHksIGFuZCBpcyBzdXBlcmNlZGVkIGJ5Cisg
ICAgICAgIC1fd2ViVmlldzpkaWRJbnNlcnRBdHRhY2htZW50OndpdGhTb3VyY2U6LgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfZGlkSW5zZXJ0QXR0YWNobWVudDp3aXRoU291cmNlOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2RpZFJlbW92ZUF0dGFjaG1lbnQ6XSk6CisKKyAgICAgICAgTG9vayB1cCB0aGUgQVBJ
OjpBdHRhY2htZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGlkZW50aWZpZXIsIGFuZCBzZW5kIGl0
cyB3cmFwcGVyIG9iamVjdCB0byB0aGUgY2xpZW50LgorCisgICAgICAgICgtW1dLV2ViVmlldyBf
aW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpjb250ZW50VHlwZTpkYXRhOm9wdGlvbnM6Y29t
cGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbnNlcnRBdHRhY2htZW50V2l0aEZp
bGVXcmFwcGVyOmNvbnRlbnRUeXBlOm9wdGlvbnM6Y29tcGxldGlvbjpdKToKKworICAgICAgICBB
ZGQgYSB3YXkgdG8gaW5zZXJ0IGFuIGF0dGFjaG1lbnQgdXNpbmcgTlNGaWxlV3JhcHBlciwgYW5k
IHJlaW1wbGVtZW50IF9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOiB1c2luZyBpdC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVu
dEluZm8gaW5pdFdpdGhGaWxlV3JhcHBlcjpmaWxlUGF0aDpjb250ZW50VHlwZTpdKToKKyAgICAg
ICAgKC1bX1dLQXR0YWNobWVudEluZm8gZGF0YV0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50
SW5mbyBuYW1lXSk6CisgICAgICAgIChpc0RlY2xhcmVkT3JEeW5hbWljVHlwZUlkZW50aWZpZXIp
OgorICAgICAgICAoLVtfV0tBdHRhY2htZW50SW5mbyBfdHlwZUlkZW50aWZpZXJGcm9tUGF0aEV4
dGVuc2lvbl0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50SW5mbyBjb250ZW50VHlwZV0pOgor
ICAgICAgICAoLVtfV0tBdHRhY2htZW50SW5mbyBtaW1lVHlwZV0pOgorICAgICAgICAoLVtfV0tB
dHRhY2htZW50SW5mbyB1dGlUeXBlXSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnRJbmZvIGZp
bGVXcmFwcGVyXSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgaW5mb10pOgorICAgICAgICAo
LVtfV0tBdHRhY2htZW50IHJlcXVlc3RJbmZvOl0pOgorCisgICAgICAgIEFkZCBhIHByb3BlcnR5
IG9uIF9XS0F0dGFjaG1lbnQgdG8gcmV0cmlldmUgYSBfV0tBdHRhY2htZW50SW5mbyAoYSBzbmFw
c2hvdCBvZiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUKKyAgICAgICAgYXR0YWNobWVudCwgYWxv
bmcgd2l0aCB0aGUgTlNGaWxlV3JhcHBlcikuIFJlaW1wbGVtZW50IHJlcXVlc3RJbmZvIHVzaW5n
IHRoaXMgcHJvcGVydHkuCisKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCBzZXRGaWxlV3JhcHBl
cjpjb250ZW50VHlwZTpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50IHNl
dERhdGE6bmV3Q29udGVudFR5cGU6bmV3RmlsZW5hbWU6Y29tcGxldGlvbjpdKToKKworICAgICAg
ICBSZWltcGxlbWVudGVkIGJ5IGNhbGxpbmcgLXNldEZpbGVXcmFwcGVyOmNvbnRlbnRUeXBlOmNv
bXBsZXRpb246IHdpdGggYW4gTlNGaWxlV3JhcHBlciBjcmVhdGVkIHVzaW5nIHRoZSBnaXZlbgor
ICAgICAgICBkYXRhLiBBZGRpdGlvbmFsbHksIGNyZWF0ZSBhbmQgYXNzb2NpYXRlIHRoZSB1bmlx
dWUgaWRlbnRpZmllciB3aXRoIGFuIEFQSTo6QXR0YWNobWVudCByaWdodCBhd2F5LgorCisgICAg
ICAgICgtW19XS0F0dGFjaG1lbnQgdW5pcXVlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtfV0tB
dHRhY2htZW50IGRlc2NyaXB0aW9uXSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnRJbmZvIGlu
aXRXaXRoSW5mbzpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bX1dLQXR0YWNobWVudEluZm8gZmls
ZUxvYWRpbmdFcnJvcl0pOiBEZWxldGVkLgorICAgICAgICAoLVtfV0tBdHRhY2htZW50IGlzRXF1
YWw6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgaGFzaF0pOiBEZWxldGVk
LgorCisgICAgICAgIFRoZXJlJ3Mgbm8gbG9uZ2VyIGFueSBwb2ludCB0byBpbXBsZW1lbnRpbmcg
dGhlc2UgbWV0aG9kcywgc2luY2UgdGhlIFNQSSBjbGllbnQgaXMgbm93IGd1YXJhbnRlZWQgYSB1
bmlxdWUKKyAgICAgICAgbWFwcGluZyBvZiBfV0tBdHRhY2htZW50cyB0byBhdHRhY2htZW50IGVs
ZW1lbnRzIGluIHRoZSBkb2N1bWVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdl
Q2xpZW50SW1wbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29h
OjpkaWRJbnNlcnRBdHRhY2htZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1S
ZWdpc3RlckF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRm
b3JtQ2xvbmVBdHRhY2htZW50KToKKworICAgICAgICBFeHRlbmQgdGhlIGJlaGF2aW9yIG9mIHJl
Z2lzdGVyaW5nIG5ldyBhdHRhY2htZW50IGRhdGEgb24gQ29jb2EgcGxhdGZvcm1zIGJ5IGFkZGl0
aW9uYWxseSBjcmVhdGluZyBhbmQgc2V0dGluZworICAgICAgICBOU0ZpbGVXcmFwcGVycyBvbiB0
aGUgQVBJOjpBdHRhY2htZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vz
c0V4aXRlZCk6CisKKyAgICAgICAgQ2xlYXIgb3V0IHRoZSBtYXAgb2YgYXR0YWNobWVudCBpZGVu
dGlmaWVycyB0byBBUEk6OkF0dGFjaG1lbnRzIHdoZW4gdGhlIHdlYiBjb250ZW50IHByb2Nlc3Mg
aXMgdGVybWluYXRlZC4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dGFjaG1l
bnRGb3JJZGVudGlmaWVyIGNvbnN0KToKKworICAgICAgICBIZWxwZXIgZnVuY3Rpb24gdG8gbG9v
ayB1cCBhbiBBUEk6OkF0dGFjaG1lbnQgZm9yIHRoZSBnaXZlbiBhdHRhY2htZW50IGlkZW50aWZp
ZXIuIFJldHVybnMgbnVsbCBpZiB0aGUKKyAgICAgICAgYXR0YWNobWVudCBpcyBub3QgZm91bmQs
IG9yIHRoZSBhdHRhY2htZW50IGlkZW50aWZpZXIgaXMgaW52YWxpZC4KKworICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXJGcm9tRmlsZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb25lQXR0
YWNobWVudERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVn
aXN0ZXJBdHRhY2htZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9y
bUNsb25lQXR0YWNobWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkSW5z
ZXJ0QXR0YWNobWVudCk6CisKKyAgICAgICAgQ3JlYXRlIGFuIGVudHJ5IGluIHRoZSBhdHRhY2ht
ZW50IGlkZW50aWZpZXIgdG8gQVBJOjpBdHRhY2htZW50IG1hcCB3aGVuIGFuIGF0dGFjaG1lbnQg
aXMgaW5zZXJ0ZWQsIGlmIG9uZSBkb2VzCisgICAgICAgIG5vdCBhbHJlYWR5IGV4aXN0LiBBbiBh
dHRhY2htZW50IG1hcHBpbmcgd291bGQgbm90IGV4aXN0IG9ubHkgaW4gdGhlIGNhc2Ugd2hlcmUg
YW4gYXR0YWNobWVudCBlbGVtZW50IHdhcworICAgICAgICBjcmVhdGVkIHZpYSBiaW5kaW5nczsg
aW4gdGhpcyBjYXNlLCB0aGUgY2xpZW50IHdvdWxkbid0IGhhdmUgYWNjZXNzIHRvIGFuIE5TRmls
ZVdyYXBwZXIgY29udGFpbmluZyB0aGUgY29udGVudHMKKyAgICAgICAgb2YgdGhlIGZpbGU7IGlu
IHRoZSBmdXR1cmUsIHRoaXMgY2FuIGJlIGltcHJvdmVkIGJ5IGFkZGluZyBhIG1lY2hhbmlzbSB0
byByZWdpc3RlciBhbiBhdHRhY2htZW50IGVsZW1lbnQgd2l0aAorICAgICAgICB0aGlzIGRhdGEs
IGJ1dCBmb3Igbm93LCB0aGlzIGlzIHVubmVjZXNzYXJ5IGZvciBNYWlsJ3MgcHVycG9zZXMuCisK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZW1vdmVBdHRhY2htZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjplbnN1cmVBdHRhY2htZW50KToKKworICAgICAg
ICBFbnN1cmVzIGFuIGF0dGFjaG1lbnQgaWRlbnRpZmllciB0byBBUEk6OkF0dGFjaG1lbnQgbWFw
cGluZy4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dGFjaG1lbnRJbmZvQ2Fs
bGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RB
dHRhY2htZW50SW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2V0QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfc3RhcnREcmFnOml0ZW06XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
X3ByZXBhcmVUb0RyYWdQcm9taXNlZEF0dGFjaG1lbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3ByZXBhcmVUb0RyYWdQcm9taXNlZEJsb2I6XSk6IERlbGV0ZWQuCisKKyAgICAgICAg
UmVpbXBsZW1lbnQgdGhlIHdheSBwcm9taXNlZCBhdHRhY2htZW50IGRhdGEgaXMgZGVsaXZlcmVk
IHRvIHRoZSBkZXN0aW5hdGlvbiB3aGVuIGFuIGF0dGFjaG1lbnQgZWxlbWVudCBpcworICAgICAg
ICBkcmFnZ2VkLiBJbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhlIGJsb2IgVVJMIG9mIHRoZSBGaWxl
IG9uIHRoZSBhdHRhY2htZW50IGVsZW1lbnQsIGZpcnN0IHRyeSB0byBmaW5kIGFuIEFQSQorICAg
ICAgICBBdHRhY2htZW50IG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoZSB1bmlxdWUgaWRlbnRp
ZmllciBvZiB0aGUgZHJhZ2dlZCBhdHRhY2htZW50LCBhbmQgdXNlIGl0cyBOU0ZpbGVXcmFwcGVy
IHRvCisgICAgICAgIGRlbGl2ZXIgcHJvbWlzZWQgZGF0YSB0byB0aGUgZGVzdGluYXRpb24gZmls
ZSBVUkwuIFRoZSBibG9iIFVSTCBjb2RlcGF0aCBzdGlsbCBleGlzdHMgaW4gdGhlIGNhc2Ugd2hl
cmUgc2NyaXB0CisgICAgICAgIHNwZWNpZmllcyB0aGUgZHJhZ2dlZCBhdHRhY2htZW50J3MgRmls
ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpjbG9uZUF0dGFjaG1lbnREYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6aW5zZXJ0QXR0YWNobWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0
ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVz
dEF0dGFjaG1lbnRJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0
QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKworICAgICAgICBNb3JlIHJlbmFtaW5nIGFuZCBJUEMgbWVzc2Fn
ZSBwbHVtYmluZy4KKwogMjAxOC0wOC0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IEdUSy9XUEUgY29va2llIEFQ
SSB0ZXN0cyBhZnRlciByMjM0Mzk2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU5OTZmZWQ0N2M4OTgxMGFlYjhlOTQ1NjIyMWJj
OGQ2Y2E0NTAzMTQuLjIyNTIxMThmODgwYjExZjJmMTg2OTM3YTYyZmU2ZjA2OGUwOWIzMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQ4MTcsNyArNDgxNyw3IEBACiAJCUY0Nzg3NTU0MTk5ODNBRkYwMDI0QTI4NyAvKiBTY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQ3ODc1NTIxOTk4M0FGRjAwMjRBMjg3IC8qIFNjcm9sbFNuYXBBbmltYXRv
clN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRjQ3QTA5RDEyMEE5M0E5NzAwMjQwRkFFIC8qIERpc2FibGVkQWRhcHRhdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0N0EwOUNGMjBBOTM5
RjYwMDI0MEZBRSAvKiBEaXNhYmxlZEFkYXB0YXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ3QTVFM0UxOTVCOEM4QTAwNDgzMTAwIC8q
IFN0eWxlU2Nyb2xsU25hcFBvaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQ3QTVFM0IxOTVCOEM4QTAwNDgzMTAwIC8qIFN0eWxlU2Nyb2xsU25h
cFBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCUY0N0E2MzNEMUZGNkZENTAwMDgxQjNDQyAvKiBQcm9taXNlZEJsb2JJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDdBNjMzQzFGRjZGRDUw
MDA4MUIzQ0MgLyogUHJvbWlzZWRCbG9iSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0N0E2MzNEMUZGNkZENTAwMDgxQjNDQyAvKiBQcm9t
aXNlZEF0dGFjaG1lbnRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDdBNjMzQzFGRjZGRDUwMDA4MUIzQ0MgLyogUHJvbWlzZWRBdHRhY2htZW50
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUY0ODIyMzEwMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4MjIzMEUx
RTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gKi87IH07CiAJ
CUY0ODIyMzExMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgyMjMwRjFF
Mzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0ODIyMzEzMUUzODZFMjQw
MDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzEyMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFj
dFBhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTQ1NjYsNyArMTQ1NjYsNyBAQAogCQlGNDdBMDlENDIwQTlERDA0MDAyNDBGQUUg
LyogRGlzYWJsZWRBZGFwdGF0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNhYmxlZEFk
YXB0YXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ3QTVFM0ExOTVC
OEM4QTAwNDgzMTAwIC8qIFN0eWxlU2Nyb2xsU25hcFBvaW50cy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZVNjcm9sbFNuYXBQb2ludHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNDdBNUUzQjE5NUI4QzhBMDA0ODMxMDAgLyogU3R5bGVT
Y3JvbGxTbmFwUG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxl
U2Nyb2xsU25hcFBvaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNDdBNjMz
QzFGRjZGRDUwMDA4MUIzQ0MgLyogUHJvbWlzZWRCbG9iSW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cm9taXNlZEJsb2JJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0N0E2MzND
MUZGNkZENTAwMDgxQjNDQyAvKiBQcm9taXNlZEF0dGFjaG1lbnRJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFByb21pc2VkQXR0YWNobWVudEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjQ4MjIzMEUxRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgyMjMwRjFF
Mzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0ODIyMzEyMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0
cmFjdFBhc3RlYm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJh
Y3RQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDYwMiw3ICsy
NDYwMiw3IEBACiAJCQkJQkMzQkUxMkEwRTk4MDkyRjAwODM1NTg4IC8qIFBvcHVwTWVudVN0eWxl
LmggKi8sCiAJCQkJNTFGNjQ1RDIxRkVDREJDODAwQjU0REVEIC8qIFByb2Nlc3MuY3BwICovLAog
CQkJCTUxRjY0NUQzMUZFQ0RCQzgwMEI1NERFRCAvKiBQcm9jZXNzLmggKi8sCi0JCQkJRjQ3QTYz
M0MxRkY2RkQ1MDAwODFCM0NDIC8qIFByb21pc2VkQmxvYkluZm8uaCAqLywKKwkJCQlGNDdBNjMz
QzFGRjZGRDUwMDA4MUIzQ0MgLyogUHJvbWlzZWRBdHRhY2htZW50SW5mby5oICovLAogCQkJCTAw
ODFGRUZEMTZCMEEyNDQwMDhBQUE3QSAvKiBQdWJsaWNTdWZmaXguaCAqLywKIAkJCQk1Qzk3QTMz
NjFGNUY3QTY1MDAxMDUyMDcgLyogUmVjdEVkZ2VzLmggKi8sCiAJCQkJQ0ExNjM1REMyMDcyRTc2
OTAwRTdEMkNFIC8qIFJlZmVycmVyUG9saWN5LmNwcCAqLywKQEAgLTI5ODUwLDcgKzI5ODUwLDcg
QEAKIAkJCQlBNzE1RTY1MzEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJBNjgyNDBCNUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jl
c3NUcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNBREQ3OTE4ODBEOTFDMDBEOEI3MUQg
LyogUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlGNDdBNjMzRDFG
RjZGRDUwMDA4MUIzQ0MgLyogUHJvbWlzZWRCbG9iSW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RjQ3QTYzM0QxRkY2RkQ1MDAwODFCM0NDIC8qIFByb21pc2VkQXR0YWNobWVudEluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1NzhGNDM1MURFMDBFRUIwMDNERkM2QSAvKiBQcm9taXNlUmVqZWN0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QkJFRDBGMTRGNDAyNUQwMDNGMEI5OCAv
KiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
QkFBRTU4MTk4MEQxREQwMDVERkU3MSAvKiBQcm90ZWN0aW9uU3BhY2UuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMzliNTM0Mjg1OGE1N2U0NTVmMmNlYTg4OTJk
YmRhYmYyODQyY2RiMy4uZGExYWNmNTQ5MzZmNjY2NGQ1MjZmOTM1MDIxOGUzNGI1MjliOWU3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03OTQ0LDE1ICs3OTQ0LDIxIEBAIFZlY3RvcjxS
ZWZQdHI8V2ViQW5pbWF0aW9uPj4gRG9jdW1lbnQ6OmdldEFuaW1hdGlvbnMoKQogdm9pZCBEb2N1
bWVudDo6ZGlkSW5zZXJ0QXR0YWNobWVudEVsZW1lbnQoSFRNTEF0dGFjaG1lbnRFbGVtZW50JiBh
dHRhY2htZW50KQogewogICAgIGF1dG8gaWRlbnRpZmllciA9IGF0dGFjaG1lbnQudW5pcXVlSWRl
bnRpZmllcigpOwotICAgIGlmIChpZGVudGlmaWVyLmlzRW1wdHkoKSB8fCBtX2F0dGFjaG1lbnRJ
ZGVudGlmaWVyVG9FbGVtZW50TWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpKSB7CisgICAgYXV0byBw
cmV2aW91c0lkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIGJvb2wgcHJldmlvdXNJZGVudGlm
aWVySXNOb3RVbmlxdWUgPSAhcHJldmlvdXNJZGVudGlmaWVyLmlzRW1wdHkoKSAmJiBtX2F0dGFj
aG1lbnRJZGVudGlmaWVyVG9FbGVtZW50TWFwLmNvbnRhaW5zKHByZXZpb3VzSWRlbnRpZmllcik7
CisgICAgaWYgKGlkZW50aWZpZXIuaXNFbXB0eSgpIHx8IHByZXZpb3VzSWRlbnRpZmllcklzTm90
VW5pcXVlKSB7CisgICAgICAgIHByZXZpb3VzSWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAg
ICAgIGlkZW50aWZpZXIgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CiAgICAgICAgIGF0
dGFjaG1lbnQuc2V0VW5pcXVlSWRlbnRpZmllcihpZGVudGlmaWVyKTsKICAgICB9CiAKICAgICBt
X2F0dGFjaG1lbnRJZGVudGlmaWVyVG9FbGVtZW50TWFwLnNldChpZGVudGlmaWVyLCBhdHRhY2ht
ZW50KTsKIAotICAgIGlmIChmcmFtZSgpKQotICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS5kaWRJ
bnNlcnRBdHRhY2htZW50RWxlbWVudChhdHRhY2htZW50KTsKKyAgICBpZiAoYXV0byogZnJhbWUg
PSB0aGlzLT5mcmFtZSgpKSB7CisgICAgICAgIGlmIChwcmV2aW91c0lkZW50aWZpZXJJc05vdFVu
aXF1ZSkKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jbG9uZUF0dGFjaG1lbnREYXRhKHBy
ZXZpb3VzSWRlbnRpZmllciwgaWRlbnRpZmllcik7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5k
aWRJbnNlcnRBdHRhY2htZW50RWxlbWVudChhdHRhY2htZW50KTsKKyAgICB9CiB9CiAKIHZvaWQg
RG9jdW1lbnQ6OmRpZFJlbW92ZUF0dGFjaG1lbnRFbGVtZW50KEhUTUxBdHRhY2htZW50RWxlbWVu
dCYgYXR0YWNobWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAxYjIwZDc4MTk5
YzBiMTdkNjc0ZGNlMGU4NTFmMzdiNjVlYWIzMjZhLi5jNGEyZjdiMTY1NDM1YTYzYjlkNGVkNmZj
Mzk2ZjEzMDFmNjBlYWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zODE3LDYg
KzM4MTcsMjQgQEAgdm9pZCBFZGl0b3I6OnNjaGVkdWxlRWRpdG9yVUlVcGRhdGUoKQogCiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAordm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNo
bWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGRhdGEpCit7CisgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQor
ICAgICAgICBjbGllbnQtPnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoaWRlbnRpZmllciwg
Y29udGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBXVEZNb3ZlKGRhdGEpKTsKK30KKwordm9p
ZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQoreworICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAgICAgY2xp
ZW50LT5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBl
LCBmaWxlUGF0aCk7Cit9CisKK3ZvaWQgRWRpdG9yOjpjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0
IFN0cmluZyYgZnJvbUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9JZGVudGlmaWVyKQorewor
ICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5j
bG9uZUF0dGFjaG1lbnREYXRhKGZyb21JZGVudGlmaWVyLCB0b0lkZW50aWZpZXIpOworfQorCiB2
b2lkIEVkaXRvcjo6ZGlkSW5zZXJ0QXR0YWNobWVudEVsZW1lbnQoSFRNTEF0dGFjaG1lbnRFbGVt
ZW50JiBhdHRhY2htZW50KQogewogICAgIGF1dG8gaWRlbnRpZmllciA9IGF0dGFjaG1lbnQudW5p
cXVlSWRlbnRpZmllcigpOwpAQCAtMzg2MSwyOCArMzg3OSwxMSBAQCB2b2lkIEVkaXRvcjo6bm90
aWZ5Q2xpZW50T2ZBdHRhY2htZW50VXBkYXRlcygpCiAgICAgfQogfQogCi12b2lkIEVkaXRvcjo6
aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1l
bnREaXNwbGF5T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiBmaWxlcGF0aCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlKQotewot
ICAgIGlmICghY29udGVudFR5cGUpCi0gICAgICAgIGNvbnRlbnRUeXBlID0gRmlsZTo6Y29udGVu
dFR5cGVGb3JGaWxlKGZpbGVuYW1lKTsKLSAgICBpbnNlcnRBdHRhY2htZW50RnJvbUZpbGUoaWRl
bnRpZmllciwgb3B0aW9ucywgZmlsZW5hbWUsICpjb250ZW50VHlwZSwgRmlsZTo6Y3JlYXRlKGZp
bGVwYXRoKSk7Ci19Ci0KLXZvaWQgRWRpdG9yOjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgQXR0YWNobWVudERpc3BsYXlPcHRpb25zJiBvcHRpb25zLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSkKLXsKLSAgICBpZiAoIWNvbnRlbnRUeXBlKQotICAg
ICAgICBjb250ZW50VHlwZSA9IEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxlbmFtZSk7Ci0g
ICAgaW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGlkZW50aWZpZXIsIG9wdGlvbnMsIGZpbGVuYW1l
LCAqY29udGVudFR5cGUsIEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoV1RGTW92ZShkYXRhKSwg
KmNvbnRlbnRUeXBlKSwgZmlsZW5hbWUpKTsKLX0KLQotdm9pZCBFZGl0b3I6Omluc2VydEF0dGFj
aG1lbnRGcm9tRmlsZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnRE
aXNwbGF5T3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIFJlZjxGaWxlPiYmIGZpbGUpCit2b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVu
dChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9u
cyYsIHVpbnQ2NF90IGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4mJiBleHBsaWNpdENvbnRlbnRUeXBlKQogewogICAgIGF1dG8gYXR0YWNobWVu
dCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRh
ZywgZG9jdW1lbnQoKSk7Ci0gICAgYXR0YWNobWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6
dGl0bGVBdHRyLCBmaWxlbmFtZSk7Ci0gICAgYXR0YWNobWVudC0+c2V0QXR0cmlidXRlKEhUTUxO
YW1lczo6c3VidGl0bGVBdHRyLCBmaWxlU2l6ZURlc2NyaXB0aW9uKGZpbGUtPnNpemUoKSkpOwot
ICAgIGF0dGFjaG1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnR5cGVBdHRyLCBjb250ZW50
VHlwZSk7CiAgICAgYXR0YWNobWVudC0+c2V0VW5pcXVlSWRlbnRpZmllcihpZGVudGlmaWVyKTsK
LSAgICBhdHRhY2htZW50LT5zZXRGaWxlKFdURk1vdmUoZmlsZSkpOworICAgIGF0dGFjaG1lbnQt
PnVwZGF0ZUF0dHJpYnV0ZXMoZmlsZVNpemUsIFdURk1vdmUoZXhwbGljaXRDb250ZW50VHlwZSks
IGZpbGVOYW1lKTsKIAogICAgIGF1dG8gZnJhZ21lbnRUb0luc2VydCA9IGRvY3VtZW50KCkuY3Jl
YXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgIGZyYWdtZW50VG9JbnNlcnQtPmFwcGVuZENoaWxk
KGF0dGFjaG1lbnQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggOGFkNzg4MjBi
MjI1MWZkZDBjZmU2ZTNlMzRiMDM5MDNiYzg0MWIzMi4uZTJiY2M5MWE4ZDM2MzUzMTZlZTZhMmQ0
NDBhNjVhMGM5NDlkNmU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01MDMsOCArNTAz
LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oKSBj
b25zdCB7IHJldHVybiBtX2lzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm87IH0KIAogI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnRB
dHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgQXR0YWNobWVudERpc3Bs
YXlPcHRpb25zJiwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlcGF0
aCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlID0gc3RkOjpudWxsb3B0KTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmLCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBj
b250ZW50VHlwZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNl
cnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgQXR0YWNobWVudERp
c3BsYXlPcHRpb25zJiwgdWludDY0X3QgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIGV4cGxpY2l0Q29udGVudFR5cGUgPSBzdGQ6Om51bGxv
cHQpOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIHByZWZl
cnJlZEZpbGVOYW1lICovLCBSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIHJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiAvKiBjb250
ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBmaWxlUGF0aCAqLyk7CisgICAgdm9pZCBjbG9u
ZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgZnJvbUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgdG9JZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEluc2VydEF0dGFjaG1lbnRFbGVtZW50KEhU
TUxBdHRhY2htZW50RWxlbWVudCYpOwogICAgIHZvaWQgZGlkUmVtb3ZlQXR0YWNobWVudEVsZW1l
bnQoSFRNTEF0dGFjaG1lbnRFbGVtZW50Jik7CiAKQEAgLTUxNiwxMCArNTE4LDYgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsKIAotI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdm9pZCBpbnNlcnRBdHRhY2htZW50RnJvbUZpbGUo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnMm
LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8
RmlsZT4mJik7Ci0jZW5kaWYKLQogICAgIGJvb2wgY2FuRGVsZXRlUmFuZ2UoUmFuZ2UqKSBjb25z
dDsKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsK
ICAgICB2b2lkIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCmluZGV4IDFjYjJiMWNlNmFkY2E0NjU2MTE3Y2RhMjc0YjA4MTFkMzE4OGI0NTkuLmIw
Y2I3OTYyNzgzOGMyMjZmMTVmNzI3YzRkOWRhMGU3YTA3OTc1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0z
NSw2ICszNSw3IEBACiAjaW1wb3J0ICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW1wb3J0ICJEb2N1
bWVudExvYWRlci5oIgogI2ltcG9ydCAiRmlsZS5oIgorI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgog
I2ltcG9ydCAiRnJhbWUuaCIKICNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCiAjaW1wb3J0ICJGcmFt
ZUxvYWRlckNsaWVudC5oIgpAQCAtMjA0LDExICsyMDUsMzAgQEAgc3RhdGljIGJvb2wgc2hvdWxk
UmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKCkKICNlbmRpZgogfQogCi1zdGF0aWMg
UmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KERv
Y3VtZW50JiBkb2N1bWVudCwgUmVmPEJsb2I+JiYgYmxvYikKKyNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQorCitzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0
YShjb25zdCBGcmFtZSYgZnJhbWUpCit7CisgICAgaWYgKGF1dG8qIGNsaWVudCA9IGZyYW1lLmVk
aXRvcigpLmNsaWVudCgpKQorICAgICAgICByZXR1cm4gY2xpZW50LT5zdXBwb3J0c0NsaWVudFNp
ZGVBdHRhY2htZW50RGF0YSgpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYKKwor
c3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNo
bWVudChGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1l
bnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKLSAgICBhdHRh
Y2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShibG9iLCBBdG9taWNTdHJpbmcoImltYWdlIikp
LCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOwor
ICAgIC8vIEZJWE1FOiBUaGlzIGZhbGxiYWNrIGltYWdlIG5hbWUgbmVlZHMgdG8gYmUgYSBsb2Nh
bGl6ZWQgc3RyaW5nLgorICAgIFN0cmluZyBkZWZhdWx0SW1hZ2VBdHRhY2htZW50TmFtZSB7ICJp
bWFnZSJfcyB9OworCisgICAgaWYgKHN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGZy
YW1lKSkgeworICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKGJ1ZmZlci0+c2l6
ZSgpLCBjb250ZW50VHlwZSwgZGVmYXVsdEltYWdlQXR0YWNobWVudE5hbWUpOworICAgICAgICBm
cmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGF0dGFjaG1lbnQtPmVu
c3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgY29udGVudFR5cGUsIGRlZmF1bHRJbWFnZUF0dGFjaG1l
bnROYW1lLCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0gZWxzZQorICAgICAgICBhdHRhY2htZW50
LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgpLCBjb250ZW50
VHlwZSksIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKIAogICAgIGF1dG8gZnJhZ21lbnQgPSBk
b2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgZnJhZ21lbnQtPmFwcGVuZENo
aWxkKGF0dGFjaG1lbnQpOwpAQCAtMjIwLDExICsyNDAsMTMgQEAgc3RhdGljIFJlZjxEb2N1bWVu
dEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChEb2N1bWVudCYgZG9j
dW1lbnQKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0
YWNobWVudHMoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0IFZlY3RvcjxSZWY8QXJj
aGl2ZVJlc291cmNlPj4mIHN1YnJlc291cmNlcykKK3N0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyYWdt
ZW50LCBjb25zdCBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiBzdWJyZXNvdXJjZXMpCiB7
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBzdHJ1Y3QgQXR0YWNobWVudFJl
cGxhY2VtZW50SW5mbyB7Ci0gICAgICAgIFJlZjxGaWxlPiBmaWxlOworICAgICAgICBTdHJpbmcg
ZmlsZU5hbWU7CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZTsKKyAgICAgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IGVsZW1lbnRUb1JlcGxhY2U7CiAg
ICAgfTsKIApAQCAtMjMzLDExICsyNTUsMTEgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250
ZW50V2l0aEF0dGFjaG1lbnRzKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBjb25zdAogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogSGFuZGxlIHJlc291cmNlcyBpbiBzdWJmcmFt
ZSBhcmNoaXZlcy4KLSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmPEJsb2I+PiB1cmxUb0Js
b2JNYXA7Ci0gICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291cmNlPiYgc3VicmVzb3VyY2Ug
OiBzdWJyZXNvdXJjZXMpIHsKKyAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmPEFyY2hpdmVS
ZXNvdXJjZT4+IHVybFRvUmVzb3VyY2VNYXA7CisgICAgZm9yIChhdXRvJiBzdWJyZXNvdXJjZSA6
IHN1YnJlc291cmNlcykgewogICAgICAgICBhdXRvJiB1cmwgPSBzdWJyZXNvdXJjZS0+dXJsKCk7
CiAgICAgICAgIGlmIChzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwodXJsKSkKLSAgICAgICAg
ICAgIHVybFRvQmxvYk1hcC5zZXQodXJsLnN0cmluZygpLCBCbG9iOjpjcmVhdGUoc3VicmVzb3Vy
Y2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpKTsKKyAgICAgICAgICAgIHVybFRv
UmVzb3VyY2VNYXAuc2V0KHVybC5zdHJpbmcoKSwgc3VicmVzb3VyY2UuY29weVJlZigpKTsKICAg
ICB9CiAKICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBlbGVtZW50c1RvUmVtb3ZlOwpAQCAtMjQ3
LDE1ICsyNjksMTUgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1l
bnRzKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBjb25zdAogICAgICAgICBpZiAocmVzb3Vy
Y2VVUkxTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
YXV0byBibG9iID0gdXJsVG9CbG9iTWFwLmdldChyZXNvdXJjZVVSTFN0cmluZyk7Ci0gICAgICAg
IGlmICghYmxvYikKKyAgICAgICAgYXV0byByZXNvdXJjZSA9IHVybFRvUmVzb3VyY2VNYXAuZmlu
ZChyZXNvdXJjZVVSTFN0cmluZyk7CisgICAgICAgIGlmIChyZXNvdXJjZSA9PSB1cmxUb1Jlc291
cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byB0aXRs
ZSA9IFVSTFBhcnNlciB7IHJlc291cmNlVVJMU3RyaW5nIH0ucmVzdWx0KCkubGFzdFBhdGhDb21w
b25lbnQoKTsKLSAgICAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRpdGxl
ID0gQXRvbWljU3RyaW5nKCJtZWRpYSIpOworICAgICAgICBhdXRvIG5hbWUgPSBVUkxQYXJzZXIg
eyByZXNvdXJjZVVSTFN0cmluZyB9LnJlc3VsdCgpLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAg
ICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG5hbWUgPSBBdG9taWNTdHJpbmco
Im1lZGlhIik7CiAKLSAgICAgICAgYXR0YWNobWVudFJlcGxhY2VtZW50SW5mby5hcHBlbmQoeyBG
aWxlOjpjcmVhdGUoKmJsb2IsIHRpdGxlKSwgaW1hZ2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRS
ZXBsYWNlbWVudEluZm8uYXBwZW5kKHsgbmFtZSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgp
LCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChh
dXRvJiBvYmplY3QgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21l
bnQpKSB7CkBAIC0yNjUsMjggKzI4NywzMCBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRl
bnRXaXRoQXR0YWNobWVudHMoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYmxvYiA9IHVybFRv
QmxvYk1hcC5nZXQocmVzb3VyY2VVUkxTdHJpbmcpOwotICAgICAgICBpZiAoIWJsb2IpIHsKLSAg
ICAgICAgICAgIGVsZW1lbnRzVG9SZW1vdmUuYXBwZW5kKG9iamVjdCk7CisgICAgICAgIGF1dG8g
cmVzb3VyY2UgPSB1cmxUb1Jlc291cmNlTWFwLmZpbmQocmVzb3VyY2VVUkxTdHJpbmcpOworICAg
ICAgICBpZiAocmVzb3VyY2UgPT0gdXJsVG9SZXNvdXJjZU1hcC5lbmQoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICB9CiAKLSAgICAgICAgYXV0byB0aXRsZSA9IFVSTFBhcnNlciB7
IHJlc291cmNlVVJMU3RyaW5nIH0ucmVzdWx0KCkubGFzdFBhdGhDb21wb25lbnQoKTsKLSAgICAg
ICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRpdGxlID0gQXRvbWljU3RyaW5n
KCJmaWxlIik7CisgICAgICAgIGF1dG8gbmFtZSA9IFVSTFBhcnNlciB7IHJlc291cmNlVVJMU3Ry
aW5nIH0ucmVzdWx0KCkubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQorICAgICAgICAgICAgbmFtZSA9IEF0b21pY1N0cmluZygiZmlsZSIpOwogCi0gICAg
ICAgIGF0dGFjaG1lbnRSZXBsYWNlbWVudEluZm8uYXBwZW5kKHsgRmlsZTo6Y3JlYXRlKCpibG9i
LCB0aXRsZSksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVudFJlcGxhY2VtZW50SW5mby5h
cHBlbmQoeyBuYW1lLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1
ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0
YWNobWVudFJlcGxhY2VtZW50SW5mbykgewotICAgICAgICBhdXRvIGZpbGUgPSBXVEZNb3ZlKGlu
Zm8uZmlsZSk7CiAgICAgICAgIGF1dG8gZWxlbWVudFRvUmVwbGFjZSA9IFdURk1vdmUoaW5mby5l
bGVtZW50VG9SZXBsYWNlKTsKICAgICAgICAgYXV0byBwYXJlbnQgPSBtYWtlUmVmUHRyKGVsZW1l
bnRUb1JlcGxhY2UtPnBhcmVudE5vZGUoKSk7CiAgICAgICAgIGlmICghcGFyZW50KQogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1l
bnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBmcmFnbWVudC5kb2N1
bWVudCgpKTsKLSAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShXVEZNb3ZlKGZpbGUpLCBIVE1M
QXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAg
ICBpZiAoc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7CisgICAgICAg
ICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKGluZm8uZGF0YS0+c2l6ZSgpLCBpbmZv
LmNvbnRlbnRUeXBlLCBpbmZvLmZpbGVOYW1lKTsKKyAgICAgICAgICAgIGZyYW1lLmVkaXRvcigp
LnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRl
bnRpZmllcigpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpLCBXVEZNb3ZlKGluZm8uZmlsZU5h
bWUpLCBXVEZNb3ZlKGluZm8uZGF0YSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGF0
dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShpbmZvLmRhdGEsIGlu
Zm8uY29udGVudFR5cGUpLCBpbmZvLmZpbGVOYW1lKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpV
cGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKKwogICAgICAgICBwYXJlbnQtPnJlcGxhY2VD
aGlsZChhdHRhY2htZW50LCBlbGVtZW50VG9SZXBsYWNlKTsKICAgICB9CiAKQEAgLTM0OSw3ICsz
NzMsNyBAQCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNv
dXJjZXMoRnJhbWUmIGZyYW1lLCBOU0F0dHJpYnV0ZQogICAgIHJlcGxhY2VTdWJyZXNvdXJjZVVS
THNXaXRoVVJMc0Zyb21DbGllbnQoKmZyYWdtZW50QW5kUmVzb3VyY2VzLmZyYWdtZW50LCBmcmFn
bWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMsIHVucmVwbGFjZWRSZXNvdXJjZXMpOwogCiAgICAg
aWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cygpKSB7Ci0gICAgICAg
IHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cygqZnJhZ21lbnRBbmRSZXNvdXJjZXMu
ZnJhZ21lbnQsIHVucmVwbGFjZWRSZXNvdXJjZXMpOworICAgICAgICByZXBsYWNlUmljaENvbnRl
bnRXaXRoQXR0YWNobWVudHMoZnJhbWUsICpmcmFnbWVudEFuZFJlc291cmNlcy5mcmFnbWVudCwg
dW5yZXBsYWNlZFJlc291cmNlcyk7CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKGZyYWdtZW50QW5k
UmVzb3VyY2VzLmZyYWdtZW50KTsKICAgICB9CiAKQEAgLTM4Nyw3ICs0MTEsNyBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShT
aGFyZWRCdWZmZXImIGJ1ZgogICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpm
cm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgp
LnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VO
b25OdWxsKCkgfTsKIH0KIAotc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZl
KERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZlJiBtYXJrdXBB
bmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0ZDo6ZnVuY3Rp
b248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQorc3RhdGljIFN0
cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRl
c3RpbmF0aW9uRG9jdW1lbnQsIE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1T
T0xpc3RRdWlya3MgbXNvTGlzdFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0
IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCiB7CiAgICAgYXV0byBwYWdlID0gY3Jl
YXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KCk7CiAgICAgRG9jdW1lbnQqIHN0YWdpbmdE
b2N1bWVudCA9IHBhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCk7CkBAIC0zOTgsNyArNDIyLDcg
QEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKERvY3VtZW50JiBkZXN0
aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmQKICAgICByZXBsYWNlU3VicmVzb3VyY2VVUkxzV2l0
aFVSTHNGcm9tQ2xpZW50KGZyYWdtZW50LCBtYXJrdXBBbmRBcmNoaXZlLmFyY2hpdmUtPnN1YnJl
c291cmNlcygpLCB1bnJlcGxhY2VkUmVzb3VyY2VzKTsKIAogICAgIGlmIChzaG91bGRSZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoKSkgewotICAgICAgICByZXBsYWNlUmljaENvbnRl
bnRXaXRoQXR0YWNobWVudHMoZnJhZ21lbnQsIHVucmVwbGFjZWRSZXNvdXJjZXMpOworICAgICAg
ICByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoZnJhbWUsIGZyYWdtZW50LCB1bnJl
cGxhY2VkUmVzb3VyY2VzKTsKICAgICAgICAgcmV0dXJuIHNhbml0aXplZE1hcmt1cEZvckZyYWdt
ZW50SW5Eb2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1bWVudCwgbXNvTGlz
dFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOwogICAgIH0KIApAQCAtNDI4LDcgKzQ1
Miw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShEb2N1bWVudCYg
ZGVzdGluYXRpb25Eb2N1bWVudCwgTWFya3VwQW5kCiAKICAgICAgICAgTWFya3VwQW5kQXJjaGl2
ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3Vy
Y2UtPmRhdGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwK
ICAgICAgICAgICAgIHN1YmZyYW1lTWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZy
YW1lQXJjaGl2ZS5jb3B5UmVmKCkgfTsKLSAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNh
bml0aXplTWFya3VwV2l0aEFyY2hpdmUoZGVzdGluYXRpb25Eb2N1bWVudCwgc3ViZnJhbWVDb250
ZW50LCBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01JTUVUeXBlQXNIVE1MKTsKKyAg
ICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJh
bWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1aXJrczo6
RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKICAgICAgICAgQ1N0cmluZyB1dGY4
ID0gc3ViZnJhbWVNYXJrdXAudXRmOCgpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gYmxvYkJ1
ZmZlcjsKQEAgLTQ2OSw3ICs0OTMsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJB
cmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICBTdHJpbmcgc2FuaXRpemVkTWFya3VwID0gc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2
ZSgqZnJhbWUuZG9jdW1lbnQoKSwgKnJlc3VsdCwgbXNvTGlzdFF1aXJrc0Zvck1hcmt1cCgpLCBb
Jl0gKGNvbnN0IFN0cmluZyYgdHlwZSkgeworICAgIFN0cmluZyBzYW5pdGl6ZWRNYXJrdXAgPSBz
YW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCAqZnJhbWUuZG9jdW1lbnQoKSwgKnJlc3Vs
dCwgbXNvTGlzdFF1aXJrc0Zvck1hcmt1cCgpLCBbJl0gKGNvbnN0IFN0cmluZyYgdHlwZSkgewog
ICAgICAgICByZXR1cm4gZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2FuU2hvd01JTUVUeXBlQXNI
VE1MKHR5cGUpOwogICAgIH0pOwogICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFy
a3VwKCpmcmFtZS5kb2N1bWVudCgpLCBzYW5pdGl6ZWRNYXJrdXAsIGJsYW5rVVJMKCksIERpc2Fs
bG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCk7CkBAIC00OTYsNyArNTIwLDcgQEAgYm9vbCBX
ZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgbWFya3VwID0gc2FuaXRpemVN
YXJrdXBXaXRoQXJjaGl2ZSgqZnJhbWUuZG9jdW1lbnQoKSwgKnJlc3VsdCwgbXNvTGlzdFF1aXJr
c0Zvck1hcmt1cCgpLCBbJl0gKGNvbnN0IFN0cmluZyYgdHlwZSkgeworICAgIG1hcmt1cCA9IHNh
bml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJhbWUsICpmcmFtZS5kb2N1bWVudCgpLCAqcmVzdWx0
LCBtc29MaXN0UXVpcmtzRm9yTWFya3VwKCksIFsmXSAoY29uc3QgU3RyaW5nJiB0eXBlKSB7CiAg
ICAgICAgIHJldHVybiBmcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5TaG93TUlNRVR5cGVBc0hU
TUwodHlwZSk7CiAgICAgfSk7CiAKQEAgLTYzNSwxMSArNjU5LDEwIEBAIGJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIHR5cGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGF1dG8gYmxvYiA9
IEJsb2I6OmNyZWF0ZShidWZmZXIuZ2V0KCksIHR5cGUpOwogICAgIGlmIChzaG91bGRSZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoKSkKLSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRl
RnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoZG9jdW1lbnQsIFdURk1vdmUoYmxvYikpKTsKKyAg
ICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoZnJhbWUs
IGRvY3VtZW50LCBXVEZNb3ZlKGJ1ZmZlciksIHR5cGUpKTsKICAgICBlbHNlCi0gICAgICAgIGFk
ZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6
Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBibG9iKSkpOworICAgICAgICBhZGRGcmFnbWVudChj
cmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgdHlwZSkpKSk7CiAKICAg
ICByZXR1cm4gZnJhZ21lbnQ7CiB9CkBAIC02NTcsNyArNjgwLDE1IEBAIGJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNobWVudEVs
ZW1lbnRFbmFibGVkKCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBwYXRoIDogcGF0aHMpIHsKICAg
ICAgICAgICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRl
KEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwotICAgICAgICAgICAgYXR0YWNo
bWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUocGF0aCksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6
VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CisgICAgICAgICAgICBpZiAoc3VwcG9ydHND
bGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7CisgICAgICAgICAgICAgICAgbG9uZyBs
b25nIGZpbGVTaXplIHsgMCB9OworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmdldEZpbGVT
aXplKHBhdGgsIGZpbGVTaXplKTsKKyAgICAgICAgICAgICAgICBhdXRvIGNvbnRlbnRUeXBlID0g
RmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKHBhdGgpOworICAgICAgICAgICAgICAgIGF0dGFjaG1l
bnQtPnVwZGF0ZUF0dHJpYnV0ZXMoZmlsZVNpemUsIGNvbnRlbnRUeXBlLCBGaWxlU3lzdGVtOjpw
YXRoR2V0RmlsZU5hbWUocGF0aCkpOworICAgICAgICAgICAgICAgIGZyYW1lLmVkaXRvcigpLnJl
Z2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRlbnRp
ZmllcigpLCBjb250ZW50VHlwZSwgcGF0aCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShwYXRoKSwgSFRNTEF0dGFj
aG1lbnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKKwogICAgICAgICAg
ICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnQpOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdHRhY2htZW50VHlwZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQXR0YWNobWVudFR5cGVzLmgKaW5kZXggYjUwNzdjYTQwODIyMTc1NTBl
MWJmNWNiNzQyODVjYzRhNDNlZTZjYy4uODliYmNhYmFlOGYzNDEyYTdlZTU5MmJkNjZiMDlhZTg4
Y2UyNDMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdHRhY2htZW50VHlwZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F0dGFjaG1lbnRUeXBlcy5oCkBAIC0zMiw4ICsz
Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwotCiBz
dHJ1Y3QgQXR0YWNobWVudERpc3BsYXlPcHRpb25zIHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXR0YWNobWVudERpc3BsYXlPcHRpb25zPiBkZWNv
ZGUoRGVjb2RlciYpOwpAQCAtNTAsMTMgKzQ4LDYgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
aW5saW5lIHN0ZDo6b3B0aW9uYWw8QXR0YWNobWVudERpc3BsYXlPcHRpb25zPiBBdHRhY2htZW4K
ICAgICByZXR1cm4gQXR0YWNobWVudERpc3BsYXlPcHRpb25zKCk7CiB9CiAKLXN0cnVjdCBBdHRh
Y2htZW50SW5mbyB7Ci0gICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgIFN0cmluZyBuYW1lOwot
ICAgIFN0cmluZyBmaWxlUGF0aDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwotfTsK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cAppbmRleCBlMTcxOWNkMTFmNjY2MDM1YmQ4MDRkYjNiOTdiMmYzMzZhMDBmMzA2Li5lNzQ5NzVm
MDlmZWQwNTM1OGY2OWExM2ZkZmE2NmRhZWI4MTBjYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0zMiwxNCArMzIsMTMgQEAKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZpbGUuaCIK
LSNpbmNsdWRlICJGaWxlUmVhZGVyTG9hZGVyLmgiCi0jaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRl
ckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiUmVuZGVyQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2luY2x1ZGUgPHBhbC9GaWxlU2l6ZUZvcm1hdHRlci5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00NywzNiArNDYsNiBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSFRNTEF0
dGFjaG1lbnRFbGVtZW50KTsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotY2xhc3Mg
QXR0YWNobWVudERhdGFSZWFkZXIgOiBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBdHRhY2htZW50RGF0YVJlYWRlcj4g
Y3JlYXRlKEhUTUxBdHRhY2htZW50RWxlbWVudCYgYXR0YWNobWVudCwgRnVuY3Rpb248dm9pZChS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4mJiBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEF0dGFjaG1lbnREYXRhUmVhZGVyPihhdHRhY2htZW50LCBXVEZN
b3ZlKGNhbGxiYWNrKSk7Ci0gICAgfQotCi0gICAgQXR0YWNobWVudERhdGFSZWFkZXIoSFRNTEF0
dGFjaG1lbnRFbGVtZW50JiBhdHRhY2htZW50LCBGdW5jdGlvbjx2b2lkKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYpPiYmIGNhbGxiYWNrKQotICAgICAgICA6IG1fYXR0YWNobWVudChhdHRhY2htZW50
KQotICAgICAgICAsIG1fY2FsbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYpPj4oV1RGTW92ZShjYWxsYmFjaykpKQotICAgICAgICAsIG1f
bG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8RmlsZVJlYWRlckxvYWRlcj4oRmlsZVJlYWRlckxvYWRl
cjo6UmVhZFR5cGU6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKSkKLSAgICB7Ci0gICAgICAgIG1f
bG9hZGVyLT5zdGFydCgmYXR0YWNobWVudC5kb2N1bWVudCgpLCAqYXR0YWNobWVudC5maWxlKCkp
OwotICAgIH0KLQotICAgIH5BdHRhY2htZW50RGF0YVJlYWRlcigpOwotCi1wcml2YXRlOgotICAg
IHZvaWQgZGlkU3RhcnRMb2FkaW5nKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YSgpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwotICAgIHZv
aWQgZGlkRmFpbChpbnQgZXJyb3IpIGZpbmFsOwotCi0gICAgdm9pZCBpbnZva2VDYWxsYmFja0Fu
ZEZpbmlzaFJlYWRpbmcoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7Ci0KLSAgICBIVE1MQXR0YWNo
bWVudEVsZW1lbnQmIG1fYXR0YWNobWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb248
dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4+IG1fY2FsbGJhY2s7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPEZpbGVSZWFkZXJMb2FkZXI+IG1fbG9hZGVyOwotfTsKLQogSFRNTEF0dGFjaG1lbnRF
bGVtZW50OjpIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CkBAIC0xNDAsNiArMTA5LDEzIEBAIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpy
ZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHR5cGUsIENvbnRhaW5lck5vZGUmCiAgICAg
ICAgIGRvY3VtZW50KCkuZGlkUmVtb3ZlQXR0YWNobWVudEVsZW1lbnQoKnRoaXMpOwogfQogCitT
dHJpbmcgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjplbnN1cmVVbmlxdWVJZGVudGlmaWVyKCkKK3sK
KyAgICBpZiAobV91bmlxdWVJZGVudGlmaWVyLmlzRW1wdHkoKSkKKyAgICAgICAgbV91bmlxdWVJ
ZGVudGlmaWVyID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgIHJldHVybiBtX3Vu
aXF1ZUlkZW50aWZpZXI7Cit9CisKIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQogewogICAgIGlmIChuYW1lID09IHByb2dyZXNzQXR0ciB8fCBuYW1lID09IHN1YnRpdGxl
QXR0ciB8fCBuYW1lID09IHRpdGxlQXR0ciB8fCBuYW1lID09IHR5cGVBdHRyKSB7CkBAIC0xNjgs
NjggKzE0NCwxNyBAQCBTdHJpbmcgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjphdHRhY2htZW50UGF0
aCgpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2Vi
a2l0YXR0YWNobWVudHBhdGhBdHRyKTsKIH0KIAotdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OnVwZGF0ZUZpbGVXaXRoRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiYmIG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdG
aWxlbmFtZSkKLXsKLSAgICBhdXRvIGZpbGVuYW1lID0gbmV3RmlsZW5hbWUgPyAqbmV3RmlsZW5h
bWUgOiBhdHRhY2htZW50VGl0bGUoKTsKLSAgICBhdXRvIGNvbnRlbnRUeXBlID0gbmV3Q29udGVu
dFR5cGUgPyAqbmV3Q29udGVudFR5cGUgOiBGaWxlOjpjb250ZW50VHlwZUZvckZpbGUoZmlsZW5h
bWUpOwotICAgIGF1dG8gZmlsZSA9IEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoV1RGTW92ZShk
YXRhKSwgY29udGVudFR5cGUpLCBmaWxlbmFtZSk7Ci0gICAgc2V0RmlsZShXVEZNb3ZlKGZpbGUp
LCBVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKLX0KLQotdm9pZCBIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OnJlcXVlc3RJbmZvKEZ1bmN0aW9uPHZvaWQoY29uc3QgQXR0YWNobWVudEluZm8m
KT4mJiBjYWxsYmFjaykKLXsKLSAgICBpZiAoIW1fZmlsZSkgewotICAgICAgICBjYWxsYmFjayh7
IH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQXR0YWNobWVudEluZm8gaW5mb1dp
dGhvdXREYXRhIHsgbV9maWxlLT50eXBlKCksIG1fZmlsZS0+bmFtZSgpLCBtX2ZpbGUtPnBhdGgo
KSwgbnVsbHB0ciB9OwotICAgIGlmICghbV9maWxlLT5wYXRoKCkuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIGNhbGxiYWNrKGluZm9XaXRob3V0RGF0YSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBtX2F0dGFjaG1lbnRSZWFkZXJzLmFwcGVuZChBdHRhY2htZW50RGF0YVJlYWRlcjo6Y3Jl
YXRlKCp0aGlzLCBbaW5mb1dpdGhvdXREYXRhID0gV1RGTW92ZShpbmZvV2l0aG91dERhdGEpLCBw
cm90ZWN0ZWRGaWxlID0gbWFrZVJlZigqbV9maWxlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkgewotICAgICAgICBjYWxsYmFjayh7
IGluZm9XaXRob3V0RGF0YS5jb250ZW50VHlwZSwgaW5mb1dpdGhvdXREYXRhLm5hbWUsIGluZm9X
aXRob3V0RGF0YS5maWxlUGF0aCwgV1RGTW92ZShkYXRhKSB9KTsKLSAgICB9KSk7Ci19Ci0KLXZv
aWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpkZXN0cm95UmVhZGVyKEF0dGFjaG1lbnREYXRhUmVh
ZGVyJiBmaW5pc2hlZFJlYWRlcikKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVB
dHRyaWJ1dGVzKHVpbnQ2NF90IGZpbGVTaXplLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdD
b250ZW50VHlwZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYgbmV3RmlsZW5hbWUpCiB7Ci0gICAg
bV9hdHRhY2htZW50UmVhZGVycy5yZW1vdmVGaXJzdE1hdGNoaW5nKFsmXSAoY29uc3Qgc3RkOjp1
bmlxdWVfcHRyPEF0dGFjaG1lbnREYXRhUmVhZGVyPiYgcmVhZGVyKSAtPiBib29sIHsKLSAgICAg
ICAgcmV0dXJuIHJlYWRlci5nZXQoKSA9PSAmZmluaXNoZWRSZWFkZXI7Ci0gICAgfSk7Ci19Cisg
ICAgaWYgKG5ld0ZpbGVuYW1lKQorICAgICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKEhUTUxOYW1lczo6dGl0bGVBdHRyLCAqbmV3RmlsZW5hbWUpOwogCi1BdHRhY2htZW50
RGF0YVJlYWRlcjo6fkF0dGFjaG1lbnREYXRhUmVhZGVyKCkKLXsKLSAgICBpbnZva2VDYWxsYmFj
a0FuZEZpbmlzaFJlYWRpbmcobnVsbHB0cik7Ci19CisgICAgaWYgKG5ld0NvbnRlbnRUeXBlIHx8
IG5ld0ZpbGVuYW1lKQorICAgICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KEhUTUxOYW1lczo6dHlwZUF0dHIsIG5ld0NvbnRlbnRUeXBlID8gKm5ld0NvbnRlbnRUeXBlIDog
RmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKCpuZXdGaWxlbmFtZSkpOwogCi12b2lkIEF0dGFjaG1l
bnREYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKCkKLXsKLSAgICBpZiAoYXV0byBhcnJheUJ1
ZmZlciA9IG1fbG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKQotICAgICAgICBpbnZva2VDYWxs
YmFja0FuZEZpbmlzaFJlYWRpbmcoU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpKTsKLSAgICBlbHNlCi0gICAgICAgIGludm9rZUNhbGxiYWNrQW5kRmluaXNoUmVhZGluZyhu
dWxscHRyKTsKLSAgICBtX2F0dGFjaG1lbnQuZGVzdHJveVJlYWRlcigqdGhpcyk7Ci19Ci0KLXZv
aWQgQXR0YWNobWVudERhdGFSZWFkZXI6OmRpZEZhaWwoaW50KQotewotICAgIGludm9rZUNhbGxi
YWNrQW5kRmluaXNoUmVhZGluZyhudWxscHRyKTsKLSAgICBtX2F0dGFjaG1lbnQuZGVzdHJveVJl
YWRlcigqdGhpcyk7Ci19Ci0KLXZvaWQgQXR0YWNobWVudERhdGFSZWFkZXI6Omludm9rZUNhbGxi
YWNrQW5kRmluaXNoUmVhZGluZyhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCi17Ci0gICAg
YXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjayk7Ci0gICAgaWYgKCFjYWxsYmFjaykK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9sb2FkZXItPmNhbmNlbCgpOwotICAgIG1fbG9hZGVy
ID0gbnVsbHB0cjsKLSAgICAoKmNhbGxiYWNrKShXVEZNb3ZlKGRhdGEpKTsKKyAgICBzZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3VidGl0bGVBdHRyLCBmaWxl
U2l6ZURlc2NyaXB0aW9uKGZpbGVTaXplKSk7CisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyZXItPmludmFsaWRhdGUoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmgKaW5kZXggMTRmYzg0YmQ5YTU3OTAxNjBkMGI4N2FmMzNmZDk4NDljNGM5YTkzZi4u
ZGI4MDZhYzk5MWE4ZmEzNDViNmFlOGNiYmI0ODI2MGUwZjFlODY5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCkBAIC0zMiwxMiArMzIsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF0dGFjaG1lbnREYXRhUmVhZGVyOwogY2xhc3Mg
RmlsZTsKLWNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7Ci1jbGFzcyBIVE1MVmlkZW9FbGVtZW50Owog
Y2xhc3MgUmVuZGVyQXR0YWNobWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSFRN
TEF0dGFjaG1lbnRFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKEhUTUxBdHRhY2htZW50RWxlbWVudCk7CkBAIC01MywyMCArNDks
MTkgQEAgcHVibGljOgogICAgIFN0cmluZyB1bmlxdWVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV91bmlxdWVJZGVudGlmaWVyOyB9CiAgICAgdm9pZCBzZXRVbmlxdWVJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcikgeyBtX3VuaXF1ZUlkZW50aWZpZXIgPSB1bmlx
dWVJZGVudGlmaWVyOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUZpbGVXaXRo
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5l
d0NvbnRlbnRUeXBlID0gc3RkOjpudWxsb3B0LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdG
aWxlbmFtZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVB
dHRyaWJ1dGVzKHVpbnQ2NF90IGZpbGVTaXplLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdD
b250ZW50VHlwZSA9IHN0ZDo6bnVsbG9wdCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYgbmV3Rmls
ZW5hbWUgPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQg
aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFs
OwogICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9k
ZSYpIGZpbmFsOwogCisgICAgU3RyaW5nIGVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKTsKKwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdHRhY2htZW50VGl0bGUoKSBjb25zdDsKICAgICBTdHJp
bmcgYXR0YWNobWVudFR5cGUoKSBjb25zdDsKICAgICBTdHJpbmcgYXR0YWNobWVudFBhdGgoKSBj
b25zdDsKIAogICAgIFJlbmRlckF0dGFjaG1lbnQqIHJlbmRlcmVyKCkgY29uc3Q7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlcXVlc3RJbmZvKEZ1bmN0aW9uPHZvaWQoY29uc3QgQXR0YWNo
bWVudEluZm8mKT4mJiBjYWxsYmFjayk7Ci0gICAgdm9pZCBkZXN0cm95UmVhZGVyKEF0dGFjaG1l
bnREYXRhUmVhZGVyJik7Ci0KIHByaXZhdGU6CiAgICAgSFRNTEF0dGFjaG1lbnRFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgfkhUTUxBdHRhY2ht
ZW50RWxlbWVudCgpOwpAQCAtODMsNyArNzgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFs
OwogICAgIAogICAgIFJlZlB0cjxGaWxlPiBtX2ZpbGU7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxBdHRhY2htZW50RGF0YVJlYWRlcj4+IG1fYXR0YWNobWVudFJlYWRlcnM7CiAgICAgU3Ry
aW5nIG1fdW5pcXVlSWRlbnRpZmllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKaW5k
ZXggYjc0NDg1ZDA3ZWJlNzgxZWQ0YjY3NDYzYjA1YzgwNjE0NDU0NjRiMy4uMzc4NjA2ODA5OTZl
MzljYWUzODgzZGI0ODc3MDNlOGU0YTI3NjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgK
QEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRWxlbWVudDsKIGNs
YXNzIEZyYW1lOwogY2xhc3MgSW1hZ2U7Ci1zdHJ1Y3QgUHJvbWlzZWRCbG9iSW5mbzsKK3N0cnVj
dCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvOwogCiBjbGFzcyBEcmFnQ2xpZW50IHsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggOWY5YmMzMjQyNDVmZjkw
NDg5MGQ1ZDZmMjIzNzc3NzM3NTdiN2I5MS4uZDUwZTExOGIxZGU5MjMxZGY3OTE1MTVjOGQ4ZmZh
ZDRiMTBlM2IxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTY5
LDcgKzY5LDcgQEAKICNpbmNsdWRlICJQbHVnaW5Eb2N1bWVudC5oIgogI2luY2x1ZGUgIlBsdWdp
blZpZXdCYXNlLmgiCiAjaW5jbHVkZSAiUG9zaXRpb24uaCIKLSNpbmNsdWRlICJQcm9taXNlZEJs
b2JJbmZvLmgiCisjaW5jbHVkZSAiUHJvbWlzZWRBdHRhY2htZW50SW5mby5oIgogI2luY2x1ZGUg
IlJlbmRlckF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5o
IgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCkBAIC0xMTM2LDExICsxMTM2LDExIEBAIGJvb2wg
RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0
YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgICAgIGF1dG8gcHJldmlvdXNTZWxlY3Rpb24gPSBzcmMu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgICAgIHNlbGVjdEVsZW1lbnQoZWxlbWVudCk7
CiAKLSAgICAgICAgUHJvbWlzZWRCbG9iSW5mbyBwcm9taXNlZEJsb2I7CisgICAgICAgIFByb21p
c2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2htZW50OwogICAgICAgICBpZiAoaGFzRGF0
YSA9PSBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGE6Ok5vKSB7Ci0gICAgICAgICAgICBwcm9t
aXNlZEJsb2IgPSBwcm9taXNlZEJsb2JJbmZvKHNyYywgYXR0YWNobWVudCk7CisgICAgICAgICAg
ICBwcm9taXNlZEF0dGFjaG1lbnQgPSBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKHNyYywgYXR0YWNo
bWVudCk7CiAgICAgICAgICAgICBhdXRvJiBlZGl0b3IgPSBzcmMuZWRpdG9yKCk7Ci0gICAgICAg
ICAgICBpZiAoIXByb21pc2VkQmxvYiAmJiBlZGl0b3IuY2xpZW50KCkpIHsKKyAgICAgICAgICAg
IGlmICghcHJvbWlzZWRBdHRhY2htZW50ICYmIGVkaXRvci5jbGllbnQoKSkgewogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgaWYgbm8gZmlsZSBVUkwg
aXMgc3BlY2lmaWVkLCBjYWxsIG91dCB0byB0aGUgaW5qZWN0ZWQgYnVuZGxlIHRvIHBvcHVsYXRl
IHRoZSBwYXN0ZWJvYXJkIHdpdGggZGF0YS4KICAgICAgICAgICAgICAgICBlZGl0b3Iud2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKHNyYy5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5n
ZSgpLmdldCgpKTsKQEAgLTExNjQsNyArMTE2NCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0
YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9u
CiAgICAgICAgICAgICBkcmFnTG9jID0gZHJhZ0xvY0ZvclNlbGVjdGlvbkRyYWcoc3JjKTsKICAg
ICAgICAgICAgIG1fZHJhZ09mZnNldCA9IEludFBvaW50KGRyYWdPcmlnaW4ueCgpIC0gZHJhZ0xv
Yy54KCksIGRyYWdPcmlnaW4ueSgpIC0gZHJhZ0xvYy55KCkpOwogICAgICAgICB9Ci0gICAgICAg
IGRvU3lzdGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdPcmlnaW4sIHNy
Yywgc3RhdGUsIFdURk1vdmUocHJvbWlzZWRCbG9iKSk7CisgICAgICAgIGRvU3lzdGVtRHJhZyhX
VEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdPcmlnaW4sIHNyYywgc3RhdGUsIFdURk1v
dmUocHJvbWlzZWRBdHRhY2htZW50KSk7CiAgICAgICAgIGlmICghZWxlbWVudC5pc0NvbnRlbnRS
aWNobHlFZGl0YWJsZSgpKQogICAgICAgICAgICAgc3JjLnNlbGVjdGlvbigpLnNldFNlbGVjdGlv
bihwcmV2aW91c1NlbGVjdGlvbik7CiAgICAgICAgIHNyYy5lZGl0b3IoKS5zZXRJZ25vcmVTZWxl
Y3Rpb25DaGFuZ2VzKGZhbHNlKTsKQEAgLTEyNzAsNyArMTI3MCw3IEBAIHZvaWQgRHJhZ0NvbnRy
b2xsZXI6OmJlZ2luRHJhZyhEcmFnSXRlbSBkcmFnSXRlbSwgRnJhbWUmIGZyYW1lLCBjb25zdCBJ
bnRQb2ludCYKICAgICBjbGVhbnVwQWZ0ZXJTeXN0ZW1EcmFnKCk7CiB9CiAKLXZvaWQgRHJhZ0Nv
bnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBk
cmFnTG9jLCBjb25zdCBJbnRQb2ludCYgZXZlbnRQb3MsIEZyYW1lJiBmcmFtZSwgY29uc3QgRHJh
Z1N0YXRlJiBzdGF0ZSwgUHJvbWlzZWRCbG9iSW5mbyYmIHByb21pc2VkQmxvYikKK3ZvaWQgRHJh
Z0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50
JiBkcmFnTG9jLCBjb25zdCBJbnRQb2ludCYgZXZlbnRQb3MsIEZyYW1lJiBmcmFtZSwgY29uc3Qg
RHJhZ1N0YXRlJiBzdGF0ZSwgUHJvbWlzZWRBdHRhY2htZW50SW5mbyYmIHByb21pc2VkQXR0YWNo
bWVudEluZm8pCiB7CiAgICAgbV9kaWRJbml0aWF0ZURyYWcgPSB0cnVlOwogICAgIG1fZHJhZ0lu
aXRpYXRvciA9IGZyYW1lLmRvY3VtZW50KCk7CkBAIC0xMjgxLDcgKzEyODEsNyBAQCB2b2lkIERy
YWdDb250cm9sbGVyOjpkb1N5c3RlbURyYWcoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2lu
dCYgZHJhZ0xvYywgY29ucwogICAgIERyYWdJdGVtIGl0ZW07CiAgICAgaXRlbS5pbWFnZSA9IFdU
Rk1vdmUoaW1hZ2UpOwogICAgIGl0ZW0uc291cmNlQWN0aW9uID0gc3RhdGUudHlwZTsKLSAgICBp
dGVtLnByb21pc2VkQmxvYiA9IFdURk1vdmUocHJvbWlzZWRCbG9iKTsKKyAgICBpdGVtLnByb21p
c2VkQXR0YWNobWVudEluZm8gPSBXVEZNb3ZlKHByb21pc2VkQXR0YWNobWVudEluZm8pOwogCiAg
ICAgYXV0byBldmVudFBvc2l0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gZnJhbWUudmlldygp
LT5jb250ZW50c1RvUm9vdFZpZXcoZXZlbnRQb3MpOwogICAgIGF1dG8gZHJhZ0xvY2F0aW9uSW5S
b290Vmlld0Nvb3JkaW5hdGVzID0gZnJhbWUudmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoZHJh
Z0xvYyk7CkBAIC0xMzY3LDExICsxMzY3LDggQEAgU3RyaW5nIERyYWdDb250cm9sbGVyOjpwbGF0
Zm9ybUNvbnRlbnRUeXBlRm9yQmxvYlR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogCiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotUHJvbWlzZWRCbG9iSW5mbyBEcmFnQ29u
dHJvbGxlcjo6cHJvbWlzZWRCbG9iSW5mbyhGcmFtZSYgZnJhbWUsIEhUTUxBdHRhY2htZW50RWxl
bWVudCYgYXR0YWNobWVudCkKK1Byb21pc2VkQXR0YWNobWVudEluZm8gRHJhZ0NvbnRyb2xsZXI6
OnByb21pc2VkQXR0YWNobWVudEluZm8oRnJhbWUmIGZyYW1lLCBIVE1MQXR0YWNobWVudEVsZW1l
bnQmIGF0dGFjaG1lbnQpCiB7Ci0gICAgaWYgKCFhdHRhY2htZW50LmZpbGUoKSkKLSAgICAgICAg
cmV0dXJuIHsgfTsKLQogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKICAgICBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JN
KENPQ09BKQpAQCAtMTM3OSw4ICsxMzc2LDEwIEBAIFByb21pc2VkQmxvYkluZm8gRHJhZ0NvbnRy
b2xsZXI6OnByb21pc2VkQmxvYkluZm8oRnJhbWUmIGZyYW1lLCBIVE1MQXR0YWNobWVudEVsCiAg
ICAgICAgIGZyYW1lLmVkaXRvcigpLmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2ht
ZW50KGF0dGFjaG1lbnQsIGFkZGl0aW9uYWxUeXBlcywgYWRkaXRpb25hbERhdGEpOwogI2VuZGlm
CiAKLSAgICBhdXRvJiBmaWxlID0gKmF0dGFjaG1lbnQuZmlsZSgpOwotICAgIHJldHVybiB7IGZp
bGUudXJsKCksIHBsYXRmb3JtQ29udGVudFR5cGVGb3JCbG9iVHlwZShmaWxlLnR5cGUoKSksIGZp
bGUubmFtZSgpLCBXVEZNb3ZlKGFkZGl0aW9uYWxUeXBlcyksIFdURk1vdmUoYWRkaXRpb25hbERh
dGEpIH07CisgICAgaWYgKGF1dG8qIGZpbGUgPSBhdHRhY2htZW50LmZpbGUoKSkKKyAgICAgICAg
cmV0dXJuIHsgZmlsZS0+dXJsKCksIHBsYXRmb3JtQ29udGVudFR5cGVGb3JCbG9iVHlwZShmaWxl
LT50eXBlKCkpLCBmaWxlLT5uYW1lKCksIGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCBX
VEZNb3ZlKGFkZGl0aW9uYWxUeXBlcyksIFdURk1vdmUoYWRkaXRpb25hbERhdGEpIH07CisKKyAg
ICByZXR1cm4geyB7IH0sIHBsYXRmb3JtQ29udGVudFR5cGVGb3JCbG9iVHlwZShhdHRhY2htZW50
LmF0dGFjaG1lbnRUeXBlKCkpLCBhdHRhY2htZW50LmF0dGFjaG1lbnRUaXRsZSgpLCBhdHRhY2ht
ZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgV1RGTW92ZShhZGRpdGlvbmFsVHlwZXMpLCBXVEZNb3Zl
KGFkZGl0aW9uYWxEYXRhKSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAppbmRleCA4M2U1NzVkYTcyMzUw
YWRkODY3MDAzY2ZkOWVkNTk2ZDg4ZDkyM2ZmLi4yMmE2OTU4M2FhZGI2NmU5YmRmMjcxMDNhMzVh
MmQ4NDcwZDhiYTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCkBAIC00OCw3
ICs0OCw3IEBAIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIAogc3RydWN0IERyYWdJdGVtOwog
c3RydWN0IERyYWdTdGF0ZTsKLXN0cnVjdCBQcm9taXNlZEJsb2JJbmZvOworc3RydWN0IFByb21p
c2VkQXR0YWNobWVudEluZm87CiAKICAgICBjbGFzcyBEcmFnQ29udHJvbGxlciB7CiAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKERyYWdDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CkBAIC0xMTYsNyArMTE2LDcgQEAgc3RydWN0IFByb21pc2VkQmxvYkluZm87CiAgICAg
ICAgIGJvb2wgc2hvdWxkVXNlQ2FjaGVkSW1hZ2VGb3JEcmFnSW1hZ2UoY29uc3QgSW1hZ2UmKSBj
b25zdDsKIAogICAgICAgICB2b2lkIGRvSW1hZ2VEcmFnKEVsZW1lbnQmLCBjb25zdCBJbnRQb2lu
dCYsIGNvbnN0IEludFJlY3QmLCBGcmFtZSYsIEludFBvaW50JiwgY29uc3QgRHJhZ1N0YXRlJik7
Ci0gICAgICAgIHZvaWQgZG9TeXN0ZW1EcmFnKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmLCBj
b25zdCBJbnRQb2ludCYsIEZyYW1lJiwgY29uc3QgRHJhZ1N0YXRlJiwgUHJvbWlzZWRCbG9iSW5m
byYmKTsKKyAgICAgICAgdm9pZCBkb1N5c3RlbURyYWcoRHJhZ0ltYWdlLCBjb25zdCBJbnRQb2lu
dCYsIGNvbnN0IEludFBvaW50JiwgRnJhbWUmLCBjb25zdCBEcmFnU3RhdGUmLCBQcm9taXNlZEF0
dGFjaG1lbnRJbmZvJiYpOwogCiAgICAgICAgIHZvaWQgYmVnaW5EcmFnKERyYWdJdGVtLCBGcmFt
ZSYsIGNvbnN0IEludFBvaW50JiBtb3VzZURvd25Qb2ludCwgY29uc3QgSW50UG9pbnQmIG1vdXNl
RHJhZ2dlZFBvaW50LCBEYXRhVHJhbnNmZXImLCBEcmFnU291cmNlQWN0aW9uKTsKIApAQCAtMTM1
LDcgKzEzNSw3IEBAIHN0cnVjdCBQcm9taXNlZEJsb2JJbmZvOwogICAgICAgICB2b2lkIGRlY2xh
cmVBbmRXcml0ZURyYWdJbWFnZShEYXRhVHJhbnNmZXImLCBFbGVtZW50JiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBsYWJlbCk7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQot
ICAgICAgICBQcm9taXNlZEJsb2JJbmZvIHByb21pc2VkQmxvYkluZm8oRnJhbWUmLCBIVE1MQXR0
YWNobWVudEVsZW1lbnQmKTsKKyAgICAgICAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBwcm9taXNl
ZEF0dGFjaG1lbnRJbmZvKEZyYW1lJiwgSFRNTEF0dGFjaG1lbnRFbGVtZW50Jik7CiAjZW5kaWYK
ICAgICAgICAgUGFnZSYgbV9wYWdlOwogICAgICAgICBEcmFnQ2xpZW50JiBtX2NsaWVudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDM2YWQ3YmU4NjljMTcyODZjYzQzNTc5MWNk
ODUyMTg1NTA4MzU5NDQuLjhmZmQ3MzYwYzZhYTdlYjJiMmM3Y2E5MGMxZjRiMTM5NmJmZDMxMmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtNzMsOCArNzMsMTIgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShSYW5nZSosIFJh
bmdlKikgPSAwOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50
aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYg
LyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxTaGFyZWRCdWZmZXI+JiYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyog
aWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3Ry
aW5nJiAvKiBmaWxlUGF0aCAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGNsb25lQXR0YWNobWVu
dERhdGEoY29uc3QgU3RyaW5nJiAvKiBmcm9tSWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAv
KiB0b0lkZW50aWZpZXIgKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRJbnNlcnRBdHRhY2ht
ZW50KGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBzb3Vy
Y2UgKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVBdHRhY2htZW50KGNvbnN0IFN0
cmluZyYpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRCZWdpbkVkaXRpbmcoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnSXRlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0l0ZW0uaAppbmRl
eCAzZWFlNzQzNzU0Mjg5YWQxNTczZDUzMDljOWZiMTQ0YmRhOGY3MWI5Li41OTkyYmVhMThiYjM2
MGQyODNhMmU3YzkxOWZjZjhjNTA1ZTNiYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJdGVt
LmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIgotI2luY2x1ZGUgIlBy
b21pc2VkQmxvYkluZm8uaCIKKyNpbmNsdWRlICJQcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTAsNyArNTAsNyBAQCBzdHJ1Y3QgRHJhZ0l0ZW0g
ZmluYWwgewogICAgIEludFJlY3QgZHJhZ1ByZXZpZXdGcmFtZUluUm9vdFZpZXdDb29yZGluYXRl
czsKIAogICAgIFBhc3RlYm9hcmRXcml0ZXJEYXRhIGRhdGE7Ci0gICAgUHJvbWlzZWRCbG9iSW5m
byBwcm9taXNlZEJsb2I7CisgICAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBwcm9taXNlZEF0dGFj
aG1lbnRJbmZvOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRl
Y29kZShEZWNvZGVyJiwgRHJhZ0l0ZW0mKTsKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBEcmFnSXRl
bTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBoYXNWaXNp
YmxlUGF0aDsKICAgICBpZiAoaGFzVmlzaWJsZVBhdGgpCiAgICAgICAgIGVuY29kZXIgPDwgaW1h
Z2UudmlzaWJsZVBhdGgoKS52YWx1ZSgpOwotICAgIGVuY29kZXIgPDwgcHJvbWlzZWRCbG9iOwor
ICAgIGVuY29kZXIgPDwgcHJvbWlzZWRBdHRhY2htZW50SW5mbzsKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KQEAgLTExMyw3ICsxMTMsNyBAQCBib29sIERyYWdJdGVtOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgRHJhZ0l0ZW0mIHJlc3VsdCkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgcmVzdWx0LmltYWdlLnNldFZpc2libGVQYXRoKCp2aXNpYmxlUGF0aCk7CiAg
ICAgfQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnByb21pc2VkQmxvYikpCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJvbWlzZWRBdHRhY2htZW50SW5mbykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzhhMzFk
YmFlN2I1MmUxMDBjOWEzNGEwOWVkNjA0ZjgxNjNlOWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0wLDAgKzEs
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFVSTDsKKworc3RydWN0IFByb21pc2VkQXR0YWNobWVu
dEluZm8geworICAgIFVSTCBibG9iVVJMOworICAgIFN0cmluZyBjb250ZW50VHlwZTsKKyAgICBT
dHJpbmcgZmlsZW5hbWU7CisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIFN0
cmluZyBhdHRhY2htZW50SWRlbnRpZmllcjsKKyNlbmRpZgorCisgICAgVmVjdG9yPFN0cmluZz4g
YWRkaXRpb25hbFR5cGVzOworICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRp
b25hbERhdGE7CisKKyAgICBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
IChjb250ZW50VHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICAgICBpZiAoIWF0dGFjaG1lbnRJZGVu
dGlmaWVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisKKyAg
ICAgICAgcmV0dXJuICFibG9iVVJMLmlzRW1wdHkoKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21p
c2VkQmxvYkluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQmxvYkluZm8u
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY0YmE3MDkyZTg0ZDc3NzNmOGU1MGMy
ZTA2ODRmYTYzMDY3MmM1NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEJsb2JJbmZvLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBV
Ukw7Ci0KLXN0cnVjdCBQcm9taXNlZEJsb2JJbmZvIHsKLSAgICBVUkwgYmxvYlVSTDsKLSAgICBT
dHJpbmcgY29udGVudFR5cGU7Ci0gICAgU3RyaW5nIGZpbGVuYW1lOwotCi0gICAgVmVjdG9yPFN0
cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4g
YWRkaXRpb25hbERhdGE7Ci0KLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWJs
b2JVUkwuaXNFbXB0eSgpOyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGE3ODJiYWFjOWQ0NWJiM2M5
ZDBiODk5MjYyMmZhYTYyNTJhYTE4NGQuLmMyYTNlNGUyOTM2MWY0MDk3YzE1OTE3NTI0MTVlYzEw
NWQ1ZTlmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAt
Mzc4LDcgKzM3OCw2IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnU3Ry
aW5nJzogWyc8d3RmL3RleHQvV1RGU3RyaW5nLmg+J10sCiAgICAgICAgICdQQUw6OlNlc3Npb25J
RCc6IFsnPHBhbC9TZXNzaW9uSUQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkF0dGFjaG1lbnRE
aXNwbGF5T3B0aW9ucyc6IFsnPFdlYkNvcmUvQXR0YWNobWVudFR5cGVzLmg+J10sCi0gICAgICAg
ICdXZWJDb3JlOjpBdHRhY2htZW50SW5mbyc6IFsnPFdlYkNvcmUvQXR0YWNobWVudFR5cGVzLmg+
J10sCiAgICAgICAgICdXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3MnOiBbJzxXZWJDb3JlL0F1
dG9wbGF5RXZlbnQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMnOiBb
JzxXZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6
OkZpbGVDaG9vc2VyU2V0dGluZ3MnOiBbJzxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+J10sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBiYWEy
ZmNmMDNlOWFiMmM5Y2ZmNmE4YWRiOWZmMzMwYmIwM2Q4OTZlLi41ZjgzZTlmMDljMDhmMmZkNGFi
MmU2ZDUxYWY4MDdhMDE4MjQ0MDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTU3LDcgKzU3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1Bhc3RlYm9hcmQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhdGguaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsdWdpbkRhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Byb21pc2VkQmxvYkluZm8uaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1Byb21pc2VkQXR0YWNobWVudEluZm8uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVjdEVkZ2VzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpb24uaD4KQEAgLTI4NjMsMTUgKzI4NjMsMTggQEAgc3Rk
OjpvcHRpb25hbDxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gQXJndW1lbnRDb2RlcjxNZWRpYVNlbGVj
dGlvbk9wdGlvbj46OmRlY29kZSgKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqZGlzcGxheU5hbWUp
LCBXVEZNb3ZlKCp0eXBlKSB9fTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPFByb21pc2VkQmxv
YkluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUHJvbWlzZWRCbG9iSW5mbyYg
aW5mbykKK3ZvaWQgQXJndW1lbnRDb2RlcjxQcm9taXNlZEF0dGFjaG1lbnRJbmZvPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFByb21pc2VkQXR0YWNobWVudEluZm8mIGluZm8pCiB7
CiAgICAgZW5jb2RlciA8PCBpbmZvLmJsb2JVUkw7CiAgICAgZW5jb2RlciA8PCBpbmZvLmNvbnRl
bnRUeXBlOwogICAgIGVuY29kZXIgPDwgaW5mby5maWxlbmFtZTsKKyNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQorICAgIGVuY29kZXIgPDwgaW5mby5hdHRhY2htZW50SWRlbnRpZmllcjsK
KyNlbmRpZgogICAgIGVuY29kZVR5cGVzQW5kRGF0YShlbmNvZGVyLCBpbmZvLmFkZGl0aW9uYWxU
eXBlcywgaW5mby5hZGRpdGlvbmFsRGF0YSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxQcm9t
aXNlZEJsb2JJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFByb21pc2VkQmxvYkluZm8m
IGluZm8pCitib29sIEFyZ3VtZW50Q29kZXI8UHJvbWlzZWRBdHRhY2htZW50SW5mbz46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvJiBpbmZvKQogewogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5ibG9iVVJMKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjg4Miw1MSArMjg4NSwxNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UHJvbWlzZWRCbG9i
SW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQcm9taXNlZEJsb2JJbmZvJgogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaW5mby5maWxlbmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmICghZGVjb2RlVHlwZXNBbmREYXRhKGRlY29kZXIsIGluZm8uYWRkaXRpb25hbFR5
cGVzLCBpbmZvLmFkZGl0aW9uYWxEYXRhKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotCi12b2lk
IEFyZ3VtZW50Q29kZXI8QXR0YWNobWVudEluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgQXR0YWNobWVudEluZm8mIGluZm8pCi17Ci0gICAgYm9vbCBkYXRhSXNOdWxsID0gIWlu
Zm8uZGF0YTsKLSAgICBlbmNvZGVyIDw8IGluZm8uY29udGVudFR5cGUgPDwgaW5mby5uYW1lIDw8
IGluZm8uZmlsZVBhdGggPDwgZGF0YUlzTnVsbDsKLSAgICBpZiAoIWRhdGFJc051bGwpIHsKLSAg
ICAgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgaW5mby5kYXRh
LmdldCgpIH07Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8RGF0YVJlZmVyZW5jZSY+
KGRhdGFSZWZlcmVuY2UpOwotICAgIH0KLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPEF0dGFjaG1l
bnRJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEF0dGFjaG1lbnRJbmZvJiBpbmZvKQot
ewotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5jb250ZW50VHlwZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5uYW1lKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLmZpbGVQYXRo
KSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uYXR0YWNobWVudElkZW50aWZpZXIpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIAotICAgIGJvb2wgZGF0YUlzTnVsbCA9IHRy
dWU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhSXNOdWxsKSkKKyAgICBpZiAoIWRlY29k
ZVR5cGVzQW5kRGF0YShkZWNvZGVyLCBpbmZvLmFkZGl0aW9uYWxUeXBlcywgaW5mby5hZGRpdGlv
bmFsRGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZGF0YUlzTnVsbCkg
ewotICAgICAgICBEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIGluZm8uZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFSZWZlcmVuY2UuZGF0
YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7Ci0gICAgfQotCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLSNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotCiB2b2lkIEFyZ3VtZW50
Q29kZXI8VmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Pjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKIHsK
ICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvcmlnaW5zLnNpemUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGYyYWZj
YWQ1OTYwMzM5NDBmMWI0OWFkMDYyM2EwODlhOGM1MzlhNzUuLjhjYTc2MGZjZmZkY2Q0ZDhmNjJm
NjIzMzkyOTMwMzM4NWFhZmMzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCkBAIC05NSw3ICs5NSw2IEBAIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0
cml4OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7CiBjbGFzcyBVUkw7CiAKLXN0cnVjdCBBdHRhY2ht
ZW50SW5mbzsKIHN0cnVjdCBDYWNoZVF1ZXJ5T3B0aW9uczsKIHN0cnVjdCBDb21wb3NpdGlvblVu
ZGVybGluZTsKIHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKQEAgLTExMCw3ICsxMDksNyBA
QCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRDdXN0b21EYXRhOwog
c3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKLXN0cnVjdCBQcm9taXNl
ZEJsb2JJbmZvOworc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm87CiBzdHJ1Y3QgUmVjZW50
U2VhcmNoOwogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiBzdHJ1Y3QgU2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzOwpAQCAtNjk5LDIwICs2OTgsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4gewogICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQ
cm9taXNlZEJsb2JJbmZvPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBXZWJDb3JlOjpQcm9taXNlZEJsb2JJbmZvJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERl
Y29kZXImLCBXZWJDb3JlOjpQcm9taXNlZEJsb2JJbmZvJik7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8+IHsKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVu
dEluZm8mKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlByb21p
c2VkQXR0YWNobWVudEluZm8mKTsKIH07CiAKLSNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkF0dGFjaG1lbnRJ
bmZvPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpB
dHRhY2htZW50SW5mbyYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29y
ZTo6QXR0YWNobWVudEluZm8mKTsKLX07Ci0KLSNlbmRpZgotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+Pj4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4+Jik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCA3ZTAwOWQ2YjJlNTU5
Y2Q4NWI5ODQ2NjgxMjExOWE0YzhiOTY5NmUyLi5hZmE4ZTM2OGI0Yzc3ZmFlMWNhYzkzMzNjYTJl
NjIwNDU5MDBjZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuY3BwCkBAIC00OCwxNCArNDgsNiBAQCBBdHRhY2htZW50Ojp+QXR0YWNobWVudCgpCiB7
CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6cmVxdWVzdEluZm8oRnVuY3Rpb248dm9pZChjb25zdCBX
ZWJDb3JlOjpBdHRhY2htZW50SW5mbyYsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2spCi17Ci0gICAgaWYgKG1fd2ViUGFnZSkKLSAgICAgICAgbV93ZWJQYWdlLT5yZXF1
ZXN0QXR0YWNobWVudEluZm8obV9pZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAg
ZWxzZQotICAgICAgICBjYWxsYmFjayh7IH0sIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6
T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci19Ci0KIHZvaWQgQXR0YWNobWVudDo6c2V0RGlzcGxheU9w
dGlvbnMoV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zIG9wdGlvbnMsIEZ1bmN0aW9u
PHZvaWQoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKIHsKICAgICBp
ZiAobV93ZWJQYWdlKQpAQCAtNjQsMTIgKzU2LDE1IEBAIHZvaWQgQXR0YWNobWVudDo6c2V0RGlz
cGxheU9wdGlvbnMoV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zIG9wdGlvbnMsIEZ1
CiAgICAgICAgIGNhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJ
bnZhbGlkYXRlZCk7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6c2V0RGF0YUFuZENvbnRlbnRUeXBl
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgV1RGOjpTdHJpbmcmIG5ld0NvbnRl
bnRUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgbmV3RmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKK3ZvaWQgQXR0YWNobWVudDo6
dXBkYXRlQXR0cmlidXRlcyh1aW50NjRfdCBmaWxlU2l6ZSwgY29uc3QgV1RGOjpTdHJpbmcmIG5l
d0NvbnRlbnRUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgbmV3RmlsZW5hbWUsIEZ1bmN0aW9uPHZv
aWQoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKIHsKKyAgICBzZXRD
b250ZW50VHlwZShuZXdDb250ZW50VHlwZSk7CisgICAgc2V0RmlsZVBhdGgoeyB9KTsKKwogICAg
IGF1dG8gb3B0aW9uYWxOZXdDb250ZW50VHlwZSA9IG5ld0NvbnRlbnRUeXBlLmlzTnVsbCgpID8g
c3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4geyBuZXdDb250ZW50VHlw
ZSB9OwogICAgIGF1dG8gb3B0aW9uYWxOZXdGaWxlbmFtZSA9IG5ld0ZpbGVuYW1lLmlzTnVsbCgp
ID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4geyBuZXdGaWxlbmFt
ZSB9OwogICAgIGlmIChtX3dlYlBhZ2UpCi0gICAgICAgIG1fd2ViUGFnZS0+c2V0QXR0YWNobWVu
dERhdGFBbmRDb250ZW50VHlwZShtX2lkZW50aWZpZXIsIGRhdGEsIFdURk1vdmUob3B0aW9uYWxO
ZXdDb250ZW50VHlwZSksIFdURk1vdmUob3B0aW9uYWxOZXdGaWxlbmFtZSksIFdURk1vdmUoY2Fs
bGJhY2spKTsKKyAgICAgICAgbV93ZWJQYWdlLT51cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyht
X2lkZW50aWZpZXIsIGZpbGVTaXplLCBXVEZNb3ZlKG9wdGlvbmFsTmV3Q29udGVudFR5cGUpLCBX
VEZNb3ZlKG9wdGlvbmFsTmV3RmlsZW5hbWUpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgZWxz
ZQogICAgICAgICBjYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2Fz
SW52YWxpZGF0ZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmgKaW5kZXggYmY3YTIyNzQyOTYyMjFmZmFkYmUwNzg5MmU3NmVlZmRkNzVjYjg5OC4uZTdl
YTljZGY5MDU1MTdhMmY4MTkzYWY2MjdjYWM0Y2I5ZTg1ZjlkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0zMiwxMCArMzIsMTEgQEAKICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitP
QkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIHN0cnVjdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnM7Ci1zdHJ1Y3QgQXR0
YWNobWVudEluZm87CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTAsMTQgKzUxLDI5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BdHRhY2htZW50KCk7CiAKICAgICBjb25zdCBXVEY6OlN0
cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQotICAgIHZv
aWQgcmVxdWVzdEluZm8oRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50SW5m
byYsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgc2V0RGlzcGxh
eU9wdGlvbnMoV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zLCBGdW5jdGlvbjx2b2lk
KFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgc2V0RGF0YUFuZENv
bnRlbnRUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGNvbnN0IFdURjo6U3RyaW5nJiBuZXdD
b250ZW50VHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIG5ld0ZpbGVuYW1lLCBGdW5jdGlvbjx2b2lk
KFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgdXBkYXRlQXR0cmli
dXRlcyh1aW50NjRfdCBmaWxlU2l6ZSwgY29uc3QgV1RGOjpTdHJpbmcmIG5ld0NvbnRlbnRUeXBl
LCBjb25zdCBXVEY6OlN0cmluZyYgbmV3RmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBOU0Zp
bGVXcmFwcGVyICpmaWxlV3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVdyYXBwZXIuZ2V0
KCk7IH0KKyAgICB2b2lkIHNldEZpbGVXcmFwcGVyKE5TRmlsZVdyYXBwZXIgKmZpbGVXcmFwcGVy
KSB7IG1fZmlsZVdyYXBwZXIgPSBmaWxlV3JhcHBlcjsgfQorI2VuZGlmCisKKyAgICBjb25zdCBX
VEY6OlN0cmluZyYgZmlsZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVQYXRoOyB9CisgICAg
dm9pZCBzZXRGaWxlUGF0aChjb25zdCBXVEY6OlN0cmluZyYgZmlsZVBhdGgpIHsgbV9maWxlUGF0
aCA9IGZpbGVQYXRoOyB9CisKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRlbnRUeXBlOyB9CisgICAgdm9pZCBzZXRDb250ZW50VHlwZShj
b25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpIHsgbV9jb250ZW50VHlwZSA9IGNvbnRlbnRU
eXBlOyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6OlN0
cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKIAorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBtX2ZpbGVXcmFwcGVyOworI2Vu
ZGlmCiAgICAgV1RGOjpTdHJpbmcgbV9pZGVudGlmaWVyOworICAgIFdURjo6U3RyaW5nIG1fZmls
ZVBhdGg7CisgICAgV1RGOjpTdHJpbmcgbV9jb250ZW50VHlwZTsKICAgICBXZWFrUHRyPFdlYktp
dDo6V2ViUGFnZVByb3h5PiBtX3dlYlBhZ2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAppbmRleCBmNjhj
YWQxYmNkYzNiY2Q1YWY4MTllNTk0MzI0MDFkN2U3ZGY2Y2VhLi40YzI2NDM5YzRmNzFlYjgwYzEy
MWI5MGYzZjRhMzVmNTc0ODA3MDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTExNCw3ICsxMTQsNiBA
QCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBlZGl0b3JTdGF0ZURpZENoYW5nZTooTlNEaWN0aW9uYXJ5ICopZWRpdG9yU3RhdGUgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMuNCksIGlvcygxMS4zKSk7CiAKIC0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkUmVtb3ZlQXR0YWNobWVudDooX1dLQXR0YWNo
bWVudCAqKWF0dGFjaG1lbnQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMuNCksIGlvcygx
MS4zKSk7Ci0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEluc2VydEF0
dGFjaG1lbnQ6KF9XS0F0dGFjaG1lbnQgKilhdHRhY2htZW50IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBkaWRJbnNlcnRBdHRhY2htZW50OihfV0tBdHRhY2htZW50ICopYXR0YWNobWVudCB3
aXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2VX
aXRoVXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBmMDIzMDE4MTNlMDJhZjMz
NjJiZmM1YjNjNDdlMzlkYWZkMWM0ZjVlLi4yNmIzYTg5NWNjNDhlYzlkZmQ3NjJlZGVhZWZjOGNi
NjAzOWU3ODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KQEAgLTEyMTIsMTcgKzEyMTIsMjUgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqZGlj
dGlvbmFyeVJlcHJlc2VudGF0aW9uRm9yRWRpdG9yU3RhdGUoY29uc3QgV2ViS2l0OjpFZGl0b3IK
IC0gKHZvaWQpX2RpZEluc2VydEF0dGFjaG1lbnQ6KE5TU3RyaW5nICopaWRlbnRpZmllciB3aXRo
U291cmNlOihOU1N0cmluZyAqKXNvdXJjZQogewogICAgIGlkIDxXS1VJRGVsZWdhdGVQcml2YXRl
PiB1aURlbGVnYXRlID0gKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilzZWxmLlVJRGVsZWdhdGU7
Ci0gICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXc6ZGlkSW5zZXJ0QXR0YWNobWVudDp3aXRoU291cmNlOildKQotICAgICAgICBbdWlEZWxlZ2F0
ZSBfd2ViVmlldzpzZWxmIGRpZEluc2VydEF0dGFjaG1lbnQ6d3JhcHBlcihBUEk6OkF0dGFjaG1l
bnQ6OmNyZWF0ZShpZGVudGlmaWVyLCAqX3BhZ2UpKSB3aXRoU291cmNlOnNvdXJjZV07Ci0gICAg
ZWxzZSBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmll
dzpkaWRJbnNlcnRBdHRhY2htZW50OildKQotICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpz
ZWxmIGRpZEluc2VydEF0dGFjaG1lbnQ6d3JhcHBlcihBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZShp
ZGVudGlmaWVyLCAqX3BhZ2UpKV07CisgICAgaWYgKCFbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZEluc2VydEF0dGFjaG1lbnQ6d2l0aFNvdXJjZTop
XSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IF9wYWdlLT5h
dHRhY2htZW50Rm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAgW3VpRGVsZWdhdGUg
X3dlYlZpZXc6c2VsZiBkaWRJbnNlcnRBdHRhY2htZW50OndyYXBwZXIoKmF0dGFjaG1lbnQpIHdp
dGhTb3VyY2U6c291cmNlXTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCiAtICh2b2lkKV9kaWRSZW1vdmVBdHRhY2htZW50OihOU1N0cmluZyAqKWlkZW50aWZp
ZXIKIHsKICAgICBpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IChpZCA8V0tV
SURlbGVnYXRlUHJpdmF0ZT4pc2VsZi5VSURlbGVnYXRlOwotICAgIGlmIChbdWlEZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZFJlbW92ZUF0dGFjaG1lbnQ6
KV0pCi0gICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYgZGlkUmVtb3ZlQXR0YWNobWVu
dDp3cmFwcGVyKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlKGlkZW50aWZpZXIsICpfcGFnZSkpXTsK
KyAgICBpZiAoIVt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXc6ZGlkUmVtb3ZlQXR0YWNobWVudDopXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1
dG8gYXR0YWNobWVudCA9IF9wYWdlLT5hdHRhY2htZW50Rm9ySWRlbnRpZmllcihpZGVudGlmaWVy
KSkKKyAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBkaWRSZW1vdmVBdHRhY2htZW50
OndyYXBwZXIoKmF0dGFjaG1lbnQpXTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTQz
OTgsMTggKzQ0MDYsMzEgQEAgV0VCQ09SRV9DT01NQU5EKHlhbmtBbmRTZWxlY3QpCiB9CiAKIC0g
KF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTooTlNTdHJpbmcg
KilmaWxlbmFtZSBjb250ZW50VHlwZTooTlNTdHJpbmcgKiljb250ZW50VHlwZSBkYXRhOihOU0Rh
dGEgKilkYXRhIG9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMg
Y29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyCit7Cisg
ICAgYXV0byBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YV0pOworICAgIGlmIChmaWxlbmFtZSkKKyAgICAg
ICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOmZpbGVuYW1lXTsKKyAgICByZXR1
cm4gW3NlbGYgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6ZmlsZVdyYXBwZXIuZ2V0
KCkgY29udGVudFR5cGU6Y29udGVudFR5cGUgb3B0aW9uczpvcHRpb25zIGNvbXBsZXRpb246Y29t
cGxldGlvbkhhbmRsZXJdOworfQorCistIChfV0tBdHRhY2htZW50ICopX2luc2VydEF0dGFjaG1l
bnRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlciBjb250ZW50VHlw
ZTooTlNTdHJpbmcgKiljb250ZW50VHlwZSBvcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9w
dGlvbnMgKilvcHRpb25zIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0
aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYXV0byBp
ZGVudGlmaWVyID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwotCiAgICAgYXV0byBjb3Jl
T3B0aW9ucyA9IG9wdGlvbnMgPyBvcHRpb25zLmNvcmVEaXNwbGF5T3B0aW9ucyA6IFdlYkNvcmU6
OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyB7IH07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKLSAgICBfcGFnZS0+aW5zZXJ0QXR0YWNobWVu
dChpZGVudGlmaWVyLCBjb3JlT3B0aW9ucywgZmlsZW5hbWUsIGNvbnRlbnRUeXBlLmxlbmd0aCA/
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB7IGNvbnRlbnRUeXBlIH0gOiBzdGQ6Om51bGxvcHQsIGJ1
ZmZlci5nZXQoKSwgW2NhcHR1cmVkSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlciksIGNhcHR1cmVkQnVmZmVyID0gYnVmZmVyLmNvcHlSZWYoKV0gKFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIGF1dG8gYXR0YWNobWVudCA9IEFQSTo6QXR0YWNo
bWVudDo6Y3JlYXRlKGlkZW50aWZpZXIsICpfcGFnZSk7CisgICAgYXR0YWNobWVudC0+c2V0Rmls
ZVdyYXBwZXIoZmlsZVdyYXBwZXIpOworCisgICAgYXV0byBmaWxlU2l6ZSA9IFtbW2ZpbGVXcmFw
cGVyIGZpbGVBdHRyaWJ1dGVzXSBvYmplY3RGb3JLZXk6TlNGaWxlU2l6ZV0gdW5zaWduZWRMb25n
TG9uZ1ZhbHVlXTsKKyAgICBpZiAoIWZpbGVTaXplICYmIGZpbGVXcmFwcGVyLnJlZ3VsYXJGaWxl
KQorICAgICAgICBmaWxlU2l6ZSA9IGZpbGVXcmFwcGVyLnJlZ3VsYXJGaWxlQ29udGVudHMubGVu
Z3RoOworCisgICAgX3BhZ2UtPmluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVudC5jb3B5UmVmKCks
IGNvcmVPcHRpb25zLCBmaWxlU2l6ZSwgW2ZpbGVXcmFwcGVyIHByZWZlcnJlZEZpbGVuYW1lXSwg
Y29udGVudFR5cGUubGVuZ3RoID8gc3RkOjpvcHRpb25hbDxTdHJpbmc+IHsgY29udGVudFR5cGUg
fSA6IHN0ZDo6bnVsbG9wdCwgW2NhcHR1cmVkSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAg
ICAgaWYgKGNhcHR1cmVkSGFuZGxlcikKICAgICAgICAgICAgIGNhcHR1cmVkSGFuZGxlcihlcnJv
ciA9PSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOwogICAgIH0pOwogCi0gICAg
cmV0dXJuIHdyYXBwZXIoQVBJOjpBdHRhY2htZW50OjpjcmVhdGUoaWRlbnRpZmllciwgKl9wYWdl
KSk7CisgICAgcmV0dXJuIHdyYXBwZXIoYXR0YWNobWVudCk7CiAjZWxzZQogICAgIHJldHVybiBu
aWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDU4MWE0YTY3ZDE4Njg2YjYxMTI4Zjg2N2ZiNDk4MWE3
YzZmN2ZjMjkuLmQwY2YyYjhjMDc0M2NkODBhNjExYjk3MGIwYmM5ODllMjA1OTk2NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaApAQCAtMTgwLDcgKzE4MCw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBf
V0tSZWN0RWRnZSkgewogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRCYWNrZ3Jv
dW5kRXh0ZW5kc0JleW9uZFBhZ2U6KSBCT09MIF9iYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2Ug
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMuNCksIGlvcyg4LjApKTsKIAotLSAoX1dLQXR0
YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVu
YW1lIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAqKWRh
dGEgb3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0
aW9uOih2b2lkKF4pKEJPT0wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuMTMuNCksIGlvcygxMS4zKSk7CistIChfV0tBdHRhY2htZW50ICopX2lu
c2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29udGVudFR5
cGU6KE5TU3RyaW5nICopY29udGVudFR5cGUgZGF0YTooTlNEYXRhICopZGF0YSBvcHRpb25zOihf
V0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25zIGNvbXBsZXRpb246KHZvaWQoXiko
Qk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JF
UExBQ0VNRU5UKCItX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6
b3B0aW9uczpjb21wbGV0aW9uOiIsIG1hY29zeCgxMC4xMy40LCBXS19NQUNfVEJBKSwgaW9zKDEx
LjMsIFdLX0lPU19UQkEpKTsKKy0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdp
dGhGaWxlV3JhcHBlcjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIGNvbnRlbnRUeXBlOihO
U1N0cmluZyAqKWNvbnRlbnRUeXBlIG9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9u
cyAqKW9wdGlvbnMgY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25I
YW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogLy8gREVSRUNBVEVEOiBUaGUgc2V0dGVycyBv
ZiB0aGUgdGhyZWUgZm9sbG93aW5nIGZ1bmN0aW9uIGFyZSBkZXByZWNhdGVkLCBwbGVhc2UgdXNl
IG92ZXJyaWRlTGF5b3V0UGFyYW1ldGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oCmluZGV4IDA4Mjk5MzlmYmJjYTJjYjI3ZTYwNjk4
NjBjNDY2ZmZiOGQzMDRjZmIuLmM3MzdjMmU1MzVmYWY2OTBkMWUyM2JkNzUwMzA1M2NhMzI5OTk4
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRh
Y2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFj
aG1lbnQuaApAQCAtNDQsMTkgKzQ0LDI2IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goMTAu
MTMuNCksIGlvcygxMS4zKSkKIAogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKQogQGludGVyZmFjZSBfV0tBdHRhY2htZW50SW5mbyA6IE5TT2Jq
ZWN0Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpjb250ZW50VHlw
ZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKm5hbWU7Ci1AcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpmaWxlUGF0aDsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVsbGFibGUpIE5TU3RyaW5nICpjb250ZW50VHlwZTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVsbGFibGUpIE5TU3RyaW5nICpuYW1l
OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNTdHJpbmcgKmZp
bGVQYXRoOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNEYXRh
ICpkYXRhOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0ZpbGVXcmFwcGVyICpm
aWxlV3JhcHBlcjsKIEBlbmQKIAogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC4xMy40KSwg
aW9zKDExLjMpKQogQGludGVyZmFjZSBfV0tBdHRhY2htZW50IDogTlNPYmplY3QKLS0gKHZvaWQp
cmVxdWVzdEluZm86KHZvaWQoXikoX1dLQXR0YWNobWVudEluZm8gKiBfTnVsbGFibGUsIE5TRXJy
b3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9pZClyZXF1ZXN0RGF0YToodm9p
ZCheKShOU0RhdGEgKiBfTnVsbGFibGUsIE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25I
YW5kbGVyOworCiAtICh2b2lkKXNldERpc3BsYXlPcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxh
eU9wdGlvbnMgKilvcHRpb25zIGNvbXBsZXRpb246KHZvaWQoXiBfTnVsbGFibGUpKE5TRXJyb3Ig
KiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOwotLSAodm9pZClzZXREYXRhOihOU0RhdGEg
KilkYXRhIG5ld0NvbnRlbnRUeXBlOihudWxsYWJsZSBOU1N0cmluZyAqKW5ld0NvbnRlbnRUeXBl
IG5ld0ZpbGVuYW1lOihudWxsYWJsZSBOU1N0cmluZyAqKW5ld0ZpbGVuYW1lIGNvbXBsZXRpb246
KHZvaWQoXiBfTnVsbGFibGUpKE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVy
OworLSAodm9pZClzZXRGaWxlV3JhcHBlcjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIGNv
bnRlbnRUeXBlOihudWxsYWJsZSBOU1N0cmluZyAqKWNvbnRlbnRUeXBlIGNvbXBsZXRpb246KHZv
aWQoXiBfTnVsbGFibGUpKE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS0F0dGFjaG1lbnRJbmZvICppbmZvIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqdW5pcXVlSWRlbnRpZmllcjsK
KworLy8gRGVwcmVjYXRlZCBTUEkuCistICh2b2lkKXJlcXVlc3RJbmZvOih2b2lkKF4pKF9XS0F0
dGFjaG1lbnRJbmZvICogX051bGxhYmxlLCBOU0Vycm9yICogX051bGxhYmxlKSljb21wbGV0aW9u
SGFuZGxlciBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCItaW5mbyIsIG1hY29z
eChXS19NQUNfVEJBLCBXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEsIFdLX0lPU19UQkEpKTsK
Ky0gKHZvaWQpc2V0RGF0YTooTlNEYXRhICopZGF0YSBuZXdDb250ZW50VHlwZToobnVsbGFibGUg
TlNTdHJpbmcgKiluZXdDb250ZW50VHlwZSBuZXdGaWxlbmFtZToobnVsbGFibGUgTlNTdHJpbmcg
KiluZXdGaWxlbmFtZSBjb21wbGV0aW9uOih2b2lkKF4gX051bGxhYmxlKShOU0Vycm9yICogX051
bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VN
RU5UKCJQbGVhc2UgdXNlIC1zZXRGaWxlV3JhcHBlcjpjb250ZW50VHlwZTpjb21wbGV0aW9uOiBp
bnN0ZWFkLiIsIG1hY29zeCgxMC4xMy40LCBXS19NQUNfVEJBKSwgaW9zKDExLjMsIFdLX0lPU19U
QkEpKTsKKwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KaW5kZXggNWYwMGM4Y2Vl
MmEzZjVjZDYxNWE4ODZjYTU3YTFhZmIyNzJhNzQxZC4uZTVjOWU3YjRlZjkyM2M3MmQzZjAwZmRh
ZmUzYTU3YzkwYzhjN2JmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F0dGFjaG1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F0dGFjaG1lbnQubW0KQEAgLTM1LDYgKzM1LDEwIEBACiAjaW1wb3J0IDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKKyNpZiBQTEFU
Rk9STShJT1MpCisjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2Vz
Lmg+CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogQGltcGxlbWVudGF0aW9u
IF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyA6IE5TT2JqZWN0CkBAIC00Nyw0MSArNTEsMzYg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIF9XS0F0
dGFjaG1lbnRJbmZvIHsKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBfZGF0YTsKLSAgICBSZXRhaW5Q
dHI8TlNTdHJpbmc+IF9uYW1lOwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2ZpbGVQYXRoOwor
ICAgIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBfZmlsZVdyYXBwZXI7CiAgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBfY29udGVudFR5cGU7Ci0gICAgUmV0YWluUHRyPE5TRXJyb3I+IF9maWxlTG9h
ZGluZ0Vycm9yOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2ZpbGVQYXRoOwogfQogCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhJbmZvOihjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50SW5mbyYp
aW5mbworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIg
KilmaWxlV3JhcHBlciBmaWxlUGF0aDooTlNTdHJpbmcgKilmaWxlUGF0aCBjb250ZW50VHlwZToo
TlNTdHJpbmcgKiljb250ZW50VHlwZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX2RhdGEgPSBpbmZvLmRhdGEgPyBpbmZvLmRh
dGEtPmNyZWF0ZU5TRGF0YSgpIDogbmlsOwotICAgIF9jb250ZW50VHlwZSA9IGFkb3B0TlMoWyhO
U1N0cmluZyAqKWluZm8uY29udGVudFR5cGUgPzogQCIiIGNvcHldKTsKLSAgICBfbmFtZSA9IGFk
b3B0TlMoWyhOU1N0cmluZyAqKWluZm8ubmFtZSA/OiBAIiIgY29weV0pOwotICAgIF9maWxlUGF0
aCA9IGFkb3B0TlMoWyhOU1N0cmluZyAqKWluZm8uZmlsZVBhdGggPzogQCIiIGNvcHldKTsKLSAg
ICBfZmlsZUxvYWRpbmdFcnJvciA9IG5pbDsKLQotICAgIGlmICghX2RhdGEgJiYgW19maWxlUGF0
aCBsZW5ndGhdKSB7Ci0gICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgICAgICBfZGF0
YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpfZmlsZVBhdGguZ2V0KCkgb3B0aW9u
czpOU0RhdGFSZWFkaW5nTWFwcGVkSWZTYWZlIGVycm9yOiZlcnJvcl07Ci0gICAgICAgIF9maWxl
TG9hZGluZ0Vycm9yID0gZXJyb3I7Ci0gICAgfQotCisgICAgX2ZpbGVXcmFwcGVyID0gZmlsZVdy
YXBwZXI7CisgICAgX2ZpbGVQYXRoID0gZmlsZVBhdGg7CisgICAgX2NvbnRlbnRUeXBlID0gY29u
dGVudFR5cGU7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKE5TRGF0YSAqKWRhdGEKIHsKLSAg
ICByZXR1cm4gX2RhdGEuZ2V0KCk7CisgICAgaWYgKCFbX2ZpbGVXcmFwcGVyIGlzUmVndWxhckZp
bGVdKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIFtfZmlsZVdyYXBwZXIgcmVn
dWxhckZpbGVDb250ZW50c107CiB9CiAKIC0gKE5TU3RyaW5nICopbmFtZQogewotICAgIHJldHVy
biBfbmFtZS5nZXQoKTsKKyAgICBpZiAoW19maWxlV3JhcHBlciBmaWxlbmFtZV0ubGVuZ3RoKQor
ICAgICAgICByZXR1cm4gW19maWxlV3JhcHBlciBmaWxlbmFtZV07CisKKyAgICByZXR1cm4gW19m
aWxlV3JhcHBlciBwcmVmZXJyZWRGaWxlbmFtZV07CiB9CiAKIC0gKE5TU3RyaW5nICopZmlsZVBh
dGgKQEAgLTg5LDE0ICs4OCw0NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgIHJldHVy
biBfZmlsZVBhdGguZ2V0KCk7CiB9CiAKK3N0YXRpYyBCT09MIGlzRGVjbGFyZWRPckR5bmFtaWNU
eXBlSWRlbnRpZmllcihOU1N0cmluZyAqdHlwZSkKK3sKKyAgICByZXR1cm4gVVRUeXBlSXNEZWNs
YXJlZCgoQ0ZTdHJpbmdSZWYpdHlwZSkgfHwgVVRUeXBlSXNEeW5hbWljKChDRlN0cmluZ1JlZil0
eXBlKTsKK30KKworLSAoTlNTdHJpbmcgKilfdHlwZUlkZW50aWZpZXJGcm9tUGF0aEV4dGVuc2lv
bgoreworICAgIE5TU3RyaW5nICpleHRlbnNpb24gPSBzZWxmLm5hbWUucGF0aEV4dGVuc2lvbjsK
KyAgICBhdXRvIHR5cGVJZGVudGlmaWVyID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJ
ZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24sIChDRlN0cmluZ1Jl
ZilleHRlbnNpb24sIG5pbCkpOworICAgIHJldHVybiAoTlNTdHJpbmcgKil0eXBlSWRlbnRpZmll
ci5hdXRvcmVsZWFzZSgpOworfQorCiAtIChOU1N0cmluZyAqKWNvbnRlbnRUeXBlCiB7Ci0gICAg
cmV0dXJuIF9jb250ZW50VHlwZS5nZXQoKTsKKyAgICAvLyBBICJjb250ZW50IHR5cGUiIGNhbiBy
ZWZlciB0byBlaXRoZXIgYSBVVEkgb3IgYSBNSU1FIHR5cGUuIFdlIHByZWZlciBNSU1FIHR5cGUg
aGVyZSB0byBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvci4KKyAgICByZXR1cm4gc2VsZi5taW1l
VHlwZSA/OiBzZWxmLnV0aVR5cGU7Cit9CisKKy0gKE5TU3RyaW5nICopbWltZVR5cGUKK3sKKyAg
ICBOU1N0cmluZyAqY29udGVudFR5cGUgPSBbX2NvbnRlbnRUeXBlIGxlbmd0aF0gPyBfY29udGVu
dFR5cGUuZ2V0KCkgOiBbc2VsZiBfdHlwZUlkZW50aWZpZXJGcm9tUGF0aEV4dGVuc2lvbl07Cisg
ICAgaWYgKCFpc0RlY2xhcmVkT3JEeW5hbWljVHlwZUlkZW50aWZpZXIoY29udGVudFR5cGUpKQor
ICAgICAgICByZXR1cm4gY29udGVudFR5cGU7CisKKyAgICBhdXRvIG1pbWVUeXBlID0gYWRvcHRD
RihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKChDRlN0cmluZ1JlZiljb250ZW50VHlw
ZSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOworICAgIHJldHVybiAoTlNTdHJpbmcgKiltaW1lVHlw
ZS5hdXRvcmVsZWFzZSgpOworfQorCistIChOU1N0cmluZyAqKXV0aVR5cGUKK3sKKyAgICBOU1N0
cmluZyAqY29udGVudFR5cGUgPSBbX2NvbnRlbnRUeXBlIGxlbmd0aF0gPyBfY29udGVudFR5cGUu
Z2V0KCkgOiBbc2VsZiBfdHlwZUlkZW50aWZpZXJGcm9tUGF0aEV4dGVuc2lvbl07CisgICAgaWYg
KGlzRGVjbGFyZWRPckR5bmFtaWNUeXBlSWRlbnRpZmllcihjb250ZW50VHlwZSkpCisgICAgICAg
IHJldHVybiBjb250ZW50VHlwZTsKKworICAgIGF1dG8gdXRpVHlwZSA9IGFkb3B0Q0YoVVRUeXBl
Q3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCAoQ0ZT
dHJpbmdSZWYpY29udGVudFR5cGUsIG5pbCkpOworICAgIHJldHVybiAoTlNTdHJpbmcgKil1dGlU
eXBlLmF1dG9yZWxlYXNlKCk7CiB9CiAKLS0gKE5TRXJyb3IgKilmaWxlTG9hZGluZ0Vycm9yCist
IChOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBwZXIKIHsKLSAgICByZXR1cm4gX2ZpbGVMb2FkaW5n
RXJyb3IuZ2V0KCk7CisgICAgcmV0dXJuIF9maWxlV3JhcHBlci5nZXQoKTsKIH0KIAogQGVuZApA
QCAtMTA4LDM3ICsxNDAsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICByZXR1cm4g
Kl9hdHRhY2htZW50OwogfQogCi0tIChCT09MKWlzRXF1YWw6KGlkKW9iamVjdAorLSAoX1dLQXR0
YWNobWVudEluZm8gKilpbmZvCiB7Ci0gICAgcmV0dXJuIFtvYmplY3QgaXNLaW5kT2ZDbGFzczpb
X1dLQXR0YWNobWVudCBjbGFzc11dICYmIFtzZWxmLnVuaXF1ZUlkZW50aWZpZXIgaXNFcXVhbDpb
KF9XS0F0dGFjaG1lbnQgKilvYmplY3QgdW5pcXVlSWRlbnRpZmllcl1dOworICAgIHJldHVybiBb
W1tfV0tBdHRhY2htZW50SW5mbyBhbGxvY10gaW5pdFdpdGhGaWxlV3JhcHBlcjpfYXR0YWNobWVu
dC0+ZmlsZVdyYXBwZXIoKSBmaWxlUGF0aDpfYXR0YWNobWVudC0+ZmlsZVBhdGgoKSBjb250ZW50
VHlwZTpfYXR0YWNobWVudC0+Y29udGVudFR5cGUoKV0gYXV0b3JlbGVhc2VdOwogfQogCiAtICh2
b2lkKXJlcXVlc3RJbmZvOih2b2lkKF4pKF9XS0F0dGFjaG1lbnRJbmZvICosIE5TRXJyb3IgKikp
Y29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBfYXR0YWNobWVudC0+cmVxdWVzdEluZm8oW2NhcHR1
cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgV2ViQ29y
ZTo6QXR0YWNobWVudEluZm8mIGluZm8sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAg
ICAgICAgaWYgKCFjYXB0dXJlZEJsb2NrKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7Ci0gICAgICAgICAgICBj
YXB0dXJlZEJsb2NrKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4g
Y29kZTpXS0Vycm9yV2ViVmlld0ludmFsaWRhdGVkIHVzZXJJbmZvOm5pbF0pOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBhdHRhY2htZW50SW5mbyA9IGFk
b3B0TlMoW1tfV0tBdHRhY2htZW50SW5mbyBhbGxvY10gaW5pdFdpdGhJbmZvOmluZm9dKTsKLSAg
ICAgICAgaWYgKE5TRXJyb3IgKmZpbGVMb2FkaW5nRXJyb3IgPSBbYXR0YWNobWVudEluZm8gZmls
ZUxvYWRpbmdFcnJvcl0pIHsKLSAgICAgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCBbTlNFcnJv
ciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJ
bmZvOkB7IE5TVW5kZXJseWluZ0Vycm9yS2V5IDogZmlsZUxvYWRpbmdFcnJvciB9XSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBjYXB0dXJlZEJsb2NrKGF0dGFj
aG1lbnRJbmZvLmdldCgpLCBuaWwpOwotICAgIH0pOwotfQotCi0tICh2b2lkKXJlcXVlc3REYXRh
Oih2b2lkKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAg
W3NlbGYgcmVxdWVzdEluZm86W3Byb3RlY3RlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0gKF9XS0F0dGFjaG1lbnRJbmZvICppbmZvLCBOU0Vycm9yICplcnJvcikgewot
ICAgICAgICBwcm90ZWN0ZWRCbG9jayhpbmZvLmRhdGEsIGVycm9yKTsKLSAgICB9XTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihzZWxmLmluZm8sIG5pbCk7CiB9CiAKIC0gKHZvaWQpc2V0RGlzcGxh
eU9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMgY29tcGxldGlv
bjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCkBAIC0xNTUsMTAgKzE2NCwx
NCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgIH0pOwogfQogCi0tICh2b2lkKXNldERh
dGE6KE5TRGF0YSAqKWRhdGEgbmV3Q29udGVudFR5cGU6KE5TU3RyaW5nICopbmV3Q29udGVudFR5
cGUgbmV3RmlsZW5hbWU6KE5TU3RyaW5nICopbmV3RmlsZW5hbWUgY29tcGxldGlvbjoodm9pZChe
KShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKXNldEZpbGVXcmFwcGVyOihO
U0ZpbGVXcmFwcGVyICopZmlsZVdyYXBwZXIgY29udGVudFR5cGU6KE5TU3RyaW5nICopY29udGVu
dFR5cGUgY29tcGxldGlvbjoodm9pZCAoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgog
ewotICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7
Ci0gICAgX2F0dGFjaG1lbnQtPnNldERhdGFBbmRDb250ZW50VHlwZShidWZmZXIuZ2V0KCksIG5l
d0NvbnRlbnRUeXBlLCBuZXdGaWxlbmFtZSwgW2NhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpLCBjYXB0dXJlZEJ1ZmZlciA9IGJ1ZmZlci5jb3B5UmVmKCldIChD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgYXV0byBmaWxlU2l6ZSA9IFtbW2ZpbGVX
cmFwcGVyIGZpbGVBdHRyaWJ1dGVzXSBvYmplY3RGb3JLZXk6TlNGaWxlU2l6ZV0gdW5zaWduZWRM
b25nTG9uZ1ZhbHVlXTsKKyAgICBpZiAoIWZpbGVTaXplICYmIGZpbGVXcmFwcGVyLnJlZ3VsYXJG
aWxlKQorICAgICAgICBmaWxlU2l6ZSA9IGZpbGVXcmFwcGVyLnJlZ3VsYXJGaWxlQ29udGVudHMu
bGVuZ3RoOworCisgICAgX2F0dGFjaG1lbnQtPnNldEZpbGVXcmFwcGVyKGZpbGVXcmFwcGVyKTsK
KyAgICBfYXR0YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyhmaWxlU2l6ZSwgY29udGVudFR5cGUs
IFtmaWxlV3JhcHBlciBwcmVmZXJyZWRGaWxlbmFtZV0sIFtjYXB0dXJlZEJsb2NrID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8gZXJyb3IpIHsKICAgICAgICAgaWYgKCFj
YXB0dXJlZEJsb2NrKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNjksMTkgKzE4MiwyMiBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgIH0pOwogfQogCi0tIChOU1N0cmluZyAqKXVu
aXF1ZUlkZW50aWZpZXIKKy0gKHZvaWQpc2V0RGF0YTooTlNEYXRhICopZGF0YSBuZXdDb250ZW50
VHlwZTooTlNTdHJpbmcgKiluZXdDb250ZW50VHlwZSBuZXdGaWxlbmFtZTooTlNTdHJpbmcgKilu
ZXdGaWxlbmFtZSBjb21wbGV0aW9uOih2b2lkKF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRs
ZXIKIHsKLSAgICByZXR1cm4gX2F0dGFjaG1lbnQtPmlkZW50aWZpZXIoKTsKKyAgICBhdXRvIGZp
bGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmls
ZVdpdGhDb250ZW50czpkYXRhXSk7CisgICAgaWYgKG5ld0ZpbGVuYW1lKQorICAgICAgICBbZmls
ZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6bmV3RmlsZW5hbWVdOworICAgIFtzZWxmIHNl
dEZpbGVXcmFwcGVyOmZpbGVXcmFwcGVyLmdldCgpIGNvbnRlbnRUeXBlOm5ld0NvbnRlbnRUeXBl
IGNvbXBsZXRpb246Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCi0tIChOU1VJbnRlZ2VyKWhhc2gK
Ky0gKE5TU3RyaW5nICopdW5pcXVlSWRlbnRpZmllcgogewotICAgIHJldHVybiBbc2VsZi51bmlx
dWVJZGVudGlmaWVyIGhhc2hdOworICAgIHJldHVybiBfYXR0YWNobWVudC0+aWRlbnRpZmllcigp
OwogfQogCiAtIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCiB7Ci0gICAgcmV0dXJuIFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAIGlkPSclQCc+IiwgW3NlbGYgY2xhc3NdLCBzZWxmLnVu
aXF1ZUlkZW50aWZpZXJdOworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IjwlQCAlcCBpZD0nJUAnPiIsIFtzZWxmIGNsYXNzXSwgc2VsZiwgc2VsZi51bmlxdWVJZGVudGlm
aWVyXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KaW5kZXggODM3ZWMxYTAyNWNhZTRjYTkzZGEwZjEwNjYx
MDU0MWZmYTI1NGU3Yy4uZDZlMGU0Mjk3MTAxYjY0NTQ4OWY5MDhkODBlNThiODhjYjAxZjYzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLm1tCkBAIC01Miw2ICs1Miw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6ZGlk
SW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0CiAgICAg
W21fd2ViVmlldyBfZGlkSW5zZXJ0QXR0YWNobWVudDppZGVudGlmaWVyIHdpdGhTb3VyY2U6c291
cmNlXTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOworICAgIFVOVVNFRF9Q
QVJBTShzb3VyY2UpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggNWJhMjgyNDBjMGNkNWZkZGM3Zjg1
ZTUyNzAwYTllNDIzZGFmNDA5OS4uZWNkYzY4ODFiNTg0MjA2YzFkMjI0ZGQxZDFjMzUyYWFjZmE5
ZDdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAKKyNpbXBvcnQgIkFQSUF0dGFjaG1lbnQuaCIKICNpbXBvcnQg
IkFQSVVJQ2xpZW50LmgiCiAjaW1wb3J0ICJEYXRhRGV0ZWN0aW9uUmVzdWx0LmgiCiAjaW1wb3J0
ICJMb2FkUGFyYW1ldGVycy5oIgpAQCAtMTYwLDQgKzE2MSwyNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0RHJhZ0NhcmV0UmVjdChjb25zdCBJbnRSZWN0JiBkcmFnQ2FyZXRSZWN0KQogCiAjZW5k
aWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCisKK3ZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8
QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1lbnQsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmls
ZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3sKKyAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBk
YXRhUmVmZXJlbmNlLnNpemUoKSk7CisgICAgYXV0byBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tO
U0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6YnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpXSk7CisgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZl
cnJlZEZpbGVuYW1lOnByZWZlcnJlZEZpbGVOYW1lXTsKKyAgICBhdHRhY2htZW50LT5zZXRGaWxl
V3JhcHBlcihmaWxlV3JhcHBlci5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpwbGF0
Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1lbnQs
IGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgYXV0byBmaWxlV3JhcHBlciA9IGFkb3B0
TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoOmZpbGVQYXRoXSBvcHRpb25zOjAgZXJyb3I6bmlsXSk7CisgICAgYXR0YWNobWVudC0+c2V0
RmlsZVdyYXBwZXIoZmlsZVdyYXBwZXIuZ2V0KCkpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
cGxhdGZvcm1DbG9uZUF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiBmcm9tQXR0YWNo
bWVudCwgUmVmPEFQSTo6QXR0YWNobWVudD4mJiB0b0F0dGFjaG1lbnQpCit7CisgICAgdG9BdHRh
Y2htZW50LT5zZXRGaWxlV3JhcHBlcihmcm9tQXR0YWNobWVudC0+ZmlsZVdyYXBwZXIoKSk7Cit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAyNzA0MjNmNmViMTM5YTY4YmY1Y2Ix
OGY4ZWVmNWE3YzM4NjhhNGNiLi42MGQ5NjUwMTVhMzQ5MzNkYmQ0Mzc3MDY4MmI3OWU4NzM3OGEx
ZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTU2MDEs
MjIgKzU2MDEsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7CiB9CiAKLSNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotCi12b2lkIFdlYlBhZ2VQcm94eTo6YXR0YWNobWVu
dEluZm9DYWxsYmFjayhjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50SW5mbyYgaW5mbywgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQotewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtl
PEF0dGFjaG1lbnRJbmZvQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwotICAgIGlmICghY2FsbGJhY2sp
IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBNRVNTQUdFX0NIRUNLX1VSTChpbmZvLmZpbGVQYXRoKTsKLSAgICBjYWxsYmFjay0+
cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGluZm8pOwotfQotCi0jZW5kaWYKLQogdm9p
ZCBXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGFSZWZlcmVuY2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNr
ID0gbV9jYWxsYmFja3MudGFrZTxEYXRhQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwpAQCAtNjE5Niw2
ICs2MTgwLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhp
dGVkKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB0ZXJtaW5hCiAgICAgbV90b3VjaEV2ZW50UXVl
dWUuY2xlYXIoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAg
ICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IG1fYXR0YWNobWVudElkZW50aWZpZXJUb0F0dGFjaG1l
bnRNYXAua2V5cygpKQorICAgICAgICBtX3BhZ2VDbGllbnQuZGlkUmVtb3ZlQXR0YWNobWVudChp
ZGVudGlmaWVyKTsKKyAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLmNs
ZWFyKCk7CisjZW5kaWYKKwogICAgIGlmICh0ZXJtaW5hdGlvblJlYXNvbiAhPSBQcm9jZXNzVGVy
bWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwKSB7CiAgICAgICAgIFBhZ2VMb2FkU3RhdGU6
OlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7
CiAgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5yZXNldCh0cmFuc2FjdGlvbik7CkBAIC03NzQxLDI2
ICs3NzMxLDI5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0b3VjaEJhck1lbnVJdGVtRGF0YVJlbW92
ZWQoY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmIHRvdWNoCiAKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQogCi12b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudChjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYgb3B0
aW9ucywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRl
bnRUeXBlLCBTaGFyZWRCdWZmZXImIGRhdGEsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2spCitSZWZQdHI8QVBJOjpBdHRhY2htZW50PiBXZWJQYWdlUHJveHk6
OmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3QK
IHsKLSAgICBpZiAoIWlzVmFsaWQoKSkgewotICAgICAgICBjYWxsYmFjayhDYWxsYmFja0Jhc2U6
OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAg
ICBpZiAoaWRlbnRpZmllci5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChpZGVudGlm
aWVyLCBvcHRpb25zLCBmaWxlbmFtZSwgY29udGVudFR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSB7ICZkYXRhIH0sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgcmV0dXJu
IG1fYXR0YWNobWVudElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXAuZ2V0KGlkZW50aWZpZXIpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF0dGFjaG1lbnRJbmZvKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChjb25zdCBBdHRhY2htZW50SW5mbyYsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6Omluc2VydEF0
dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiBhdHRhY2htZW50LCBjb25zdCBBdHRhY2ht
ZW50RGlzcGxheU9wdGlvbnMmIG9wdGlvbnMsIHVpbnQ2NF90IGZpbGVTaXplLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIEZ1bmN0aW9u
PHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFpc1Zh
bGlkKCkpIHsKLSAgICAgICAgY2FsbGJhY2soeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25l
cldhc0ludmFsaWRhdGVkKTsKKyAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNlOjpFcnJvcjo6
T3duZXJXYXNJbnZhbGlkYXRlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAo
Y29udGVudFR5cGUpCisgICAgICAgIGF0dGFjaG1lbnQtPnNldENvbnRlbnRUeXBlKCpjb250ZW50
VHlwZSk7CisKKyAgICBhdXRvIGF0dGFjaG1lbnRJZGVudGlmaWVyID0gYXR0YWNobWVudC0+aWRl
bnRpZmllcigpOworICAgIG1fYXR0YWNobWVudElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXAuc2V0
KGF0dGFjaG1lbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKKwogICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdHRhY2htZW50SW5mbyhpZGVudGlmaWVy
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChhdHRhY2htZW50SWRlbnRpZmllciwgb3B0aW9ucywg
ZmlsZVNpemUsIGZpbGVuYW1lLCBjb250ZW50VHlwZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBvcHRpb25zLCBG
dW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQpAQCAtNzc3NCw3
ICs3NzY3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9u
cyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIEF0dGFjaG0KICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhpZGVudGlmaWVy
LCBvcHRpb25zLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6c2V0QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIFNoYXJlZEJ1ZmZlciYgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYgbmV3Q29udGVu
dFR5cGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0ZpbGVuYW1lLCBGdW5jdGlvbjx2b2lk
KENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6OnVw
ZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgdWludDY0
X3QgZmlsZVNpemUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0NvbnRlbnRUeXBlLCBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdGaWxlbmFtZSwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAg
ICBjYWxsYmFjayhDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKQEAg
LTc3ODIsMTkgKzc3NzUsODcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEF0dGFjaG1lbnREYXRh
QW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBTaGEKICAgICB9CiAKICAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdHRhY2htZW50RGF0YUFuZENvbnRl
bnRUeXBlKGlkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7ICZkYXRh
IH0sIFdURk1vdmUobmV3Q29udGVudFR5cGUpLCBXVEZNb3ZlKG5ld0ZpbGVuYW1lKSwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGlkZW50aWZpZXIsIGZpbGVTaXplLCBXVEZNb3Zl
KG5ld0NvbnRlbnRUeXBlKSwgV1RGTW92ZShuZXdGaWxlbmFtZSksIGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyRnJvbURhdGEoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEpCit7CisgICAgaWYgKGF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGlkZW50
aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGF0dGFjaG1lbnQgPSBlbnN1cmVB
dHRhY2htZW50KGlkZW50aWZpZXIpOworICAgIGF0dGFjaG1lbnQtPnNldENvbnRlbnRUeXBlKGNv
bnRlbnRUeXBlKTsKKyAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLnNl
dChpZGVudGlmaWVyLCBhdHRhY2htZW50LmNvcHlSZWYoKSk7CisKKyAgICBwbGF0Zm9ybVJlZ2lz
dGVyQXR0YWNobWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpLCBwcmVmZXJyZWRGaWxlTmFtZSwgZGF0
YSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
RnJvbUZpbGVQYXRoKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICBpZiAoYXR0YWNobWVudEZv
cklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gYXR0
YWNobWVudCA9IGVuc3VyZUF0dGFjaG1lbnQoaWRlbnRpZmllcik7CisgICAgYXR0YWNobWVudC0+
c2V0Q29udGVudFR5cGUoY29udGVudFR5cGUpOworICAgIGF0dGFjaG1lbnQtPnNldEZpbGVQYXRo
KGZpbGVQYXRoKTsKKyAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLnNl
dChpZGVudGlmaWVyLCBhdHRhY2htZW50LmNvcHlSZWYoKSk7CisKKyAgICBwbGF0Zm9ybVJlZ2lz
dGVyQXR0YWNobWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpLCBmaWxlUGF0aCk7Cit9CisKK3ZvaWQg
V2ViUGFnZVByb3h5OjpjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgZnJvbUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9JZGVudGlmaWVyKQoreworICAgIGF1dG8gbmV3QXR0YWNo
bWVudCA9IGVuc3VyZUF0dGFjaG1lbnQodG9JZGVudGlmaWVyKTsKKyAgICBhdXRvIGV4aXN0aW5n
QXR0YWNobWVudCA9IGF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGZyb21JZGVudGlmaWVyKTsKKyAg
ICBpZiAoIWV4aXN0aW5nQXR0YWNobWVudCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG5ld0F0dGFjaG1lbnQtPnNldENvbnRl
bnRUeXBlKGV4aXN0aW5nQXR0YWNobWVudC0+Y29udGVudFR5cGUoKSk7CisgICAgbmV3QXR0YWNo
bWVudC0+c2V0RmlsZVBhdGgoZXhpc3RpbmdBdHRhY2htZW50LT5maWxlUGF0aCgpKTsKKworICAg
IHBsYXRmb3JtQ2xvbmVBdHRhY2htZW50KGV4aXN0aW5nQXR0YWNobWVudC5yZWxlYXNlTm9uTnVs
bCgpLCBXVEZNb3ZlKG5ld0F0dGFjaG1lbnQpKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkK
Kwordm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6
OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpCit7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJl
Z2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25zdCBTdHJpbmcmKQor
eworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1DbG9uZUF0dGFjaG1lbnQoUmVmPEFQ
STo6QXR0YWNobWVudD4mJiwgUmVmPEFQSTo6QXR0YWNobWVudD4mJikKK3sKK30KKworI2VuZGlm
CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRJbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2UpCiB7CisgICAgZW5zdXJlQXR0YWNobWVu
dChpZGVudGlmaWVyKTsKICAgICBtX3BhZ2VDbGllbnQuZGlkSW5zZXJ0QXR0YWNobWVudChpZGVu
dGlmaWVyLCBzb3VyY2UpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVtb3ZlQXR0YWNo
bWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiB7CisgICAgQVNTRVJUKGF0dGFjaG1lbnRG
b3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKTsKICAgICBtX3BhZ2VDbGllbnQuZGlkUmVtb3ZlQXR0
YWNobWVudChpZGVudGlmaWVyKTsKIH0KIAorUmVmPEFQSTo6QXR0YWNobWVudD4gV2ViUGFnZVBy
b3h5OjplbnN1cmVBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBp
ZiAoYXV0byBleGlzdGluZ0F0dGFjaG1lbnQgPSBhdHRhY2htZW50Rm9ySWRlbnRpZmllcihpZGVu
dGlmaWVyKSkKKyAgICAgICAgcmV0dXJuICpleGlzdGluZ0F0dGFjaG1lbnQ7CisKKyAgICBhdXRv
IGF0dGFjaG1lbnQgPSBBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZShpZGVudGlmaWVyLCAqdGhpcyk7
CisgICAgbV9hdHRhY2htZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1hcC5zZXQoaWRlbnRpZmll
ciwgYXR0YWNobWVudC5jb3B5UmVmKCkpOworICAgIHJldHVybiBhdHRhY2htZW50OworfQorCiAj
ZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAogdm9pZCBXZWJQYWdlUHJveHk6
OndyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwg
RnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhNmY5NTg3ZDQzZWNiYjBhOWViNGY2ZTU2MGYzYWNm
YjJmOWUyZmUwLi5lNGM1N2Q5MGE3YWU1N2MwMmQxYmFjYjhhY2NkNjNjZmQzMWE4YTU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTM1LDYgKzEzNSw3IEBAIGNs
YXNzIE1lZGlhU2Vzc2lvbk1ldGFkYXRhOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBBUEkgeworY2xh
c3MgQXR0YWNobWVudDsKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50OwogY2xhc3MgRmluZENsaWVu
dDsKIGNsYXNzIEZpbmRNYXRjaGVzQ2xpZW50OwpAQCAtMTk3LDcgKzE5OCw2IEBAIHVzaW5nIEZs
b2F0Qm94RXh0ZW50ID0gUmVjdEVkZ2VzPGZsb2F0PjsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEF0dGFjaG1lbnREaXNwbGF5T3B0
aW9uczsKLXN0cnVjdCBBdHRhY2htZW50SW5mbzsKIH0KICNlbmRpZgogCkBAIC0yNzUsMTAgKzI3
NSw2IEBAIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEVkaXRpbmdSYW5nZT4gRWRpdGluZ1Jhbmdl
Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmPiBTdHJpbmdD
YWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiwgYm9vbCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyY+IFNjcmlwdFZhbHVl
Q2FsbGJhY2s7CiAKLSNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotdHlwZWRlZiBHZW5l
cmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6QXR0YWNobWVudEluZm8mPiBBdHRhY2htZW50SW5m
b0NhbGxiYWNrOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShHVEspCiB0eXBlZGVmIEdlbmVyaWND
YWxsYmFjazxBUEk6OkVycm9yKj4gUHJpbnRGaW5pc2hlZENhbGxiYWNrOwogI2VuZGlmCkBAIC0x
MzE5LDExICsxMzE1LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKLSAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmLCBjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudEluZm8oY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvJiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIFJlZlB0cjxBUEk6OkF0dGFjaG1lbnQ+IGF0dGFj
aG1lbnRGb3JJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3Q7CisgICAg
dm9pZCBpbnNlcnRBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFdlYkNv
cmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYsIHVpbnQ2NF90IGZpbGVTaXplLCBjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIEZ1bmN0
aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgc2V0QXR0YWNobWVu
dERpc3BsYXlPcHRpb25zKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgV2ViQ29yZTo6QXR0YWNo
bWVudERpc3BsYXlPcHRpb25zLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKLSAgICB2b2lkIHNldEF0dGFjaG1lbnREYXRhQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiYmIG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdGaWxl
bmFtZSwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBh
dHRhY2htZW50SW5mb0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvJiwgQ2Fs
bGJhY2tJRCk7CisgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIHVpbnQ2NF90IGZpbGVTaXplLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4m
JiBuZXdDb250ZW50VHlwZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYgbmV3RmlsZW5hbWUsIEZ1
bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkBAIC0xODA3LDggKzE4MDIsMTcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHN0b3BBbGxVUkxTY2hlbWVUYXNrcygpOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0
YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
OworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21GaWxlUGF0aChjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgpOworICAgIHZvaWQgY2xvbmVBdHRhY2htZW50RGF0YShjb25zdCBTdHJp
bmcmIGZyb21JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRvSWRlbnRpZmllcik7CisKKyAgICB2
b2lkIHBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNv
bnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
OworICAgIHZvaWQgcGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVu
dD4mJiwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CisgICAgdm9pZCBwbGF0Zm9ybUNsb25lQXR0
YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGZyb21BdHRhY2htZW50LCBSZWY8QVBJOjpB
dHRhY2htZW50PiYmIHRvQXR0YWNobWVudCk7CisKICAgICB2b2lkIGRpZEluc2VydEF0dGFjaG1l
bnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7CiAgICAg
dm9pZCBkaWRSZW1vdmVBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7CisgICAg
UmVmPEFQSTo6QXR0YWNobWVudD4gZW5zdXJlQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNT
X1dJTkRPV1NFUlZFUl9CTE9DS0lORykKQEAgLTIyMDgsNiArMjIxMiwxMCBAQCBwcml2YXRlOgog
CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZjxXZWJVUkxTY2hlbWVIYW5kbGVyPj4gbV91cmxTY2hl
bWVIYW5kbGVyc0J5U2NoZW1lOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxXZWJVUkxTY2hl
bWVIYW5kbGVyPj4gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllcjsKKworI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZjxBUEk6OkF0dGFj
aG1lbnQ+PiBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwOworI2VuZGlmCiAg
ICAgICAgIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VS
VkVSX0JMT0NLSU5HKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGluaz4gbV9kaXNwbGF5
TGluazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgppbmRleCA2OGQ2Y2I5YjhhMGU0OGFkZDlmZTdhNzY3MDZlYmFkYjUyYzAwNDNiLi4xNjc4
ZjMyMmI0ZTQ4OTc1MjQ1NjU0YjI1OWViYmNhMzJkMjdlMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xNzYsOSArMTc2LDYg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBFZGl0aW5nUmFuZ2VDYWxsYmFjayhz
dHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIFVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QgcmVzdWx0LCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhX
ZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBhY3R1YWxS
YW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0jaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKLSAgICBBdHRhY2htZW50SW5mb0NhbGxiYWNrKHN0cnVjdCBXZWJDb3JlOjpB
dHRhY2htZW50SW5mbyBpbmZvLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7Ci0jZW5k
aWYKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgQXBwbGljYXRpb25NYW5p
ZmVzdENhbGxiYWNrKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4g
bWFuaWZlc3QsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCkBAIC01Mjgs
NiArNTI1LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICBSZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
RnJvbURhdGEoU3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIHBy
ZWZlcnJlZEZpbGVOYW1lLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBSZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyRnJvbUZpbGVQYXRoKFN0cmluZyBpZGVudGlmaWVyLCBTdHJpbmcg
Y29udGVudFR5cGUsIFN0cmluZyBmaWxlUGF0aCkKKyAgICBDbG9uZUF0dGFjaG1lbnREYXRhKFN0
cmluZyBmcm9tSWRlbnRpZmllciwgU3RyaW5nIHRvSWRlbnRpZmllcikKICAgICBEaWRJbnNlcnRB
dHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBTdHJpbmcgc291cmNlKQogICAgIERpZFJlbW92
ZUF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggMWM3YWJmYzI2YzYzNmQ5
NDgwZTNmZGRjN2M2YmVhNTEzMzJmMjZiOS4uNDE1ZTY2OWU4MWJlNjVhM2U5ZDRkMDc0MTFlOTc1
M2U3YjVlOWM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmgKQEAgLTM1LDcgKzM1LDcgQEAgT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3Owog
T0JKQ19DTEFTUyBXS0VkaXRvclVuZG9UYXJnZXRPYmpDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci1zdHJ1Y3QgUHJvbWlzZWRCbG9iSW5mbzsKK3N0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZv
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBmOTBhMmY4YTc1NWQ5YjYzODI0NDU2NmRk
ZDA5NjI3MDcwM2UyMTE1Li4wMTc0OThlYWUyMGIwY2FiZTA2MTY4MTQ1MmRhMjNhMzk3YzI3NWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tCkBAIC01Myw3ICs1Myw3IEBACiAjaW1wb3J0ICJfV0tEb3dubG9hZEludGVybmFsLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRm
b3JtU2NyZWVuLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Byb21pc2VkQmxvYkluZm8uaD4KKyNpbXBv
cnQgPFdlYkNvcmUvUHJvbWlzZWRBdHRhY2htZW50SW5mby5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9WYWxpZGF0aW9uQnViYmxlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggY2M0NWM1Y2Zm
MjIwZDMyNTc2NWYwYTA3MjFlMTFiOTk4NTE0OTQ2OS4uYTIyODMwYWRmZjNjODRiN2I1YWU0ZGRl
OWZiM2E0MTJiYTc2MjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtNjEsNyArNjEsNyBAQCBjbGFzcyBD
b2xvcjsKIGNsYXNzIEZsb2F0UXVhZDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBTZWxlY3Rpb25S
ZWN0Owotc3RydWN0IFByb21pc2VkQmxvYkluZm87CitzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50
SW5mbzsKIGVudW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpp
bmRleCBlODI5ZDQ1MDEyNWYwN2M4NTIzYTczOTM2MGE4MDE2NTY2YTFmOTY4Li4wMDk2MDQ5OGQx
NTc4NjViNTYzZWM2YTMyNjRhYzQ5ZGUxZGFhMTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTgwLDcg
KzgwLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9QYXRoLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhdGhVdGlsaXRpZXMuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvUHJvbWlzZWRCbG9iSW5mby5oPgorI2ltcG9ydCA8V2ViQ29yZS9Qcm9taXNlZEF0dGFj
aG1lbnRJbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dElu
ZGljYXRvci5oPgpAQCAtNDg3Myw4ICs0ODczLDggQEAgc3RhdGljIEJPT0wgc2hvdWxkRW5hYmxl
RHJhZ0ludGVyYWN0aW9uRm9yUG9saWN5KF9XS0RyYWdJbnRlcmFjdGlvblBvbGljeSBwb2xpY3kK
IHsKICAgICBBU1NFUlQoaXRlbS5zb3VyY2VBY3Rpb24gIT0gRHJhZ1NvdXJjZUFjdGlvbk5vbmUp
OwogCi0gICAgaWYgKGl0ZW0ucHJvbWlzZWRCbG9iKQotICAgICAgICBbc2VsZiBfcHJlcGFyZVRv
RHJhZ1Byb21pc2VkQmxvYjppdGVtLnByb21pc2VkQmxvYl07CisgICAgaWYgKGl0ZW0ucHJvbWlz
ZWRBdHRhY2htZW50SW5mbykKKyAgICAgICAgW3NlbGYgX3ByZXBhcmVUb0RyYWdQcm9taXNlZEF0
dGFjaG1lbnQ6aXRlbS5wcm9taXNlZEF0dGFjaG1lbnRJbmZvXTsKIAogICAgIGF1dG8gZHJhZ0lt
YWdlID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTppbWFnZS5nZXQo
KSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3Jp
ZW50YXRpb25VcF0pOwogICAgIF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuc3RhZ2VEcmFnSXRl
bShpdGVtLCBkcmFnSW1hZ2UuZ2V0KCkpOwpAQCAtNTA3NSw3ICs1MDc1LDcgQEAgc3RhdGljIE5T
QXJyYXk8VUlJdGVtUHJvdmlkZXIgKj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyb3BTZXNz
aW9uKGlkIDxVSURyb3AKICAgICBbX2VkaXREcm9wQ2FyZXRWaWV3IHVwZGF0ZVRvUG9zaXRpb246
W1dLVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbldpdGhSZWN0OnJlY3RdXTsKIH0KIAotLSAodm9p
ZClfcHJlcGFyZVRvRHJhZ1Byb21pc2VkQmxvYjooY29uc3QgUHJvbWlzZWRCbG9iSW5mbyYpaW5m
bworLSAodm9pZClfcHJlcGFyZVRvRHJhZ1Byb21pc2VkQXR0YWNobWVudDooY29uc3QgUHJvbWlz
ZWRBdHRhY2htZW50SW5mbyYpaW5mbwogewogICAgIGF1dG8gc2Vzc2lvbiA9IHJldGFpblB0cihf
ZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmRyYWdTZXNzaW9uKCkpOwogICAgIGlmICghc2Vzc2lv
bikgewpAQCAtNTA4Niw3ICs1MDg2LDcgQEAgc3RhdGljIE5TQXJyYXk8VUlJdGVtUHJvdmlkZXIg
Kj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyb3BTZXNzaW9uKGlkIDxVSURyb3AKICAgICBh
dXRvIG51bWJlck9mQWRkaXRpb25hbFR5cGVzID0gaW5mby5hZGRpdGlvbmFsVHlwZXMuc2l6ZSgp
OwogICAgIEFTU0VSVChudW1iZXJPZkFkZGl0aW9uYWxUeXBlcyA9PSBpbmZvLmFkZGl0aW9uYWxE
YXRhLnNpemUoKSk7CiAKLSAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkRyYWcgc2Vzc2lv
bjogJXAgcHJlcGFyaW5nIHRvIGRyYWcgYmxvYjogJXMiLCBzZXNzaW9uLmdldCgpLCBpbmZvLmJs
b2JVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERy
b3AsICJEcmFnIHNlc3Npb246ICVwIHByZXBhcmluZyB0byBkcmFnIGJsb2I6ICVzIHdpdGggYXR0
YWNobWVudCBpZGVudGlmaWVyOiAlcyIsIHNlc3Npb24uZ2V0KCksIGluZm8uYmxvYlVSTC5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCBpbmZvLmF0dGFjaG1lbnRJZGVudGlmaWVyLnV0ZjgoKS5kYXRh
KCkpOwogCiAgICAgYXV0byByZWdpc3RyYXRpb25MaXN0ID0gYWRvcHROUyhbW1dlYkl0ZW1Qcm92
aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0IGFsbG9jXSBpbml0XSk7CiAgICAgW3JlZ2lzdHJhdGlv
bkxpc3Qgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJlc2VudGF0
aW9uU3R5bGVBdHRhY2htZW50XTsKQEAgLTUwOTksNyArNTA5OSw3IEBAIHN0YXRpYyBOU0FycmF5
PFVJSXRlbVByb3ZpZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lvbihp
ZCA8VUlEcm9wCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBbcmVnaXN0cmF0aW9uTGlzdCBhZGRQ
cm9taXNlZFR5cGU6aW5mby5jb250ZW50VHlwZSBmaWxlQ2FsbGJhY2s6W3Nlc3Npb24gPSBXVEZN
b3ZlKHNlc3Npb24pLCB3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYp
LCB1cmwgPSBpbmZvLmJsb2JVUkxdIChXZWJJdGVtUHJvdmlkZXJGaWxlQ2FsbGJhY2sgY2FsbGJh
Y2spIHsKKyAgICBbcmVnaXN0cmF0aW9uTGlzdCBhZGRQcm9taXNlZFR5cGU6aW5mby5jb250ZW50
VHlwZSBmaWxlQ2FsbGJhY2s6W3Nlc3Npb24gPSBXVEZNb3ZlKHNlc3Npb24pLCB3ZWFrU2VsZiA9
IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBpbmZvXSAoV2ViSXRlbVByb3ZpZGVy
RmlsZUNhbGxiYWNrIGNhbGxiYWNrKSB7CiAgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtT
ZWxmLmdldCgpOwogICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpIHsKICAgICAgICAgICAgIGNhbGxi
YWNrKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vy
cm9yV2ViVmlld0ludmFsaWRhdGVkIHVzZXJJbmZvOm5pbF0pOwpAQCAtNTEwOSwxMyArNTEwOSwy
NCBAQCBzdGF0aWMgTlNBcnJheTxVSUl0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRl
cnNGcm9tRHJvcFNlc3Npb24oaWQgPFVJRHJvcAogICAgICAgICBOU1N0cmluZyAqdGVtcG9yYXJ5
QmxvYkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAImJs
b2JzIik7CiAgICAgICAgIE5TVVJMICpkZXN0aW5hdGlvblVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6W3RlbXBvcmFyeUJsb2JEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OltOU1VVSUQgVVVJRF0uVVVJRFN0cmluZ10gaXNEaXJlY3Rvcnk6Tk9dOwogCi0gICAgICAg
IFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRHJhZyBzZXNzaW9uOiAlcCBkZWxpdmVyaW5nIHBy
b21pc2VkIGJsb2IgYXQgcGF0aDogJUAiLCBzZXNzaW9uLmdldCgpLCBkZXN0aW5hdGlvblVSTC5w
YXRoKTsKLSAgICAgICAgc3Ryb25nU2VsZi0+X3BhZ2UtPndyaXRlQmxvYlRvRmlsZVBhdGgodXJs
LCBkZXN0aW5hdGlvblVSTC5wYXRoLCBbcHJvdGVjdGVkVVJMID0gcmV0YWluUHRyKGRlc3RpbmF0
aW9uVVJMKSwgcHJvdGVjdGVkQ2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoY2FsbGJhY2spXSAoYm9v
bCBzdWNjZXNzKSB7Ci0gICAgICAgICAgICBpZiAoc3VjY2VzcykKLSAgICAgICAgICAgICAgICBw
cm90ZWN0ZWRDYWxsYmFjayhwcm90ZWN0ZWRVUkwuZ2V0KCksIG5pbCk7CisgICAgICAgIGF1dG8g
YXR0YWNobWVudCA9IHN0cm9uZ1NlbGYtPl9wYWdlLT5hdHRhY2htZW50Rm9ySWRlbnRpZmllcihp
bmZvLmF0dGFjaG1lbnRJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGF0dGFjaG1lbnQgJiYgYXR0
YWNobWVudC0+ZmlsZVdyYXBwZXIoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0Fu
ZERyb3AsICJEcmFnIHNlc3Npb246ICVwIGRlbGl2ZXJpbmcgcHJvbWlzZWQgYXR0YWNobWVudDog
JXMgYXQgcGF0aDogJUAiLCBzZXNzaW9uLmdldCgpLCBpbmZvLmF0dGFjaG1lbnRJZGVudGlmaWVy
LnV0ZjgoKS5kYXRhKCksIGRlc3RpbmF0aW9uVVJMLnBhdGgpOworICAgICAgICAgICAgTlNFcnJv
ciAqZmlsZVdyYXBwZXJFcnJvciA9IG5pbDsKKyAgICAgICAgICAgIGlmIChbYXR0YWNobWVudC0+
ZmlsZVdyYXBwZXIoKSB3cml0ZVRvVVJMOmRlc3RpbmF0aW9uVVJMIG9wdGlvbnM6MCBvcmlnaW5h
bENvbnRlbnRzVVJMOm5pbCBlcnJvcjomZmlsZVdyYXBwZXJFcnJvcl0pCisgICAgICAgICAgICAg
ICAgY2FsbGJhY2soZGVzdGluYXRpb25VUkwsIG5pbCk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcHJvdGVjdGVkQ2FsbGJhY2sobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21h
aW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0pOwotICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhuaWwsIGZpbGVXcmFwcGVyRXJyb3Ip
OworICAgICAgICB9IGVsc2UgaWYgKCFpbmZvLmJsb2JVUkwuaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkRyYWcgc2Vzc2lvbjogJXAgZGVsaXZlcmlu
ZyBwcm9taXNlZCBibG9iIGF0IHBhdGg6ICVAIiwgc2Vzc2lvbi5nZXQoKSwgZGVzdGluYXRpb25V
UkwucGF0aCk7CisgICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFnZS0+d3JpdGVCbG9iVG9GaWxl
UGF0aChpbmZvLmJsb2JVUkwsIGRlc3RpbmF0aW9uVVJMLnBhdGgsIFtwcm90ZWN0ZWRVUkwgPSBy
ZXRhaW5QdHIoZGVzdGluYXRpb25VUkwpLCBwcm90ZWN0ZWRDYWxsYmFjayA9IG1ha2VCbG9ja1B0
cihjYWxsYmFjayldIChib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3VjY2Vz
cykKKyAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkQ2FsbGJhY2socHJvdGVjdGVkVVJMLmdl
dCgpLCBuaWwpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcHJv
dGVjdGVkQ2FsbGJhY2sobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFp
biBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0pOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbGJhY2sobmlsLCBbTlNFcnJvciBlcnJvcldp
dGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JXZWJWaWV3SW52YWxpZGF0ZWQgdXNl
ckluZm86bmlsXSk7CiAKICAgICAgICAgW2Vuc3VyZUxvY2FsRHJhZ1Nlc3Npb25Db250ZXh0KHNl
c3Npb24uZ2V0KCkpIGFkZFRlbXBvcmFyeURpcmVjdG9yeTp0ZW1wb3JhcnlCbG9iRGlyZWN0b3J5
XTsKICAgICB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLmgKaW5kZXggOTcyY2E2NGZmN2M3NWJjZDg0YzE3MzkxMmNlMDZjNmJkNWY0NzVhMS4u
Yzg4NGZhMmJiYTlmOGZhZWM5NzY2YjIyMzIxZTFmM2NlNWU4NWQxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTM4LDcgKzM4LDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
cjsKIHN0cnVjdCBEcmFnSXRlbTsKLXN0cnVjdCBQcm9taXNlZEJsb2JJbmZvOworc3RydWN0IFBy
b21pc2VkQXR0YWNobWVudEluZm87CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDNhNTkz
NzkzNGQ4YjhkMDY0NDIzZTc1MTY2YTY2YjU4YTA1OTM0NDYuLjA4NTdmMTQzNDg4ZGY2N2ZkZWJl
NTJiYmY1M2E5ZmE4YjNiYjliOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTcwLDcgKzcwLDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9Qcm9t
aXNlZEJsb2JJbmZvLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Byb21pc2VkQXR0YWNobWVudEluZm8u
aD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Rl
eHRJbmRpY2F0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvcldpbmRvdy5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBkODdhNTM4NGNkN2UwOTg0Yjc4MTRkNTkwZWI2NTk1
NmZmNDBiNzVhLi5jZTdkODg5MjU1Mzg0ZjgzZWViMDVkNzE0ODNiYjRjZGM3YTQ0NzIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMTYwLDYgKzE2MCwyMSBAQCBib29sIFdlYkVkaXRvckNs
aWVudDo6c2hvdWxkQXBwbHlTdHlsZShTdHlsZVByb3BlcnRpZXMqIHN0eWxlLCBSYW5nZSogcmFu
Z2UpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCit2b2lkIFdlYkVkaXRvckNs
aWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmls
ZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRh
KGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIHsgZGF0YS5wdHIoKSB9KSk7Cit9CisKK3ZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
K3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllckZyb21GaWxlUGF0aChpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgZmls
ZVBhdGgpKTsKK30KKwordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNsb25lQXR0YWNobWVudERhdGEo
Y29uc3QgU3RyaW5nJiBmcm9tSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0b0lkZW50aWZpZXIp
Cit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNsb25lQXR0YWNo
bWVudERhdGEoZnJvbUlkZW50aWZpZXIsIHRvSWRlbnRpZmllcikpOworfQorCiB2b2lkIFdlYkVk
aXRvckNsaWVudDo6ZGlkSW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRJbnNlcnRBdHRhY2htZW50KGlkZW50aWZpZXIsIHNvdXJjZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IGJlNjZmYWYxODFhOWNmMGU4YjY0Njk5OGVmYTQ0ZjAzOWVhYzY0
OTMuLmZkYjcwZWJkNjA3MDEwN2EzZDgyYjI4NWE1NDYzZjhkNzRiMDJiN2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKQEAgLTYwLDggKzYwLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRNb3Zl
UmFuZ2VBZnRlckRlbGV0ZShXZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6OlJhbmdlKikgZmluYWw7
CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHZvaWQgcmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpIGZpbmFsOworICAgIHZvaWQgY2xvbmVBdHRhY2ht
ZW50RGF0YShjb25zdCBTdHJpbmcmIGZyb21JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRvSWRl
bnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRJbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2UpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVtb3ZlQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGZpbmFsOworICAgIGJv
b2wgc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgZGlkQmVnaW5FZGl0aW5nKCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDgyZmZm
NDk0OGQyOGM2YTZjOGIyNTU2OGJjNTg5NTA4Yzk2MDNhMzcuLmYyODc3OGE0MGJkODc0ZmFkYjcw
NTYzODk3NTAzODc5NjMzZWI1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtS2V5Ym9hcmRFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRG9jdW1lbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaW50Q29udGV4dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
UHJvbWlzZWRCbG9iSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvbWlzZWRBdHRhY2htZW50
SW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmFuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
bW90ZURPTVdpbmRvdy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlRnJhbWUuaD4KQEAgLTYw
NjcsMzYgKzYwNjcsMjMgQEAgdm9pZCBXZWJQYWdlOjpzdG9yYWdlQWNjZXNzUmVzcG9uc2UoYm9v
bCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQogCi12b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBjb25zdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmIG9wdGlvbnMsIGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmIG9wdGlvbnMsIHVpbnQ2NF90IGZpbGVTaXpl
LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5
cGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUuZWRpdG9y
KCkuaW5zZXJ0QXR0YWNobWVudChpZGVudGlmaWVyLCBvcHRpb25zLCBmaWxlbmFtZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSwgY29udGVudFR5cGUpOwor
ICAgIGZyYW1lLmVkaXRvcigpLmluc2VydEF0dGFjaG1lbnQoaWRlbnRpZmllciwgb3B0aW9ucywg
ZmlsZVNpemUsIGZpbGVOYW1lLCBXVEZNb3ZlKGNvbnRlbnRUeXBlKSk7CiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQogCi12b2lk
IFdlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50SW5mbyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLXsKLSAgICBhdXRvIGF0dGFjaG1lbnQgPSBhdHRhY2ht
ZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpOwotICAgIGlmICghYXR0YWNobWVu
dCkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkF0dGFjaG1lbnRJbmZv
Q2FsbGJhY2soeyB9LCBjYWxsYmFja0lEKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBhdHRhY2htZW50LT5yZXF1ZXN0SW5mbyhbY2FsbGJhY2tJRCwgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBwcm90ZWN0ZWRBdHRhY2htZW50ID0gV1RGTW92ZShhdHRhY2htZW50KV0g
KGNvbnN0IEF0dGFjaG1lbnRJbmZvJiBpbmZvKSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXR0YWNobWVudEluZm9DYWxsYmFjayhpbmZvLCBj
YWxsYmFja0lEKSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6c2V0QXR0YWNobWVudERp
c3BsYXlPcHRpb25zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9u
cyYsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0
QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5ld0Nv
bnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3RmlsZW5hbWUsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCB1aW50NjRfdCBmaWxlU2l6ZSwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3RmlsZW5hbWUs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0
YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBhdHRh
Y2htZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwotICAgICAgICBhdHRhY2htZW50LT51
cGRhdGVGaWxlV2l0aERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKSwgV1RGTW92ZShuZXdDb250ZW50VHlwZSksIFdURk1vdmUobmV3RmlsZW5hbWUpKTsK
KyAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyhmaWxlU2l6ZSwgV1RGTW92ZShu
ZXdDb250ZW50VHlwZSksIFdURk1vdmUobmV3RmlsZW5hbWUpKTsKICAgICB9CiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDJiMjdjYzg4MmUy
NWRhNzIzOWRlMDlhMDFjY2IzZWI4NDk4YmM2M2MuLjA2ZTMxZTU2YmJiZTEyZmIyNmYxOTJkMDdj
ZjA5ZmVjMTJkMDljMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTE2OCw3ICsxNjgsNyBAQCBzdHJ1Y3QgR2xvYmFsRnJhbWVJZGVudGlmaWVyOwog
c3RydWN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI7CiBzdHJ1Y3QgSGlnaGxpZ2h0Owogc3RydWN0
IEtleXByZXNzQ29tbWFuZDsKLXN0cnVjdCBQcm9taXNlZEJsb2JJbmZvOworc3RydWN0IFByb21p
c2VkQXR0YWNobWVudEluZm87CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0Owogc3RydWN0IFZp
ZXdwb3J0QXJndW1lbnRzOwogCkBAIC0xMDczLDEwICsxMDczLDkgQEAgcHVibGljOgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZvaWQgaW5zZXJ0QXR0YWNo
bWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnRE
aXNwbGF5T3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBjb250ZW50VHlwZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgQ2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudEluZm8oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmLCB1aW50
NjRfdCBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IGNvbnRlbnRUeXBlLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHNldEF0dGFjaG1lbnREaXNw
bGF5T3B0aW9ucyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkF0dGFj
aG1lbnREaXNwbGF5T3B0aW9ucyYsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgc2V0QXR0YWNobWVu
dERhdGFBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuZXdDb250ZW50VHlwZSwgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IG5ld0ZpbGVuYW1lLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHVw
ZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgdWludDY0
X3QgZmlsZVNpemUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuZXdDb250ZW50VHlwZSwgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IG5ld0ZpbGVuYW1lLCBDYWxsYmFja0lEKTsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNjQzNjA3NjhhMzBjNjIx
NDYyYWM1NWQ0Y2IzYWNlOTAyNDI4NzhmNS4uNTliMmI3NTFmMTJkNmVjNDFkMDU0YzcxOTI3MGEw
OTg1OGJlNDY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01MDksMTAgKzUwOSw5IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQotICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIHN0cnVjdCBX
ZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgb3B0aW9ucywgU3RyaW5nIGZpbGVuYW1l
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBSZXF1ZXN0QXR0YWNobWVu
dEluZm8oU3RyaW5nIGlkZW50aWZpZXIsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQor
ICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpB
dHRhY2htZW50RGlzcGxheU9wdGlvbnMgb3B0aW9ucywgdWludDY0X3QgZmlsZVNpemUsIFN0cmlu
ZyBmaWxlTmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBTZXRBdHRhY2htZW50RGlzcGxheU9wdGlvbnMoU3Ry
aW5nIGlkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMg
b3B0aW9ucywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgU2V0QXR0YWNobWVu
dERhdGFBbmRDb250ZW50VHlwZShTdHJpbmcgaWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuZXdDb250ZW50VHlwZSwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IG5ld0ZpbGVuYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAg
ICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmllciwgdWludDY0X3Qg
ZmlsZVNpemUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuZXdDb250ZW50VHlwZSwgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IG5ld0ZpbGVuYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFlZjI1MjRlNDgyODQ4YzUx
YzNlYTVkMmE3NzdlNmI1YzE2Mzg1MDkuLjIyZGUwZjNlZjA5YmExOWUwYTk1NzY5YTg3Y2FhODRh
MWQ1OGQzODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0MiBAQAorMjAxOC0wOC0xOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KKworICAgICAgICBUZXN0IGJ1ZzsgcGxlYXNlIGlnbm9yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NzQ0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0cyBleGlzdGlu
ZyBhdHRhY2htZW50IEFQSSB0ZXN0cy4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbC4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMu
bW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1l
bnRXaXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZp
ZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6Y29udGVudFR5cGU6
ZGF0YTpdKToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCBzeW5jaHJvbm91c2x5U2V0RGF0YTpu
ZXdDb250ZW50VHlwZTpuZXdGaWxlbmFtZTplcnJvcjpdKToKKyAgICAgICAgKC1bX1dLQXR0YWNo
bWVudCBzeW5jaHJvbm91c2x5U2V0RmlsZVdyYXBwZXI6bmV3Q29udGVudFR5cGU6ZXJyb3I6XSk6
CisKKyAgICAgICAgTW92ZSBvZmYgb2YgZGVwcmVjYXRlZCBhdHRhY2htZW50IFNQSSwgYW5kIGFk
ZCBuZXcgaGVscGVyIGZ1bmN0aW9ucyB0byBzeW5jaHJvbm91c2x5IGluc2VydCBhIG5ldyBhdHRh
Y2htZW50IG9yCisgICAgICAgIHVwZGF0ZSBhbiBleGlzdGluZyBhdHRhY2htZW50IHdpdGggYSBm
aWxlIHdyYXBwZXIuCisKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWRE
YXRhVG9CZTpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCisgICAgICAgIEFk
ZCBhIG5ldyB0ZXN0IHRvIHZlcmlmeSB0aGF0IGZpbGUtVVJMLWJhY2tlZCBOU0ZpbGVXcmFwcGVy
cyBjYW4gYmUgdXNlZCB0byBpbnNlcnQgYW5kIHVwZGF0ZSBhdHRhY2htZW50IGRhdGEuCisgICAg
ICAgIEFsc28gYXVnbWVudCBhbiBleGlzdGluZyB0ZXN0IHRvIGNoZWNrIHRoYXQgYW4gYXR0YWNo
bWVudCBlbGVtZW50IHdoaWNoIGhhcyBiZWVuIGNvcGllZCBhbmQgcGFzdGVkIHdpdGhpbiB0aGUK
KyAgICAgICAgc2FtZSBkb2N1bWVudCBoYXMgYSBkaWZmZXJlbnQgX1dLQXR0YWNobWVudCB3cmFw
cGVyIG9iamVjdCB0aGFuIGl0cyBkdXBsaWNhdGUsIGJ1dCBib3RoIF9XS0F0dGFjaG1lbnRzIGFy
ZQorICAgICAgICBiYWNrZWQgYnkgdGhlIHNhbWUgTlNGaWxlV3JhcHBlciB0aGF0IHdhcyBvcmln
aW5hbGx5IHVzZWQgdG8gaW5zZXJ0IHRoZSBhdHRhY2htZW50LgorCisgICAgICAgIEFkZGl0aW9u
YWxseSwgYWRkIGFub3RoZXIgbWFjT1MgdGVzdCB0byB2ZXJpZnkgdGhhdCBkcm9wcGluZyBwcm9t
aXNlZCBmaWxlcyBpbiBhbiBhdHRhY2htZW50LWVsZW1lbnQtZW5hYmxlZAorICAgICAgICBlZGl0
YWJsZSBhcmVhIGluc2VydHMgYXR0YWNobWVudCBlbGVtZW50cyBpbnRvIHRoZSBkb2N1bWVudCBh
bmQgbm90aWZpZXMgdGhlIFVJIGNsaWVudCB3aXRoIHRoZSBpbnNlcnRlZAorICAgICAgICBhdHRh
Y2htZW50IGRhdGEuCisKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCBzeW5jaHJvbm91c2x5UmVx
dWVzdEluZm86XSk6IERlbGV0ZWQuCisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgc3luY2hyb25v
dXNseVJlcXVlc3REYXRhOl0pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9z
L0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVs
YXRvciBfd2ViVmlldzpkaWRJbnNlcnRBdHRhY2htZW50OndpdGhTb3VyY2U6XSk6CisKKyAgICAg
ICAgTW92ZSBvZmYgb2YgLV93ZWJWaWV3OmRpZEluc2VydEF0dGFjaG1lbnQ6LgorCisgICAgICAg
ICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIF93ZWJWaWV3OmRpZEluc2VydEF0dGFjaG1lbnQ6XSk6
IERlbGV0ZWQuCisKIDIwMTgtMDgtMjAgIENsYXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBBZGQgV1BFIERlYnVnIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGZs
YWtpbmVzcyBkYXNoYm9hcmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCmluZGV4IDJmN2M1MDM2OWQxZjJl
OWRkOGY5ODAzZjg4ZjEzNTNjNTJhMzM5NDguLjIwOTAyZDIyMjc2YjM0NGQzZmE1NGFmZGQ5OTA0
NDFkNzBhNzlmZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpAQCAtMTQ1LDEzICsxNDUsMTcgQEAg
cHJpdmF0ZToKIEBpbnRlcmZhY2UgVGVzdFdLV2ViVmlldyAoQXR0YWNobWVudFRlc3RpbmcpCiBA
ZW5kCiAKK3N0YXRpYyBOU1N0cmluZyAqYXR0YWNobWVudEVkaXRpbmdUZXN0TWFya3VwID0gQCI8
bWV0YSBuYW1lPSd2aWV3cG9ydCcgY29udGVudD0nd2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFs
LXNjYWxlPTEnPiIKKyAgICAiPHNjcmlwdD5mb2N1cyA9ICgpID0+IGRvY3VtZW50LmJvZHkuZm9j
dXMoKTwvc2NyaXB0PiIKKyAgICAiPGJvZHkgb25sb2FkPWZvY3VzKCkgY29udGVudGVkaXRhYmxl
PjwvYm9keT4iOworCiBzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JU
ZXN0aW5nQXR0YWNobWVudHMoQ0dTaXplIHdlYlZpZXdTaXplLCBXS1dlYlZpZXdDb25maWd1cmF0
aW9uICpjb25maWd1cmF0aW9uKQogewogICAgIGNvbmZpZ3VyYXRpb24uX2F0dGFjaG1lbnRFbGVt
ZW50RW5hYmxlZCA9IFlFUzsKICAgICBXS1ByZWZlcmVuY2VzU2V0Q3VzdG9tUGFzdGVib2FyZERh
dGFFbmFibGVkKChXS1ByZWZlcmVuY2VzUmVmKVtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwg
WUVTKTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgd2ViVmlld1NpemUud2lkdGgsIHdlYlZp
ZXdTaXplLmhlaWdodCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0gICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPG1ldGEgbmFtZT0ndmlld3BvcnQnIGNv
bnRlbnQ9J3dpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xJz48c2NyaXB0PmZvY3Vz
ID0gKCkgPT4gZG9jdW1lbnQuYm9keS5mb2N1cygpPC9zY3JpcHQ+PGJvZHkgb25sb2FkPWZvY3Vz
KCkgY29udGVudGVkaXRhYmxlPjwvYm9keT4iXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5
TG9hZEhUTUxTdHJpbmc6YXR0YWNobWVudEVkaXRpbmdUZXN0TWFya3VwXTsKIAogICAgIHJldHVy
biB3ZWJWaWV3OwogfQpAQCAtMjM3LDEwICsyNDEsMjMgQEAgc3RhdGljIE5TRGF0YSAqdGVzdFBE
RkRhdGEoKQogICAgIHJldHVybiBzdWNjZXNzOwogfQogCistIChfV0tBdHRhY2htZW50ICopc3lu
Y2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIg
KilmaWxlV3JhcHBlciBjb250ZW50VHlwZTooTlNTdHJpbmcgKiljb250ZW50VHlwZQoreworICAg
IF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgUmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+
IGF0dGFjaG1lbnQgPSBbc2VsZiBfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjpmaWxl
V3JhcHBlciBjb250ZW50VHlwZTpjb250ZW50VHlwZSBvcHRpb25zOm5pbCBjb21wbGV0aW9uOl4o
Qk9PTCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOworICAgIHJldHVybiBhdHRhY2htZW50LmF1dG9yZWxlYXNlKCk7
Cit9CisKIC0gKF9XS0F0dGFjaG1lbnQgKilzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdp
dGhGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb250ZW50VHlwZTooTlNTdHJpbmcgKilj
b250ZW50VHlwZSBkYXRhOihOU0RhdGEgKilkYXRhCiB7CiAgICAgX19ibG9jayBib29sIGRvbmUg
PSBmYWxzZTsKLSAgICBSZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gYXR0YWNobWVudCA9IFtzZWxm
IF9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOmZpbGVuYW1lIGNvbnRlbnRUeXBlOmNvbnRl
bnRUeXBlIGRhdGE6ZGF0YSBvcHRpb25zOm5pbCBjb21wbGV0aW9uOl4oQk9PTCkgeworICAgIGF1
dG8gZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOmRhdGFdKTsKKyAgICBpZiAoZmlsZW5hbWUpCisgICAgICAgIFtm
aWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpmaWxlbmFtZV07CisgICAgUmV0YWluUHRy
PF9XS0F0dGFjaG1lbnQ+IGF0dGFjaG1lbnQgPSBbc2VsZiBfaW5zZXJ0QXR0YWNobWVudFdpdGhG
aWxlV3JhcHBlcjpmaWxlV3JhcHBlci5nZXQoKSBjb250ZW50VHlwZTpjb250ZW50VHlwZSBvcHRp
b25zOm5pbCBjb21wbGV0aW9uOl4oQk9PTCkgewogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9
XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwpAQCAtMzEyLDEzICszMjks
MTIgQEAgc3RhdGljIE5TRGF0YSAqdGVzdFBERkRhdGEoKQogICAgICAgICAqZXJyb3IgPSByZXN1
bHRFcnJvci5hdXRvcmVsZWFzZSgpOwogfQogCi0tIChfV0tBdHRhY2htZW50SW5mbyAqKXN5bmNo
cm9ub3VzbHlSZXF1ZXN0SW5mbzooTlNFcnJvciAqKillcnJvcgorLSAodm9pZClzeW5jaHJvbm91
c2x5U2V0RmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlciBuZXdDb250ZW50
VHlwZTooTlNTdHJpbmcgKiluZXdDb250ZW50VHlwZSBlcnJvcjooTlNFcnJvciAqKillcnJvcgog
ewotICAgIF9fYmxvY2sgUmV0YWluUHRyPF9XS0F0dGFjaG1lbnRJbmZvPiByZXN1bHQ7CiAgICAg
X19ibG9jayBSZXRhaW5QdHI8TlNFcnJvcj4gcmVzdWx0RXJyb3I7CiAgICAgX19ibG9jayBib29s
IGRvbmUgPSBmYWxzZTsKLSAgICBbc2VsZiByZXF1ZXN0SW5mbzpeKF9XS0F0dGFjaG1lbnRJbmZv
ICppbmZvLCBOU0Vycm9yICplcnJvcikgewotICAgICAgICByZXN1bHQgPSBpbmZvOworCisgICAg
W3NlbGYgc2V0RmlsZVdyYXBwZXI6ZmlsZVdyYXBwZXIgY29udGVudFR5cGU6bmV3Q29udGVudFR5
cGUgY29tcGxldGlvbjpeKE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIHJlc3VsdEVycm9yID0g
ZXJyb3I7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwpAQCAtMzI3LDIwICszNDMsMTcg
QEAgc3RhdGljIE5TRGF0YSAqdGVzdFBERkRhdGEoKQogCiAgICAgaWYgKGVycm9yKQogICAgICAg
ICAqZXJyb3IgPSByZXN1bHRFcnJvci5hdXRvcmVsZWFzZSgpOwotCi0gICAgcmV0dXJuIHJlc3Vs
dC5hdXRvcmVsZWFzZSgpOwotfQotCi0tIChOU0RhdGEgKilzeW5jaHJvbm91c2x5UmVxdWVzdERh
dGE6KE5TRXJyb3IgKiopZXJyb3IKLXsKLSAgICByZXR1cm4gW3NlbGYgc3luY2hyb25vdXNseVJl
cXVlc3RJbmZvOmVycm9yXS5kYXRhOwogfQogCiAtICh2b2lkKXN5bmNocm9ub3VzbHlTZXREYXRh
OihOU0RhdGEgKilkYXRhIG5ld0NvbnRlbnRUeXBlOihOU1N0cmluZyAqKW5ld0NvbnRlbnRUeXBl
IG5ld0ZpbGVuYW1lOihOU1N0cmluZyAqKW5ld0ZpbGVuYW1lIGVycm9yOihOU0Vycm9yICoqKWVy
cm9yCiB7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNFcnJvcj4gcmVzdWx0RXJyb3I7CiAgICAg
X19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBbc2VsZiBzZXREYXRhOmRhdGEgbmV3Q29u
dGVudFR5cGU6bmV3Q29udGVudFR5cGUgbmV3RmlsZW5hbWU6bmV3RmlsZW5hbWUgY29tcGxldGlv
bjpeKE5TRXJyb3IgKmVycm9yKSB7CisgICAgYXV0byBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tO
U0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YV0pOwor
ICAgIGlmIChuZXdGaWxlbmFtZSkKKyAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZp
bGVuYW1lOm5ld0ZpbGVuYW1lXTsKKworICAgIFtzZWxmIHNldEZpbGVXcmFwcGVyOmZpbGVXcmFw
cGVyLmdldCgpIGNvbnRlbnRUeXBlOm5ld0NvbnRlbnRUeXBlIGNvbXBsZXRpb246XihOU0Vycm9y
ICplcnJvcikgewogICAgICAgICByZXN1bHRFcnJvciA9IGVycm9yOwogICAgICAgICBkb25lID0g
dHJ1ZTsKICAgICB9XTsKQEAgLTM1NCw5ICszNjcsOSBAQCBzdGF0aWMgTlNEYXRhICp0ZXN0UERG
RGF0YSgpCiAtICh2b2lkKWV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOihOU0RhdGEgKilleHBlY3Rl
ZERhdGEKIHsKICAgICBOU0Vycm9yICpyZXF1ZXN0RXJyb3IgPSBuaWw7Ci0gICAgX1dLQXR0YWNo
bWVudEluZm8gKmluZm8gPSBbc2VsZiBzeW5jaHJvbm91c2x5UmVxdWVzdEluZm86JnJlcXVlc3RF
cnJvcl07CisgICAgX1dLQXR0YWNobWVudEluZm8gKmluZm8gPSBzZWxmLmluZm87CiAKLSAgICBC
T09MIG9ic2VydmVkRGF0YUlzRXF1YWxUb0V4cGVjdGVkRGF0YSA9IFtpbmZvLmRhdGEgaXNFcXVh
bFRvRGF0YTpleHBlY3RlZERhdGFdIHx8IGluZm8uZGF0YSA9PSBleHBlY3RlZERhdGE7CisgICAg
Qk9PTCBvYnNlcnZlZERhdGFJc0VxdWFsVG9FeHBlY3RlZERhdGEgPSBpbmZvLmRhdGEgPT0gZXhw
ZWN0ZWREYXRhIHx8IFtpbmZvLmRhdGEgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFdOwogICAg
IEVYUEVDVF9UUlVFKG9ic2VydmVkRGF0YUlzRXF1YWxUb0V4cGVjdGVkRGF0YSk7CiAgICAgaWYg
KCFvYnNlcnZlZERhdGFJc0VxdWFsVG9FeHBlY3RlZERhdGEpIHsKICAgICAgICAgTlNMb2coQCJF
eHBlY3RlZCBkYXRhOiAlQCBidXQgb2JzZXJ2ZWQ6ICVAIGZvciAlQCIsIFtleHBlY3RlZERhdGEg
c2hvcnREZXNjcmlwdGlvbl0sIFtpbmZvLmRhdGEgc2hvcnREZXNjcmlwdGlvbl0sIHNlbGYpOwpA
QCAtNDk5LDcgKzUxMiw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEF0dGFjaG1lbnRFbGVt
ZW50SW5zZXJ0aW9uKQogICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhA
WyBdLCBAWyBmaXJzdEF0dGFjaG1lbnQuZ2V0KCkgXSk7CiAgICAgfQogCi0gICAgX1dLQXR0YWNo
bWVudEluZm8gKmluZm8gPSBbZmlyc3RBdHRhY2htZW50IHN5bmNocm9ub3VzbHlSZXF1ZXN0SW5m
bzpuaWxdOworICAgIF9XS0F0dGFjaG1lbnRJbmZvICppbmZvID0gW2ZpcnN0QXR0YWNobWVudCBp
bmZvXTsKICAgICBFWFBFQ1RfVFJVRShbaW5mby5kYXRhIGlzRXF1YWxUb0RhdGE6dGVzdEhUTUxE
YXRhKCldKTsKICAgICBFWFBFQ1RfVFJVRShbaW5mby5jb250ZW50VHlwZSBpc0VxdWFsVG9TdHJp
bmc6QCJ0ZXh0L2h0bWwiXSk7CiAgICAgRVhQRUNUX1RSVUUoW2luZm8ubmFtZSBpc0VxdWFsVG9T
dHJpbmc6QCJmb28iXSk7CkBAIC01MTYsNyArNTI5LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0
cywgQXR0YWNobWVudEVsZW1lbnRJbnNlcnRpb24pCiAgICAgICAgIHNjb3BlLmV4cGVjdEF0dGFj
aG1lbnRVcGRhdGVzKEBbIGZpcnN0QXR0YWNobWVudC5nZXQoKSBdLCBAWyBzZWNvbmRBdHRhY2ht
ZW50LmdldCgpIF0pOwogICAgIH0KIAotICAgIFtmaXJzdEF0dGFjaG1lbnQgZXhwZWN0UmVxdWVz
dGVkRGF0YVRvQmU6bmlsXTsKKyAgICBbZmlyc3RBdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERh
dGFUb0JlOnRlc3RIVE1MRGF0YSgpXTsKICAgICBbc2Vjb25kQXR0YWNobWVudCBleHBlY3RSZXF1
ZXN0ZWREYXRhVG9CZTp0ZXN0SW1hZ2VEYXRhKCldOwogICAgIEVYUEVDVF9GQUxTRShbd2ViVmll
dyBoYXNBdHRyaWJ1dGU6QCJ3ZWJraXRhdHRhY2htZW50YmxvYnVybCIgZm9yUXVlcnlTZWxlY3Rv
cjpAImF0dGFjaG1lbnQiXSk7CiAgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGhhc0F0dHJpYnV0
ZTpAIndlYmtpdGF0dGFjaG1lbnRwYXRoIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJd
KTsKQEAgLTUzOSwxNCArNTUyLDE0IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEF0dGFjaG1l
bnRVcGRhdGVzV2hlbkluc2VydGluZ0FuZERlbGV0aW5nTmV3bGluZSkKIAogICAgIFt3ZWJWaWV3
IGV4cGVjdFVwZGF0ZXNBZnRlckNvbW1hbmQ6QCJEZWxldGVCYWNrd2FyZCIgd2l0aEFyZ3VtZW50
Om5pbCBleHBlY3RlZFJlbW92YWxzOkBbXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKIAotICAg
IF9XS0F0dGFjaG1lbnRJbmZvICppbmZvID0gW2F0dGFjaG1lbnQgc3luY2hyb25vdXNseVJlcXVl
c3RJbmZvOm5pbF07CisgICAgX1dLQXR0YWNobWVudEluZm8gKmluZm8gPSBbYXR0YWNobWVudCBp
bmZvXTsKICAgICBFWFBFQ1RfVFJVRShbaW5mby5kYXRhIGlzRXF1YWxUb0RhdGE6dGVzdEhUTUxE
YXRhKCldKTsKICAgICBFWFBFQ1RfVFJVRShbaW5mby5jb250ZW50VHlwZSBpc0VxdWFsVG9TdHJp
bmc6QCJ0ZXh0L3BsYWluIl0pOwogICAgIEVYUEVDVF9UUlVFKFtpbmZvLm5hbWUgaXNFcXVhbFRv
U3RyaW5nOkAiZm9vLnR4dCJdKTsKICAgICBFWFBFQ1RfRVEoaW5mby5maWxlUGF0aC5sZW5ndGgs
IDBVKTsKIAogICAgIFt3ZWJWaWV3IGV4cGVjdFVwZGF0ZXNBZnRlckNvbW1hbmQ6QCJEZWxldGVG
b3J3YXJkIiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6QFthdHRhY2htZW50Lmdl
dCgpXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKLSAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1
ZXN0ZWREYXRhVG9CZTpuaWxdOworICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFU
b0JlOnRlc3RIVE1MRGF0YSgpXTsKIH0KIAogVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQXR0YWNo
bWVudFVwZGF0ZXNXaGVuVW5kb2luZ0FuZFJlZG9pbmcpCkBAIC01NjAsMTkgKzU3MywxOSBAQCBU
RVNUKFdLQXR0YWNobWVudFRlc3RzLCBBdHRhY2htZW50VXBkYXRlc1doZW5VbmRvaW5nQW5kUmVk
b2luZykKICAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFsgXSwgQFth
dHRhY2htZW50LmdldCgpXSk7CiAgICAgfQogICAgIFt3ZWJWaWV3IGV4cGVjdFVwZGF0ZXNBZnRl
ckNvbW1hbmQ6QCJVbmRvIiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6QFthdHRh
Y2htZW50LmdldCgpXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKLSAgICBbYXR0YWNobWVudCBl
eHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpuaWxdOworICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVl
c3RlZERhdGFUb0JlOmh0bWxEYXRhLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IGV4cGVjdFVwZGF0
ZXNBZnRlckNvbW1hbmQ6QCJSZWRvIiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6
QFtdIGV4cGVjdGVkSW5zZXJ0aW9uczpAW2F0dGFjaG1lbnQuZ2V0KCldXTsKICAgICBbYXR0YWNo
bWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpodG1sRGF0YS5nZXQoKV07CiAKICAgICBbd2Vi
VmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiRGVsZXRlQmFja3dhcmQiIHdpdGhBcmd1
bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW2F0dGFjaG1lbnQuZ2V0KCldIGV4cGVjdGVkSW5z
ZXJ0aW9uczpAW11dOwotICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOm5p
bF07CisgICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6aHRtbERhdGEuZ2V0
KCldOwogCiAgICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpAIlVuZG8iIHdp
dGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW10gZXhwZWN0ZWRJbnNlcnRpb25zOkBb
YXR0YWNobWVudC5nZXQoKV1dOwogICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFU
b0JlOmh0bWxEYXRhLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IGV4cGVjdFVwZGF0ZXNBZnRlckNv
bW1hbmQ6QCJSZWRvIiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6QFthdHRhY2ht
ZW50LmdldCgpXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKLSAgICBbYXR0YWNobWVudCBleHBl
Y3RSZXF1ZXN0ZWREYXRhVG9CZTpuaWxdOworICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3Rl
ZERhdGFUb0JlOmh0bWxEYXRhLmdldCgpXTsKIH0KIAogVEVTVChXS0F0dGFjaG1lbnRUZXN0cywg
QXR0YWNobWVudFVwZGF0ZXNXaGVuQ2hhbmdpbmdGb250U3R5bGVzKQpAQCAtNTk3LDcgKzYxMCw3
IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEF0dGFjaG1lbnRVcGRhdGVzV2hlbkNoYW5naW5n
Rm9udFN0eWxlcykKIAogICAgIC8vIEluc2VydGluZyB0ZXh0IHNob3VsZCBkZWxldGUgdGhlIGN1
cnJlbnQgc2VsZWN0aW9uLCByZW1vdmluZyB0aGUgYXR0YWNobWVudCBpbiB0aGUgcHJvY2Vzcy4K
ICAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiSW5zZXJ0VGV4dCIgd2l0
aEFyZ3VtZW50OkAiZm9vIiBleHBlY3RlZFJlbW92YWxzOkBbYXR0YWNobWVudC5nZXQoKV0gZXhw
ZWN0ZWRJbnNlcnRpb25zOkBbXV07Ci0gICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0
YVRvQmU6bmlsXTsKKyAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTp0ZXN0
SFRNTERhdGEoKV07CiB9CiAKIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEF0dGFjaG1lbnRVcGRh
dGVzV2hlbkluc2VydGluZ0xpc3RzKQpAQCAtNjYxLDcgKzY3NCw3IEBAIFRFU1QoV0tBdHRhY2ht
ZW50VGVzdHMsIEF0dGFjaG1lbnRVcGRhdGVzV2hlbkN1dHRpbmdBbmRQYXN0aW5nKQogICAgICAg
ICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIkN1dCIgYXJndW1l
bnQ6bmlsXTsKICAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFthdHRh
Y2htZW50LmdldCgpXSwgQFtdKTsKICAgICB9Ci0gICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVz
dGVkRGF0YVRvQmU6bmlsXTsKKyAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9C
ZTp0ZXN0SFRNTERhdGEoKV07CiAgICAgewogICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0
ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKICAgICAgICAgW3dlYlZpZXcgX3N5
bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJQYXN0ZSIgYXJndW1lbnQ6bmlsXTsKQEAg
LTY4OSwzNiArNzAyLDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQXR0YWNobWVudERhdGFG
b3JFbXB0eUZpbGUpCiAgICAgICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRD
b21tYW5kOkAiRGVsZXRlQmFja3dhcmQiIGFyZ3VtZW50Om5pbF07CiAgICAgICAgIHNjb3BlLmV4
cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbYXR0YWNobWVudC5nZXQoKV0sIEBbXSk7CiAgICAgfQot
ICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOm5pbF07Ci19Ci0KLVRFU1Qo
V0tBdHRhY2htZW50VGVzdHMsIE11bHRpcGxlU2ltdWx0YW5lb3VzQXR0YWNobWVudERhdGFSZXF1
ZXN0cykKLXsKLSAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRz
KCk7Ci0gICAgUmV0YWluUHRyPE5TRGF0YT4gaHRtbERhdGEgPSB0ZXN0SFRNTERhdGEoKTsKLSAg
ICBSZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gYXR0YWNobWVudDsKLSAgICB7Ci0gICAgICAgIE9i
c2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOwot
ICAgICAgICBhdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1l
bnRXaXRoRmlsZW5hbWU6QCJmb28udHh0IiBjb250ZW50VHlwZTpAInRleHQvcGxhaW4iIGRhdGE6
aHRtbERhdGEuZ2V0KCldOwotICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRl
cyhAW10sIEBbYXR0YWNobWVudC5nZXQoKV0pOwotICAgIH0KLSAgICBfX2Jsb2NrIFJldGFpblB0
cjxOU0RhdGE+IGRhdGFGb3JGaXJzdFJlcXVlc3Q7Ci0gICAgX19ibG9jayBSZXRhaW5QdHI8TlNE
YXRhPiBkYXRhRm9yU2Vjb25kUmVxdWVzdDsKLSAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNl
OwotICAgIFthdHRhY2htZW50IHJlcXVlc3RJbmZvOl4oX1dLQXR0YWNobWVudEluZm8gKmluZm8s
IE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7Ci0gICAgICAg
IGRhdGFGb3JGaXJzdFJlcXVlc3QgPSBpbmZvLmRhdGE7Ci0gICAgfV07Ci0gICAgW2F0dGFjaG1l
bnQgcmVxdWVzdEluZm86XihfV0tBdHRhY2htZW50SW5mbyAqaW5mbywgTlNFcnJvciAqZXJyb3Ip
IHsKLSAgICAgICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKLSAgICAgICAgZGF0YUZvclNlY29uZFJl
cXVlc3QgPSBpbmZvLmRhdGE7Ci0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAg
VXRpbDo6cnVuKCZkb25lKTsKLQotICAgIEVYUEVDVF9UUlVFKFtkYXRhRm9yRmlyc3RSZXF1ZXN0
IGlzRXF1YWxUb0RhdGE6aHRtbERhdGEuZ2V0KCldKTsKLSAgICBFWFBFQ1RfVFJVRShbZGF0YUZv
clNlY29uZFJlcXVlc3QgaXNFcXVhbFRvRGF0YTpodG1sRGF0YS5nZXQoKV0pOworICAgIFthdHRh
Y2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOltOU0RhdGEgZGF0YV1dOwogfQogCiBURVNU
KFdLQXR0YWNobWVudFRlc3RzLCBDaGFuZ2VBdHRhY2htZW50RGF0YUFuZEZpbGVJbmZvcm1hdGlv
bikKQEAgLTc3OSw3ICs3NjMsNyBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBJbnNlcnRQYXN0
ZWRJbWFnZUFzQXR0YWNobWVudCkKICAgICAgICAgYXR0YWNobWVudCA9IG9ic2VydmVyLm9ic2Vy
dmVyKCkuaW5zZXJ0ZWRbMF07CiAgICAgfQogCi0gICAgYXV0byBzaXplID0gcGxhdGZvcm1JbWFn
ZVdpdGhEYXRhKFthdHRhY2htZW50IHN5bmNocm9ub3VzbHlSZXF1ZXN0RGF0YTpuaWxdKS5zaXpl
OworICAgIGF1dG8gc2l6ZSA9IHBsYXRmb3JtSW1hZ2VXaXRoRGF0YShbYXR0YWNobWVudCBpbmZv
XS5kYXRhKS5zaXplOwogICAgIEVYUEVDVF9FUSgyMTUuLCBzaXplLndpZHRoKTsKICAgICBFWFBF
Q1RfRVEoMTc0Liwgc2l6ZS5oZWlnaHQpOwogICAgIEVYUEVDVF9XS19TVFJFUShbYXR0YWNobWVu
dCB1bmlxdWVJZGVudGlmaWVyXSwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2F0dGFjaG1lbnQnKS51bmlxdWVJZGVudGlmaWVy
Il0pOwpAQCAtODMzLDcgKzgxNyw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEluc2VydFBh
c3RlZEF0dHJpYnV0ZWRTdHJpbmdDb250YWluaW5nTXVsdGlwbGVBdHRhY2htZW50CiAgICAgICAg
IEVYUEVDVF9FUSgwVSwgb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5yZW1vdmVkLmNvdW50KTsKICAgICAg
ICAgRVhQRUNUX0VRKDNVLCBvYnNlcnZlci5vYnNlcnZlcigpLmluc2VydGVkLmNvdW50KTsKICAg
ICAgICAgZm9yIChfV0tBdHRhY2htZW50ICphdHRhY2htZW50IGluIG9ic2VydmVyLm9ic2VydmVy
KCkuaW5zZXJ0ZWQpIHsKLSAgICAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFthdHRhY2htZW50IHN5
bmNocm9ub3VzbHlSZXF1ZXN0RGF0YTpuaWxdOworICAgICAgICAgICAgTlNEYXRhICpkYXRhID0g
YXR0YWNobWVudC5pbmZvLmRhdGE7CiAgICAgICAgICAgICBpZiAoW2RhdGEgaXNFcXVhbFRvRGF0
YTp0ZXN0WklQRGF0YSgpXSkKICAgICAgICAgICAgICAgICB6aXBBdHRhY2htZW50ID0gYXR0YWNo
bWVudDsKICAgICAgICAgICAgIGVsc2UgaWYgKFtkYXRhIGlzRXF1YWxUb0RhdGE6dGVzdFBERkRh
dGEoKV0pCkBAIC04OTQsMTEgKzg3OCwxMiBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBJbnNl
cnRBbmRSZW1vdmVEdXBsaWNhdGVBdHRhY2htZW50KQogewogICAgIGF1dG8gd2ViVmlldyA9IHdl
YlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRh
ID0gdGVzdEhUTUxEYXRhKCk7CisgICAgYXV0byBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0p
OwogICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBvcmlnaW5hbEF0dGFjaG1lbnQ7CiAgICAg
UmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+IHBhc3RlZEF0dGFjaG1lbnQ7CiAgICAgewogICAgICAg
ICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgp
KTsKLSAgICAgICAgb3JpZ2luYWxBdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUlu
c2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJmb28udHh0IiBjb250ZW50VHlwZTpAInRleHQv
cGxhaW4iIGRhdGE6ZGF0YS5nZXQoKV07CisgICAgICAgIG9yaWdpbmFsQXR0YWNobWVudCA9IFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOmZpbGVX
cmFwcGVyLmdldCgpIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiJdOwogICAgICAgICBFWFBFQ1Rf
RVEoMFUsIG9ic2VydmVyLm9ic2VydmVyKCkucmVtb3ZlZC5jb3VudCk7CiAgICAgICAgIG9ic2Vy
dmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbXSwgQFtvcmlnaW5hbEF0dGFjaG1lbnQuZ2V0
KCldKTsKICAgICB9CkBAIC05MjQsMTcgKzkwOSwyMiBAQCBURVNUKFdLQXR0YWNobWVudFRlc3Rz
LCBJbnNlcnRBbmRSZW1vdmVEdXBsaWNhdGVBdHRhY2htZW50KQogICAgICAgICBbd2ViVmlldyBf
c3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIkRlbGV0ZUJhY2t3YXJkIiBhcmd1bWVu
dDpuaWxdOwogICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW29yaWdp
bmFsQXR0YWNobWVudC5nZXQoKV0sIEBbXSk7CiAgICAgfQorCisgICAgRVhQRUNUX0ZBTFNFKFtv
cmlnaW5hbEF0dGFjaG1lbnQgaXNFcXVhbDpwYXN0ZWRBdHRhY2htZW50LmdldCgpXSk7CisgICAg
RVhQRUNUX1RSVUUoW1tvcmlnaW5hbEF0dGFjaG1lbnQgaW5mb10uZmlsZVdyYXBwZXIgaXNFcXVh
bDpbcGFzdGVkQXR0YWNobWVudCBpbmZvXS5maWxlV3JhcHBlcl0pOworICAgIEVYUEVDVF9UUlVF
KFtbb3JpZ2luYWxBdHRhY2htZW50IGluZm9dLmZpbGVXcmFwcGVyIGlzRXF1YWw6ZmlsZVdyYXBw
ZXIuZ2V0KCldKTsKIH0KIAogVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5zZXJ0RHVwbGljYXRl
QXR0YWNobWVudEFuZFVwZGF0ZURhdGEpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0Zv
clRlc3RpbmdBdHRhY2htZW50cygpOwotICAgIFJldGFpblB0cjxOU0RhdGE+IG9yaWdpbmFsRGF0
YSA9IHRlc3RIVE1MRGF0YSgpOworICAgIGF1dG8gb3JpZ2luYWxEYXRhID0gcmV0YWluUHRyKHRl
c3RIVE1MRGF0YSgpKTsKKyAgICBhdXRvIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpvcmlnaW5hbERhdGEuZ2V0
KCldKTsKICAgICBSZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gb3JpZ2luYWxBdHRhY2htZW50Owog
ICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBwYXN0ZWRBdHRhY2htZW50OwogICAgIHsKICAg
ICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5n
ZXQoKSk7Ci0gICAgICAgIG9yaWdpbmFsQXR0YWNobWVudCA9IFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiZm9vLnR4dCIgY29udGVudFR5cGU6QCJ0
ZXh0L3BsYWluIiBkYXRhOm9yaWdpbmFsRGF0YS5nZXQoKV07CisgICAgICAgIG9yaWdpbmFsQXR0
YWNobWVudCA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVX
cmFwcGVyOmZpbGVXcmFwcGVyLmdldCgpIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiJdOwogICAg
ICAgICBFWFBFQ1RfRVEoMFUsIG9ic2VydmVyLm9ic2VydmVyKCkucmVtb3ZlZC5jb3VudCk7CiAg
ICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbXSwgQFtvcmlnaW5hbEF0
dGFjaG1lbnQuZ2V0KCldKTsKICAgICB9CkBAIC05NTMsNiArOTQzLDEwIEBAIFRFU1QoV0tBdHRh
Y2htZW50VGVzdHMsIEluc2VydER1cGxpY2F0ZUF0dGFjaG1lbnRBbmRVcGRhdGVEYXRhKQogICAg
IFtvcmlnaW5hbEF0dGFjaG1lbnQgc3luY2hyb25vdXNseVNldERhdGE6dXBkYXRlZERhdGEuZ2V0
KCkgbmV3Q29udGVudFR5cGU6bmlsIG5ld0ZpbGVuYW1lOm5pbCBlcnJvcjpuaWxdOwogICAgIFtv
cmlnaW5hbEF0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6dXBkYXRlZERhdGEuZ2V0
KCldOwogICAgIFtwYXN0ZWRBdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOm9yaWdp
bmFsRGF0YS5nZXQoKV07CisKKyAgICBFWFBFQ1RfRkFMU0UoW29yaWdpbmFsQXR0YWNobWVudCBp
c0VxdWFsOnBhc3RlZEF0dGFjaG1lbnQuZ2V0KCldKTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tvcmln
aW5hbEF0dGFjaG1lbnQgaW5mb10uZmlsZVdyYXBwZXIgaXNFcXVhbDpbcGFzdGVkQXR0YWNobWVu
dCBpbmZvXS5maWxlV3JhcHBlcl0pOworICAgIEVYUEVDVF9GQUxTRShbW29yaWdpbmFsQXR0YWNo
bWVudCBpbmZvXS5maWxlV3JhcHBlciBpc0VxdWFsOmZpbGVXcmFwcGVyLmdldCgpXSk7CiB9CiAK
IFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEluamVjdGVkQnVuZGxlUmVwbGFjZVVSTHNXaGVuUGFz
dGluZ0F0dHJpYnV0ZWRTdHJpbmcpCkBAIC05ODcsNiArOTgxLDM3IEBAIFRFU1QoV0tBdHRhY2ht
ZW50VGVzdHMsIEluamVjdGVkQnVuZGxlUmVwbGFjZVVSTFdoZW5QYXN0aW5nSW1hZ2UpCiAgICAg
RVhQRUNUX1dLX1NUUkVRKCJjaWQ6Zm9vLWJhciIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6
QCJzcmMiIGZvclF1ZXJ5U2VsZWN0b3I6QCJpbWciXSk7CiB9CiAKK1RFU1QoV0tBdHRhY2htZW50
VGVzdHMsIEluc2VydEF0dGFjaG1lbnRVc2luZ0ZpbGVXcmFwcGVyV2l0aEZpbGVQYXRoKQorewor
ICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKKyAgICBh
dXRvIG9yaWdpbmFsRmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFdpdGhVUkw6dGVzdEltYWdlRmlsZVVSTCgpIG9wdGlvbnM6MCBlcnJvcjpuaWxdKTsKKyAg
ICBSZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gYXR0YWNobWVudDsKKyAgICB7CisgICAgICAgIE9i
c2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOwor
ICAgICAgICBhdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1l
bnRXaXRoRmlsZVdyYXBwZXI6b3JpZ2luYWxGaWxlV3JhcHBlci5nZXQoKSBjb250ZW50VHlwZTpu
aWxdOworICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAWyBdLCBAWyBh
dHRhY2htZW50LmdldCgpIF0pOworICAgIH0KKworICAgIF9XS0F0dGFjaG1lbnRJbmZvICppbmZv
QmVmb3JlVXBkYXRlID0gW2F0dGFjaG1lbnQgaW5mb107CisgICAgRVhQRUNUX1dLX1NUUkVRKCJp
bWFnZS9wbmciLCBpbmZvQmVmb3JlVXBkYXRlLmNvbnRlbnRUeXBlKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoImljb24ucG5nIiwgaW5mb0JlZm9yZVVwZGF0ZS5uYW1lKTsKKyAgICBFWFBFQ1RfVFJV
RShbb3JpZ2luYWxGaWxlV3JhcHBlciBpc0VxdWFsOmluZm9CZWZvcmVVcGRhdGUuZmlsZVdyYXBw
ZXJdKTsKKyAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTp0ZXN0SW1hZ2VE
YXRhKCldOworCisgICAgYXV0byBuZXdGaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0V2l0aFVSTDp0ZXN0UERGRmlsZVVSTCgpIG9wdGlvbnM6MCBlcnJvcjpu
aWxdKTsKKyAgICB7CisgICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9i
c2VydmVyKHdlYlZpZXcuZ2V0KCkpOworICAgICAgICBbYXR0YWNobWVudCBzeW5jaHJvbm91c2x5
U2V0RmlsZVdyYXBwZXI6bmV3RmlsZVdyYXBwZXIuZ2V0KCkgbmV3Q29udGVudFR5cGU6bmlsIGVy
cm9yOm5pbF07CisgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbIF0s
IEBbIF0pOworICAgIH0KKworICAgIF9XS0F0dGFjaG1lbnRJbmZvICppbmZvQWZ0ZXJVcGRhdGUg
PSBbYXR0YWNobWVudCBpbmZvXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxpY2F0aW9uL3Bk
ZiIsIGluZm9BZnRlclVwZGF0ZS5jb250ZW50VHlwZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ0
ZXN0LnBkZiIsIGluZm9BZnRlclVwZGF0ZS5uYW1lKTsKKyAgICBFWFBFQ1RfVFJVRShbbmV3Rmls
ZVdyYXBwZXIgaXNFcXVhbDppbmZvQWZ0ZXJVcGRhdGUuZmlsZVdyYXBwZXJdKTsKKyAgICBbYXR0
YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTp0ZXN0UERGRGF0YSgpXTsKK30KKwogI3By
YWdtYSBtYXJrIC0gUGxhdGZvcm0tc3BlY2lmaWMgdGVzdHMKIAogI2lmIFBMQVRGT1JNKE1BQykK
QEAgLTEwMDgsMTcgKzEwMzMsMTUgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c01hYywgSW5zZXJ0
UGFzdGVkRmlsZVVSTHNBc0F0dGFjaG1lbnRzKQogICAgIH0KIAogICAgIE5TQXJyYXk8TlNEYXRh
ICo+ICpleHBlY3RlZEF0dGFjaG1lbnREYXRhID0gQFsgdGVzdFBERkRhdGEoKSwgdGVzdEltYWdl
RGF0YSgpIF07Ci0gICAgRVhQRUNUX1RSVUUoW2V4cGVjdGVkQXR0YWNobWVudERhdGEgY29udGFp
bnNPYmplY3Q6W1tpbnNlcnRlZEF0dGFjaG1lbnRzIGZpcnN0T2JqZWN0XSBzeW5jaHJvbm91c2x5
UmVxdWVzdERhdGE6bmlsXV0pOwotICAgIEVYUEVDVF9UUlVFKFtleHBlY3RlZEF0dGFjaG1lbnRE
YXRhIGNvbnRhaW5zT2JqZWN0OltbaW5zZXJ0ZWRBdHRhY2htZW50cyBsYXN0T2JqZWN0XSBzeW5j
aHJvbm91c2x5UmVxdWVzdERhdGE6bmlsXV0pOworICAgIEVYUEVDVF9UUlVFKFtleHBlY3RlZEF0
dGFjaG1lbnREYXRhIGNvbnRhaW5zT2JqZWN0OltpbnNlcnRlZEF0dGFjaG1lbnRzIGZpcnN0T2Jq
ZWN0XS5pbmZvLmRhdGFdKTsKKyAgICBFWFBFQ1RfVFJVRShbZXhwZWN0ZWRBdHRhY2htZW50RGF0
YSBjb250YWluc09iamVjdDpbaW5zZXJ0ZWRBdHRhY2htZW50cyBsYXN0T2JqZWN0XS5pbmZvLmRh
dGFdKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxpY2F0aW9uL3BkZiIsIFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdh
dHRhY2htZW50JylbMF0uZ2V0QXR0cmlidXRlKCd0eXBlJykiXSk7CiAgICAgRVhQRUNUX1dLX1NU
UkVRKCJ0ZXN0LnBkZiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJk
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRhY2htZW50JylbMF0uZ2V0QXR0cmlidXRlKCd0
aXRsZScpIl0pOwogICAgIEVYUEVDVF9XS19TVFJFUSgiaW1hZ2UvcG5nIiwgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0
dGFjaG1lbnQnKVsxXS5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSJdKTsKICAgICBFWFBFQ1RfV0tfU1RS
RVEoImljb24ucG5nIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1lbnQnKVsxXS5nZXRBdHRyaWJ1dGUoJ3Rp
dGxlJykiXSk7CiAKLSAgICBmb3IgKF9XS0F0dGFjaG1lbnQgKmF0dGFjaG1lbnQgaW4gaW5zZXJ0
ZWRBdHRhY2htZW50cy5nZXQoKSkgewotICAgICAgICBfV0tBdHRhY2htZW50SW5mbyAqaW5mbyA9
IFthdHRhY2htZW50IHN5bmNocm9ub3VzbHlSZXF1ZXN0SW5mbzpuaWxdOwotICAgICAgICBFWFBF
Q1RfR1QoaW5mby5maWxlUGF0aC5sZW5ndGgsIDBVKTsKLSAgICB9CisgICAgZm9yIChfV0tBdHRh
Y2htZW50ICphdHRhY2htZW50IGluIGluc2VydGVkQXR0YWNobWVudHMuZ2V0KCkpCisgICAgICAg
IEVYUEVDVF9HVChhdHRhY2htZW50LmluZm8uZmlsZVBhdGgubGVuZ3RoLCAwVSk7CiAKICAgICB7
CiAgICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZp
ZXcuZ2V0KCkpOwpAQCAtMTAyNyw4ICsxMDUwLDQyIEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNN
YWMsIEluc2VydFBhc3RlZEZpbGVVUkxzQXNBdHRhY2htZW50cykKICAgICAgICAgTlNBcnJheTxf
V0tBdHRhY2htZW50ICo+ICpyZW1vdmVkQXR0YWNobWVudHMgPSBbb2JzZXJ2ZXIub2JzZXJ2ZXIo
KSByZW1vdmVkXTsKICAgICAgICAgRVhQRUNUX0VRKDJVLCByZW1vdmVkQXR0YWNobWVudHMuY291
bnQpOwogICAgICAgICBFWFBFQ1RfVFJVRShbcmVtb3ZlZEF0dGFjaG1lbnRzIGNvbnRhaW5zT2Jq
ZWN0OltpbnNlcnRlZEF0dGFjaG1lbnRzIGZpcnN0T2JqZWN0XV0pOwotICAgICAgICBFWFBFQ1Rf
VFJVRShbcmVtb3ZlZEF0dGFjaG1lbnRzLmxhc3RPYmplY3QgaXNFcXVhbDpbaW5zZXJ0ZWRBdHRh
Y2htZW50cyBsYXN0T2JqZWN0XV0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVtb3ZlZEF0dGFj
aG1lbnRzIGNvbnRhaW5zT2JqZWN0OltpbnNlcnRlZEF0dGFjaG1lbnRzIGxhc3RPYmplY3RdXSk7
CisgICAgfQorfQorCitURVNUKFdLQXR0YWNobWVudFRlc3RzTWFjLCBJbnNlcnREcm9wcGVkRmls
ZVByb21pc2VzQXNBdHRhY2htZW50cykKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1
cmF0aW9uIF9zZXRBdHRhY2htZW50RWxlbWVudEVuYWJsZWQ6WUVTXTsKKyAgICBhdXRvIHNpbXVs
YXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJW
aWV3RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CisgICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtzaW11bGF0b3Ig
d2ViVmlld107CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmF0dGFj
aG1lbnRFZGl0aW5nVGVzdE1hcmt1cF07CisgICAgW3NpbXVsYXRvciB3cml0ZVByb21pc2VkRmls
ZXM6QFsgdGVzdFBERkZpbGVVUkwoKSwgdGVzdEltYWdlRmlsZVVSTCgpIF1dOworCisgICAgT2Jz
ZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldyk7CisgICAgW3Np
bXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDAsIDApIHRvOkNHUG9pbnRNYWtlKDUwLCA1MCld
OworICAgIGF1dG8gaW5zZXJ0ZWRBdHRhY2htZW50cyA9IHJldGFpblB0cihbb2JzZXJ2ZXIub2Jz
ZXJ2ZXIoKSBpbnNlcnRlZF0pOworICAgIEVYUEVDVF9FUSgyVSwgW2luc2VydGVkQXR0YWNobWVu
dHMgY291bnRdKTsKKyAgICBFWFBFQ1RfRVEoMiwgW1t3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRhY2htZW50JykubGVu
Z3RoIl0gaW50VmFsdWVdKTsKKworICAgIE5TQXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZERhdGEg
PSBAWyB0ZXN0UERGRGF0YSgpLCB0ZXN0SW1hZ2VEYXRhKCkgXTsKKyAgICBmb3IgKF9XS0F0dGFj
aG1lbnQgKmF0dGFjaG1lbnQgaW4gaW5zZXJ0ZWRBdHRhY2htZW50cy5nZXQoKSkgeworICAgICAg
ICBFWFBFQ1RfR1QoYXR0YWNobWVudC5pbmZvLmZpbGVQYXRoLmxlbmd0aCwgMFUpOworICAgICAg
ICBFWFBFQ1RfVFJVRShbZXhwZWN0ZWREYXRhIGNvbnRhaW5zT2JqZWN0OmF0dGFjaG1lbnQuaW5m
by5kYXRhXSk7CisgICAgICAgIGlmIChbdGVzdFBERkRhdGEoKSBpc0VxdWFsVG9EYXRhOmF0dGFj
aG1lbnQuaW5mby5kYXRhXSkKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiYXBwbGljYXRp
b24vcGRmIiwgYXR0YWNobWVudC5pbmZvLmNvbnRlbnRUeXBlKTsKKyAgICAgICAgZWxzZSBpZiAo
W3Rlc3RJbWFnZURhdGEoKSBpc0VxdWFsVG9EYXRhOmF0dGFjaG1lbnQuaW5mby5kYXRhXSkKKyAg
ICAgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiaW1hZ2UvcG5nIiwgYXR0YWNobWVudC5pbmZvLmNv
bnRlbnRUeXBlKTsKICAgICB9CisKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVF
ZGl0Q29tbWFuZDpAIlNlbGVjdEFsbCIgYXJndW1lbnQ6bmlsXTsKKyAgICBbd2ViVmlldyBfc3lu
Y2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIkRlbGV0ZUJhY2t3YXJkIiBhcmd1bWVudDpu
aWxdOworICAgIE5TQXJyYXk8X1dLQXR0YWNobWVudCAqPiAqcmVtb3ZlZEF0dGFjaG1lbnRzID0g
W29ic2VydmVyLm9ic2VydmVyKCkgcmVtb3ZlZF07CisgICAgRVhQRUNUX0VRKDJVLCByZW1vdmVk
QXR0YWNobWVudHMuY291bnQpOworICAgIEVYUEVDVF9FUSgwLCBbW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1l
bnQnKS5sZW5ndGgiXSBpbnRWYWx1ZV0pOworICAgIEVYUEVDVF9UUlVFKFtyZW1vdmVkQXR0YWNo
bWVudHMgY29udGFpbnNPYmplY3Q6W2luc2VydGVkQXR0YWNobWVudHMgZmlyc3RPYmplY3RdXSk7
CisgICAgRVhQRUNUX1RSVUUoW3JlbW92ZWRBdHRhY2htZW50cyBjb250YWluc09iamVjdDpbaW5z
ZXJ0ZWRBdHRhY2htZW50cyBsYXN0T2JqZWN0XV0pOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0o
TUFDKQpAQCAtMTA3Myw3ICsxMTMwLDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgSW5z
ZXJ0RHJvcHBlZEF0dHJpYnV0ZWRTdHJpbmdDb250YWluaW5nQXR0YWNobWVudCkKICAgICBFWFBF
Q1RfRVEoMFUsIFtkcmFnQW5kRHJvcFNpbXVsYXRvciByZW1vdmVkQXR0YWNobWVudHNdLmNvdW50
KTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSByZXRhaW5QdHIoW2RyYWdBbmREcm9wU2ltdWxhdG9y
IGluc2VydGVkQXR0YWNobWVudHNdLmZpcnN0T2JqZWN0KTsKIAotICAgIGF1dG8gc2l6ZSA9IHBs
YXRmb3JtSW1hZ2VXaXRoRGF0YShbYXR0YWNobWVudCBzeW5jaHJvbm91c2x5UmVxdWVzdERhdGE6
bmlsXSkuc2l6ZTsKKyAgICBhdXRvIHNpemUgPSBwbGF0Zm9ybUltYWdlV2l0aERhdGEoW2F0dGFj
aG1lbnQgaW5mb10uZGF0YSkuc2l6ZTsKICAgICBFWFBFQ1RfRVEoMjE1Liwgc2l6ZS53aWR0aCk7
CiAgICAgRVhQRUNUX0VRKDE3NC4sIHNpemUuaGVpZ2h0KTsKICAgICBFWFBFQ1RfV0tfU1RSRVEo
ImltYWdlL3BuZyIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNl
bGVjdG9yOkAiYXR0YWNobWVudCJdKTsKQEAgLTExMTEsMTMgKzExNjgsOCBAQCBURVNUKFdLQXR0
YWNobWVudFRlc3RzSU9TLCBJbnNlcnREcm9wcGVkUmljaEFuZFBsYWluVGV4dEZpbGVzQXNBdHRh
Y2htZW50cykKICAgICBFWFBFQ1RfRVEoMlUsIFtkcmFnQW5kRHJvcFNpbXVsYXRvciBpbnNlcnRl
ZEF0dGFjaG1lbnRzXS5jb3VudCk7CiAgICAgRVhQRUNUX0VRKDBVLCBbZHJhZ0FuZERyb3BTaW11
bGF0b3IgcmVtb3ZlZEF0dGFjaG1lbnRzXS5jb3VudCk7CiAKLSAgICBmb3IgKF9XS0F0dGFjaG1l
bnQgKmF0dGFjaG1lbnQgaW4gW2RyYWdBbmREcm9wU2ltdWxhdG9yIGluc2VydGVkQXR0YWNobWVu
dHNdKSB7Ci0gICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgICAgICBFWFBFQ1RfR1Qo
W2F0dGFjaG1lbnQgc3luY2hyb25vdXNseVJlcXVlc3REYXRhOiZlcnJvcl0ubGVuZ3RoLCAwVSk7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7Ci0gICAgICAgIGlmIChlcnJvcikKLSAgICAg
ICAgICAgIE5TTG9nKEAiRXJyb3I6ICVAIiwgZXJyb3IpOwotICAgIH0KKyAgICBmb3IgKF9XS0F0
dGFjaG1lbnQgKmF0dGFjaG1lbnQgaW4gW2RyYWdBbmREcm9wU2ltdWxhdG9yIGluc2VydGVkQXR0
YWNobWVudHNdKQorICAgICAgICBFWFBFQ1RfR1QoW2F0dGFjaG1lbnQgaW5mb10uZGF0YS5sZW5n
dGgsIDBVKTsKIAogICAgIEVYUEVDVF9FUSgyLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVudCcpLmxlbmd0
aCJdLmludFZhbHVlKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoImhlbGxvLnJ0ZiIsIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCdhdHRhY2htZW50JylbMF0uZ2V0QXR0cmlidXRlKCd0aXRsZScpIl0pOwpAQCAtMTE3NCwxMyAr
MTIyNiw4IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIEluc2VydERyb3BwZWRJdGVtUHJv
dmlkZXJzSW5PcmRlcikKICAgICBFWFBFQ1RfRVEoMlUsIFtkcmFnQW5kRHJvcFNpbXVsYXRvciBp
bnNlcnRlZEF0dGFjaG1lbnRzXS5jb3VudCk7CiAgICAgRVhQRUNUX0VRKDBVLCBbZHJhZ0FuZERy
b3BTaW11bGF0b3IgcmVtb3ZlZEF0dGFjaG1lbnRzXS5jb3VudCk7CiAKLSAgICBmb3IgKF9XS0F0
dGFjaG1lbnQgKmF0dGFjaG1lbnQgaW4gW2RyYWdBbmREcm9wU2ltdWxhdG9yIGluc2VydGVkQXR0
YWNobWVudHNdKSB7Ci0gICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgICAgICBFWFBF
Q1RfR1QoW2F0dGFjaG1lbnQgc3luY2hyb25vdXNseVJlcXVlc3REYXRhOiZlcnJvcl0ubGVuZ3Ro
LCAwVSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7Ci0gICAgICAgIGlmIChlcnJvcikK
LSAgICAgICAgICAgIE5TTG9nKEAiRXJyb3I6ICVAIiwgZXJyb3IpOwotICAgIH0KKyAgICBmb3Ig
KF9XS0F0dGFjaG1lbnQgKmF0dGFjaG1lbnQgaW4gW2RyYWdBbmREcm9wU2ltdWxhdG9yIGluc2Vy
dGVkQXR0YWNobWVudHNdKQorICAgICAgICBFWFBFQ1RfR1QoW2F0dGFjaG1lbnQgaW5mb10uZGF0
YS5sZW5ndGgsIDBVKTsKIAogICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRUYWdzSW5PcmRlcjpA
WyBAIkFUVEFDSE1FTlQiLCBAIkEiLCBAIkFUVEFDSE1FTlQiIF1dOwogCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvaW9zL0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tCmluZGV4IDllMWYy
MWVlMWQ1M2JkZDQ2YzMzMzgxMDIxMGVkMDcwZGYxMzJjOGEuLjBmOTdhMzlkYjYwYWIyOTAyYTU4
ODM0MTQ1YTc0MDliMjMxYjU3ZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9z
L0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9z
L0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tCkBAIC02ODAsNyArNjgwLDcgQEAgc3RhdGljIE5T
QXJyYXkgKmRyYWdBbmREcm9wRXZlbnROYW1lcygpCiAgICAgcmV0dXJuIHNlbGYub3ZlcnJpZGVQ
ZXJmb3JtRHJvcEJsb2NrID8gc2VsZi5vdmVycmlkZVBlcmZvcm1Ecm9wQmxvY2soc2Vzc2lvbikg
OiBzZXNzaW9uLml0ZW1zOwogfQogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRpZEluc2VydEF0dGFjaG1lbnQ6KF9XS0F0dGFjaG1lbnQgKilhdHRhY2htZW50CistICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEluc2VydEF0dGFjaG1lbnQ6KF9X
S0F0dGFjaG1lbnQgKilhdHRhY2htZW50IHdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlCiB7
CiAgICAgW19pbnNlcnRlZEF0dGFjaG1lbnRzIGFkZE9iamVjdDphdHRhY2htZW50XTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347500</attachid>
            <date>2018-08-20 08:53:42 -0700</date>
            <delta_ts>2018-08-20 09:27:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188744-20180820085341.patch</filename>
            <type>text/plain</type>
            <size>148181</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBiZDFhOWNkNzU1ODA2
NGI1N2M5OTFhZTFjYmI0MDUwYWI0M2Y3YS4uYTFmMGIyY2IxMDAxOGFkYjk0NWEzODU3NTdiZDM1
NGFhZGEzYTA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNCBAQAorMjAxOC0wOC0xOCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBUZXN0IGJ1Zzsg
cGxlYXNlIGlnbm9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg4NzQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVmYWN0b3JzIGxvZ2ljIGFyb3VuZCBIVE1MQXR0YWNobWVudEVsZW1lbnQgYW5kIHBh
c3RlYm9hcmQgcmVhZGluZyBoZWxwZXJzLCBpbiBzdXBwb3J0IG9mIG1vdmluZyB0aGUgZGF0YQor
ICAgICAgICBiYWNraW5nIGZvciBhdHRhY2htZW50IGVsZW1lbnRzIHRvIHRoZSBjbGllbnQgbGF5
ZXIsIGluc3RlYWQgb2Yga2VlcGluZyBpdCBpbiB0aGUgYXR0YWNobWVudCBlbGVtZW50J3MgRmls
ZS4KKyAgICAgICAgQXVnbWVudGVkIGV4aXN0aW5nIEFQSSB0ZXN0cyBpbiBXS0F0dGFjaG1lbnRU
ZXN0cywgYW5kIGFsc28gYWRkZWQgYSBuZXcgQVBJIHRlc3QgKHNlZSBUb29scyBmb3IgbW9yZSBk
ZXRhaWwpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
ZGlkSW5zZXJ0QXR0YWNobWVudEVsZW1lbnQpOgorCisgICAgICAgIE5vdGlmeSB0aGUgY2xpZW50
IGxheWVyIHdoZW4gYSBuZXdseSBpbnNlcnRlZCBhdHRhY2htZW50IGVsZW1lbnQncyBpZGVudGlm
aWVyIGhhcyBiZWVuIHVwZGF0ZWQgdG8gYXZvaWQKKyAgICAgICAgY29sbGlkaW5nIHdpdGggdGhl
IGlkZW50aWZpZXIgb2YgYW4gZXhpc3RpbmcgYXR0YWNobWVudCBlbGVtZW50LiBUaGlzIGNhbiBo
YXBwZW4gaWYsIGZvciBpbnN0YW5jZSwgb25lIG9yIG1vcmUKKyAgICAgICAgYXR0YWNobWVudHMg
YXJlIGNvcGllZCBhbmQgcGFzdGVkIHdpdGhpbiB0aGUgc2FtZSBkb2N1bWVudC4KKworICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNsb25l
QXR0YWNobWVudERhdGEpOgorCisgICAgICAgIEFkZCBuZXcgaGVscGVyIGZ1bmN0aW9ucyB0byBu
b3RpZnkgdGhlIGNsaWVudCB3aGVuIHRoZSBhdHRhY2htZW50IGlkZW50aWZpZXIgdG8gZGF0YSBt
YXBwaW5nIG5lZWRzIHRvIGJlCisgICAgICAgIHVwZGF0ZWQuIFRoaXMgY2FuIGhhcHBlbiBpbiB0
aHJlZSB3YXlzOiAoMSkgYW4gYXR0YWNobWVudCBpcyBjcmVhdGVkIHdpdGggcmF3IGRhdGEsIG9y
ICgyKSBhbiBhdHRhY2htZW50IGlzCisgICAgICAgIGNyZWF0ZWQgd2l0aCBhIGZpbGUgcGF0aCwg
b3IgKDMpIHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYW4gYXR0YWNobWVudCBlbGVtZW50IGhh
cyBiZWVuIHJlYXNzaWduZWQuIFRoZXNlCisgICAgICAgIGNvcnJlc3BvbmQgdG8gdGhlIHR3byB2
ZXJzaW9ucyBvZiBgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcmAsIGFuZCBgY2xvbmVBdHRh
Y2htZW50RGF0YWAsIHJlc3BlY3RpdmVseS4KKworICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50OjpzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YSBjb25zdCk6CisKKyAgICAgICAg
QWRkIGEgbmV3IEVkaXRvckNsaWVudCBob29rIHRvIGRldGVybWluZSB3aGV0aGVyIGNsaWVudC1z
aWRlIGF0dGFjaG1lbnQgZGF0YSBtYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4gQ3VycmVudGx5LAor
ICAgICAgICB0aGlzIG9ubHkgcmV0dXJucyB0cnVlIGZvciBXZWJLaXQyLiBJZiB0aGlzIGZsYWcg
aXMgc2V0IHRvIHRydWUsIHdlIHJlZ2lzdGVyIGF0dGFjaG1lbnQgaWRlbnRpZmllcnMgYW5kIGRv
bid0CisgICAgICAgIGNyZWF0ZSBhIG5ldyBGaWxlIG9iamVjdCBmb3IgdGhlIGF0dGFjaG1lbnQg
ZWxlbWVudDsgb3RoZXJ3aXNlLCBmYWxsIGJhY2sgdG8gY3JlYXRpbmcgYW5kIHNldHRpbmcgYSBG
aWxlIGZvciB0aGUKKyAgICAgICAgbmV3IGF0dGFjaG1lbnQgZWxlbWVudC4KKworICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjppbnNlcnRBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKTogRGVsZXRlZC4KKworICAgICAgICBBZGp1
c3QgbG9naWMgd2hlbiBpbnNlcnRpbmcgYW4gYXR0YWNobWVudDsgd2Ugbm93IG9ubHkgbmVlZCB0
byB1cGRhdGUgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGF0dGFjaG1lbnQgZWxlbWVudAorICAgICAg
ICB3aXRoIG1ldGFkYXRhIGZyb20gdGhlIGNsaWVudCBsYXllci4KKworICAgICAgICAqIGVkaXRp
bmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudCk6
CisKKyAgICAgICAgTm90aWZ5IHRoZSBjbGllbnQgd2hlbiBjcmVhdGluZyBhbiBhdHRhY2htZW50
IGVsZW1lbnQgZnJvbSBpbWFnZSBkYXRhIG9uIHRoZSBwYXN0ZWJvYXJkLgorCisgICAgICAgIChX
ZWJDb3JlOjpyZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMpOgorCisgICAgICAgIFJl
ZmFjdG9yIHRoaXMgaGVscGVyIGZ1bmN0aW9uIHRvIG5vIGxvbmdlciBjb25uZWN0IGF0dGFjaG1l
bnQgZWxlbWVudHMgdG8gRmlsZSBvYmplY3RzIGNyZWF0ZWQgZnJvbQorICAgICAgICBzdWJyZXNv
dXJjZXMuIEluc3RlYWQsIGp1c3QgdXBkYXRlIGVhY2ggYXR0YWNobWVudCBlbGVtZW50J3MgYXR0
cmlidXRlcyB1c2luZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3VicmVzb3VyY2UsCisgICAgICAg
IGFuZCB0aGVuIG5vdGlmeSB0aGUgY2xpZW50IGFib3V0IHRoZSBuZXcgYXR0YWNobWVudCBkYXRh
IGFuZCBhdHRhY2htZW50IGlkZW50aWZpZXIuCisKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZy
YWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3Vw
V2l0aEFyY2hpdmUpOgorCisgICAgICAgIFBsdW1iIHRoZSBjdXJyZW50IFdlYkNvbnRlbnRSZWFk
ZXIncyBGcmFtZSYgdG8gZWFjaCBvZiB0aGVzZSBoZWxwZXJzLCBzbyB0aGF0IGl0IGNhbiBjYWxs
IG91dCB0byB0aGUgY2xpZW50LgorCisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVy
OjpyZWFkV2ViQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVh
ZGVyOjpyZWFkV2ViQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVy
OjpyZWFkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEZp
bGVQYXRocyk6CisKKyAgICAgICAgTm90aWZ5IHRoZSBjbGllbnQgd2hlbiBjcmVhdGluZyBhbiBh
dHRhY2htZW50IGZyb20gdGhlIHBhdGggb2YgYSBkcm9wcGVkIGZpbGUuCisKKyAgICAgICAgKiBo
dG1sL0F0dGFjaG1lbnRUeXBlcy5oOgorCisgICAgICAgIFJlbW92ZSBBdHRhY2htZW50SW5mby4g
VGhpcyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCB0byByZXF1
ZXN0IGF0dGFjaG1lbnQgZGF0YSBmcm9tIHRoZSB3ZWIKKyAgICAgICAgcHJvY2VzcyBhbnltb3Jl
LgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjplbnN1cmVVbmlxdWVJZGVudGlmaWVyKToK
KworICAgICAgICBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gb24gdGhlIGF0dGFjaG1lbnQgZWxlbWVu
dCB0byBjcmVhdGUgYW5kIHJldHVybiBhIHVuaXF1ZSBpZGVudGlmaWVyIGlmIG5lZWRlZC4KKwor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVBdHRyaWJ1dGVz
KToKKworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIHRvIHVwZGF0ZSB0aGUgZGlzcGxheWVk
IGVsZW1lbnQgYXR0cmlidXRlcyAodHlwZSwgdGl0bGUgYW5kIHN1YnRpdGxlKSBvciBhbiBhdHRh
Y2htZW50LgorCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50RGF0YVJlYWRlcjo6Y3JlYXRl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnREYXRhUmVhZGVyOjpBdHRh
Y2htZW50RGF0YVJlYWRlcik6IERlbGV0ZWQuCisKKyAgICAgICAgUmVtb3ZlIEF0dGFjaG1lbnRE
YXRhUmVhZGVyLiBUaGlzIGhlbHBlciBjbGFzcyB3YXMgb25seSB1c2VkIHRvIGxvYWQgYXR0YWNo
bWVudCBkYXRhIHdoZW4gcmVxdWVzdGluZyBhdHRhY2htZW50CisgICAgICAgIGluZm9ybWF0aW9u
IGluIHRoZSBjbGllbnQsIGJ1dCB0aGlzIGlzIG5vdyBvYnZpYXRlZCBieSBtb3ZpbmcgYXR0YWNo
bWVudCBkYXRhIHRvIHRoZSBjbGllbnQgbGF5ZXIuCisKKyAgICAgICAgKCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUZpbGVXaXRoRGF0
YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJl
cXVlc3RJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxl
bWVudDo6ZGVzdHJveVJlYWRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2ht
ZW50RGF0YVJlYWRlcjo6fkF0dGFjaG1lbnREYXRhUmVhZGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF0dGFjaG1lbnREYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnREYXRhUmVhZGVyOjpkaWRGYWlsKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnREYXRhUmVhZGVyOjppbnZva2VDYWxs
YmFja0FuZEZpbmlzaFJlYWRpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9EcmFnQ2xpZW50Lmg6CisgICAgICAgICog
cGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxl
cjo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkb1N5c3Rl
bURyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnByb21pc2VkQXR0YWNo
bWVudEluZm8pOgorCisgICAgICAgIEFsbG93IGRyYWdnaW5nIGFuIGF0dGFjaG1lbnQgKGV2ZW4g
aWYgaXQgZG9lcyBub3QgaGF2ZSBhIGZpbGUpIGFzIGxvbmcgYXMgaXQgaGFzIGEgdW5pcXVlIGlk
ZW50aWZpZXIgYW5kIGEKKyAgICAgICAgY29udGVudCB0eXBlLgorCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6cHJvbWlzZWRCbG9iSW5mbyk6IERlbGV0ZWQuCisgICAgICAgICog
cGFnZS9EcmFnQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpjbG9uZUF0dGFjaG1lbnREYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSXRlbS5oOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0l0ZW06OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnSXRlbTo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEJsb2JJbmZvLmguCisKKyAgICAg
ICAgQWRkIGFuIGF0dGFjaG1lbnQgaWRlbnRpZmllciB0byBQcm9taXNlZEJsb2JJbmZvLiBBZGRp
dGlvbmFsbHksIHJlbmFtZSBQcm9taXNlZEJsb2JJbmZvIHRvCisgICAgICAgIFByb21pc2VkQXR0
YWNobWVudEluZm8sIHNpbmNlIGl0IGlzIGN1cnJlbnRseSBleGNsdXNpdmVseSB1c2VkIHRvIGF0
dGFjaG1lbnQgZWxlbWVudCBkYXRhIHRvIHRoZSBwYXN0ZWJvYXJkLgorICAgICAgICBJbiB0aGUg
ZnV0dXJlLCB0aGlzIGNvdWxkIGJlIHJlbmFtZWQgdG8gc29tZXRoaW5nIG1vcmUgZ2VuZXJhbCAo
ZS5nLiBQcm9taXNlZFBhc3RlYm9hcmREYXRhKSwgc2hvdWxkIHdlIHVzZSB0aGlzCisgICAgICAg
IG1lY2hhbmlzbSB0byB3cml0ZSBkYXRhIGZyb20gb3RoZXIgc291cmNlcyB0byB0aGUgcGFzdGVi
b2FyZC4KKworICAgICAgICAoV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2htZW50SW5mbzo6b3BlcmF0
b3IgYm9vbCBjb25zdCk6CisKIDIwMTgtMDgtMjAgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNv
bT4KIAogICAgICAgICBUaHJvdyBhbiBleGNlcHRpb24gaWYgd2luZG93Lm9wZW4oKSBnZXRzIHBh
c3NlZCBhIFVSTCB0aGF0IGNhbm5vdCBiZSBwYXJzZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjVmNGYxMDJhYzVm
MjNkMGJiYWFiNDZjMDViNDA2ZWIwZWQ0YTliYi4uNzY1Nzk5NmUxNGMyODdiNDI1OTk3MWY4NmE5
YTViMmU5NjRlYmIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODMgQEAKKzIwMTgtMDgtMTggIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgVGVzdCBidWc7
IHBsZWFzZSBpZ25vcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODc0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkanVzdHMgV2ViS2l0J3MgYXR0YWNobWVudCBlZGl0aW5nIFNQSSB3aXRoIHRoZSBm
b2xsb3dpbmcgbW9kaWZpY2F0aW9uczoKKyAgICAgICAg4oCiICAgRGVwcmVjYXRlIGAtX2luc2Vy
dEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6Y29udGVudFR5cGU6ZGF0YTpvcHRpb25zOmNvbXBsZXRp
b246YCBpbiBmYXZvciBvZgorICAgICAgICAgICAgYC1faW5zZXJ0QXR0YWNobWVudFdpdGhGaWxl
V3JhcHBlcjpjb250ZW50VHlwZTpvcHRpb25zOmNvbXBsZXRpb246YC4KKyAgICAgICAg4oCiICAg
RGVwcmVjYXRlIGAtcmVxdWVzdEluZm86YCBhbmQgaW4gZmF2b3Igb2YganVzdCBgLWluZm9gLgor
ICAgICAgICDigKIgICBBZGQgYSBgLWZpbGVXcmFwcGVyYCBwcm9wZXJ0eSB0byBgX1dLQXR0YWNo
bWVudEluZm9gIHRoYXQgcmV0dXJucyBhbiBgTlNGaWxlV3JhcHBlcmAuCisgICAgICAgIOKAoiAg
IFJlbW92ZSBzb21lIFNQSSBtZXRob2RzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIGRlcHJlY2F0
ZWQsIGJ1dCBhcmUgbm90IGV2ZW4gbmVjZXNzYXJ5LCBzaW5jZSB0aGV5J3JlIG5vCisgICAgICAg
ICAgICBsb25nZXIgZXZlbiB1c2VkIGJ5IE1haWwuCisKKyAgICAgICAgVG8gbWFrZSB0aGlzIHBv
c3NpYmxlLCB3ZSByZWZhY3RvciB3aGVyZSBhbmQgaG93IGF0dGFjaG1lbnQgZGF0YSBpcyB0cmFj
a2VkLiBDdXJyZW50bHksIHRoZSBkYXRhIGlzIHN0b3JlZCBpbgorICAgICAgICB0aGUgbmV0d29y
ayBwcm9jZXNzLCBhbmQgbWFkZSBhY2Nlc3NpYmxlIHRvIHRoZSB3ZWIgcHJvY2VzcyB2aWEgYmxv
YiBVUkxzIHN0b3JlZCBpbiB0aGUgRmlsZSBvYmplY3QgaW4gdGhlCisgICAgICAgIGF0dGFjaG1l
bnQgZWxlbWVudC4gQXMgc3VjaCwgcmVxdWVzdHMgZnJvbSB0aGUgVUkgcHJvY2VzcyBmb3IgYXR0
YWNobWVudCBkYXRhIHdvdWxkIGZpcnN0IGJlIHJvdXRlZCB0aHJvdWdoIHRoZQorICAgICAgICB3
ZWIgcHJvY2VzcyB0byBuZXR3b3JrIHByb2Nlc3MgYW5kIGJhY2suCisKKyAgICAgICAgSW5zdGVh
ZCwgd2Ugbm93IGtlZXAgdGhlIHJlbGV2YW50IGF0dGFjaG1lbnQgZGF0YSAoaW4gdGhlIGZvcm0g
b2YgTlNGaWxlV3JhcHBlciBvbiBDb2NvYSBwbGF0Zm9ybXMpIGluIHRoZSBVSQorICAgICAgICBw
cm9jZXNzLCBvbiBBUEk6OkF0dGFjaG1lbnQuIFdlIGFkZGl0aW9uYWxseSBrZWVwIGEgbWFwIG9m
IGF0dGFjaG1lbnQgaWRlbnRpZmllcnMgdG8gQVBJOjpBdHRhY2htZW50cywgd2hpY2gKKyAgICAg
ICAgYWxsb3dzIHVzIHRvIHByb3BhZ2F0ZSB0aGUgc2FtZSBfV0tBdHRhY2htZW50IHdyYXBwZXIg
b2JqZWN0IHRvIHRoZSBTUEkgY2xpZW50IGZvciBlYWNoIHVuaXF1ZWx5IGlkZW50aWZpZWQKKyAg
ICAgICAgYXR0YWNobWVudCBlbGVtZW50LiBUaGlzIGFsc28gaGFzIHRoZSBiZW5lZml0IG9mIGFs
bG93aW5nIHVzIHRvIHJlbW92ZSB0aGUgYXN5bmNocm9ub3VzIHZlcnNpb24gb2YgYC1yZXF1ZXN0
SW5mbzpgCisgICAgICAgIGFuZCByZXBsYWNlIGl0IHdpdGgganVzdCBhbiBgaW5mb2AgcHJvcGVy
dHkuCisKKyAgICAgICAgQ2hhbmdlcyBhcmUgY292ZXJlZCBieSBuZXcgYW5kIGV4aXN0aW5nIEFQ
SSB0ZXN0cy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFByb21pc2VkQXR0YWNobWVudEluZm8+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFByb21pc2VkQXR0YWNobWVudEluZm8+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFByb21pc2VkQmxvYkluZm8+OjplbmNvZGUpOiBEZWxldGVk
LgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFByb21pc2VkQmxvYkluZm8+OjpkZWNvZGUp
OiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEF0dGFjaG1lbnRJbmZvPjo6
ZW5jb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxBdHRhY2htZW50
SW5mbz46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oOgorCisgICAgICAgIENvbnRpbnVlIHJlbW92aW5nIGVuY29kaW5nIHN1cHBvcnQg
Zm9yIFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvLiBBZGRpdGlvbmFsbHksIHJlbmFtZSBQcm9taXNl
ZEJsb2JJbmZvIHRvCisgICAgICAgIFByb21pc2VkQXR0YWNobWVudEluZm8uCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoQVBJOjpBdHRhY2ht
ZW50Ojp1cGRhdGVBdHRyaWJ1dGVzKToKKworICAgICAgICBSZW5hbWUgc2V0RGF0YUFuZENvbnRl
bnRUeXBlIHRvIGp1c3QgdXBkYXRlQXR0cmlidXRlczsgaW5zdGVhZCBvZiBzZW5kaW5nIGRhdGEs
IG9ubHkgc2VuZCB0aGUgaW5mb3JtYXRpb24gbmVlZGVkCisgICAgICAgIHRvIHVwZGF0ZSB0aGUg
cHJlc2VudGF0aW9uYWwgYXR0cmlidXRlcyBvZiB0aGUgYXR0YWNobWVudCBlbGVtZW50LgorCisg
ICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnJlcXVlc3RJbmZvKTogRGVsZXRlZC4KKworICAgICAg
ICBKdXN0IGNhbGwgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB3aXRoIHRoZSByZXN1bHQgb2YgYHNl
bGYuaW5mb2AuCisKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6c2V0RGF0YUFuZENvbnRlbnRU
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoK
KworICAgICAgICBBZGQgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOiBhIGNvbnRlbnQgdHlwZSwgYSBm
aWxlIHBhdGgsIGFuZCAob24gQ29jb2EgcGxhdGZvcm1zKSBhbiBOU0ZpbGVXcmFwcGVyLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisKKyAg
ICAgICAgUmVtb3ZlIC1fd2ViVmlldzpkaWRJbnNlcnRBdHRhY2htZW50Oiwgc2luY2UgdGhpcyBp
cyB1bnVzZWQgYnkgYW55IGNsaWVudCBjdXJyZW50bHksIGFuZCBpcyBzdXBlcmNlZGVkIGJ5Cisg
ICAgICAgIC1fd2ViVmlldzpkaWRJbnNlcnRBdHRhY2htZW50OndpdGhTb3VyY2U6LgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfZGlkSW5zZXJ0QXR0YWNobWVudDp3aXRoU291cmNlOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2RpZFJlbW92ZUF0dGFjaG1lbnQ6XSk6CisKKyAgICAgICAgTG9vayB1cCB0aGUgQVBJ
OjpBdHRhY2htZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGlkZW50aWZpZXIsIGFuZCBzZW5kIGl0
cyB3cmFwcGVyIG9iamVjdCB0byB0aGUgY2xpZW50LgorCisgICAgICAgICgtW1dLV2ViVmlldyBf
aW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpjb250ZW50VHlwZTpkYXRhOm9wdGlvbnM6Y29t
cGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbnNlcnRBdHRhY2htZW50V2l0aEZp
bGVXcmFwcGVyOmNvbnRlbnRUeXBlOm9wdGlvbnM6Y29tcGxldGlvbjpdKToKKworICAgICAgICBB
ZGQgYSB3YXkgdG8gaW5zZXJ0IGFuIGF0dGFjaG1lbnQgdXNpbmcgTlNGaWxlV3JhcHBlciwgYW5k
IHJlaW1wbGVtZW50IF9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOiB1c2luZyBpdC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVu
dEluZm8gaW5pdFdpdGhGaWxlV3JhcHBlcjpmaWxlUGF0aDpjb250ZW50VHlwZTpdKToKKyAgICAg
ICAgKC1bX1dLQXR0YWNobWVudEluZm8gZGF0YV0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50
SW5mbyBuYW1lXSk6CisgICAgICAgIChpc0RlY2xhcmVkT3JEeW5hbWljVHlwZUlkZW50aWZpZXIp
OgorICAgICAgICAoLVtfV0tBdHRhY2htZW50SW5mbyBfdHlwZUlkZW50aWZpZXJGcm9tUGF0aEV4
dGVuc2lvbl0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50SW5mbyBjb250ZW50VHlwZV0pOgor
ICAgICAgICAoLVtfV0tBdHRhY2htZW50SW5mbyBtaW1lVHlwZV0pOgorICAgICAgICAoLVtfV0tB
dHRhY2htZW50SW5mbyB1dGlUeXBlXSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnRJbmZvIGZp
bGVXcmFwcGVyXSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgaW5mb10pOgorICAgICAgICAo
LVtfV0tBdHRhY2htZW50IHJlcXVlc3RJbmZvOl0pOgorCisgICAgICAgIEFkZCBhIHByb3BlcnR5
IG9uIF9XS0F0dGFjaG1lbnQgdG8gcmV0cmlldmUgYSBfV0tBdHRhY2htZW50SW5mbyAoYSBzbmFw
c2hvdCBvZiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUKKyAgICAgICAgYXR0YWNobWVudCwgYWxv
bmcgd2l0aCB0aGUgTlNGaWxlV3JhcHBlcikuIFJlaW1wbGVtZW50IHJlcXVlc3RJbmZvIHVzaW5n
IHRoaXMgcHJvcGVydHkuCisKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCBzZXRGaWxlV3JhcHBl
cjpjb250ZW50VHlwZTpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50IHNl
dERhdGE6bmV3Q29udGVudFR5cGU6bmV3RmlsZW5hbWU6Y29tcGxldGlvbjpdKToKKworICAgICAg
ICBSZWltcGxlbWVudGVkIGJ5IGNhbGxpbmcgLXNldEZpbGVXcmFwcGVyOmNvbnRlbnRUeXBlOmNv
bXBsZXRpb246IHdpdGggYW4gTlNGaWxlV3JhcHBlciBjcmVhdGVkIHVzaW5nIHRoZSBnaXZlbgor
ICAgICAgICBkYXRhLiBBZGRpdGlvbmFsbHksIGNyZWF0ZSBhbmQgYXNzb2NpYXRlIHRoZSB1bmlx
dWUgaWRlbnRpZmllciB3aXRoIGFuIEFQSTo6QXR0YWNobWVudCByaWdodCBhd2F5LgorCisgICAg
ICAgICgtW19XS0F0dGFjaG1lbnQgdW5pcXVlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtfV0tB
dHRhY2htZW50IGRlc2NyaXB0aW9uXSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnRJbmZvIGlu
aXRXaXRoSW5mbzpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bX1dLQXR0YWNobWVudEluZm8gZmls
ZUxvYWRpbmdFcnJvcl0pOiBEZWxldGVkLgorICAgICAgICAoLVtfV0tBdHRhY2htZW50IGlzRXF1
YWw6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgaGFzaF0pOiBEZWxldGVk
LgorCisgICAgICAgIFRoZXJlJ3Mgbm8gbG9uZ2VyIGFueSBwb2ludCB0byBpbXBsZW1lbnRpbmcg
dGhlc2UgbWV0aG9kcywgc2luY2UgdGhlIFNQSSBjbGllbnQgaXMgbm93IGd1YXJhbnRlZWQgYSB1
bmlxdWUKKyAgICAgICAgbWFwcGluZyBvZiBfV0tBdHRhY2htZW50cyB0byBhdHRhY2htZW50IGVs
ZW1lbnRzIGluIHRoZSBkb2N1bWVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdl
Q2xpZW50SW1wbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29h
OjpkaWRJbnNlcnRBdHRhY2htZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1S
ZWdpc3RlckF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRm
b3JtQ2xvbmVBdHRhY2htZW50KToKKworICAgICAgICBFeHRlbmQgdGhlIGJlaGF2aW9yIG9mIHJl
Z2lzdGVyaW5nIG5ldyBhdHRhY2htZW50IGRhdGEgb24gQ29jb2EgcGxhdGZvcm1zIGJ5IGFkZGl0
aW9uYWxseSBjcmVhdGluZyBhbmQgc2V0dGluZworICAgICAgICBOU0ZpbGVXcmFwcGVycyBvbiB0
aGUgQVBJOjpBdHRhY2htZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vz
c0V4aXRlZCk6CisKKyAgICAgICAgQ2xlYXIgb3V0IHRoZSBtYXAgb2YgYXR0YWNobWVudCBpZGVu
dGlmaWVycyB0byBBUEk6OkF0dGFjaG1lbnRzIHdoZW4gdGhlIHdlYiBjb250ZW50IHByb2Nlc3Mg
aXMgdGVybWluYXRlZC4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dGFjaG1l
bnRGb3JJZGVudGlmaWVyIGNvbnN0KToKKworICAgICAgICBIZWxwZXIgZnVuY3Rpb24gdG8gbG9v
ayB1cCBhbiBBUEk6OkF0dGFjaG1lbnQgZm9yIHRoZSBnaXZlbiBhdHRhY2htZW50IGlkZW50aWZp
ZXIuIFJldHVybnMgbnVsbCBpZiB0aGUKKyAgICAgICAgYXR0YWNobWVudCBpcyBub3QgZm91bmQs
IG9yIHRoZSBhdHRhY2htZW50IGlkZW50aWZpZXIgaXMgaW52YWxpZC4KKworICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXJGcm9tRmlsZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb25lQXR0
YWNobWVudERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVn
aXN0ZXJBdHRhY2htZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9y
bUNsb25lQXR0YWNobWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkSW5z
ZXJ0QXR0YWNobWVudCk6CisKKyAgICAgICAgQ3JlYXRlIGFuIGVudHJ5IGluIHRoZSBhdHRhY2ht
ZW50IGlkZW50aWZpZXIgdG8gQVBJOjpBdHRhY2htZW50IG1hcCB3aGVuIGFuIGF0dGFjaG1lbnQg
aXMgaW5zZXJ0ZWQsIGlmIG9uZSBkb2VzCisgICAgICAgIG5vdCBhbHJlYWR5IGV4aXN0LiBBbiBh
dHRhY2htZW50IG1hcHBpbmcgd291bGQgbm90IGV4aXN0IG9ubHkgaW4gdGhlIGNhc2Ugd2hlcmUg
YW4gYXR0YWNobWVudCBlbGVtZW50IHdhcworICAgICAgICBjcmVhdGVkIHZpYSBiaW5kaW5nczsg
aW4gdGhpcyBjYXNlLCB0aGUgY2xpZW50IHdvdWxkbid0IGhhdmUgYWNjZXNzIHRvIGFuIE5TRmls
ZVdyYXBwZXIgY29udGFpbmluZyB0aGUgY29udGVudHMKKyAgICAgICAgb2YgdGhlIGZpbGU7IGlu
IHRoZSBmdXR1cmUsIHRoaXMgY2FuIGJlIGltcHJvdmVkIGJ5IGFkZGluZyBhIG1lY2hhbmlzbSB0
byByZWdpc3RlciBhbiBhdHRhY2htZW50IGVsZW1lbnQgd2l0aAorICAgICAgICB0aGlzIGRhdGEs
IGJ1dCBmb3Igbm93LCB0aGlzIGlzIHVubmVjZXNzYXJ5IGZvciBNYWlsJ3MgcHVycG9zZXMuCisK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZW1vdmVBdHRhY2htZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjplbnN1cmVBdHRhY2htZW50KToKKworICAgICAg
ICBFbnN1cmVzIGFuIGF0dGFjaG1lbnQgaWRlbnRpZmllciB0byBBUEk6OkF0dGFjaG1lbnQgbWFw
cGluZy4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dGFjaG1lbnRJbmZvQ2Fs
bGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RB
dHRhY2htZW50SW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2V0QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfc3RhcnREcmFnOml0ZW06XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
X3ByZXBhcmVUb0RyYWdQcm9taXNlZEF0dGFjaG1lbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3ByZXBhcmVUb0RyYWdQcm9taXNlZEJsb2I6XSk6IERlbGV0ZWQuCisKKyAgICAgICAg
UmVpbXBsZW1lbnQgdGhlIHdheSBwcm9taXNlZCBhdHRhY2htZW50IGRhdGEgaXMgZGVsaXZlcmVk
IHRvIHRoZSBkZXN0aW5hdGlvbiB3aGVuIGFuIGF0dGFjaG1lbnQgZWxlbWVudCBpcworICAgICAg
ICBkcmFnZ2VkLiBJbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhlIGJsb2IgVVJMIG9mIHRoZSBGaWxl
IG9uIHRoZSBhdHRhY2htZW50IGVsZW1lbnQsIGZpcnN0IHRyeSB0byBmaW5kIGFuIEFQSQorICAg
ICAgICBBdHRhY2htZW50IG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoZSB1bmlxdWUgaWRlbnRp
ZmllciBvZiB0aGUgZHJhZ2dlZCBhdHRhY2htZW50LCBhbmQgdXNlIGl0cyBOU0ZpbGVXcmFwcGVy
IHRvCisgICAgICAgIGRlbGl2ZXIgcHJvbWlzZWQgZGF0YSB0byB0aGUgZGVzdGluYXRpb24gZmls
ZSBVUkwuIFRoZSBibG9iIFVSTCBjb2RlcGF0aCBzdGlsbCBleGlzdHMgaW4gdGhlIGNhc2Ugd2hl
cmUgc2NyaXB0CisgICAgICAgIHNwZWNpZmllcyB0aGUgZHJhZ2dlZCBhdHRhY2htZW50J3MgRmls
ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpjbG9uZUF0dGFjaG1lbnREYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6aW5zZXJ0QXR0YWNobWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0
ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVz
dEF0dGFjaG1lbnRJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0
QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKworICAgICAgICBNb3JlIHJlbmFtaW5nIGFuZCBJUEMgbWVzc2Fn
ZSBwbHVtYmluZy4KKwogMjAxOC0wOC0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IEdUSy9XUEUgY29va2llIEFQ
SSB0ZXN0cyBhZnRlciByMjM0Mzk2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU5OTZmZWQ0N2M4OTgxMGFlYjhlOTQ1NjIyMWJj
OGQ2Y2E0NTAzMTQuLjIyNTIxMThmODgwYjExZjJmMTg2OTM3YTYyZmU2ZjA2OGUwOWIzMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQ4MTcsNyArNDgxNyw3IEBACiAJCUY0Nzg3NTU0MTk5ODNBRkYwMDI0QTI4NyAvKiBTY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQ3ODc1NTIxOTk4M0FGRjAwMjRBMjg3IC8qIFNjcm9sbFNuYXBBbmltYXRv
clN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRjQ3QTA5RDEyMEE5M0E5NzAwMjQwRkFFIC8qIERpc2FibGVkQWRhcHRhdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0N0EwOUNGMjBBOTM5
RjYwMDI0MEZBRSAvKiBEaXNhYmxlZEFkYXB0YXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ3QTVFM0UxOTVCOEM4QTAwNDgzMTAwIC8q
IFN0eWxlU2Nyb2xsU25hcFBvaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQ3QTVFM0IxOTVCOEM4QTAwNDgzMTAwIC8qIFN0eWxlU2Nyb2xsU25h
cFBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCUY0N0E2MzNEMUZGNkZENTAwMDgxQjNDQyAvKiBQcm9taXNlZEJsb2JJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDdBNjMzQzFGRjZGRDUw
MDA4MUIzQ0MgLyogUHJvbWlzZWRCbG9iSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0N0E2MzNEMUZGNkZENTAwMDgxQjNDQyAvKiBQcm9t
aXNlZEF0dGFjaG1lbnRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDdBNjMzQzFGRjZGRDUwMDA4MUIzQ0MgLyogUHJvbWlzZWRBdHRhY2htZW50
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUY0ODIyMzEwMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4MjIzMEUx
RTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gKi87IH07CiAJ
CUY0ODIyMzExMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgyMjMwRjFF
Mzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0ODIyMzEzMUUzODZFMjQw
MDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzEyMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFj
dFBhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTQ1NjYsNyArMTQ1NjYsNyBAQAogCQlGNDdBMDlENDIwQTlERDA0MDAyNDBGQUUg
LyogRGlzYWJsZWRBZGFwdGF0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNhYmxlZEFk
YXB0YXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ3QTVFM0ExOTVC
OEM4QTAwNDgzMTAwIC8qIFN0eWxlU2Nyb2xsU25hcFBvaW50cy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZVNjcm9sbFNuYXBQb2ludHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNDdBNUUzQjE5NUI4QzhBMDA0ODMxMDAgLyogU3R5bGVT
Y3JvbGxTbmFwUG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxl
U2Nyb2xsU25hcFBvaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNDdBNjMz
QzFGRjZGRDUwMDA4MUIzQ0MgLyogUHJvbWlzZWRCbG9iSW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cm9taXNlZEJsb2JJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0N0E2MzND
MUZGNkZENTAwMDgxQjNDQyAvKiBQcm9taXNlZEF0dGFjaG1lbnRJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFByb21pc2VkQXR0YWNobWVudEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjQ4MjIzMEUxRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgyMjMwRjFF
Mzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0ODIyMzEyMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0
cmFjdFBhc3RlYm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJh
Y3RQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDYwMiw3ICsy
NDYwMiw3IEBACiAJCQkJQkMzQkUxMkEwRTk4MDkyRjAwODM1NTg4IC8qIFBvcHVwTWVudVN0eWxl
LmggKi8sCiAJCQkJNTFGNjQ1RDIxRkVDREJDODAwQjU0REVEIC8qIFByb2Nlc3MuY3BwICovLAog
CQkJCTUxRjY0NUQzMUZFQ0RCQzgwMEI1NERFRCAvKiBQcm9jZXNzLmggKi8sCi0JCQkJRjQ3QTYz
M0MxRkY2RkQ1MDAwODFCM0NDIC8qIFByb21pc2VkQmxvYkluZm8uaCAqLywKKwkJCQlGNDdBNjMz
QzFGRjZGRDUwMDA4MUIzQ0MgLyogUHJvbWlzZWRBdHRhY2htZW50SW5mby5oICovLAogCQkJCTAw
ODFGRUZEMTZCMEEyNDQwMDhBQUE3QSAvKiBQdWJsaWNTdWZmaXguaCAqLywKIAkJCQk1Qzk3QTMz
NjFGNUY3QTY1MDAxMDUyMDcgLyogUmVjdEVkZ2VzLmggKi8sCiAJCQkJQ0ExNjM1REMyMDcyRTc2
OTAwRTdEMkNFIC8qIFJlZmVycmVyUG9saWN5LmNwcCAqLywKQEAgLTI5ODUwLDcgKzI5ODUwLDcg
QEAKIAkJCQlBNzE1RTY1MzEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJBNjgyNDBCNUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jl
c3NUcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNBREQ3OTE4ODBEOTFDMDBEOEI3MUQg
LyogUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlGNDdBNjMzRDFG
RjZGRDUwMDA4MUIzQ0MgLyogUHJvbWlzZWRCbG9iSW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RjQ3QTYzM0QxRkY2RkQ1MDAwODFCM0NDIC8qIFByb21pc2VkQXR0YWNobWVudEluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1NzhGNDM1MURFMDBFRUIwMDNERkM2QSAvKiBQcm9taXNlUmVqZWN0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QkJFRDBGMTRGNDAyNUQwMDNGMEI5OCAv
KiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
QkFBRTU4MTk4MEQxREQwMDVERkU3MSAvKiBQcm90ZWN0aW9uU3BhY2UuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMzliNTM0Mjg1OGE1N2U0NTVmMmNlYTg4OTJk
YmRhYmYyODQyY2RiMy4uZGExYWNmNTQ5MzZmNjY2NGQ1MjZmOTM1MDIxOGUzNGI1MjliOWU3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03OTQ0LDE1ICs3OTQ0LDIxIEBAIFZlY3RvcjxS
ZWZQdHI8V2ViQW5pbWF0aW9uPj4gRG9jdW1lbnQ6OmdldEFuaW1hdGlvbnMoKQogdm9pZCBEb2N1
bWVudDo6ZGlkSW5zZXJ0QXR0YWNobWVudEVsZW1lbnQoSFRNTEF0dGFjaG1lbnRFbGVtZW50JiBh
dHRhY2htZW50KQogewogICAgIGF1dG8gaWRlbnRpZmllciA9IGF0dGFjaG1lbnQudW5pcXVlSWRl
bnRpZmllcigpOwotICAgIGlmIChpZGVudGlmaWVyLmlzRW1wdHkoKSB8fCBtX2F0dGFjaG1lbnRJ
ZGVudGlmaWVyVG9FbGVtZW50TWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpKSB7CisgICAgYXV0byBw
cmV2aW91c0lkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIGJvb2wgcHJldmlvdXNJZGVudGlm
aWVySXNOb3RVbmlxdWUgPSAhcHJldmlvdXNJZGVudGlmaWVyLmlzRW1wdHkoKSAmJiBtX2F0dGFj
aG1lbnRJZGVudGlmaWVyVG9FbGVtZW50TWFwLmNvbnRhaW5zKHByZXZpb3VzSWRlbnRpZmllcik7
CisgICAgaWYgKGlkZW50aWZpZXIuaXNFbXB0eSgpIHx8IHByZXZpb3VzSWRlbnRpZmllcklzTm90
VW5pcXVlKSB7CisgICAgICAgIHByZXZpb3VzSWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAg
ICAgIGlkZW50aWZpZXIgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CiAgICAgICAgIGF0
dGFjaG1lbnQuc2V0VW5pcXVlSWRlbnRpZmllcihpZGVudGlmaWVyKTsKICAgICB9CiAKICAgICBt
X2F0dGFjaG1lbnRJZGVudGlmaWVyVG9FbGVtZW50TWFwLnNldChpZGVudGlmaWVyLCBhdHRhY2ht
ZW50KTsKIAotICAgIGlmIChmcmFtZSgpKQotICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS5kaWRJ
bnNlcnRBdHRhY2htZW50RWxlbWVudChhdHRhY2htZW50KTsKKyAgICBpZiAoYXV0byogZnJhbWUg
PSB0aGlzLT5mcmFtZSgpKSB7CisgICAgICAgIGlmIChwcmV2aW91c0lkZW50aWZpZXJJc05vdFVu
aXF1ZSkKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jbG9uZUF0dGFjaG1lbnREYXRhKHBy
ZXZpb3VzSWRlbnRpZmllciwgaWRlbnRpZmllcik7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5k
aWRJbnNlcnRBdHRhY2htZW50RWxlbWVudChhdHRhY2htZW50KTsKKyAgICB9CiB9CiAKIHZvaWQg
RG9jdW1lbnQ6OmRpZFJlbW92ZUF0dGFjaG1lbnRFbGVtZW50KEhUTUxBdHRhY2htZW50RWxlbWVu
dCYgYXR0YWNobWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAxYjIwZDc4MTk5
YzBiMTdkNjc0ZGNlMGU4NTFmMzdiNjVlYWIzMjZhLi5jNGEyZjdiMTY1NDM1YTYzYjlkNGVkNmZj
Mzk2ZjEzMDFmNjBlYWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zODE3LDYg
KzM4MTcsMjQgQEAgdm9pZCBFZGl0b3I6OnNjaGVkdWxlRWRpdG9yVUlVcGRhdGUoKQogCiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAordm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNo
bWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGRhdGEpCit7CisgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQor
ICAgICAgICBjbGllbnQtPnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoaWRlbnRpZmllciwg
Y29udGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBXVEZNb3ZlKGRhdGEpKTsKK30KKwordm9p
ZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQoreworICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAgICAgY2xp
ZW50LT5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBl
LCBmaWxlUGF0aCk7Cit9CisKK3ZvaWQgRWRpdG9yOjpjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0
IFN0cmluZyYgZnJvbUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9JZGVudGlmaWVyKQorewor
ICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAgICAgICAgY2xpZW50LT5j
bG9uZUF0dGFjaG1lbnREYXRhKGZyb21JZGVudGlmaWVyLCB0b0lkZW50aWZpZXIpOworfQorCiB2
b2lkIEVkaXRvcjo6ZGlkSW5zZXJ0QXR0YWNobWVudEVsZW1lbnQoSFRNTEF0dGFjaG1lbnRFbGVt
ZW50JiBhdHRhY2htZW50KQogewogICAgIGF1dG8gaWRlbnRpZmllciA9IGF0dGFjaG1lbnQudW5p
cXVlSWRlbnRpZmllcigpOwpAQCAtMzg2MSwyOCArMzg3OSwxMSBAQCB2b2lkIEVkaXRvcjo6bm90
aWZ5Q2xpZW50T2ZBdHRhY2htZW50VXBkYXRlcygpCiAgICAgfQogfQogCi12b2lkIEVkaXRvcjo6
aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1l
bnREaXNwbGF5T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiBmaWxlcGF0aCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlKQotewot
ICAgIGlmICghY29udGVudFR5cGUpCi0gICAgICAgIGNvbnRlbnRUeXBlID0gRmlsZTo6Y29udGVu
dFR5cGVGb3JGaWxlKGZpbGVuYW1lKTsKLSAgICBpbnNlcnRBdHRhY2htZW50RnJvbUZpbGUoaWRl
bnRpZmllciwgb3B0aW9ucywgZmlsZW5hbWUsICpjb250ZW50VHlwZSwgRmlsZTo6Y3JlYXRlKGZp
bGVwYXRoKSk7Ci19Ci0KLXZvaWQgRWRpdG9yOjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgQXR0YWNobWVudERpc3BsYXlPcHRpb25zJiBvcHRpb25zLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSkKLXsKLSAgICBpZiAoIWNvbnRlbnRUeXBlKQotICAg
ICAgICBjb250ZW50VHlwZSA9IEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxlbmFtZSk7Ci0g
ICAgaW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGlkZW50aWZpZXIsIG9wdGlvbnMsIGZpbGVuYW1l
LCAqY29udGVudFR5cGUsIEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoV1RGTW92ZShkYXRhKSwg
KmNvbnRlbnRUeXBlKSwgZmlsZW5hbWUpKTsKLX0KLQotdm9pZCBFZGl0b3I6Omluc2VydEF0dGFj
aG1lbnRGcm9tRmlsZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnRE
aXNwbGF5T3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIFJlZjxGaWxlPiYmIGZpbGUpCit2b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVu
dChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9u
cyYsIHVpbnQ2NF90IGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4mJiBleHBsaWNpdENvbnRlbnRUeXBlKQogewogICAgIGF1dG8gYXR0YWNobWVu
dCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRh
ZywgZG9jdW1lbnQoKSk7Ci0gICAgYXR0YWNobWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6
dGl0bGVBdHRyLCBmaWxlbmFtZSk7Ci0gICAgYXR0YWNobWVudC0+c2V0QXR0cmlidXRlKEhUTUxO
YW1lczo6c3VidGl0bGVBdHRyLCBmaWxlU2l6ZURlc2NyaXB0aW9uKGZpbGUtPnNpemUoKSkpOwot
ICAgIGF0dGFjaG1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnR5cGVBdHRyLCBjb250ZW50
VHlwZSk7CiAgICAgYXR0YWNobWVudC0+c2V0VW5pcXVlSWRlbnRpZmllcihpZGVudGlmaWVyKTsK
LSAgICBhdHRhY2htZW50LT5zZXRGaWxlKFdURk1vdmUoZmlsZSkpOworICAgIGF0dGFjaG1lbnQt
PnVwZGF0ZUF0dHJpYnV0ZXMoZmlsZVNpemUsIFdURk1vdmUoZXhwbGljaXRDb250ZW50VHlwZSks
IGZpbGVOYW1lKTsKIAogICAgIGF1dG8gZnJhZ21lbnRUb0luc2VydCA9IGRvY3VtZW50KCkuY3Jl
YXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgIGZyYWdtZW50VG9JbnNlcnQtPmFwcGVuZENoaWxk
KGF0dGFjaG1lbnQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggOGFkNzg4MjBi
MjI1MWZkZDBjZmU2ZTNlMzRiMDM5MDNiYzg0MWIzMi4uZTJiY2M5MWE4ZDM2MzUzMTZlZTZhMmQ0
NDBhNjVhMGM5NDlkNmU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01MDMsOCArNTAz
LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oKSBj
b25zdCB7IHJldHVybiBtX2lzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm87IH0KIAogI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnRB
dHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgQXR0YWNobWVudERpc3Bs
YXlPcHRpb25zJiwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlcGF0
aCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlID0gc3RkOjpudWxsb3B0KTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmLCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBj
b250ZW50VHlwZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNl
cnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgQXR0YWNobWVudERp
c3BsYXlPcHRpb25zJiwgdWludDY0X3QgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIGV4cGxpY2l0Q29udGVudFR5cGUgPSBzdGQ6Om51bGxv
cHQpOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIHByZWZl
cnJlZEZpbGVOYW1lICovLCBSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIHJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiAvKiBjb250
ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBmaWxlUGF0aCAqLyk7CisgICAgdm9pZCBjbG9u
ZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgZnJvbUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgdG9JZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEluc2VydEF0dGFjaG1lbnRFbGVtZW50KEhU
TUxBdHRhY2htZW50RWxlbWVudCYpOwogICAgIHZvaWQgZGlkUmVtb3ZlQXR0YWNobWVudEVsZW1l
bnQoSFRNTEF0dGFjaG1lbnRFbGVtZW50Jik7CiAKQEAgLTUxNiwxMCArNTE4LDYgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsKIAotI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdm9pZCBpbnNlcnRBdHRhY2htZW50RnJvbUZpbGUo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnMm
LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8
RmlsZT4mJik7Ci0jZW5kaWYKLQogICAgIGJvb2wgY2FuRGVsZXRlUmFuZ2UoUmFuZ2UqKSBjb25z
dDsKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsK
ICAgICB2b2lkIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCmluZGV4IDFjYjJiMWNlNmFkY2E0NjU2MTE3Y2RhMjc0YjA4MTFkMzE4OGI0NTkuLmIw
Y2I3OTYyNzgzOGMyMjZmMTVmNzI3YzRkOWRhMGU3YTA3OTc1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0z
NSw2ICszNSw3IEBACiAjaW1wb3J0ICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW1wb3J0ICJEb2N1
bWVudExvYWRlci5oIgogI2ltcG9ydCAiRmlsZS5oIgorI2ltcG9ydCAiRmlsZVN5c3RlbS5oIgog
I2ltcG9ydCAiRnJhbWUuaCIKICNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCiAjaW1wb3J0ICJGcmFt
ZUxvYWRlckNsaWVudC5oIgpAQCAtMjA0LDExICsyMDUsMzAgQEAgc3RhdGljIGJvb2wgc2hvdWxk
UmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKCkKICNlbmRpZgogfQogCi1zdGF0aWMg
UmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KERv
Y3VtZW50JiBkb2N1bWVudCwgUmVmPEJsb2I+JiYgYmxvYikKKyNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQorCitzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0
YShjb25zdCBGcmFtZSYgZnJhbWUpCit7CisgICAgaWYgKGF1dG8qIGNsaWVudCA9IGZyYW1lLmVk
aXRvcigpLmNsaWVudCgpKQorICAgICAgICByZXR1cm4gY2xpZW50LT5zdXBwb3J0c0NsaWVudFNp
ZGVBdHRhY2htZW50RGF0YSgpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYKKwor
c3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNo
bWVudChGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1l
bnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKLSAgICBhdHRh
Y2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShibG9iLCBBdG9taWNTdHJpbmcoImltYWdlIikp
LCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOwor
ICAgIC8vIEZJWE1FOiBUaGlzIGZhbGxiYWNrIGltYWdlIG5hbWUgbmVlZHMgdG8gYmUgYSBsb2Nh
bGl6ZWQgc3RyaW5nLgorICAgIFN0cmluZyBkZWZhdWx0SW1hZ2VBdHRhY2htZW50TmFtZSB7ICJp
bWFnZSJfcyB9OworCisgICAgaWYgKHN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGZy
YW1lKSkgeworICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKGJ1ZmZlci0+c2l6
ZSgpLCBjb250ZW50VHlwZSwgZGVmYXVsdEltYWdlQXR0YWNobWVudE5hbWUpOworICAgICAgICBm
cmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGF0dGFjaG1lbnQtPmVu
c3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgY29udGVudFR5cGUsIGRlZmF1bHRJbWFnZUF0dGFjaG1l
bnROYW1lLCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0gZWxzZQorICAgICAgICBhdHRhY2htZW50
LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgpLCBjb250ZW50
VHlwZSksIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKIAogICAgIGF1dG8gZnJhZ21lbnQgPSBk
b2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgZnJhZ21lbnQtPmFwcGVuZENo
aWxkKGF0dGFjaG1lbnQpOwpAQCAtMjIwLDExICsyNDAsMTMgQEAgc3RhdGljIFJlZjxEb2N1bWVu
dEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChEb2N1bWVudCYgZG9j
dW1lbnQKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0
YWNobWVudHMoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0IFZlY3RvcjxSZWY8QXJj
aGl2ZVJlc291cmNlPj4mIHN1YnJlc291cmNlcykKK3N0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyYWdt
ZW50LCBjb25zdCBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiBzdWJyZXNvdXJjZXMpCiB7
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBzdHJ1Y3QgQXR0YWNobWVudFJl
cGxhY2VtZW50SW5mbyB7Ci0gICAgICAgIFJlZjxGaWxlPiBmaWxlOworICAgICAgICBTdHJpbmcg
ZmlsZU5hbWU7CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZTsKKyAgICAgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IGVsZW1lbnRUb1JlcGxhY2U7CiAg
ICAgfTsKIApAQCAtMjMzLDExICsyNTUsMTEgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250
ZW50V2l0aEF0dGFjaG1lbnRzKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBjb25zdAogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogSGFuZGxlIHJlc291cmNlcyBpbiBzdWJmcmFt
ZSBhcmNoaXZlcy4KLSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmPEJsb2I+PiB1cmxUb0Js
b2JNYXA7Ci0gICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291cmNlPiYgc3VicmVzb3VyY2Ug
OiBzdWJyZXNvdXJjZXMpIHsKKyAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmPEFyY2hpdmVS
ZXNvdXJjZT4+IHVybFRvUmVzb3VyY2VNYXA7CisgICAgZm9yIChhdXRvJiBzdWJyZXNvdXJjZSA6
IHN1YnJlc291cmNlcykgewogICAgICAgICBhdXRvJiB1cmwgPSBzdWJyZXNvdXJjZS0+dXJsKCk7
CiAgICAgICAgIGlmIChzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwodXJsKSkKLSAgICAgICAg
ICAgIHVybFRvQmxvYk1hcC5zZXQodXJsLnN0cmluZygpLCBCbG9iOjpjcmVhdGUoc3VicmVzb3Vy
Y2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpKTsKKyAgICAgICAgICAgIHVybFRv
UmVzb3VyY2VNYXAuc2V0KHVybC5zdHJpbmcoKSwgc3VicmVzb3VyY2UuY29weVJlZigpKTsKICAg
ICB9CiAKICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBlbGVtZW50c1RvUmVtb3ZlOwpAQCAtMjQ3
LDE1ICsyNjksMTUgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1l
bnRzKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBjb25zdAogICAgICAgICBpZiAocmVzb3Vy
Y2VVUkxTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
YXV0byBibG9iID0gdXJsVG9CbG9iTWFwLmdldChyZXNvdXJjZVVSTFN0cmluZyk7Ci0gICAgICAg
IGlmICghYmxvYikKKyAgICAgICAgYXV0byByZXNvdXJjZSA9IHVybFRvUmVzb3VyY2VNYXAuZmlu
ZChyZXNvdXJjZVVSTFN0cmluZyk7CisgICAgICAgIGlmIChyZXNvdXJjZSA9PSB1cmxUb1Jlc291
cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byB0aXRs
ZSA9IFVSTFBhcnNlciB7IHJlc291cmNlVVJMU3RyaW5nIH0ucmVzdWx0KCkubGFzdFBhdGhDb21w
b25lbnQoKTsKLSAgICAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRpdGxl
ID0gQXRvbWljU3RyaW5nKCJtZWRpYSIpOworICAgICAgICBhdXRvIG5hbWUgPSBVUkxQYXJzZXIg
eyByZXNvdXJjZVVSTFN0cmluZyB9LnJlc3VsdCgpLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAg
ICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG5hbWUgPSBBdG9taWNTdHJpbmco
Im1lZGlhIik7CiAKLSAgICAgICAgYXR0YWNobWVudFJlcGxhY2VtZW50SW5mby5hcHBlbmQoeyBG
aWxlOjpjcmVhdGUoKmJsb2IsIHRpdGxlKSwgaW1hZ2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRS
ZXBsYWNlbWVudEluZm8uYXBwZW5kKHsgbmFtZSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgp
LCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChh
dXRvJiBvYmplY3QgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21l
bnQpKSB7CkBAIC0yNjUsMjggKzI4NywzMCBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRl
bnRXaXRoQXR0YWNobWVudHMoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYmxvYiA9IHVybFRv
QmxvYk1hcC5nZXQocmVzb3VyY2VVUkxTdHJpbmcpOwotICAgICAgICBpZiAoIWJsb2IpIHsKLSAg
ICAgICAgICAgIGVsZW1lbnRzVG9SZW1vdmUuYXBwZW5kKG9iamVjdCk7CisgICAgICAgIGF1dG8g
cmVzb3VyY2UgPSB1cmxUb1Jlc291cmNlTWFwLmZpbmQocmVzb3VyY2VVUkxTdHJpbmcpOworICAg
ICAgICBpZiAocmVzb3VyY2UgPT0gdXJsVG9SZXNvdXJjZU1hcC5lbmQoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICB9CiAKLSAgICAgICAgYXV0byB0aXRsZSA9IFVSTFBhcnNlciB7
IHJlc291cmNlVVJMU3RyaW5nIH0ucmVzdWx0KCkubGFzdFBhdGhDb21wb25lbnQoKTsKLSAgICAg
ICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRpdGxlID0gQXRvbWljU3RyaW5n
KCJmaWxlIik7CisgICAgICAgIGF1dG8gbmFtZSA9IFVSTFBhcnNlciB7IHJlc291cmNlVVJMU3Ry
aW5nIH0ucmVzdWx0KCkubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQorICAgICAgICAgICAgbmFtZSA9IEF0b21pY1N0cmluZygiZmlsZSIpOwogCi0gICAg
ICAgIGF0dGFjaG1lbnRSZXBsYWNlbWVudEluZm8uYXBwZW5kKHsgRmlsZTo6Y3JlYXRlKCpibG9i
LCB0aXRsZSksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVudFJlcGxhY2VtZW50SW5mby5h
cHBlbmQoeyBuYW1lLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1
ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0
YWNobWVudFJlcGxhY2VtZW50SW5mbykgewotICAgICAgICBhdXRvIGZpbGUgPSBXVEZNb3ZlKGlu
Zm8uZmlsZSk7CiAgICAgICAgIGF1dG8gZWxlbWVudFRvUmVwbGFjZSA9IFdURk1vdmUoaW5mby5l
bGVtZW50VG9SZXBsYWNlKTsKICAgICAgICAgYXV0byBwYXJlbnQgPSBtYWtlUmVmUHRyKGVsZW1l
bnRUb1JlcGxhY2UtPnBhcmVudE5vZGUoKSk7CiAgICAgICAgIGlmICghcGFyZW50KQogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1l
bnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBmcmFnbWVudC5kb2N1
bWVudCgpKTsKLSAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShXVEZNb3ZlKGZpbGUpLCBIVE1M
QXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAg
ICBpZiAoc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7CisgICAgICAg
ICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKGluZm8uZGF0YS0+c2l6ZSgpLCBpbmZv
LmNvbnRlbnRUeXBlLCBpbmZvLmZpbGVOYW1lKTsKKyAgICAgICAgICAgIGZyYW1lLmVkaXRvcigp
LnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRl
bnRpZmllcigpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpLCBXVEZNb3ZlKGluZm8uZmlsZU5h
bWUpLCBXVEZNb3ZlKGluZm8uZGF0YSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGF0
dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShpbmZvLmRhdGEsIGlu
Zm8uY29udGVudFR5cGUpLCBpbmZvLmZpbGVOYW1lKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpV
cGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKKwogICAgICAgICBwYXJlbnQtPnJlcGxhY2VD
aGlsZChhdHRhY2htZW50LCBlbGVtZW50VG9SZXBsYWNlKTsKICAgICB9CiAKQEAgLTM0OSw3ICsz
NzMsNyBAQCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNv
dXJjZXMoRnJhbWUmIGZyYW1lLCBOU0F0dHJpYnV0ZQogICAgIHJlcGxhY2VTdWJyZXNvdXJjZVVS
THNXaXRoVVJMc0Zyb21DbGllbnQoKmZyYWdtZW50QW5kUmVzb3VyY2VzLmZyYWdtZW50LCBmcmFn
bWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMsIHVucmVwbGFjZWRSZXNvdXJjZXMpOwogCiAgICAg
aWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cygpKSB7Ci0gICAgICAg
IHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cygqZnJhZ21lbnRBbmRSZXNvdXJjZXMu
ZnJhZ21lbnQsIHVucmVwbGFjZWRSZXNvdXJjZXMpOworICAgICAgICByZXBsYWNlUmljaENvbnRl
bnRXaXRoQXR0YWNobWVudHMoZnJhbWUsICpmcmFnbWVudEFuZFJlc291cmNlcy5mcmFnbWVudCwg
dW5yZXBsYWNlZFJlc291cmNlcyk7CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKGZyYWdtZW50QW5k
UmVzb3VyY2VzLmZyYWdtZW50KTsKICAgICB9CiAKQEAgLTM4Nyw3ICs0MTEsNyBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShT
aGFyZWRCdWZmZXImIGJ1ZgogICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpm
cm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgp
LnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VO
b25OdWxsKCkgfTsKIH0KIAotc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZl
KERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZlJiBtYXJrdXBB
bmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0ZDo6ZnVuY3Rp
b248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQorc3RhdGljIFN0
cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRl
c3RpbmF0aW9uRG9jdW1lbnQsIE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1T
T0xpc3RRdWlya3MgbXNvTGlzdFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0
IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCiB7CiAgICAgYXV0byBwYWdlID0gY3Jl
YXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KCk7CiAgICAgRG9jdW1lbnQqIHN0YWdpbmdE
b2N1bWVudCA9IHBhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCk7CkBAIC0zOTgsNyArNDIyLDcg
QEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKERvY3VtZW50JiBkZXN0
aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmQKICAgICByZXBsYWNlU3VicmVzb3VyY2VVUkxzV2l0
aFVSTHNGcm9tQ2xpZW50KGZyYWdtZW50LCBtYXJrdXBBbmRBcmNoaXZlLmFyY2hpdmUtPnN1YnJl
c291cmNlcygpLCB1bnJlcGxhY2VkUmVzb3VyY2VzKTsKIAogICAgIGlmIChzaG91bGRSZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoKSkgewotICAgICAgICByZXBsYWNlUmljaENvbnRl
bnRXaXRoQXR0YWNobWVudHMoZnJhZ21lbnQsIHVucmVwbGFjZWRSZXNvdXJjZXMpOworICAgICAg
ICByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoZnJhbWUsIGZyYWdtZW50LCB1bnJl
cGxhY2VkUmVzb3VyY2VzKTsKICAgICAgICAgcmV0dXJuIHNhbml0aXplZE1hcmt1cEZvckZyYWdt
ZW50SW5Eb2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1bWVudCwgbXNvTGlz
dFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOwogICAgIH0KIApAQCAtNDI4LDcgKzQ1
Miw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShEb2N1bWVudCYg
ZGVzdGluYXRpb25Eb2N1bWVudCwgTWFya3VwQW5kCiAKICAgICAgICAgTWFya3VwQW5kQXJjaGl2
ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3Vy
Y2UtPmRhdGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwK
ICAgICAgICAgICAgIHN1YmZyYW1lTWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZy
YW1lQXJjaGl2ZS5jb3B5UmVmKCkgfTsKLSAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNh
bml0aXplTWFya3VwV2l0aEFyY2hpdmUoZGVzdGluYXRpb25Eb2N1bWVudCwgc3ViZnJhbWVDb250
ZW50LCBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01JTUVUeXBlQXNIVE1MKTsKKyAg
ICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJh
bWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1aXJrczo6
RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKICAgICAgICAgQ1N0cmluZyB1dGY4
ID0gc3ViZnJhbWVNYXJrdXAudXRmOCgpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gYmxvYkJ1
ZmZlcjsKQEAgLTQ2OSw3ICs0OTMsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJB
cmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICBTdHJpbmcgc2FuaXRpemVkTWFya3VwID0gc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2
ZSgqZnJhbWUuZG9jdW1lbnQoKSwgKnJlc3VsdCwgbXNvTGlzdFF1aXJrc0Zvck1hcmt1cCgpLCBb
Jl0gKGNvbnN0IFN0cmluZyYgdHlwZSkgeworICAgIFN0cmluZyBzYW5pdGl6ZWRNYXJrdXAgPSBz
YW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCAqZnJhbWUuZG9jdW1lbnQoKSwgKnJlc3Vs
dCwgbXNvTGlzdFF1aXJrc0Zvck1hcmt1cCgpLCBbJl0gKGNvbnN0IFN0cmluZyYgdHlwZSkgewog
ICAgICAgICByZXR1cm4gZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2FuU2hvd01JTUVUeXBlQXNI
VE1MKHR5cGUpOwogICAgIH0pOwogICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFy
a3VwKCpmcmFtZS5kb2N1bWVudCgpLCBzYW5pdGl6ZWRNYXJrdXAsIGJsYW5rVVJMKCksIERpc2Fs
bG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCk7CkBAIC00OTYsNyArNTIwLDcgQEAgYm9vbCBX
ZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgbWFya3VwID0gc2FuaXRpemVN
YXJrdXBXaXRoQXJjaGl2ZSgqZnJhbWUuZG9jdW1lbnQoKSwgKnJlc3VsdCwgbXNvTGlzdFF1aXJr
c0Zvck1hcmt1cCgpLCBbJl0gKGNvbnN0IFN0cmluZyYgdHlwZSkgeworICAgIG1hcmt1cCA9IHNh
bml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJhbWUsICpmcmFtZS5kb2N1bWVudCgpLCAqcmVzdWx0
LCBtc29MaXN0UXVpcmtzRm9yTWFya3VwKCksIFsmXSAoY29uc3QgU3RyaW5nJiB0eXBlKSB7CiAg
ICAgICAgIHJldHVybiBmcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5TaG93TUlNRVR5cGVBc0hU
TUwodHlwZSk7CiAgICAgfSk7CiAKQEAgLTYzNSwxMSArNjU5LDEwIEBAIGJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIHR5cGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGF1dG8gYmxvYiA9
IEJsb2I6OmNyZWF0ZShidWZmZXIuZ2V0KCksIHR5cGUpOwogICAgIGlmIChzaG91bGRSZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoKSkKLSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRl
RnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoZG9jdW1lbnQsIFdURk1vdmUoYmxvYikpKTsKKyAg
ICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoZnJhbWUs
IGRvY3VtZW50LCBXVEZNb3ZlKGJ1ZmZlciksIHR5cGUpKTsKICAgICBlbHNlCi0gICAgICAgIGFk
ZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6
Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBibG9iKSkpOworICAgICAgICBhZGRGcmFnbWVudChj
cmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgdHlwZSkpKSk7CiAKICAg
ICByZXR1cm4gZnJhZ21lbnQ7CiB9CkBAIC02NTcsNyArNjgwLDE1IEBAIGJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNobWVudEVs
ZW1lbnRFbmFibGVkKCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBwYXRoIDogcGF0aHMpIHsKICAg
ICAgICAgICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRl
KEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwotICAgICAgICAgICAgYXR0YWNo
bWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUocGF0aCksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6
VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CisgICAgICAgICAgICBpZiAoc3VwcG9ydHND
bGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7CisgICAgICAgICAgICAgICAgbG9uZyBs
b25nIGZpbGVTaXplIHsgMCB9OworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmdldEZpbGVT
aXplKHBhdGgsIGZpbGVTaXplKTsKKyAgICAgICAgICAgICAgICBhdXRvIGNvbnRlbnRUeXBlID0g
RmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKHBhdGgpOworICAgICAgICAgICAgICAgIGF0dGFjaG1l
bnQtPnVwZGF0ZUF0dHJpYnV0ZXMoZmlsZVNpemUsIGNvbnRlbnRUeXBlLCBGaWxlU3lzdGVtOjpw
YXRoR2V0RmlsZU5hbWUocGF0aCkpOworICAgICAgICAgICAgICAgIGZyYW1lLmVkaXRvcigpLnJl
Z2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRlbnRp
ZmllcigpLCBjb250ZW50VHlwZSwgcGF0aCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShwYXRoKSwgSFRNTEF0dGFj
aG1lbnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKKwogICAgICAgICAg
ICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnQpOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdHRhY2htZW50VHlwZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQXR0YWNobWVudFR5cGVzLmgKaW5kZXggYjUwNzdjYTQwODIyMTc1NTBl
MWJmNWNiNzQyODVjYzRhNDNlZTZjYy4uODliYmNhYmFlOGYzNDEyYTdlZTU5MmJkNjZiMDlhZTg4
Y2UyNDMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdHRhY2htZW50VHlwZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F0dGFjaG1lbnRUeXBlcy5oCkBAIC0zMiw4ICsz
Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwotCiBz
dHJ1Y3QgQXR0YWNobWVudERpc3BsYXlPcHRpb25zIHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXR0YWNobWVudERpc3BsYXlPcHRpb25zPiBkZWNv
ZGUoRGVjb2RlciYpOwpAQCAtNTAsMTMgKzQ4LDYgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
aW5saW5lIHN0ZDo6b3B0aW9uYWw8QXR0YWNobWVudERpc3BsYXlPcHRpb25zPiBBdHRhY2htZW4K
ICAgICByZXR1cm4gQXR0YWNobWVudERpc3BsYXlPcHRpb25zKCk7CiB9CiAKLXN0cnVjdCBBdHRh
Y2htZW50SW5mbyB7Ci0gICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgIFN0cmluZyBuYW1lOwot
ICAgIFN0cmluZyBmaWxlUGF0aDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwotfTsK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cAppbmRleCBlMTcxOWNkMTFmNjY2MDM1YmQ4MDRkYjNiOTdiMmYzMzZhMDBmMzA2Li5lNzQ5NzVm
MDlmZWQwNTM1OGY2OWExM2ZkZmE2NmRhZWI4MTBjYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0zMiwxNCArMzIsMTMgQEAKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZpbGUuaCIK
LSNpbmNsdWRlICJGaWxlUmVhZGVyTG9hZGVyLmgiCi0jaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRl
ckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiUmVuZGVyQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2luY2x1ZGUgPHBhbC9GaWxlU2l6ZUZvcm1hdHRlci5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00NywzNiArNDYsNiBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSFRNTEF0
dGFjaG1lbnRFbGVtZW50KTsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotY2xhc3Mg
QXR0YWNobWVudERhdGFSZWFkZXIgOiBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBdHRhY2htZW50RGF0YVJlYWRlcj4g
Y3JlYXRlKEhUTUxBdHRhY2htZW50RWxlbWVudCYgYXR0YWNobWVudCwgRnVuY3Rpb248dm9pZChS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4mJiBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEF0dGFjaG1lbnREYXRhUmVhZGVyPihhdHRhY2htZW50LCBXVEZN
b3ZlKGNhbGxiYWNrKSk7Ci0gICAgfQotCi0gICAgQXR0YWNobWVudERhdGFSZWFkZXIoSFRNTEF0
dGFjaG1lbnRFbGVtZW50JiBhdHRhY2htZW50LCBGdW5jdGlvbjx2b2lkKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYpPiYmIGNhbGxiYWNrKQotICAgICAgICA6IG1fYXR0YWNobWVudChhdHRhY2htZW50
KQotICAgICAgICAsIG1fY2FsbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYpPj4oV1RGTW92ZShjYWxsYmFjaykpKQotICAgICAgICAsIG1f
bG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8RmlsZVJlYWRlckxvYWRlcj4oRmlsZVJlYWRlckxvYWRl
cjo6UmVhZFR5cGU6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKSkKLSAgICB7Ci0gICAgICAgIG1f
bG9hZGVyLT5zdGFydCgmYXR0YWNobWVudC5kb2N1bWVudCgpLCAqYXR0YWNobWVudC5maWxlKCkp
OwotICAgIH0KLQotICAgIH5BdHRhY2htZW50RGF0YVJlYWRlcigpOwotCi1wcml2YXRlOgotICAg
IHZvaWQgZGlkU3RhcnRMb2FkaW5nKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YSgpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwotICAgIHZv
aWQgZGlkRmFpbChpbnQgZXJyb3IpIGZpbmFsOwotCi0gICAgdm9pZCBpbnZva2VDYWxsYmFja0Fu
ZEZpbmlzaFJlYWRpbmcoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7Ci0KLSAgICBIVE1MQXR0YWNo
bWVudEVsZW1lbnQmIG1fYXR0YWNobWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb248
dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4+IG1fY2FsbGJhY2s7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPEZpbGVSZWFkZXJMb2FkZXI+IG1fbG9hZGVyOwotfTsKLQogSFRNTEF0dGFjaG1lbnRF
bGVtZW50OjpIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CkBAIC0xNDAsNiArMTA5LDEzIEBAIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpy
ZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHR5cGUsIENvbnRhaW5lck5vZGUmCiAgICAg
ICAgIGRvY3VtZW50KCkuZGlkUmVtb3ZlQXR0YWNobWVudEVsZW1lbnQoKnRoaXMpOwogfQogCitT
dHJpbmcgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjplbnN1cmVVbmlxdWVJZGVudGlmaWVyKCkKK3sK
KyAgICBpZiAobV91bmlxdWVJZGVudGlmaWVyLmlzRW1wdHkoKSkKKyAgICAgICAgbV91bmlxdWVJ
ZGVudGlmaWVyID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgIHJldHVybiBtX3Vu
aXF1ZUlkZW50aWZpZXI7Cit9CisKIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQogewogICAgIGlmIChuYW1lID09IHByb2dyZXNzQXR0ciB8fCBuYW1lID09IHN1YnRpdGxl
QXR0ciB8fCBuYW1lID09IHRpdGxlQXR0ciB8fCBuYW1lID09IHR5cGVBdHRyKSB7CkBAIC0xNjgs
NjggKzE0NCwxNyBAQCBTdHJpbmcgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjphdHRhY2htZW50UGF0
aCgpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2Vi
a2l0YXR0YWNobWVudHBhdGhBdHRyKTsKIH0KIAotdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OnVwZGF0ZUZpbGVXaXRoRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiYmIG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdG
aWxlbmFtZSkKLXsKLSAgICBhdXRvIGZpbGVuYW1lID0gbmV3RmlsZW5hbWUgPyAqbmV3RmlsZW5h
bWUgOiBhdHRhY2htZW50VGl0bGUoKTsKLSAgICBhdXRvIGNvbnRlbnRUeXBlID0gbmV3Q29udGVu
dFR5cGUgPyAqbmV3Q29udGVudFR5cGUgOiBGaWxlOjpjb250ZW50VHlwZUZvckZpbGUoZmlsZW5h
bWUpOwotICAgIGF1dG8gZmlsZSA9IEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoV1RGTW92ZShk
YXRhKSwgY29udGVudFR5cGUpLCBmaWxlbmFtZSk7Ci0gICAgc2V0RmlsZShXVEZNb3ZlKGZpbGUp
LCBVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKLX0KLQotdm9pZCBIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OnJlcXVlc3RJbmZvKEZ1bmN0aW9uPHZvaWQoY29uc3QgQXR0YWNobWVudEluZm8m
KT4mJiBjYWxsYmFjaykKLXsKLSAgICBpZiAoIW1fZmlsZSkgewotICAgICAgICBjYWxsYmFjayh7
IH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQXR0YWNobWVudEluZm8gaW5mb1dp
dGhvdXREYXRhIHsgbV9maWxlLT50eXBlKCksIG1fZmlsZS0+bmFtZSgpLCBtX2ZpbGUtPnBhdGgo
KSwgbnVsbHB0ciB9OwotICAgIGlmICghbV9maWxlLT5wYXRoKCkuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIGNhbGxiYWNrKGluZm9XaXRob3V0RGF0YSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBtX2F0dGFjaG1lbnRSZWFkZXJzLmFwcGVuZChBdHRhY2htZW50RGF0YVJlYWRlcjo6Y3Jl
YXRlKCp0aGlzLCBbaW5mb1dpdGhvdXREYXRhID0gV1RGTW92ZShpbmZvV2l0aG91dERhdGEpLCBw
cm90ZWN0ZWRGaWxlID0gbWFrZVJlZigqbV9maWxlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkgewotICAgICAgICBjYWxsYmFjayh7
IGluZm9XaXRob3V0RGF0YS5jb250ZW50VHlwZSwgaW5mb1dpdGhvdXREYXRhLm5hbWUsIGluZm9X
aXRob3V0RGF0YS5maWxlUGF0aCwgV1RGTW92ZShkYXRhKSB9KTsKLSAgICB9KSk7Ci19Ci0KLXZv
aWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpkZXN0cm95UmVhZGVyKEF0dGFjaG1lbnREYXRhUmVh
ZGVyJiBmaW5pc2hlZFJlYWRlcikKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVB
dHRyaWJ1dGVzKHVpbnQ2NF90IGZpbGVTaXplLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdD
b250ZW50VHlwZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYgbmV3RmlsZW5hbWUpCiB7Ci0gICAg
bV9hdHRhY2htZW50UmVhZGVycy5yZW1vdmVGaXJzdE1hdGNoaW5nKFsmXSAoY29uc3Qgc3RkOjp1
bmlxdWVfcHRyPEF0dGFjaG1lbnREYXRhUmVhZGVyPiYgcmVhZGVyKSAtPiBib29sIHsKLSAgICAg
ICAgcmV0dXJuIHJlYWRlci5nZXQoKSA9PSAmZmluaXNoZWRSZWFkZXI7Ci0gICAgfSk7Ci19Cisg
ICAgaWYgKG5ld0ZpbGVuYW1lKQorICAgICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKEhUTUxOYW1lczo6dGl0bGVBdHRyLCAqbmV3RmlsZW5hbWUpOwogCi1BdHRhY2htZW50
RGF0YVJlYWRlcjo6fkF0dGFjaG1lbnREYXRhUmVhZGVyKCkKLXsKLSAgICBpbnZva2VDYWxsYmFj
a0FuZEZpbmlzaFJlYWRpbmcobnVsbHB0cik7Ci19CisgICAgaWYgKG5ld0NvbnRlbnRUeXBlIHx8
IG5ld0ZpbGVuYW1lKQorICAgICAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KEhUTUxOYW1lczo6dHlwZUF0dHIsIG5ld0NvbnRlbnRUeXBlID8gKm5ld0NvbnRlbnRUeXBlIDog
RmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKCpuZXdGaWxlbmFtZSkpOwogCi12b2lkIEF0dGFjaG1l
bnREYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKCkKLXsKLSAgICBpZiAoYXV0byBhcnJheUJ1
ZmZlciA9IG1fbG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKQotICAgICAgICBpbnZva2VDYWxs
YmFja0FuZEZpbmlzaFJlYWRpbmcoU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpKTsKLSAgICBlbHNlCi0gICAgICAgIGludm9rZUNhbGxiYWNrQW5kRmluaXNoUmVhZGluZyhu
dWxscHRyKTsKLSAgICBtX2F0dGFjaG1lbnQuZGVzdHJveVJlYWRlcigqdGhpcyk7Ci19Ci0KLXZv
aWQgQXR0YWNobWVudERhdGFSZWFkZXI6OmRpZEZhaWwoaW50KQotewotICAgIGludm9rZUNhbGxi
YWNrQW5kRmluaXNoUmVhZGluZyhudWxscHRyKTsKLSAgICBtX2F0dGFjaG1lbnQuZGVzdHJveVJl
YWRlcigqdGhpcyk7Ci19Ci0KLXZvaWQgQXR0YWNobWVudERhdGFSZWFkZXI6Omludm9rZUNhbGxi
YWNrQW5kRmluaXNoUmVhZGluZyhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCi17Ci0gICAg
YXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjayk7Ci0gICAgaWYgKCFjYWxsYmFjaykK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9sb2FkZXItPmNhbmNlbCgpOwotICAgIG1fbG9hZGVy
ID0gbnVsbHB0cjsKLSAgICAoKmNhbGxiYWNrKShXVEZNb3ZlKGRhdGEpKTsKKyAgICBzZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3VidGl0bGVBdHRyLCBmaWxl
U2l6ZURlc2NyaXB0aW9uKGZpbGVTaXplKSk7CisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyZXItPmludmFsaWRhdGUoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmgKaW5kZXggMTRmYzg0YmQ5YTU3OTAxNjBkMGI4N2FmMzNmZDk4NDljNGM5YTkzZi4u
ZGI4MDZhYzk5MWE4ZmEzNDViNmFlOGNiYmI0ODI2MGUwZjFlODY5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCkBAIC0zMiwxMiArMzIsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF0dGFjaG1lbnREYXRhUmVhZGVyOwogY2xhc3Mg
RmlsZTsKLWNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7Ci1jbGFzcyBIVE1MVmlkZW9FbGVtZW50Owog
Y2xhc3MgUmVuZGVyQXR0YWNobWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSFRN
TEF0dGFjaG1lbnRFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKEhUTUxBdHRhY2htZW50RWxlbWVudCk7CkBAIC01MywyMCArNDks
MTkgQEAgcHVibGljOgogICAgIFN0cmluZyB1bmlxdWVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV91bmlxdWVJZGVudGlmaWVyOyB9CiAgICAgdm9pZCBzZXRVbmlxdWVJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcikgeyBtX3VuaXF1ZUlkZW50aWZpZXIgPSB1bmlx
dWVJZGVudGlmaWVyOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUZpbGVXaXRo
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5l
d0NvbnRlbnRUeXBlID0gc3RkOjpudWxsb3B0LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdG
aWxlbmFtZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVB
dHRyaWJ1dGVzKHVpbnQ2NF90IGZpbGVTaXplLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdD
b250ZW50VHlwZSA9IHN0ZDo6bnVsbG9wdCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYgbmV3Rmls
ZW5hbWUgPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQg
aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFs
OwogICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9k
ZSYpIGZpbmFsOwogCisgICAgU3RyaW5nIGVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKTsKKwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdHRhY2htZW50VGl0bGUoKSBjb25zdDsKICAgICBTdHJp
bmcgYXR0YWNobWVudFR5cGUoKSBjb25zdDsKICAgICBTdHJpbmcgYXR0YWNobWVudFBhdGgoKSBj
b25zdDsKIAogICAgIFJlbmRlckF0dGFjaG1lbnQqIHJlbmRlcmVyKCkgY29uc3Q7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlcXVlc3RJbmZvKEZ1bmN0aW9uPHZvaWQoY29uc3QgQXR0YWNo
bWVudEluZm8mKT4mJiBjYWxsYmFjayk7Ci0gICAgdm9pZCBkZXN0cm95UmVhZGVyKEF0dGFjaG1l
bnREYXRhUmVhZGVyJik7Ci0KIHByaXZhdGU6CiAgICAgSFRNTEF0dGFjaG1lbnRFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgfkhUTUxBdHRhY2ht
ZW50RWxlbWVudCgpOwpAQCAtODMsNyArNzgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFs
OwogICAgIAogICAgIFJlZlB0cjxGaWxlPiBtX2ZpbGU7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxBdHRhY2htZW50RGF0YVJlYWRlcj4+IG1fYXR0YWNobWVudFJlYWRlcnM7CiAgICAgU3Ry
aW5nIG1fdW5pcXVlSWRlbnRpZmllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKaW5k
ZXggYjc0NDg1ZDA3ZWJlNzgxZWQ0YjY3NDYzYjA1YzgwNjE0NDU0NjRiMy4uMzc4NjA2ODA5OTZl
MzljYWUzODgzZGI0ODc3MDNlOGU0YTI3NjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgK
QEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRWxlbWVudDsKIGNs
YXNzIEZyYW1lOwogY2xhc3MgSW1hZ2U7Ci1zdHJ1Y3QgUHJvbWlzZWRCbG9iSW5mbzsKK3N0cnVj
dCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvOwogCiBjbGFzcyBEcmFnQ2xpZW50IHsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggOWY5YmMzMjQyNDVmZjkw
NDg5MGQ1ZDZmMjIzNzc3NzM3NTdiN2I5MS4uZDUwZTExOGIxZGU5MjMxZGY3OTE1MTVjOGQ4ZmZh
ZDRiMTBlM2IxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTY5
LDcgKzY5LDcgQEAKICNpbmNsdWRlICJQbHVnaW5Eb2N1bWVudC5oIgogI2luY2x1ZGUgIlBsdWdp
blZpZXdCYXNlLmgiCiAjaW5jbHVkZSAiUG9zaXRpb24uaCIKLSNpbmNsdWRlICJQcm9taXNlZEJs
b2JJbmZvLmgiCisjaW5jbHVkZSAiUHJvbWlzZWRBdHRhY2htZW50SW5mby5oIgogI2luY2x1ZGUg
IlJlbmRlckF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5o
IgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCkBAIC0xMTM2LDExICsxMTM2LDExIEBAIGJvb2wg
RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0
YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgICAgIGF1dG8gcHJldmlvdXNTZWxlY3Rpb24gPSBzcmMu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgICAgIHNlbGVjdEVsZW1lbnQoZWxlbWVudCk7
CiAKLSAgICAgICAgUHJvbWlzZWRCbG9iSW5mbyBwcm9taXNlZEJsb2I7CisgICAgICAgIFByb21p
c2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2htZW50OwogICAgICAgICBpZiAoaGFzRGF0
YSA9PSBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGE6Ok5vKSB7Ci0gICAgICAgICAgICBwcm9t
aXNlZEJsb2IgPSBwcm9taXNlZEJsb2JJbmZvKHNyYywgYXR0YWNobWVudCk7CisgICAgICAgICAg
ICBwcm9taXNlZEF0dGFjaG1lbnQgPSBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKHNyYywgYXR0YWNo
bWVudCk7CiAgICAgICAgICAgICBhdXRvJiBlZGl0b3IgPSBzcmMuZWRpdG9yKCk7Ci0gICAgICAg
ICAgICBpZiAoIXByb21pc2VkQmxvYiAmJiBlZGl0b3IuY2xpZW50KCkpIHsKKyAgICAgICAgICAg
IGlmICghcHJvbWlzZWRBdHRhY2htZW50ICYmIGVkaXRvci5jbGllbnQoKSkgewogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgaWYgbm8gZmlsZSBVUkwg
aXMgc3BlY2lmaWVkLCBjYWxsIG91dCB0byB0aGUgaW5qZWN0ZWQgYnVuZGxlIHRvIHBvcHVsYXRl
IHRoZSBwYXN0ZWJvYXJkIHdpdGggZGF0YS4KICAgICAgICAgICAgICAgICBlZGl0b3Iud2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKHNyYy5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5n
ZSgpLmdldCgpKTsKQEAgLTExNjQsNyArMTE2NCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0
YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9u
CiAgICAgICAgICAgICBkcmFnTG9jID0gZHJhZ0xvY0ZvclNlbGVjdGlvbkRyYWcoc3JjKTsKICAg
ICAgICAgICAgIG1fZHJhZ09mZnNldCA9IEludFBvaW50KGRyYWdPcmlnaW4ueCgpIC0gZHJhZ0xv
Yy54KCksIGRyYWdPcmlnaW4ueSgpIC0gZHJhZ0xvYy55KCkpOwogICAgICAgICB9Ci0gICAgICAg
IGRvU3lzdGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdPcmlnaW4sIHNy
Yywgc3RhdGUsIFdURk1vdmUocHJvbWlzZWRCbG9iKSk7CisgICAgICAgIGRvU3lzdGVtRHJhZyhX
VEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdPcmlnaW4sIHNyYywgc3RhdGUsIFdURk1v
dmUocHJvbWlzZWRBdHRhY2htZW50KSk7CiAgICAgICAgIGlmICghZWxlbWVudC5pc0NvbnRlbnRS
aWNobHlFZGl0YWJsZSgpKQogICAgICAgICAgICAgc3JjLnNlbGVjdGlvbigpLnNldFNlbGVjdGlv
bihwcmV2aW91c1NlbGVjdGlvbik7CiAgICAgICAgIHNyYy5lZGl0b3IoKS5zZXRJZ25vcmVTZWxl
Y3Rpb25DaGFuZ2VzKGZhbHNlKTsKQEAgLTEyNzAsNyArMTI3MCw3IEBAIHZvaWQgRHJhZ0NvbnRy
b2xsZXI6OmJlZ2luRHJhZyhEcmFnSXRlbSBkcmFnSXRlbSwgRnJhbWUmIGZyYW1lLCBjb25zdCBJ
bnRQb2ludCYKICAgICBjbGVhbnVwQWZ0ZXJTeXN0ZW1EcmFnKCk7CiB9CiAKLXZvaWQgRHJhZ0Nv
bnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBk
cmFnTG9jLCBjb25zdCBJbnRQb2ludCYgZXZlbnRQb3MsIEZyYW1lJiBmcmFtZSwgY29uc3QgRHJh
Z1N0YXRlJiBzdGF0ZSwgUHJvbWlzZWRCbG9iSW5mbyYmIHByb21pc2VkQmxvYikKK3ZvaWQgRHJh
Z0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50
JiBkcmFnTG9jLCBjb25zdCBJbnRQb2ludCYgZXZlbnRQb3MsIEZyYW1lJiBmcmFtZSwgY29uc3Qg
RHJhZ1N0YXRlJiBzdGF0ZSwgUHJvbWlzZWRBdHRhY2htZW50SW5mbyYmIHByb21pc2VkQXR0YWNo
bWVudEluZm8pCiB7CiAgICAgbV9kaWRJbml0aWF0ZURyYWcgPSB0cnVlOwogICAgIG1fZHJhZ0lu
aXRpYXRvciA9IGZyYW1lLmRvY3VtZW50KCk7CkBAIC0xMjgxLDcgKzEyODEsNyBAQCB2b2lkIERy
YWdDb250cm9sbGVyOjpkb1N5c3RlbURyYWcoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2lu
dCYgZHJhZ0xvYywgY29ucwogICAgIERyYWdJdGVtIGl0ZW07CiAgICAgaXRlbS5pbWFnZSA9IFdU
Rk1vdmUoaW1hZ2UpOwogICAgIGl0ZW0uc291cmNlQWN0aW9uID0gc3RhdGUudHlwZTsKLSAgICBp
dGVtLnByb21pc2VkQmxvYiA9IFdURk1vdmUocHJvbWlzZWRCbG9iKTsKKyAgICBpdGVtLnByb21p
c2VkQXR0YWNobWVudEluZm8gPSBXVEZNb3ZlKHByb21pc2VkQXR0YWNobWVudEluZm8pOwogCiAg
ICAgYXV0byBldmVudFBvc2l0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gZnJhbWUudmlldygp
LT5jb250ZW50c1RvUm9vdFZpZXcoZXZlbnRQb3MpOwogICAgIGF1dG8gZHJhZ0xvY2F0aW9uSW5S
b290Vmlld0Nvb3JkaW5hdGVzID0gZnJhbWUudmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoZHJh
Z0xvYyk7CkBAIC0xMzY3LDExICsxMzY3LDggQEAgU3RyaW5nIERyYWdDb250cm9sbGVyOjpwbGF0
Zm9ybUNvbnRlbnRUeXBlRm9yQmxvYlR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogCiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotUHJvbWlzZWRCbG9iSW5mbyBEcmFnQ29u
dHJvbGxlcjo6cHJvbWlzZWRCbG9iSW5mbyhGcmFtZSYgZnJhbWUsIEhUTUxBdHRhY2htZW50RWxl
bWVudCYgYXR0YWNobWVudCkKK1Byb21pc2VkQXR0YWNobWVudEluZm8gRHJhZ0NvbnRyb2xsZXI6
OnByb21pc2VkQXR0YWNobWVudEluZm8oRnJhbWUmIGZyYW1lLCBIVE1MQXR0YWNobWVudEVsZW1l
bnQmIGF0dGFjaG1lbnQpCiB7Ci0gICAgaWYgKCFhdHRhY2htZW50LmZpbGUoKSkKLSAgICAgICAg
cmV0dXJuIHsgfTsKLQogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKICAgICBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JN
KENPQ09BKQpAQCAtMTM3OSw4ICsxMzc2LDEwIEBAIFByb21pc2VkQmxvYkluZm8gRHJhZ0NvbnRy
b2xsZXI6OnByb21pc2VkQmxvYkluZm8oRnJhbWUmIGZyYW1lLCBIVE1MQXR0YWNobWVudEVsCiAg
ICAgICAgIGZyYW1lLmVkaXRvcigpLmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2ht
ZW50KGF0dGFjaG1lbnQsIGFkZGl0aW9uYWxUeXBlcywgYWRkaXRpb25hbERhdGEpOwogI2VuZGlm
CiAKLSAgICBhdXRvJiBmaWxlID0gKmF0dGFjaG1lbnQuZmlsZSgpOwotICAgIHJldHVybiB7IGZp
bGUudXJsKCksIHBsYXRmb3JtQ29udGVudFR5cGVGb3JCbG9iVHlwZShmaWxlLnR5cGUoKSksIGZp
bGUubmFtZSgpLCBXVEZNb3ZlKGFkZGl0aW9uYWxUeXBlcyksIFdURk1vdmUoYWRkaXRpb25hbERh
dGEpIH07CisgICAgaWYgKGF1dG8qIGZpbGUgPSBhdHRhY2htZW50LmZpbGUoKSkKKyAgICAgICAg
cmV0dXJuIHsgZmlsZS0+dXJsKCksIHBsYXRmb3JtQ29udGVudFR5cGVGb3JCbG9iVHlwZShmaWxl
LT50eXBlKCkpLCBmaWxlLT5uYW1lKCksIGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCBX
VEZNb3ZlKGFkZGl0aW9uYWxUeXBlcyksIFdURk1vdmUoYWRkaXRpb25hbERhdGEpIH07CisKKyAg
ICByZXR1cm4geyB7IH0sIHBsYXRmb3JtQ29udGVudFR5cGVGb3JCbG9iVHlwZShhdHRhY2htZW50
LmF0dGFjaG1lbnRUeXBlKCkpLCBhdHRhY2htZW50LmF0dGFjaG1lbnRUaXRsZSgpLCBhdHRhY2ht
ZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgV1RGTW92ZShhZGRpdGlvbmFsVHlwZXMpLCBXVEZNb3Zl
KGFkZGl0aW9uYWxEYXRhKSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAppbmRleCA4M2U1NzVkYTcyMzUw
YWRkODY3MDAzY2ZkOWVkNTk2ZDg4ZDkyM2ZmLi4yMmE2OTU4M2FhZGI2NmU5YmRmMjcxMDNhMzVh
MmQ4NDcwZDhiYTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCkBAIC00OCw3
ICs0OCw3IEBAIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIAogc3RydWN0IERyYWdJdGVtOwog
c3RydWN0IERyYWdTdGF0ZTsKLXN0cnVjdCBQcm9taXNlZEJsb2JJbmZvOworc3RydWN0IFByb21p
c2VkQXR0YWNobWVudEluZm87CiAKICAgICBjbGFzcyBEcmFnQ29udHJvbGxlciB7CiAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKERyYWdDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CkBAIC0xMTYsNyArMTE2LDcgQEAgc3RydWN0IFByb21pc2VkQmxvYkluZm87CiAgICAg
ICAgIGJvb2wgc2hvdWxkVXNlQ2FjaGVkSW1hZ2VGb3JEcmFnSW1hZ2UoY29uc3QgSW1hZ2UmKSBj
b25zdDsKIAogICAgICAgICB2b2lkIGRvSW1hZ2VEcmFnKEVsZW1lbnQmLCBjb25zdCBJbnRQb2lu
dCYsIGNvbnN0IEludFJlY3QmLCBGcmFtZSYsIEludFBvaW50JiwgY29uc3QgRHJhZ1N0YXRlJik7
Ci0gICAgICAgIHZvaWQgZG9TeXN0ZW1EcmFnKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmLCBj
b25zdCBJbnRQb2ludCYsIEZyYW1lJiwgY29uc3QgRHJhZ1N0YXRlJiwgUHJvbWlzZWRCbG9iSW5m
byYmKTsKKyAgICAgICAgdm9pZCBkb1N5c3RlbURyYWcoRHJhZ0ltYWdlLCBjb25zdCBJbnRQb2lu
dCYsIGNvbnN0IEludFBvaW50JiwgRnJhbWUmLCBjb25zdCBEcmFnU3RhdGUmLCBQcm9taXNlZEF0
dGFjaG1lbnRJbmZvJiYpOwogCiAgICAgICAgIHZvaWQgYmVnaW5EcmFnKERyYWdJdGVtLCBGcmFt
ZSYsIGNvbnN0IEludFBvaW50JiBtb3VzZURvd25Qb2ludCwgY29uc3QgSW50UG9pbnQmIG1vdXNl
RHJhZ2dlZFBvaW50LCBEYXRhVHJhbnNmZXImLCBEcmFnU291cmNlQWN0aW9uKTsKIApAQCAtMTM1
LDcgKzEzNSw3IEBAIHN0cnVjdCBQcm9taXNlZEJsb2JJbmZvOwogICAgICAgICB2b2lkIGRlY2xh
cmVBbmRXcml0ZURyYWdJbWFnZShEYXRhVHJhbnNmZXImLCBFbGVtZW50JiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBsYWJlbCk7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQot
ICAgICAgICBQcm9taXNlZEJsb2JJbmZvIHByb21pc2VkQmxvYkluZm8oRnJhbWUmLCBIVE1MQXR0
YWNobWVudEVsZW1lbnQmKTsKKyAgICAgICAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBwcm9taXNl
ZEF0dGFjaG1lbnRJbmZvKEZyYW1lJiwgSFRNTEF0dGFjaG1lbnRFbGVtZW50Jik7CiAjZW5kaWYK
ICAgICAgICAgUGFnZSYgbV9wYWdlOwogICAgICAgICBEcmFnQ2xpZW50JiBtX2NsaWVudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDM2YWQ3YmU4NjljMTcyODZjYzQzNTc5MWNk
ODUyMTg1NTA4MzU5NDQuLjhmZmQ3MzYwYzZhYTdlYjJiMmM3Y2E5MGMxZjRiMTM5NmJmZDMxMmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtNzMsOCArNzMsMTIgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShSYW5nZSosIFJh
bmdlKikgPSAwOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50
aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYg
LyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxTaGFyZWRCdWZmZXI+JiYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyog
aWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3Ry
aW5nJiAvKiBmaWxlUGF0aCAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGNsb25lQXR0YWNobWVu
dERhdGEoY29uc3QgU3RyaW5nJiAvKiBmcm9tSWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAv
KiB0b0lkZW50aWZpZXIgKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRJbnNlcnRBdHRhY2ht
ZW50KGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBzb3Vy
Y2UgKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVBdHRhY2htZW50KGNvbnN0IFN0
cmluZyYpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRCZWdpbkVkaXRpbmcoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnSXRlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0l0ZW0uaAppbmRl
eCAzZWFlNzQzNzU0Mjg5YWQxNTczZDUzMDljOWZiMTQ0YmRhOGY3MWI5Li41OTkyYmVhMThiYjM2
MGQyODNhMmU3YzkxOWZjZjhjNTA1ZTNiYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJdGVt
LmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIgotI2luY2x1ZGUgIlBy
b21pc2VkQmxvYkluZm8uaCIKKyNpbmNsdWRlICJQcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTAsNyArNTAsNyBAQCBzdHJ1Y3QgRHJhZ0l0ZW0g
ZmluYWwgewogICAgIEludFJlY3QgZHJhZ1ByZXZpZXdGcmFtZUluUm9vdFZpZXdDb29yZGluYXRl
czsKIAogICAgIFBhc3RlYm9hcmRXcml0ZXJEYXRhIGRhdGE7Ci0gICAgUHJvbWlzZWRCbG9iSW5m
byBwcm9taXNlZEJsb2I7CisgICAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBwcm9taXNlZEF0dGFj
aG1lbnRJbmZvOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRl
Y29kZShEZWNvZGVyJiwgRHJhZ0l0ZW0mKTsKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBEcmFnSXRl
bTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBoYXNWaXNp
YmxlUGF0aDsKICAgICBpZiAoaGFzVmlzaWJsZVBhdGgpCiAgICAgICAgIGVuY29kZXIgPDwgaW1h
Z2UudmlzaWJsZVBhdGgoKS52YWx1ZSgpOwotICAgIGVuY29kZXIgPDwgcHJvbWlzZWRCbG9iOwor
ICAgIGVuY29kZXIgPDwgcHJvbWlzZWRBdHRhY2htZW50SW5mbzsKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KQEAgLTExMyw3ICsxMTMsNyBAQCBib29sIERyYWdJdGVtOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgRHJhZ0l0ZW0mIHJlc3VsdCkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgcmVzdWx0LmltYWdlLnNldFZpc2libGVQYXRoKCp2aXNpYmxlUGF0aCk7CiAg
ICAgfQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnByb21pc2VkQmxvYikpCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJvbWlzZWRBdHRhY2htZW50SW5mbykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzhhMzFk
YmFlN2I1MmUxMDBjOWEzNGEwOWVkNjA0ZjgxNjNlOWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0wLDAgKzEs
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFVSTDsKKworc3RydWN0IFByb21pc2VkQXR0YWNobWVu
dEluZm8geworICAgIFVSTCBibG9iVVJMOworICAgIFN0cmluZyBjb250ZW50VHlwZTsKKyAgICBT
dHJpbmcgZmlsZW5hbWU7CisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIFN0
cmluZyBhdHRhY2htZW50SWRlbnRpZmllcjsKKyNlbmRpZgorCisgICAgVmVjdG9yPFN0cmluZz4g
YWRkaXRpb25hbFR5cGVzOworICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRp
b25hbERhdGE7CisKKyAgICBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
IChjb250ZW50VHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICAgICBpZiAoIWF0dGFjaG1lbnRJZGVu
dGlmaWVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisKKyAg
ICAgICAgcmV0dXJuICFibG9iVVJMLmlzRW1wdHkoKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21p
c2VkQmxvYkluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQmxvYkluZm8u
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY0YmE3MDkyZTg0ZDc3NzNmOGU1MGMy
ZTA2ODRmYTYzMDY3MmM1NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEJsb2JJbmZvLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBV
Ukw7Ci0KLXN0cnVjdCBQcm9taXNlZEJsb2JJbmZvIHsKLSAgICBVUkwgYmxvYlVSTDsKLSAgICBT
dHJpbmcgY29udGVudFR5cGU7Ci0gICAgU3RyaW5nIGZpbGVuYW1lOwotCi0gICAgVmVjdG9yPFN0
cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4g
YWRkaXRpb25hbERhdGE7Ci0KLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWJs
b2JVUkwuaXNFbXB0eSgpOyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGE3ODJiYWFjOWQ0NWJiM2M5
ZDBiODk5MjYyMmZhYTYyNTJhYTE4NGQuLmMyYTNlNGUyOTM2MWY0MDk3YzE1OTE3NTI0MTVlYzEw
NWQ1ZTlmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAt
Mzc4LDcgKzM3OCw2IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnU3Ry
aW5nJzogWyc8d3RmL3RleHQvV1RGU3RyaW5nLmg+J10sCiAgICAgICAgICdQQUw6OlNlc3Npb25J
RCc6IFsnPHBhbC9TZXNzaW9uSUQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkF0dGFjaG1lbnRE
aXNwbGF5T3B0aW9ucyc6IFsnPFdlYkNvcmUvQXR0YWNobWVudFR5cGVzLmg+J10sCi0gICAgICAg
ICdXZWJDb3JlOjpBdHRhY2htZW50SW5mbyc6IFsnPFdlYkNvcmUvQXR0YWNobWVudFR5cGVzLmg+
J10sCiAgICAgICAgICdXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3MnOiBbJzxXZWJDb3JlL0F1
dG9wbGF5RXZlbnQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMnOiBb
JzxXZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6
OkZpbGVDaG9vc2VyU2V0dGluZ3MnOiBbJzxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+J10sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBiYWEy
ZmNmMDNlOWFiMmM5Y2ZmNmE4YWRiOWZmMzMwYmIwM2Q4OTZlLi41ZjgzZTlmMDljMDhmMmZkNGFi
MmU2ZDUxYWY4MDdhMDE4MjQ0MDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTU3LDcgKzU3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1Bhc3RlYm9hcmQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhdGguaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsdWdpbkRhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Byb21pc2VkQmxvYkluZm8uaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1Byb21pc2VkQXR0YWNobWVudEluZm8uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVjdEVkZ2VzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpb24uaD4KQEAgLTI4NjMsMTUgKzI4NjMsMTggQEAgc3Rk
OjpvcHRpb25hbDxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gQXJndW1lbnRDb2RlcjxNZWRpYVNlbGVj
dGlvbk9wdGlvbj46OmRlY29kZSgKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqZGlzcGxheU5hbWUp
LCBXVEZNb3ZlKCp0eXBlKSB9fTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPFByb21pc2VkQmxv
YkluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUHJvbWlzZWRCbG9iSW5mbyYg
aW5mbykKK3ZvaWQgQXJndW1lbnRDb2RlcjxQcm9taXNlZEF0dGFjaG1lbnRJbmZvPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFByb21pc2VkQXR0YWNobWVudEluZm8mIGluZm8pCiB7
CiAgICAgZW5jb2RlciA8PCBpbmZvLmJsb2JVUkw7CiAgICAgZW5jb2RlciA8PCBpbmZvLmNvbnRl
bnRUeXBlOwogICAgIGVuY29kZXIgPDwgaW5mby5maWxlbmFtZTsKKyNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQorICAgIGVuY29kZXIgPDwgaW5mby5hdHRhY2htZW50SWRlbnRpZmllcjsK
KyNlbmRpZgogICAgIGVuY29kZVR5cGVzQW5kRGF0YShlbmNvZGVyLCBpbmZvLmFkZGl0aW9uYWxU
eXBlcywgaW5mby5hZGRpdGlvbmFsRGF0YSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxQcm9t
aXNlZEJsb2JJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFByb21pc2VkQmxvYkluZm8m
IGluZm8pCitib29sIEFyZ3VtZW50Q29kZXI8UHJvbWlzZWRBdHRhY2htZW50SW5mbz46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvJiBpbmZvKQogewogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5ibG9iVVJMKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjg4Miw1MSArMjg4NSwxNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UHJvbWlzZWRCbG9i
SW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQcm9taXNlZEJsb2JJbmZvJgogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaW5mby5maWxlbmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmICghZGVjb2RlVHlwZXNBbmREYXRhKGRlY29kZXIsIGluZm8uYWRkaXRpb25hbFR5
cGVzLCBpbmZvLmFkZGl0aW9uYWxEYXRhKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotCi12b2lk
IEFyZ3VtZW50Q29kZXI8QXR0YWNobWVudEluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgQXR0YWNobWVudEluZm8mIGluZm8pCi17Ci0gICAgYm9vbCBkYXRhSXNOdWxsID0gIWlu
Zm8uZGF0YTsKLSAgICBlbmNvZGVyIDw8IGluZm8uY29udGVudFR5cGUgPDwgaW5mby5uYW1lIDw8
IGluZm8uZmlsZVBhdGggPDwgZGF0YUlzTnVsbDsKLSAgICBpZiAoIWRhdGFJc051bGwpIHsKLSAg
ICAgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgaW5mby5kYXRh
LmdldCgpIH07Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8RGF0YVJlZmVyZW5jZSY+
KGRhdGFSZWZlcmVuY2UpOwotICAgIH0KLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPEF0dGFjaG1l
bnRJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEF0dGFjaG1lbnRJbmZvJiBpbmZvKQot
ewotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5jb250ZW50VHlwZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5uYW1lKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLmZpbGVQYXRo
KSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uYXR0YWNobWVudElkZW50aWZpZXIpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIAotICAgIGJvb2wgZGF0YUlzTnVsbCA9IHRy
dWU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhSXNOdWxsKSkKKyAgICBpZiAoIWRlY29k
ZVR5cGVzQW5kRGF0YShkZWNvZGVyLCBpbmZvLmFkZGl0aW9uYWxUeXBlcywgaW5mby5hZGRpdGlv
bmFsRGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZGF0YUlzTnVsbCkg
ewotICAgICAgICBEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIGluZm8uZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFSZWZlcmVuY2UuZGF0
YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7Ci0gICAgfQotCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLSNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotCiB2b2lkIEFyZ3VtZW50
Q29kZXI8VmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Pjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKIHsK
ICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvcmlnaW5zLnNpemUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGYyYWZj
YWQ1OTYwMzM5NDBmMWI0OWFkMDYyM2EwODlhOGM1MzlhNzUuLjhjYTc2MGZjZmZkY2Q0ZDhmNjJm
NjIzMzkyOTMwMzM4NWFhZmMzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCkBAIC05NSw3ICs5NSw2IEBAIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0
cml4OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7CiBjbGFzcyBVUkw7CiAKLXN0cnVjdCBBdHRhY2ht
ZW50SW5mbzsKIHN0cnVjdCBDYWNoZVF1ZXJ5T3B0aW9uczsKIHN0cnVjdCBDb21wb3NpdGlvblVu
ZGVybGluZTsKIHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKQEAgLTExMCw3ICsxMDksNyBA
QCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRDdXN0b21EYXRhOwog
c3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKLXN0cnVjdCBQcm9taXNl
ZEJsb2JJbmZvOworc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm87CiBzdHJ1Y3QgUmVjZW50
U2VhcmNoOwogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiBzdHJ1Y3QgU2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzOwpAQCAtNjk5LDIwICs2OTgsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4gewogICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQ
cm9taXNlZEJsb2JJbmZvPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBXZWJDb3JlOjpQcm9taXNlZEJsb2JJbmZvJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERl
Y29kZXImLCBXZWJDb3JlOjpQcm9taXNlZEJsb2JJbmZvJik7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8+IHsKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVu
dEluZm8mKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlByb21p
c2VkQXR0YWNobWVudEluZm8mKTsKIH07CiAKLSNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkF0dGFjaG1lbnRJ
bmZvPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpB
dHRhY2htZW50SW5mbyYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29y
ZTo6QXR0YWNobWVudEluZm8mKTsKLX07Ci0KLSNlbmRpZgotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+Pj4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4+Jik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCA3ZTAwOWQ2YjJlNTU5
Y2Q4NWI5ODQ2NjgxMjExOWE0YzhiOTY5NmUyLi5hZmE4ZTM2OGI0Yzc3ZmFlMWNhYzkzMzNjYTJl
NjIwNDU5MDBjZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuY3BwCkBAIC00OCwxNCArNDgsNiBAQCBBdHRhY2htZW50Ojp+QXR0YWNobWVudCgpCiB7
CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6cmVxdWVzdEluZm8oRnVuY3Rpb248dm9pZChjb25zdCBX
ZWJDb3JlOjpBdHRhY2htZW50SW5mbyYsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2spCi17Ci0gICAgaWYgKG1fd2ViUGFnZSkKLSAgICAgICAgbV93ZWJQYWdlLT5yZXF1
ZXN0QXR0YWNobWVudEluZm8obV9pZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAg
ZWxzZQotICAgICAgICBjYWxsYmFjayh7IH0sIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6
T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci19Ci0KIHZvaWQgQXR0YWNobWVudDo6c2V0RGlzcGxheU9w
dGlvbnMoV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zIG9wdGlvbnMsIEZ1bmN0aW9u
PHZvaWQoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKIHsKICAgICBp
ZiAobV93ZWJQYWdlKQpAQCAtNjQsMTIgKzU2LDE1IEBAIHZvaWQgQXR0YWNobWVudDo6c2V0RGlz
cGxheU9wdGlvbnMoV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zIG9wdGlvbnMsIEZ1
CiAgICAgICAgIGNhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJ
bnZhbGlkYXRlZCk7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6c2V0RGF0YUFuZENvbnRlbnRUeXBl
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgV1RGOjpTdHJpbmcmIG5ld0NvbnRl
bnRUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgbmV3RmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKK3ZvaWQgQXR0YWNobWVudDo6
dXBkYXRlQXR0cmlidXRlcyh1aW50NjRfdCBmaWxlU2l6ZSwgY29uc3QgV1RGOjpTdHJpbmcmIG5l
d0NvbnRlbnRUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgbmV3RmlsZW5hbWUsIEZ1bmN0aW9uPHZv
aWQoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKIHsKKyAgICBzZXRD
b250ZW50VHlwZShuZXdDb250ZW50VHlwZSk7CisgICAgc2V0RmlsZVBhdGgoeyB9KTsKKwogICAg
IGF1dG8gb3B0aW9uYWxOZXdDb250ZW50VHlwZSA9IG5ld0NvbnRlbnRUeXBlLmlzTnVsbCgpID8g
c3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4geyBuZXdDb250ZW50VHlw
ZSB9OwogICAgIGF1dG8gb3B0aW9uYWxOZXdGaWxlbmFtZSA9IG5ld0ZpbGVuYW1lLmlzTnVsbCgp
ID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4geyBuZXdGaWxlbmFt
ZSB9OwogICAgIGlmIChtX3dlYlBhZ2UpCi0gICAgICAgIG1fd2ViUGFnZS0+c2V0QXR0YWNobWVu
dERhdGFBbmRDb250ZW50VHlwZShtX2lkZW50aWZpZXIsIGRhdGEsIFdURk1vdmUob3B0aW9uYWxO
ZXdDb250ZW50VHlwZSksIFdURk1vdmUob3B0aW9uYWxOZXdGaWxlbmFtZSksIFdURk1vdmUoY2Fs
bGJhY2spKTsKKyAgICAgICAgbV93ZWJQYWdlLT51cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyht
X2lkZW50aWZpZXIsIGZpbGVTaXplLCBXVEZNb3ZlKG9wdGlvbmFsTmV3Q29udGVudFR5cGUpLCBX
VEZNb3ZlKG9wdGlvbmFsTmV3RmlsZW5hbWUpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgZWxz
ZQogICAgICAgICBjYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2Fz
SW52YWxpZGF0ZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmgKaW5kZXggYmY3YTIyNzQyOTYyMjFmZmFkYmUwNzg5MmU3NmVlZmRkNzVjYjg5OC4uZTdl
YTljZGY5MDU1MTdhMmY4MTkzYWY2MjdjYWM0Y2I5ZTg1ZjlkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0zMiwxMCArMzIsMTEgQEAKICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitP
QkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIHN0cnVjdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnM7Ci1zdHJ1Y3QgQXR0
YWNobWVudEluZm87CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTAsMTQgKzUxLDI5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BdHRhY2htZW50KCk7CiAKICAgICBjb25zdCBXVEY6OlN0
cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQotICAgIHZv
aWQgcmVxdWVzdEluZm8oRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50SW5m
byYsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgc2V0RGlzcGxh
eU9wdGlvbnMoV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zLCBGdW5jdGlvbjx2b2lk
KFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgc2V0RGF0YUFuZENv
bnRlbnRUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGNvbnN0IFdURjo6U3RyaW5nJiBuZXdD
b250ZW50VHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIG5ld0ZpbGVuYW1lLCBGdW5jdGlvbjx2b2lk
KFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgdXBkYXRlQXR0cmli
dXRlcyh1aW50NjRfdCBmaWxlU2l6ZSwgY29uc3QgV1RGOjpTdHJpbmcmIG5ld0NvbnRlbnRUeXBl
LCBjb25zdCBXVEY6OlN0cmluZyYgbmV3RmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBOU0Zp
bGVXcmFwcGVyICpmaWxlV3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVdyYXBwZXIuZ2V0
KCk7IH0KKyAgICB2b2lkIHNldEZpbGVXcmFwcGVyKE5TRmlsZVdyYXBwZXIgKmZpbGVXcmFwcGVy
KSB7IG1fZmlsZVdyYXBwZXIgPSBmaWxlV3JhcHBlcjsgfQorI2VuZGlmCisKKyAgICBjb25zdCBX
VEY6OlN0cmluZyYgZmlsZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVQYXRoOyB9CisgICAg
dm9pZCBzZXRGaWxlUGF0aChjb25zdCBXVEY6OlN0cmluZyYgZmlsZVBhdGgpIHsgbV9maWxlUGF0
aCA9IGZpbGVQYXRoOyB9CisKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRlbnRUeXBlOyB9CisgICAgdm9pZCBzZXRDb250ZW50VHlwZShj
b25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpIHsgbV9jb250ZW50VHlwZSA9IGNvbnRlbnRU
eXBlOyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6OlN0
cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKIAorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBtX2ZpbGVXcmFwcGVyOworI2Vu
ZGlmCiAgICAgV1RGOjpTdHJpbmcgbV9pZGVudGlmaWVyOworICAgIFdURjo6U3RyaW5nIG1fZmls
ZVBhdGg7CisgICAgV1RGOjpTdHJpbmcgbV9jb250ZW50VHlwZTsKICAgICBXZWFrUHRyPFdlYktp
dDo6V2ViUGFnZVByb3h5PiBtX3dlYlBhZ2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAppbmRleCBmNjhj
YWQxYmNkYzNiY2Q1YWY4MTllNTk0MzI0MDFkN2U3ZGY2Y2VhLi40YzI2NDM5YzRmNzFlYjgwYzEy
MWI5MGYzZjRhMzVmNTc0ODA3MDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTExNCw3ICsxMTQsNiBA
QCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBlZGl0b3JTdGF0ZURpZENoYW5nZTooTlNEaWN0aW9uYXJ5ICopZWRpdG9yU3RhdGUgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMuNCksIGlvcygxMS4zKSk7CiAKIC0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkUmVtb3ZlQXR0YWNobWVudDooX1dLQXR0YWNo
bWVudCAqKWF0dGFjaG1lbnQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMuNCksIGlvcygx
MS4zKSk7Ci0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEluc2VydEF0
dGFjaG1lbnQ6KF9XS0F0dGFjaG1lbnQgKilhdHRhY2htZW50IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBkaWRJbnNlcnRBdHRhY2htZW50OihfV0tBdHRhY2htZW50ICopYXR0YWNobWVudCB3
aXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2VX
aXRoVXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBmMDIzMDE4MTNlMDJhZjMz
NjJiZmM1YjNjNDdlMzlkYWZkMWM0ZjVlLi4yNmIzYTg5NWNjNDhlYzlkZmQ3NjJlZGVhZWZjOGNi
NjAzOWU3ODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KQEAgLTEyMTIsMTcgKzEyMTIsMjUgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqZGlj
dGlvbmFyeVJlcHJlc2VudGF0aW9uRm9yRWRpdG9yU3RhdGUoY29uc3QgV2ViS2l0OjpFZGl0b3IK
IC0gKHZvaWQpX2RpZEluc2VydEF0dGFjaG1lbnQ6KE5TU3RyaW5nICopaWRlbnRpZmllciB3aXRo
U291cmNlOihOU1N0cmluZyAqKXNvdXJjZQogewogICAgIGlkIDxXS1VJRGVsZWdhdGVQcml2YXRl
PiB1aURlbGVnYXRlID0gKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilzZWxmLlVJRGVsZWdhdGU7
Ci0gICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXc6ZGlkSW5zZXJ0QXR0YWNobWVudDp3aXRoU291cmNlOildKQotICAgICAgICBbdWlEZWxlZ2F0
ZSBfd2ViVmlldzpzZWxmIGRpZEluc2VydEF0dGFjaG1lbnQ6d3JhcHBlcihBUEk6OkF0dGFjaG1l
bnQ6OmNyZWF0ZShpZGVudGlmaWVyLCAqX3BhZ2UpKSB3aXRoU291cmNlOnNvdXJjZV07Ci0gICAg
ZWxzZSBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmll
dzpkaWRJbnNlcnRBdHRhY2htZW50OildKQotICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpz
ZWxmIGRpZEluc2VydEF0dGFjaG1lbnQ6d3JhcHBlcihBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZShp
ZGVudGlmaWVyLCAqX3BhZ2UpKV07CisgICAgaWYgKCFbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZEluc2VydEF0dGFjaG1lbnQ6d2l0aFNvdXJjZTop
XSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IF9wYWdlLT5h
dHRhY2htZW50Rm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAgW3VpRGVsZWdhdGUg
X3dlYlZpZXc6c2VsZiBkaWRJbnNlcnRBdHRhY2htZW50OndyYXBwZXIoKmF0dGFjaG1lbnQpIHdp
dGhTb3VyY2U6c291cmNlXTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCiAtICh2b2lkKV9kaWRSZW1vdmVBdHRhY2htZW50OihOU1N0cmluZyAqKWlkZW50aWZp
ZXIKIHsKICAgICBpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IChpZCA8V0tV
SURlbGVnYXRlUHJpdmF0ZT4pc2VsZi5VSURlbGVnYXRlOwotICAgIGlmIChbdWlEZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZFJlbW92ZUF0dGFjaG1lbnQ6
KV0pCi0gICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnNlbGYgZGlkUmVtb3ZlQXR0YWNobWVu
dDp3cmFwcGVyKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlKGlkZW50aWZpZXIsICpfcGFnZSkpXTsK
KyAgICBpZiAoIVt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXc6ZGlkUmVtb3ZlQXR0YWNobWVudDopXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1
dG8gYXR0YWNobWVudCA9IF9wYWdlLT5hdHRhY2htZW50Rm9ySWRlbnRpZmllcihpZGVudGlmaWVy
KSkKKyAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBkaWRSZW1vdmVBdHRhY2htZW50
OndyYXBwZXIoKmF0dGFjaG1lbnQpXTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTQz
OTgsMTggKzQ0MDYsMzEgQEAgV0VCQ09SRV9DT01NQU5EKHlhbmtBbmRTZWxlY3QpCiB9CiAKIC0g
KF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTooTlNTdHJpbmcg
KilmaWxlbmFtZSBjb250ZW50VHlwZTooTlNTdHJpbmcgKiljb250ZW50VHlwZSBkYXRhOihOU0Rh
dGEgKilkYXRhIG9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMg
Y29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyCit7Cisg
ICAgYXV0byBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YV0pOworICAgIGlmIChmaWxlbmFtZSkKKyAgICAg
ICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOmZpbGVuYW1lXTsKKyAgICByZXR1
cm4gW3NlbGYgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6ZmlsZVdyYXBwZXIuZ2V0
KCkgY29udGVudFR5cGU6Y29udGVudFR5cGUgb3B0aW9uczpvcHRpb25zIGNvbXBsZXRpb246Y29t
cGxldGlvbkhhbmRsZXJdOworfQorCistIChfV0tBdHRhY2htZW50ICopX2luc2VydEF0dGFjaG1l
bnRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlciBjb250ZW50VHlw
ZTooTlNTdHJpbmcgKiljb250ZW50VHlwZSBvcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9w
dGlvbnMgKilvcHRpb25zIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0
aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYXV0byBp
ZGVudGlmaWVyID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwotCiAgICAgYXV0byBjb3Jl
T3B0aW9ucyA9IG9wdGlvbnMgPyBvcHRpb25zLmNvcmVEaXNwbGF5T3B0aW9ucyA6IFdlYkNvcmU6
OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyB7IH07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKLSAgICBfcGFnZS0+aW5zZXJ0QXR0YWNobWVu
dChpZGVudGlmaWVyLCBjb3JlT3B0aW9ucywgZmlsZW5hbWUsIGNvbnRlbnRUeXBlLmxlbmd0aCA/
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB7IGNvbnRlbnRUeXBlIH0gOiBzdGQ6Om51bGxvcHQsIGJ1
ZmZlci5nZXQoKSwgW2NhcHR1cmVkSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlciksIGNhcHR1cmVkQnVmZmVyID0gYnVmZmVyLmNvcHlSZWYoKV0gKFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIGF1dG8gYXR0YWNobWVudCA9IEFQSTo6QXR0YWNo
bWVudDo6Y3JlYXRlKGlkZW50aWZpZXIsICpfcGFnZSk7CisgICAgYXR0YWNobWVudC0+c2V0Rmls
ZVdyYXBwZXIoZmlsZVdyYXBwZXIpOworCisgICAgYXV0byBmaWxlU2l6ZSA9IFtbW2ZpbGVXcmFw
cGVyIGZpbGVBdHRyaWJ1dGVzXSBvYmplY3RGb3JLZXk6TlNGaWxlU2l6ZV0gdW5zaWduZWRMb25n
TG9uZ1ZhbHVlXTsKKyAgICBpZiAoIWZpbGVTaXplICYmIGZpbGVXcmFwcGVyLnJlZ3VsYXJGaWxl
KQorICAgICAgICBmaWxlU2l6ZSA9IGZpbGVXcmFwcGVyLnJlZ3VsYXJGaWxlQ29udGVudHMubGVu
Z3RoOworCisgICAgX3BhZ2UtPmluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVudC5jb3B5UmVmKCks
IGNvcmVPcHRpb25zLCBmaWxlU2l6ZSwgW2ZpbGVXcmFwcGVyIHByZWZlcnJlZEZpbGVuYW1lXSwg
Y29udGVudFR5cGUubGVuZ3RoID8gc3RkOjpvcHRpb25hbDxTdHJpbmc+IHsgY29udGVudFR5cGUg
fSA6IHN0ZDo6bnVsbG9wdCwgW2NhcHR1cmVkSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAg
ICAgaWYgKGNhcHR1cmVkSGFuZGxlcikKICAgICAgICAgICAgIGNhcHR1cmVkSGFuZGxlcihlcnJv
ciA9PSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOwogICAgIH0pOwogCi0gICAg
cmV0dXJuIHdyYXBwZXIoQVBJOjpBdHRhY2htZW50OjpjcmVhdGUoaWRlbnRpZmllciwgKl9wYWdl
KSk7CisgICAgcmV0dXJuIHdyYXBwZXIoYXR0YWNobWVudCk7CiAjZWxzZQogICAgIHJldHVybiBu
aWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDU4MWE0YTY3ZDE4Njg2YjYxMTI4Zjg2N2ZiNDk4MWE3
YzZmN2ZjMjkuLmQwY2YyYjhjMDc0M2NkODBhNjExYjk3MGIwYmM5ODllMjA1OTk2NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaApAQCAtMTgwLDcgKzE4MCw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBf
V0tSZWN0RWRnZSkgewogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRCYWNrZ3Jv
dW5kRXh0ZW5kc0JleW9uZFBhZ2U6KSBCT09MIF9iYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2Ug
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMuNCksIGlvcyg4LjApKTsKIAotLSAoX1dLQXR0
YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVu
YW1lIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAqKWRh
dGEgb3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0
aW9uOih2b2lkKF4pKEJPT0wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goMTAuMTMuNCksIGlvcygxMS4zKSk7CistIChfV0tBdHRhY2htZW50ICopX2lu
c2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29udGVudFR5
cGU6KE5TU3RyaW5nICopY29udGVudFR5cGUgZGF0YTooTlNEYXRhICopZGF0YSBvcHRpb25zOihf
V0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25zIGNvbXBsZXRpb246KHZvaWQoXiko
Qk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JF
UExBQ0VNRU5UKCItX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Y29udGVudFR5cGU6
b3B0aW9uczpjb21wbGV0aW9uOiIsIG1hY29zeCgxMC4xMy40LCBXS19NQUNfVEJBKSwgaW9zKDEx
LjMsIFdLX0lPU19UQkEpKTsKKy0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdp
dGhGaWxlV3JhcHBlcjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIGNvbnRlbnRUeXBlOihO
U1N0cmluZyAqKWNvbnRlbnRUeXBlIG9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9u
cyAqKW9wdGlvbnMgY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25I
YW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogLy8gREVSRUNBVEVEOiBUaGUgc2V0dGVycyBv
ZiB0aGUgdGhyZWUgZm9sbG93aW5nIGZ1bmN0aW9uIGFyZSBkZXByZWNhdGVkLCBwbGVhc2UgdXNl
IG92ZXJyaWRlTGF5b3V0UGFyYW1ldGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oCmluZGV4IDA4Mjk5MzlmYmJjYTJjYjI3ZTYwNjk4
NjBjNDY2ZmZiOGQzMDRjZmIuLmM3MzdjMmU1MzVmYWY2OTBkMWUyM2JkNzUwMzA1M2NhMzI5OTk4
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRh
Y2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFj
aG1lbnQuaApAQCAtNDQsMTkgKzQ0LDI2IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goMTAu
MTMuNCksIGlvcygxMS4zKSkKIAogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKQogQGludGVyZmFjZSBfV0tBdHRhY2htZW50SW5mbyA6IE5TT2Jq
ZWN0Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpjb250ZW50VHlw
ZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKm5hbWU7Ci1AcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpmaWxlUGF0aDsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVsbGFibGUpIE5TU3RyaW5nICpjb250ZW50VHlwZTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVsbGFibGUpIE5TU3RyaW5nICpuYW1l
OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNTdHJpbmcgKmZp
bGVQYXRoOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNEYXRh
ICpkYXRhOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0ZpbGVXcmFwcGVyICpm
aWxlV3JhcHBlcjsKIEBlbmQKIAogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC4xMy40KSwg
aW9zKDExLjMpKQogQGludGVyZmFjZSBfV0tBdHRhY2htZW50IDogTlNPYmplY3QKLS0gKHZvaWQp
cmVxdWVzdEluZm86KHZvaWQoXikoX1dLQXR0YWNobWVudEluZm8gKiBfTnVsbGFibGUsIE5TRXJy
b3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9pZClyZXF1ZXN0RGF0YToodm9p
ZCheKShOU0RhdGEgKiBfTnVsbGFibGUsIE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25I
YW5kbGVyOworCiAtICh2b2lkKXNldERpc3BsYXlPcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxh
eU9wdGlvbnMgKilvcHRpb25zIGNvbXBsZXRpb246KHZvaWQoXiBfTnVsbGFibGUpKE5TRXJyb3Ig
KiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOwotLSAodm9pZClzZXREYXRhOihOU0RhdGEg
KilkYXRhIG5ld0NvbnRlbnRUeXBlOihudWxsYWJsZSBOU1N0cmluZyAqKW5ld0NvbnRlbnRUeXBl
IG5ld0ZpbGVuYW1lOihudWxsYWJsZSBOU1N0cmluZyAqKW5ld0ZpbGVuYW1lIGNvbXBsZXRpb246
KHZvaWQoXiBfTnVsbGFibGUpKE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVy
OworLSAodm9pZClzZXRGaWxlV3JhcHBlcjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIGNv
bnRlbnRUeXBlOihudWxsYWJsZSBOU1N0cmluZyAqKWNvbnRlbnRUeXBlIGNvbXBsZXRpb246KHZv
aWQoXiBfTnVsbGFibGUpKE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS0F0dGFjaG1lbnRJbmZvICppbmZvIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqdW5pcXVlSWRlbnRpZmllcjsK
KworLy8gRGVwcmVjYXRlZCBTUEkuCistICh2b2lkKXJlcXVlc3RJbmZvOih2b2lkKF4pKF9XS0F0
dGFjaG1lbnRJbmZvICogX051bGxhYmxlLCBOU0Vycm9yICogX051bGxhYmxlKSljb21wbGV0aW9u
SGFuZGxlciBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCItaW5mbyIsIG1hY29z
eChXS19NQUNfVEJBLCBXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEsIFdLX0lPU19UQkEpKTsK
Ky0gKHZvaWQpc2V0RGF0YTooTlNEYXRhICopZGF0YSBuZXdDb250ZW50VHlwZToobnVsbGFibGUg
TlNTdHJpbmcgKiluZXdDb250ZW50VHlwZSBuZXdGaWxlbmFtZToobnVsbGFibGUgTlNTdHJpbmcg
KiluZXdGaWxlbmFtZSBjb21wbGV0aW9uOih2b2lkKF4gX051bGxhYmxlKShOU0Vycm9yICogX051
bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VN
RU5UKCJQbGVhc2UgdXNlIC1zZXRGaWxlV3JhcHBlcjpjb250ZW50VHlwZTpjb21wbGV0aW9uOiBp
bnN0ZWFkLiIsIG1hY29zeCgxMC4xMy40LCBXS19NQUNfVEJBKSwgaW9zKDExLjMsIFdLX0lPU19U
QkEpKTsKKwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KaW5kZXggNWYwMGM4Y2Vl
MmEzZjVjZDYxNWE4ODZjYTU3YTFhZmIyNzJhNzQxZC4uZTVjOWU3YjRlZjkyM2M3MmQzZjAwZmRh
ZmUzYTU3YzkwYzhjN2JmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F0dGFjaG1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F0dGFjaG1lbnQubW0KQEAgLTM1LDYgKzM1LDEwIEBACiAjaW1wb3J0IDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKKyNpZiBQTEFU
Rk9STShJT1MpCisjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2Vz
Lmg+CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogQGltcGxlbWVudGF0aW9u
IF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyA6IE5TT2JqZWN0CkBAIC00Nyw0MSArNTEsMzYg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIF9XS0F0
dGFjaG1lbnRJbmZvIHsKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBfZGF0YTsKLSAgICBSZXRhaW5Q
dHI8TlNTdHJpbmc+IF9uYW1lOwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2ZpbGVQYXRoOwor
ICAgIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBfZmlsZVdyYXBwZXI7CiAgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBfY29udGVudFR5cGU7Ci0gICAgUmV0YWluUHRyPE5TRXJyb3I+IF9maWxlTG9h
ZGluZ0Vycm9yOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2ZpbGVQYXRoOwogfQogCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhJbmZvOihjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50SW5mbyYp
aW5mbworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIg
KilmaWxlV3JhcHBlciBmaWxlUGF0aDooTlNTdHJpbmcgKilmaWxlUGF0aCBjb250ZW50VHlwZToo
TlNTdHJpbmcgKiljb250ZW50VHlwZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX2RhdGEgPSBpbmZvLmRhdGEgPyBpbmZvLmRh
dGEtPmNyZWF0ZU5TRGF0YSgpIDogbmlsOwotICAgIF9jb250ZW50VHlwZSA9IGFkb3B0TlMoWyhO
U1N0cmluZyAqKWluZm8uY29udGVudFR5cGUgPzogQCIiIGNvcHldKTsKLSAgICBfbmFtZSA9IGFk
b3B0TlMoWyhOU1N0cmluZyAqKWluZm8ubmFtZSA/OiBAIiIgY29weV0pOwotICAgIF9maWxlUGF0
aCA9IGFkb3B0TlMoWyhOU1N0cmluZyAqKWluZm8uZmlsZVBhdGggPzogQCIiIGNvcHldKTsKLSAg
ICBfZmlsZUxvYWRpbmdFcnJvciA9IG5pbDsKLQotICAgIGlmICghX2RhdGEgJiYgW19maWxlUGF0
aCBsZW5ndGhdKSB7Ci0gICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgICAgICBfZGF0
YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpfZmlsZVBhdGguZ2V0KCkgb3B0aW9u
czpOU0RhdGFSZWFkaW5nTWFwcGVkSWZTYWZlIGVycm9yOiZlcnJvcl07Ci0gICAgICAgIF9maWxl
TG9hZGluZ0Vycm9yID0gZXJyb3I7Ci0gICAgfQotCisgICAgX2ZpbGVXcmFwcGVyID0gZmlsZVdy
YXBwZXI7CisgICAgX2ZpbGVQYXRoID0gZmlsZVBhdGg7CisgICAgX2NvbnRlbnRUeXBlID0gY29u
dGVudFR5cGU7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKE5TRGF0YSAqKWRhdGEKIHsKLSAg
ICByZXR1cm4gX2RhdGEuZ2V0KCk7CisgICAgaWYgKCFbX2ZpbGVXcmFwcGVyIGlzUmVndWxhckZp
bGVdKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIFtfZmlsZVdyYXBwZXIgcmVn
dWxhckZpbGVDb250ZW50c107CiB9CiAKIC0gKE5TU3RyaW5nICopbmFtZQogewotICAgIHJldHVy
biBfbmFtZS5nZXQoKTsKKyAgICBpZiAoW19maWxlV3JhcHBlciBmaWxlbmFtZV0ubGVuZ3RoKQor
ICAgICAgICByZXR1cm4gW19maWxlV3JhcHBlciBmaWxlbmFtZV07CisKKyAgICByZXR1cm4gW19m
aWxlV3JhcHBlciBwcmVmZXJyZWRGaWxlbmFtZV07CiB9CiAKIC0gKE5TU3RyaW5nICopZmlsZVBh
dGgKQEAgLTg5LDE0ICs4OCw0NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgIHJldHVy
biBfZmlsZVBhdGguZ2V0KCk7CiB9CiAKK3N0YXRpYyBCT09MIGlzRGVjbGFyZWRPckR5bmFtaWNU
eXBlSWRlbnRpZmllcihOU1N0cmluZyAqdHlwZSkKK3sKKyAgICByZXR1cm4gVVRUeXBlSXNEZWNs
YXJlZCgoQ0ZTdHJpbmdSZWYpdHlwZSkgfHwgVVRUeXBlSXNEeW5hbWljKChDRlN0cmluZ1JlZil0
eXBlKTsKK30KKworLSAoTlNTdHJpbmcgKilfdHlwZUlkZW50aWZpZXJGcm9tUGF0aEV4dGVuc2lv
bgoreworICAgIE5TU3RyaW5nICpleHRlbnNpb24gPSBzZWxmLm5hbWUucGF0aEV4dGVuc2lvbjsK
KyAgICBhdXRvIHR5cGVJZGVudGlmaWVyID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJ
ZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24sIChDRlN0cmluZ1Jl
ZilleHRlbnNpb24sIG5pbCkpOworICAgIHJldHVybiAoTlNTdHJpbmcgKil0eXBlSWRlbnRpZmll
ci5hdXRvcmVsZWFzZSgpOworfQorCiAtIChOU1N0cmluZyAqKWNvbnRlbnRUeXBlCiB7Ci0gICAg
cmV0dXJuIF9jb250ZW50VHlwZS5nZXQoKTsKKyAgICAvLyBBICJjb250ZW50IHR5cGUiIGNhbiBy
ZWZlciB0byBlaXRoZXIgYSBVVEkgb3IgYSBNSU1FIHR5cGUuIFdlIHByZWZlciBNSU1FIHR5cGUg
aGVyZSB0byBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvci4KKyAgICByZXR1cm4gc2VsZi5taW1l
VHlwZSA/OiBzZWxmLnV0aVR5cGU7Cit9CisKKy0gKE5TU3RyaW5nICopbWltZVR5cGUKK3sKKyAg
ICBOU1N0cmluZyAqY29udGVudFR5cGUgPSBbX2NvbnRlbnRUeXBlIGxlbmd0aF0gPyBfY29udGVu
dFR5cGUuZ2V0KCkgOiBbc2VsZiBfdHlwZUlkZW50aWZpZXJGcm9tUGF0aEV4dGVuc2lvbl07Cisg
ICAgaWYgKCFpc0RlY2xhcmVkT3JEeW5hbWljVHlwZUlkZW50aWZpZXIoY29udGVudFR5cGUpKQor
ICAgICAgICByZXR1cm4gY29udGVudFR5cGU7CisKKyAgICBhdXRvIG1pbWVUeXBlID0gYWRvcHRD
RihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKChDRlN0cmluZ1JlZiljb250ZW50VHlw
ZSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOworICAgIHJldHVybiAoTlNTdHJpbmcgKiltaW1lVHlw
ZS5hdXRvcmVsZWFzZSgpOworfQorCistIChOU1N0cmluZyAqKXV0aVR5cGUKK3sKKyAgICBOU1N0
cmluZyAqY29udGVudFR5cGUgPSBbX2NvbnRlbnRUeXBlIGxlbmd0aF0gPyBfY29udGVudFR5cGUu
Z2V0KCkgOiBbc2VsZiBfdHlwZUlkZW50aWZpZXJGcm9tUGF0aEV4dGVuc2lvbl07CisgICAgaWYg
KGlzRGVjbGFyZWRPckR5bmFtaWNUeXBlSWRlbnRpZmllcihjb250ZW50VHlwZSkpCisgICAgICAg
IHJldHVybiBjb250ZW50VHlwZTsKKworICAgIGF1dG8gdXRpVHlwZSA9IGFkb3B0Q0YoVVRUeXBl
Q3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCAoQ0ZT
dHJpbmdSZWYpY29udGVudFR5cGUsIG5pbCkpOworICAgIHJldHVybiAoTlNTdHJpbmcgKil1dGlU
eXBlLmF1dG9yZWxlYXNlKCk7CiB9CiAKLS0gKE5TRXJyb3IgKilmaWxlTG9hZGluZ0Vycm9yCist
IChOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBwZXIKIHsKLSAgICByZXR1cm4gX2ZpbGVMb2FkaW5n
RXJyb3IuZ2V0KCk7CisgICAgcmV0dXJuIF9maWxlV3JhcHBlci5nZXQoKTsKIH0KIAogQGVuZApA
QCAtMTA4LDM3ICsxNDAsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICByZXR1cm4g
Kl9hdHRhY2htZW50OwogfQogCi0tIChCT09MKWlzRXF1YWw6KGlkKW9iamVjdAorLSAoX1dLQXR0
YWNobWVudEluZm8gKilpbmZvCiB7Ci0gICAgcmV0dXJuIFtvYmplY3QgaXNLaW5kT2ZDbGFzczpb
X1dLQXR0YWNobWVudCBjbGFzc11dICYmIFtzZWxmLnVuaXF1ZUlkZW50aWZpZXIgaXNFcXVhbDpb
KF9XS0F0dGFjaG1lbnQgKilvYmplY3QgdW5pcXVlSWRlbnRpZmllcl1dOworICAgIHJldHVybiBb
W1tfV0tBdHRhY2htZW50SW5mbyBhbGxvY10gaW5pdFdpdGhGaWxlV3JhcHBlcjpfYXR0YWNobWVu
dC0+ZmlsZVdyYXBwZXIoKSBmaWxlUGF0aDpfYXR0YWNobWVudC0+ZmlsZVBhdGgoKSBjb250ZW50
VHlwZTpfYXR0YWNobWVudC0+Y29udGVudFR5cGUoKV0gYXV0b3JlbGVhc2VdOwogfQogCiAtICh2
b2lkKXJlcXVlc3RJbmZvOih2b2lkKF4pKF9XS0F0dGFjaG1lbnRJbmZvICosIE5TRXJyb3IgKikp
Y29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBfYXR0YWNobWVudC0+cmVxdWVzdEluZm8oW2NhcHR1
cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgV2ViQ29y
ZTo6QXR0YWNobWVudEluZm8mIGluZm8sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAg
ICAgICAgaWYgKCFjYXB0dXJlZEJsb2NrKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7Ci0gICAgICAgICAgICBj
YXB0dXJlZEJsb2NrKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4g
Y29kZTpXS0Vycm9yV2ViVmlld0ludmFsaWRhdGVkIHVzZXJJbmZvOm5pbF0pOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBhdHRhY2htZW50SW5mbyA9IGFk
b3B0TlMoW1tfV0tBdHRhY2htZW50SW5mbyBhbGxvY10gaW5pdFdpdGhJbmZvOmluZm9dKTsKLSAg
ICAgICAgaWYgKE5TRXJyb3IgKmZpbGVMb2FkaW5nRXJyb3IgPSBbYXR0YWNobWVudEluZm8gZmls
ZUxvYWRpbmdFcnJvcl0pIHsKLSAgICAgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCBbTlNFcnJv
ciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJ
bmZvOkB7IE5TVW5kZXJseWluZ0Vycm9yS2V5IDogZmlsZUxvYWRpbmdFcnJvciB9XSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBjYXB0dXJlZEJsb2NrKGF0dGFj
aG1lbnRJbmZvLmdldCgpLCBuaWwpOwotICAgIH0pOwotfQotCi0tICh2b2lkKXJlcXVlc3REYXRh
Oih2b2lkKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAg
W3NlbGYgcmVxdWVzdEluZm86W3Byb3RlY3RlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0gKF9XS0F0dGFjaG1lbnRJbmZvICppbmZvLCBOU0Vycm9yICplcnJvcikgewot
ICAgICAgICBwcm90ZWN0ZWRCbG9jayhpbmZvLmRhdGEsIGVycm9yKTsKLSAgICB9XTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihzZWxmLmluZm8sIG5pbCk7CiB9CiAKIC0gKHZvaWQpc2V0RGlzcGxh
eU9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMgY29tcGxldGlv
bjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCkBAIC0xNTUsMTAgKzE2NCwx
NCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgIH0pOwogfQogCi0tICh2b2lkKXNldERh
dGE6KE5TRGF0YSAqKWRhdGEgbmV3Q29udGVudFR5cGU6KE5TU3RyaW5nICopbmV3Q29udGVudFR5
cGUgbmV3RmlsZW5hbWU6KE5TU3RyaW5nICopbmV3RmlsZW5hbWUgY29tcGxldGlvbjoodm9pZChe
KShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKXNldEZpbGVXcmFwcGVyOihO
U0ZpbGVXcmFwcGVyICopZmlsZVdyYXBwZXIgY29udGVudFR5cGU6KE5TU3RyaW5nICopY29udGVu
dFR5cGUgY29tcGxldGlvbjoodm9pZCAoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgog
ewotICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7
Ci0gICAgX2F0dGFjaG1lbnQtPnNldERhdGFBbmRDb250ZW50VHlwZShidWZmZXIuZ2V0KCksIG5l
d0NvbnRlbnRUeXBlLCBuZXdGaWxlbmFtZSwgW2NhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpLCBjYXB0dXJlZEJ1ZmZlciA9IGJ1ZmZlci5jb3B5UmVmKCldIChD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgYXV0byBmaWxlU2l6ZSA9IFtbW2ZpbGVX
cmFwcGVyIGZpbGVBdHRyaWJ1dGVzXSBvYmplY3RGb3JLZXk6TlNGaWxlU2l6ZV0gdW5zaWduZWRM
b25nTG9uZ1ZhbHVlXTsKKyAgICBpZiAoIWZpbGVTaXplICYmIGZpbGVXcmFwcGVyLnJlZ3VsYXJG
aWxlKQorICAgICAgICBmaWxlU2l6ZSA9IGZpbGVXcmFwcGVyLnJlZ3VsYXJGaWxlQ29udGVudHMu
bGVuZ3RoOworCisgICAgX2F0dGFjaG1lbnQtPnNldEZpbGVXcmFwcGVyKGZpbGVXcmFwcGVyKTsK
KyAgICBfYXR0YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyhmaWxlU2l6ZSwgY29udGVudFR5cGUs
IFtmaWxlV3JhcHBlciBwcmVmZXJyZWRGaWxlbmFtZV0sIFtjYXB0dXJlZEJsb2NrID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8gZXJyb3IpIHsKICAgICAgICAgaWYgKCFj
YXB0dXJlZEJsb2NrKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNjksMTkgKzE4MiwyMiBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgIH0pOwogfQogCi0tIChOU1N0cmluZyAqKXVu
aXF1ZUlkZW50aWZpZXIKKy0gKHZvaWQpc2V0RGF0YTooTlNEYXRhICopZGF0YSBuZXdDb250ZW50
VHlwZTooTlNTdHJpbmcgKiluZXdDb250ZW50VHlwZSBuZXdGaWxlbmFtZTooTlNTdHJpbmcgKilu
ZXdGaWxlbmFtZSBjb21wbGV0aW9uOih2b2lkKF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRs
ZXIKIHsKLSAgICByZXR1cm4gX2F0dGFjaG1lbnQtPmlkZW50aWZpZXIoKTsKKyAgICBhdXRvIGZp
bGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmls
ZVdpdGhDb250ZW50czpkYXRhXSk7CisgICAgaWYgKG5ld0ZpbGVuYW1lKQorICAgICAgICBbZmls
ZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6bmV3RmlsZW5hbWVdOworICAgIFtzZWxmIHNl
dEZpbGVXcmFwcGVyOmZpbGVXcmFwcGVyLmdldCgpIGNvbnRlbnRUeXBlOm5ld0NvbnRlbnRUeXBl
IGNvbXBsZXRpb246Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCi0tIChOU1VJbnRlZ2VyKWhhc2gK
Ky0gKE5TU3RyaW5nICopdW5pcXVlSWRlbnRpZmllcgogewotICAgIHJldHVybiBbc2VsZi51bmlx
dWVJZGVudGlmaWVyIGhhc2hdOworICAgIHJldHVybiBfYXR0YWNobWVudC0+aWRlbnRpZmllcigp
OwogfQogCiAtIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCiB7Ci0gICAgcmV0dXJuIFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAIGlkPSclQCc+IiwgW3NlbGYgY2xhc3NdLCBzZWxmLnVu
aXF1ZUlkZW50aWZpZXJdOworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IjwlQCAlcCBpZD0nJUAnPiIsIFtzZWxmIGNsYXNzXSwgc2VsZiwgc2VsZi51bmlxdWVJZGVudGlm
aWVyXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KaW5kZXggODM3ZWMxYTAyNWNhZTRjYTkzZGEwZjEwNjYx
MDU0MWZmYTI1NGU3Yy4uZDZlMGU0Mjk3MTAxYjY0NTQ4OWY5MDhkODBlNThiODhjYjAxZjYzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLm1tCkBAIC01Miw2ICs1Miw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6ZGlk
SW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0CiAgICAg
W21fd2ViVmlldyBfZGlkSW5zZXJ0QXR0YWNobWVudDppZGVudGlmaWVyIHdpdGhTb3VyY2U6c291
cmNlXTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOworICAgIFVOVVNFRF9Q
QVJBTShzb3VyY2UpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggNWJhMjgyNDBjMGNkNWZkZGM3Zjg1
ZTUyNzAwYTllNDIzZGFmNDA5OS4uZWNkYzY4ODFiNTg0MjA2YzFkMjI0ZGQxZDFjMzUyYWFjZmE5
ZDdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAKKyNpbXBvcnQgIkFQSUF0dGFjaG1lbnQuaCIKICNpbXBvcnQg
IkFQSVVJQ2xpZW50LmgiCiAjaW1wb3J0ICJEYXRhRGV0ZWN0aW9uUmVzdWx0LmgiCiAjaW1wb3J0
ICJMb2FkUGFyYW1ldGVycy5oIgpAQCAtMTYwLDQgKzE2MSwyNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0RHJhZ0NhcmV0UmVjdChjb25zdCBJbnRSZWN0JiBkcmFnQ2FyZXRSZWN0KQogCiAjZW5k
aWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCisKK3ZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8
QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1lbnQsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmls
ZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3sKKyAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBk
YXRhUmVmZXJlbmNlLnNpemUoKSk7CisgICAgYXV0byBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tO
U0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6YnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpXSk7CisgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZl
cnJlZEZpbGVuYW1lOnByZWZlcnJlZEZpbGVOYW1lXTsKKyAgICBhdHRhY2htZW50LT5zZXRGaWxl
V3JhcHBlcihmaWxlV3JhcHBlci5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpwbGF0
Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1lbnQs
IGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgYXV0byBmaWxlV3JhcHBlciA9IGFkb3B0
TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoOmZpbGVQYXRoXSBvcHRpb25zOjAgZXJyb3I6bmlsXSk7CisgICAgYXR0YWNobWVudC0+c2V0
RmlsZVdyYXBwZXIoZmlsZVdyYXBwZXIuZ2V0KCkpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
cGxhdGZvcm1DbG9uZUF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiBmcm9tQXR0YWNo
bWVudCwgUmVmPEFQSTo6QXR0YWNobWVudD4mJiB0b0F0dGFjaG1lbnQpCit7CisgICAgdG9BdHRh
Y2htZW50LT5zZXRGaWxlV3JhcHBlcihmcm9tQXR0YWNobWVudC0+ZmlsZVdyYXBwZXIoKSk7Cit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAyNzA0MjNmNmViMTM5YTY4YmY1Y2Ix
OGY4ZWVmNWE3YzM4NjhhNGNiLi42MGQ5NjUwMTVhMzQ5MzNkYmQ0Mzc3MDY4MmI3OWU4NzM3OGEx
ZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTU2MDEs
MjIgKzU2MDEsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7CiB9CiAKLSNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotCi12b2lkIFdlYlBhZ2VQcm94eTo6YXR0YWNobWVu
dEluZm9DYWxsYmFjayhjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50SW5mbyYgaW5mbywgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQotewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtl
PEF0dGFjaG1lbnRJbmZvQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwotICAgIGlmICghY2FsbGJhY2sp
IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBNRVNTQUdFX0NIRUNLX1VSTChpbmZvLmZpbGVQYXRoKTsKLSAgICBjYWxsYmFjay0+
cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGluZm8pOwotfQotCi0jZW5kaWYKLQogdm9p
ZCBXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGFSZWZlcmVuY2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNr
ID0gbV9jYWxsYmFja3MudGFrZTxEYXRhQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwpAQCAtNjE5Niw2
ICs2MTgwLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhp
dGVkKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB0ZXJtaW5hCiAgICAgbV90b3VjaEV2ZW50UXVl
dWUuY2xlYXIoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAg
ICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IG1fYXR0YWNobWVudElkZW50aWZpZXJUb0F0dGFjaG1l
bnRNYXAua2V5cygpKQorICAgICAgICBtX3BhZ2VDbGllbnQuZGlkUmVtb3ZlQXR0YWNobWVudChp
ZGVudGlmaWVyKTsKKyAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLmNs
ZWFyKCk7CisjZW5kaWYKKwogICAgIGlmICh0ZXJtaW5hdGlvblJlYXNvbiAhPSBQcm9jZXNzVGVy
bWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwKSB7CiAgICAgICAgIFBhZ2VMb2FkU3RhdGU6
OlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7
CiAgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5yZXNldCh0cmFuc2FjdGlvbik7CkBAIC03NzQxLDI2
ICs3NzMxLDI5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0b3VjaEJhck1lbnVJdGVtRGF0YVJlbW92
ZWQoY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmIHRvdWNoCiAKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQogCi12b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudChjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYgb3B0
aW9ucywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRl
bnRUeXBlLCBTaGFyZWRCdWZmZXImIGRhdGEsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2spCitSZWZQdHI8QVBJOjpBdHRhY2htZW50PiBXZWJQYWdlUHJveHk6
OmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3QK
IHsKLSAgICBpZiAoIWlzVmFsaWQoKSkgewotICAgICAgICBjYWxsYmFjayhDYWxsYmFja0Jhc2U6
OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAg
ICBpZiAoaWRlbnRpZmllci5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChpZGVudGlm
aWVyLCBvcHRpb25zLCBmaWxlbmFtZSwgY29udGVudFR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSB7ICZkYXRhIH0sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgcmV0dXJu
IG1fYXR0YWNobWVudElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXAuZ2V0KGlkZW50aWZpZXIpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF0dGFjaG1lbnRJbmZvKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChjb25zdCBBdHRhY2htZW50SW5mbyYsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6Omluc2VydEF0
dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiBhdHRhY2htZW50LCBjb25zdCBBdHRhY2ht
ZW50RGlzcGxheU9wdGlvbnMmIG9wdGlvbnMsIHVpbnQ2NF90IGZpbGVTaXplLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIEZ1bmN0aW9u
PHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFpc1Zh
bGlkKCkpIHsKLSAgICAgICAgY2FsbGJhY2soeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25l
cldhc0ludmFsaWRhdGVkKTsKKyAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNlOjpFcnJvcjo6
T3duZXJXYXNJbnZhbGlkYXRlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAo
Y29udGVudFR5cGUpCisgICAgICAgIGF0dGFjaG1lbnQtPnNldENvbnRlbnRUeXBlKCpjb250ZW50
VHlwZSk7CisKKyAgICBhdXRvIGF0dGFjaG1lbnRJZGVudGlmaWVyID0gYXR0YWNobWVudC0+aWRl
bnRpZmllcigpOworICAgIG1fYXR0YWNobWVudElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXAuc2V0
KGF0dGFjaG1lbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKKwogICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdHRhY2htZW50SW5mbyhpZGVudGlmaWVy
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChhdHRhY2htZW50SWRlbnRpZmllciwgb3B0aW9ucywg
ZmlsZVNpemUsIGZpbGVuYW1lLCBjb250ZW50VHlwZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBvcHRpb25zLCBG
dW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQpAQCAtNzc3NCw3
ICs3NzY3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9u
cyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIEF0dGFjaG0KICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhpZGVudGlmaWVy
LCBvcHRpb25zLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6c2V0QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIFNoYXJlZEJ1ZmZlciYgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYgbmV3Q29udGVu
dFR5cGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0ZpbGVuYW1lLCBGdW5jdGlvbjx2b2lk
KENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6OnVw
ZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgdWludDY0
X3QgZmlsZVNpemUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0NvbnRlbnRUeXBlLCBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdGaWxlbmFtZSwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAg
ICBjYWxsYmFjayhDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKQEAg
LTc3ODIsMTkgKzc3NzUsODcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEF0dGFjaG1lbnREYXRh
QW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBTaGEKICAgICB9CiAKICAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdHRhY2htZW50RGF0YUFuZENvbnRl
bnRUeXBlKGlkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7ICZkYXRh
IH0sIFdURk1vdmUobmV3Q29udGVudFR5cGUpLCBXVEZNb3ZlKG5ld0ZpbGVuYW1lKSwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGlkZW50aWZpZXIsIGZpbGVTaXplLCBXVEZNb3Zl
KG5ld0NvbnRlbnRUeXBlKSwgV1RGTW92ZShuZXdGaWxlbmFtZSksIGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyRnJvbURhdGEoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEpCit7CisgICAgaWYgKGF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGlkZW50
aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGF0dGFjaG1lbnQgPSBlbnN1cmVB
dHRhY2htZW50KGlkZW50aWZpZXIpOworICAgIGF0dGFjaG1lbnQtPnNldENvbnRlbnRUeXBlKGNv
bnRlbnRUeXBlKTsKKyAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLnNl
dChpZGVudGlmaWVyLCBhdHRhY2htZW50LmNvcHlSZWYoKSk7CisKKyAgICBwbGF0Zm9ybVJlZ2lz
dGVyQXR0YWNobWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpLCBwcmVmZXJyZWRGaWxlTmFtZSwgZGF0
YSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
RnJvbUZpbGVQYXRoKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICBpZiAoYXR0YWNobWVudEZv
cklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gYXR0
YWNobWVudCA9IGVuc3VyZUF0dGFjaG1lbnQoaWRlbnRpZmllcik7CisgICAgYXR0YWNobWVudC0+
c2V0Q29udGVudFR5cGUoY29udGVudFR5cGUpOworICAgIGF0dGFjaG1lbnQtPnNldEZpbGVQYXRo
KGZpbGVQYXRoKTsKKyAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLnNl
dChpZGVudGlmaWVyLCBhdHRhY2htZW50LmNvcHlSZWYoKSk7CisKKyAgICBwbGF0Zm9ybVJlZ2lz
dGVyQXR0YWNobWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpLCBmaWxlUGF0aCk7Cit9CisKK3ZvaWQg
V2ViUGFnZVByb3h5OjpjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgZnJvbUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9JZGVudGlmaWVyKQoreworICAgIGF1dG8gbmV3QXR0YWNo
bWVudCA9IGVuc3VyZUF0dGFjaG1lbnQodG9JZGVudGlmaWVyKTsKKyAgICBhdXRvIGV4aXN0aW5n
QXR0YWNobWVudCA9IGF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGZyb21JZGVudGlmaWVyKTsKKyAg
ICBpZiAoIWV4aXN0aW5nQXR0YWNobWVudCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG5ld0F0dGFjaG1lbnQtPnNldENvbnRl
bnRUeXBlKGV4aXN0aW5nQXR0YWNobWVudC0+Y29udGVudFR5cGUoKSk7CisgICAgbmV3QXR0YWNo
bWVudC0+c2V0RmlsZVBhdGgoZXhpc3RpbmdBdHRhY2htZW50LT5maWxlUGF0aCgpKTsKKworICAg
IHBsYXRmb3JtQ2xvbmVBdHRhY2htZW50KGV4aXN0aW5nQXR0YWNobWVudC5yZWxlYXNlTm9uTnVs
bCgpLCBXVEZNb3ZlKG5ld0F0dGFjaG1lbnQpKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkK
Kwordm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6
OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpCit7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJl
Z2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25zdCBTdHJpbmcmKQor
eworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1DbG9uZUF0dGFjaG1lbnQoUmVmPEFQ
STo6QXR0YWNobWVudD4mJiwgUmVmPEFQSTo6QXR0YWNobWVudD4mJikKK3sKK30KKworI2VuZGlm
CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRJbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2UpCiB7CisgICAgZW5zdXJlQXR0YWNobWVu
dChpZGVudGlmaWVyKTsKICAgICBtX3BhZ2VDbGllbnQuZGlkSW5zZXJ0QXR0YWNobWVudChpZGVu
dGlmaWVyLCBzb3VyY2UpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVtb3ZlQXR0YWNo
bWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiB7CisgICAgQVNTRVJUKGF0dGFjaG1lbnRG
b3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKTsKICAgICBtX3BhZ2VDbGllbnQuZGlkUmVtb3ZlQXR0
YWNobWVudChpZGVudGlmaWVyKTsKIH0KIAorUmVmPEFQSTo6QXR0YWNobWVudD4gV2ViUGFnZVBy
b3h5OjplbnN1cmVBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBp
ZiAoYXV0byBleGlzdGluZ0F0dGFjaG1lbnQgPSBhdHRhY2htZW50Rm9ySWRlbnRpZmllcihpZGVu
dGlmaWVyKSkKKyAgICAgICAgcmV0dXJuICpleGlzdGluZ0F0dGFjaG1lbnQ7CisKKyAgICBhdXRv
IGF0dGFjaG1lbnQgPSBBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZShpZGVudGlmaWVyLCAqdGhpcyk7
CisgICAgbV9hdHRhY2htZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1hcC5zZXQoaWRlbnRpZmll
ciwgYXR0YWNobWVudC5jb3B5UmVmKCkpOworICAgIHJldHVybiBhdHRhY2htZW50OworfQorCiAj
ZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAogdm9pZCBXZWJQYWdlUHJveHk6
OndyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwg
RnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhNmY5NTg3ZDQzZWNiYjBhOWViNGY2ZTU2MGYzYWNm
YjJmOWUyZmUwLi5lNGM1N2Q5MGE3YWU1N2MwMmQxYmFjYjhhY2NkNjNjZmQzMWE4YTU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTM1LDYgKzEzNSw3IEBAIGNs
YXNzIE1lZGlhU2Vzc2lvbk1ldGFkYXRhOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBBUEkgeworY2xh
c3MgQXR0YWNobWVudDsKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50OwogY2xhc3MgRmluZENsaWVu
dDsKIGNsYXNzIEZpbmRNYXRjaGVzQ2xpZW50OwpAQCAtMTk3LDcgKzE5OCw2IEBAIHVzaW5nIEZs
b2F0Qm94RXh0ZW50ID0gUmVjdEVkZ2VzPGZsb2F0PjsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEF0dGFjaG1lbnREaXNwbGF5T3B0
aW9uczsKLXN0cnVjdCBBdHRhY2htZW50SW5mbzsKIH0KICNlbmRpZgogCkBAIC0yNzUsMTAgKzI3
NSw2IEBAIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEVkaXRpbmdSYW5nZT4gRWRpdGluZ1Jhbmdl
Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmPiBTdHJpbmdD
YWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiwgYm9vbCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyY+IFNjcmlwdFZhbHVl
Q2FsbGJhY2s7CiAKLSNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotdHlwZWRlZiBHZW5l
cmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6QXR0YWNobWVudEluZm8mPiBBdHRhY2htZW50SW5m
b0NhbGxiYWNrOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShHVEspCiB0eXBlZGVmIEdlbmVyaWND
YWxsYmFjazxBUEk6OkVycm9yKj4gUHJpbnRGaW5pc2hlZENhbGxiYWNrOwogI2VuZGlmCkBAIC0x
MzE5LDExICsxMzE1LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKLSAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmLCBjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudEluZm8oY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvJiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIFJlZlB0cjxBUEk6OkF0dGFjaG1lbnQ+IGF0dGFj
aG1lbnRGb3JJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3Q7CisgICAg
dm9pZCBpbnNlcnRBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFdlYkNv
cmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYsIHVpbnQ2NF90IGZpbGVTaXplLCBjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIEZ1bmN0
aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgc2V0QXR0YWNobWVu
dERpc3BsYXlPcHRpb25zKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgV2ViQ29yZTo6QXR0YWNo
bWVudERpc3BsYXlPcHRpb25zLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKLSAgICB2b2lkIHNldEF0dGFjaG1lbnREYXRhQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiYmIG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdGaWxl
bmFtZSwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBh
dHRhY2htZW50SW5mb0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvJiwgQ2Fs
bGJhY2tJRCk7CisgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIHVpbnQ2NF90IGZpbGVTaXplLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4m
JiBuZXdDb250ZW50VHlwZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYgbmV3RmlsZW5hbWUsIEZ1
bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkBAIC0xODA3LDggKzE4MDIsMTcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHN0b3BBbGxVUkxTY2hlbWVUYXNrcygpOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0
YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
OworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21GaWxlUGF0aChjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgpOworICAgIHZvaWQgY2xvbmVBdHRhY2htZW50RGF0YShjb25zdCBTdHJp
bmcmIGZyb21JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRvSWRlbnRpZmllcik7CisKKyAgICB2
b2lkIHBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNv
bnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
OworICAgIHZvaWQgcGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVu
dD4mJiwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CisgICAgdm9pZCBwbGF0Zm9ybUNsb25lQXR0
YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGZyb21BdHRhY2htZW50LCBSZWY8QVBJOjpB
dHRhY2htZW50PiYmIHRvQXR0YWNobWVudCk7CisKICAgICB2b2lkIGRpZEluc2VydEF0dGFjaG1l
bnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZSk7CiAgICAg
dm9pZCBkaWRSZW1vdmVBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7CisgICAg
UmVmPEFQSTo6QXR0YWNobWVudD4gZW5zdXJlQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNT
X1dJTkRPV1NFUlZFUl9CTE9DS0lORykKQEAgLTIyMDgsNiArMjIxMiwxMCBAQCBwcml2YXRlOgog
CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZjxXZWJVUkxTY2hlbWVIYW5kbGVyPj4gbV91cmxTY2hl
bWVIYW5kbGVyc0J5U2NoZW1lOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxXZWJVUkxTY2hl
bWVIYW5kbGVyPj4gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllcjsKKworI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZjxBUEk6OkF0dGFj
aG1lbnQ+PiBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwOworI2VuZGlmCiAg
ICAgICAgIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VS
VkVSX0JMT0NLSU5HKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGluaz4gbV9kaXNwbGF5
TGluazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgppbmRleCA2OGQ2Y2I5YjhhMGU0OGFkZDlmZTdhNzY3MDZlYmFkYjUyYzAwNDNiLi4xNjc4
ZjMyMmI0ZTQ4OTc1MjQ1NjU0YjI1OWViYmNhMzJkMjdlMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xNzYsOSArMTc2LDYg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBFZGl0aW5nUmFuZ2VDYWxsYmFjayhz
dHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIFVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QgcmVzdWx0LCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhX
ZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBhY3R1YWxS
YW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0jaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKLSAgICBBdHRhY2htZW50SW5mb0NhbGxiYWNrKHN0cnVjdCBXZWJDb3JlOjpB
dHRhY2htZW50SW5mbyBpbmZvLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7Ci0jZW5k
aWYKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgQXBwbGljYXRpb25NYW5p
ZmVzdENhbGxiYWNrKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4g
bWFuaWZlc3QsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCkBAIC01Mjgs
NiArNTI1LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICBSZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
RnJvbURhdGEoU3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIHBy
ZWZlcnJlZEZpbGVOYW1lLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBSZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyRnJvbUZpbGVQYXRoKFN0cmluZyBpZGVudGlmaWVyLCBTdHJpbmcg
Y29udGVudFR5cGUsIFN0cmluZyBmaWxlUGF0aCkKKyAgICBDbG9uZUF0dGFjaG1lbnREYXRhKFN0
cmluZyBmcm9tSWRlbnRpZmllciwgU3RyaW5nIHRvSWRlbnRpZmllcikKICAgICBEaWRJbnNlcnRB
dHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBTdHJpbmcgc291cmNlKQogICAgIERpZFJlbW92
ZUF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggMWM3YWJmYzI2YzYzNmQ5
NDgwZTNmZGRjN2M2YmVhNTEzMzJmMjZiOS4uNDE1ZTY2OWU4MWJlNjVhM2U5ZDRkMDc0MTFlOTc1
M2U3YjVlOWM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmgKQEAgLTM1LDcgKzM1LDcgQEAgT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3Owog
T0JKQ19DTEFTUyBXS0VkaXRvclVuZG9UYXJnZXRPYmpDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci1zdHJ1Y3QgUHJvbWlzZWRCbG9iSW5mbzsKK3N0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZv
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBmOTBhMmY4YTc1NWQ5YjYzODI0NDU2NmRk
ZDA5NjI3MDcwM2UyMTE1Li4wMTc0OThlYWUyMGIwY2FiZTA2MTY4MTQ1MmRhMjNhMzk3YzI3NWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tCkBAIC01Myw3ICs1Myw3IEBACiAjaW1wb3J0ICJfV0tEb3dubG9hZEludGVybmFsLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRm
b3JtU2NyZWVuLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Byb21pc2VkQmxvYkluZm8uaD4KKyNpbXBv
cnQgPFdlYkNvcmUvUHJvbWlzZWRBdHRhY2htZW50SW5mby5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9WYWxpZGF0aW9uQnViYmxlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggY2M0NWM1Y2Zm
MjIwZDMyNTc2NWYwYTA3MjFlMTFiOTk4NTE0OTQ2OS4uYTIyODMwYWRmZjNjODRiN2I1YWU0ZGRl
OWZiM2E0MTJiYTc2MjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtNjEsNyArNjEsNyBAQCBjbGFzcyBD
b2xvcjsKIGNsYXNzIEZsb2F0UXVhZDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBTZWxlY3Rpb25S
ZWN0Owotc3RydWN0IFByb21pc2VkQmxvYkluZm87CitzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50
SW5mbzsKIGVudW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpp
bmRleCBlODI5ZDQ1MDEyNWYwN2M4NTIzYTczOTM2MGE4MDE2NTY2YTFmOTY4Li4wMDk2MDQ5OGQx
NTc4NjViNTYzZWM2YTMyNjRhYzQ5ZGUxZGFhMTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTgwLDcg
KzgwLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9QYXRoLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhdGhVdGlsaXRpZXMuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvUHJvbWlzZWRCbG9iSW5mby5oPgorI2ltcG9ydCA8V2ViQ29yZS9Qcm9taXNlZEF0dGFj
aG1lbnRJbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dElu
ZGljYXRvci5oPgpAQCAtNDg3Myw4ICs0ODczLDggQEAgc3RhdGljIEJPT0wgc2hvdWxkRW5hYmxl
RHJhZ0ludGVyYWN0aW9uRm9yUG9saWN5KF9XS0RyYWdJbnRlcmFjdGlvblBvbGljeSBwb2xpY3kK
IHsKICAgICBBU1NFUlQoaXRlbS5zb3VyY2VBY3Rpb24gIT0gRHJhZ1NvdXJjZUFjdGlvbk5vbmUp
OwogCi0gICAgaWYgKGl0ZW0ucHJvbWlzZWRCbG9iKQotICAgICAgICBbc2VsZiBfcHJlcGFyZVRv
RHJhZ1Byb21pc2VkQmxvYjppdGVtLnByb21pc2VkQmxvYl07CisgICAgaWYgKGl0ZW0ucHJvbWlz
ZWRBdHRhY2htZW50SW5mbykKKyAgICAgICAgW3NlbGYgX3ByZXBhcmVUb0RyYWdQcm9taXNlZEF0
dGFjaG1lbnQ6aXRlbS5wcm9taXNlZEF0dGFjaG1lbnRJbmZvXTsKIAogICAgIGF1dG8gZHJhZ0lt
YWdlID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTppbWFnZS5nZXQo
KSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3Jp
ZW50YXRpb25VcF0pOwogICAgIF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuc3RhZ2VEcmFnSXRl
bShpdGVtLCBkcmFnSW1hZ2UuZ2V0KCkpOwpAQCAtNTA3NSw3ICs1MDc1LDcgQEAgc3RhdGljIE5T
QXJyYXk8VUlJdGVtUHJvdmlkZXIgKj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyb3BTZXNz
aW9uKGlkIDxVSURyb3AKICAgICBbX2VkaXREcm9wQ2FyZXRWaWV3IHVwZGF0ZVRvUG9zaXRpb246
W1dLVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbldpdGhSZWN0OnJlY3RdXTsKIH0KIAotLSAodm9p
ZClfcHJlcGFyZVRvRHJhZ1Byb21pc2VkQmxvYjooY29uc3QgUHJvbWlzZWRCbG9iSW5mbyYpaW5m
bworLSAodm9pZClfcHJlcGFyZVRvRHJhZ1Byb21pc2VkQXR0YWNobWVudDooY29uc3QgUHJvbWlz
ZWRBdHRhY2htZW50SW5mbyYpaW5mbwogewogICAgIGF1dG8gc2Vzc2lvbiA9IHJldGFpblB0cihf
ZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmRyYWdTZXNzaW9uKCkpOwogICAgIGlmICghc2Vzc2lv
bikgewpAQCAtNTA4Niw3ICs1MDg2LDcgQEAgc3RhdGljIE5TQXJyYXk8VUlJdGVtUHJvdmlkZXIg
Kj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyb3BTZXNzaW9uKGlkIDxVSURyb3AKICAgICBh
dXRvIG51bWJlck9mQWRkaXRpb25hbFR5cGVzID0gaW5mby5hZGRpdGlvbmFsVHlwZXMuc2l6ZSgp
OwogICAgIEFTU0VSVChudW1iZXJPZkFkZGl0aW9uYWxUeXBlcyA9PSBpbmZvLmFkZGl0aW9uYWxE
YXRhLnNpemUoKSk7CiAKLSAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkRyYWcgc2Vzc2lv
bjogJXAgcHJlcGFyaW5nIHRvIGRyYWcgYmxvYjogJXMiLCBzZXNzaW9uLmdldCgpLCBpbmZvLmJs
b2JVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERy
b3AsICJEcmFnIHNlc3Npb246ICVwIHByZXBhcmluZyB0byBkcmFnIGJsb2I6ICVzIHdpdGggYXR0
YWNobWVudCBpZGVudGlmaWVyOiAlcyIsIHNlc3Npb24uZ2V0KCksIGluZm8uYmxvYlVSTC5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCBpbmZvLmF0dGFjaG1lbnRJZGVudGlmaWVyLnV0ZjgoKS5kYXRh
KCkpOwogCiAgICAgYXV0byByZWdpc3RyYXRpb25MaXN0ID0gYWRvcHROUyhbW1dlYkl0ZW1Qcm92
aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0IGFsbG9jXSBpbml0XSk7CiAgICAgW3JlZ2lzdHJhdGlv
bkxpc3Qgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJlc2VudGF0
aW9uU3R5bGVBdHRhY2htZW50XTsKQEAgLTUwOTksNyArNTA5OSw3IEBAIHN0YXRpYyBOU0FycmF5
PFVJSXRlbVByb3ZpZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lvbihp
ZCA8VUlEcm9wCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBbcmVnaXN0cmF0aW9uTGlzdCBhZGRQ
cm9taXNlZFR5cGU6aW5mby5jb250ZW50VHlwZSBmaWxlQ2FsbGJhY2s6W3Nlc3Npb24gPSBXVEZN
b3ZlKHNlc3Npb24pLCB3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYp
LCB1cmwgPSBpbmZvLmJsb2JVUkxdIChXZWJJdGVtUHJvdmlkZXJGaWxlQ2FsbGJhY2sgY2FsbGJh
Y2spIHsKKyAgICBbcmVnaXN0cmF0aW9uTGlzdCBhZGRQcm9taXNlZFR5cGU6aW5mby5jb250ZW50
VHlwZSBmaWxlQ2FsbGJhY2s6W3Nlc3Npb24gPSBXVEZNb3ZlKHNlc3Npb24pLCB3ZWFrU2VsZiA9
IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBpbmZvXSAoV2ViSXRlbVByb3ZpZGVy
RmlsZUNhbGxiYWNrIGNhbGxiYWNrKSB7CiAgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtT
ZWxmLmdldCgpOwogICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpIHsKICAgICAgICAgICAgIGNhbGxi
YWNrKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vy
cm9yV2ViVmlld0ludmFsaWRhdGVkIHVzZXJJbmZvOm5pbF0pOwpAQCAtNTEwOSwxMyArNTEwOSwy
NCBAQCBzdGF0aWMgTlNBcnJheTxVSUl0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRl
cnNGcm9tRHJvcFNlc3Npb24oaWQgPFVJRHJvcAogICAgICAgICBOU1N0cmluZyAqdGVtcG9yYXJ5
QmxvYkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAImJs
b2JzIik7CiAgICAgICAgIE5TVVJMICpkZXN0aW5hdGlvblVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6W3RlbXBvcmFyeUJsb2JEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OltOU1VVSUQgVVVJRF0uVVVJRFN0cmluZ10gaXNEaXJlY3Rvcnk6Tk9dOwogCi0gICAgICAg
IFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRHJhZyBzZXNzaW9uOiAlcCBkZWxpdmVyaW5nIHBy
b21pc2VkIGJsb2IgYXQgcGF0aDogJUAiLCBzZXNzaW9uLmdldCgpLCBkZXN0aW5hdGlvblVSTC5w
YXRoKTsKLSAgICAgICAgc3Ryb25nU2VsZi0+X3BhZ2UtPndyaXRlQmxvYlRvRmlsZVBhdGgodXJs
LCBkZXN0aW5hdGlvblVSTC5wYXRoLCBbcHJvdGVjdGVkVVJMID0gcmV0YWluUHRyKGRlc3RpbmF0
aW9uVVJMKSwgcHJvdGVjdGVkQ2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoY2FsbGJhY2spXSAoYm9v
bCBzdWNjZXNzKSB7Ci0gICAgICAgICAgICBpZiAoc3VjY2VzcykKLSAgICAgICAgICAgICAgICBw
cm90ZWN0ZWRDYWxsYmFjayhwcm90ZWN0ZWRVUkwuZ2V0KCksIG5pbCk7CisgICAgICAgIGF1dG8g
YXR0YWNobWVudCA9IHN0cm9uZ1NlbGYtPl9wYWdlLT5hdHRhY2htZW50Rm9ySWRlbnRpZmllcihp
bmZvLmF0dGFjaG1lbnRJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGF0dGFjaG1lbnQgJiYgYXR0
YWNobWVudC0+ZmlsZVdyYXBwZXIoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0Fu
ZERyb3AsICJEcmFnIHNlc3Npb246ICVwIGRlbGl2ZXJpbmcgcHJvbWlzZWQgYXR0YWNobWVudDog
JXMgYXQgcGF0aDogJUAiLCBzZXNzaW9uLmdldCgpLCBpbmZvLmF0dGFjaG1lbnRJZGVudGlmaWVy
LnV0ZjgoKS5kYXRhKCksIGRlc3RpbmF0aW9uVVJMLnBhdGgpOworICAgICAgICAgICAgTlNFcnJv
ciAqZmlsZVdyYXBwZXJFcnJvciA9IG5pbDsKKyAgICAgICAgICAgIGlmIChbYXR0YWNobWVudC0+
ZmlsZVdyYXBwZXIoKSB3cml0ZVRvVVJMOmRlc3RpbmF0aW9uVVJMIG9wdGlvbnM6MCBvcmlnaW5h
bENvbnRlbnRzVVJMOm5pbCBlcnJvcjomZmlsZVdyYXBwZXJFcnJvcl0pCisgICAgICAgICAgICAg
ICAgY2FsbGJhY2soZGVzdGluYXRpb25VUkwsIG5pbCk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcHJvdGVjdGVkQ2FsbGJhY2sobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21h
aW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0pOwotICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhuaWwsIGZpbGVXcmFwcGVyRXJyb3Ip
OworICAgICAgICB9IGVsc2UgaWYgKCFpbmZvLmJsb2JVUkwuaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkRyYWcgc2Vzc2lvbjogJXAgZGVsaXZlcmlu
ZyBwcm9taXNlZCBibG9iIGF0IHBhdGg6ICVAIiwgc2Vzc2lvbi5nZXQoKSwgZGVzdGluYXRpb25V
UkwucGF0aCk7CisgICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFnZS0+d3JpdGVCbG9iVG9GaWxl
UGF0aChpbmZvLmJsb2JVUkwsIGRlc3RpbmF0aW9uVVJMLnBhdGgsIFtwcm90ZWN0ZWRVUkwgPSBy
ZXRhaW5QdHIoZGVzdGluYXRpb25VUkwpLCBwcm90ZWN0ZWRDYWxsYmFjayA9IG1ha2VCbG9ja1B0
cihjYWxsYmFjayldIChib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3VjY2Vz
cykKKyAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkQ2FsbGJhY2socHJvdGVjdGVkVVJMLmdl
dCgpLCBuaWwpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcHJv
dGVjdGVkQ2FsbGJhY2sobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFp
biBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0pOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbGJhY2sobmlsLCBbTlNFcnJvciBlcnJvcldp
dGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JXZWJWaWV3SW52YWxpZGF0ZWQgdXNl
ckluZm86bmlsXSk7CiAKICAgICAgICAgW2Vuc3VyZUxvY2FsRHJhZ1Nlc3Npb25Db250ZXh0KHNl
c3Npb24uZ2V0KCkpIGFkZFRlbXBvcmFyeURpcmVjdG9yeTp0ZW1wb3JhcnlCbG9iRGlyZWN0b3J5
XTsKICAgICB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLmgKaW5kZXggOTcyY2E2NGZmN2M3NWJjZDg0YzE3MzkxMmNlMDZjNmJkNWY0NzVhMS4u
Yzg4NGZhMmJiYTlmOGZhZWM5NzY2YjIyMzIxZTFmM2NlNWU4NWQxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTM4LDcgKzM4LDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
cjsKIHN0cnVjdCBEcmFnSXRlbTsKLXN0cnVjdCBQcm9taXNlZEJsb2JJbmZvOworc3RydWN0IFBy
b21pc2VkQXR0YWNobWVudEluZm87CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDNhNTkz
NzkzNGQ4YjhkMDY0NDIzZTc1MTY2YTY2YjU4YTA1OTM0NDYuLjA4NTdmMTQzNDg4ZGY2N2ZkZWJl
NTJiYmY1M2E5ZmE4YjNiYjliOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTcwLDcgKzcwLDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9Qcm9t
aXNlZEJsb2JJbmZvLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Byb21pc2VkQXR0YWNobWVudEluZm8u
aD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Rl
eHRJbmRpY2F0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvcldpbmRvdy5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBkODdhNTM4NGNkN2UwOTg0Yjc4MTRkNTkwZWI2NTk1
NmZmNDBiNzVhLi5jZTdkODg5MjU1Mzg0ZjgzZWViMDVkNzE0ODNiYjRjZGM3YTQ0NzIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMTYwLDYgKzE2MCwyMSBAQCBib29sIFdlYkVkaXRvckNs
aWVudDo6c2hvdWxkQXBwbHlTdHlsZShTdHlsZVByb3BlcnRpZXMqIHN0eWxlLCBSYW5nZSogcmFu
Z2UpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCit2b2lkIFdlYkVkaXRvckNs
aWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmls
ZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRh
KGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIHsgZGF0YS5wdHIoKSB9KSk7Cit9CisKK3ZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
K3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllckZyb21GaWxlUGF0aChpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgZmls
ZVBhdGgpKTsKK30KKwordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNsb25lQXR0YWNobWVudERhdGEo
Y29uc3QgU3RyaW5nJiBmcm9tSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0b0lkZW50aWZpZXIp
Cit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNsb25lQXR0YWNo
bWVudERhdGEoZnJvbUlkZW50aWZpZXIsIHRvSWRlbnRpZmllcikpOworfQorCiB2b2lkIFdlYkVk
aXRvckNsaWVudDo6ZGlkSW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRJbnNlcnRBdHRhY2htZW50KGlkZW50aWZpZXIsIHNvdXJjZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IGJlNjZmYWYxODFhOWNmMGU4YjY0Njk5OGVmYTQ0ZjAzOWVhYzY0
OTMuLmZkYjcwZWJkNjA3MDEwN2EzZDgyYjI4NWE1NDYzZjhkNzRiMDJiN2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKQEAgLTYwLDggKzYwLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRNb3Zl
UmFuZ2VBZnRlckRlbGV0ZShXZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6OlJhbmdlKikgZmluYWw7
CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHZvaWQgcmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpIGZpbmFsOworICAgIHZvaWQgY2xvbmVBdHRhY2ht
ZW50RGF0YShjb25zdCBTdHJpbmcmIGZyb21JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRvSWRl
bnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRJbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2UpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVtb3ZlQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGZpbmFsOworICAgIGJv
b2wgc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgZGlkQmVnaW5FZGl0aW5nKCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDgyZmZm
NDk0OGQyOGM2YTZjOGIyNTU2OGJjNTg5NTA4Yzk2MDNhMzcuLmYyODc3OGE0MGJkODc0ZmFkYjcw
NTYzODk3NTAzODc5NjMzZWI1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtS2V5Ym9hcmRFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRG9jdW1lbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaW50Q29udGV4dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
UHJvbWlzZWRCbG9iSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvbWlzZWRBdHRhY2htZW50
SW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmFuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
bW90ZURPTVdpbmRvdy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlRnJhbWUuaD4KQEAgLTYw
NjcsMzYgKzYwNjcsMjMgQEAgdm9pZCBXZWJQYWdlOjpzdG9yYWdlQWNjZXNzUmVzcG9uc2UoYm9v
bCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQogCi12b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBjb25zdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmIG9wdGlvbnMsIGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmIG9wdGlvbnMsIHVpbnQ2NF90IGZpbGVTaXpl
LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5
cGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUuZWRpdG9y
KCkuaW5zZXJ0QXR0YWNobWVudChpZGVudGlmaWVyLCBvcHRpb25zLCBmaWxlbmFtZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSwgY29udGVudFR5cGUpOwor
ICAgIGZyYW1lLmVkaXRvcigpLmluc2VydEF0dGFjaG1lbnQoaWRlbnRpZmllciwgb3B0aW9ucywg
ZmlsZVNpemUsIGZpbGVOYW1lLCBXVEZNb3ZlKGNvbnRlbnRUeXBlKSk7CiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQogCi12b2lk
IFdlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50SW5mbyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLXsKLSAgICBhdXRvIGF0dGFjaG1lbnQgPSBhdHRhY2ht
ZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpOwotICAgIGlmICghYXR0YWNobWVu
dCkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkF0dGFjaG1lbnRJbmZv
Q2FsbGJhY2soeyB9LCBjYWxsYmFja0lEKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBhdHRhY2htZW50LT5yZXF1ZXN0SW5mbyhbY2FsbGJhY2tJRCwgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBwcm90ZWN0ZWRBdHRhY2htZW50ID0gV1RGTW92ZShhdHRhY2htZW50KV0g
KGNvbnN0IEF0dGFjaG1lbnRJbmZvJiBpbmZvKSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXR0YWNobWVudEluZm9DYWxsYmFjayhpbmZvLCBj
YWxsYmFja0lEKSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6c2V0QXR0YWNobWVudERp
c3BsYXlPcHRpb25zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9u
cyYsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0
QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5ld0Nv
bnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3RmlsZW5hbWUsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCB1aW50NjRfdCBmaWxlU2l6ZSwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3RmlsZW5hbWUs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0
YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBhdHRh
Y2htZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwotICAgICAgICBhdHRhY2htZW50LT51
cGRhdGVGaWxlV2l0aERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKSwgV1RGTW92ZShuZXdDb250ZW50VHlwZSksIFdURk1vdmUobmV3RmlsZW5hbWUpKTsK
KyAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyhmaWxlU2l6ZSwgV1RGTW92ZShu
ZXdDb250ZW50VHlwZSksIFdURk1vdmUobmV3RmlsZW5hbWUpKTsKICAgICB9CiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDJiMjdjYzg4MmUy
NWRhNzIzOWRlMDlhMDFjY2IzZWI4NDk4YmM2M2MuLjA2ZTMxZTU2YmJiZTEyZmIyNmYxOTJkMDdj
ZjA5ZmVjMTJkMDljMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTE2OCw3ICsxNjgsNyBAQCBzdHJ1Y3QgR2xvYmFsRnJhbWVJZGVudGlmaWVyOwog
c3RydWN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI7CiBzdHJ1Y3QgSGlnaGxpZ2h0Owogc3RydWN0
IEtleXByZXNzQ29tbWFuZDsKLXN0cnVjdCBQcm9taXNlZEJsb2JJbmZvOworc3RydWN0IFByb21p
c2VkQXR0YWNobWVudEluZm87CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0Owogc3RydWN0IFZp
ZXdwb3J0QXJndW1lbnRzOwogCkBAIC0xMDczLDEwICsxMDczLDkgQEAgcHVibGljOgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZvaWQgaW5zZXJ0QXR0YWNo
bWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnRE
aXNwbGF5T3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBjb250ZW50VHlwZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgQ2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudEluZm8oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmLCB1aW50
NjRfdCBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IGNvbnRlbnRUeXBlLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHNldEF0dGFjaG1lbnREaXNw
bGF5T3B0aW9ucyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkF0dGFj
aG1lbnREaXNwbGF5T3B0aW9ucyYsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgc2V0QXR0YWNobWVu
dERhdGFBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuZXdDb250ZW50VHlwZSwgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IG5ld0ZpbGVuYW1lLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHVw
ZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgdWludDY0
X3QgZmlsZVNpemUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuZXdDb250ZW50VHlwZSwgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IG5ld0ZpbGVuYW1lLCBDYWxsYmFja0lEKTsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNjQzNjA3NjhhMzBjNjIx
NDYyYWM1NWQ0Y2IzYWNlOTAyNDI4NzhmNS4uNTliMmI3NTFmMTJkNmVjNDFkMDU0YzcxOTI3MGEw
OTg1OGJlNDY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01MDksMTAgKzUwOSw5IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQotICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIHN0cnVjdCBX
ZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgb3B0aW9ucywgU3RyaW5nIGZpbGVuYW1l
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBSZXF1ZXN0QXR0YWNobWVu
dEluZm8oU3RyaW5nIGlkZW50aWZpZXIsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQor
ICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpB
dHRhY2htZW50RGlzcGxheU9wdGlvbnMgb3B0aW9ucywgdWludDY0X3QgZmlsZVNpemUsIFN0cmlu
ZyBmaWxlTmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBTZXRBdHRhY2htZW50RGlzcGxheU9wdGlvbnMoU3Ry
aW5nIGlkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMg
b3B0aW9ucywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgU2V0QXR0YWNobWVu
dERhdGFBbmRDb250ZW50VHlwZShTdHJpbmcgaWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuZXdDb250ZW50VHlwZSwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IG5ld0ZpbGVuYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAg
ICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmllciwgdWludDY0X3Qg
ZmlsZVNpemUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuZXdDb250ZW50VHlwZSwgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IG5ld0ZpbGVuYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNw
cAppbmRleCBmNjAwOTFmYWE0NWY0NzA0M2I5OWYzN2RlNjg3Yzk1ZGJjOGE0NTk5Li4xYmMxMzUy
NmQ2MGQyZTRhODFiNjNhOGI3NWRkZmRhZTcyNGUyMWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcApAQCAt
MzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFzdGVib2FyZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Nb3VzZUV2ZW50Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxzaGxvYmouaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWVmMjUyNGU0ODI4NDhjNTFjM2VhNWQyYTc3N2U2YjVj
MTYzODUwOS4uMjJkZTBmM2VmMDliYTE5ZTBhOTU3NjlhODdjYWE4NGExZDU4ZDM4NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQy
IEBACisyMDE4LTA4LTE4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFRlc3QgYnVnOyBwbGVhc2UgaWdub3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg3NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGp1c3RzIGV4aXN0aW5nIGF0dGFjaG1lbnQgQVBJ
IHRlc3RzLiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbToKKyAgICAgICAgKC1b
VGVzdFdLV2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBl
cjpjb250ZW50VHlwZTpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBzeW5jaHJvbm91c2x5
SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpjb250ZW50VHlwZTpkYXRhOl0pOgorICAgICAg
ICAoLVtfV0tBdHRhY2htZW50IHN5bmNocm9ub3VzbHlTZXREYXRhOm5ld0NvbnRlbnRUeXBlOm5l
d0ZpbGVuYW1lOmVycm9yOl0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50IHN5bmNocm9ub3Vz
bHlTZXRGaWxlV3JhcHBlcjpuZXdDb250ZW50VHlwZTplcnJvcjpdKToKKworICAgICAgICBNb3Zl
IG9mZiBvZiBkZXByZWNhdGVkIGF0dGFjaG1lbnQgU1BJLCBhbmQgYWRkIG5ldyBoZWxwZXIgZnVu
Y3Rpb25zIHRvIHN5bmNocm9ub3VzbHkgaW5zZXJ0IGEgbmV3IGF0dGFjaG1lbnQgb3IKKyAgICAg
ICAgdXBkYXRlIGFuIGV4aXN0aW5nIGF0dGFjaG1lbnQgd2l0aCBhIGZpbGUgd3JhcHBlci4KKwor
ICAgICAgICAoLVtfV0tBdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOl0pOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3QgdG8g
dmVyaWZ5IHRoYXQgZmlsZS1VUkwtYmFja2VkIE5TRmlsZVdyYXBwZXJzIGNhbiBiZSB1c2VkIHRv
IGluc2VydCBhbmQgdXBkYXRlIGF0dGFjaG1lbnQgZGF0YS4KKyAgICAgICAgQWxzbyBhdWdtZW50
IGFuIGV4aXN0aW5nIHRlc3QgdG8gY2hlY2sgdGhhdCBhbiBhdHRhY2htZW50IGVsZW1lbnQgd2hp
Y2ggaGFzIGJlZW4gY29waWVkIGFuZCBwYXN0ZWQgd2l0aGluIHRoZQorICAgICAgICBzYW1lIGRv
Y3VtZW50IGhhcyBhIGRpZmZlcmVudCBfV0tBdHRhY2htZW50IHdyYXBwZXIgb2JqZWN0IHRoYW4g
aXRzIGR1cGxpY2F0ZSwgYnV0IGJvdGggX1dLQXR0YWNobWVudHMgYXJlCisgICAgICAgIGJhY2tl
ZCBieSB0aGUgc2FtZSBOU0ZpbGVXcmFwcGVyIHRoYXQgd2FzIG9yaWdpbmFsbHkgdXNlZCB0byBp
bnNlcnQgdGhlIGF0dGFjaG1lbnQuCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBhZGQgYW5vdGhl
ciBtYWNPUyB0ZXN0IHRvIHZlcmlmeSB0aGF0IGRyb3BwaW5nIHByb21pc2VkIGZpbGVzIGluIGFu
IGF0dGFjaG1lbnQtZWxlbWVudC1lbmFibGVkCisgICAgICAgIGVkaXRhYmxlIGFyZWEgaW5zZXJ0
cyBhdHRhY2htZW50IGVsZW1lbnRzIGludG8gdGhlIGRvY3VtZW50IGFuZCBub3RpZmllcyB0aGUg
VUkgY2xpZW50IHdpdGggdGhlIGluc2VydGVkCisgICAgICAgIGF0dGFjaG1lbnQgZGF0YS4KKwor
ICAgICAgICAoLVtfV0tBdHRhY2htZW50IHN5bmNocm9ub3VzbHlSZXF1ZXN0SW5mbzpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCBzeW5jaHJvbm91c2x5UmVxdWVzdERhdGE6
XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11
bGF0b3JJT1MubW06CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIF93ZWJWaWV3OmRp
ZEluc2VydEF0dGFjaG1lbnQ6d2l0aFNvdXJjZTpdKToKKworICAgICAgICBNb3ZlIG9mZiBvZiAt
X3dlYlZpZXc6ZGlkSW5zZXJ0QXR0YWNobWVudDouCisKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BT
aW11bGF0b3IgX3dlYlZpZXc6ZGlkSW5zZXJ0QXR0YWNobWVudDpdKTogRGVsZXRlZC4KKwogMjAx
OC0wOC0yMCAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIEFkZCBXUEUgRGVidWcgY29uZmlndXJhdGlvbiB0byB0aGUgZmxha2luZXNzIGRhc2hib2Fy
ZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0
dGFjaG1lbnRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tBdHRhY2htZW50VGVzdHMubW0KaW5kZXggMmY3YzUwMzY5ZDFmMmU5ZGQ4Zjk4MDNmODhmMTM1
M2M1MmEzMzk0OC4uMjA5MDJkMjIyNzZiMzQ0ZDNmYTU0YWZkZDk5MDQ0MWQ3MGE3OWZlMCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1l
bnRUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
QXR0YWNobWVudFRlc3RzLm1tCkBAIC0xNDUsMTMgKzE0NSwxNyBAQCBwcml2YXRlOgogQGludGVy
ZmFjZSBUZXN0V0tXZWJWaWV3IChBdHRhY2htZW50VGVzdGluZykKIEBlbmQKIAorc3RhdGljIE5T
U3RyaW5nICphdHRhY2htZW50RWRpdGluZ1Rlc3RNYXJrdXAgPSBAIjxtZXRhIG5hbWU9J3ZpZXdw
b3J0JyBjb250ZW50PSd3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSc+IgorICAg
ICI8c2NyaXB0PmZvY3VzID0gKCkgPT4gZG9jdW1lbnQuYm9keS5mb2N1cygpPC9zY3JpcHQ+Igor
ICAgICI8Ym9keSBvbmxvYWQ9Zm9jdXMoKSBjb250ZW50ZWRpdGFibGU+PC9ib2R5PiI7CisKIHN0
YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50
cyhDR1NpemUgd2ViVmlld1NpemUsIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRp
b24pCiB7CiAgICAgY29uZmlndXJhdGlvbi5fYXR0YWNobWVudEVsZW1lbnRFbmFibGVkID0gWUVT
OwogICAgIFdLUHJlZmVyZW5jZXNTZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoKFdLUHJl
ZmVyZW5jZXNSZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCBZRVMpOwogCiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCB3ZWJWaWV3U2l6ZS53aWR0aCwgd2ViVmlld1NpemUuaGVpZ2h0KSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKLSAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5
TG9hZEhUTUxTdHJpbmc6QCI8bWV0YSBuYW1lPSd2aWV3cG9ydCcgY29udGVudD0nd2lkdGg9ZGV2
aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEnPjxzY3JpcHQ+Zm9jdXMgPSAoKSA9PiBkb2N1bWVu
dC5ib2R5LmZvY3VzKCk8L3NjcmlwdD48Ym9keSBvbmxvYWQ9Zm9jdXMoKSBjb250ZW50ZWRpdGFi
bGU+PC9ib2R5PiJdOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzph
dHRhY2htZW50RWRpdGluZ1Rlc3RNYXJrdXBdOwogCiAgICAgcmV0dXJuIHdlYlZpZXc7CiB9CkBA
IC0yMzcsMTAgKzI0MSwyMyBAQCBzdGF0aWMgTlNEYXRhICp0ZXN0UERGRGF0YSgpCiAgICAgcmV0
dXJuIHN1Y2Nlc3M7CiB9CiAKKy0gKF9XS0F0dGFjaG1lbnQgKilzeW5jaHJvbm91c2x5SW5zZXJ0
QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIGNv
bnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlCit7CisgICAgX19ibG9jayBib29sIGRv
bmUgPSBmYWxzZTsKKyAgICBSZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gYXR0YWNobWVudCA9IFtz
ZWxmIF9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOmZpbGVXcmFwcGVyIGNvbnRlbnRU
eXBlOmNvbnRlbnRUeXBlIG9wdGlvbnM6bmlsIGNvbXBsZXRpb246XihCT09MKSB7CisgICAgICAg
IGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CisgICAgcmV0dXJuIGF0dGFjaG1lbnQuYXV0b3JlbGVhc2UoKTsKK30KKwogLSAoX1dLQXR0
YWNobWVudCAqKXN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOihOU1N0
cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIGRhdGE6
KE5TRGF0YSAqKWRhdGEKIHsKICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgIFJl
dGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50ID0gW3NlbGYgX2luc2VydEF0dGFjaG1l
bnRXaXRoRmlsZW5hbWU6ZmlsZW5hbWUgY29udGVudFR5cGU6Y29udGVudFR5cGUgZGF0YTpkYXRh
IG9wdGlvbnM6bmlsIGNvbXBsZXRpb246XihCT09MKSB7CisgICAgYXV0byBmaWxlV3JhcHBlciA9
IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6ZGF0YV0pOworICAgIGlmIChmaWxlbmFtZSkKKyAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFBy
ZWZlcnJlZEZpbGVuYW1lOmZpbGVuYW1lXTsKKyAgICBSZXRhaW5QdHI8X1dLQXR0YWNobWVudD4g
YXR0YWNobWVudCA9IFtzZWxmIF9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOmZpbGVX
cmFwcGVyLmdldCgpIGNvbnRlbnRUeXBlOmNvbnRlbnRUeXBlIG9wdGlvbnM6bmlsIGNvbXBsZXRp
b246XihCT09MKSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CkBAIC0zMTIsMTMgKzMyOSwxMiBAQCBzdGF0aWMgTlNE
YXRhICp0ZXN0UERGRGF0YSgpCiAgICAgICAgICplcnJvciA9IHJlc3VsdEVycm9yLmF1dG9yZWxl
YXNlKCk7CiB9CiAKLS0gKF9XS0F0dGFjaG1lbnRJbmZvICopc3luY2hyb25vdXNseVJlcXVlc3RJ
bmZvOihOU0Vycm9yICoqKWVycm9yCistICh2b2lkKXN5bmNocm9ub3VzbHlTZXRGaWxlV3JhcHBl
cjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyIG5ld0NvbnRlbnRUeXBlOihOU1N0cmluZyAq
KW5ld0NvbnRlbnRUeXBlIGVycm9yOihOU0Vycm9yICoqKWVycm9yCiB7Ci0gICAgX19ibG9jayBS
ZXRhaW5QdHI8X1dLQXR0YWNobWVudEluZm8+IHJlc3VsdDsKICAgICBfX2Jsb2NrIFJldGFpblB0
cjxOU0Vycm9yPiByZXN1bHRFcnJvcjsKICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwot
ICAgIFtzZWxmIHJlcXVlc3RJbmZvOl4oX1dLQXR0YWNobWVudEluZm8gKmluZm8sIE5TRXJyb3Ig
KmVycm9yKSB7Ci0gICAgICAgIHJlc3VsdCA9IGluZm87CisKKyAgICBbc2VsZiBzZXRGaWxlV3Jh
cHBlcjpmaWxlV3JhcHBlciBjb250ZW50VHlwZTpuZXdDb250ZW50VHlwZSBjb21wbGV0aW9uOl4o
TlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgcmVzdWx0RXJyb3IgPSBlcnJvcjsKICAgICAgICAg
ZG9uZSA9IHRydWU7CiAgICAgfV07CkBAIC0zMjcsMjAgKzM0MywxNyBAQCBzdGF0aWMgTlNEYXRh
ICp0ZXN0UERGRGF0YSgpCiAKICAgICBpZiAoZXJyb3IpCiAgICAgICAgICplcnJvciA9IHJlc3Vs
dEVycm9yLmF1dG9yZWxlYXNlKCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0LmF1dG9yZWxlYXNlKCk7
Ci19Ci0KLS0gKE5TRGF0YSAqKXN5bmNocm9ub3VzbHlSZXF1ZXN0RGF0YTooTlNFcnJvciAqKill
cnJvcgotewotICAgIHJldHVybiBbc2VsZiBzeW5jaHJvbm91c2x5UmVxdWVzdEluZm86ZXJyb3Jd
LmRhdGE7CiB9CiAKIC0gKHZvaWQpc3luY2hyb25vdXNseVNldERhdGE6KE5TRGF0YSAqKWRhdGEg
bmV3Q29udGVudFR5cGU6KE5TU3RyaW5nICopbmV3Q29udGVudFR5cGUgbmV3RmlsZW5hbWU6KE5T
U3RyaW5nICopbmV3RmlsZW5hbWUgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3IKIHsKICAgICBfX2Js
b2NrIFJldGFpblB0cjxOU0Vycm9yPiByZXN1bHRFcnJvcjsKICAgICBfX2Jsb2NrIGJvb2wgZG9u
ZSA9IGZhbHNlOwotICAgIFtzZWxmIHNldERhdGE6ZGF0YSBuZXdDb250ZW50VHlwZTpuZXdDb250
ZW50VHlwZSBuZXdGaWxlbmFtZTpuZXdGaWxlbmFtZSBjb21wbGV0aW9uOl4oTlNFcnJvciAqZXJy
b3IpIHsKKyAgICBhdXRvIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxs
b2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhXSk7CisgICAgaWYgKG5ld0ZpbGVu
YW1lKQorICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6bmV3RmlsZW5h
bWVdOworCisgICAgW3NlbGYgc2V0RmlsZVdyYXBwZXI6ZmlsZVdyYXBwZXIuZ2V0KCkgY29udGVu
dFR5cGU6bmV3Q29udGVudFR5cGUgY29tcGxldGlvbjpeKE5TRXJyb3IgKmVycm9yKSB7CiAgICAg
ICAgIHJlc3VsdEVycm9yID0gZXJyb3I7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwpA
QCAtMzU0LDkgKzM2Nyw5IEBAIHN0YXRpYyBOU0RhdGEgKnRlc3RQREZEYXRhKCkKIC0gKHZvaWQp
ZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6KE5TRGF0YSAqKWV4cGVjdGVkRGF0YQogewogICAgIE5T
RXJyb3IgKnJlcXVlc3RFcnJvciA9IG5pbDsKLSAgICBfV0tBdHRhY2htZW50SW5mbyAqaW5mbyA9
IFtzZWxmIHN5bmNocm9ub3VzbHlSZXF1ZXN0SW5mbzomcmVxdWVzdEVycm9yXTsKKyAgICBfV0tB
dHRhY2htZW50SW5mbyAqaW5mbyA9IHNlbGYuaW5mbzsKIAotICAgIEJPT0wgb2JzZXJ2ZWREYXRh
SXNFcXVhbFRvRXhwZWN0ZWREYXRhID0gW2luZm8uZGF0YSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVk
RGF0YV0gfHwgaW5mby5kYXRhID09IGV4cGVjdGVkRGF0YTsKKyAgICBCT09MIG9ic2VydmVkRGF0
YUlzRXF1YWxUb0V4cGVjdGVkRGF0YSA9IGluZm8uZGF0YSA9PSBleHBlY3RlZERhdGEgfHwgW2lu
Zm8uZGF0YSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YV07CiAgICAgRVhQRUNUX1RSVUUob2Jz
ZXJ2ZWREYXRhSXNFcXVhbFRvRXhwZWN0ZWREYXRhKTsKICAgICBpZiAoIW9ic2VydmVkRGF0YUlz
RXF1YWxUb0V4cGVjdGVkRGF0YSkgewogICAgICAgICBOU0xvZyhAIkV4cGVjdGVkIGRhdGE6ICVA
IGJ1dCBvYnNlcnZlZDogJUAgZm9yICVAIiwgW2V4cGVjdGVkRGF0YSBzaG9ydERlc2NyaXB0aW9u
XSwgW2luZm8uZGF0YSBzaG9ydERlc2NyaXB0aW9uXSwgc2VsZik7CkBAIC00OTksNyArNTEyLDcg
QEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQXR0YWNobWVudEVsZW1lbnRJbnNlcnRpb24pCiAg
ICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbIF0sIEBbIGZpcnN0QXR0
YWNobWVudC5nZXQoKSBdKTsKICAgICB9CiAKLSAgICBfV0tBdHRhY2htZW50SW5mbyAqaW5mbyA9
IFtmaXJzdEF0dGFjaG1lbnQgc3luY2hyb25vdXNseVJlcXVlc3RJbmZvOm5pbF07CisgICAgX1dL
QXR0YWNobWVudEluZm8gKmluZm8gPSBbZmlyc3RBdHRhY2htZW50IGluZm9dOwogICAgIEVYUEVD
VF9UUlVFKFtpbmZvLmRhdGEgaXNFcXVhbFRvRGF0YTp0ZXN0SFRNTERhdGEoKV0pOwogICAgIEVY
UEVDVF9UUlVFKFtpbmZvLmNvbnRlbnRUeXBlIGlzRXF1YWxUb1N0cmluZzpAInRleHQvaHRtbCJd
KTsKICAgICBFWFBFQ1RfVFJVRShbaW5mby5uYW1lIGlzRXF1YWxUb1N0cmluZzpAImZvbyJdKTsK
QEAgLTUxNiw3ICs1MjksNyBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBBdHRhY2htZW50RWxl
bWVudEluc2VydGlvbikKICAgICAgICAgc2NvcGUuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFsg
Zmlyc3RBdHRhY2htZW50LmdldCgpIF0sIEBbIHNlY29uZEF0dGFjaG1lbnQuZ2V0KCkgXSk7CiAg
ICAgfQogCi0gICAgW2ZpcnN0QXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpuaWxd
OworICAgIFtmaXJzdEF0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6dGVzdEhUTUxE
YXRhKCldOwogICAgIFtzZWNvbmRBdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOnRl
c3RJbWFnZURhdGEoKV07CiAgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGhhc0F0dHJpYnV0ZTpA
IndlYmtpdGF0dGFjaG1lbnRibG9idXJsIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJd
KTsKICAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgaGFzQXR0cmlidXRlOkAid2Via2l0YXR0YWNo
bWVudHBhdGgiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOwpAQCAtNTM5LDE0ICs1
NTIsMTQgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQXR0YWNobWVudFVwZGF0ZXNXaGVuSW5z
ZXJ0aW5nQW5kRGVsZXRpbmdOZXdsaW5lKQogCiAgICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0Fm
dGVyQ29tbWFuZDpAIkRlbGV0ZUJhY2t3YXJkIiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVt
b3ZhbHM6QFtdIGV4cGVjdGVkSW5zZXJ0aW9uczpAW11dOwogCi0gICAgX1dLQXR0YWNobWVudElu
Zm8gKmluZm8gPSBbYXR0YWNobWVudCBzeW5jaHJvbm91c2x5UmVxdWVzdEluZm86bmlsXTsKKyAg
ICBfV0tBdHRhY2htZW50SW5mbyAqaW5mbyA9IFthdHRhY2htZW50IGluZm9dOwogICAgIEVYUEVD
VF9UUlVFKFtpbmZvLmRhdGEgaXNFcXVhbFRvRGF0YTp0ZXN0SFRNTERhdGEoKV0pOwogICAgIEVY
UEVDVF9UUlVFKFtpbmZvLmNvbnRlbnRUeXBlIGlzRXF1YWxUb1N0cmluZzpAInRleHQvcGxhaW4i
XSk7CiAgICAgRVhQRUNUX1RSVUUoW2luZm8ubmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJmb28udHh0
Il0pOwogICAgIEVYUEVDVF9FUShpbmZvLmZpbGVQYXRoLmxlbmd0aCwgMFUpOwogCiAgICAgW3dl
YlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpAIkRlbGV0ZUZvcndhcmQiIHdpdGhBcmd1
bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW2F0dGFjaG1lbnQuZ2V0KCldIGV4cGVjdGVkSW5z
ZXJ0aW9uczpAW11dOwotICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOm5p
bF07CisgICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6dGVzdEhUTUxEYXRh
KCldOwogfQogCiBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBBdHRhY2htZW50VXBkYXRlc1doZW5V
bmRvaW5nQW5kUmVkb2luZykKQEAgLTU2MCwxOSArNTczLDE5IEBAIFRFU1QoV0tBdHRhY2htZW50
VGVzdHMsIEF0dGFjaG1lbnRVcGRhdGVzV2hlblVuZG9pbmdBbmRSZWRvaW5nKQogICAgICAgICBv
YnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAWyBdLCBAW2F0dGFjaG1lbnQuZ2V0KCld
KTsKICAgICB9CiAgICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpAIlVuZG8i
IHdpdGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW2F0dGFjaG1lbnQuZ2V0KCldIGV4
cGVjdGVkSW5zZXJ0aW9uczpAW11dOwotICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERh
dGFUb0JlOm5pbF07CisgICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6aHRt
bERhdGEuZ2V0KCldOwogCiAgICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpA
IlJlZG8iIHdpdGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW10gZXhwZWN0ZWRJbnNl
cnRpb25zOkBbYXR0YWNobWVudC5nZXQoKV1dOwogICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVl
c3RlZERhdGFUb0JlOmh0bWxEYXRhLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IGV4cGVjdFVwZGF0
ZXNBZnRlckNvbW1hbmQ6QCJEZWxldGVCYWNrd2FyZCIgd2l0aEFyZ3VtZW50Om5pbCBleHBlY3Rl
ZFJlbW92YWxzOkBbYXR0YWNobWVudC5nZXQoKV0gZXhwZWN0ZWRJbnNlcnRpb25zOkBbXV07Ci0g
ICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6bmlsXTsKKyAgICBbYXR0YWNo
bWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpodG1sRGF0YS5nZXQoKV07CiAKICAgICBbd2Vi
VmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiVW5kbyIgd2l0aEFyZ3VtZW50Om5pbCBl
eHBlY3RlZFJlbW92YWxzOkBbXSBleHBlY3RlZEluc2VydGlvbnM6QFthdHRhY2htZW50LmdldCgp
XV07CiAgICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6aHRtbERhdGEuZ2V0
KCldOwogCiAgICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpAIlJlZG8iIHdp
dGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW2F0dGFjaG1lbnQuZ2V0KCldIGV4cGVj
dGVkSW5zZXJ0aW9uczpAW11dOwotICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFU
b0JlOm5pbF07CisgICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6aHRtbERh
dGEuZ2V0KCldOwogfQogCiBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBBdHRhY2htZW50VXBkYXRl
c1doZW5DaGFuZ2luZ0ZvbnRTdHlsZXMpCkBAIC01OTcsNyArNjEwLDcgQEAgVEVTVChXS0F0dGFj
aG1lbnRUZXN0cywgQXR0YWNobWVudFVwZGF0ZXNXaGVuQ2hhbmdpbmdGb250U3R5bGVzKQogCiAg
ICAgLy8gSW5zZXJ0aW5nIHRleHQgc2hvdWxkIGRlbGV0ZSB0aGUgY3VycmVudCBzZWxlY3Rpb24s
IHJlbW92aW5nIHRoZSBhdHRhY2htZW50IGluIHRoZSBwcm9jZXNzLgogICAgIFt3ZWJWaWV3IGV4
cGVjdFVwZGF0ZXNBZnRlckNvbW1hbmQ6QCJJbnNlcnRUZXh0IiB3aXRoQXJndW1lbnQ6QCJmb28i
IGV4cGVjdGVkUmVtb3ZhbHM6QFthdHRhY2htZW50LmdldCgpXSBleHBlY3RlZEluc2VydGlvbnM6
QFtdXTsKLSAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpuaWxdOworICAg
IFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOnRlc3RIVE1MRGF0YSgpXTsKIH0K
IAogVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQXR0YWNobWVudFVwZGF0ZXNXaGVuSW5zZXJ0aW5n
TGlzdHMpCkBAIC02NjEsNyArNjc0LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQXR0YWNo
bWVudFVwZGF0ZXNXaGVuQ3V0dGluZ0FuZFBhc3RpbmcpCiAgICAgICAgIFt3ZWJWaWV3IF9zeW5j
aHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiQ3V0IiBhcmd1bWVudDpuaWxdOwogICAgICAg
ICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW2F0dGFjaG1lbnQuZ2V0KCldLCBA
W10pOwogICAgIH0KLSAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpuaWxd
OworICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOnRlc3RIVE1MRGF0YSgp
XTsKICAgICB7CiAgICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2Vy
dmVyKHdlYlZpZXcuZ2V0KCkpOwogICAgICAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1
dGVFZGl0Q29tbWFuZDpAIlBhc3RlIiBhcmd1bWVudDpuaWxdOwpAQCAtNjg5LDM2ICs3MDIsNyBA
QCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBBdHRhY2htZW50RGF0YUZvckVtcHR5RmlsZSkKICAg
ICAgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJEZWxldGVC
YWNrd2FyZCIgYXJndW1lbnQ6bmlsXTsKICAgICAgICAgc2NvcGUuZXhwZWN0QXR0YWNobWVudFVw
ZGF0ZXMoQFthdHRhY2htZW50LmdldCgpXSwgQFtdKTsKICAgICB9Ci0gICAgW2F0dGFjaG1lbnQg
ZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6bmlsXTsKLX0KLQotVEVTVChXS0F0dGFjaG1lbnRUZXN0
cywgTXVsdGlwbGVTaW11bHRhbmVvdXNBdHRhY2htZW50RGF0YVJlcXVlc3RzKQotewotICAgIGF1
dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKLSAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBodG1sRGF0YSA9IHRlc3RIVE1MRGF0YSgpOwotICAgIFJldGFpblB0cjxfV0tB
dHRhY2htZW50PiBhdHRhY2htZW50OwotICAgIHsKLSAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRV
cGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIGF0dGFjaG1l
bnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpA
ImZvby50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTpodG1sRGF0YS5nZXQoKV07
Ci0gICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbXSwgQFthdHRhY2ht
ZW50LmdldCgpXSk7Ci0gICAgfQotICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gZGF0YUZv
ckZpcnN0UmVxdWVzdDsKLSAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IGRhdGFGb3JTZWNv
bmRSZXF1ZXN0OwotICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Ci0gICAgW2F0dGFjaG1l
bnQgcmVxdWVzdEluZm86XihfV0tBdHRhY2htZW50SW5mbyAqaW5mbywgTlNFcnJvciAqZXJyb3Ip
IHsKLSAgICAgICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKLSAgICAgICAgZGF0YUZvckZpcnN0UmVx
dWVzdCA9IGluZm8uZGF0YTsKLSAgICB9XTsKLSAgICBbYXR0YWNobWVudCByZXF1ZXN0SW5mbzpe
KF9XS0F0dGFjaG1lbnRJbmZvICppbmZvLCBOU0Vycm9yICplcnJvcikgewotICAgICAgICBFWFBF
Q1RfVFJVRSghZXJyb3IpOwotICAgICAgICBkYXRhRm9yU2Vjb25kUmVxdWVzdCA9IGluZm8uZGF0
YTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBVdGlsOjpydW4oJmRvbmUp
OwotCi0gICAgRVhQRUNUX1RSVUUoW2RhdGFGb3JGaXJzdFJlcXVlc3QgaXNFcXVhbFRvRGF0YTpo
dG1sRGF0YS5nZXQoKV0pOwotICAgIEVYUEVDVF9UUlVFKFtkYXRhRm9yU2Vjb25kUmVxdWVzdCBp
c0VxdWFsVG9EYXRhOmh0bWxEYXRhLmdldCgpXSk7CisgICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVx
dWVzdGVkRGF0YVRvQmU6W05TRGF0YSBkYXRhXV07CiB9CiAKIFRFU1QoV0tBdHRhY2htZW50VGVz
dHMsIENoYW5nZUF0dGFjaG1lbnREYXRhQW5kRmlsZUluZm9ybWF0aW9uKQpAQCAtNzc5LDcgKzc2
Myw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEluc2VydFBhc3RlZEltYWdlQXNBdHRhY2ht
ZW50KQogICAgICAgICBhdHRhY2htZW50ID0gb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZFsw
XTsKICAgICB9CiAKLSAgICBhdXRvIHNpemUgPSBwbGF0Zm9ybUltYWdlV2l0aERhdGEoW2F0dGFj
aG1lbnQgc3luY2hyb25vdXNseVJlcXVlc3REYXRhOm5pbF0pLnNpemU7CisgICAgYXV0byBzaXpl
ID0gcGxhdGZvcm1JbWFnZVdpdGhEYXRhKFthdHRhY2htZW50IGluZm9dLmRhdGEpLnNpemU7CiAg
ICAgRVhQRUNUX0VRKDIxNS4sIHNpemUud2lkdGgpOwogICAgIEVYUEVDVF9FUSgxNzQuLCBzaXpl
LmhlaWdodCk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKFthdHRhY2htZW50IHVuaXF1ZUlkZW50aWZp
ZXJdLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignYXR0YWNobWVudCcpLnVuaXF1ZUlkZW50aWZpZXIiXSk7CkBAIC04MzMsNyAr
ODE3LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5zZXJ0UGFzdGVkQXR0cmlidXRlZFN0
cmluZ0NvbnRhaW5pbmdNdWx0aXBsZUF0dGFjaG1lbnQKICAgICAgICAgRVhQRUNUX0VRKDBVLCBv
YnNlcnZlci5vYnNlcnZlcigpLnJlbW92ZWQuY291bnQpOwogICAgICAgICBFWFBFQ1RfRVEoM1Us
IG9ic2VydmVyLm9ic2VydmVyKCkuaW5zZXJ0ZWQuY291bnQpOwogICAgICAgICBmb3IgKF9XS0F0
dGFjaG1lbnQgKmF0dGFjaG1lbnQgaW4gb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZCkgewot
ICAgICAgICAgICAgTlNEYXRhICpkYXRhID0gW2F0dGFjaG1lbnQgc3luY2hyb25vdXNseVJlcXVl
c3REYXRhOm5pbF07CisgICAgICAgICAgICBOU0RhdGEgKmRhdGEgPSBhdHRhY2htZW50LmluZm8u
ZGF0YTsKICAgICAgICAgICAgIGlmIChbZGF0YSBpc0VxdWFsVG9EYXRhOnRlc3RaSVBEYXRhKCld
KQogICAgICAgICAgICAgICAgIHppcEF0dGFjaG1lbnQgPSBhdHRhY2htZW50OwogICAgICAgICAg
ICAgZWxzZSBpZiAoW2RhdGEgaXNFcXVhbFRvRGF0YTp0ZXN0UERGRGF0YSgpXSkKQEAgLTg5NCwx
MSArODc4LDEyIEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEluc2VydEFuZFJlbW92ZUR1cGxp
Y2F0ZUF0dGFjaG1lbnQpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdB
dHRhY2htZW50cygpOwogICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGEgPSB0ZXN0SFRNTERhdGEo
KTsKKyAgICBhdXRvIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2Nd
IGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgUmV0YWluUHRy
PF9XS0F0dGFjaG1lbnQ+IG9yaWdpbmFsQXR0YWNobWVudDsKICAgICBSZXRhaW5QdHI8X1dLQXR0
YWNobWVudD4gcGFzdGVkQXR0YWNobWVudDsKICAgICB7CiAgICAgICAgIE9ic2VydmVBdHRhY2ht
ZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOwotICAgICAgICBvcmln
aW5hbEF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdp
dGhGaWxlbmFtZTpAImZvby50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTpkYXRh
LmdldCgpXTsKKyAgICAgICAgb3JpZ2luYWxBdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25v
dXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6ZmlsZVdyYXBwZXIuZ2V0KCkgY29u
dGVudFR5cGU6QCJ0ZXh0L3BsYWluIl07CiAgICAgICAgIEVYUEVDVF9FUSgwVSwgb2JzZXJ2ZXIu
b2JzZXJ2ZXIoKS5yZW1vdmVkLmNvdW50KTsKICAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNo
bWVudFVwZGF0ZXMoQFtdLCBAW29yaWdpbmFsQXR0YWNobWVudC5nZXQoKV0pOwogICAgIH0KQEAg
LTkyNCwxNyArOTA5LDIyIEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEluc2VydEFuZFJlbW92
ZUR1cGxpY2F0ZUF0dGFjaG1lbnQpCiAgICAgICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhl
Y3V0ZUVkaXRDb21tYW5kOkAiRGVsZXRlQmFja3dhcmQiIGFyZ3VtZW50Om5pbF07CiAgICAgICAg
IG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbb3JpZ2luYWxBdHRhY2htZW50Lmdl
dCgpXSwgQFtdKTsKICAgICB9CisKKyAgICBFWFBFQ1RfRkFMU0UoW29yaWdpbmFsQXR0YWNobWVu
dCBpc0VxdWFsOnBhc3RlZEF0dGFjaG1lbnQuZ2V0KCldKTsKKyAgICBFWFBFQ1RfVFJVRShbW29y
aWdpbmFsQXR0YWNobWVudCBpbmZvXS5maWxlV3JhcHBlciBpc0VxdWFsOltwYXN0ZWRBdHRhY2ht
ZW50IGluZm9dLmZpbGVXcmFwcGVyXSk7CisgICAgRVhQRUNUX1RSVUUoW1tvcmlnaW5hbEF0dGFj
aG1lbnQgaW5mb10uZmlsZVdyYXBwZXIgaXNFcXVhbDpmaWxlV3JhcHBlci5nZXQoKV0pOwogfQog
CiBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBJbnNlcnREdXBsaWNhdGVBdHRhY2htZW50QW5kVXBk
YXRlRGF0YSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1l
bnRzKCk7Ci0gICAgUmV0YWluUHRyPE5TRGF0YT4gb3JpZ2luYWxEYXRhID0gdGVzdEhUTUxEYXRh
KCk7CisgICAgYXV0byBvcmlnaW5hbERhdGEgPSByZXRhaW5QdHIodGVzdEhUTUxEYXRhKCkpOwor
ICAgIGF1dG8gZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOm9yaWdpbmFsRGF0YS5nZXQoKV0pOwogICAgIFJldGFp
blB0cjxfV0tBdHRhY2htZW50PiBvcmlnaW5hbEF0dGFjaG1lbnQ7CiAgICAgUmV0YWluUHRyPF9X
S0F0dGFjaG1lbnQ+IHBhc3RlZEF0dGFjaG1lbnQ7CiAgICAgewogICAgICAgICBPYnNlcnZlQXR0
YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKLSAgICAgICAg
b3JpZ2luYWxBdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1l
bnRXaXRoRmlsZW5hbWU6QCJmb28udHh0IiBjb250ZW50VHlwZTpAInRleHQvcGxhaW4iIGRhdGE6
b3JpZ2luYWxEYXRhLmdldCgpXTsKKyAgICAgICAgb3JpZ2luYWxBdHRhY2htZW50ID0gW3dlYlZp
ZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6ZmlsZVdyYXBw
ZXIuZ2V0KCkgY29udGVudFR5cGU6QCJ0ZXh0L3BsYWluIl07CiAgICAgICAgIEVYUEVDVF9FUSgw
VSwgb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5yZW1vdmVkLmNvdW50KTsKICAgICAgICAgb2JzZXJ2ZXIu
ZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFtdLCBAW29yaWdpbmFsQXR0YWNobWVudC5nZXQoKV0p
OwogICAgIH0KQEAgLTk1Myw2ICs5NDMsMTAgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5z
ZXJ0RHVwbGljYXRlQXR0YWNobWVudEFuZFVwZGF0ZURhdGEpCiAgICAgW29yaWdpbmFsQXR0YWNo
bWVudCBzeW5jaHJvbm91c2x5U2V0RGF0YTp1cGRhdGVkRGF0YS5nZXQoKSBuZXdDb250ZW50VHlw
ZTpuaWwgbmV3RmlsZW5hbWU6bmlsIGVycm9yOm5pbF07CiAgICAgW29yaWdpbmFsQXR0YWNobWVu
dCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTp1cGRhdGVkRGF0YS5nZXQoKV07CiAgICAgW3Bhc3Rl
ZEF0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6b3JpZ2luYWxEYXRhLmdldCgpXTsK
KworICAgIEVYUEVDVF9GQUxTRShbb3JpZ2luYWxBdHRhY2htZW50IGlzRXF1YWw6cGFzdGVkQXR0
YWNobWVudC5nZXQoKV0pOworICAgIEVYUEVDVF9GQUxTRShbW29yaWdpbmFsQXR0YWNobWVudCBp
bmZvXS5maWxlV3JhcHBlciBpc0VxdWFsOltwYXN0ZWRBdHRhY2htZW50IGluZm9dLmZpbGVXcmFw
cGVyXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtbb3JpZ2luYWxBdHRhY2htZW50IGluZm9dLmZpbGVX
cmFwcGVyIGlzRXF1YWw6ZmlsZVdyYXBwZXIuZ2V0KCldKTsKIH0KIAogVEVTVChXS0F0dGFjaG1l
bnRUZXN0cywgSW5qZWN0ZWRCdW5kbGVSZXBsYWNlVVJMc1doZW5QYXN0aW5nQXR0cmlidXRlZFN0
cmluZykKQEAgLTk4Nyw2ICs5ODEsMzcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5qZWN0
ZWRCdW5kbGVSZXBsYWNlVVJMV2hlblBhc3RpbmdJbWFnZSkKICAgICBFWFBFQ1RfV0tfU1RSRVEo
ImNpZDpmb28tYmFyIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInNyYyIgZm9yUXVlcnlT
ZWxlY3RvcjpAImltZyJdKTsKIH0KIAorVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5zZXJ0QXR0
YWNobWVudFVzaW5nRmlsZVdyYXBwZXJXaXRoRmlsZVBhdGgpCit7CisgICAgYXV0byB3ZWJWaWV3
ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOworICAgIGF1dG8gb3JpZ2luYWxGaWxl
V3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDp0ZXN0
SW1hZ2VGaWxlVVJMKCkgb3B0aW9uczowIGVycm9yOm5pbF0pOworICAgIFJldGFpblB0cjxfV0tB
dHRhY2htZW50PiBhdHRhY2htZW50OworICAgIHsKKyAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRV
cGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7CisgICAgICAgIGF0dGFjaG1l
bnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBl
cjpvcmlnaW5hbEZpbGVXcmFwcGVyLmdldCgpIGNvbnRlbnRUeXBlOm5pbF07CisgICAgICAgIG9i
c2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbIF0sIEBbIGF0dGFjaG1lbnQuZ2V0KCkg
XSk7CisgICAgfQorCisgICAgX1dLQXR0YWNobWVudEluZm8gKmluZm9CZWZvcmVVcGRhdGUgPSBb
YXR0YWNobWVudCBpbmZvXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImltYWdlL3BuZyIsIGluZm9C
ZWZvcmVVcGRhdGUuY29udGVudFR5cGUpOworICAgIEVYUEVDVF9XS19TVFJFUSgiaWNvbi5wbmci
LCBpbmZvQmVmb3JlVXBkYXRlLm5hbWUpOworICAgIEVYUEVDVF9UUlVFKFtvcmlnaW5hbEZpbGVX
cmFwcGVyIGlzRXF1YWw6aW5mb0JlZm9yZVVwZGF0ZS5maWxlV3JhcHBlcl0pOworICAgIFthdHRh
Y2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOnRlc3RJbWFnZURhdGEoKV07CisKKyAgICBh
dXRvIG5ld0ZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRX
aXRoVVJMOnRlc3RQREZGaWxlVVJMKCkgb3B0aW9uczowIGVycm9yOm5pbF0pOworICAgIHsKKyAg
ICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5n
ZXQoKSk7CisgICAgICAgIFthdHRhY2htZW50IHN5bmNocm9ub3VzbHlTZXRGaWxlV3JhcHBlcjpu
ZXdGaWxlV3JhcHBlci5nZXQoKSBuZXdDb250ZW50VHlwZTpuaWwgZXJyb3I6bmlsXTsKKyAgICAg
ICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFsgXSwgQFsgXSk7CisgICAgfQor
CisgICAgX1dLQXR0YWNobWVudEluZm8gKmluZm9BZnRlclVwZGF0ZSA9IFthdHRhY2htZW50IGlu
Zm9dOworICAgIEVYUEVDVF9XS19TVFJFUSgiYXBwbGljYXRpb24vcGRmIiwgaW5mb0FmdGVyVXBk
YXRlLmNvbnRlbnRUeXBlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInRlc3QucGRmIiwgaW5mb0Fm
dGVyVXBkYXRlLm5hbWUpOworICAgIEVYUEVDVF9UUlVFKFtuZXdGaWxlV3JhcHBlciBpc0VxdWFs
OmluZm9BZnRlclVwZGF0ZS5maWxlV3JhcHBlcl0pOworICAgIFthdHRhY2htZW50IGV4cGVjdFJl
cXVlc3RlZERhdGFUb0JlOnRlc3RQREZEYXRhKCldOworfQorCiAjcHJhZ21hIG1hcmsgLSBQbGF0
Zm9ybS1zcGVjaWZpYyB0ZXN0cwogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTAwOCwxNyArMTAz
MywxNSBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzTWFjLCBJbnNlcnRQYXN0ZWRGaWxlVVJMc0Fz
QXR0YWNobWVudHMpCiAgICAgfQogCiAgICAgTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkQXR0
YWNobWVudERhdGEgPSBAWyB0ZXN0UERGRGF0YSgpLCB0ZXN0SW1hZ2VEYXRhKCkgXTsKLSAgICBF
WFBFQ1RfVFJVRShbZXhwZWN0ZWRBdHRhY2htZW50RGF0YSBjb250YWluc09iamVjdDpbW2luc2Vy
dGVkQXR0YWNobWVudHMgZmlyc3RPYmplY3RdIHN5bmNocm9ub3VzbHlSZXF1ZXN0RGF0YTpuaWxd
XSk7Ci0gICAgRVhQRUNUX1RSVUUoW2V4cGVjdGVkQXR0YWNobWVudERhdGEgY29udGFpbnNPYmpl
Y3Q6W1tpbnNlcnRlZEF0dGFjaG1lbnRzIGxhc3RPYmplY3RdIHN5bmNocm9ub3VzbHlSZXF1ZXN0
RGF0YTpuaWxdXSk7CisgICAgRVhQRUNUX1RSVUUoW2V4cGVjdGVkQXR0YWNobWVudERhdGEgY29u
dGFpbnNPYmplY3Q6W2luc2VydGVkQXR0YWNobWVudHMgZmlyc3RPYmplY3RdLmluZm8uZGF0YV0p
OworICAgIEVYUEVDVF9UUlVFKFtleHBlY3RlZEF0dGFjaG1lbnREYXRhIGNvbnRhaW5zT2JqZWN0
OltpbnNlcnRlZEF0dGFjaG1lbnRzIGxhc3RPYmplY3RdLmluZm8uZGF0YV0pOwogICAgIEVYUEVD
VF9XS19TVFJFUSgiYXBwbGljYXRpb24vcGRmIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1lbnQnKVswXS5n
ZXRBdHRyaWJ1dGUoJ3R5cGUnKSJdKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoInRlc3QucGRmIiwg
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3JBbGwoJ2F0dGFjaG1lbnQnKVswXS5nZXRBdHRyaWJ1dGUoJ3RpdGxlJykiXSk7CiAgICAg
RVhQRUNUX1dLX1NUUkVRKCJpbWFnZS9wbmciLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVudCcpWzFdLmdl
dEF0dHJpYnV0ZSgndHlwZScpIl0pOwogICAgIEVYUEVDVF9XS19TVFJFUSgiaWNvbi5wbmciLCBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgnYXR0YWNobWVudCcpWzFdLmdldEF0dHJpYnV0ZSgndGl0bGUnKSJdKTsKIAotICAg
IGZvciAoX1dLQXR0YWNobWVudCAqYXR0YWNobWVudCBpbiBpbnNlcnRlZEF0dGFjaG1lbnRzLmdl
dCgpKSB7Ci0gICAgICAgIF9XS0F0dGFjaG1lbnRJbmZvICppbmZvID0gW2F0dGFjaG1lbnQgc3lu
Y2hyb25vdXNseVJlcXVlc3RJbmZvOm5pbF07Ci0gICAgICAgIEVYUEVDVF9HVChpbmZvLmZpbGVQ
YXRoLmxlbmd0aCwgMFUpOwotICAgIH0KKyAgICBmb3IgKF9XS0F0dGFjaG1lbnQgKmF0dGFjaG1l
bnQgaW4gaW5zZXJ0ZWRBdHRhY2htZW50cy5nZXQoKSkKKyAgICAgICAgRVhQRUNUX0dUKGF0dGFj
aG1lbnQuaW5mby5maWxlUGF0aC5sZW5ndGgsIDBVKTsKIAogICAgIHsKICAgICAgICAgT2JzZXJ2
ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7CkBAIC0x
MDI3LDggKzEwNTAsNDIgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c01hYywgSW5zZXJ0UGFzdGVk
RmlsZVVSTHNBc0F0dGFjaG1lbnRzKQogICAgICAgICBOU0FycmF5PF9XS0F0dGFjaG1lbnQgKj4g
KnJlbW92ZWRBdHRhY2htZW50cyA9IFtvYnNlcnZlci5vYnNlcnZlcigpIHJlbW92ZWRdOwogICAg
ICAgICBFWFBFQ1RfRVEoMlUsIHJlbW92ZWRBdHRhY2htZW50cy5jb3VudCk7CiAgICAgICAgIEVY
UEVDVF9UUlVFKFtyZW1vdmVkQXR0YWNobWVudHMgY29udGFpbnNPYmplY3Q6W2luc2VydGVkQXR0
YWNobWVudHMgZmlyc3RPYmplY3RdXSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKFtyZW1vdmVkQXR0
YWNobWVudHMubGFzdE9iamVjdCBpc0VxdWFsOltpbnNlcnRlZEF0dGFjaG1lbnRzIGxhc3RPYmpl
Y3RdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZW1vdmVkQXR0YWNobWVudHMgY29udGFpbnNP
YmplY3Q6W2luc2VydGVkQXR0YWNobWVudHMgbGFzdE9iamVjdF1dKTsKKyAgICB9Cit9CisKK1RF
U1QoV0tBdHRhY2htZW50VGVzdHNNYWMsIEluc2VydERyb3BwZWRGaWxlUHJvbWlzZXNBc0F0dGFj
aG1lbnRzKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldEF0dGFj
aG1lbnRFbGVtZW50RW5hYmxlZDpZRVNdOworICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhb
W0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXdGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDQwMCwgNDAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KyAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW3NpbXVsYXRvciB3ZWJWaWV3XTsKKyAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXR0YWNobWVudEVkaXRpbmdUZXN0
TWFya3VwXTsKKyAgICBbc2ltdWxhdG9yIHdyaXRlUHJvbWlzZWRGaWxlczpAWyB0ZXN0UERGRmls
ZVVSTCgpLCB0ZXN0SW1hZ2VGaWxlVVJMKCkgXV07CisKKyAgICBPYnNlcnZlQXR0YWNobWVudFVw
ZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3KTsKKyAgICBbc2ltdWxhdG9yIHJ1bkZyb206
Q0dQb2ludE1ha2UoMCwgMCkgdG86Q0dQb2ludE1ha2UoNTAsIDUwKV07CisgICAgYXV0byBpbnNl
cnRlZEF0dGFjaG1lbnRzID0gcmV0YWluUHRyKFtvYnNlcnZlci5vYnNlcnZlcigpIGluc2VydGVk
XSk7CisgICAgRVhQRUNUX0VRKDJVLCBbaW5zZXJ0ZWRBdHRhY2htZW50cyBjb3VudF0pOworICAg
IEVYUEVDVF9FUSgyLCBbW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1lbnQnKS5sZW5ndGgiXSBpbnRWYWx1ZV0p
OworCisgICAgTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkRGF0YSA9IEBbIHRlc3RQREZEYXRh
KCksIHRlc3RJbWFnZURhdGEoKSBdOworICAgIGZvciAoX1dLQXR0YWNobWVudCAqYXR0YWNobWVu
dCBpbiBpbnNlcnRlZEF0dGFjaG1lbnRzLmdldCgpKSB7CisgICAgICAgIEVYUEVDVF9HVChhdHRh
Y2htZW50LmluZm8uZmlsZVBhdGgubGVuZ3RoLCAwVSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtl
eHBlY3RlZERhdGEgY29udGFpbnNPYmplY3Q6YXR0YWNobWVudC5pbmZvLmRhdGFdKTsKKyAgICAg
ICAgaWYgKFt0ZXN0UERGRGF0YSgpIGlzRXF1YWxUb0RhdGE6YXR0YWNobWVudC5pbmZvLmRhdGFd
KQorICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJhcHBsaWNhdGlvbi9wZGYiLCBhdHRhY2ht
ZW50LmluZm8uY29udGVudFR5cGUpOworICAgICAgICBlbHNlIGlmIChbdGVzdEltYWdlRGF0YSgp
IGlzRXF1YWxUb0RhdGE6YXR0YWNobWVudC5pbmZvLmRhdGFdKQorICAgICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKCJpbWFnZS9wbmciLCBhdHRhY2htZW50LmluZm8uY29udGVudFR5cGUpOwogICAg
IH0KKworICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiU2Vs
ZWN0QWxsIiBhcmd1bWVudDpuaWxdOworICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0
ZUVkaXRDb21tYW5kOkAiRGVsZXRlQmFja3dhcmQiIGFyZ3VtZW50Om5pbF07CisgICAgTlNBcnJh
eTxfV0tBdHRhY2htZW50ICo+ICpyZW1vdmVkQXR0YWNobWVudHMgPSBbb2JzZXJ2ZXIub2JzZXJ2
ZXIoKSByZW1vdmVkXTsKKyAgICBFWFBFQ1RfRVEoMlUsIHJlbW92ZWRBdHRhY2htZW50cy5jb3Vu
dCk7CisgICAgRVhQRUNUX0VRKDAsIFtbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVudCcpLmxlbmd0aCJdIGlu
dFZhbHVlXSk7CisgICAgRVhQRUNUX1RSVUUoW3JlbW92ZWRBdHRhY2htZW50cyBjb250YWluc09i
amVjdDpbaW5zZXJ0ZWRBdHRhY2htZW50cyBmaXJzdE9iamVjdF1dKTsKKyAgICBFWFBFQ1RfVFJV
RShbcmVtb3ZlZEF0dGFjaG1lbnRzIGNvbnRhaW5zT2JqZWN0OltpbnNlcnRlZEF0dGFjaG1lbnRz
IGxhc3RPYmplY3RdXSk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCkBAIC0xMDczLDcg
KzExMzAsNyBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzSU9TLCBJbnNlcnREcm9wcGVkQXR0cmli
dXRlZFN0cmluZ0NvbnRhaW5pbmdBdHRhY2htZW50KQogICAgIEVYUEVDVF9FUSgwVSwgW2RyYWdB
bmREcm9wU2ltdWxhdG9yIHJlbW92ZWRBdHRhY2htZW50c10uY291bnQpOwogICAgIGF1dG8gYXR0
YWNobWVudCA9IHJldGFpblB0cihbZHJhZ0FuZERyb3BTaW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2ht
ZW50c10uZmlyc3RPYmplY3QpOwogCi0gICAgYXV0byBzaXplID0gcGxhdGZvcm1JbWFnZVdpdGhE
YXRhKFthdHRhY2htZW50IHN5bmNocm9ub3VzbHlSZXF1ZXN0RGF0YTpuaWxdKS5zaXplOworICAg
IGF1dG8gc2l6ZSA9IHBsYXRmb3JtSW1hZ2VXaXRoRGF0YShbYXR0YWNobWVudCBpbmZvXS5kYXRh
KS5zaXplOwogICAgIEVYUEVDVF9FUSgyMTUuLCBzaXplLndpZHRoKTsKICAgICBFWFBFQ1RfRVEo
MTc0Liwgc2l6ZS5oZWlnaHQpOwogICAgIEVYUEVDVF9XS19TVFJFUSgiaW1hZ2UvcG5nIiwgW3dl
YlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2ht
ZW50Il0pOwpAQCAtMTExMSwxMyArMTE2OCw4IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1Ms
IEluc2VydERyb3BwZWRSaWNoQW5kUGxhaW5UZXh0RmlsZXNBc0F0dGFjaG1lbnRzKQogICAgIEVY
UEVDVF9FUSgyVSwgW2RyYWdBbmREcm9wU2ltdWxhdG9yIGluc2VydGVkQXR0YWNobWVudHNdLmNv
dW50KTsKICAgICBFWFBFQ1RfRVEoMFUsIFtkcmFnQW5kRHJvcFNpbXVsYXRvciByZW1vdmVkQXR0
YWNobWVudHNdLmNvdW50KTsKIAotICAgIGZvciAoX1dLQXR0YWNobWVudCAqYXR0YWNobWVudCBp
biBbZHJhZ0FuZERyb3BTaW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10pIHsKLSAgICAgICAg
TlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0gICAgICAgIEVYUEVDVF9HVChbYXR0YWNobWVudCBzeW5j
aHJvbm91c2x5UmVxdWVzdERhdGE6JmVycm9yXS5sZW5ndGgsIDBVKTsKLSAgICAgICAgRVhQRUNU
X1RSVUUoIWVycm9yKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgTlNMb2coQCJF
cnJvcjogJUAiLCBlcnJvcik7Ci0gICAgfQorICAgIGZvciAoX1dLQXR0YWNobWVudCAqYXR0YWNo
bWVudCBpbiBbZHJhZ0FuZERyb3BTaW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10pCisgICAg
ICAgIEVYUEVDVF9HVChbYXR0YWNobWVudCBpbmZvXS5kYXRhLmxlbmd0aCwgMFUpOwogCiAgICAg
RVhQRUNUX0VRKDIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRhY2htZW50JykubGVuZ3RoIl0uaW50VmFsdWUpOwog
ICAgIEVYUEVDVF9XS19TVFJFUSgiaGVsbG8ucnRmIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1lbnQnKVsw
XS5nZXRBdHRyaWJ1dGUoJ3RpdGxlJykiXSk7CkBAIC0xMTc0LDEzICsxMjI2LDggQEAgVEVTVChX
S0F0dGFjaG1lbnRUZXN0c0lPUywgSW5zZXJ0RHJvcHBlZEl0ZW1Qcm92aWRlcnNJbk9yZGVyKQog
ICAgIEVYUEVDVF9FUSgyVSwgW2RyYWdBbmREcm9wU2ltdWxhdG9yIGluc2VydGVkQXR0YWNobWVu
dHNdLmNvdW50KTsKICAgICBFWFBFQ1RfRVEoMFUsIFtkcmFnQW5kRHJvcFNpbXVsYXRvciByZW1v
dmVkQXR0YWNobWVudHNdLmNvdW50KTsKIAotICAgIGZvciAoX1dLQXR0YWNobWVudCAqYXR0YWNo
bWVudCBpbiBbZHJhZ0FuZERyb3BTaW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10pIHsKLSAg
ICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0gICAgICAgIEVYUEVDVF9HVChbYXR0YWNobWVu
dCBzeW5jaHJvbm91c2x5UmVxdWVzdERhdGE6JmVycm9yXS5sZW5ndGgsIDBVKTsKLSAgICAgICAg
RVhQRUNUX1RSVUUoIWVycm9yKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgTlNM
b2coQCJFcnJvcjogJUAiLCBlcnJvcik7Ci0gICAgfQorICAgIGZvciAoX1dLQXR0YWNobWVudCAq
YXR0YWNobWVudCBpbiBbZHJhZ0FuZERyb3BTaW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10p
CisgICAgICAgIEVYUEVDVF9HVChbYXR0YWNobWVudCBpbmZvXS5kYXRhLmxlbmd0aCwgMFUpOwog
CiAgICAgW3dlYlZpZXcgZXhwZWN0RWxlbWVudFRhZ3NJbk9yZGVyOkBbIEAiQVRUQUNITUVOVCIs
IEAiQSIsIEAiQVRUQUNITUVOVCIgXV07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL0RyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9p
b3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0KaW5kZXggOWUxZjIxZWUxZDUzYmRkNDZjMzMz
ODEwMjEwZWQwNzBkZjEzMmM4YS4uMGY5N2EzOWRiNjBhYjI5MDJhNTg4MzQxNDVhNzQwOWIyMzFi
NTdlNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11
bGF0b3JJT1MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11
bGF0b3JJT1MubW0KQEAgLTY4MCw3ICs2ODAsNyBAQCBzdGF0aWMgTlNBcnJheSAqZHJhZ0FuZERy
b3BFdmVudE5hbWVzKCkKICAgICByZXR1cm4gc2VsZi5vdmVycmlkZVBlcmZvcm1Ecm9wQmxvY2sg
PyBzZWxmLm92ZXJyaWRlUGVyZm9ybURyb3BCbG9jayhzZXNzaW9uKSA6IHNlc3Npb24uaXRlbXM7
CiB9CiAKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkSW5zZXJ0QXR0
YWNobWVudDooX1dLQXR0YWNobWVudCAqKWF0dGFjaG1lbnQKKy0gKHZvaWQpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgZGlkSW5zZXJ0QXR0YWNobWVudDooX1dLQXR0YWNobWVudCAqKWF0
dGFjaG1lbnQgd2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UKIHsKICAgICBbX2luc2VydGVk
QXR0YWNobWVudHMgYWRkT2JqZWN0OmF0dGFjaG1lbnRdOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>