<?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>180153</bug_id>
          
          <creation_ts>2017-11-29 11:06:57 -0800</creation_ts>
          <short_desc>[Attachment Support] Implement SPI for clients to make an attachment element display in-place</short_desc>
          <delta_ts>2017-11-30 09:20:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jlewis3</cc>
    
    <cc>mitz</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1375922</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-11-29 11:06:57 -0800</bug_when>
    <thetext>&lt;rdar://problem/35735252&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375950</commentid>
    <comment_count>1</comment_count>
      <attachid>327882</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-11-29 11:54:38 -0800</bug_when>
    <thetext>Created attachment 327882
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375975</commentid>
    <comment_count>2</comment_count>
      <attachid>327888</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-11-29 12:45:01 -0800</bug_when>
    <thetext>Created attachment 327888
Split out AttachmentDisplayOptions into AttachmentTypes.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376177</commentid>
    <comment_count>3</comment_count>
      <attachid>327888</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-29 18:23:48 -0800</bug_when>
    <thetext>Comment on attachment 327888
Split out AttachmentDisplayOptions into AttachmentTypes.h

Clearing flags on attachment: 327888

Committed r225311: &lt;https://trac.webkit.org/changeset/225311&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376178</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-29 18:23:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376336</commentid>
    <comment_count>5</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-11-30 08:44:58 -0800</bug_when>
    <thetext>This caused an API timeout with the API test:
WKAttachmentTests.InPlaceImageAttachmentToggleDisplayMode

on all macOS platforms.

https://build.webkit.org/builders/Apple%20High%20Sierra%20Release%20WK2%20%28Tests%29/builds/1440/steps/run-api-tests/logs/stdio
https://build.webkit.org/builders/Apple%20High%20Sierra%20Release%20WK2%20%28Tests%29/builds/1440</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376347</commentid>
    <comment_count>6</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-11-30 09:20:00 -0800</bug_when>
    <thetext>Tracking a fix for the API test in &lt;https://bugs.webkit.org/show_bug.cgi?id=180200&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327882</attachid>
            <date>2017-11-29 11:54:38 -0800</date>
            <delta_ts>2017-11-29 12:44:59 -0800</delta_ts>
            <desc>First pass</desc>
            <filename>bug-180153-20171129115437.patch</filename>
            <type>text/plain</type>
            <size>45639</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTZiMDg0MTNkMmMzNTFm
YjUzZjdiYjNiMmQ1M2M3MzI1ZTZjYzM0Mi4uMWQ2ZTExNTU1NjUyYzIxNjdkYzY0YjkxZDVmYjE4
NDkxNWU1OTcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE3LTExLTI5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEltcGxlbWVudCBTUEkgZm9yIGNsaWVudHMgdG8gbWFrZSBhbiBhdHRhY2htZW50
IGVsZW1lbnQgZGlzcGxheSBpbi1wbGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTczNTI1
Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRz
IFNQSSBzdXBwb3J0IGZvciBpbnNlcnRpbmcgYXR0YWNobWVudHMgdXNpbmcgaW4tcGxhY2UgZGlz
cGxheSBzdHlsZSwgYW5kIHVwZGF0aW5nIGRpc3BsYXkgb3B0aW9ucyBmb3IKKyAgICAgICAgZXhp
c3RpbmcgYXR0YWNobWVudHMuIFNlZSBjb21tZW50cyBiZWxvdyBmb3IgbW9yZSBkZXRhaWwuCisK
KyAgICAgICAgVGVzdHM6IFdLQXR0YWNobWVudFRlc3RzLkluUGxhY2VJbWFnZUF0dGFjaG1lbnRU
b2dnbGVEaXNwbGF5TW9kZQorICAgICAgICAgICAgICAgV0tBdHRhY2htZW50VGVzdHMuSW5QbGFj
ZUltYWdlQXR0YWNobWVudFBhcmFncmFwaEluc2VydGlvbgorICAgICAgICAgICAgICAgV0tBdHRh
Y2htZW50VGVzdHMuSW5QbGFjZVZpZGVvQXR0YWNobWVudEluc2VydGlvbldpdGhpbkxpc3QKKyAg
ICAgICAgICAgICAgIFdLQXR0YWNobWVudFRlc3RzLkluUGxhY2VQREZBdHRhY2htZW50Q3V0QW5k
UGFzdGUKKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omlu
c2VydEF0dGFjaG1lbnRGcm9tRmlsZSk6CisKKyAgICAgICAgVXBkYXRlIGRpc3BsYXkgb3B0aW9u
cyBmb3IgdGhlIGF0dGFjaG1lbnQgYmVmb3JlIGluc2VydGluZyBpbnRvIHRoZSBkb2N1bWVudC4K
KworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpzZXRGaWxlKToKKworICAgICAgICBSZWdlbmVyYXRlIHRoZSBzaGFkb3cgcm9vdCBpZiBuZWVk
ZWQgd2hlbiBzZXR0aW5nIHRoZSBmaWxlLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNo
bWVudEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlNb2RlKToKKworICAgICAgICBJbnRyb2R1Y2UgYSBu
ZXcgbWV0aG9kIHRvIHVwZGF0ZSB0aGUgZGlzcGxheSBtb2RlIG9mIGFuIGF0dGFjaG1lbnQgZWxl
bWVudC4gVGhpcyBidWlsZHMgdXAgdGhlIHNoYWRvdyByb290IG9mCisgICAgICAgIHRoZSBhdHRh
Y2htZW50IGlmIGl0IGlzIGRpc3BsYXllZCBpbi1wbGFjZS4KKworICAgICAgICAoV2ViQ29yZTo6
SFRNTEF0dGFjaG1lbnRFbGVtZW50OjplbnN1cmVJbm5lckltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6ZW5zdXJlSW5uZXJWaWRlbyk6CisKKyAgICAgICAg
SGVscGVycyB0byBpbnNlcnQgaW1hZ2UgYW5kIHZpZGVvIGVsZW1lbnRzIGludG8gdGhlIHNoYWRv
dyByb290IGlmIG5lZWRlZCwgYW5kIHJldHVybiB0aGUgaW1hZ2Ugb3IgdmlkZW8gZWxlbWVudC4K
KworICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojppbm5lckltYWdlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6aW5uZXJWaWRl
byBjb25zdCk6CisKKyAgICAgICAgSGVscGVycyB0byByZXRyaWV2ZSBleGlzdGluZyBpbWFnZSBh
bmQgdmlkZW8gZWxlbWVudHMgaW4gdGhlIHNoYWRvdyByb290LgorCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnBvcHVsYXRlU2hhZG93Um9vdElmTmVjZXNzYXJ5KToK
KworICAgICAgICBBcHBlbmRzIGFuZCBjb25maWd1cmVzIHRoZSBhdHRhY2htZW50IGVsZW1lbnQn
cyBzaGFkb3cgcm9vdCBmb3IgaW5saW5lIGRpc3BsYXksIGluaXRpYWxpemluZyBhbiBpbWFnZSBv
ciB2aWRlbworICAgICAgICBlbGVtZW50IG9yIG5laXRoZXIsIGRlcGVuZGluZyBvbiB0aGUgYXR0
YWNobWVudCB0eXBlLgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaDoK
KworICAgICAgICBJbnRyb2R1Y2UgYW4gQXR0YWNobWVudERpc3BsYXlPcHRpb25zIHN0cnVjdCB3
aGljaCBtaXJyb3JzIF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBpbiB0aGUgV2ViS2l0IGxh
eWVyLiBGb3IKKyAgICAgICAgbm93LCB0aGlzIG9ubHkgY29udGFpbnMgYSBkaXNwbGF5IG1vZGUg
ZW51bS4KKworICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zOjpk
ZWNvZGUpOgorCisgICAgICAgIFN1cHBvcnQgc2VyaWFsaXppbmcgYW5kIGRlc2VyaWFsaXppbmcg
YXR0YWNobWVudCBkaXNwbGF5IG9wdGlvbnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9TZXNzaW9uSU9TLm1tOgorCisgICAgICAgIEF2b2lkIHRoaXMgQVZBdWRpb1Nlc3Np
b24gYXNzZXJ0aW9uIHdoZW4gdGFyZ2V0aW5nIGlPUyBzaW11bGF0b3IuIEFWQXVkaW9TZXNzaW9u
IGFsd2F5cyB0aHJvd3MgdGhpcyBlcnJvciB3aGVuCisgICAgICAgIHNldHRpbmcgYW4gYXVkaW8g
c2Vzc2lvbiBjYXRlZ29yeSBpbiB0aGUgc2ltdWxhdG9yLCBldmVuIGluIGEgYmFzaWMgdGVzdCBh
cHAsIHNpbmNlIEFWRm91bmRhdGlvbiBkb2Vzbid0IHN1cHBvcnQKKyAgICAgICAgYXVkaW8gc2Vz
c2lvbnMgaW4gdGhlIHNpbXVsYXRvci4KKworICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
OjpzZXRDYXRlZ29yeSk6CisKIDIwMTctMTEtMjkgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtDb29yZEdyYXBoaWNzXSBSZW5hbWUgQ29vcmRpbmF0ZWRC
dWZmZXIgdG8gTmljb3NpYTo6QnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcwMzg5NTE0OWYxMzFjM2NlMzA2
ZDlmYWMyOWI0NTMxNzZjZGJmYjEuLmQ0Nzc3NWRmODJkODI3N2UzNWNjMjQ0NDI4MzFkNWMxZjRi
NjBjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTctMTEtMjkgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9y
dF0gSW1wbGVtZW50IFNQSSBmb3IgY2xpZW50cyB0byBtYWtlIGFuIGF0dGFjaG1lbnQgZWxlbWVu
dCBkaXNwbGF5IGluLXBsYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODAxNTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1NzM1MjUyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgV2Vi
S2l0IFNQSSwgLVtfV0tBdHRhY2htZW50IHNldERpc3BsYXlPcHRpb25zOmNvbXBsZXRpb246XSwg
YW5kIGFkZCBwbHVtYmluZyBmb3IgYXR0YWNobWVudCBkaXNwbGF5CisgICAgICAgIG9wdGlvbnMg
dG8gdGhlIHdlYiBjb250ZW50IHByb2Nlc3MuIENoYW5nZXMgY292ZXJlZCBieSA0IG5ldyBBUEkg
dGVzdHMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAg
KGhlYWRlcnNfZm9yX3R5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5jcHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnNldERpc3BsYXlPcHRpb25zKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbnNlcnRB
dHRhY2htZW50V2l0aEZpbGVuYW1lOmNvbnRlbnRUeXBlOmRhdGE6b3B0aW9uczpjb21wbGV0aW9u
Ol0pOgorCisgICAgICAgIFJlc3BlY3QgZ2l2ZW4gZGlzcGxheSBvcHRpb25zIHdoZW4gaW5zZXJ0
aW5nIGEgbmV3IGF0dGFjaG1lbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0F0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1l
bnQubW06CisgICAgICAgICgtW19XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBjb3JlRGlzcGxh
eU9wdGlvbnNdKToKKworICAgICAgICBJbnRyb2R1Y2UgYSBoZWxwZXIgdG8gY29udmVydCBmcm9t
IHRoZSBDb2NvYSBfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgb2JqZWN0IHRvIHBsYXRmb3Jt
LWFnbm9zdGljCisgICAgICAgIEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucy4KKworICAgICAgICAo
LVtfV0tBdHRhY2htZW50IHNldERpc3BsYXlPcHRpb25zOmNvbXBsZXRpb246XSk6CisgICAgICAg
IChXZWJLaXQ6OmlmKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0F0dGFjaG1lbnRJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9u
cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5z
ZXJ0QXR0YWNobWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBdHRhY2ht
ZW50RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEF0dGFjaG1lbnREaXNwbGF5
T3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50V2l0
aElkZW50aWZpZXIgY29uc3QpOgorCisgICAgICAgIFB1bGwgY29tbW9uIGxvZ2ljIHRvIHJldHJp
ZXZlIGFuIGF0dGFjaG1lbnQgZWxlbWVudCBtYXRjaGluZyBhIGdpdmVuIGlkZW50aWZpZXIgb3V0
IGludG8gYSBoZWxwZXIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAy
MDE3LTExLTI5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbQ29vcmRHcmFwaGljc10gUmVuYW1lIENvb3JkaW5hdGVkQnVmZmVyIHRvIE5pY29zaWE6OkJ1
ZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDIxNTkyMjZlMTJmMDM2OTZlMTkx
OGQ1NDRkNWQ3Y2YwYWU4Y2MwNmMuLmJjYzZmZGMzNjIzOGRiM2ZlNjExYjFkMmMxMDE1ZDYzZTIw
NzFhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTM3OTEsMjEgKzM3OTEsMjEg
QEAgdm9pZCBFZGl0b3I6Om5vdGlmeUNsaWVudE9mQXR0YWNobWVudFVwZGF0ZXMoKQogICAgIG1f
aW5zZXJ0ZWRBdHRhY2htZW50SWRlbnRpZmllcnMuY2xlYXIoKTsKIH0KIAotdm9pZCBFZGl0b3I6
Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVwYXRoLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
Y29udGVudFR5cGUpCit2b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYgb3B0aW9ucywgY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlcGF0aCwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGNvbnRlbnRUeXBlKQogewogICAgIGlmICghY29udGVudFR5cGUpCiAgICAgICAg
IGNvbnRlbnRUeXBlID0gRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKTsKLSAgICBp
bnNlcnRBdHRhY2htZW50RnJvbUZpbGUoaWRlbnRpZmllciwgZmlsZW5hbWUsICpjb250ZW50VHlw
ZSwgRmlsZTo6Y3JlYXRlKGZpbGVwYXRoKSk7CisgICAgaW5zZXJ0QXR0YWNobWVudEZyb21GaWxl
KGlkZW50aWZpZXIsIG9wdGlvbnMsIGZpbGVuYW1lLCAqY29udGVudFR5cGUsIEZpbGU6OmNyZWF0
ZShmaWxlcGF0aCkpOwogfQogCi12b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlKQordm9pZCBFZGl0
b3I6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBBdHRh
Y2htZW50RGlzcGxheU9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBl
KQogewogICAgIGlmICghY29udGVudFR5cGUpCiAgICAgICAgIGNvbnRlbnRUeXBlID0gRmlsZTo6
Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKTsKLSAgICBpbnNlcnRBdHRhY2htZW50RnJvbUZp
bGUoaWRlbnRpZmllciwgZmlsZW5hbWUsICpjb250ZW50VHlwZSwgRmlsZTo6Y3JlYXRlKEJsb2I6
OmNyZWF0ZShkYXRhLCAqY29udGVudFR5cGUpLCBmaWxlbmFtZSkpOworICAgIGluc2VydEF0dGFj
aG1lbnRGcm9tRmlsZShpZGVudGlmaWVyLCBvcHRpb25zLCBmaWxlbmFtZSwgKmNvbnRlbnRUeXBl
LCBGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGRhdGEsICpjb250ZW50VHlwZSksIGZpbGVuYW1l
KSk7CiB9CiAKLXZvaWQgRWRpdG9yOjppbnNlcnRBdHRhY2htZW50RnJvbUZpbGUoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlLCBSZWY8RmlsZT4mJiBmaWxlKQordm9pZCBFZGl0b3I6Omluc2VydEF0dGFjaG1l
bnRGcm9tRmlsZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnREaXNw
bGF5T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgUmVmPEZpbGU+JiYgZmlsZSkKIHsKICAgICBhdXRvIGF0dGFjaG1lbnQg
PSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcs
IGRvY3VtZW50KCkpOwogICAgIGF0dGFjaG1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnRp
dGxlQXR0ciwgZmlsZW5hbWUpOwpAQCAtMzgxMyw2ICszODEzLDcgQEAgdm9pZCBFZGl0b3I6Omlu
c2VydEF0dGFjaG1lbnRGcm9tRmlsZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZmkKICAgICBhdHRhY2htZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0eXBlQXR0
ciwgY29udGVudFR5cGUpOwogICAgIGF0dGFjaG1lbnQtPnNldFVuaXF1ZUlkZW50aWZpZXIoaWRl
bnRpZmllcik7CiAgICAgYXR0YWNobWVudC0+c2V0RmlsZShXVEZNb3ZlKGZpbGUpKTsKKyAgICBh
dHRhY2htZW50LT51cGRhdGVEaXNwbGF5TW9kZShvcHRpb25zLm1vZGUpOwogCiAgICAgYXV0byBm
cmFnbWVudFRvSW5zZXJ0ID0gZG9jdW1lbnQoKS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAg
ICAgZnJhZ21lbnRUb0luc2VydC0+YXBwZW5kQ2hpbGQoYXR0YWNobWVudC5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAppbmRleCBlYWQ2NjY0ZGQyMmNlYTdmNjg3MjhkMmVmYTJhM2JkZTdi
NTkyZGE1Li45OTlmYTRiN2NjNjU2M2I1Yzg2MmNhODYzMjUzNmU4MWFhNDAxMDUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKQEAgLTg0LDYgKzg0LDcgQEAgY2xhc3MgVGV4dDsKIGNsYXNzIFRl
eHRDaGVja2VyQ2xpZW50OwogY2xhc3MgVGV4dEV2ZW50OwogCitzdHJ1Y3QgQXR0YWNobWVudERp
c3BsYXlPcHRpb25zOwogc3RydWN0IFBhc3RlYm9hcmRQbGFpblRleHQ7CiBzdHJ1Y3QgUGFzdGVi
b2FyZFVSTDsKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CkBAIC01MDMsOCArNTA0LDggQEAg
cHVibGljOgogICAgIGJvb2wgaXNHZXR0aW5nRGljdGlvbmFyeVBvcHVwSW5mbygpIGNvbnN0IHsg
cmV0dXJuIG1faXNHZXR0aW5nRGljdGlvbmFyeVBvcHVwSW5mbzsgfQogCiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydEF0dGFjaG1l
bnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIGZpbGVwYXRoLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUgPSBz
dGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0QXR0YWNobWVudChj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlID0gc3Rk
OjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVwYXRoLCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gY29udGVudFR5cGUgPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0
IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlID0g
c3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGRpZEluc2VydEF0dGFjaG1lbnRFbGVtZW50KEhUTUxB
dHRhY2htZW50RWxlbWVudCYpOwogICAgIHZvaWQgZGlkUmVtb3ZlQXR0YWNobWVudEVsZW1lbnQo
SFRNTEF0dGFjaG1lbnRFbGVtZW50Jik7CiAjZW5kaWYKQEAgLTUyNCw3ICs1MjUsNyBAQCBwcml2
YXRlOgogICAgIERvY3VtZW50JiBkb2N1bWVudCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKLSAgICB2b2lkIGluc2VydEF0dGFjaG1lbnRGcm9tRmlsZShjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIFJlZjxGaWxlPiYmKTsKKyAgICB2b2lkIGluc2VydEF0dGFjaG1lbnRGcm9t
RmlsZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnREaXNwbGF5T3B0
aW9ucyYsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IFJlZjxGaWxlPiYmKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5EZWxldGVSYW5nZShSYW5nZSop
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3Bw
CmluZGV4IDU4MzNiMTYxMTAzY2Y3MzdiOGZjMGY2ZmZlYTM1NzQ0YzZjNjVjN2YuLjU0ZjAzMjBl
ZDRlZmFjMTEzYjUwYTM5ZjljNDM2ODY1ZGMxMTU5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTI4LDE0ICsyOCwyMCBAQAogCiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAorI2luY2x1ZGUgIkRPTVVSTC5oIgorI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgog
I2luY2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXIuaCIKICNpbmNsdWRlICJGaWxlUmVhZGVyTG9hZGVy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5o
IgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZW5kZXJBdHRhY2ht
ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCisjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xMTMsNiArMTE5LDEyIEBAIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpzZXRGaWxlKFJl
ZlB0cjxGaWxlPiYmIGZpbGUpCiAKICAgICBpZiAoYXV0byogcmVuZGVyQXR0YWNobWVudCA9IGF0
dGFjaG1lbnRSZW5kZXJlcigpKQogICAgICAgICByZW5kZXJBdHRhY2htZW50LT5pbnZhbGlkYXRl
KCk7CisKKyAgICBpZiAoYXV0byBpbWFnZSA9IGlubmVySW1hZ2UoKSkKKyAgICAgICAgaW1hZ2Ut
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwgZW1wdHlTdHJpbmco
KSk7CisgICAgaWYgKGF1dG8gdmlkZW8gPSBpbm5lclZpZGVvKCkpCisgICAgICAgIHZpZGVvLT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIsIGVtcHR5U3RyaW5nKCkp
OworICAgIHBvcHVsYXRlU2hhZG93Um9vdElmTmVjZXNzYXJ5KCk7CiB9CiAKIFJlbmRlckF0dGFj
aG1lbnQqIEhUTUxBdHRhY2htZW50RWxlbWVudDo6YXR0YWNobWVudFJlbmRlcmVyKCkgY29uc3QK
QEAgLTE3NCw2ICsxODYsODIgQEAgU3RyaW5nIEhUTUxBdHRhY2htZW50RWxlbWVudDo6YXR0YWNo
bWVudFBhdGgoKSBjb25zdAogICAgIHJldHVybiBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHdlYmtpdGF0dGFjaG1lbnRwYXRoQXR0cik7CiB9CiAKK3ZvaWQgSFRNTEF0dGFjaG1lbnRF
bGVtZW50Ojp1cGRhdGVEaXNwbGF5TW9kZShBdHRhY2htZW50RGlzcGxheU1vZGUgbW9kZSkKK3sK
KyAgICBtb2RlID0gbW9kZSA9PSBBdHRhY2htZW50RGlzcGxheU1vZGU6OkF1dG8gPyBkZWZhdWx0
RGlzcGxheU1vZGUoKSA6IG1vZGU7CisKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIEF0
dGFjaG1lbnREaXNwbGF5TW9kZTo6SW5QbGFjZToKKyAgICAgICAgcG9wdWxhdGVTaGFkb3dSb290
SWZOZWNlc3NhcnkoKTsKKyAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eVdlYmtpdEFwcGVhcmFuY2UsIENTU1ZhbHVlTm9uZSwgdHJ1ZSk7CisgICAgICAgIHNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZUlubGluZUJsb2NrLCB0
cnVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdHRhY2htZW50RGlzcGxheU1vZGU6OkFz
SWNvbjoKKyAgICAgICAgcmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtp
dEFwcGVhcmFuY2UpOworICAgICAgICByZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5RGlzcGxheSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpbnZhbGlkYXRl
U3R5bGVBbmRSZW5kZXJlcnNGb3JTdWJ0cmVlKCk7Cit9CisKK1JlZjxIVE1MSW1hZ2VFbGVtZW50
PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmVuc3VyZUlubmVySW1hZ2UoKQoreworICAgIGlmIChh
dXRvIGltYWdlID0gaW5uZXJJbWFnZSgpKQorICAgICAgICByZXR1cm4gKmltYWdlOworCisgICAg
YXV0byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKKyAgICBl
bnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCkuYXBwZW5kQ2hpbGQoaW1hZ2UpOworICAgIHJldHVy
biBpbWFnZTsKK30KKworUmVmPEhUTUxWaWRlb0VsZW1lbnQ+IEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6ZW5zdXJlSW5uZXJWaWRlbygpCit7CisgICAgaWYgKGF1dG8gdmlkZW8gPSBpbm5lclZpZGVv
KCkpCisgICAgICAgIHJldHVybiAqdmlkZW87CisKKyAgICBhdXRvIHZpZGVvID0gSFRNTFZpZGVv
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOworICAgIGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jv
b3QoKS5hcHBlbmRDaGlsZCh2aWRlbyk7CisgICAgcmV0dXJuIHZpZGVvOworfQorCitSZWZQdHI8
SFRNTEltYWdlRWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojppbm5lckltYWdlKCkgY29u
c3QKK3sKKyAgICBpZiAoYXV0byByb290ID0gdXNlckFnZW50U2hhZG93Um9vdCgpKQorICAgICAg
ICByZXR1cm4gY2hpbGRyZW5PZlR5cGU8SFRNTEltYWdlRWxlbWVudD4oKnJvb3QpLmZpcnN0KCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBIVE1M
QXR0YWNobWVudEVsZW1lbnQ6OmlubmVyVmlkZW8oKSBjb25zdAoreworICAgIGlmIChhdXRvIHJv
b3QgPSB1c2VyQWdlbnRTaGFkb3dSb290KCkpCisgICAgICAgIHJldHVybiBjaGlsZHJlbk9mVHlw
ZTxIVE1MVmlkZW9FbGVtZW50Pigqcm9vdCkuZmlyc3QoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKwordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnBvcHVsYXRlU2hhZG93Um9vdElmTmVj
ZXNzYXJ5KCkKK3sKKyAgICBhdXRvIG1pbWVUeXBlID0gYXR0YWNobWVudFR5cGUoKTsKKyAgICBp
ZiAoIW1fZmlsZSB8fCBtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWltZVR5cGUp
IHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5cGUobWltZVR5cGUpKSB7CisgICAgICAg
IGF1dG8gaW1hZ2UgPSBlbnN1cmVJbm5lckltYWdlKCk7CisgICAgICAgIGlmIChpbWFnZS0+YXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRyKS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRyLCBE
T01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCAqbV9maWxlKSk7CisKKyAgICB9IGVs
c2UgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkTWVkaWFNSU1FVHlwZShtaW1lVHlw
ZSkpIHsKKyAgICAgICAgYXV0byB2aWRlbyA9IGVuc3VyZUlubmVyVmlkZW8oKTsKKyAgICAgICAg
aWYgKHZpZGVvLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIpLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgdmlkZW8tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oc3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQoKSwgKm1fZmls
ZSkpOworICAgICAgICAgICAgdmlkZW8tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oY29udHJvbHNBdHRyLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwog
dm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJlcXVlc3REYXRhKEZ1bmN0aW9uPHZvaWQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKG1fZmlsZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCmluZGV4IDVlM2QzYzg2
MzliNjA2ZDBkYjI5MjJjYTdhN2NmOTZiYzE2YWZmZTcuLmExMjE1ZDM1MGJlYjIxNTg0YzY1NGM3
MGI3YTE4Y2E1MmMyZDNmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuaApAQCAtMzMsOSArMzMsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBdHRhY2htZW50RGF0YVJlYWRlcjsKIGNsYXNzIEZpbGU7CitjbGFzcyBIVE1MSW1hZ2VFbGVt
ZW50OworY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIFJlbmRlckF0dGFjaG1lbnQ7CiBj
bGFzcyBTaGFyZWRCdWZmZXI7CiAKK2VudW0gY2xhc3MgQXR0YWNobWVudERpc3BsYXlNb2RlIHsK
KyAgICBBdXRvLAorICAgIEluUGxhY2UsCisgICAgQXNJY29uCit9OworCitzdHJ1Y3QgQXR0YWNo
bWVudERpc3BsYXlPcHRpb25zIHsKKyAgICBBdHRhY2htZW50RGlzcGxheU1vZGUgbW9kZSB7IEF0
dGFjaG1lbnREaXNwbGF5TW9kZTo6QXV0byB9OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucz4gZGVjb2Rl
KERlY29kZXImKTsKK307CisKIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudCBmaW5hbCA6IHB1
YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MQXR0YWNobWVu
dEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKQEAgLTQ3
LDYgKzYyLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB1bmlxdWVJZGVu
dGlmaWVyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRVbmlxdWVJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVEaXNwbGF5TW9kZShBdHRhY2ht
ZW50RGlzcGxheU1vZGUpOworCiAgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0
ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogICAg
IHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZp
bmFsOwogCkBAIC02NCw2ICs4MSwyMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgfkhUTUxBdHRh
Y2htZW50RWxlbWVudCgpOwogCiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBm
aW5hbDsKKyAgICBSZWY8SFRNTEltYWdlRWxlbWVudD4gZW5zdXJlSW5uZXJJbWFnZSgpOworICAg
IFJlZjxIVE1MVmlkZW9FbGVtZW50PiBlbnN1cmVJbm5lclZpZGVvKCk7CisgICAgUmVmUHRyPEhU
TUxJbWFnZUVsZW1lbnQ+IGlubmVySW1hZ2UoKSBjb25zdDsKKyAgICBSZWZQdHI8SFRNTFZpZGVv
RWxlbWVudD4gaW5uZXJWaWRlbygpIGNvbnN0OworCisgICAgdm9pZCBwb3B1bGF0ZVNoYWRvd1Jv
b3RJZk5lY2Vzc2FyeSgpOworCisgICAgQXR0YWNobWVudERpc3BsYXlNb2RlIGRlZmF1bHREaXNw
bGF5TW9kZSgpIGNvbnN0CisgICAgeworICAgICAgICAvLyBGSVhNRTogRm9yIG5vdywgYWxsIGF0
dGFjaG1lbnQgZWxlbWVudHMgYXV0b21hdGljYWxseSBkaXNwbGF5IHVzaW5nIGEgZmlsZSBpY29u
LgorICAgICAgICAvLyBJbiBhIGZvbGxvd3VwIHBhdGNoLCB3ZSdsbCBjaGFuZ2UgdGhlIGRlZmF1
bHQgYmVoYXZpb3IgdG8gdXNlIGluLXBsYWNlIHByZXNlbnRhdGlvbgorICAgICAgICAvLyBmb3Ig
Y2VydGFpbiBpbWFnZSBNSU1FIHR5cGVzLgorICAgICAgICByZXR1cm4gQXR0YWNobWVudERpc3Bs
YXlNb2RlOjpBc0ljb247CisgICAgfQogCiAgICAgYm9vbCBzaG91bGRTZWxlY3RPbk1vdXNlRG93
bigpIGZpbmFsIHsKICNpZiBQTEFURk9STShJT1MpCkBAIC03OSw2ICsxMTAsMjAgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEF0dGFjaG1lbnREYXRhUmVhZGVyPj4gbV9h
dHRhY2htZW50UmVhZGVyczsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2
b2lkIEF0dGFjaG1lbnREaXNwbGF5T3B0aW9uczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1vZGUpOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxBdHRhY2htZW50RGlzcGxheU9wdGlvbnM+
IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgQXR0YWNobWVudERpc3BsYXlNb2RlIG1vZGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVu
dW0obW9kZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sg
bW9kZSB9fTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCmluZGV4IDc2MWE5NDQxODI1NDk5M2YyY2NkYzcy
N2NlMWI0MWM0MDdlOGQ0ZWMuLmY5MDkxOGFhZTlkZDk1MmQ5NzUzNWExZTVlMDg0OWIwODExZjE1
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nl
c3Npb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlv
U2Vzc2lvbklPUy5tbQpAQCAtMTQxLDcgKzE0MSw5IEBAIHZvaWQgQXVkaW9TZXNzaW9uOjpzZXRD
YXRlZ29yeShDYXRlZ29yeVR5cGUgbmV3Q2F0ZWdvcnkpCiAKICAgICBOU0Vycm9yICplcnJvciA9
IG5pbDsKICAgICBbW0FWQXVkaW9TZXNzaW9uIHNoYXJlZEluc3RhbmNlXSBzZXRDYXRlZ29yeTpj
YXRlZ29yeVN0cmluZyBtb2RlOmNhdGVnb3J5TW9kZSBvcHRpb25zOm9wdGlvbnMgZXJyb3I6JmVy
cm9yXTsKKyNpZiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKICAgICBBU1NFUlQoIWVycm9yKTsK
KyNlbmRpZgogfQogCiBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBBdWRpb1Nlc3Npb246OmNh
dGVnb3J5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cmlu
ZGV4IGYxNmFmYmJjN2IyYWEwZDU0Yjc0N2FlYjNlM2M3NGZkN2FlN2JhMzguLmEzMjU1Y2Q2MTVj
ZjlkMGQ2YzZlM2RmNTBhOTI2YWQxNzQzMTc1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQpAQCAtMzYxLDYgKzM2MSw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBl
KHR5cGUpOgogICAgIHNwZWNpYWxfY2FzZXMgPSB7CiAgICAgICAgICdTdHJpbmcnOiBbJzx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4nXSwKICAgICAgICAgJ1BBTDo6U2Vzc2lvbklEJzogWyc8cGFsL1Nl
c3Npb25JRC5oPiddLAorICAgICAgICAnV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25z
JzogWyc8V2ViQ29yZS9IVE1MQXR0YWNobWVudEVsZW1lbnQuaD4nXSwKICAgICAgICAgJ1dlYkNv
cmU6OkF1dG9wbGF5RXZlbnRGbGFncyc6IFsnPFdlYkNvcmUvQXV0b3BsYXlFdmVudC5oPiddLAog
ICAgICAgICAnV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyc6IFsnPFdlYkNvcmUvSlNET01FeGNl
cHRpb25IYW5kbGluZy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5n
cyc6IFsnPFdlYkNvcmUvRmlsZUNob29zZXIuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCAxZDQ5YjA3YjJiMWI1MWU3YjI3MzVlZDNk
MTQ2ZDRiNzc2OWExNGI0Li5kN2Q4MDE4ODNjZTk4NWQzYjkzMmViZTUzMThhYWM3MDVlZjQ2NTY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJQXR0YWNo
bWVudC5oIgogCisjaW5jbHVkZSA8V2ViQ29yZS9IVE1MQXR0YWNobWVudEVsZW1lbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9CbG9ja1B0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNTUsNCArNTYsMTIgQEAgdm9p
ZCBBdHRhY2htZW50OjpyZXF1ZXN0RGF0YShGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+LCBXZWJLaXQKICAgICAgICAgY2FsbGJhY2sobnVsbHB0ciwgV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKIH0KIAordm9pZCBBdHRh
Y2htZW50OjpzZXREaXNwbGF5T3B0aW9ucyhXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlv
bnMgb3B0aW9ucywgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrKQoreworICAgIGlmIChtX3dlYlBhZ2UpCisgICAgICAgIG1fd2ViUGFnZS0+c2V0
QXR0YWNobWVudERpc3BsYXlPcHRpb25zKG1faWRlbnRpZmllciwgb3B0aW9ucywgV1RGTW92ZShj
YWxsYmFjaykpOworICAgIGVsc2UKKyAgICAgICAgY2FsbGJhY2soV2ViS2l0OjpDYWxsYmFja0Jh
c2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggMWVhMDA3ZDZlMDczYjEzNGNiNGQ5
YWU0NTU2ODE5ZDljOTU4MjI0NC4uOWZlNzVjOWFiOTBmMmYyYWVlZWI0OTViNGNkMDMyNjMyYzNj
NTcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBA
IC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK3N0cnVjdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnM7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNDksNiArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYg
aWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIHZvaWQgcmVx
dWVzdERhdGEoRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZXREaXNwbGF5T3B0aW9u
cyhXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0
YWNobWVudChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJv
eHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CmluZGV4IGNiMWZkYjI3YTZiZTVjZTY0MWZlNGI4ODBkYTFiNmY4ZDQ0YzRiNDguLjZmYzkxMjU0
NDMwY2M3ODRmYTYyYmQwYTU0OTM1YmIwOTAxNWZiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtOTEsNiArOTEsNyBAQAogI2ltcG9y
dCAiX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlUG9s
aWNpZXNJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgor
I2ltcG9ydCA8V2ViQ29yZS9IVE1MQXR0YWNobWVudEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRE9NQmluZGluZy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmg+CkBAIC00MTkzLDggKzQxOTQsOSBA
QCAtIChfV0tBdHRhY2htZW50ICopX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6KE5TU3Ry
aW5nICopZmlsZW5hbWUgY29udGVudFR5cAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CiAgICAgYXV0byBpZGVudGlmaWVyID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwogCisg
ICAgYXV0byBjb3JlT3B0aW9ucyA9IG9wdGlvbnMgPyBvcHRpb25zLmNvcmVEaXNwbGF5T3B0aW9u
cyA6IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyB7IH07CiAgICAgYXV0byBidWZm
ZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKLSAgICBfcGFnZS0+aW5z
ZXJ0QXR0YWNobWVudChpZGVudGlmaWVyLCBmaWxlbmFtZSwgY29udGVudFR5cGUubGVuZ3RoID8g
c3RkOjpvcHRpb25hbDxTdHJpbmc+IHsgY29udGVudFR5cGUgfSA6IHN0ZDo6bnVsbG9wdCwgYnVm
ZmVyLmdldCgpLCBbY2FwdHVyZWRIYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKSwgY2FwdHVyZWRCdWZmZXIgPSBidWZmZXIuY29weVJlZigpXSAoV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgX3BhZ2UtPmluc2VydEF0dGFjaG1lbnQoaWRlbnRp
ZmllciwgY29yZU9wdGlvbnMsIGZpbGVuYW1lLCBjb250ZW50VHlwZS5sZW5ndGggPyBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4geyBjb250ZW50VHlwZSB9IDogc3RkOjpudWxsb3B0LCBidWZmZXIuZ2V0
KCksIFtjYXB0dXJlZEhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpLCBj
YXB0dXJlZEJ1ZmZlciA9IGJ1ZmZlci5jb3B5UmVmKCldIChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IgZXJyb3IpIHsKICAgICAgICAgaWYgKGNhcHR1cmVkSGFuZGxlcikKICAgICAgICAgICAg
IGNhcHR1cmVkSGFuZGxlcihlcnJvciA9PSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5v
bmUpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdHRhY2htZW50LmgKaW5kZXggMWNkNDU3NDViNTFjMWM0NWMzMGU4OTExODEzNGVjMzA2M2U3
ZDE1Mi4uZjgzNjg5ZGQyNjQ1Nzc5ZmRlZmNjOWM5ZDY1MWI4NWFhNTEyZDgwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oCkBAIC0z
OCwxMiArMzgsMTIgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLQXR0YWNobWVudERp
c3BsYXlNb2RlKSB7CiBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyA6IE5T
T2JqZWN0CiBAcHJvcGVydHkgKG5vbmF0b21pYykgX1dLQXR0YWNobWVudERpc3BsYXlNb2RlIG1v
ZGU7Ci1AcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBleHBhbmRzSW1hZ2VUb01heGltdW1XaWR0
aDsKIEBlbmQKIAogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKQogQGludGVyZmFjZSBfV0tBdHRhY2htZW50IDogTlNPYmplY3QKIC0gKHZvaWQp
cmVxdWVzdERhdGE6KHZvaWQoXikoTlNEYXRhICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRs
ZXI7CistICh2b2lkKXNldERpc3BsYXlPcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlv
bnMgKilvcHRpb25zIGNvbXBsZXRpb246KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFu
ZGxlcjsKIEBlbmQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tCmluZGV4IGQwM2Q5NDNhZDlkOGJkZTJjNmZlOGFkNDZm
YzJlZTg1NzAxNGVmY2YuLjAwYzQ1NDE0Y2RiYmRlZDJiZDY1YWE1NDAxZmI1NDY2MDA2NWZhOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2ht
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2ht
ZW50Lm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJBUElBdHRhY2htZW50LmgiCiAjaW1w
b3J0ICJXS0Vycm9yUHJpdmF0ZS5oIgogI2ltcG9ydCAiX1dLQXR0YWNobWVudEludGVybmFsLmgi
CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxBdHRhY2htZW50RWxlbWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCkBAIC00MCwx
MyArNDEsMzIgQEAgQGltcGxlbWVudGF0aW9uIF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyA6
IE5TT2JqZWN0CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CiB7Ci0gICAgaWYgKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pIHsKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkKICAgICAgICAgX21vZGUg
PSBfV0tBdHRhY2htZW50RGlzcGxheU1vZGVBdXRvOwotICAgICAgICBfZXhwYW5kc0ltYWdlVG9N
YXhpbXVtV2lkdGggPSBOTzsKLSAgICB9CisKICAgICByZXR1cm4gc2VsZjsKIH0KIAorLSAoV2Vi
Q29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zKWNvcmVEaXNwbGF5T3B0aW9ucworeworICAg
IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5TW9kZSBtb2RlOworICAgIHN3aXRjaCAoc2VsZi5t
b2RlKSB7CisgICAgY2FzZSBfV0tBdHRhY2htZW50RGlzcGxheU1vZGVBdXRvOgorICAgICAgICBt
b2RlID0gV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlNb2RlOjpBdXRvOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUFzSWNvbjoKKyAgICAgICAgbW9k
ZSA9IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5TW9kZTo6QXNJY29uOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUluUGxhY2U6CisgICAgICAgIG1v
ZGUgPSBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU1vZGU6OkluUGxhY2U7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBtb2RlID0gV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlNb2RlOjpBdXRvOworICAgIH0KKyAg
ICByZXR1cm4geyBtb2RlIH07Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIF9XS0F0dGFj
aG1lbnQKQEAgLTc0LDYgKzk0LDIwIEBAIC0gKHZvaWQpcmVxdWVzdERhdGE6KHZvaWQoXikoTlNE
YXRhICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKICAgICB9KTsKIH0KIAorLSAodm9p
ZClzZXREaXNwbGF5T3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9u
cyBjb21wbGV0aW9uOih2b2lkKF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAg
ICBhdXRvIGNvcmVPcHRpb25zID0gb3B0aW9ucyA/IG9wdGlvbnMuY29yZURpc3BsYXlPcHRpb25z
IDogV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zIHsgfTsKKyAgICBfYXR0YWNobWVu
dC0+c2V0RGlzcGxheU9wdGlvbnMoY29yZU9wdGlvbnMsIFtjYXB0dXJlZEJsb2NrID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsK
KyAgICAgICAgaWYgKCFjYXB0dXJlZEJsb2NrKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmIChlcnJvciA9PSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQorICAgICAgICAgICAg
Y2FwdHVyZWRCbG9jayhuaWwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjYXB0dXJlZEJs
b2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6MSB1c2VySW5m
bzpuaWxdKTsKKyAgICB9KTsKK30KKwogLSAoTlNTdHJpbmcgKil1bmlxdWVJZGVudGlmaWVyCiB7
CiAgICAgcmV0dXJuIF9hdHRhY2htZW50LT5pZGVudGlmaWVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudEludGVybmFsLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudEludGVybmFsLmgK
aW5kZXggYTk4MzA1NzgwNWRmNjk3N2Q0NDVhYzgzYzBiNDdkZGU1M2Y2ZTIxYS4uMmU1M2VjYmEz
OTU0YWI2NDE2Y2Q0Y2QyY2RmMTRhZWU1YTk0ZDUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnRJbnRlcm5hbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50SW50ZXJuYWwuaApAQCAt
MzgsNiArMzgsMTAgQEAgaW5saW5lIF9XS0F0dGFjaG1lbnQgKndyYXBwZXIoQVBJOjpBdHRhY2ht
ZW50JiBhdHRhY2htZW50KQogCiB9CiAKK0BpbnRlcmZhY2UgX1dLQXR0YWNobWVudERpc3BsYXlP
cHRpb25zICgpCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdlYkNvcmU6OkF0dGFj
aG1lbnREaXNwbGF5T3B0aW9ucyBjb3JlRGlzcGxheU9wdGlvbnM7CitAZW5kCisKIEBpbnRlcmZh
Y2UgX1dLQXR0YWNobWVudCAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCiAgICAgQVBJOjpPYmpl
Y3RTdG9yYWdlPEFQSTo6QXR0YWNobWVudD4gX2F0dGFjaG1lbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAxYzM2Y2I4YWFhYTNkM2QyMzM5MWJlMTFhMzgz
ZGZlZDEwNTJmNGJlLi40ZDlmZDQ3MjQ2ODlhZDQ1NmZlMmM2YmViNTY1YjNkZWFhNGU0OWU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCisj
aW5jbHVkZSAiQVBJQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIkFQSUNvbnRleHRNZW51Q2xpZW50
LmgiCiAjaW5jbHVkZSAiQVBJRmluZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSUZpbmRNYXRjaGVz
Q2xpZW50LmgiCkBAIC0xMjEsNiArMTIyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50TmFt
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Rm9jdXNEaXJlY3Rpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01CaW5kaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MZW5ndGhCb3gu
aD4KQEAgLTcxNDcsNyArNzE0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3RvcmFn
ZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lCiAKICNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0
YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgU2hhcmVkQnVmZmVyJiBkYXRhLCBG
dW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQ
YWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgU2hhcmVkQnVmZmVyJiBkYXRh
LCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQogewogICAg
IGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrKENhbGxiYWNrQmFzZTo6RXJyb3I6
Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwpAQCAtNzE1NSw3ICs3MTU3LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGZpbGUKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJ
bnNlcnRBdHRhY2htZW50KGlkZW50aWZpZXIsIGZpbGVuYW1lLCBjb250ZW50VHlwZSwgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsgJmRhdGEgfSwgY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydEF0dGFjaG1l
bnQoaWRlbnRpZmllciwgb3B0aW9ucywgZmlsZW5hbWUsIGNvbnRlbnRUeXBlLCBJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UgeyAmZGF0YSB9LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCkBAIC03MTY5LDYgKzcxNzEsMTcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlcXVlc3RBdHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIEZ1bmN0aW9uPHZvaWQKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlcXVlc3RBdHRhY2htZW50RGF0YShpZGVudGlmaWVyLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQp
OwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QXR0YWNobWVudERpc3BsYXlPcHRpb25zKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgQXR0YWNobWVudERpc3BsYXlPcHRpb25zIG9wdGlvbnMs
IEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCit7CisgICAg
aWYgKCFpc1ZhbGlkKCkpIHsKKyAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNlOjpFcnJvcjo6
T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdHRhY2htZW50RGlzcGxheU9wdGlvbnMoaWRl
bnRpZmllciwgb3B0aW9ucywgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQog
ewogICAgIG1fcGFnZUNsaWVudC5kaWRJbnNlcnRBdHRhY2htZW50KGlkZW50aWZpZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAzZjk2ZmRmMTAwM2I1ZTZiYzdl
YmZmZDhhYjY3YTUxMDk2MTE3YjdhLi5mMjUyOTYwOGJiMmYyZDQ0ZTgzMmVjNjY3MzA5NTlkY2Q1
YmMyMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTc2LDYg
KzE3NiwxMiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFJlY3RFZGdlczsKIHVzaW5nIEZs
b2F0Qm94RXh0ZW50ID0gUmVjdEVkZ2VzPGZsb2F0PjsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQXR0YWNobWVudERpc3Bs
YXlPcHRpb25zOworfQorI2VuZGlmCisKICNpZiBQTEFURk9STShHVEspCiB0eXBlZGVmIEd0a1dp
ZGdldCogUGxhdGZvcm1XaWRnZXQ7CiAjZW5kaWYKQEAgLTEyMTYsOCArMTIyMiw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwg
U3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCB3ZWJQcm9jZXNzQ29udGV4dElkKTsKIAog
I2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdm9pZCBpbnNlcnRBdHRhY2htZW50
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEs
IEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgaW5zZXJ0
QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkF0dGFj
aG1lbnREaXNwbGF5T3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBjb250ZW50VHlwZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBGdW5j
dGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RBdHRh
Y2htZW50RGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2
b2lkIHNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucywgRnVuY3Rpb248dm9pZChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNmZlNzliNDkxZmQ1MmI4NzA0N2Vm
MmU2OTcxZDlhNGQ0NWFlODU1MC4uYWQ0MjQyYzk3MmQ0MTAwOTYwOGM1OGViNmJkMTc0MTQ5ZDI2
ZmI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTU3NjcsMjMgKzU3NjcsMTYgQEAgdm9pZCBXZWJQYWdlOjppbnZva2VTaGFyZWRCdWZmZXJD
YWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgQ2FsbGJhY2sKIAogI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgV2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVu
dChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1l
bnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBBdHRhY2htZW50RGlzcGxheU9wdGlv
bnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBjb250ZW50VHlwZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGZyYW1lLmVkaXRvcigpLmluc2VydEF0dGFj
aG1lbnQoaWRlbnRpZmllciwgZmlsZW5hbWUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSksIGNvbnRlbnRUeXBlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5pbnNl
cnRBdHRhY2htZW50KGlkZW50aWZpZXIsIG9wdGlvbnMsIGZpbGVuYW1lLCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCBjb250ZW50VHlwZSk7CiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAgICAvLyBGSVhNRTogV2UgZG9uJ3Qg
Y3VycmVudGx5IGhhbmRsZSBhdHRhY2htZW50IGRhdGEgcmVxdWVzdHMgZm9yIGF0dGFjaG1lbnQg
ZWxlbWVudHMgaW4gc3ViZnJhbWVzLgotICAgIGF1dG8qIGZyYW1lID0gbWFpbkZyYW1lKCk7Ci0g
ICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmRvY3VtZW50KCkpIHsKLSAgICAgICAgaW52b2tlU2hh
cmVkQnVmZmVyQ2FsbGJhY2soeyB9LCBjYWxsYmFja0lEKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGF1dG8gYXR0YWNobWVudCA9IGZyYW1lLT5kb2N1bWVudCgpLT5hdHRhY2htZW50
Rm9ySWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAgICBhdXRvIGF0dGFjaG1lbnQgPSBhdHRhY2ht
ZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpOwogICAgIGlmICghYXR0YWNobWVu
dCkgewogICAgICAgICBpbnZva2VTaGFyZWRCdWZmZXJDYWxsYmFjayh7IH0sIGNhbGxiYWNrSUQp
OwogICAgICAgICByZXR1cm47CkBAIC01Nzk3LDYgKzU3OTAsMjUgQEAgdm9pZCBXZWJQYWdlOjpy
ZXF1ZXN0QXR0YWNobWVudERhdGEoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBDYWxsYmFja0lE
IGNhbGxiYWMKICAgICB9KTsKIH0KIAordm9pZCBXZWJQYWdlOjpzZXRBdHRhY2htZW50RGlzcGxh
eU9wdGlvbnMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBBdHRhY2htZW50RGlzcGxh
eU9wdGlvbnMmIG9wdGlvbnMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0
byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVy
KSkgeworICAgICAgICBhdHRhY2htZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOworICAg
ICAgICBhdHRhY2htZW50LT51cGRhdGVEaXNwbGF5TW9kZShvcHRpb25zLm1vZGUpOworICAgIH0K
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lE
KSk7Cit9CisKK1JlZlB0cjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IFdlYlBhZ2U6OmF0dGFjaG1l
bnRFbGVtZW50V2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdAor
eworICAgIC8vIEZJWE1FOiBIYW5kbGUgYXR0YWNobWVudCBlbGVtZW50cyBpbiBzdWJmcmFtZXMg
dG9vIGFzIHdlbGwuCisgICAgYXV0byogZnJhbWUgPSBtYWluRnJhbWUoKTsKKyAgICBpZiAoIWZy
YW1lIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gZnJhbWUtPmRvY3VtZW50KCktPmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGlkZW50
aWZpZXIpOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggMTliNjgyNTM5MTcwZTdkYmUzZjY0MGZlOTlkYTBiZGM2OGNkZDMxNS4uNjRk
NjZmMjljYmU0NDNmMGE1ZDJjMzQ5MGFlZTc5OWIxN2YwNDI2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTUyLDYgKzE1MiwxMCBAQCBlbnVtIFN5
bnRoZXRpY0NsaWNrVHlwZSA6IGludDhfdDsKIAogZW51bSBjbGFzcyBUZXh0SW5kaWNhdG9yUHJl
c2VudGF0aW9uVHJhbnNpdGlvbiA6IHVpbnQ4X3Q7CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50Oworc3RydWN0IEF0dGFjaG1lbnRE
aXNwbGF5T3B0aW9uczsKKyNlbmRpZgogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEwMTEs
OCArMTAxNSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3JhZ2VBY2Nlc3NSZXNwb25zZShib29s
IHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQotICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250
ZW50VHlwZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9p
ZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zJiwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHJlcXVlc3RBdHRhY2htZW50RGF0YShjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIENhbGxiYWNrSUQpOworICAgIHZvaWQgc2V0QXR0YWNobWVudERpc3Bs
YXlPcHRpb25zKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6QXR0YWNo
bWVudERpc3BsYXlPcHRpb25zJiwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAg
LTEzMjcsNiArMTMzMiwxMCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHBk
ZlNuYXBzaG90QXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMpOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIFJlZlB0cjxXZWJDb3JlOjpIVE1MQXR0YWNobWVu
dEVsZW1lbnQ+IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyKSBjb25zdDsKKyNlbmRpZgorCiAgICAgdWludDY0X3QgbV9wYWdlSUQ7CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNmQ3
YjZlZDYyNjM1OTZlODY5ZjNhNGE3ZWM0NDk3MTUzNmNhODc3MC4uNGM0MjgwNTkyYTMyMDU5OWJh
Y2Y0MTgxZGUyYWZlY2FiYmFkMDA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00ODYsNyArNDg2LDggQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU3RvcmFnZUFjY2Vzc1Jlc3Bv
bnNlKGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKQogCiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKLSAgICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVy
LCBTdHJpbmcgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAg
IEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpBdHRh
Y2htZW50RGlzcGxheU9wdGlvbnMgb3B0aW9ucywgU3RyaW5nIGZpbGVuYW1lLCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gY29udGVudFR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBSZXF1ZXN0QXR0YWNobWVudERhdGEoU3RyaW5n
IGlkZW50aWZpZXIsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNldEF0dGFj
aG1lbnREaXNwbGF5T3B0aW9ucyhTdHJpbmcgaWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkF0
dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBvcHRpb25zLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDE1OGMxYmI2ODgxMDU2NmNiZWE5N2JhNzJhZjU3ZmUyMjdlNGRlMzQuLmFl
YjVmYjA1OGE4NjdkNmFhZDhmYTg2MmEzYzVmZWIyYTZlMTkxODQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNy0x
MS0yOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBb
QXR0YWNobWVudCBTdXBwb3J0XSBJbXBsZW1lbnQgU1BJIGZvciBjbGllbnRzIHRvIG1ha2UgYW4g
YXR0YWNobWVudCBlbGVtZW50IGRpc3BsYXkgaW4tcGxhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE1MworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzU3MzUyNTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkcyBuZXcgQVBJIHRlc3RzIHRvIGNvdmVyIGluc2VydGluZyBpbi1wbGFjZSBhdHRh
Y2htZW50cyBhbmQgdXBkYXRpbmcgdGhlIGRpc3BsYXkgbW9kZSBvZiBleGlzdGluZyBhdHRhY2ht
ZW50cywKKyAgICAgICAgYXMgd2VsbCBhcyBwZXJmb3JtaW5nIGEgZmV3IGVkaXRpbmcgb3BlcmF0
aW9ucyAocGFyYWdyYXBoIGluc2VydGlvbiwgY3V0L3Bhc3RlLCBsaXN0IGluc2VydGlvbikgb24g
YXR0YWNobWVudAorICAgICAgICBlbGVtZW50cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW06CisgICAgICAgIChwbGF0Zm9y
bUF0dGFjaG1lbnRJY29uRWxlbWVudFNpemUpOgorICAgICAgICAodGVzdFZpZGVvRGF0YSk6Cisg
ICAgICAgICh0ZXN0UERGRGF0YSk6CisgICAgICAgIChkaXNwbGF5T3B0aW9uc1dpdGhNb2RlKToK
KyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyB3YWl0Rm9yQXR0YWNobWVudEVsZW1lbnRTaXplVG9C
ZWNvbWU6XSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgc3luY2hyb25vdXNseVNldERpc3Bs
YXlPcHRpb25zOmVycm9yOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIw
MTctMTEtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFdlYkRyaXZlcjogYWRkIGFuIG9wdGlvbiB0byBkdW1wIHRlc3QgcmVzdWx0cyB0byBh
IGpzb24gZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KaW5kZXggMjBkMTJjMTk2YjBjMjNkNDI3ODkz
NWIxMGY3NWIzYzQyOWM2ZmE1My4uMDBhNTAzOGQ4NDhiZWY4NThmM2I4MGMzZmFlN2E1MWY1YjA4
OTNjYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S0F0dGFjaG1lbnRUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCkBAIC0yNywxMiArMjcsMjIgQEAKIAogI2ltcG9y
dCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+
CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAorQ0dTaXplIHBsYXRmb3JtQXR0YWNobWVudElj
b25FbGVtZW50U2l6ZSgpCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiBDR1NpemVN
YWtlKDE2MCwgMTE5KTsKKyNlbHNlCisgICAgcmV0dXJuIENHU2l6ZU1ha2UoNjEsIDg5KTsKKyNl
bmRpZgorfQorCiBAaW50ZXJmYWNlIEF0dGFjaG1lbnRVcGRhdGVPYnNlcnZlciA6IE5TT2JqZWN0
IDxXS1VJRGVsZWdhdGVQcml2YXRlPgogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBO
U0FycmF5ICppbnNlcnRlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJh
eSAqcmVtb3ZlZDsKQEAgLTEzOSw2ICsxNDksMjUgQEAgc3RhdGljIE5TRGF0YSAqdGVzdEltYWdl
RGF0YSgpCiAgICAgcmV0dXJuIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOnVybF07CiB9
CiAKK3N0YXRpYyBOU0RhdGEgKnRlc3RWaWRlb0RhdGEoKQoreworICAgIE5TVVJMICp1cmwgPSBb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidGVzdCIgd2l0aEV4dGVuc2lv
bjpAIm1wNCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBy
ZXR1cm4gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6dXJsXTsKK30KKworc3RhdGljIE5T
RGF0YSAqdGVzdFBERkRhdGEoKQoreworICAgIE5TVVJMICp1cmwgPSBbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAidGVzdCIgd2l0aEV4dGVuc2lvbjpAInBkZiIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICByZXR1cm4gW05TRGF0YSBk
YXRhV2l0aENvbnRlbnRzT2ZVUkw6dXJsXTsKK30KKworc3RhdGljIF9XS0F0dGFjaG1lbnREaXNw
bGF5T3B0aW9ucyAqZGlzcGxheU9wdGlvbnNXaXRoTW9kZShfV0tBdHRhY2htZW50RGlzcGxheU1v
ZGUgbW9kZSkKK3sKKyAgICBfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKm9wdGlvbnMgPSBb
W1tfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
KyAgICBvcHRpb25zLm1vZGUgPSBtb2RlOworICAgIHJldHVybiBvcHRpb25zOworfQorCiBAaW1w
bGVtZW50YXRpb24gVGVzdFdLV2ViVmlldyAoQXR0YWNobWVudFRlc3RpbmcpCiAKIC0gKEJPT0wp
X3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6KE5TU3RyaW5nICopY29tbWFuZCBhcmd1
bWVudDooTlNTdHJpbmcgKilhcmd1bWVudApAQCAtMTYzLDYgKzE5MiwyMiBAQCAtIChfV0tBdHRh
Y2htZW50ICopc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6KE5TU3Ry
aW5nICopZmlsZW5hbQogICAgIHJldHVybiBhdHRhY2htZW50LmF1dG9yZWxlYXNlKCk7CiB9CiAK
Ky0gKHZvaWQpd2FpdEZvckF0dGFjaG1lbnRFbGVtZW50U2l6ZVRvQmVjb21lOihDR1NpemUpZXhw
ZWN0ZWRTaXplCit7CisgICAgd2hpbGUgKFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBydW5N
b2RlOk5TRGVmYXVsdFJ1bkxvb3BNb2RlIGJlZm9yZURhdGU6W05TRGF0ZSBkaXN0YW50UGFzdF1d
KSB7CisgICAgICAgIF9fYmxvY2sgYm9vbCBkb25lRXZhbHVhdGluZ1NjcmlwdCA9IGZhbHNlOwor
ICAgICAgICBfX2Jsb2NrIEJPT0wgc2l6ZUlzRXF1YWwgPSBOTzsKKyAgICAgICAgW3NlbGYgZXZh
bHVhdGVKYXZhU2NyaXB0OkAiciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2F0dGFjaG1lbnQn
KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsgW3Iud2lkdGgsIHIuaGVpZ2h0XSIgY29tcGxldGlv
bkhhbmRsZXI6XihOU0FycmF5PE5TTnVtYmVyICo+ICpzaXplUmVzdWx0LCBOU0Vycm9yICopIHsK
KyAgICAgICAgICAgIENHU2l6ZSBvYnNlcnZlZFNpemUgeyBzaXplUmVzdWx0LmZpcnN0T2JqZWN0
LmZsb2F0VmFsdWUsIHNpemVSZXN1bHQubGFzdE9iamVjdC5mbG9hdFZhbHVlIH07CisgICAgICAg
ICAgICBzaXplSXNFcXVhbCA9IENHU2l6ZUVxdWFsVG9TaXplKGV4cGVjdGVkU2l6ZSwgb2JzZXJ2
ZWRTaXplKTsKKyAgICAgICAgICAgIGRvbmVFdmFsdWF0aW5nU2NyaXB0ID0gdHJ1ZTsKKyAgICAg
ICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUV2YWx1YXRpbmdT
Y3JpcHQpOworICAgICAgICBpZiAoc2l6ZUlzRXF1YWwpCisgICAgICAgICAgICBicmVhazsKKyAg
ICB9Cit9CisKIC0gKE5TU3RyaW5nICopdmFsdWVPZkF0dHJpYnV0ZTooTlNTdHJpbmcgKilhdHRy
aWJ1dGVOYW1lIGZvclF1ZXJ5U2VsZWN0b3I6KE5TU3RyaW5nICopcXVlcnlTZWxlY3Rvcgogewog
ICAgIHJldHVybiBbc2VsZiBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OltOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignJUAnKS5nZXRBdHRyaWJ1
dGUoJyVAJykiLCBxdWVyeVNlbGVjdG9yLCBhdHRyaWJ1dGVOYW1lXV07CkBAIC0xODgsNiArMjMz
LDIxIEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIF9XS0F0dGFjaG1lbnQgKEF0dGFjaG1lbnRU
ZXN0aW5nKQogCistICh2b2lkKXN5bmNocm9ub3VzbHlTZXREaXNwbGF5T3B0aW9uczooX1dLQXR0
YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBlcnJvcjooTlNFcnJvciAqKillcnJvcgor
eworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRXJyb3I+IHJlc3VsdEVycm9yOworICAgIF9fYmxv
Y2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3NlbGYgc2V0RGlzcGxheU9wdGlvbnM6b3B0aW9u
cyBjb21wbGV0aW9uOl4oTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgcmVzdWx0RXJyb3IgPSBy
ZXRhaW5QdHIoZXJyb3IpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBpZiAoZXJyb3IpCisgICAgICAg
ICplcnJvciA9IHJlc3VsdEVycm9yLmF1dG9yZWxlYXNlKCk7Cit9CisKIC0gKE5TRGF0YSAqKXN5
bmNocm9ub3VzbHlSZXF1ZXN0RGF0YTooTlNFcnJvciAqKillcnJvcgogewogICAgIF9fYmxvY2sg
UmV0YWluUHRyPE5TRGF0YT4gcmVzdWx0OwpAQCAtNDMyLDYgKzQ5Miw5MiBAQCBURVNUKFdLQXR0
YWNobWVudFRlc3RzLCBNdWx0aXBsZVNpbXVsdGFuZW91c0F0dGFjaG1lbnREYXRhUmVxdWVzdHMp
CiAgICAgRVhQRUNUX1RSVUUoW2RhdGFGb3JTZWNvbmRSZXF1ZXN0IGlzRXF1YWxUb0RhdGE6aHRt
bERhdGEuZ2V0KCldKTsKIH0KIAorVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5QbGFjZUltYWdl
QXR0YWNobWVudFRvZ2dsZURpc3BsYXlNb2RlKQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZp
ZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURh
dGEgPSB0ZXN0SW1hZ2VEYXRhKCk7CisgICAgUmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+IGF0dGFj
aG1lbnQ7CisgICAgeworICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBv
YnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKKyAgICAgICAgYXR0YWNobWVudCA9IHJldGFpblB0cihb
d2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImljb24u
cG5nIiBjb250ZW50VHlwZTpAImltYWdlL3BuZyIgZGF0YTppbWFnZURhdGEuZ2V0KCkgb3B0aW9u
czpkaXNwbGF5T3B0aW9uc1dpdGhNb2RlKF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUluUGxhY2Up
XSk7CisgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbXSwgQFthdHRh
Y2htZW50LmdldCgpXSk7CisgICAgICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFU
b0JlOmltYWdlRGF0YS5nZXQoKV07CisgICAgICAgIFt3ZWJWaWV3IHdhaXRGb3JBdHRhY2htZW50
RWxlbWVudFNpemVUb0JlY29tZTpDR1NpemVNYWtlKDIxNSwgMTc0KV07CisgICAgfQorCisgICAg
W2F0dGFjaG1lbnQgc3luY2hyb25vdXNseVNldERpc3BsYXlPcHRpb25zOmRpc3BsYXlPcHRpb25z
V2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2RlQXNJY29uKSBlcnJvcjpuaWxdOworICAg
IFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOmltYWdlRGF0YS5nZXQoKV07Cisg
ICAgW3dlYlZpZXcgd2FpdEZvckF0dGFjaG1lbnRFbGVtZW50U2l6ZVRvQmVjb21lOnBsYXRmb3Jt
QXR0YWNobWVudEljb25FbGVtZW50U2l6ZSgpXTsKKworICAgIFthdHRhY2htZW50IHN5bmNocm9u
b3VzbHlTZXREaXNwbGF5T3B0aW9uczpkaXNwbGF5T3B0aW9uc1dpdGhNb2RlKF9XS0F0dGFjaG1l
bnREaXNwbGF5TW9kZUluUGxhY2UpIGVycm9yOm5pbF07CisgICAgW2F0dGFjaG1lbnQgZXhwZWN0
UmVxdWVzdGVkRGF0YVRvQmU6aW1hZ2VEYXRhLmdldCgpXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9y
QXR0YWNobWVudEVsZW1lbnRTaXplVG9CZWNvbWU6Q0dTaXplTWFrZSgyMTUsIDE3NCldOworfQor
CitURVNUKFdLQXR0YWNobWVudFRlc3RzLCBJblBsYWNlSW1hZ2VBdHRhY2htZW50UGFyYWdyYXBo
SW5zZXJ0aW9uKQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNo
bWVudHMoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSB0ZXN0SW1hZ2VEYXRh
KCk7CisgICAgUmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+IGF0dGFjaG1lbnQ7CisgICAgeworICAg
ICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3Lmdl
dCgpKTsKKyAgICAgICAgYXR0YWNobWVudCA9IHJldGFpblB0cihbd2ViVmlldyBzeW5jaHJvbm91
c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImljb24ucG5nIiBjb250ZW50VHlwZTpA
ImltYWdlL3BuZyIgZGF0YTppbWFnZURhdGEuZ2V0KCkgb3B0aW9uczpkaXNwbGF5T3B0aW9uc1dp
dGhNb2RlKF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUluUGxhY2UpXSk7CisgICAgICAgIG9ic2Vy
dmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbXSwgQFthdHRhY2htZW50LmdldCgpXSk7Cisg
ICAgfQorICAgIFt3ZWJWaWV3IGV4cGVjdFVwZGF0ZXNBZnRlckNvbW1hbmQ6QCJJbnNlcnRQYXJh
Z3JhcGgiIHdpdGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW10gZXhwZWN0ZWRJbnNl
cnRpb25zOkBbXV07CisgICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpAIkRl
bGV0ZUJhY2t3YXJkIiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6QFtdIGV4cGVj
dGVkSW5zZXJ0aW9uczpAW11dOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZShkb2N1bWVudC5ib2R5KSJdOworICAgIFt3
ZWJWaWV3IGV4cGVjdFVwZGF0ZXNBZnRlckNvbW1hbmQ6QCJJbnNlcnRQYXJhZ3JhcGgiIHdpdGhB
cmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW10gZXhwZWN0ZWRJbnNlcnRpb25zOkBbXV07
CisgICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpAIkRlbGV0ZUJhY2t3YXJk
IiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6QFtdIGV4cGVjdGVkSW5zZXJ0aW9u
czpAW11dOworCisgICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6aW1hZ2VE
YXRhLmdldCgpXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yQXR0YWNobWVudEVsZW1lbnRTaXplVG9C
ZWNvbWU6Q0dTaXplTWFrZSgyMTUsIDE3NCldOworCisgICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRl
c0FmdGVyQ29tbWFuZDpAIkRlbGV0ZUZvcndhcmQiIHdpdGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRS
ZW1vdmFsczpAW2F0dGFjaG1lbnQuZ2V0KCldIGV4cGVjdGVkSW5zZXJ0aW9uczpAW11dOworfQor
CitURVNUKFdLQXR0YWNobWVudFRlc3RzLCBJblBsYWNlVmlkZW9BdHRhY2htZW50SW5zZXJ0aW9u
V2l0aGluTGlzdCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFj
aG1lbnRzKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gdmlkZW9EYXRhID0gdGVzdFZpZGVvRGF0
YSgpOworICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50OworCisgICAgW3dl
YlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJJbnNlcnRPcmRlcmVkTGlz
dCIgYXJndW1lbnQ6bmlsXTsKKyAgICB7CisgICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRl
c0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOworICAgICAgICBhdHRhY2htZW50ID0g
cmV0YWluUHRyKFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVu
YW1lOkAidGVzdC5tcDQiIGNvbnRlbnRUeXBlOkAidmlkZW8vbXA0IiBkYXRhOnZpZGVvRGF0YS5n
ZXQoKSBvcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlN
b2RlSW5QbGFjZSldKTsKKyAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMo
QFtdLCBAW2F0dGFjaG1lbnQuZ2V0KCldKTsKKyAgICB9CisgICAgW3dlYlZpZXcgd2FpdEZvckF0
dGFjaG1lbnRFbGVtZW50U2l6ZVRvQmVjb21lOkNHU2l6ZU1ha2UoMzIwLCAyNDApXTsKKworICAg
IFt3ZWJWaWV3IGV4cGVjdFVwZGF0ZXNBZnRlckNvbW1hbmQ6QCJEZWxldGVCYWNrd2FyZCIgd2l0
aEFyZ3VtZW50Om5pbCBleHBlY3RlZFJlbW92YWxzOkBbYXR0YWNobWVudC5nZXQoKV0gZXhwZWN0
ZWRJbnNlcnRpb25zOkBbXV07CisgICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29tbWFu
ZDpAIlVuZG8iIHdpdGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW10gZXhwZWN0ZWRJ
bnNlcnRpb25zOkBbYXR0YWNobWVudC5nZXQoKV1dOworICAgIFt3ZWJWaWV3IGV4cGVjdFVwZGF0
ZXNBZnRlckNvbW1hbmQ6QCJJbnNlcnRPcmRlcmVkTGlzdCIgd2l0aEFyZ3VtZW50Om5pbCBleHBl
Y3RlZFJlbW92YWxzOkBbXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKKworICAgIFt3ZWJWaWV3
IHdhaXRGb3JBdHRhY2htZW50RWxlbWVudFNpemVUb0JlY29tZTpDR1NpemVNYWtlKDMyMCwgMjQw
KV07CisgICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6dmlkZW9EYXRhLmdl
dCgpXTsKK30KKworVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5QbGFjZVBERkF0dGFjaG1lbnRD
dXRBbmRQYXN0ZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFj
aG1lbnRzKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gcGRmRGF0YSA9IHRlc3RQREZEYXRhKCk7
CisgICAgUmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+IGF0dGFjaG1lbnQ7CisgICAgeworICAgICAg
ICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgp
KTsKKyAgICAgICAgYXR0YWNobWVudCA9IHJldGFpblB0cihbd2ViVmlldyBzeW5jaHJvbm91c2x5
SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAInRlc3QucGRmIiBjb250ZW50VHlwZTpAImFw
cGxpY2F0aW9uL3BkZiIgZGF0YTpwZGZEYXRhLmdldCgpIG9wdGlvbnM6ZGlzcGxheU9wdGlvbnNX
aXRoTW9kZShfV0tBdHRhY2htZW50RGlzcGxheU1vZGVJblBsYWNlKV0pOworICAgICAgICBvYnNl
cnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbYXR0YWNobWVudC5nZXQoKV0pOwor
ICAgICAgICBbd2ViVmlldyB3YWl0Rm9yQXR0YWNobWVudEVsZW1lbnRTaXplVG9CZWNvbWU6Q0dT
aXplTWFrZSgxMzAsIDI5KV07CisgICAgfQorCisgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlF
eGVjdXRlRWRpdENvbW1hbmQ6QCJTZWxlY3RBbGwiIGFyZ3VtZW50Om5pbF07CisgICAgW3dlYlZp
ZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpAIkN1dCIgd2l0aEFyZ3VtZW50Om5pbCBleHBl
Y3RlZFJlbW92YWxzOkBbYXR0YWNobWVudC5nZXQoKV0gZXhwZWN0ZWRJbnNlcnRpb25zOkBbXV07
CisKKyAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiUGFzdGUiIHdpdGhB
cmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW10gZXhwZWN0ZWRJbnNlcnRpb25zOkBbYXR0
YWNobWVudC5nZXQoKV1dOworICAgIFt3ZWJWaWV3IHdhaXRGb3JBdHRhY2htZW50RWxlbWVudFNp
emVUb0JlY29tZTpDR1NpemVNYWtlKDEzMCwgMjkpXTsKKyAgICBbYXR0YWNobWVudCBleHBlY3RS
ZXF1ZXN0ZWREYXRhVG9CZTpwZGZEYXRhLmdldCgpXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327888</attachid>
            <date>2017-11-29 12:45:01 -0800</date>
            <delta_ts>2017-11-29 18:23:48 -0800</delta_ts>
            <desc>Split out AttachmentDisplayOptions into AttachmentTypes.h</desc>
            <filename>bug-180153-20171129124500.patch</filename>
            <type>text/plain</type>
            <size>51659</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTZiMDg0MTNkMmMzNTFm
YjUzZjdiYjNiMmQ1M2M3MzI1ZTZjYzM0Mi4uMTJiNTA5Njc2ZjZmMDcxNGZmNTkzODUxOTI3OWZk
MWMzZmFlMmUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE3LTExLTI5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEltcGxlbWVudCBTUEkgZm9yIGNsaWVudHMgdG8gbWFrZSBhbiBhdHRhY2htZW50
IGVsZW1lbnQgZGlzcGxheSBpbi1wbGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTczNTI1
Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRz
IFNQSSBzdXBwb3J0IGZvciBpbnNlcnRpbmcgYXR0YWNobWVudHMgdXNpbmcgaW4tcGxhY2UgZGlz
cGxheSBzdHlsZSwgYW5kIHVwZGF0aW5nIGRpc3BsYXkgb3B0aW9ucyBmb3IKKyAgICAgICAgZXhp
c3RpbmcgYXR0YWNobWVudHMuIFNlZSBjb21tZW50cyBiZWxvdyBmb3IgbW9yZSBkZXRhaWwuCisK
KyAgICAgICAgVGVzdHM6IFdLQXR0YWNobWVudFRlc3RzLkluUGxhY2VJbWFnZUF0dGFjaG1lbnRU
b2dnbGVEaXNwbGF5TW9kZQorICAgICAgICAgICAgICAgV0tBdHRhY2htZW50VGVzdHMuSW5QbGFj
ZUltYWdlQXR0YWNobWVudFBhcmFncmFwaEluc2VydGlvbgorICAgICAgICAgICAgICAgV0tBdHRh
Y2htZW50VGVzdHMuSW5QbGFjZVZpZGVvQXR0YWNobWVudEluc2VydGlvbldpdGhpbkxpc3QKKyAg
ICAgICAgICAgICAgIFdLQXR0YWNobWVudFRlc3RzLkluUGxhY2VQREZBdHRhY2htZW50Q3V0QW5k
UGFzdGUKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omlu
c2VydEF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbnNlcnRBdHRhY2ht
ZW50RnJvbUZpbGUpOgorCisgICAgICAgIFVwZGF0ZSBkaXNwbGF5IG9wdGlvbnMgZm9yIHRoZSBh
dHRhY2htZW50IGJlZm9yZSBpbnNlcnRpbmcgaW50byB0aGUgZG9jdW1lbnQuCisKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGh0bWwvQXR0YWNobWVudFR5cGVzLmg6IEFk
ZGVkLgorCisgICAgICAgIEFkZCBhIG5ldyBoZWFkZXIgdG8gZGVmaW5lIHRoZSBuZXcgYXR0YWNo
bWVudCBkaXNwbGF5IHR5cGVzLiBUaGlzIGxldHMgdXMgYXZvaWQgaW1wb3J0aW5nIEhUTUxBdHRh
Y2htZW50RWxlbWVudC5oCisgICAgICAgIGFuZCBpbnN0ZWFkIGp1c3QgaW1wb3J0IEF0dGFjaG1l
bnRUeXBlcy5oIGluIHNvbWUgcGxhY2VzIGluIFdlYktpdCB0aGF0IG9ubHkgZGVhbCB3aXRoIHBs
dW1iaW5nCisgICAgICAgIEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyB0byB0aGUgd2ViIHByb2Nl
c3MuCisKKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9uczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9uczo6ZGVj
b2RlKToKKworICAgICAgICBTdXBwb3J0IHNlcmlhbGl6aW5nIGFuZCBkZXNlcmlhbGl6aW5nIGF0
dGFjaG1lbnQgZGlzcGxheSBvcHRpb25zLgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpz
ZXRGaWxlKToKKworICAgICAgICBSZWdlbmVyYXRlIHRoZSBzaGFkb3cgcm9vdCBpZiBuZWVkZWQg
d2hlbiBzZXR0aW5nIHRoZSBmaWxlLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlNb2RlKToKKworICAgICAgICBJbnRyb2R1Y2UgYSBuZXcg
bWV0aG9kIHRvIHVwZGF0ZSB0aGUgZGlzcGxheSBtb2RlIG9mIGFuIGF0dGFjaG1lbnQgZWxlbWVu
dC4gVGhpcyBidWlsZHMgdXAgdGhlIHNoYWRvdyByb290IG9mCisgICAgICAgIHRoZSBhdHRhY2ht
ZW50IGlmIGl0IGlzIGRpc3BsYXllZCBpbi1wbGFjZS4KKworICAgICAgICAoV2ViQ29yZTo6SFRN
TEF0dGFjaG1lbnRFbGVtZW50OjplbnN1cmVJbm5lckltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxBdHRhY2htZW50RWxlbWVudDo6ZW5zdXJlSW5uZXJWaWRlbyk6CisKKyAgICAgICAgSGVs
cGVycyB0byBpbnNlcnQgaW1hZ2UgYW5kIHZpZGVvIGVsZW1lbnRzIGludG8gdGhlIHNoYWRvdyBy
b290IGlmIG5lZWRlZCwgYW5kIHJldHVybiB0aGUgaW1hZ2Ugb3IgdmlkZW8gZWxlbWVudC4KKwor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojppbm5lckltYWdlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6aW5uZXJWaWRlbyBj
b25zdCk6CisKKyAgICAgICAgSGVscGVycyB0byByZXRyaWV2ZSBleGlzdGluZyBpbWFnZSBhbmQg
dmlkZW8gZWxlbWVudHMgaW4gdGhlIHNoYWRvdyByb290LgorCisgICAgICAgIChXZWJDb3JlOjpI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OnBvcHVsYXRlU2hhZG93Um9vdElmTmVjZXNzYXJ5KToKKwor
ICAgICAgICBBcHBlbmRzIGFuZCBjb25maWd1cmVzIHRoZSBhdHRhY2htZW50IGVsZW1lbnQncyBz
aGFkb3cgcm9vdCBmb3IgaW5saW5lIGRpc3BsYXksIGluaXRpYWxpemluZyBhbiBpbWFnZSBvciB2
aWRlbworICAgICAgICBlbGVtZW50IG9yIG5laXRoZXIsIGRlcGVuZGluZyBvbiB0aGUgYXR0YWNo
bWVudCB0eXBlLgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaDoKKwor
ICAgICAgICBJbnRyb2R1Y2UgYW4gQXR0YWNobWVudERpc3BsYXlPcHRpb25zIHN0cnVjdCB3aGlj
aCBtaXJyb3JzIF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBpbiB0aGUgV2ViS2l0IGxheWVy
LiBGb3IKKyAgICAgICAgbm93LCB0aGlzIG9ubHkgY29udGFpbnMgYSBkaXNwbGF5IG1vZGUgZW51
bS4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW06CisK
KyAgICAgICAgQXZvaWQgdGhpcyBBVkF1ZGlvU2Vzc2lvbiBhc3NlcnRpb24gd2hlbiB0YXJnZXRp
bmcgaU9TIHNpbXVsYXRvci4gQVZBdWRpb1Nlc3Npb24gYWx3YXlzIHRocm93cyB0aGlzIGVycm9y
IHdoZW4KKyAgICAgICAgc2V0dGluZyBhbiBhdWRpbyBzZXNzaW9uIGNhdGVnb3J5IGluIHRoZSBz
aW11bGF0b3IsIGV2ZW4gaW4gYSBiYXNpYyB0ZXN0IGFwcCwgc2luY2UgQVZGb3VuZGF0aW9uIGRv
ZXNuJ3Qgc3VwcG9ydAorICAgICAgICBhdWRpbyBzZXNzaW9ucyBpbiB0aGUgc2ltdWxhdG9yLgor
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KToKKwogMjAxNy0x
MS0yOSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0Nv
b3JkR3JhcGhpY3NdIFJlbmFtZSBDb29yZGluYXRlZEJ1ZmZlciB0byBOaWNvc2lhOjpCdWZmZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNzAzODk1MTQ5ZjEzMWMzY2UzMDZkOWZhYzI5YjQ1MzE3NmNkYmZiMS4uZDQ3
Nzc1ZGY4MmQ4Mjc3ZTM1Y2MyNDQ0MjgzMWQ1YzFmNGI2MGNkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0OSBAQAorMjAxNy0xMS0yOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KKworICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0XSBJbXBsZW1lbnQgU1BJIGZvciBjbGll
bnRzIHRvIG1ha2UgYW4gYXR0YWNobWVudCBlbGVtZW50IGRpc3BsYXkgaW4tcGxhY2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE1MworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzU3MzUyNTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBXZWJLaXQgU1BJLCAtW19XS0F0dGFjaG1lbnQg
c2V0RGlzcGxheU9wdGlvbnM6Y29tcGxldGlvbjpdLCBhbmQgYWRkIHBsdW1iaW5nIGZvciBhdHRh
Y2htZW50IGRpc3BsYXkKKyAgICAgICAgb3B0aW9ucyB0byB0aGUgd2ViIGNvbnRlbnQgcHJvY2Vz
cy4gQ2hhbmdlcyBjb3ZlcmVkIGJ5IDQgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAoaGVhZGVyc19mb3JfdHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0
YWNobWVudDo6c2V0RGlzcGxheU9wdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6Y29u
dGVudFR5cGU6ZGF0YTpvcHRpb25zOmNvbXBsZXRpb246XSk6CisKKyAgICAgICAgUmVzcGVjdCBn
aXZlbiBkaXNwbGF5IG9wdGlvbnMgd2hlbiBpbnNlcnRpbmcgYSBuZXcgYXR0YWNobWVudC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbToKKyAgICAgICAgKC1bX1dLQXR0
YWNobWVudERpc3BsYXlPcHRpb25zIGNvcmVEaXNwbGF5T3B0aW9uc10pOgorCisgICAgICAgIElu
dHJvZHVjZSBhIGhlbHBlciB0byBjb252ZXJ0IGZyb20gdGhlIENvY29hIF9XS0F0dGFjaG1lbnRE
aXNwbGF5T3B0aW9ucyBvYmplY3QgdG8gcGxhdGZvcm0tYWdub3N0aWMKKyAgICAgICAgQXR0YWNo
bWVudERpc3BsYXlPcHRpb25zLgorCisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgc2V0RGlzcGxh
eU9wdGlvbnM6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKFdlYktpdDo6aWYpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudEludGVybmFsLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2V0QXR0YWNobWVudERpc3BsYXlPcHRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnRBdHRhY2htZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdEF0dGFjaG1lbnREYXRhKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6c2V0QXR0YWNobWVudERpc3BsYXlPcHRpb25zKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6YXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllciBjb25zdCk6CisKKyAg
ICAgICAgUHVsbCBjb21tb24gbG9naWMgdG8gcmV0cmlldmUgYW4gYXR0YWNobWVudCBlbGVtZW50
IG1hdGNoaW5nIGEgZ2l2ZW4gaWRlbnRpZmllciBvdXQgaW50byBhIGhlbHBlci4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTctMTEtMjkgIFphbiBEb2JlcnNlayAg
PHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDb29yZEdyYXBoaWNzXSBSZW5hbWUg
Q29vcmRpbmF0ZWRCdWZmZXIgdG8gTmljb3NpYTo6QnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTM3ODI3NDgxZDAwNTY1
NGVmMmE1NjNjMWMxZDBhY2JhMTBjN2UwYS4uYWI1ZTQxMTM0MTc0YjQwNzEzNDE0ZWEyNjQ2MTA0
NzJjM2E5MTMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNDYxNCw2ICs0NjE0LDcgQEAKIAkJRjNBQkZFMEMxMzBFOURBMDAw
RTdGN0QxIC8qIEluc3RydW1lbnRpbmdBZ2VudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzQUJGRTBCMTMwRTlEQTAwMEU3RjdEMSAvKiBJbnN0cnVt
ZW50aW5nQWdlbnRzLmggKi87IH07CiAJCUYzRDQ2MTQ5MTE2MUQ1MzIwMENBMEQwOSAvKiBKU0Vy
cm9ySGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjNENDYxNDcxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTRXJyb3JIYW5kbGVyLmggKi87IH07CiAJ
CUY0MzNFOTAzMURCQkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDMzRTkwMjFEQkJEQkEyMDBF
RjBEMTQgLyogU3RhdGljUGFzdGVib2FyZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUY0Mzc1OUI0MUZDRjQ4RkEwMDEwMDcwNiAvKiBBdHRhY2ht
ZW50VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0Mzc1OUIzMUZDRjQ4RkEwMDEwMDcwNiAvKiBBdHRhY2htZW50VHlwZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDRFQkJEOTFEQjVEMjE0
MDAyNzczMzQgLyogU3RhdGljUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0NEVCQkQ4MURCNUQyMTQwMDI3NzMzNCAvKiBTdGF0aWNSYW5nZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0NUMy
MzFFMTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NUMyMzFDMTk5NUI3M0IwMEE2
RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDY3MjkyODFFMERFNjg1MDBBQ0MzRDggLyogU2Ny
b2xsU25hcE9mZnNldHNJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDY3MjkyNTFFMERFNUFCMDBBQ0MzRDggLyogU2Nyb2xsU25hcE9mZnNldHNJ
bmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTEzOTY2LDYgKzEzOTY3LDcgQEAKIAkJRjNENDYxNDcxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTRXJy
b3JIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXJyb3JIYW5k
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzNFOTAyMURCQkRCQTIwMEVG
MEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0YXRpY1Bhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQz
M0U5MDQxREJCREJDMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3RhdGljUGFzdGVib2FyZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUY0Mzc1OUIzMUZDRjQ4RkEwMDEwMDcwNiAvKiBBdHRhY2htZW50VHlwZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXR0YWNobWVudFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0NEVCQkQ2MURCNUQxQjYwMDI3NzMzNCAvKiBTdGF0aWNSYW5nZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gU3RhdGljUmFuZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDRFQkJEODFEQjVEMjE0MDAyNzczMzQgLyogU3RhdGljUmFuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGljUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjQ0RUJCREExREI1REQ5RDAwMjc3MzM0IC8qIFN0YXRpY1JhbmdlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpY1JhbmdlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NDU2LDYgKzE5NDU4LDcgQEAKIAkJCQk5N0MxRjU1
MTEyMjg1NTg4MDBFREU2MTYgLyogcGFyc2VyICovLAogCQkJCTQxNTBGOUVEMTJCNkUwOTkwMDA4
Qzg2MCAvKiBzaGFkb3cgKi8sCiAJCQkJQjFBRDRFNzcxM0ExMkE3MjAwODQ2QjI3IC8qIHRyYWNr
ICovLAorCQkJCUY0Mzc1OUIzMUZDRjQ4RkEwMDEwMDcwNiAvKiBBdHRhY2htZW50VHlwZXMuaCAq
LywKIAkJCQlBNUY2RTE2QzEzMkVENDZFMDA4RURBRTMgLyogQXV0b2NhcGl0YWxpemUuY3BwICov
LAogCQkJCUE1MDE5MjBDMTMyRUJGMkUwMDhCRkU1NSAvKiBBdXRvY2FwaXRhbGl6ZS5oICovLAog
CQkJCUE1QTdBQTQyMTMyRjBFQ0MwMEQzQTNDMiAvKiBBdXRvY2FwaXRhbGl6ZVR5cGVzLmggKi8s
CkBAIC0yNjA1OCw2ICsyNjA2MSw3IEBACiAJCQkJRkQ1Njg2Q0ExM0FDMTgwMjAwQjY5QzY4IC8q
IEFzeW5jQXVkaW9EZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUNERTkyMjE1MDE5MTY5
MDA4NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZENEQ2
MTE4NjUxRkEzMDA1MTJGNkUgLyogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRjQzNzU5QjQxRkNGNDhGQTAwMTAwNzA2IC8qIEF0dGFjaG1lbnRUeXBlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQThDNEE4MEQwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QzRBODBCMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyaWJ1dGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTgxNERBMUM3MEUxMEQwMEJGODVBQyAvKiBBdHRyaWJ1
dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCmluZGV4IDIxNTkyMjZlMTJmMDM2OTZlMTkxOGQ1NDRkNWQ3Y2YwYWU4Y2MwNmMuLmJj
YzZmZGMzNjIzOGRiM2ZlNjExYjFkMmMxMDE1ZDYzZTIwNzFhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKQEAgLTM3OTEsMjEgKzM3OTEsMjEgQEAgdm9pZCBFZGl0b3I6Om5vdGlmeUNs
aWVudE9mQXR0YWNobWVudFVwZGF0ZXMoKQogICAgIG1faW5zZXJ0ZWRBdHRhY2htZW50SWRlbnRp
ZmllcnMuY2xlYXIoKTsKIH0KIAotdm9pZCBFZGl0b3I6Omluc2VydEF0dGFjaG1lbnQoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcm
IGZpbGVwYXRoLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUpCit2b2lkIEVkaXRv
cjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFj
aG1lbnREaXNwbGF5T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29u
c3QgU3RyaW5nJiBmaWxlcGF0aCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlKQog
ewogICAgIGlmICghY29udGVudFR5cGUpCiAgICAgICAgIGNvbnRlbnRUeXBlID0gRmlsZTo6Y29u
dGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKTsKLSAgICBpbnNlcnRBdHRhY2htZW50RnJvbUZpbGUo
aWRlbnRpZmllciwgZmlsZW5hbWUsICpjb250ZW50VHlwZSwgRmlsZTo6Y3JlYXRlKGZpbGVwYXRo
KSk7CisgICAgaW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGlkZW50aWZpZXIsIG9wdGlvbnMsIGZp
bGVuYW1lLCAqY29udGVudFR5cGUsIEZpbGU6OmNyZWF0ZShmaWxlcGF0aCkpOwogfQogCi12b2lk
IEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGNvbnRlbnRUeXBlKQordm9pZCBFZGl0b3I6Omluc2VydEF0dGFjaG1lbnQoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmIG9w
dGlvbnMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlKQogewogICAgIGlmICghY29udGVudFR5
cGUpCiAgICAgICAgIGNvbnRlbnRUeXBlID0gRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVu
YW1lKTsKLSAgICBpbnNlcnRBdHRhY2htZW50RnJvbUZpbGUoaWRlbnRpZmllciwgZmlsZW5hbWUs
ICpjb250ZW50VHlwZSwgRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShkYXRhLCAqY29udGVudFR5
cGUpLCBmaWxlbmFtZSkpOworICAgIGluc2VydEF0dGFjaG1lbnRGcm9tRmlsZShpZGVudGlmaWVy
LCBvcHRpb25zLCBmaWxlbmFtZSwgKmNvbnRlbnRUeXBlLCBGaWxlOjpjcmVhdGUoQmxvYjo6Y3Jl
YXRlKGRhdGEsICpjb250ZW50VHlwZSksIGZpbGVuYW1lKSk7CiB9CiAKLXZvaWQgRWRpdG9yOjpp
bnNlcnRBdHRhY2htZW50RnJvbUZpbGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8RmlsZT4mJiBm
aWxlKQordm9pZCBFZGl0b3I6Omluc2VydEF0dGFjaG1lbnRGcm9tRmlsZShjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYgb3B0aW9ucywgY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZpbGU+
JiYgZmlsZSkKIHsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KCkpOwogICAgIGF0dGFj
aG1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnRpdGxlQXR0ciwgZmlsZW5hbWUpOwpAQCAt
MzgxMyw2ICszODEzLDcgQEAgdm9pZCBFZGl0b3I6Omluc2VydEF0dGFjaG1lbnRGcm9tRmlsZShj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmkKICAgICBhdHRhY2htZW50
LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0eXBlQXR0ciwgY29udGVudFR5cGUpOwogICAgIGF0
dGFjaG1lbnQtPnNldFVuaXF1ZUlkZW50aWZpZXIoaWRlbnRpZmllcik7CiAgICAgYXR0YWNobWVu
dC0+c2V0RmlsZShXVEZNb3ZlKGZpbGUpKTsKKyAgICBhdHRhY2htZW50LT51cGRhdGVEaXNwbGF5
TW9kZShvcHRpb25zLm1vZGUpOwogCiAgICAgYXV0byBmcmFnbWVudFRvSW5zZXJ0ID0gZG9jdW1l
bnQoKS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgZnJhZ21lbnRUb0luc2VydC0+YXBw
ZW5kQ2hpbGQoYXR0YWNobWVudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBl
YWQ2NjY0ZGQyMmNlYTdmNjg3MjhkMmVmYTJhM2JkZTdiNTkyZGE1Li41YzkyZmY3MDEyYjNhZjA0
ZTY0ZGMwMTZmZmE1NDE3OGQwYjc4ZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTY3
LDcgKzY3LDYgQEAgY2xhc3MgRWRpdG9yQ2xpZW50OwogY2xhc3MgRWRpdG9ySW50ZXJuYWxDb21t
YW5kOwogY2xhc3MgRmlsZTsKIGNsYXNzIEZyYW1lOwotY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVt
ZW50OwogY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgS2V5
Ym9hcmRFdmVudDsKQEAgLTk2LDYgKzk1LDExIEBAIGVudW0gY2xhc3MgTWFpbEJsb2NrcXVvdGVI
YW5kbGluZyB7CiAgICAgSWdub3JlQmxvY2txdW90ZSwKIH07CiAKKyNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQorY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50Oworc3RydWN0IEF0dGFj
aG1lbnREaXNwbGF5T3B0aW9uczsKKyNlbmRpZgorCiBlbnVtIFRlbXBvcmFyeVNlbGVjdGlvbk9w
dGlvbiA6IHVpbnQ4X3QgewogICAgIC8vIEJ5IGRlZmF1bHQsIG5vIGFkZGl0aW9uYWwgb3B0aW9u
cyBhcmUgZW5hYmxlZC4KICAgICBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25EZWZhdWx0ID0gMCwK
QEAgLTUwMyw4ICs1MDcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0dldHRpbmdEaWN0aW9uYXJ5
UG9wdXBJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9pc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZv
OyB9CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZmlsZXBhdGgsIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBjb250ZW50VHlwZSA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gY29udGVudFR5cGUgPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1l
bnREaXNwbGF5T3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
ZmlsZXBhdGgsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSA9IHN0ZDo6bnVsbG9w
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgQXR0YWNobWVudERpc3BsYXlPcHRpb25zJiwgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gY29udGVudFR5cGUgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgZGlkSW5zZXJ0QXR0
YWNobWVudEVsZW1lbnQoSFRNTEF0dGFjaG1lbnRFbGVtZW50Jik7CiAgICAgdm9pZCBkaWRSZW1v
dmVBdHRhY2htZW50RWxlbWVudChIVE1MQXR0YWNobWVudEVsZW1lbnQmKTsKICNlbmRpZgpAQCAt
NTI0LDcgKzUyOCw3IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7
CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZvaWQgaW5zZXJ0QXR0YWNo
bWVudEZyb21GaWxlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZpbGU+JiYpOworICAgIHZvaWQg
aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
QXR0YWNobWVudERpc3BsYXlPcHRpb25zJiwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZpbGU+JiYpOwogI2VuZGlmCiAKICAgICBib29sIGNh
bkRlbGV0ZVJhbmdlKFJhbmdlKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0F0dGFjaG1lbnRUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdHRhY2htZW50VHlw
ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kZGI1ZjFmZDA2ODMzNWYyZTQxNjFhOWNjMjE1MDdlMTMzMmU0ZjM5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdHRhY2htZW50VHlwZXMu
aApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xh
c3MgQXR0YWNobWVudERpc3BsYXlNb2RlIHsKKyAgICBBdXRvLAorICAgIEluUGxhY2UsCisgICAg
QXNJY29uCit9OworCitzdHJ1Y3QgQXR0YWNobWVudERpc3BsYXlPcHRpb25zIHsKKyAgICBBdHRh
Y2htZW50RGlzcGxheU1vZGUgbW9kZSB7IEF0dGFjaG1lbnREaXNwbGF5TW9kZTo6QXV0byB9Owor
CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEF0dGFj
aG1lbnREaXNwbGF5T3B0aW9ucz4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IGlubGluZSB2b2lkIEF0dGFjaG1lbnREaXNwbGF5T3B0aW9uczo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1vZGUp
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxBdHRh
Y2htZW50RGlzcGxheU9wdGlvbnM+IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9uczo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCit7CisgICAgQXR0YWNobWVudERpc3BsYXlNb2RlIG1vZGU7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZUVudW0obW9kZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICByZXR1cm4ge3sgbW9kZSB9fTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCA1ODMzYjE2MTEwM2NmNzM3
YjhmYzBmNmZmZWEzNTc0NGM2YzY1YzdmLi41NGYwMzIwZWQ0ZWZhYzExM2I1MGEzOWY5YzQzNjg2
NWRjMTE1OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuY3BwCkBAIC0yOCwxNCArMjgsMjAgQEAKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCiAKKyNpbmNsdWRlICJET01VUkwuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJGaWxlUmVhZGVyTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCisjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiUmVuZGVyQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIlJlbmRl
ckJsb2NrRmxvdy5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTEzLDYgKzExOSwxMiBAQCB2b2lk
IEhUTUxBdHRhY2htZW50RWxlbWVudDo6c2V0RmlsZShSZWZQdHI8RmlsZT4mJiBmaWxlKQogCiAg
ICAgaWYgKGF1dG8qIHJlbmRlckF0dGFjaG1lbnQgPSBhdHRhY2htZW50UmVuZGVyZXIoKSkKICAg
ICAgICAgcmVuZGVyQXR0YWNobWVudC0+aW52YWxpZGF0ZSgpOworCisgICAgaWYgKGF1dG8gaW1h
Z2UgPSBpbm5lckltYWdlKCkpCisgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKHNyY0F0dHIsIGVtcHR5U3RyaW5nKCkpOworICAgIGlmIChhdXRvIHZpZGVv
ID0gaW5uZXJWaWRlbygpKQorICAgICAgICB2aWRlby0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihzcmNBdHRyLCBlbXB0eVN0cmluZygpKTsKKyAgICBwb3B1bGF0ZVNoYWRvd1Jv
b3RJZk5lY2Vzc2FyeSgpOwogfQogCiBSZW5kZXJBdHRhY2htZW50KiBIVE1MQXR0YWNobWVudEVs
ZW1lbnQ6OmF0dGFjaG1lbnRSZW5kZXJlcigpIGNvbnN0CkBAIC0xNzQsNiArMTg2LDgyIEBAIFN0
cmluZyBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmF0dGFjaG1lbnRQYXRoKCkgY29uc3QKICAgICBy
ZXR1cm4gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3ZWJraXRhdHRhY2htZW50cGF0
aEF0dHIpOwogfQogCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRGlzcGxheU1v
ZGUoQXR0YWNobWVudERpc3BsYXlNb2RlIG1vZGUpCit7CisgICAgbW9kZSA9IG1vZGUgPT0gQXR0
YWNobWVudERpc3BsYXlNb2RlOjpBdXRvID8gZGVmYXVsdERpc3BsYXlNb2RlKCkgOiBtb2RlOwor
CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBBdHRhY2htZW50RGlzcGxheU1vZGU6Oklu
UGxhY2U6CisgICAgICAgIHBvcHVsYXRlU2hhZG93Um9vdElmTmVjZXNzYXJ5KCk7CisgICAgICAg
IHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlLCBDU1NW
YWx1ZU5vbmUsIHRydWUpOworICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5RGlzcGxheSwgQ1NTVmFsdWVJbmxpbmVCbG9jaywgdHJ1ZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQXR0YWNobWVudERpc3BsYXlNb2RlOjpBc0ljb246CisgICAgICAgIHJlbW92ZUlu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlKTsKKyAgICAgICAg
cmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXkpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgaW52YWxpZGF0ZVN0eWxlQW5kUmVuZGVyZXJzRm9yU3Vi
dHJlZSgpOworfQorCitSZWY8SFRNTEltYWdlRWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50
OjplbnN1cmVJbm5lckltYWdlKCkKK3sKKyAgICBpZiAoYXV0byBpbWFnZSA9IGlubmVySW1hZ2Uo
KSkKKyAgICAgICAgcmV0dXJuICppbWFnZTsKKworICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgZW5zdXJlVXNlckFnZW50U2hhZG93Um9v
dCgpLmFwcGVuZENoaWxkKGltYWdlKTsKKyAgICByZXR1cm4gaW1hZ2U7Cit9CisKK1JlZjxIVE1M
VmlkZW9FbGVtZW50PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmVuc3VyZUlubmVyVmlkZW8oKQor
eworICAgIGlmIChhdXRvIHZpZGVvID0gaW5uZXJWaWRlbygpKQorICAgICAgICByZXR1cm4gKnZp
ZGVvOworCisgICAgYXV0byB2aWRlbyA9IEhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCgpKTsKKyAgICBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCkuYXBwZW5kQ2hpbGQodmlkZW8p
OworICAgIHJldHVybiB2aWRlbzsKK30KKworUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IEhUTUxB
dHRhY2htZW50RWxlbWVudDo6aW5uZXJJbWFnZSgpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8gcm9v
dCA9IHVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIGNoaWxkcmVuT2ZUeXBl
PEhUTUxJbWFnZUVsZW1lbnQ+KCpyb290KS5maXJzdCgpOworICAgIHJldHVybiBudWxscHRyOwor
fQorCitSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojppbm5l
clZpZGVvKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byByb290ID0gdXNlckFnZW50U2hhZG93Um9v
dCgpKQorICAgICAgICByZXR1cm4gY2hpbGRyZW5PZlR5cGU8SFRNTFZpZGVvRWxlbWVudD4oKnJv
b3QpLmZpcnN0KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgSFRNTEF0dGFjaG1l
bnRFbGVtZW50Ojpwb3B1bGF0ZVNoYWRvd1Jvb3RJZk5lY2Vzc2FyeSgpCit7CisgICAgYXV0byBt
aW1lVHlwZSA9IGF0dGFjaG1lbnRUeXBlKCk7CisgICAgaWYgKCFtX2ZpbGUgfHwgbWltZVR5cGUu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6
aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKG1pbWVUeXBlKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1BERk1JTUVUeXBlKG1pbWVUeXBlKSkgeworICAgICAgICBhdXRvIGltYWdlID0gZW5zdXJlSW5u
ZXJJbWFnZSgpOworICAgICAgICBpZiAoaW1hZ2UtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oc3JjQXR0cikuaXNFbXB0eSgpKQorICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwo
ZG9jdW1lbnQoKSwgKm1fZmlsZSkpOworCisgICAgfSBlbHNlIGlmIChNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZE1lZGlhTUlNRVR5cGUobWltZVR5cGUpKSB7CisgICAgICAgIGF1dG8gdmlk
ZW8gPSBlbnN1cmVJbm5lclZpZGVvKCk7CisgICAgICAgIGlmICh2aWRlby0+YXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRyKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHZp
ZGVvLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIsIERPTVVSTDo6
Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50KCksICptX2ZpbGUpKTsKKyAgICAgICAgICAgIHZpZGVv
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRyb2xzQXR0ciwgZW1wdHlT
dHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVt
ZW50OjpyZXF1ZXN0RGF0YShGdW5jdGlvbjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiYm
IGNhbGxiYWNrKQogewogICAgIGlmIChtX2ZpbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaAppbmRleCA1ZTNkM2M4NjM5YjYwNmQwZGIyOTIyY2E3YTdjZjk2
YmMxNmFmZmU3Li41ZTUzZDY1NjBmZDY3YTA2ODc2MDE3YTRmMmRhNjg1YTYxY2MxNjQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKQEAgLTI3LDEyICsy
NywxNSBAQAogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAorI2luY2x1ZGUgIkF0
dGFjaG1lbnRUeXBlcy5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQXR0YWNobWVudERhdGFSZWFkZXI7CiBjbGFzcyBGaWxlOworY2xh
c3MgSFRNTEltYWdlRWxlbWVudDsKK2NsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBSZW5k
ZXJBdHRhY2htZW50OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCkBAIC00Nyw2ICs1MCw4IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdW5pcXVlSWRlbnRpZmllcigpIGNvbnN0
OwogICAgIHZvaWQgc2V0VW5pcXVlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKIAorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRGlzcGxheU1vZGUoQXR0YWNobWVudERpc3BsYXlNb2Rl
KTsKKwogICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9y
KEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRG
cm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKIApAQCAtNjQs
NiArNjksMjAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5IVE1MQXR0YWNobWVudEVsZW1lbnQo
KTsKIAogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CisgICAgUmVm
PEhUTUxJbWFnZUVsZW1lbnQ+IGVuc3VyZUlubmVySW1hZ2UoKTsKKyAgICBSZWY8SFRNTFZpZGVv
RWxlbWVudD4gZW5zdXJlSW5uZXJWaWRlbygpOworICAgIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50
PiBpbm5lckltYWdlKCkgY29uc3Q7CisgICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IGlubmVy
VmlkZW8oKSBjb25zdDsKKworICAgIHZvaWQgcG9wdWxhdGVTaGFkb3dSb290SWZOZWNlc3Nhcnko
KTsKKworICAgIEF0dGFjaG1lbnREaXNwbGF5TW9kZSBkZWZhdWx0RGlzcGxheU1vZGUoKSBjb25z
dAorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IEZvciBub3csIGFsbCBhdHRhY2htZW50IGVsZW1l
bnRzIGF1dG9tYXRpY2FsbHkgZGlzcGxheSB1c2luZyBhIGZpbGUgaWNvbi4KKyAgICAgICAgLy8g
SW4gYSBmb2xsb3d1cCBwYXRjaCwgd2UnbGwgY2hhbmdlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIHRv
IHVzZSBpbi1wbGFjZSBwcmVzZW50YXRpb24KKyAgICAgICAgLy8gZm9yIGNlcnRhaW4gaW1hZ2Ug
TUlNRSB0eXBlcy4KKyAgICAgICAgcmV0dXJuIEF0dGFjaG1lbnREaXNwbGF5TW9kZTo6QXNJY29u
OworICAgIH0KIAogICAgIGJvb2wgc2hvdWxkU2VsZWN0T25Nb3VzZURvd24oKSBmaW5hbCB7CiAj
aWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KaW5kZXggNzYxYTk0NDE4MjU0OTkzZjJjY2RjNzI3Y2Ux
YjQxYzQwN2U4ZDRlYy4uZjkwOTE4YWFlOWRkOTUyZDk3NTM1YTFlNWUwODQ5YjA4MTFmMTVjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lv
bklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNz
aW9uSU9TLm1tCkBAIC0xNDEsNyArMTQxLDkgQEAgdm9pZCBBdWRpb1Nlc3Npb246OnNldENhdGVn
b3J5KENhdGVnb3J5VHlwZSBuZXdDYXRlZ29yeSkKIAogICAgIE5TRXJyb3IgKmVycm9yID0gbmls
OwogICAgIFtbQVZBdWRpb1Nlc3Npb24gc2hhcmVkSW5zdGFuY2VdIHNldENhdGVnb3J5OmNhdGVn
b3J5U3RyaW5nIG1vZGU6Y2F0ZWdvcnlNb2RlIG9wdGlvbnM6b3B0aW9ucyBlcnJvcjomZXJyb3Jd
OworI2lmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQogICAgIEFTU0VSVCghZXJyb3IpOworI2Vu
ZGlmCiB9CiAKIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIEF1ZGlvU2Vzc2lvbjo6Y2F0ZWdv
cnkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXgg
ZjE2YWZiYmM3YjJhYTBkNTRiNzQ3YWViM2UzYzc0ZmQ3YWU3YmEzOC4uNGNlZDM2MjgxM2YyYjEy
ZmI3MjczODllMTk3ZDY2ODkwZTk1YzUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CkBAIC0zNjEsNiArMzYxLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlw
ZSk6CiAgICAgc3BlY2lhbF9jYXNlcyA9IHsKICAgICAgICAgJ1N0cmluZyc6IFsnPHd0Zi90ZXh0
L1dURlN0cmluZy5oPiddLAogICAgICAgICAnUEFMOjpTZXNzaW9uSUQnOiBbJzxwYWwvU2Vzc2lv
bklELmg+J10sCisgICAgICAgICdXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMnOiBb
JzxXZWJDb3JlL0F0dGFjaG1lbnRUeXBlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6QXV0b3Bs
YXlFdmVudEZsYWdzJzogWyc8V2ViQ29yZS9BdXRvcGxheUV2ZW50Lmg+J10sCiAgICAgICAgICdX
ZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJzogWyc8V2ViQ29yZS9KU0RPTUV4Y2VwdGlvbkhhbmRs
aW5nLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJzogWyc8V2Vi
Q29yZS9GaWxlQ2hvb3Nlci5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuY3BwCmluZGV4IDFkNDliMDdiMmIxYjUxZTdiMjczNWVkM2QxNDZkNGI3NzY5
YTE0YjQuLjc3OGJhNjY0ZjA4NjJhMmM0NTA1N2VhMzc2Y2Q0NjMxMDhhM2Y5OGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElBdHRhY2htZW50LmgiCiAK
KyNpbmNsdWRlIDxXZWJDb3JlL0F0dGFjaG1lbnRUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC01NSw0ICs1NiwxMiBAQCB2b2lkIEF0dGFjaG1lbnQ6OnJl
cXVlc3REYXRhKEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFdl
YktpdAogICAgICAgICBjYWxsYmFjayhudWxscHRyLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwogfQogCit2b2lkIEF0dGFjaG1lbnQ6OnNldERpc3Bs
YXlPcHRpb25zKFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBvcHRpb25zLCBGdW5j
dGlvbjx2b2lkKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCit7Cisg
ICAgaWYgKG1fd2ViUGFnZSkKKyAgICAgICAgbV93ZWJQYWdlLT5zZXRBdHRhY2htZW50RGlzcGxh
eU9wdGlvbnMobV9pZGVudGlmaWVyLCBvcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAg
ZWxzZQorICAgICAgICBjYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVy
V2FzSW52YWxpZGF0ZWQpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuaAppbmRleCAxZWEwMDdkNmUwNzNiMTM0Y2I0ZDlhZTQ1NTY4MTlkOWM5NTgy
MjQ0Li45ZmU3NWM5YWI5MGYyZjJhZWVlYjQ5NWI0Y2QwMzI2MzJjM2M1NzE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOworc3RydWN0IEF0dGFj
aG1lbnREaXNwbGF5T3B0aW9uczsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00OSw2ICs1
MCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgdm9pZCByZXF1ZXN0RGF0YShGdW5jdGlv
bjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBXZWJLaXQ6OkNhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHNldERpc3BsYXlPcHRpb25zKFdlYkNvcmU6OkF0dGFj
aG1lbnREaXNwbGF5T3B0aW9ucywgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdU
Rjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggY2IxZmRiMjdh
NmJlNWNlNjQxZmU0Yjg4MGRhMWI2ZjhkNDRjNGI0OC4uM2RlOTI1NGQyMzdiMjg3MjBiMzI3MDA0
MjQ3NTY4YjUwMmE3NGNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC05MCw2ICs5MCw3IEBACiAjaW1wb3J0ICJfV0tTZXNzaW9uU3Rh
dGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9B
dHRhY2htZW50VHlwZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRE9NQmlu
ZGluZy5oPgpAQCAtNDE5Myw4ICs0MTk0LDkgQEAgLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRB
dHRhY2htZW50V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXAKICNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIGF1dG8gaWRlbnRpZmllciA9IGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKIAorICAgIGF1dG8gY29yZU9wdGlvbnMgPSBvcHRpb25z
ID8gb3B0aW9ucy5jb3JlRGlzcGxheU9wdGlvbnMgOiBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxh
eU9wdGlvbnMgeyB9OwogICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSk7Ci0gICAgX3BhZ2UtPmluc2VydEF0dGFjaG1lbnQoaWRlbnRpZmllciwgZmls
ZW5hbWUsIGNvbnRlbnRUeXBlLmxlbmd0aCA/IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB7IGNvbnRl
bnRUeXBlIH0gOiBzdGQ6Om51bGxvcHQsIGJ1ZmZlci5nZXQoKSwgW2NhcHR1cmVkSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciksIGNhcHR1cmVkQnVmZmVyID0gYnVmZmVy
LmNvcHlSZWYoKV0gKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIF9w
YWdlLT5pbnNlcnRBdHRhY2htZW50KGlkZW50aWZpZXIsIGNvcmVPcHRpb25zLCBmaWxlbmFtZSwg
Y29udGVudFR5cGUubGVuZ3RoID8gc3RkOjpvcHRpb25hbDxTdHJpbmc+IHsgY29udGVudFR5cGUg
fSA6IHN0ZDo6bnVsbG9wdCwgYnVmZmVyLmdldCgpLCBbY2FwdHVyZWRIYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSwgY2FwdHVyZWRCdWZmZXIgPSBidWZmZXIuY29weVJl
ZigpXSAoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGlmIChj
YXB0dXJlZEhhbmRsZXIpCiAgICAgICAgICAgICBjYXB0dXJlZEhhbmRsZXIoZXJyb3IgPT0gV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oCmluZGV4IDFjZDQ1NzQ1
YjUxYzFjNDVjMzBlODkxMTgxMzRlYzMwNjNlN2QxNTIuLmY4MzY4OWRkMjY0NTc3OWZkZWZjYzlj
OWQ2NTFiODVhYTUxMmQ4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F0dGFjaG1lbnQuaApAQCAtMzgsMTIgKzM4LDEyIEBAIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZSkgewogV0tfQ0xBU1NfQVZBSUxB
QkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQogQGludGVyZmFjZSBfV0tB
dHRhY2htZW50RGlzcGxheU9wdGlvbnMgOiBOU09iamVjdAogQHByb3BlcnR5IChub25hdG9taWMp
IF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZSBtb2RlOwotQHByb3BlcnR5IChub25hdG9taWMpIEJP
T0wgZXhwYW5kc0ltYWdlVG9NYXhpbXVtV2lkdGg7CiBAZW5kCiAKIFdLX0NMQVNTX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKIEBpbnRlcmZhY2UgX1dLQXR0
YWNobWVudCA6IE5TT2JqZWN0CiAtICh2b2lkKXJlcXVlc3REYXRhOih2b2lkKF4pKE5TRGF0YSAq
LCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClzZXREaXNwbGF5T3B0aW9u
czooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9uOih2b2lk
KF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7CiBAZW5kCiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQppbmRl
eCBkMDNkOTQzYWQ5ZDhiZGUyYzZmZThhZDQ2ZmMyZWU4NTcwMTRlZmNmLi5lMzhlZGM1ZWE0MThk
MWE1N2E0OTU1ZTYwODg4YzAwNWZlYzdlNTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2lt
cG9ydCAiQVBJQXR0YWNobWVudC5oIgogI2ltcG9ydCAiV0tFcnJvclByaXZhdGUuaCIKICNpbXBv
cnQgIl9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9BdHRhY2htZW50
VHlwZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDx3dGYv
QmxvY2tQdHIuaD4KIApAQCAtNDAsMTMgKzQxLDMyIEBAIEBpbXBsZW1lbnRhdGlvbiBfV0tBdHRh
Y2htZW50RGlzcGxheU9wdGlvbnMgOiBOU09iamVjdAogCiAtIChpbnN0YW5jZXR5cGUpaW5pdAog
ewotICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIg
aW5pdF0pCiAgICAgICAgIF9tb2RlID0gX1dLQXR0YWNobWVudERpc3BsYXlNb2RlQXV0bzsKLSAg
ICAgICAgX2V4cGFuZHNJbWFnZVRvTWF4aW11bVdpZHRoID0gTk87Ci0gICAgfQorCiAgICAgcmV0
dXJuIHNlbGY7CiB9CiAKKy0gKFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyljb3Jl
RGlzcGxheU9wdGlvbnMKK3sKKyAgICBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU1vZGUgbW9k
ZTsKKyAgICBzd2l0Y2ggKHNlbGYubW9kZSkgeworICAgIGNhc2UgX1dLQXR0YWNobWVudERpc3Bs
YXlNb2RlQXV0bzoKKyAgICAgICAgbW9kZSA9IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5TW9k
ZTo6QXV0bzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBfV0tBdHRhY2htZW50RGlzcGxheU1v
ZGVBc0ljb246CisgICAgICAgIG1vZGUgPSBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU1vZGU6
OkFzSWNvbjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBfV0tBdHRhY2htZW50RGlzcGxheU1v
ZGVJblBsYWNlOgorICAgICAgICBtb2RlID0gV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlNb2Rl
OjpJblBsYWNlOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgbW9kZSA9IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5
TW9kZTo6QXV0bzsKKyAgICB9CisgICAgcmV0dXJuIHsgbW9kZSB9OworfQorCiBAZW5kCiAKIEBp
bXBsZW1lbnRhdGlvbiBfV0tBdHRhY2htZW50CkBAIC03NCw2ICs5NCwyMCBAQCAtICh2b2lkKXJl
cXVlc3REYXRhOih2b2lkKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVy
CiAgICAgfSk7CiB9CiAKKy0gKHZvaWQpc2V0RGlzcGxheU9wdGlvbnM6KF9XS0F0dGFjaG1lbnRE
aXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMgY29tcGxldGlvbjoodm9pZCheKShOU0Vycm9yICopKWNv
bXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0byBjb3JlT3B0aW9ucyA9IG9wdGlvbnMgPyBvcHRp
b25zLmNvcmVEaXNwbGF5T3B0aW9ucyA6IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9u
cyB7IH07CisgICAgX2F0dGFjaG1lbnQtPnNldERpc3BsYXlPcHRpb25zKGNvcmVPcHRpb25zLCBb
Y2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGlmICghY2FwdHVyZWRCbG9jaykKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoZXJyb3IgPT0gQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6Tm9uZSkKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJv
ckRvbWFpbiBjb2RlOjEgdXNlckluZm86bmlsXSk7CisgICAgfSk7Cit9CisKIC0gKE5TU3RyaW5n
ICopdW5pcXVlSWRlbnRpZmllcgogewogICAgIHJldHVybiBfYXR0YWNobWVudC0+aWRlbnRpZmll
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0
dGFjaG1lbnRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0F0dGFjaG1lbnRJbnRlcm5hbC5oCmluZGV4IGE5ODMwNTc4MDVkZjY5NzdkNDQ1YWM4M2MwYjQ3
ZGRlNTNmNmUyMWEuLjJlNTNlY2JhMzk1NGFiNjQxNmNkNGNkMmNkZjE0YWVlNWE5NGQ1MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50
SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0
YWNobWVudEludGVybmFsLmgKQEAgLTM4LDYgKzM4LDEwIEBAIGlubGluZSBfV0tBdHRhY2htZW50
ICp3cmFwcGVyKEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCkKIAogfQogCitAaW50ZXJmYWNl
IF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAoKQorQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgY29yZURpc3BsYXlPcHRp
b25zOworQGVuZAorCiBAaW50ZXJmYWNlIF9XS0F0dGFjaG1lbnQgKCkgPFdLT2JqZWN0PiB7CiBA
cGFja2FnZQogICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OkF0dGFjaG1lbnQ+IF9hdHRhY2ht
ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMWMzNmNi
OGFhYWEzZDNkMjMzOTFiZTExYTM4M2RmZWQxMDUyZjRiZS4uMTQzZTlkNTFmMzE3ZDlhZGI3ZDQ2
YjRkODA4NTAxYmI5OWI3MTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAKICNp
bmNsdWRlICJBUElBcnJheS5oIgorI2luY2x1ZGUgIkFQSUF0dGFjaG1lbnQuaCIKICNpbmNsdWRl
ICJBUElDb250ZXh0TWVudUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSUZpbmRDbGllbnQuaCIKICNp
bmNsdWRlICJBUElGaW5kTWF0Y2hlc0NsaWVudC5oIgpAQCAtMTEzLDYgKzExNCw3IEBACiAjaW5j
bHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvQXR0YWNobWVudFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFn
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgpAQCAtNzE0Nyw3ICs3MTQ5LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZy
YW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWUKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCiAKLXZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGNvbnRlbnRUeXBlLCBTaGFyZWRCdWZmZXImIGRhdGEsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNo
bWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnREaXNwbGF5T3B0
aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IGNvbnRlbnRUeXBlLCBTaGFyZWRCdWZmZXImIGRhdGEsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAg
ICAgICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7
CkBAIC03MTU1LDcgKzcxNTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVu
dChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZQogICAgIH0KIAog
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydEF0dGFjaG1lbnQoaWRlbnRp
ZmllciwgZmlsZW5hbWUsIGNvbnRlbnRUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgeyAmZGF0YSB9LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChpZGVudGlmaWVyLCBvcHRpb25z
LCBmaWxlbmFtZSwgY29udGVudFR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7
ICZkYXRhIH0sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXF1ZXN0QXR0YWNobWVudERhdGEoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBGdW5jdGlv
bjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFjaykKQEAgLTcxNjksNiArNzE3MSwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF0
dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZAogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF0dGFjaG1lbnREYXRh
KGlkZW50aWZpZXIsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRBdHRhY2htZW50RGlzcGxheU9wdGlvbnMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgb3B0aW9ucywgRnVuY3Rpb248dm9pZChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkgeworICAg
ICAgICBjYWxsYmFjayhDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhpZGVudGlmaWVyLCBvcHRpb25zLCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkSW5zZXJ0QXR0
YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiB7CiAgICAgbV9wYWdlQ2xpZW50LmRp
ZEluc2VydEF0dGFjaG1lbnQoaWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDNmOTZmZGYxMDAzYjVlNmJjN2ViZmZkOGFiNjdhNTEwOTYxMTdiN2Eu
LmYyNTI5NjA4YmIyZjJkNDRlODMyZWM2NjczMDk1OWRjZDViYzIzMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNzYsNiArMTc2LDEyIEBAIHRlbXBsYXRlIDx0
eXBlbmFtZT4gY2xhc3MgUmVjdEVkZ2VzOwogdXNpbmcgRmxvYXRCb3hFeHRlbnQgPSBSZWN0RWRn
ZXM8ZmxvYXQ+OwogfQogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK3N0cnVjdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnM7Cit9CisjZW5kaWYK
KwogI2lmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYgR3RrV2lkZ2V0KiBQbGF0Zm9ybVdpZGdldDsK
ICNlbmRpZgpAQCAtMTIxNiw4ICsxMjIyLDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3Qs
IHVpbnQ2NF90IHdlYlByb2Nlc3NDb250ZXh0SWQpOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKLSAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVu
dFR5cGUsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgRnVuY3Rpb248dm9pZChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zJiwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBl
LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpOwogICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgc2V0QXR0YWNobWVudERpc3Bs
YXlPcHRpb25zKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgV2ViQ29yZTo6QXR0YWNobWVudERp
c3BsYXlPcHRpb25zLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICNl
bmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCA2ZmU3OWI0OTFmZDUyYjg3MDQ3ZWYyZTY5NzFkOWE0ZDQ1YWU4NTUwLi5h
ZDQyNDJjOTcyZDQxMDA5NjA4YzU4ZWI2YmQxNzQxNDlkMjZmYjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTc2NywyMyArNTc2NywxNiBA
QCB2b2lkIFdlYlBhZ2U6Omludm9rZVNoYXJlZEJ1ZmZlckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBDYWxsYmFjawogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKIAotdm9pZCBXZWJQYWdlOjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRl
bnRUeXBlLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBh
dXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCk7Ci0gICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0QXR0YWNobWVudChpZGVudGlmaWVyLCBmaWxl
bmFtZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSwgY29u
dGVudFR5cGUpOworICAgIGZyYW1lLmVkaXRvcigpLmluc2VydEF0dGFjaG1lbnQoaWRlbnRpZmll
ciwgb3B0aW9ucywgZmlsZW5hbWUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSksIGNvbnRlbnRUeXBlKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cmVxdWVz
dEF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewotICAgIC8vIEZJWE1FOiBXZSBkb24ndCBjdXJyZW50bHkgaGFuZGxlIGF0dGFj
aG1lbnQgZGF0YSByZXF1ZXN0cyBmb3IgYXR0YWNobWVudCBlbGVtZW50cyBpbiBzdWJmcmFtZXMu
Ci0gICAgYXV0byogZnJhbWUgPSBtYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFt
ZS0+ZG9jdW1lbnQoKSkgewotICAgICAgICBpbnZva2VTaGFyZWRCdWZmZXJDYWxsYmFjayh7IH0s
IGNhbGxiYWNrSUQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBhdHRhY2ht
ZW50ID0gZnJhbWUtPmRvY3VtZW50KCktPmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGlkZW50aWZp
ZXIpOworICAgIGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZp
ZXIoaWRlbnRpZmllcik7CiAgICAgaWYgKCFhdHRhY2htZW50KSB7CiAgICAgICAgIGludm9rZVNo
YXJlZEJ1ZmZlckNhbGxiYWNrKHsgfSwgY2FsbGJhY2tJRCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTU3OTcsNiArNTc5MCwyNSBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50RGF0YShj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIENhbGxiYWNrSUQgY2FsbGJhYwogICAgIH0pOwogfQog
Cit2b2lkIFdlYlBhZ2U6OnNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYgb3B0aW9ucywgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQoreworICAgIGlmIChhdXRvIGF0dGFjaG1lbnQgPSBhdHRhY2ht
ZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKSB7CisgICAgICAgIGF0dGFjaG1l
bnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CisgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0
ZURpc3BsYXlNb2RlKG9wdGlvbnMubW9kZSk7CisgICAgfQorICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKK30KKworUmVmUHRyPEhUTUxB
dHRhY2htZW50RWxlbWVudD4gV2ViUGFnZTo6YXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEhhbmRs
ZSBhdHRhY2htZW50IGVsZW1lbnRzIGluIHN1YmZyYW1lcyB0b28gYXMgd2VsbC4KKyAgICBhdXRv
KiBmcmFtZSA9IG1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5kb2N1bWVu
dCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBmcmFtZS0+ZG9jdW1l
bnQoKS0+YXR0YWNobWVudEZvcklkZW50aWZpZXIoaWRlbnRpZmllcik7Cit9CisKICNlbmRpZiAv
LyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxOWI2ODI1Mzkx
NzBlN2RiZTNmNjQwZmU5OWRhMGJkYzY4Y2RkMzE1Li42NGQ2NmYyOWNiZTQ0M2YwYTVkMmMzNDkw
YWVlNzk5YjE3ZjA0MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC0xNTIsNiArMTUyLDEwIEBAIGVudW0gU3ludGhldGljQ2xpY2tUeXBlIDogaW50
OF90OwogCiBlbnVtIGNsYXNzIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIDog
dWludDhfdDsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCitjbGFzcyBIVE1MQXR0
YWNobWVudEVsZW1lbnQ7CitzdHJ1Y3QgQXR0YWNobWVudERpc3BsYXlPcHRpb25zOworI2VuZGlm
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTAxMSw4ICsxMDE1LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3Qg
Y29udGV4dElkKTsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdm9pZCBp
bnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9w
dGlvbnMmLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29u
dGVudFR5cGUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIENhbGxiYWNrSUQpOwogICAgIHZv
aWQgcmVxdWVzdEF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBzZXRBdHRhY2htZW50RGlzcGxheU9wdGlvbnMoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmLCBD
YWxsYmFja0lEKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMTMyNyw2ICsxMzMyLDEwIEBAIHBy
aXZhdGU6CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcGRmU25hcHNob3RBdFNpemUoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJpdG1hcFNpemUsIFNu
YXBzaG90T3B0aW9ucyk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CisgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudD4gYXR0YWNobWVudEVs
ZW1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0OworI2Vu
ZGlmCisKICAgICB1aW50NjRfdCBtX3BhZ2VJRDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpQYWdlPiBtX3BhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA2ZDdiNmVkNjI2MzU5NmU4NjlmM2E0YTdl
YzQ0OTcxNTM2Y2E4NzcwLi40YzQyODA1OTJhMzIwNTk5YmFjZjQxODFkZTJhZmVjYWJiYWQwMDdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KQEAgLTQ4Niw3ICs0ODYsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBTdG9yYWdlQWNjZXNzUmVzcG9uc2UoYm9vbCB3YXNHcmFudGVkLCB1
aW50NjRfdCBjb250ZXh0SWQpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAg
IEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBmaWxlbmFtZSwgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW5zZXJ0QXR0YWNobWVudChTdHJp
bmcgaWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBv
cHRpb25zLCBTdHJpbmcgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlw
ZSwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogICAgIFJlcXVlc3RBdHRhY2htZW50RGF0YShTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2V0QXR0YWNobWVudERpc3BsYXlPcHRpb25zKFN0
cmluZyBpZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25z
IG9wdGlvbnMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCiB9CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTU4YzFiYjY4
ODEwNTY2Y2JlYTk3YmE3MmFmNTdmZTIyN2U0ZGUzNC4uYWViNWZiMDU4YTg2N2Q2YWFkOGZhODYy
YTNjNWZlYjJhNmUxOTE4NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTExLTI5ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRdIElt
cGxlbWVudCBTUEkgZm9yIGNsaWVudHMgdG8gbWFrZSBhbiBhdHRhY2htZW50IGVsZW1lbnQgZGlz
cGxheSBpbi1wbGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgwMTUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTczNTI1Mj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIG5ldyBBUEkgdGVz
dHMgdG8gY292ZXIgaW5zZXJ0aW5nIGluLXBsYWNlIGF0dGFjaG1lbnRzIGFuZCB1cGRhdGluZyB0
aGUgZGlzcGxheSBtb2RlIG9mIGV4aXN0aW5nIGF0dGFjaG1lbnRzLAorICAgICAgICBhcyB3ZWxs
IGFzIHBlcmZvcm1pbmcgYSBmZXcgZWRpdGluZyBvcGVyYXRpb25zIChwYXJhZ3JhcGggaW5zZXJ0
aW9uLCBjdXQvcGFzdGUsIGxpc3QgaW5zZXJ0aW9uKSBvbiBhdHRhY2htZW50CisgICAgICAgIGVs
ZW1lbnRzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0
dGFjaG1lbnRUZXN0cy5tbToKKyAgICAgICAgKHBsYXRmb3JtQXR0YWNobWVudEljb25FbGVtZW50
U2l6ZSk6CisgICAgICAgICh0ZXN0VmlkZW9EYXRhKToKKyAgICAgICAgKHRlc3RQREZEYXRhKToK
KyAgICAgICAgKGRpc3BsYXlPcHRpb25zV2l0aE1vZGUpOgorICAgICAgICAoLVtUZXN0V0tXZWJW
aWV3IHdhaXRGb3JBdHRhY2htZW50RWxlbWVudFNpemVUb0JlY29tZTpdKToKKyAgICAgICAgKC1b
X1dLQXR0YWNobWVudCBzeW5jaHJvbm91c2x5U2V0RGlzcGxheU9wdGlvbnM6ZXJyb3I6XSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNy0xMS0yOCAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgV2ViRHJpdmVyOiBhZGQg
YW4gb3B0aW9uIHRvIGR1bXAgdGVzdCByZXN1bHRzIHRvIGEganNvbiBmaWxlCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3Rz
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRU
ZXN0cy5tbQppbmRleCAyMGQxMmMxOTZiMGMyM2Q0Mjc4OTM1YjEwZjc1YjNjNDI5YzZmYTUzLi4w
MGE1MDM4ZDg0OGJlZjg1OGYzYjgwYzNmYWU3YTUxZjViMDg5M2NiIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVz
dHMubW0KQEAgLTI3LDEyICsyNywyMiBAQAogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1By
aXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJL
aXRQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBXS19BUElfRU5B
QkxFRAogCitDR1NpemUgcGxhdGZvcm1BdHRhY2htZW50SWNvbkVsZW1lbnRTaXplKCkKK3sKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgcmV0dXJuIENHU2l6ZU1ha2UoMTYwLCAxMTkpOworI2Vsc2UK
KyAgICByZXR1cm4gQ0dTaXplTWFrZSg2MSwgODkpOworI2VuZGlmCit9CisKIEBpbnRlcmZhY2Ug
QXR0YWNobWVudFVwZGF0ZU9ic2VydmVyIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXkgKmluc2VydGVkOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5ICpyZW1vdmVkOwpAQCAtMTM5LDYg
KzE0OSwyNSBAQCBzdGF0aWMgTlNEYXRhICp0ZXN0SW1hZ2VEYXRhKCkKICAgICByZXR1cm4gW05T
RGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6dXJsXTsKIH0KIAorc3RhdGljIE5TRGF0YSAqdGVz
dFZpZGVvRGF0YSgpCit7CisgICAgTlNVUkwgKnVybCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJ0ZXN0IiB3aXRoRXh0ZW5zaW9uOkAibXA0IiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIHJldHVybiBbTlNEYXRhIGRhdGFXaXRo
Q29udGVudHNPZlVSTDp1cmxdOworfQorCitzdGF0aWMgTlNEYXRhICp0ZXN0UERGRGF0YSgpCit7
CisgICAgTlNVUkwgKnVybCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJ0ZXN0IiB3aXRoRXh0ZW5zaW9uOkAicGRmIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOworICAgIHJldHVybiBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDp1
cmxdOworfQorCitzdGF0aWMgX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICpkaXNwbGF5T3B0
aW9uc1dpdGhNb2RlKF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZSBtb2RlKQoreworICAgIF9XS0F0
dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqb3B0aW9ucyA9IFtbW19XS0F0dGFjaG1lbnREaXNwbGF5
T3B0aW9ucyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIG9wdGlvbnMubW9kZSA9IG1v
ZGU7CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKIEBpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJW
aWV3IChBdHRhY2htZW50VGVzdGluZykKIAogLSAoQk9PTClfc3luY2hyb25vdXNseUV4ZWN1dGVF
ZGl0Q29tbWFuZDooTlNTdHJpbmcgKiljb21tYW5kIGFyZ3VtZW50OihOU1N0cmluZyAqKWFyZ3Vt
ZW50CkBAIC0xNjMsNiArMTkyLDIyIEBAIC0gKF9XS0F0dGFjaG1lbnQgKilzeW5jaHJvbm91c2x5
SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtCiAgICAgcmV0
dXJuIGF0dGFjaG1lbnQuYXV0b3JlbGVhc2UoKTsKIH0KIAorLSAodm9pZCl3YWl0Rm9yQXR0YWNo
bWVudEVsZW1lbnRTaXplVG9CZWNvbWU6KENHU2l6ZSlleHBlY3RlZFNpemUKK3sKKyAgICB3aGls
ZSAoW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIHJ1bk1vZGU6TlNEZWZhdWx0UnVuTG9vcE1v
ZGUgYmVmb3JlRGF0ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XV0pIHsKKyAgICAgICAgX19ibG9jayBi
b29sIGRvbmVFdmFsdWF0aW5nU2NyaXB0ID0gZmFsc2U7CisgICAgICAgIF9fYmxvY2sgQk9PTCBz
aXplSXNFcXVhbCA9IE5POworICAgICAgICBbc2VsZiBldmFsdWF0ZUphdmFTY3JpcHQ6QCJyID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYXR0YWNobWVudCcpLmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpOyBbci53aWR0aCwgci5oZWlnaHRdIiBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNO
dW1iZXIgKj4gKnNpemVSZXN1bHQsIE5TRXJyb3IgKikgeworICAgICAgICAgICAgQ0dTaXplIG9i
c2VydmVkU2l6ZSB7IHNpemVSZXN1bHQuZmlyc3RPYmplY3QuZmxvYXRWYWx1ZSwgc2l6ZVJlc3Vs
dC5sYXN0T2JqZWN0LmZsb2F0VmFsdWUgfTsKKyAgICAgICAgICAgIHNpemVJc0VxdWFsID0gQ0dT
aXplRXF1YWxUb1NpemUoZXhwZWN0ZWRTaXplLCBvYnNlcnZlZFNpemUpOworICAgICAgICAgICAg
ZG9uZUV2YWx1YXRpbmdTY3JpcHQgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRXZhbHVhdGluZ1NjcmlwdCk7CisgICAgICAgIGlmIChz
aXplSXNFcXVhbCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogLSAoTlNTdHJpbmcg
Kil2YWx1ZU9mQXR0cmlidXRlOihOU1N0cmluZyAqKWF0dHJpYnV0ZU5hbWUgZm9yUXVlcnlTZWxl
Y3RvcjooTlNTdHJpbmcgKilxdWVyeVNlbGVjdG9yCiB7CiAgICAgcmV0dXJuIFtzZWxmIHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCclQCcpLmdldEF0dHJpYnV0ZSgnJUAnKSIsIHF1ZXJ5U2VsZWN0
b3IsIGF0dHJpYnV0ZU5hbWVdXTsKQEAgLTE4OCw2ICsyMzMsMjEgQEAgQGVuZAogCiBAaW1wbGVt
ZW50YXRpb24gX1dLQXR0YWNobWVudCAoQXR0YWNobWVudFRlc3RpbmcpCiAKKy0gKHZvaWQpc3lu
Y2hyb25vdXNseVNldERpc3BsYXlPcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMg
KilvcHRpb25zIGVycm9yOihOU0Vycm9yICoqKWVycm9yCit7CisgICAgX19ibG9jayBSZXRhaW5Q
dHI8TlNFcnJvcj4gcmVzdWx0RXJyb3I7CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsK
KyAgICBbc2VsZiBzZXREaXNwbGF5T3B0aW9uczpvcHRpb25zIGNvbXBsZXRpb246XihOU0Vycm9y
ICplcnJvcikgeworICAgICAgICByZXN1bHRFcnJvciA9IHJldGFpblB0cihlcnJvcik7CisgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKKworICAgIGlmIChlcnJvcikKKyAgICAgICAgKmVycm9yID0gcmVzdWx0RXJyb3Iu
YXV0b3JlbGVhc2UoKTsKK30KKwogLSAoTlNEYXRhICopc3luY2hyb25vdXNseVJlcXVlc3REYXRh
OihOU0Vycm9yICoqKWVycm9yCiB7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXN1
bHQ7CkBAIC00MzIsNiArNDkyLDkyIEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIE11bHRpcGxl
U2ltdWx0YW5lb3VzQXR0YWNobWVudERhdGFSZXF1ZXN0cykKICAgICBFWFBFQ1RfVFJVRShbZGF0
YUZvclNlY29uZFJlcXVlc3QgaXNFcXVhbFRvRGF0YTpodG1sRGF0YS5nZXQoKV0pOwogfQogCitU
RVNUKFdLQXR0YWNobWVudFRlc3RzLCBJblBsYWNlSW1hZ2VBdHRhY2htZW50VG9nZ2xlRGlzcGxh
eU1vZGUpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50
cygpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGltYWdlRGF0YSA9IHRlc3RJbWFnZURhdGEoKTsK
KyAgICBSZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gYXR0YWNobWVudDsKKyAgICB7CisgICAgICAg
IE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkp
OworICAgICAgICBhdHRhY2htZW50ID0gcmV0YWluUHRyKFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJ
bnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiaWNvbi5wbmciIGNvbnRlbnRUeXBlOkAiaW1h
Z2UvcG5nIiBkYXRhOmltYWdlRGF0YS5nZXQoKSBvcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1v
ZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2RlSW5QbGFjZSldKTsKKyAgICAgICAgb2JzZXJ2ZXIu
ZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFtdLCBAW2F0dGFjaG1lbnQuZ2V0KCldKTsKKyAgICAg
ICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6aW1hZ2VEYXRhLmdldCgpXTsK
KyAgICAgICAgW3dlYlZpZXcgd2FpdEZvckF0dGFjaG1lbnRFbGVtZW50U2l6ZVRvQmVjb21lOkNH
U2l6ZU1ha2UoMjE1LCAxNzQpXTsKKyAgICB9CisKKyAgICBbYXR0YWNobWVudCBzeW5jaHJvbm91
c2x5U2V0RGlzcGxheU9wdGlvbnM6ZGlzcGxheU9wdGlvbnNXaXRoTW9kZShfV0tBdHRhY2htZW50
RGlzcGxheU1vZGVBc0ljb24pIGVycm9yOm5pbF07CisgICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVx
dWVzdGVkRGF0YVRvQmU6aW1hZ2VEYXRhLmdldCgpXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yQXR0
YWNobWVudEVsZW1lbnRTaXplVG9CZWNvbWU6cGxhdGZvcm1BdHRhY2htZW50SWNvbkVsZW1lbnRT
aXplKCldOworCisgICAgW2F0dGFjaG1lbnQgc3luY2hyb25vdXNseVNldERpc3BsYXlPcHRpb25z
OmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2RlSW5QbGFjZSkg
ZXJyb3I6bmlsXTsKKyAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTppbWFn
ZURhdGEuZ2V0KCldOworICAgIFt3ZWJWaWV3IHdhaXRGb3JBdHRhY2htZW50RWxlbWVudFNpemVU
b0JlY29tZTpDR1NpemVNYWtlKDIxNSwgMTc0KV07Cit9CisKK1RFU1QoV0tBdHRhY2htZW50VGVz
dHMsIEluUGxhY2VJbWFnZUF0dGFjaG1lbnRQYXJhZ3JhcGhJbnNlcnRpb24pCit7CisgICAgYXV0
byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOworICAgIFJldGFpblB0
cjxOU0RhdGE+IGltYWdlRGF0YSA9IHRlc3RJbWFnZURhdGEoKTsKKyAgICBSZXRhaW5QdHI8X1dL
QXR0YWNobWVudD4gYXR0YWNobWVudDsKKyAgICB7CisgICAgICAgIE9ic2VydmVBdHRhY2htZW50
VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOworICAgICAgICBhdHRhY2ht
ZW50ID0gcmV0YWluUHRyKFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0
aEZpbGVuYW1lOkAiaWNvbi5wbmciIGNvbnRlbnRUeXBlOkAiaW1hZ2UvcG5nIiBkYXRhOmltYWdl
RGF0YS5nZXQoKSBvcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERp
c3BsYXlNb2RlSW5QbGFjZSldKTsKKyAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVw
ZGF0ZXMoQFtdLCBAW2F0dGFjaG1lbnQuZ2V0KCldKTsKKyAgICB9CisgICAgW3dlYlZpZXcgZXhw
ZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpAIkluc2VydFBhcmFncmFwaCIgd2l0aEFyZ3VtZW50Om5p
bCBleHBlY3RlZFJlbW92YWxzOkBbXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKKyAgICBbd2Vi
VmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiRGVsZXRlQmFja3dhcmQiIHdpdGhBcmd1
bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW10gZXhwZWN0ZWRJbnNlcnRpb25zOkBbXV07Cisg
ICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigp
LmNvbGxhcHNlKGRvY3VtZW50LmJvZHkpIl07CisgICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0Fm
dGVyQ29tbWFuZDpAIkluc2VydFBhcmFncmFwaCIgd2l0aEFyZ3VtZW50Om5pbCBleHBlY3RlZFJl
bW92YWxzOkBbXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKKyAgICBbd2ViVmlldyBleHBlY3RV
cGRhdGVzQWZ0ZXJDb21tYW5kOkAiRGVsZXRlQmFja3dhcmQiIHdpdGhBcmd1bWVudDpuaWwgZXhw
ZWN0ZWRSZW1vdmFsczpAW10gZXhwZWN0ZWRJbnNlcnRpb25zOkBbXV07CisKKyAgICBbYXR0YWNo
bWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTppbWFnZURhdGEuZ2V0KCldOworICAgIFt3ZWJW
aWV3IHdhaXRGb3JBdHRhY2htZW50RWxlbWVudFNpemVUb0JlY29tZTpDR1NpemVNYWtlKDIxNSwg
MTc0KV07CisKKyAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiRGVsZXRl
Rm9yd2FyZCIgd2l0aEFyZ3VtZW50Om5pbCBleHBlY3RlZFJlbW92YWxzOkBbYXR0YWNobWVudC5n
ZXQoKV0gZXhwZWN0ZWRJbnNlcnRpb25zOkBbXV07Cit9CisKK1RFU1QoV0tBdHRhY2htZW50VGVz
dHMsIEluUGxhY2VWaWRlb0F0dGFjaG1lbnRJbnNlcnRpb25XaXRoaW5MaXN0KQoreworICAgIGF1
dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKKyAgICBSZXRhaW5Q
dHI8TlNEYXRhPiB2aWRlb0RhdGEgPSB0ZXN0VmlkZW9EYXRhKCk7CisgICAgUmV0YWluUHRyPF9X
S0F0dGFjaG1lbnQ+IGF0dGFjaG1lbnQ7CisKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4
ZWN1dGVFZGl0Q29tbWFuZDpAIkluc2VydE9yZGVyZWRMaXN0IiBhcmd1bWVudDpuaWxdOworICAg
IHsKKyAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2Vi
Vmlldy5nZXQoKSk7CisgICAgICAgIGF0dGFjaG1lbnQgPSByZXRhaW5QdHIoW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJ0ZXN0Lm1wNCIgY29udGVu
dFR5cGU6QCJ2aWRlby9tcDQiIGRhdGE6dmlkZW9EYXRhLmdldCgpIG9wdGlvbnM6ZGlzcGxheU9w
dGlvbnNXaXRoTW9kZShfV0tBdHRhY2htZW50RGlzcGxheU1vZGVJblBsYWNlKV0pOworICAgICAg
ICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbYXR0YWNobWVudC5nZXQo
KV0pOworICAgIH0KKyAgICBbd2ViVmlldyB3YWl0Rm9yQXR0YWNobWVudEVsZW1lbnRTaXplVG9C
ZWNvbWU6Q0dTaXplTWFrZSgzMjAsIDI0MCldOworCisgICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRl
c0FmdGVyQ29tbWFuZDpAIkRlbGV0ZUJhY2t3YXJkIiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVk
UmVtb3ZhbHM6QFthdHRhY2htZW50LmdldCgpXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKKyAg
ICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiVW5kbyIgd2l0aEFyZ3VtZW50
Om5pbCBleHBlY3RlZFJlbW92YWxzOkBbXSBleHBlY3RlZEluc2VydGlvbnM6QFthdHRhY2htZW50
LmdldCgpXV07CisgICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpAIkluc2Vy
dE9yZGVyZWRMaXN0IiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6QFtdIGV4cGVj
dGVkSW5zZXJ0aW9uczpAW11dOworCisgICAgW3dlYlZpZXcgd2FpdEZvckF0dGFjaG1lbnRFbGVt
ZW50U2l6ZVRvQmVjb21lOkNHU2l6ZU1ha2UoMzIwLCAyNDApXTsKKyAgICBbYXR0YWNobWVudCBl
eHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTp2aWRlb0RhdGEuZ2V0KCldOworfQorCitURVNUKFdLQXR0
YWNobWVudFRlc3RzLCBJblBsYWNlUERGQXR0YWNobWVudEN1dEFuZFBhc3RlKQoreworICAgIGF1
dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKKyAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBwZGZEYXRhID0gdGVzdFBERkRhdGEoKTsKKyAgICBSZXRhaW5QdHI8X1dLQXR0
YWNobWVudD4gYXR0YWNobWVudDsKKyAgICB7CisgICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBk
YXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOworICAgICAgICBhdHRhY2htZW50
ID0gcmV0YWluUHRyKFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZp
bGVuYW1lOkAidGVzdC5wZGYiIGNvbnRlbnRUeXBlOkAiYXBwbGljYXRpb24vcGRmIiBkYXRhOnBk
ZkRhdGEuZ2V0KCkgb3B0aW9uczpkaXNwbGF5T3B0aW9uc1dpdGhNb2RlKF9XS0F0dGFjaG1lbnRE
aXNwbGF5TW9kZUluUGxhY2UpXSk7CisgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRV
cGRhdGVzKEBbXSwgQFthdHRhY2htZW50LmdldCgpXSk7CisgICAgICAgIFt3ZWJWaWV3IHdhaXRG
b3JBdHRhY2htZW50RWxlbWVudFNpemVUb0JlY29tZTpDR1NpemVNYWtlKDEzMCwgMjkpXTsKKyAg
ICB9CisKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIlNl
bGVjdEFsbCIgYXJndW1lbnQ6bmlsXTsKKyAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJD
b21tYW5kOkAiQ3V0IiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6QFthdHRhY2ht
ZW50LmdldCgpXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKKworICAgIFt3ZWJWaWV3IGV4cGVj
dFVwZGF0ZXNBZnRlckNvbW1hbmQ6QCJQYXN0ZSIgd2l0aEFyZ3VtZW50Om5pbCBleHBlY3RlZFJl
bW92YWxzOkBbXSBleHBlY3RlZEluc2VydGlvbnM6QFthdHRhY2htZW50LmdldCgpXV07CisgICAg
W3dlYlZpZXcgd2FpdEZvckF0dGFjaG1lbnRFbGVtZW50U2l6ZVRvQmVjb21lOkNHU2l6ZU1ha2Uo
MTMwLCAyOSldOworICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOnBkZkRh
dGEuZ2V0KCldOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAv
LyBXS19BUElfRU5BQkxFRAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>