<?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>218498</bug_id>
          
          <creation_ts>2020-11-03 03:30:47 -0800</creation_ts>
          <short_desc>Make functional WebRTC encoders in GPUProcess</short_desc>
          <delta_ts>2020-11-04 10:28:24 -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>WebRTC</component>
          <version>WebKit Local 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>
          <dependson>218445</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1703910</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-03 03:30:47 -0800</bug_when>
    <thetext>Make functional WebRTC encoders in GPUProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703955</commentid>
    <comment_count>1</comment_count>
      <attachid>413052</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-03 05:34:34 -0800</bug_when>
    <thetext>Created attachment 413052
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704026</commentid>
    <comment_count>2</comment_count>
      <attachid>413052</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-11-03 09:11:17 -0800</bug_when>
    <thetext>Comment on attachment 413052
Patch

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

&gt; Source/ThirdParty/libwebrtc/ChangeLog:8
&gt; +        Add support for a remote encoder and remote factory that will first try to create a  remote encoder and use an in process encoder otherwise.

Nit: extra space between &quot;a&quot; and &quot;remote&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704347</commentid>
    <comment_count>3</comment_count>
      <attachid>413146</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-04 01:22:00 -0800</bug_when>
    <thetext>Created attachment 413146
Fix iOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704480</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-04 10:27:11 -0800</bug_when>
    <thetext>Committed r269371: &lt;https://trac.webkit.org/changeset/269371&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413146.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704482</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-04 10:28:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/71041954&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413052</attachid>
            <date>2020-11-03 05:34:34 -0800</date>
            <delta_ts>2020-11-04 01:21:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218498-20201103143431.patch</filename>
            <type>text/plain</type>
            <size>47817</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBiNWU5ZjllZWFjM2ViZGQ4YWY5ZWYxMzdhMDYxYWU1MGUyNTgwMmQ1Li44YzBj
ZGEwMDI3MjhjZDVlZjQ3NmVjYzM4MzA5YjgwMWUyYjI3OGIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0xMS0wMyAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBmdW5jdGlvbmFsIFdlYlJU
QyBlbmNvZGVycyBpbiBHUFVQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTg0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgYSByZW1vdGUgZW5jb2RlciBhbmQgcmVt
b3RlIGZhY3RvcnkgdGhhdCB3aWxsIGZpcnN0IHRyeSB0byBjcmVhdGUgYSAgcmVtb3RlIGVuY29k
ZXIgYW5kIHVzZSBhbiBpbiBwcm9jZXNzIGVuY29kZXIgb3RoZXJ3aXNlLgorICAgICAgICBUaGlz
IGlzIHNpbWlsYXIgdG8gd2hhdCB3YXMgZG9uZSBmb3IgcmVtb3RlIHZpZGVvIGRlY29kZXJzLgor
CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHA6CisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHA6CisgICAgICAgICogQ29uZmlndXJh
dGlvbnMvbGlid2VicnRjLm1hYy5leHA6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdEVuY29kZXIuaDoKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1l
SW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhl
YWRlcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0UlRQRnJhZ21lbnRh
dGlvbkhlYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgRml4IGlzc3VlcyBpbiByb3V0aW5lcyB0byBl
bmNvZGUvZGVjb2RlIGZyYW1lL2ZyYWdtZW50YXRpb24gaGVhZGVycy4KKyAgICAgICAgKiBTb3Vy
Y2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5tbToKKyAgICAgICAgKC1bV0tfUlRD
TG9jYWxWaWRlb0gyNjRIMjY1RW5jb2RlciBpbml0V2l0aENvZGVjSW5mbzpdKToKKyAgICAgICAg
KC1bV0tfUlRDTG9jYWxWaWRlb0gyNjRIMjY1RW5jb2RlciBjb2RlY1R5cGVdKToKKyAgICAgICAg
KHdlYnJ0Yzo6UmVtb3RlVmlkZW9FbmNvZGVyRmFjdG9yeTo6UmVtb3RlVmlkZW9FbmNvZGVyRmFj
dG9yeSk6CisgICAgICAgICh3ZWJydGM6OlJlbW90ZVZpZGVvRW5jb2RlckZhY3Rvcnk6OkNyZWF0
ZVZpZGVvRW5jb2Rlcik6CisgICAgICAgICh3ZWJydGM6OmNyZWF0ZVdlYktpdEVuY29kZXJGYWN0
b3J5KToKKyAgICAgICAgKHdlYnJ0Yzo6UmVtb3RlVmlkZW9FbmNvZGVyOjp+UmVtb3RlVmlkZW9F
bmNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6UmVtb3RlVmlkZW9FbmNvZGVyOjpSZWxlYXNlKToK
KyAgICAgICAgKHdlYnJ0Yzo6ZW5jb2RlclZpZGVvVGFza0NvbXBsZXRlKToKKyAgICAgICAgKHdl
YnJ0Yzo6aW5pdGlhbGl6ZUxvY2FsRW5jb2Rlcik6CisgICAgICAgICh3ZWJydGM6OmVuY29kZUxv
Y2FsRW5jb2RlckZyYW1lKToKKwogMjAyMC0xMS0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFdlYlJUQyBWUDkgZGVjb2RlciBp
biBHUFUgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDAxNjgyYWY5M2ZjNzZmODZjODZjYWUwNjE4M2Yz
MDU5ZTliOTkzYTkuLmU4YWI2MjM2YjE3OTdjYTQ5NzMzYTAxMmU1YTZkNzllOGNiNDFhYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0xMS0wMyAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBmdW5jdGlvbmFsIFdlYlJUQyBlbmNvZGVy
cyBpbiBHUFVQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTg0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFeHBvcnRpbmcgbmVjZXNzYXJ5IG1ldGhvZHMgYW5kIGFsbG93IHRvIG92ZXJyaWRl
IGNyZWF0aW9uIG9mIGVuY29kZXIgZmFjdG9yeSBpbiBXZWJLaXQuCisgICAgICAgIENvdmVyZWQg
YnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25m
b3JtZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlckNvY29hLmg6CisKIDIwMjAtMTEtMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IGxvdyBsYXRlbmN5IEgyNjQgZW5jb2RlciBp
biBHUFVQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY5ZWZkM2U0YWQwYjBmM2UwZWVlZDJhM2Q4ODUwYTAz
ZjY4NDIzODguLjMxNDJhYTI2Yjc2ZjIwMTBjZWY0M2U5MGZlYzY1NTc2ZmZmNDYwN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjAtMTEtMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgZnVuY3Rpb25hbCBXZWJSVEMgZW5jb2RlcnMgaW4g
R1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE4NDk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIGNvZGUgYWNjb3JkaW5nIGxpYndlYnJ0YyBjaGFuZ2VzLgorICAgICAgICBBZGQg
bWlzc2luZyBzdXBwb3J0IGZvciB0aW1lc3RhbXAuCisgICAgICAgIEFsc28sIGluIGNhc2Ugb2Yg
c2FtcGxlcyB0aGF0IGFyZSBub24gSU8gU3VyZmFjZSBhbmQgbm90IEJHUkEsIGRvIGEgY29udmVy
c2lvbiB0byBCR1JBIGFuZCB0aGVuIGNyZWF0ZSBhbiBJTyBzdXJmYWNlIGZyb20gaXQuCisgICAg
ICAgIFRoaXMgYWxsb3dzIHN1cHBvcnRpbmcgc2VuZGluZyBibGFjayBmcmFtZXMgZ2VuZXJhdGVk
IGluIGNhc2Ugb2YgbXV0ZWQgdHJhY2tzLgorCisgICAgICAgIENyZWF0ZSBhIHJlbW90ZSBmYWN0
b3J5IGluIExpYldlYlJUQ1Byb3ZpZGVyIGJhc2VkIG9uIHdoZXRoZXIgdXNpbmcgZ3B1IHByb2Nl
c3Mgb3Igbm90LgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3NQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmVuY29k
ZUZyYW1lKToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVWaWRlb0RlY29k
ZXIpOgorICAgICAgICAoV2ViS2l0OjplbmNvZGVWaWRlb0ZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6dG9XZWJSVENDb2RlY1R5cGUpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6
OmNyZWF0ZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmVuY29k
ZUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpjb21wbGV0ZWRFbmNv
ZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubW06IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmNvbnZlcnRUb0JHUkEpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlRW5jb2RlckZhY3Rv
cnkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXIuaDoKKwogMjAyMC0xMS0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFdlYlJUQyBWUDkgZGVjb2RlciBpbiBHUFUgcHJvY2Vz
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25z
L2xpYndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IDAwMDk5YWIyZjRiZWI4NTNhODQ5ODYzNmJh
ZGJhYWQyODU2ZTQ5NGEuLjMxNDJiN2JhYzkxNjEzNDAzYWEzN2EyNmQzNTk3YTNkMTBkY2MwYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9s
aWJ3ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTI0OCw3ICsyNDgsNyBAQCBfX1pONndlYnJ0
YzE5c2V0RGVjb2RlckZyYW1lU2l6ZUVQdnR0CiBfX1pONndlYnJ0YzE4UnRwQ29kZWNDYXBhYmls
aXR5QzFFdgogX19aTjZ3ZWJydGMyMlJUUEZyYWdtZW50YXRpb25IZWFkZXJEMUV2CiBfX1pONndl
YnJ0YzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckMxRXYKLV9fWk42d2VicnRjMThSZW1vdGVWaWRl
b0VuY29kZXIxNGVuY29kZUNvbXBsZXRlRVB2UGhtUktOU18yMldlYktpdEVuY29kZWRGcmFtZUlu
Zm9FUEtOU18yMlJUUEZyYWdtZW50YXRpb25IZWFkZXJFCitfX1pONndlYnJ0YzI0ZW5jb2RlclZp
ZGVvVGFza0NvbXBsZXRlRVB2TlNfMTRWaWRlb0NvZGVjVHlwZUVQaG1SS05TXzIyV2ViS2l0RW5j
b2RlZEZyYW1lSW5mb0VQS05TXzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckUKIF9fWk42d2VicnRj
MjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyNlJlc2l6ZUVtCiBfX1pONndlYnJ0YzI0c2V0VmlkZW9F
bmNvZGVyQ2FsbGJhY2tzRVBGUHZSS05TXzE0U2RwVmlkZW9Gb3JtYXRFRVBGaVMwX0VQRmlTMF9S
S05TXzEwVmlkZW9Db2RlY0VFUEZpUzBfUktOU18xMFZpZGVvRnJhbWVFYkVQRmlTMF9TMF9FUEZ2
UzBfUktOU18xMlZpZGVvRW5jb2RlcjIxUmF0ZUNvbnRyb2xQYXJhbWV0ZXJzRUUKIF9fWk42d2Vi
cnRjMjBzZXRMb2NhbEVuY29kZXJSYXRlc0VQdmpqCkBAIC0yNTgsNyArMjU4LDcgQEAgX19aTjZ3
ZWJydGMxNFNkcFZpZGVvRm9ybWF0QzFFUktOU3QzX18xMTJiYXNpY19zdHJpbmdJY05TMV8xMWNo
YXJfdHJhaXRzSWNFRU5TMV8KIF9fWk42d2VicnRjMThjcmVhdGVMb2NhbEVuY29kZXJFUktOU18x
NFNkcFZpZGVvRm9ybWF0RVUxM2Jsb2NrX3BvaW50ZXJGdlBLaG1SS05TXzIyV2ViS2l0RW5jb2Rl
ZEZyYW1lSW5mb0VQTlNfMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyRUUKIF9fWk42d2VicnRjMTRT
ZHBWaWRlb0Zvcm1hdEQxRXYKIF9fWk42d2VicnRjMTlyZWxlYXNlTG9jYWxFbmNvZGVyRVB2Ci1f
X1pONndlYnJ0YzIzZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWVFUHZQMTBfX0NWQnVmZmVyeE5TXzEz
VmlkZW9Sb3RhdGlvbkViCitfX1pONndlYnJ0YzIzZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWVFUHZQ
MTBfX0NWQnVmZmVyeGpOU18xM1ZpZGVvUm90YXRpb25FYgogX19aTjNydGMxN0NvcHlPbldyaXRl
QnVmZmVyMjRVbnNoYXJlQW5kRW5zdXJlQ2FwYWNpdHlFbQogX19aTjNydGM2VGhyZWFkMTRJbnZv
a2VJbnRlcm5hbEVSS05TXzhMb2NhdGlvbkVOU18xMkZ1bmN0aW9uVmlld0lGdnZFRUUKIF9fWk42
d2VicnRjMThSdHBTZW5kZXJJbnRlcmZhY2UzOFNldEVuY29kZXJUb1BhY2tldGl6ZXJGcmFtZVRy
YW5zZm9ybWVyRU4zcnRjMTNzY29wZWRfcmVmcHRySU5TXzI1RnJhbWVUcmFuc2Zvcm1lckludGVy
ZmFjZUVFRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCmluZGV4IDAwMDk5YWIyZjRiZWI4
NTNhODQ5ODYzNmJhZGJhYWQyODU2ZTQ5NGEuLjMxNDJiN2JhYzkxNjEzNDAzYWEzN2EyNmQzNTk3
YTNkMTBkY2MwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKQEAgLTI0OCw3ICsy
NDgsNyBAQCBfX1pONndlYnJ0YzE5c2V0RGVjb2RlckZyYW1lU2l6ZUVQdnR0CiBfX1pONndlYnJ0
YzE4UnRwQ29kZWNDYXBhYmlsaXR5QzFFdgogX19aTjZ3ZWJydGMyMlJUUEZyYWdtZW50YXRpb25I
ZWFkZXJEMUV2CiBfX1pONndlYnJ0YzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckMxRXYKLV9fWk42
d2VicnRjMThSZW1vdGVWaWRlb0VuY29kZXIxNGVuY29kZUNvbXBsZXRlRVB2UGhtUktOU18yMldl
YktpdEVuY29kZWRGcmFtZUluZm9FUEtOU18yMlJUUEZyYWdtZW50YXRpb25IZWFkZXJFCitfX1pO
NndlYnJ0YzI0ZW5jb2RlclZpZGVvVGFza0NvbXBsZXRlRVB2TlNfMTRWaWRlb0NvZGVjVHlwZUVQ
aG1SS05TXzIyV2ViS2l0RW5jb2RlZEZyYW1lSW5mb0VQS05TXzIyUlRQRnJhZ21lbnRhdGlvbkhl
YWRlckUKIF9fWk42d2VicnRjMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyNlJlc2l6ZUVtCiBfX1pO
NndlYnJ0YzI0c2V0VmlkZW9FbmNvZGVyQ2FsbGJhY2tzRVBGUHZSS05TXzE0U2RwVmlkZW9Gb3Jt
YXRFRVBGaVMwX0VQRmlTMF9SS05TXzEwVmlkZW9Db2RlY0VFUEZpUzBfUktOU18xMFZpZGVvRnJh
bWVFYkVQRmlTMF9TMF9FUEZ2UzBfUktOU18xMlZpZGVvRW5jb2RlcjIxUmF0ZUNvbnRyb2xQYXJh
bWV0ZXJzRUUKIF9fWk42d2VicnRjMjBzZXRMb2NhbEVuY29kZXJSYXRlc0VQdmpqCkBAIC0yNTgs
NyArMjU4LDcgQEAgX19aTjZ3ZWJydGMxNFNkcFZpZGVvRm9ybWF0QzFFUktOU3QzX18xMTJiYXNp
Y19zdHJpbmdJY05TMV8xMWNoYXJfdHJhaXRzSWNFRU5TMV8KIF9fWk42d2VicnRjMThjcmVhdGVM
b2NhbEVuY29kZXJFUktOU18xNFNkcFZpZGVvRm9ybWF0RVUxM2Jsb2NrX3BvaW50ZXJGdlBLaG1S
S05TXzIyV2ViS2l0RW5jb2RlZEZyYW1lSW5mb0VQTlNfMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVy
RUUKIF9fWk42d2VicnRjMTRTZHBWaWRlb0Zvcm1hdEQxRXYKIF9fWk42d2VicnRjMTlyZWxlYXNl
TG9jYWxFbmNvZGVyRVB2Ci1fX1pONndlYnJ0YzIzZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWVFUHZQ
MTBfX0NWQnVmZmVyeE5TXzEzVmlkZW9Sb3RhdGlvbkViCitfX1pONndlYnJ0YzIzZW5jb2RlTG9j
YWxFbmNvZGVyRnJhbWVFUHZQMTBfX0NWQnVmZmVyeGpOU18xM1ZpZGVvUm90YXRpb25FYgogX19a
TjNydGMxN0NvcHlPbldyaXRlQnVmZmVyMjRVbnNoYXJlQW5kRW5zdXJlQ2FwYWNpdHlFbQogX19a
TjNydGM2VGhyZWFkMTRJbnZva2VJbnRlcm5hbEVSS05TXzhMb2NhdGlvbkVOU18xMkZ1bmN0aW9u
Vmlld0lGdnZFRUUKIF9fWk42d2VicnRjMThSdHBTZW5kZXJJbnRlcmZhY2UzOFNldEVuY29kZXJU
b1BhY2tldGl6ZXJGcmFtZVRyYW5zZm9ybWVyRU4zcnRjMTNzY29wZWRfcmVmcHRySU5TXzI1RnJh
bWVUcmFuc2Zvcm1lckludGVyZmFjZUVFRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCmluZGV4IDAw
MDk5YWIyZjRiZWI4NTNhODQ5ODYzNmJhZGJhYWQyODU2ZTQ5NGEuLjMxNDJiN2JhYzkxNjEzNDAz
YWEzN2EyNmQzNTk3YTNkMTBkY2MwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKQEAgLTI0
OCw3ICsyNDgsNyBAQCBfX1pONndlYnJ0YzE5c2V0RGVjb2RlckZyYW1lU2l6ZUVQdnR0CiBfX1pO
NndlYnJ0YzE4UnRwQ29kZWNDYXBhYmlsaXR5QzFFdgogX19aTjZ3ZWJydGMyMlJUUEZyYWdtZW50
YXRpb25IZWFkZXJEMUV2CiBfX1pONndlYnJ0YzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckMxRXYK
LV9fWk42d2VicnRjMThSZW1vdGVWaWRlb0VuY29kZXIxNGVuY29kZUNvbXBsZXRlRVB2UGhtUktO
U18yMldlYktpdEVuY29kZWRGcmFtZUluZm9FUEtOU18yMlJUUEZyYWdtZW50YXRpb25IZWFkZXJF
CitfX1pONndlYnJ0YzI0ZW5jb2RlclZpZGVvVGFza0NvbXBsZXRlRVB2TlNfMTRWaWRlb0NvZGVj
VHlwZUVQaG1SS05TXzIyV2ViS2l0RW5jb2RlZEZyYW1lSW5mb0VQS05TXzIyUlRQRnJhZ21lbnRh
dGlvbkhlYWRlckUKIF9fWk42d2VicnRjMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyNlJlc2l6ZUVt
CiBfX1pONndlYnJ0YzI0c2V0VmlkZW9FbmNvZGVyQ2FsbGJhY2tzRVBGUHZSS05TXzE0U2RwVmlk
ZW9Gb3JtYXRFRVBGaVMwX0VQRmlTMF9SS05TXzEwVmlkZW9Db2RlY0VFUEZpUzBfUktOU18xMFZp
ZGVvRnJhbWVFYkVQRmlTMF9TMF9FUEZ2UzBfUktOU18xMlZpZGVvRW5jb2RlcjIxUmF0ZUNvbnRy
b2xQYXJhbWV0ZXJzRUUKIF9fWk42d2VicnRjMjBzZXRMb2NhbEVuY29kZXJSYXRlc0VQdmpqCkBA
IC0yNTgsNyArMjU4LDcgQEAgX19aTjZ3ZWJydGMxNFNkcFZpZGVvRm9ybWF0QzFFUktOU3QzX18x
MTJiYXNpY19zdHJpbmdJY05TMV8xMWNoYXJfdHJhaXRzSWNFRU5TMV8KIF9fWk42d2VicnRjMThj
cmVhdGVMb2NhbEVuY29kZXJFUktOU18xNFNkcFZpZGVvRm9ybWF0RVUxM2Jsb2NrX3BvaW50ZXJG
dlBLaG1SS05TXzIyV2ViS2l0RW5jb2RlZEZyYW1lSW5mb0VQTlNfMjJSVFBGcmFnbWVudGF0aW9u
SGVhZGVyRUUKIF9fWk42d2VicnRjMTRTZHBWaWRlb0Zvcm1hdEQxRXYKIF9fWk42d2VicnRjMTly
ZWxlYXNlTG9jYWxFbmNvZGVyRVB2Ci1fX1pONndlYnJ0YzIzZW5jb2RlTG9jYWxFbmNvZGVyRnJh
bWVFUHZQMTBfX0NWQnVmZmVyeE5TXzEzVmlkZW9Sb3RhdGlvbkViCitfX1pONndlYnJ0YzIzZW5j
b2RlTG9jYWxFbmNvZGVyRnJhbWVFUHZQMTBfX0NWQnVmZmVyeGpOU18xM1ZpZGVvUm90YXRpb25F
YgogX19aTjNydGMxN0NvcHlPbldyaXRlQnVmZmVyMjRVbnNoYXJlQW5kRW5zdXJlQ2FwYWNpdHlF
bQogX19aTjNydGM2VGhyZWFkMTRJbnZva2VJbnRlcm5hbEVSS05TXzhMb2NhdGlvbkVOU18xMkZ1
bmN0aW9uVmlld0lGdnZFRUUKIF9fWk42d2VicnRjMThSdHBTZW5kZXJJbnRlcmZhY2UzOFNldEVu
Y29kZXJUb1BhY2tldGl6ZXJGcmFtZVRyYW5zZm9ybWVyRU4zcnRjMTNzY29wZWRfcmVmcHRySU5T
XzI1RnJhbWVUcmFuc2Zvcm1lckludGVyZmFjZUVFRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRFbmNvZGVyLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdEVuY29kZXIuaAppbmRleCBiYTI2NjEwNzUxOTEwYjEzMjEzMWZmZTY3Y2FhOTIxMWVjOTUy
N2FkLi5lNzAzZjYyOGEzN2E1MjFmNjlkOTlmMTI1OTFmOTJjNTI4ZDllOTQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdEVuY29kZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIuaApAQCAtODYsMzIgKzg2LDE1IEBAIHByaXZh
dGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6UlRQRnJhZ21lbnRhdGlvbkhlYWRlcj4g
bV9vd25lZEhlYWRlcjsKIH07CiAKLWNsYXNzIFJlbW90ZVZpZGVvRW5jb2RlciBmaW5hbCA6IHB1
YmxpYyB3ZWJydGM6OlZpZGVvRW5jb2RlciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgUmVtb3Rl
VmlkZW9FbmNvZGVyKFdlYktpdFZpZGVvRW5jb2Rlcik7Ci0gICAgflJlbW90ZVZpZGVvRW5jb2Rl
cigpID0gZGVmYXVsdDsKLQotICAgIHN0YXRpYyB2b2lkIGVuY29kZUNvbXBsZXRlKHZvaWQqIGNh
bGxiYWNrLCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgsIGNvbnN0IFdlYktpdEVuY29k
ZWRGcmFtZUluZm8mLCBjb25zdCB3ZWJydGM6OlJUUEZyYWdtZW50YXRpb25IZWFkZXIqKTsKLQot
cHJpdmF0ZToKLSAgICBpbnQzMl90IEluaXRFbmNvZGUoY29uc3QgVmlkZW9Db2RlYyosIGNvbnN0
IFNldHRpbmdzJikgZmluYWw7Ci0gICAgaW50MzJfdCBSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2Fs
bGJhY2soRW5jb2RlZEltYWdlQ2FsbGJhY2sqKSBmaW5hbDsKLSAgICBpbnQzMl90IFJlbGVhc2Uo
KSBmaW5hbDsKLSAgICBpbnQzMl90IEVuY29kZShjb25zdCBWaWRlb0ZyYW1lJiwgY29uc3Qgc3Rk
Ojp2ZWN0b3I8VmlkZW9GcmFtZVR5cGU+KikgZmluYWw7Ci0gICAgdm9pZCBTZXRSYXRlcyhjb25z
dCBSYXRlQ29udHJvbFBhcmFtZXRlcnMmKSBmaW5hbDsKLSAgICBFbmNvZGVySW5mbyBHZXRFbmNv
ZGVySW5mbygpIGNvbnN0IGZpbmFsOwotCi0gICAgV2ViS2l0VmlkZW9FbmNvZGVyIG1faW50ZXJu
YWxFbmNvZGVyOwotfTsKLQogdXNpbmcgTG9jYWxFbmNvZGVyID0gdm9pZCo7CiB1c2luZyBMb2Nh
bEVuY29kZXJDYWxsYmFjayA9IHZvaWQgKF4pKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IHNpemUsIGNvbnN0IHdlYnJ0Yzo6V2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYsIHdlYnJ0Yzo6UlRQ
RnJhZ21lbnRhdGlvbkhlYWRlciopOwogdm9pZCogY3JlYXRlTG9jYWxFbmNvZGVyKGNvbnN0IHdl
YnJ0Yzo6U2RwVmlkZW9Gb3JtYXQmLCBMb2NhbEVuY29kZXJDYWxsYmFjayk7CiB2b2lkIHJlbGVh
c2VMb2NhbEVuY29kZXIoTG9jYWxFbmNvZGVyKTsKIHZvaWQgaW5pdGlhbGl6ZUxvY2FsRW5jb2Rl
cihMb2NhbEVuY29kZXIsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVk
IGludCBzdGFydEJpdHJhdGUsIHVuc2lnbmVkIGludCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBpbnQg
bWluQml0cmF0ZSwgdWludDMyX3QgbWF4RnJhbWVyYXRlKTsKLXZvaWQgZW5jb2RlTG9jYWxFbmNv
ZGVyRnJhbWUoTG9jYWxFbmNvZGVyLCBDVlBpeGVsQnVmZmVyUmVmLCBpbnQ2NF90IHRpbWVTdGFt
cCwgd2VicnRjOjpWaWRlb1JvdGF0aW9uLCBib29sIGlzS2V5ZnJhbWVSZXF1aXJlZCk7Cit2b2lk
IGVuY29kZUxvY2FsRW5jb2RlckZyYW1lKExvY2FsRW5jb2RlciwgQ1ZQaXhlbEJ1ZmZlclJlZiwg
aW50NjRfdCB0aW1lU3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1wLCB3ZWJydGM6OlZpZGVvUm90
YXRpb24sIGJvb2wgaXNLZXlmcmFtZVJlcXVpcmVkKTsKIHZvaWQgc2V0TG9jYWxFbmNvZGVyUmF0
ZXMoTG9jYWxFbmNvZGVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpOwog
dm9pZCBzZXRMb2NhbEVuY29kZXJMb3dMYXRlbmN5KExvY2FsRW5jb2RlciwgYm9vbCBpc0xvd0xh
dGVuY3lFbmFibGVkKTsKK3ZvaWQgZW5jb2RlclZpZGVvVGFza0NvbXBsZXRlKHZvaWQqLCB3ZWJy
dGM6OlZpZGVvQ29kZWNUeXBlLCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgsIGNvbnN0
IFdlYktpdEVuY29kZWRGcmFtZUluZm8mLCBjb25zdCB3ZWJydGM6OlJUUEZyYWdtZW50YXRpb25I
ZWFkZXIqKTsKIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIGJvb2wgV2ViS2l0RW5jb2RlZEZy
YW1lSW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYktpdEVuY29kZWRGcmFtZUluZm8m
IGluZm8pCkBAIC0xMzksMjcgKzEyMiwyMiBAQCBib29sIFdlYktpdEVuY29kZWRGcmFtZUluZm86
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJLaXRFbmNvZGVkRnJhbWVJbmZvJiBpbgogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnRpbWluZy5mbGFncykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby50aW1pbmcuZW5jb2RlX3N0
YXJ0X21zKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShpbmZvLnRpbWluZy5lbmNvZGVfZmluaXNoX21zKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnRpbWluZy5wYWNrZXRpemF0aW9uX2Zpbmlz
aF9tcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aW5mby50aW1pbmcucGFjZXJfZXhpdF9tcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby50aW1pbmcubmV0d29ya190aW1lc3RhbXBfbXMpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8udGlt
aW5nLm5ldHdvcmsyX3RpbWVzdGFtcF9tcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby50aW1pbmcucmVjZWl2ZV9zdGFydF9tcykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8udGltaW5nLnJl
Y2VpdmVfZmluaXNoX21zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC0yMDAsNiArMTc4LDcgQEAgdm9pZCBXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVh
ZGVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8ICEhbV92
YWx1ZTsKICAgICBpZiAoIW1fdmFsdWUpCiAgICAgICAgIHJldHVybjsKKwogICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fdmFsdWUtPlNpemUoKSk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fdmFsdWUtPlNpemUoKTsgKytpKSB7CiAgICAgICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fdmFsdWUtPk9mZnNldChpKSk7CkBAIC0yMTAsMTEg
KzE4OSwxMSBAQCB2b2lkIFdlYktpdFJUUEZyYWdtZW50YXRpb25IZWFkZXI6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIGJvb2wgV2ViS2l0
UlRQRnJhZ21lbnRhdGlvbkhlYWRlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYktpdFJU
UEZyYWdtZW50YXRpb25IZWFkZXImIGhlYWRlcikKIHsKLSAgICBib29sIGlzTnVsbDsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGlzTnVsbCkpCisgICAgYm9vbCBoYXNWYWx1ZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAot
ICAgIGlmIChpc051bGwpIHsKKyAgICBpZiAoIWhhc1ZhbHVlKSB7CiAgICAgICAgIGhlYWRlci5t
X3ZhbHVlID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjIzLDIx
ICsyMDIsMjIgQEAgYm9vbCBXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgV2ViS2l0UlRQRnJhZ21lbnRhdGkKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBoZWFkZXIubV9vd25lZEhl
YWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8d2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyPigp
OwotICAgIGhlYWRlci5tX3ZhbHVlID0gaGVhZGVyLm1fb3duZWRIZWFkZXIuZ2V0KCk7Ci0KLSAg
ICBoZWFkZXIubV92YWx1ZS0+VmVyaWZ5QW5kQWxsb2NhdGVGcmFnbWVudGF0aW9uSGVhZGVyKHNp
emUpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaGVhZGVyLm1fdmFsdWUtPlNpemUoKTsg
KytpKSB7CisgICAgYXV0byBvd25lZEhlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8d2VicnRjOjpS
VFBGcmFnbWVudGF0aW9uSGVhZGVyPigpOworICAgIG93bmVkSGVhZGVyLT5WZXJpZnlBbmRBbGxv
Y2F0ZUZyYWdtZW50YXRpb25IZWFkZXIoc2l6ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0LCBsZW5ndGg7CiAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUob2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgICAgIGhlYWRlci5tX3ZhbHVlLT5mcmFnbWVudGF0aW9uT2Zmc2V0W2ld
ID0gb2Zmc2V0OwotICAgICAgICBoZWFkZXIubV92YWx1ZS0+ZnJhZ21lbnRhdGlvbkxlbmd0aFtp
XSA9IGxlbmd0aDsKKyAgICAgICAgb3duZWRIZWFkZXItPmZyYWdtZW50YXRpb25PZmZzZXRbaV0g
PSBvZmZzZXQ7CisgICAgICAgIG93bmVkSGVhZGVyLT5mcmFnbWVudGF0aW9uTGVuZ3RoW2ldID0g
bGVuZ3RoOwogICAgIH0KIAorICAgIGhlYWRlci5tX293bmVkSGVhZGVyID0gc3RkOjptb3ZlKG93
bmVkSGVhZGVyKTsKKyAgICBoZWFkZXIubV92YWx1ZSA9IGhlYWRlci5tX293bmVkSGVhZGVyLmdl
dCgpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5tbSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2Vi
S2l0RW5jb2Rlci5tbQppbmRleCA1ZjUyY2RkMzU1MDNiODdkNGIwNDNkMzczOTk3Njc3NjlhZWJl
YzkzLi5kOWNmN2E1ZGU5YWZjZjFmZWM2N2ZkNDFmMDlkYzNlZDUzZjI1ZjAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdEVuY29kZXIubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRFbmNvZGVyLm1tCkBAIC00Miw2ICs0Miw3IEBACiAKIEBp
bnRlcmZhY2UgV0tfUlRDTG9jYWxWaWRlb0gyNjRIMjY1RW5jb2RlciA6IE5TT2JqZWN0CiAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlY0luZm86KFJUQ1ZpZGVvQ29kZWNJbmZvKiljb2RlY0lu
Zm87CistICh3ZWJydGM6OlZpZGVvQ29kZWNUeXBlKWNvZGVjVHlwZTsKIC0gKHZvaWQpc2V0Q2Fs
bGJhY2s6KFJUQ1ZpZGVvRW5jb2RlckNhbGxiYWNrKWNhbGxiYWNrOwogLSAoTlNJbnRlZ2VyKXJl
bGVhc2VFbmNvZGVyOwogLSAoTlNJbnRlZ2VyKXN0YXJ0RW5jb2RlV2l0aFNldHRpbmdzOihSVENW
aWRlb0VuY29kZXJTZXR0aW5ncyAqKXNldHRpbmdzIG51bWJlck9mQ29yZXM6KGludCludW1iZXJP
ZkNvcmVzOwpAQCAtNTgsMTMgKzU5LDIwIEBACiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2Rl
Y0luZm86KFJUQ1ZpZGVvQ29kZWNJbmZvKiljb2RlY0luZm8gewogICAgIGlmIChzZWxmID0gW3N1
cGVyIGluaXRdKSB7CiAgICAgICAgIGlmIChbY29kZWNJbmZvLm5hbWUgaXNFcXVhbFRvU3RyaW5n
OkAiSDI2NSJdKQotICAgICAgICAgICAgbV9oMjY1RW5jb2RlciA9IFtbUlRDVmlkZW9FbmNvZGVy
SDI2NSBhbGxvY10gaW5pdF07CisgICAgICAgICAgICBtX2gyNjVFbmNvZGVyID0gW1tSVENWaWRl
b0VuY29kZXJIMjY1IGFsbG9jXSBpbml0V2l0aENvZGVjSW5mbzpjb2RlY0luZm9dOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX2gyNjRFbmNvZGVyID0gW1tSVENWaWRlb0VuY29kZXJIMjY0
IGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIG1faDI2NEVuY29kZXIgPSBbW1JUQ1ZpZGVvRW5j
b2RlckgyNjQgYWxsb2NdIGluaXRXaXRoQ29kZWNJbmZvOmNvZGVjSW5mb107CiAgICAgfQogICAg
IHJldHVybiBzZWxmOwogfQogCistICh3ZWJydGM6OlZpZGVvQ29kZWNUeXBlKWNvZGVjVHlwZQor
eworICAgIGlmIChtX2gyNjRFbmNvZGVyKQorICAgICAgICByZXR1cm4gd2VicnRjOjprVmlkZW9D
b2RlY0gyNjQ7CisgICAgcmV0dXJuIHdlYnJ0Yzo6a1ZpZGVvQ29kZWNIMjY1OworfQorCiAtICh2
b2lkKXNldENhbGxiYWNrOihSVENWaWRlb0VuY29kZXJDYWxsYmFjayljYWxsYmFjayB7CiAgICAg
aWYgKG1faDI2NEVuY29kZXIpCiAgICAgICAgIHJldHVybiBbbV9oMjY0RW5jb2RlciBzZXRDYWxs
YmFjazpjYWxsYmFja107CkBAIC0xMTcsMTkgKzEyNSw2IEBAIHByaXZhdGU6CiAgICAgY29uc3Qg
c3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+IG1faW50ZXJuYWxFbmNvZGVyRmFj
dG9yeTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+
IGNyZWF0ZVdlYktpdEVuY29kZXJGYWN0b3J5KFdlYktpdEgyNjUgc3VwcG9ydHNIMjY1LCBXZWJL
aXRWUDkgc3VwcG9ydHNWUDksIFdlYktpdEgyNjRMb3dMYXRlbmN5IHVzZUgyNjRMb3dMYXRlbmN5
KQotewotI2lmIEVOQUJMRV9WQ1BfRU5DT0RFUiB8fCBFTkFCTEVfVkNQX1ZUQl9FTkNPREVSCi0g
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VGbGFnLCBbXSB7Ci0gICAgICAgIHdlYnJ0Yzo6VlBNb2R1bGVJbml0aWFsaXplKCk7Ci0gICAg
fSk7Ci0jZW5kaWYKLQotICAgIGF1dG8gaW50ZXJuYWxGYWN0b3J5ID0gT2JqQ1RvTmF0aXZlVmlk
ZW9FbmNvZGVyRmFjdG9yeShbW1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5IGFsbG9jXSBp
bml0V2l0aEgyNjU6IHN1cHBvcnRzSDI2NSA9PSBXZWJLaXRIMjY1OjpPbiB2cDk6c3VwcG9ydHNW
UDkgPT0gV2ViS2l0VlA5OjpPbiBsb3dMYXRlbmN5SDI2NDp1c2VIMjY0TG93TGF0ZW5jeSA9PSBX
ZWJLaXRIMjY0TG93TGF0ZW5jeTo6T25dKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxW
aWRlb0VuY29kZXJGYWN0b3J5V2l0aFNpbXVsY2FzdD4oc3RkOjptb3ZlKGludGVybmFsRmFjdG9y
eSkpOwotfQotCiBzdGF0aWMgYm9vbCBoMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZCA9IHRydWU7
CiB2b2lkIHNldEgyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkKGJvb2wgYWxsb3dlZCkKIHsKQEAg
LTE3MSwxMSArMTY2LDc5IEBAIHZvaWQgc2V0VmlkZW9FbmNvZGVyQ2FsbGJhY2tzKFZpZGVvRW5j
b2RlckNyZWF0ZUNhbGxiYWNrIGNyZWF0ZUNhbGxiYWNrLCBWaWRlb0VuCiAgICAgY2FsbGJhY2tz
LnNldFJhdGVzQ2FsbGJhY2sgPSBzZXRSYXRlc0NhbGxiYWNrOwogfQogCitjbGFzcyBSZW1vdGVW
aWRlb0VuY29kZXIgZmluYWwgOiBwdWJsaWMgd2VicnRjOjpWaWRlb0VuY29kZXIgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IFJlbW90ZVZpZGVvRW5jb2RlcihXZWJLaXRWaWRlb0VuY29kZXIpOwor
ICAgIH5SZW1vdGVWaWRlb0VuY29kZXIoKTsKKworcHJpdmF0ZToKKyAgICBpbnQzMl90IEluaXRF
bmNvZGUoY29uc3QgVmlkZW9Db2RlYyosIGNvbnN0IFNldHRpbmdzJikgZmluYWw7CisgICAgaW50
MzJfdCBSZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2soRW5jb2RlZEltYWdlQ2FsbGJhY2sq
KSBmaW5hbDsKKyAgICBpbnQzMl90IFJlbGVhc2UoKSBmaW5hbDsKKyAgICBpbnQzMl90IEVuY29k
ZShjb25zdCBWaWRlb0ZyYW1lJiwgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9GcmFtZVR5cGU+Kikg
ZmluYWw7CisgICAgdm9pZCBTZXRSYXRlcyhjb25zdCBSYXRlQ29udHJvbFBhcmFtZXRlcnMmKSBm
aW5hbDsKKyAgICBFbmNvZGVySW5mbyBHZXRFbmNvZGVySW5mbygpIGNvbnN0IGZpbmFsOworCisg
ICAgV2ViS2l0VmlkZW9FbmNvZGVyIG1faW50ZXJuYWxFbmNvZGVyOworfTsKKworY2xhc3MgUmVt
b3RlVmlkZW9FbmNvZGVyRmFjdG9yeSBmaW5hbCA6IHB1YmxpYyBWaWRlb0VuY29kZXJGYWN0b3J5
IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZW1vdGVWaWRlb0VuY29kZXJGYWN0b3J5KHN0ZDo6
dW5pcXVlX3B0cjxWaWRlb0VuY29kZXJGYWN0b3J5PiYmKTsKKyAgICB+UmVtb3RlVmlkZW9FbmNv
ZGVyRmFjdG9yeSgpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBWaWRlb0VuY29kZXJGYWN0
b3J5OjpDb2RlY0luZm8gUXVlcnlWaWRlb0VuY29kZXIoY29uc3QgU2RwVmlkZW9Gb3JtYXQmIGZv
cm1hdCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbnRlcm5hbEZhY3RvcnktPlF1ZXJ5VmlkZW9F
bmNvZGVyKGZvcm1hdCk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyPiBDcmVh
dGVWaWRlb0VuY29kZXIoY29uc3QgU2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCkgZmluYWw7CisgICAg
c3RkOjp2ZWN0b3I8U2RwVmlkZW9Gb3JtYXQ+IEdldFN1cHBvcnRlZEZvcm1hdHMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2ludGVybmFsRmFjdG9yeS0+R2V0U3VwcG9ydGVkRm9ybWF0cygpOyB9
CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4gbV9pbnRlcm5hbEZh
Y3Rvcnk7Cit9OworCitSZW1vdGVWaWRlb0VuY29kZXJGYWN0b3J5OjpSZW1vdGVWaWRlb0VuY29k
ZXJGYWN0b3J5KHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXJGYWN0b3J5PiYmIGZhY3Rvcnkp
CisgICAgOiBtX2ludGVybmFsRmFjdG9yeShzdGQ6Om1vdmUoZmFjdG9yeSkpCit7Cit9CisKK3N0
ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXI+IFJlbW90ZVZpZGVvRW5jb2RlckZhY3Rvcnk6OkNy
ZWF0ZVZpZGVvRW5jb2Rlcihjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0KQoreworICAgIGlm
ICghdmlkZW9FbmNvZGVyQ2FsbGJhY2tzKCkuY3JlYXRlQ2FsbGJhY2spCisgICAgICAgIHJldHVy
biBtX2ludGVybmFsRmFjdG9yeS0+Q3JlYXRlVmlkZW9FbmNvZGVyKGZvcm1hdCk7CisKKyAgICBh
dXRvIGludGVybmFsRW5jb2RlciA9IHZpZGVvRW5jb2RlckNhbGxiYWNrcygpLmNyZWF0ZUNhbGxi
YWNrKGZvcm1hdCk7CisgICAgaWYgKCFpbnRlcm5hbEVuY29kZXIpCisgICAgICAgIHJldHVybiBt
X2ludGVybmFsRmFjdG9yeS0+Q3JlYXRlVmlkZW9FbmNvZGVyKGZvcm1hdCk7CisKKyAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVWaWRlb0VuY29kZXI+KGludGVybmFsRW5jb2Rlcik7
Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+IGNyZWF0
ZVdlYktpdEVuY29kZXJGYWN0b3J5KFdlYktpdEgyNjUgc3VwcG9ydHNIMjY1LCBXZWJLaXRWUDkg
c3VwcG9ydHNWUDksIFdlYktpdEgyNjRMb3dMYXRlbmN5IHVzZUgyNjRMb3dMYXRlbmN5KQorewor
I2lmIEVOQUJMRV9WQ1BfRU5DT0RFUiB8fCBFTkFCTEVfVkNQX1ZUQl9FTkNPREVSCisgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7CisgICAgICAgIHdlYnJ0Yzo6VlBNb2R1bGVJbml0aWFsaXplKCk7CisgICAgfSk7Cisj
ZW5kaWYKKworICAgIGF1dG8gaW50ZXJuYWxGYWN0b3J5ID0gT2JqQ1RvTmF0aXZlVmlkZW9FbmNv
ZGVyRmFjdG9yeShbW1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5IGFsbG9jXSBpbml0V2l0
aEgyNjU6IHN1cHBvcnRzSDI2NSA9PSBXZWJLaXRIMjY1OjpPbiB2cDk6c3VwcG9ydHNWUDkgPT0g
V2ViS2l0VlA5OjpPbiBsb3dMYXRlbmN5SDI2NDp1c2VIMjY0TG93TGF0ZW5jeSA9PSBXZWJLaXRI
MjY0TG93TGF0ZW5jeTo6T25dKTsKKworICAgIGlmICh2aWRlb0VuY29kZXJDYWxsYmFja3MoKS5j
cmVhdGVDYWxsYmFjaykKKyAgICAgICAgaW50ZXJuYWxGYWN0b3J5ID0gc3RkOjptYWtlX3VuaXF1
ZTxSZW1vdGVWaWRlb0VuY29kZXJGYWN0b3J5PihzdGQ6Om1vdmUoaW50ZXJuYWxGYWN0b3J5KSk7
CisKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb0VuY29kZXJGYWN0b3J5V2l0aFNp
bXVsY2FzdD4oc3RkOjptb3ZlKGludGVybmFsRmFjdG9yeSkpOworfQorCiBSZW1vdGVWaWRlb0Vu
Y29kZXI6OlJlbW90ZVZpZGVvRW5jb2RlcihXZWJLaXRWaWRlb0VuY29kZXIgaW50ZXJuYWxFbmNv
ZGVyKQogICAgIDogbV9pbnRlcm5hbEVuY29kZXIoaW50ZXJuYWxFbmNvZGVyKQogewogfQogCitS
ZW1vdGVWaWRlb0VuY29kZXI6On5SZW1vdGVWaWRlb0VuY29kZXIoKQoreworICAgIHZpZGVvRW5j
b2RlckNhbGxiYWNrcygpLnJlbGVhc2VDYWxsYmFjayhtX2ludGVybmFsRW5jb2Rlcik7Cit9CisK
IGludDMyX3QgUmVtb3RlVmlkZW9FbmNvZGVyOjpJbml0RW5jb2RlKGNvbnN0IFZpZGVvQ29kZWMq
IGNvZGVjLCBjb25zdCBTZXR0aW5ncyYpCiB7CiAgICAgaWYgKFNpbXVsY2FzdFV0aWxpdHk6Ok51
bWJlck9mU2ltdWxjYXN0U3RyZWFtcygqY29kZWMpID4gMSkKQEAgLTE4Niw3ICsyNDksNyBAQCBp
bnQzMl90IFJlbW90ZVZpZGVvRW5jb2Rlcjo6SW5pdEVuY29kZShjb25zdCBWaWRlb0NvZGVjKiBj
b2RlYywgY29uc3QgU2V0dGluZ3MmKQogCiBpbnQzMl90IFJlbW90ZVZpZGVvRW5jb2Rlcjo6UmVs
ZWFzZSgpCiB7Ci0gICAgcmV0dXJuIHZpZGVvRW5jb2RlckNhbGxiYWNrcygpLnJlbGVhc2VDYWxs
YmFjayhtX2ludGVybmFsRW5jb2Rlcik7CisgICAgcmV0dXJuIDA7CiB9CiAKIGludDMyX3QgUmVt
b3RlVmlkZW9FbmNvZGVyOjpFbmNvZGUoY29uc3QgVmlkZW9GcmFtZSYgZnJhbWUsIGNvbnN0IHN0
ZDo6dmVjdG9yPFZpZGVvRnJhbWVUeXBlPiogZnJhbWVUeXBlcykKQEAgLTIyOCw3ICsyOTEsNyBA
QCBpbnQzMl90IFJlbW90ZVZpZGVvRW5jb2Rlcjo6UmVnaXN0ZXJFbmNvZGVDb21wbGV0ZUNhbGxi
YWNrKEVuY29kZWRJbWFnZUNhbGxiYWNrKgogICAgIHJldHVybiB2aWRlb0VuY29kZXJDYWxsYmFj
a3MoKS5yZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJhY2sobV9pbnRlcm5hbEVuY29kZXIsIGNh
bGxiYWNrKTsKIH0KIAotdm9pZCBSZW1vdGVWaWRlb0VuY29kZXI6OmVuY29kZUNvbXBsZXRlKHZv
aWQqIGNhbGxiYWNrLCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgsIGNvbnN0IFdlYktp
dEVuY29kZWRGcmFtZUluZm8mIGluZm8sIGNvbnN0IHdlYnJ0Yzo6UlRQRnJhZ21lbnRhdGlvbkhl
YWRlciogaGVhZGVyKQordm9pZCBlbmNvZGVyVmlkZW9UYXNrQ29tcGxldGUodm9pZCogY2FsbGJh
Y2ssIHdlYnJ0Yzo6VmlkZW9Db2RlY1R5cGUgY29kZWNUeXBlLCB1aW50OF90KiBidWZmZXIsIHNp
emVfdCBsZW5ndGgsIGNvbnN0IFdlYktpdEVuY29kZWRGcmFtZUluZm8mIGluZm8sIGNvbnN0IHdl
YnJ0Yzo6UlRQRnJhZ21lbnRhdGlvbkhlYWRlciogaGVhZGVyKQogewogICAgIHdlYnJ0Yzo6RW5j
b2RlZEltYWdlIGVuY29kZWRJbWFnZShidWZmZXIsIGxlbmd0aCwgbGVuZ3RoKTsKICAgICBlbmNv
ZGVkSW1hZ2UuX2VuY29kZWRXaWR0aCA9IGluZm8ud2lkdGg7CkBAIC0yNDQsOCArMzA3LDExIEBA
IHZvaWQgUmVtb3RlVmlkZW9FbmNvZGVyOjplbmNvZGVDb21wbGV0ZSh2b2lkKiBjYWxsYmFjaywg
dWludDhfdCogYnVmZmVyLCBzaXplX3QKICAgICBlbmNvZGVkSW1hZ2UuY29udGVudF90eXBlXyA9
IGluZm8uY29udGVudFR5cGU7CiAKICAgICBDb2RlY1NwZWNpZmljSW5mbyBjb2RlY1NwZWNpZmlj
SW5mbzsKLSAgICBjb2RlY1NwZWNpZmljSW5mby5jb2RlY1R5cGUgPSB3ZWJydGM6OmtWaWRlb0Nv
ZGVjSDI2NDsKLSAgICBjb2RlY1NwZWNpZmljSW5mby5jb2RlY1NwZWNpZmljLkgyNjQucGFja2V0
aXphdGlvbl9tb2RlID0gSDI2NFBhY2tldGl6YXRpb25Nb2RlOjpOb25JbnRlcmxlYXZlZDsKKyAg
ICBjb2RlY1NwZWNpZmljSW5mby5jb2RlY1R5cGUgPSBjb2RlY1R5cGU7CisgICAgaWYgKGNvZGVj
VHlwZSA9PSBrVmlkZW9Db2RlY0gyNjQpCisgICAgICAgIGNvZGVjU3BlY2lmaWNJbmZvLmNvZGVj
U3BlY2lmaWMuSDI2NC5wYWNrZXRpemF0aW9uX21vZGUgPSBIMjY0UGFja2V0aXphdGlvbk1vZGU6
Ok5vbkludGVybGVhdmVkOworICAgIGVsc2UgaWYgKGNvZGVjVHlwZSA9PSBrVmlkZW9Db2RlY0gy
NjUpCisgICAgICAgIGNvZGVjU3BlY2lmaWNJbmZvLmNvZGVjU3BlY2lmaWMuSDI2NS5wYWNrZXRp
emF0aW9uX21vZGUgPSBIMjY1UGFja2V0aXphdGlvbk1vZGU6Ok5vbkludGVybGVhdmVkOwogCiAg
ICAgc3RhdGljX2Nhc3Q8RW5jb2RlZEltYWdlQ2FsbGJhY2sqPihjYWxsYmFjayktPk9uRW5jb2Rl
ZEltYWdlKGVuY29kZWRJbWFnZSwgJmNvZGVjU3BlY2lmaWNJbmZvLCBoZWFkZXIpOwogfQpAQCAt
Mjg3LDYgKzM1Myw4IEBAIHZvaWQgcmVsZWFzZUxvY2FsRW5jb2RlcihMb2NhbEVuY29kZXIgbG9j
YWxFbmNvZGVyKQogCiB2b2lkIGluaXRpYWxpemVMb2NhbEVuY29kZXIoTG9jYWxFbmNvZGVyIGxv
Y2FsRW5jb2RlciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgaW50
IHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQgaW50IG1heEJpdHJhdGUsIHVuc2lnbmVkIGludCBtaW5C
aXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpCiB7CisgICAgYXV0byAqZW5jb2RlciA9IChf
X2JyaWRnZSBXS19SVENMb2NhbFZpZGVvSDI2NEgyNjVFbmNvZGVyICopKGxvY2FsRW5jb2Rlcik7
CisKICAgICB3ZWJydGM6OlZpZGVvQ29kZWMgY29kZWNTZXR0aW5nczsKICAgICBjb2RlY1NldHRp
bmdzLndpZHRoID0gd2lkdGg7CiAgICAgY29kZWNTZXR0aW5ncy5oZWlnaHQgPSBoZWlnaHQ7CkBA
IC0yOTQsMTggKzM2MiwxOSBAQCB2b2lkIGluaXRpYWxpemVMb2NhbEVuY29kZXIoTG9jYWxFbmNv
ZGVyIGxvY2FsRW5jb2RlciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90CiAgICAgY29kZWNTZXR0
aW5ncy5tYXhCaXRyYXRlID0gbWF4Qml0cmF0ZTsKICAgICBjb2RlY1NldHRpbmdzLm1pbkJpdHJh
dGUgPSBtaW5CaXRyYXRlOwogICAgIGNvZGVjU2V0dGluZ3MubWF4RnJhbWVyYXRlID0gbWF4RnJh
bWVyYXRlOworICAgIGNvZGVjU2V0dGluZ3MuY29kZWNUeXBlID0gZW5jb2Rlci5jb2RlY1R5cGU7
CiAKLSAgICBhdXRvICplbmNvZGVyID0gKF9fYnJpZGdlIFdLX1JUQ0xvY2FsVmlkZW9IMjY0SDI2
NUVuY29kZXIgKikobG9jYWxFbmNvZGVyKTsKICAgICBbZW5jb2RlciBzdGFydEVuY29kZVdpdGhT
ZXR0aW5nczpbW1JUQ1ZpZGVvRW5jb2RlclNldHRpbmdzIGFsbG9jXSBpbml0V2l0aE5hdGl2ZVZp
ZGVvQ29kZWM6JmNvZGVjU2V0dGluZ3NdIG51bWJlck9mQ29yZXM6MV07CiB9CiAKLXZvaWQgZW5j
b2RlTG9jYWxFbmNvZGVyRnJhbWUoTG9jYWxFbmNvZGVyIGxvY2FsRW5jb2RlciwgQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlciwgaW50NjRfdCB0aW1lU3RhbXAsIHdlYnJ0Yzo6VmlkZW9Sb3Rh
dGlvbiByb3RhdGlvbiwgYm9vbCBpc0tleWZyYW1lUmVxdWlyZWQpCit2b2lkIGVuY29kZUxvY2Fs
RW5jb2RlckZyYW1lKExvY2FsRW5jb2RlciBsb2NhbEVuY29kZXIsIENWUGl4ZWxCdWZmZXJSZWYg
cGl4ZWxCdWZmZXIsIGludDY0X3QgdGltZVN0YW1wTnMsIHVpbnQzMl90IHRpbWVTdGFtcCwgd2Vi
cnRjOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIGlzS2V5ZnJhbWVSZXF1aXJlZCkKIHsK
ICAgICBOU011dGFibGVBcnJheTxOU051bWJlciAqPiAqcnRjRnJhbWVUeXBlcyA9IFtOU011dGFi
bGVBcnJheSBhcnJheV07CiAgICAgaWYgKGlzS2V5ZnJhbWVSZXF1aXJlZCkKICAgICAgICAgW3J0
Y0ZyYW1lVHlwZXMgYWRkT2JqZWN0OkAoUlRDRnJhbWVUeXBlKFJUQ0ZyYW1lVHlwZVZpZGVvRnJh
bWVLZXkpKV07CiAKLSAgICBhdXRvICp2aWRlb0ZyYW1lID0gW1tSVENWaWRlb0ZyYW1lIGFsbG9j
XSBpbml0V2l0aEJ1ZmZlcjpUb09iakNWaWRlb0ZyYW1lQnVmZmVyKHBpeGVsQnVmZmVyVG9GcmFt
ZShwaXhlbEJ1ZmZlcikpIHJvdGF0aW9uOlJUQ1ZpZGVvUm90YXRpb24ocm90YXRpb24pIHRpbWVT
dGFtcE5zOnRpbWVTdGFtcF07CisgICAgYXV0byAqdmlkZW9GcmFtZSA9IFtbUlRDVmlkZW9GcmFt
ZSBhbGxvY10gaW5pdFdpdGhCdWZmZXI6VG9PYmpDVmlkZW9GcmFtZUJ1ZmZlcihwaXhlbEJ1ZmZl
clRvRnJhbWUocGl4ZWxCdWZmZXIpKSByb3RhdGlvbjpSVENWaWRlb1JvdGF0aW9uKHJvdGF0aW9u
KSB0aW1lU3RhbXBOczp0aW1lU3RhbXBOc107CisgICAgdmlkZW9GcmFtZS50aW1lU3RhbXAgPSB0
aW1lU3RhbXA7CiAgICAgYXV0byAqZW5jb2RlciA9IChfX2JyaWRnZSBXS19SVENMb2NhbFZpZGVv
SDI2NEgyNjVFbmNvZGVyICopKGxvY2FsRW5jb2Rlcik7CiAgICAgW2VuY29kZXIgZW5jb2RlOnZp
ZGVvRnJhbWUgY29kZWNTcGVjaWZpY0luZm86bmlsIGZyYW1lVHlwZXM6cnRjRnJhbWVUeXBlc107
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZmNiMjFjZGFmMmRlMWQ3NDcyNTU4MWYyZGYxMGE2MmUxNzRjZjA2NS4uZjQyOTQ4
OGUzMGFiYmM4OGM1MjA4M2RmYzFiMDQ2ZWJhNTliNTZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDIwNSw3ICs0MjA1LDcg
QEAKIAkJQ0Q2NDFFQjMxODE4RjVFRDAwRUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2NDFFQjExODE4
RjVFRDAwRUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0ZS5oICovOyB9OwogCQlDRDY0MUVCNDE4
MThGNUVEMDBFRTRDNDEgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2NDFFQjIxODE4RjVFRDAwRUU0QzQxIC8q
IFNvdXJjZUJ1ZmZlclByaXZhdGUuaCAqLzsgfTsKIAkJQ0Q3MjBCNEYyMjY4QjUxMzAwMDQ3RkRF
IC8qIElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q3MjBCNDkyMjY4MkM3RjAwMDQ3RkRFIC8qIElTT0Zh
aXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCUNEN0QzMzQ0MUM3QTEyM0YwMDA0MTI5MyAvKiBQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDdEMzM0MjFDN0ExMjNGMDAwNDEyOTMgLyogUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5o
ICovOyB9OworCQlDRDdEMzM0NDFDN0ExMjNGMDAwNDEyOTMgLyogUGl4ZWxCdWZmZXJDb25mb3Jt
ZXJDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q3
RDMzNDIxQzdBMTIzRjAwMDQxMjkzIC8qIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDdEMzM0ODFDN0Ex
NkJGMDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEN0QzMzQ2MUM3QTE2QkYwMDA0MTI5MyAvKiBDb3Jl
VmlkZW9Tb2Z0TGluay5oICovOyB9OwogCQlDRDdEQkIyOTE4Q0ExOUM2MDBDMTEwNjYgLyogQ1NT
R3JpZExpbmVOYW1lc1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDdEQkIyNzE4Q0ExMUZGMDBDMTEwNjYgLyogQ1NTR3JpZExpbmVOYW1lc1Zh
bHVlLmggKi87IH07CiAJCUNEN0UwNTIyMTY1MUMyODIwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDdFMDUyMTE2NTFBODQxMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oCmluZGV4IGFkNDEwZjI4MzBhNzk1OWUz
MjM4OTVkZDJjODQyNTNkMGNmMjcxMTQuLmMzYzUzN2NlMjdjMDQ4OGE1ODhjNGQwMWI4ZDU0MDg4
OGRjN2Y0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2
L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgKQEAgLTM2LDggKzM2LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDViB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUGl4ZWxCdWZmZXJDb25mb3JtZXJD
VihDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlcyk7Ci0gICAgUmV0YWluUHRyPENWUGl4ZWxCdWZm
ZXJSZWY+IGNvbnZlcnQoQ1ZQaXhlbEJ1ZmZlclJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgUGl4
ZWxCdWZmZXJDb25mb3JtZXJDVihDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlcyk7CisgICAgV0VC
Q09SRV9FWFBPUlQgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNvbnZlcnQoQ1ZQaXhlbEJ1
ZmZlclJlZik7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdlRnJvbVBpeGVs
QnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQcm92aWRlckNvY29hLmgKaW5kZXggOTgxY2RiNzU4NzgzYzAzMDM2ZmU2YzMxMGI3
Mjc2NTM3ZmIzNDI3Ni4uNWQzOWRhOTVkZDZmMzFkODMzMzY2OGFiMGIwMGMzMTM4MTViN2EyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5oCkBAIC00MiwxMCAr
NDIsMTAgQEAgcHVibGljOgogICAgIH5MaWJXZWJSVENQcm92aWRlckNvY29hKCk7CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PiBjcmVhdGVEZWNvZGVy
RmFjdG9yeSgpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5j
b2RlckZhY3Rvcnk+IGNyZWF0ZUVuY29kZXJGYWN0b3J5KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHdl
YnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4gY3JlYXRlRW5jb2RlckZhY3RvcnkoKSBmaW5hbDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAppbmRleCAxZTZmNmZiZTY0
OWE4Mzg1ZDg1OGM4YjI3YzFjNWU5YzM2NmVkYzU3Li4zNjAzMTBiN2QxMjFkMjg2ZDhkMTYxZjE4
M2FiZDBlNzQ1YjgzNTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjcmVhdGVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mLCBib29sIHVzZUxv
d0xhdGVuY3kpOwogICAgIHZvaWQgcmVsZWFzZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIp
OwogICAgIHZvaWQgaW5pdGlhbGl6ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIsIHVpbnQx
Nl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0cmF0ZSwgdW5zaWdu
ZWQgbWF4Qml0cmF0ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4RnJhbWVyYXRl
KTsKLSAgICB2b2lkIGVuY29kZUZyYW1lKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZW1vdGVWaWRlb1NhbXBsZSYmLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpOworICAgIHZv
aWQgZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVv
U2FtcGxlJiYsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1l
KTsKICAgICB2b2lkIHNldEVuY29kZVJhdGVzKFJUQ0VuY29kZXJJZGVudGlmaWVyLCB1aW50MzJf
dCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpOwogCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGlv
U3VyZmFjZVBpeGVsQnVmZmVyQ3JlYXRpb25PcHRpb25zKElPU3VyZmFjZVJlZik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAwMjNhYTYyMTUzOTcxZTQwYTBmYTRkZWVmNzYy
YzI5MmJjYjIwYzc5Li5jMjk5YmYzYmQ1MThmYWE1ZDhlZTk0NTMxYzUyNTM1ZTRiY2Y4MGVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVj
c1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTM0LDcgKzM0LDcgQEAgbWVzc2Fn
ZXMgLT4gTGliV2ViUlRDQ29kZWNzUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgQ3JlYXRlRW5j
b2RlcihXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkLCBTdHJpbmcgZm9ybWF0TmFtZSwg
VmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHBhcmFtZXRlcnMsIGJvb2wgdXNlTG93
TGF0ZW5jeSk7CiAgICAgUmVsZWFzZUVuY29kZXIoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmll
ciBpZCkKICAgICBJbml0aWFsaXplRW5jb2RlcihXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVy
IGlkLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNpZ25lZCBzdGFydEJpdHJh
dGUsIHVuc2lnbmVkIG1heEJpdHJhdGUsIHVuc2lnbmVkIG1pbkJpdHJhdGUsIHVpbnQzMl90IG1h
eEZyYW1lcmF0ZSkKLSAgICBFbmNvZGVGcmFtZShXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVy
IGlkLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUsIGJvb2wgc2hvdWxkRW5jb2Rl
QXNLZXlGcmFtZSkKKyAgICBFbmNvZGVGcmFtZShXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVy
IGlkLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUsIHVpbnQzMl90IHRpbWVTdGFt
cCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKQogICAgIFNldEVuY29kZVJhdGVzKFdlYktp
dDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZy
YW1lUmF0ZSkKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KaW5kZXggNDdmMjFhOTRkMTVkMzI1YmQ2ZTdmNDA4
OTE4MDA2Y2VkMjkyNGYzZS4uNDAwYzllNTk5NGNjZTI1N2FkNTNjOTk4OGE4YWZhMzBkYTdhZjFm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3NQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ0NvZGVjc1Byb3h5Lm1tCkBAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIGlubGluZSB3ZWJy
dGM6OlZpZGVvUm90YXRpb24gdG9XZWJSVENWaWRlb1JvdGF0aW9uKE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGEKICAgICByZXR1cm4gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wOwogfQogCi12b2lkIExp
YldlYlJUQ0NvZGVjc1Byb3h5OjplbmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHNhbXBsZSwgYm9vbCBzaG91bGRF
bmNvZGVBc0tleUZyYW1lKQordm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZW5jb2RlRnJhbWUo
UlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1w
bGUmJiBzYW1wbGUsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZy
YW1lKQogewogICAgIEFTU0VSVChtX2VuY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAg
ICBhdXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLmdldChpZGVudGlmaWVyKTsKQEAgLTE4Niw3ICsx
ODYsNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjplbmNvZGVGcmFtZShSVENFbmNvZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOgogCiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFM
WVNUKQogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVh
dGVQaXhlbEJ1ZmZlcihzYW1wbGUuc3VyZmFjZSgpKTsKLSAgICB3ZWJydGM6OmVuY29kZUxvY2Fs
RW5jb2RlckZyYW1lKGVuY29kZXIsIHBpeGVsQnVmZmVyLmdldCgpLCBzYW1wbGUudGltZSgpLnRv
VGltZVNjYWxlKDEwMDAwMDApLnRpbWVWYWx1ZSgpLCB0b1dlYlJUQ1ZpZGVvUm90YXRpb24oc2Ft
cGxlLnJvdGF0aW9uKCkpLCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKKyAgICB3ZWJydGM6OmVu
Y29kZUxvY2FsRW5jb2RlckZyYW1lKGVuY29kZXIsIHBpeGVsQnVmZmVyLmdldCgpLCBzYW1wbGUu
dGltZSgpLnRvVGltZVNjYWxlKDEwMDAwMDApLnRpbWVWYWx1ZSgpLCB0aW1lU3RhbXAsIHRvV2Vi
UlRDVmlkZW9Sb3RhdGlvbihzYW1wbGUucm90YXRpb24oKSksIHNob3VsZEVuY29kZUFzS2V5RnJh
bWUpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA5OWJlYTFmYjU5ZTk2
ZDZhMDBlZjFiYmEwOGE3MjRiMWYyODg3MDA0Li5lOTdhMmEyNzVjYTg2M2Y0YTNlNDZkZjlmOGNm
NTAzYTI1MTQxY2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC01NzYsNiArNTc2LDcgQEAg
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3Bw
CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2Nv
YS5tbQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvVmlkZW9MYXllclJlbW90ZUNvY29hLm1t
CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcAor
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tbQogCiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUJhbm5lci5jcHAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDY2NWNjYjdiYzZh
ZjdhN2EwODkxNWZkZTQ2NzI2ZDk2N2Y1ZmNiNC4uMzBlNjhlOTUzYmYwMTViY2MzMTQ2YzZlODYy
NGE0ZjVlYjEzMTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zNDY1LDYgKzM0NjUsNyBAQAogCQk0MTMxRjNFMDFGOTg3MTJDMDA1
OTk5NUEgLyogV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzNUZCQ0YxRjRGQjdGMjAwNzRD
NDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTM1RkJEMDFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTND
OEIxMzI1NTE2QkZBMDBFNjUwNTUgLyogTGliV2ViUlRDQ29kZWNzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gTGliV2ViUlRDQ29kZWNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTNDQ0Q0RjIwREVCQzJGMDA2NUEyMUEgLyogY29tLmdvb2dsZS5nb29nbGV0YWxrYnJvd3Nl
cnBsdWdpbi5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uZ29vZ2xlLmdvb2dsZXRhbGti
cm93c2VycGx1Z2luLnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTQzNzUxQjIw
RUFFQTFFMDBGQUQwNkMgLyogY24ubWljcm9kb25lLmNtYi5zYWZhcmkuc2IgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gY24ubWljcm9kb25lLmNtYi5zYWZhcmkuc2I7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxNEREMzc4MjBCRjQzRUEwMDY5NTlGQiAvKiBjb20uY2lzY28ud2ViZXgu
cGx1Z2luLmdwYzY0LnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5jaXNjby53ZWJleC5w
bHVnaW4uZ3BjNjQuc2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzQyLDYgKzc3
NDMsNyBAQAogCQkJCTQxNzIxOThBMjNCNjEyODIwMEFFNTY4NiAvKiBMaWJXZWJSVENDb2RlY3Mu
Y3BwICovLAogCQkJCTQxNzIxOTg5MjNCNjEyODIwMEFFNTY4NiAvKiBMaWJXZWJSVENDb2RlY3Mu
aCAqLywKIAkJCQk0MTcyMTk4RDIzQjYyQzdDMDBBRTU2ODYgLyogTGliV2ViUlRDQ29kZWNzLm1l
c3NhZ2VzLmluICovLAorCQkJCTQxM0M4QjEzMjU1MTZCRkEwMEU2NTA1NSAvKiBMaWJXZWJSVEND
b2RlY3MubW0gKi8sCiAJCQkJNDE3NkU4OTcyM0MzNjFCRDAwM0U4M0ZFIC8qIE1lZGlhUmVjb3Jk
ZXJJZGVudGlmaWVyLmggKi8sCiAJCQkJNDE3NkU4OTQyM0MzNEUyNjAwM0U4M0ZFIC8qIE1lZGlh
UmVjb3JkZXJQcml2YXRlLmNwcCAqLywKIAkJCQk0MTc2RTg5NTIzQzM0RTI3MDAzRTgzRkUgLyog
TWVkaWFSZWNvcmRlclByaXZhdGUuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IDY4NTVmOWYzNzc0
YjZmYWEyOThkOWJjYjU0NDI0MjM2MmNkOTg3M2QuLjgyMDc3MGUwODdhMGY4MDk0MDQwZDkyYTM3
MzA4ZmU3ZThkODUwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAtNDksMTQgKzQ5LDE1IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgd2VicnRjOjpXZWJLaXRWaWRlb0RlY29kZXIg
Y3JlYXRlVmlkZW9EZWNvZGVyKGNvbnN0IHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQmIGZvcm1hdCkK
IHsKKyAgICBhdXRvJiBjb2RlY3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVEND
b2RlY3MoKTsKICAgICBpZiAoZm9ybWF0Lm5hbWUgPT0gIkgyNjQiKQotICAgICAgICByZXR1cm4g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCkuY3JlYXRlRGVjb2RlcihM
aWJXZWJSVENDb2RlY3M6OlR5cGU6OkgyNjQpOworICAgICAgICByZXR1cm4gY29kZWNzLmNyZWF0
ZURlY29kZXIoTGliV2ViUlRDQ29kZWNzOjpUeXBlOjpIMjY0KTsKIAogICAgIGlmIChmb3JtYXQu
bmFtZSA9PSAiSDI2NSIpCi0gICAgICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5s
aWJXZWJSVENDb2RlY3MoKS5jcmVhdGVEZWNvZGVyKExpYldlYlJUQ0NvZGVjczo6VHlwZTo6SDI2
NSk7CisgICAgICAgIHJldHVybiBjb2RlY3MuY3JlYXRlRGVjb2RlcihMaWJXZWJSVENDb2RlY3M6
OlR5cGU6OkgyNjUpOwogCi0gICAgaWYgKGZvcm1hdC5uYW1lID09ICJWUDkiICYmIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLnN1cHBvcnRWUDlWVEIoKSkKLSAgICAg
ICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLmNyZWF0
ZURlY29kZXIoTGliV2ViUlRDQ29kZWNzOjpUeXBlOjpWUDkpOworICAgIGlmIChmb3JtYXQubmFt
ZSA9PSAiVlA5IiAmJiBjb2RlY3Muc3VwcG9ydFZQOVZUQigpKQorICAgICAgICByZXR1cm4gY29k
ZWNzLmNyZWF0ZURlY29kZXIoTGliV2ViUlRDQ29kZWNzOjpUeXBlOjpWUDkpOwogCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CkBAIC0xMTYsMjkgKzExNyw3IEBAIHN0YXRpYyBpbmxpbmUgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb24gdG9NZWRpYVNhbXBsZVZpZGVvUm90YXRpb24od2VicnRjOjpW
aWRlCiAKIHN0YXRpYyBpbnQzMl90IGVuY29kZVZpZGVvRnJhbWUod2VicnRjOjpXZWJLaXRWaWRl
b0VuY29kZXIgZW5jb2RlciwgY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSwgYm9vbCBz
aG91bGRFbmNvZGVBc0tleUZyYW1lKQogewotICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiBuZXdQaXhlbEJ1ZmZlcjsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gd2VicnRjOjpwaXhlbEJ1
ZmZlckZyb21GcmFtZShmcmFtZSwgWyZuZXdQaXhlbEJ1ZmZlcl0oc2l6ZV90IHdpZHRoLCBzaXpl
X3QgaGVpZ2h0LCB3ZWJydGM6OkJ1ZmZlclR5cGUgYnVmZmVyVHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZl
clJlZiB7Ci0gICAgICAgIE9TVHlwZSBwb29sQnVmZmVyVHlwZTsKLSAgICAgICAgc3dpdGNoIChi
dWZmZXJUeXBlKSB7Ci0gICAgICAgIGNhc2Ugd2VicnRjOjpCdWZmZXJUeXBlOjpJNDIwOgotICAg
ICAgICAgICAgcG9vbEJ1ZmZlclR5cGUgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJp
UGxhbmFyRnVsbFJhbmdlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ugd2VicnRj
OjpCdWZmZXJUeXBlOjpJMDEwOgotICAgICAgICAgICAgcG9vbEJ1ZmZlclR5cGUgPSBrQ1ZQaXhl
bEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5hckZ1bGxSYW5nZTsKLSAgICAgICAgfQotICAg
ICAgICBhdXRvIHBpeGVsQnVmZmVyUG9vbCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldl
YlJUQ0NvZGVjcygpLnBpeGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVpZ2h0LCBwb29sQnVmZmVyVHlw
ZSk7Ci0gICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQotICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICAgICAgbmV3UGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVQaXhlbEJ1
ZmZlckZyb21Qb29sKHBpeGVsQnVmZmVyUG9vbCk7Ci0gICAgICAgIHJldHVybiBuZXdQaXhlbEJ1
ZmZlci5nZXQoKTsKLSAgICB9KTsKLQotICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAgIHJl
dHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7Ci0KLSAgICBhdXRvIHNhbXBsZSA9IFJlbW90
ZVZpZGVvU2FtcGxlOjpjcmVhdGUocGl4ZWxCdWZmZXIsIE1lZGlhVGltZShmcmFtZS50aW1lc3Rh
bXBfdXMoKSwgMTAwMDAwMCksIHRvTWVkaWFTYW1wbGVWaWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0
aW9uKCkpKTsKLSAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29k
ZWNzKCkuZW5jb2RlRnJhbWUoKnN0YXRpY19jYXN0PExpYldlYlJUQ0NvZGVjczo6RW5jb2Rlcio+
KGVuY29kZXIpLCAqc2FtcGxlLCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKKyAgICByZXR1cm4g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCkuZW5jb2RlRnJhbWUoKnN0
YXRpY19jYXN0PExpYldlYlJUQ0NvZGVjczo6RW5jb2Rlcio+KGVuY29kZXIpLCBmcmFtZSwgc2hv
dWxkRW5jb2RlQXNLZXlGcmFtZSk7CiB9CiAKIHN0YXRpYyBpbnQzMl90IHJlZ2lzdGVyRW5jb2Rl
Q29tcGxldGVDYWxsYmFjayh3ZWJydGM6OldlYktpdFZpZGVvRW5jb2RlciBlbmNvZGVyLCB2b2lk
KiBlbmNvZGVkSW1hZ2VDYWxsYmFjaykKQEAgLTI5MCwxMSArMjY5LDI0IEBAIHN0YXRpYyBpbmxp
bmUgU3RyaW5nIGZvcm1hdE5hbWVGcm9tQ29kZWNUeXBlKExpYldlYlJUQ0NvZGVjczo6VHlwZSB0
eXBlKQogICAgIH0KIH0KIAorc3RhdGljIGlubGluZSB3ZWJydGM6OlZpZGVvQ29kZWNUeXBlIHRv
V2ViUlRDQ29kZWNUeXBlKExpYldlYlJUQ0NvZGVjczo6VHlwZSB0eXBlKQoreworICAgIHN3aXRj
aCAodHlwZSkgeworICAgIGNhc2UgTGliV2ViUlRDQ29kZWNzOjpUeXBlOjpIMjY0OgorICAgICAg
ICByZXR1cm4gd2VicnRjOjprVmlkZW9Db2RlY0gyNjQ7CisgICAgY2FzZSBMaWJXZWJSVENDb2Rl
Y3M6OlR5cGU6OkgyNjU6CisgICAgICAgIHJldHVybiB3ZWJydGM6OmtWaWRlb0NvZGVjSDI2NTsK
KyAgICBjYXNlIExpYldlYlJUQ0NvZGVjczo6VHlwZTo6VlA5OgorICAgICAgICByZXR1cm4gd2Vi
cnRjOjprVmlkZW9Db2RlY1ZQOTsKKyAgICB9Cit9CisKIExpYldlYlJUQ0NvZGVjczo6RW5jb2Rl
ciogTGliV2ViUlRDQ29kZWNzOjpjcmVhdGVFbmNvZGVyKFR5cGUgdHlwZSwgY29uc3Qgc3RkOjpt
YXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiYgZm9ybWF0UGFyYW1ldGVycykKIHsKICAgICBh
dXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCk7CiAgICAgYXV0byogcmVzdWx0ID0g
ZW5jb2Rlci5nZXQoKTsKICAgICBlbmNvZGVyLT5pZGVudGlmaWVyID0gUlRDRW5jb2RlcklkZW50
aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOworICAgIGVuY29kZXItPmNvZGVjVHlwZSA9IHRv
V2ViUlRDQ29kZWNUeXBlKHR5cGUpOwogCiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+IHBhcmFtZXRlcnM7CiAgICAgZm9yIChhdXRvJiBrZXlWYWx1ZSA6IGZvcm1hdFBhcmFt
ZXRlcnMpCkBAIC0zMzcsMTIgKzMyOSw0MCBAQCBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6aW5p
dGlhbGl6ZUVuY29kZXIoRW5jb2RlciYgZW5jb2RlciwgdWludDE2X3Qgd2lkdGgsIHVpbgogICAg
IHJldHVybiAwOwogfQogCi1pbnQzMl90IExpYldlYlJUQ0NvZGVjczo6ZW5jb2RlRnJhbWUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmIGZyYW1lLCBi
b29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpCitpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6ZW5j
b2RlRnJhbWUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFt
ZSwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKQogewogICAgIGlmICghZW5jb2Rlci5jb25u
ZWN0aW9uKQogICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwogCi0gICAg
ZW5jb2Rlci5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6
RW5jb2RlRnJhbWUgeyBlbmNvZGVyLmlkZW50aWZpZXIsIGZyYW1lLCBzaG91bGRFbmNvZGVBc0tl
eUZyYW1lIH0sIDApOworICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBuZXdQaXhlbEJ1
ZmZlcjsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gd2VicnRjOjpwaXhlbEJ1ZmZlckZyb21GcmFt
ZShmcmFtZSwgWyZuZXdQaXhlbEJ1ZmZlcl0oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCB3
ZWJydGM6OkJ1ZmZlclR5cGUgYnVmZmVyVHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CisgICAg
ICAgIE9TVHlwZSBwb29sQnVmZmVyVHlwZTsKKyAgICAgICAgc3dpdGNoIChidWZmZXJUeXBlKSB7
CisgICAgICAgIGNhc2Ugd2VicnRjOjpCdWZmZXJUeXBlOjpJNDIwOgorICAgICAgICAgICAgcG9v
bEJ1ZmZlclR5cGUgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJh
bmdlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ugd2VicnRjOjpCdWZmZXJUeXBl
OjpJMDEwOgorICAgICAgICAgICAgcG9vbEJ1ZmZlclR5cGUgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVf
NDIwWXBDYkNyMTBCaVBsYW5hckZ1bGxSYW5nZTsKKyAgICAgICAgfQorICAgICAgICBhdXRvIHBp
eGVsQnVmZmVyUG9vbCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygp
LnBpeGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVpZ2h0LCBwb29sQnVmZmVyVHlwZSk7CisgICAgICAg
IGlmICghcGl4ZWxCdWZmZXJQb29sKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICAgICAgbmV3UGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVQaXhlbEJ1ZmZlckZyb21Qb29s
KHBpeGVsQnVmZmVyUG9vbCk7CisgICAgICAgIHJldHVybiBuZXdQaXhlbEJ1ZmZlci5nZXQoKTsK
KyAgICB9KTsKKworICAgIGlmICghcGl4ZWxCdWZmZXIpCisgICAgICAgIHJldHVybiBXRUJSVENf
VklERU9fQ09ERUNfRVJST1I7CisKKyAgICBhdXRvIHNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxl
OjpjcmVhdGUocGl4ZWxCdWZmZXIsIE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBfdXMoKSAqIDEw
MDAsIDEwMDAwMDApLCB0b01lZGlhU2FtcGxlVmlkZW9Sb3RhdGlvbihmcmFtZS5yb3RhdGlvbigp
KSk7CisgICAgaWYgKCFzYW1wbGUpIHsKKyAgICAgICAgLy8gRklYTUU6IE9wdGltaXplIHRoaXMg
Y29kZSBwYXRoLCBjdXJyZW50bHkgd2UgaGF2ZSBub24gQkdSQSBmb3IgbXV0ZWQgZnJhbWVzIGF0
IGxlYXN0LgorICAgICAgICBuZXdQaXhlbEJ1ZmZlciA9IGNvbnZlcnRUb0JHUkEocGl4ZWxCdWZm
ZXIpOworICAgICAgICBzYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKG5ld1BpeGVs
QnVmZmVyLmdldCgpLCBNZWRpYVRpbWUoZnJhbWUudGltZXN0YW1wX3VzKCkgKiAxMDAwLCAxMDAw
MDAwKSwgdG9NZWRpYVNhbXBsZVZpZGVvUm90YXRpb24oZnJhbWUucm90YXRpb24oKSkpOworICAg
IH0KKworICAgIGVuY29kZXIuY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29k
ZWNzUHJveHk6OkVuY29kZUZyYW1lIHsgZW5jb2Rlci5pZGVudGlmaWVyLCAqc2FtcGxlLCBmcmFt
ZS50aW1lc3RhbXAoKSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSB9LCAwKTsKICAgICByZXR1cm4g
V0VCUlRDX1ZJREVPX0NPREVDX09LOwogfQogCkBAIC0zODIsNyArNDAyLDcgQEAgdm9pZCBMaWJX
ZWJSVENDb2RlY3M6OmNvbXBsZXRlZEVuY29kaW5nKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIElQQzo6RGEKICAgICBpZiAoIWVuY29kZXItPmVuY29kZWRJbWFnZUNhbGxiYWNrKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJydGM6OlJlbW90ZVZpZGVvRW5jb2Rlcjo6ZW5jb2Rl
Q29tcGxldGUoZW5jb2Rlci0+ZW5jb2RlZEltYWdlQ2FsbGJhY2ssIGNvbnN0X2Nhc3Q8dWludDhf
dCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCksIGluZm8sIGZyYWdtZW50YXRpb25IZWFkZXIu
dmFsdWUoKSk7CisgICAgd2VicnRjOjplbmNvZGVyVmlkZW9UYXNrQ29tcGxldGUoZW5jb2Rlci0+
ZW5jb2RlZEltYWdlQ2FsbGJhY2ssIGVuY29kZXItPmNvZGVjVHlwZSwgY29uc3RfY2FzdDx1aW50
OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSwgaW5mbywgZnJhZ21lbnRhdGlvbkhlYWRl
ci52YWx1ZSgpKTsKIH0KIAogQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgTGliV2ViUlRDQ29kZWNzOjpw
aXhlbEJ1ZmZlclBvb2woc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBPU1R5cGUgdHlwZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
Q29kZWNzLmgKaW5kZXggZWVlM2I1NTYwY2UzYjQxODJiOWY3M2NiN2ExMGM3ZTY1Mjk4NDdkYy4u
NWU2M2I5YmJkNmQwZDdjNDlmYTNkZGQzMTQwNTA5YjUxZDg4ODA4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKQEAg
LTMxLDcgKzMxLDkgQEAKICNpbmNsdWRlICJSVENEZWNvZGVySWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlJUQ0VuY29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVRyYW5z
ZmVyU2Vzc2lvblZULmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QaXhlbEJ1ZmZlckNvbmZvcm1lckNW
Lmg+CiAjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fY29k
ZWNfdHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgpAQCAtNDksNiArNTEsNyBAQCBjbGFzcyBSZW1v
dGVWaWRlb1NhbXBsZTsKIH0KIAogbmFtZXNwYWNlIHdlYnJ0YyB7CitjbGFzcyBWaWRlb0ZyYW1l
OwogY2xhc3MgV2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlcjsKIHN0cnVjdCBXZWJLaXRFbmNv
ZGVkRnJhbWVJbmZvOwogfQpAQCAtODMsNiArODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgUlRDRW5jb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgd2VicnRjOjpWaWRlb0NvZGVjVHlwZSBjb2RlY1R5
cGUgeyB3ZWJydGM6OmtWaWRlb0NvZGVjR2VuZXJpYyB9OwogICAgICAgICB2b2lkKiBlbmNvZGVk
SW1hZ2VDYWxsYmFjayB7IG51bGxwdHIgfTsKICAgICAgICAgTG9jayBlbmNvZGVkSW1hZ2VDYWxs
YmFja0xvY2s7CiAgICAgICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb247CkBA
IC05MSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBFbmNvZGVyKiBjcmVhdGVFbmNvZGVyKFR5cGUs
IGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4mKTsKICAgICBpbnQzMl90
IHJlbGVhc2VFbmNvZGVyKEVuY29kZXImKTsKICAgICBpbnQzMl90IGluaXRpYWxpemVFbmNvZGVy
KEVuY29kZXImLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNpZ25lZCBzdGFy
dEJpdHJhdGUsIHVuc2lnbmVkIG1heEJpdHJhdGUsIHVuc2lnbmVkIG1pbkJpdHJhdGUsIHVpbnQz
Ml90IG1heEZyYW1lcmF0ZSk7Ci0gICAgaW50MzJfdCBlbmNvZGVGcmFtZShFbmNvZGVyJiwgY29u
c3QgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJh
bWUpOworICAgIGludDMyX3QgZW5jb2RlRnJhbWUoRW5jb2RlciYsIGNvbnN0IHdlYnJ0Yzo6Vmlk
ZW9GcmFtZSYsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSk7CiAgICAgdm9pZCByZWdpc3Rl
ckVuY29kZUZyYW1lQ2FsbGJhY2soRW5jb2RlciYsIHZvaWQqIGVuY29kZWRJbWFnZUNhbGxiYWNr
KTsKICAgICB2b2lkIHNldEVuY29kZVJhdGVzKEVuY29kZXImLCB1aW50MzJfdCBiaXRSYXRlLCB1
aW50MzJfdCBmcmFtZVJhdGUpOwogICAgIApAQCAtMTA2LDYgKzExMCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBmYWlsZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBj
b21wbGV0ZWREZWNvZGluZyhSVENEZWNvZGVySWRlbnRpZmllciwgdWludDMyX3QgdGltZVN0YW1w
LCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmKTsKICAgICB2b2lkIGNvbXBsZXRlZEVuY29k
aW5nKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiwgY29uc3Qgd2Vi
cnRjOjpXZWJLaXRFbmNvZGVkRnJhbWVJbmZvJiwgd2VicnRjOjpXZWJLaXRSVFBGcmFnbWVudGF0
aW9uSGVhZGVyJiYpOworICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0VG9C
R1JBKENWUGl4ZWxCdWZmZXJSZWYpOwogCiBwcml2YXRlOgogICAgIEhhc2hNYXA8UlRDRGVjb2Rl
cklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4gbV9kZWNvZGVyczsKQEAgLTEx
NCw2ICsxMTksNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8UlRDRW5jb2RlcklkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPj4gbV9lbmNvZGVyczsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZUPiBtX2ltYWdlVHJhbnNmZXJTZXNz
aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpQaXhlbEJ1ZmZlckNvbmZvcm1lckNW
PiBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUG9v
bFJlZj4gbV9waXhlbEJ1ZmZlclBvb2w7CiAgICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJQb29sV2lk
dGggeyAwIH07CiAgICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJQb29sSGVpZ2h0IHsgMCB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQyZWJiZmE3ZmQ3ZmE4NDIzNGE3NjkyOWZmMTQ1YjQ4OTc0M2U4
MTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MubW0KQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3MuaCIKKworI2lmIFVTRShM
SUJXRUJSVEMpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpCisKK25h
bWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JldGFpblB0cjxD
VlBpeGVsQnVmZmVyUmVmPiBMaWJXZWJSVENDb2RlY3M6OmNvbnZlcnRUb0JHUkEoQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlcikKK3sKKyAgICBpZiAoIW1fcGl4ZWxCdWZmZXJDb25mb3JtZXIp
CisgICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVy
Q29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3Ry
aW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3JtYXRU
eXBlXzMyQkdSQSkgfSk7CisgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXItPmNvbnZl
cnQocGl4ZWxCdWZmZXIpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5j
cHAKaW5kZXggMzQxMGE5OTdhMGJhODFhYTU1YmU1OTgyNDdlNjg2YzEyY2JhNWUxYi4uMzEwNGY1
NTQxMDc0OWI1ZmZjOGRiYWRhNWRkOWYxMDQ1Y2YyNmQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXIuY3BwCkBAIC0xNTEsNiArMTUxLDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVv
RGVjb2RlckZhY3Rvcnk+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVEZWNvZGVyRmFjCiAgICAg
cmV0dXJuIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2E6OmNyZWF0ZURlY29kZXJGYWN0b3J5KCk7CiB9
CiAKK3N0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+IExpYldlYlJU
Q1Byb3ZpZGVyOjpjcmVhdGVFbmNvZGVyRmFjdG9yeSgpCit7CisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgTGliV2ViUlRDQ29kZWNzOjpzZXRD
YWxsYmFja3MoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENQ
bGF0Zm9ybUNvZGVjc0luR1BVUHJvY2Vzc0VuYWJsZWQoKSk7CisjZW5kaWYKKyAgICByZXR1cm4g
TGliV2ViUlRDUHJvdmlkZXJDb2NvYTo6Y3JlYXRlRW5jb2RlckZhY3RvcnkoKTsKK30KKwogI2Vu
ZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAppbmRleCBj
NmIzZTBhNDQxNmNhMGE1NmVjOWI3MGJmY2IwZDUzNGM5ODdmMjA3Li4wZjEyYjEwZTNhOTk3MTI5
ZDQxZjRhZTU4YWY4NTE0OTZkYjkxNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaApAQCAtNjEs
NiArNjEsNyBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgc3RkOjp1bmlx
dWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gY3JlYXRlRGVjb2RlckZhY3Rvcnko
KSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5
PiBjcmVhdGVFbmNvZGVyRmFjdG9yeSgpIGZpbmFsOwogI2VuZGlmCiB9OwogI2Vsc2UK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413146</attachid>
            <date>2020-11-04 01:22:00 -0800</date>
            <delta_ts>2020-11-04 10:27:11 -0800</delta_ts>
            <desc>Fix iOS build</desc>
            <filename>bug-218498-20201104102158.patch</filename>
            <type>text/plain</type>
            <size>49897</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA3ZTE1ZjQ3ZGI5NzdhMWNmNjY1NTMzZGZlOGQyZGRhYTkwYzMwYjYwLi40MDJj
MTFiMTRjMzA0YjhkNDlkMTE4Y2EzM2JjNTk3NGU3MGE3ZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0xMS0wMyAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBmdW5jdGlvbmFsIFdlYlJU
QyBlbmNvZGVycyBpbiBHUFVQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTg0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxz
b24uCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGEgcmVtb3RlIGVuY29kZXIgYW5kIHJlbW90
ZSBmYWN0b3J5IHRoYXQgd2lsbCBmaXJzdCB0cnkgdG8gY3JlYXRlIGEgIHJlbW90ZSBlbmNvZGVy
IGFuZCB1c2UgYW4gaW4gcHJvY2VzcyBlbmNvZGVyIG90aGVyd2lzZS4KKyAgICAgICAgVGhpcyBp
cyBzaW1pbGFyIHRvIHdoYXQgd2FzIGRvbmUgZm9yIHJlbW90ZSB2aWRlbyBkZWNvZGVycy4KKwor
ICAgICAgICAqIENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwOgorICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwOgorICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL2xpYndlYnJ0Yy5tYWMuZXhwOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRFbmNvZGVyLmg6CisgICAgICAgICh3ZWJydGM6OldlYktpdEVuY29kZWRGcmFtZUlu
Zm86OmRlY29kZSk6CisgICAgICAgICh3ZWJydGM6OldlYktpdFJUUEZyYWdtZW50YXRpb25IZWFk
ZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgICh3ZWJydGM6OldlYktpdFJUUEZyYWdtZW50YXRp
b25IZWFkZXI6OmRlY29kZSk6CisgICAgICAgIEZpeCBpc3N1ZXMgaW4gcm91dGluZXMgdG8gZW5j
b2RlL2RlY29kZSBmcmFtZS9mcmFnbWVudGF0aW9uIGhlYWRlcnMuCisgICAgICAgICogU291cmNl
L3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIubW06CisgICAgICAgICgtW1dLX1JUQ0xv
Y2FsVmlkZW9IMjY0SDI2NUVuY29kZXIgaW5pdFdpdGhDb2RlY0luZm86XSk6CisgICAgICAgICgt
W1dLX1JUQ0xvY2FsVmlkZW9IMjY0SDI2NUVuY29kZXIgY29kZWNUeXBlXSk6CisgICAgICAgICh3
ZWJydGM6OlJlbW90ZVZpZGVvRW5jb2RlckZhY3Rvcnk6OlJlbW90ZVZpZGVvRW5jb2RlckZhY3Rv
cnkpOgorICAgICAgICAod2VicnRjOjpSZW1vdGVWaWRlb0VuY29kZXJGYWN0b3J5OjpDcmVhdGVW
aWRlb0VuY29kZXIpOgorICAgICAgICAod2VicnRjOjpjcmVhdGVXZWJLaXRFbmNvZGVyRmFjdG9y
eSk6CisgICAgICAgICh3ZWJydGM6OlJlbW90ZVZpZGVvRW5jb2Rlcjo6flJlbW90ZVZpZGVvRW5j
b2Rlcik6CisgICAgICAgICh3ZWJydGM6OlJlbW90ZVZpZGVvRW5jb2Rlcjo6UmVsZWFzZSk6Cisg
ICAgICAgICh3ZWJydGM6OmVuY29kZXJWaWRlb1Rhc2tDb21wbGV0ZSk6CisgICAgICAgICh3ZWJy
dGM6OmluaXRpYWxpemVMb2NhbEVuY29kZXIpOgorICAgICAgICAod2VicnRjOjplbmNvZGVMb2Nh
bEVuY29kZXJGcmFtZSk6CisKIDIwMjAtMTEtMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBXZWJSVEMgVlA5IGRlY29kZXIgaW4g
R1BVIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4YzU2NTQyZjU1OGRkY2RmNTQ2ZDA3MWIzY2Y2Y2Y5
OTBhNjRjNjU0Li40ZjZiYzQ4NTRjZmZiMWI1OTRiMWFhZjdlYjg1Y2U1MWVlNGM4ZDA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMTEtMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgZnVuY3Rpb25hbCBXZWJSVEMgZW5jb2RlcnMg
aW4gR1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE4NDk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAg
ICAgIEV4cG9ydGluZyBuZWNlc3NhcnkgbWV0aG9kcyBhbmQgYWxsb3cgdG8gb3ZlcnJpZGUgY3Jl
YXRpb24gb2YgZW5jb2RlciBmYWN0b3J5IGluIFdlYktpdC4KKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1l
ckNWLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyQ29jb2EuaDoKKwogMjAyMC0xMS0wMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFJlbmRlclRleHQ6OmFic29s
dXRlUXVhZHMgc2hvdWxkIHVzZSBpdGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkYTY1Nzg1MzI4MzI4NmU0
NDY4MmYxOGNlYmFlYTQyOTNkYjBjZDEyLi5kYmMxZTMwMTg0ZjkwMDRlZGZmOTkzMzdmNTY3ZTcw
NTdmODZkMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTExLTAzICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGZ1bmN0aW9uYWwgV2Vi
UlRDIGVuY29kZXJzIGluIEdQVVByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxODQ5OAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2Fy
bHNvbi4KKworICAgICAgICBVcGRhdGUgY29kZSBhY2NvcmRpbmcgbGlid2VicnRjIGNoYW5nZXMu
CisgICAgICAgIEFkZCBtaXNzaW5nIHN1cHBvcnQgZm9yIHRpbWVzdGFtcC4KKyAgICAgICAgQWxz
bywgaW4gY2FzZSBvZiBzYW1wbGVzIHRoYXQgYXJlIG5vbiBJTyBTdXJmYWNlIGFuZCBub3QgQkdS
QSwgZG8gYSBjb252ZXJzaW9uIHRvIEJHUkEgYW5kIHRoZW4gY3JlYXRlIGFuIElPIHN1cmZhY2Ug
ZnJvbSBpdC4KKyAgICAgICAgVGhpcyBhbGxvd3Mgc3VwcG9ydGluZyBzZW5kaW5nIGJsYWNrIGZy
YW1lcyBnZW5lcmF0ZWQgaW4gY2FzZSBvZiBtdXRlZCB0cmFja3MuCisKKyAgICAgICAgQ3JlYXRl
IGEgcmVtb3RlIGZhY3RvcnkgaW4gTGliV2ViUlRDUHJvdmlkZXIgYmFzZWQgb24gd2hldGhlciB1
c2luZyBncHUgcHJvY2VzcyBvciBub3QuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3NQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2Rl
Y3NQcm94eTo6ZW5jb2RlRnJhbWUpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNy
ZWF0ZVZpZGVvRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OmVuY29kZVZpZGVvRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0Ojp0b1dlYlJUQ0NvZGVjVHlwZSk6CisgICAgICAgIChXZWJLaXQ6Okxp
YldlYlJUQ0NvZGVjczo6Y3JlYXRlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJU
Q0NvZGVjczo6ZW5jb2RlRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6
OmNvbXBsZXRlZEVuY29kaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6Y29u
dmVydFRvQkdSQSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVFbmNvZGVyRmFjdG9yeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9M
aWJXZWJSVENQcm92aWRlci5oOgorCiAyMDIwLTExLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV2ViUlRDIFZQOSBkZWNvZGVy
IGluIEdQVSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKaW5kZXggMDAwOTlhYjJmNGJl
Yjg1M2E4NDk4NjM2YmFkYmFhZDI4NTZlNDk0YS4uMzE0MmI3YmFjOTE2MTM0MDNhYTM3YTI2ZDM1
OTdhM2QxMGRjYzBiOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0Nv
bmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cApAQCAtMjQ4LDcgKzI0OCw3
IEBAIF9fWk42d2VicnRjMTlzZXREZWNvZGVyRnJhbWVTaXplRVB2dHQKIF9fWk42d2VicnRjMThS
dHBDb2RlY0NhcGFiaWxpdHlDMUV2CiBfX1pONndlYnJ0YzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRl
ckQxRXYKIF9fWk42d2VicnRjMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyQzFFdgotX19aTjZ3ZWJy
dGMxOFJlbW90ZVZpZGVvRW5jb2RlcjE0ZW5jb2RlQ29tcGxldGVFUHZQaG1SS05TXzIyV2ViS2l0
RW5jb2RlZEZyYW1lSW5mb0VQS05TXzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckUKK19fWk42d2Vi
cnRjMjRlbmNvZGVyVmlkZW9UYXNrQ29tcGxldGVFUHZOU18xNFZpZGVvQ29kZWNUeXBlRVBobVJL
TlNfMjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZvRVBLTlNfMjJSVFBGcmFnbWVudGF0aW9uSGVhZGVy
RQogX19aTjZ3ZWJydGMyMlJUUEZyYWdtZW50YXRpb25IZWFkZXI2UmVzaXplRW0KIF9fWk42d2Vi
cnRjMjRzZXRWaWRlb0VuY29kZXJDYWxsYmFja3NFUEZQdlJLTlNfMTRTZHBWaWRlb0Zvcm1hdEVF
UEZpUzBfRVBGaVMwX1JLTlNfMTBWaWRlb0NvZGVjRUVQRmlTMF9SS05TXzEwVmlkZW9GcmFtZUVi
RVBGaVMwX1MwX0VQRnZTMF9SS05TXzEyVmlkZW9FbmNvZGVyMjFSYXRlQ29udHJvbFBhcmFtZXRl
cnNFRQogX19aTjZ3ZWJydGMyMHNldExvY2FsRW5jb2RlclJhdGVzRVB2amoKQEAgLTI1OCw3ICsy
NTgsNyBAQCBfX1pONndlYnJ0YzE0U2RwVmlkZW9Gb3JtYXRDMUVSS05TdDNfXzExMmJhc2ljX3N0
cmluZ0ljTlMxXzExY2hhcl90cmFpdHNJY0VFTlMxXwogX19aTjZ3ZWJydGMxOGNyZWF0ZUxvY2Fs
RW5jb2RlckVSS05TXzE0U2RwVmlkZW9Gb3JtYXRFVTEzYmxvY2tfcG9pbnRlckZ2UEtobVJLTlNf
MjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZvRVBOU18yMlJUUEZyYWdtZW50YXRpb25IZWFkZXJFRQog
X19aTjZ3ZWJydGMxNFNkcFZpZGVvRm9ybWF0RDFFdgogX19aTjZ3ZWJydGMxOXJlbGVhc2VMb2Nh
bEVuY29kZXJFUHYKLV9fWk42d2VicnRjMjNlbmNvZGVMb2NhbEVuY29kZXJGcmFtZUVQdlAxMF9f
Q1ZCdWZmZXJ4TlNfMTNWaWRlb1JvdGF0aW9uRWIKK19fWk42d2VicnRjMjNlbmNvZGVMb2NhbEVu
Y29kZXJGcmFtZUVQdlAxMF9fQ1ZCdWZmZXJ4ak5TXzEzVmlkZW9Sb3RhdGlvbkViCiBfX1pOM3J0
YzE3Q29weU9uV3JpdGVCdWZmZXIyNFVuc2hhcmVBbmRFbnN1cmVDYXBhY2l0eUVtCiBfX1pOM3J0
YzZUaHJlYWQxNEludm9rZUludGVybmFsRVJLTlNfOExvY2F0aW9uRU5TXzEyRnVuY3Rpb25WaWV3
SUZ2dkVFRQogX19aTjZ3ZWJydGMxOFJ0cFNlbmRlckludGVyZmFjZTM4U2V0RW5jb2RlclRvUGFj
a2V0aXplckZyYW1lVHJhbnNmb3JtZXJFTjNydGMxM3Njb3BlZF9yZWZwdHJJTlNfMjVGcmFtZVRy
YW5zZm9ybWVySW50ZXJmYWNlRUVFCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXgg
MDAwOTlhYjJmNGJlYjg1M2E4NDk4NjM2YmFkYmFhZDI4NTZlNDk0YS4uMzE0MmI3YmFjOTE2MTM0
MDNhYTM3YTI2ZDM1OTdhM2QxMGRjYzBiOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4
cApAQCAtMjQ4LDcgKzI0OCw3IEBAIF9fWk42d2VicnRjMTlzZXREZWNvZGVyRnJhbWVTaXplRVB2
dHQKIF9fWk42d2VicnRjMThSdHBDb2RlY0NhcGFiaWxpdHlDMUV2CiBfX1pONndlYnJ0YzIyUlRQ
RnJhZ21lbnRhdGlvbkhlYWRlckQxRXYKIF9fWk42d2VicnRjMjJSVFBGcmFnbWVudGF0aW9uSGVh
ZGVyQzFFdgotX19aTjZ3ZWJydGMxOFJlbW90ZVZpZGVvRW5jb2RlcjE0ZW5jb2RlQ29tcGxldGVF
UHZQaG1SS05TXzIyV2ViS2l0RW5jb2RlZEZyYW1lSW5mb0VQS05TXzIyUlRQRnJhZ21lbnRhdGlv
bkhlYWRlckUKK19fWk42d2VicnRjMjRlbmNvZGVyVmlkZW9UYXNrQ29tcGxldGVFUHZOU18xNFZp
ZGVvQ29kZWNUeXBlRVBobVJLTlNfMjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZvRVBLTlNfMjJSVFBG
cmFnbWVudGF0aW9uSGVhZGVyRQogX19aTjZ3ZWJydGMyMlJUUEZyYWdtZW50YXRpb25IZWFkZXI2
UmVzaXplRW0KIF9fWk42d2VicnRjMjRzZXRWaWRlb0VuY29kZXJDYWxsYmFja3NFUEZQdlJLTlNf
MTRTZHBWaWRlb0Zvcm1hdEVFUEZpUzBfRVBGaVMwX1JLTlNfMTBWaWRlb0NvZGVjRUVQRmlTMF9S
S05TXzEwVmlkZW9GcmFtZUViRVBGaVMwX1MwX0VQRnZTMF9SS05TXzEyVmlkZW9FbmNvZGVyMjFS
YXRlQ29udHJvbFBhcmFtZXRlcnNFRQogX19aTjZ3ZWJydGMyMHNldExvY2FsRW5jb2RlclJhdGVz
RVB2amoKQEAgLTI1OCw3ICsyNTgsNyBAQCBfX1pONndlYnJ0YzE0U2RwVmlkZW9Gb3JtYXRDMUVS
S05TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlMxXzExY2hhcl90cmFpdHNJY0VFTlMxXwogX19aTjZ3
ZWJydGMxOGNyZWF0ZUxvY2FsRW5jb2RlckVSS05TXzE0U2RwVmlkZW9Gb3JtYXRFVTEzYmxvY2tf
cG9pbnRlckZ2UEtobVJLTlNfMjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZvRVBOU18yMlJUUEZyYWdt
ZW50YXRpb25IZWFkZXJFRQogX19aTjZ3ZWJydGMxNFNkcFZpZGVvRm9ybWF0RDFFdgogX19aTjZ3
ZWJydGMxOXJlbGVhc2VMb2NhbEVuY29kZXJFUHYKLV9fWk42d2VicnRjMjNlbmNvZGVMb2NhbEVu
Y29kZXJGcmFtZUVQdlAxMF9fQ1ZCdWZmZXJ4TlNfMTNWaWRlb1JvdGF0aW9uRWIKK19fWk42d2Vi
cnRjMjNlbmNvZGVMb2NhbEVuY29kZXJGcmFtZUVQdlAxMF9fQ1ZCdWZmZXJ4ak5TXzEzVmlkZW9S
b3RhdGlvbkViCiBfX1pOM3J0YzE3Q29weU9uV3JpdGVCdWZmZXIyNFVuc2hhcmVBbmRFbnN1cmVD
YXBhY2l0eUVtCiBfX1pOM3J0YzZUaHJlYWQxNEludm9rZUludGVybmFsRVJLTlNfOExvY2F0aW9u
RU5TXzEyRnVuY3Rpb25WaWV3SUZ2dkVFRQogX19aTjZ3ZWJydGMxOFJ0cFNlbmRlckludGVyZmFj
ZTM4U2V0RW5jb2RlclRvUGFja2V0aXplckZyYW1lVHJhbnNmb3JtZXJFTjNydGMxM3Njb3BlZF9y
ZWZwdHJJTlNfMjVGcmFtZVRyYW5zZm9ybWVySW50ZXJmYWNlRUVFCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1h
Yy5leHAKaW5kZXggMDAwOTlhYjJmNGJlYjg1M2E4NDk4NjM2YmFkYmFhZDI4NTZlNDk0YS4uMzE0
MmI3YmFjOTE2MTM0MDNhYTM3YTI2ZDM1OTdhM2QxMGRjYzBiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMu
bWFjLmV4cApAQCAtMjQ4LDcgKzI0OCw3IEBAIF9fWk42d2VicnRjMTlzZXREZWNvZGVyRnJhbWVT
aXplRVB2dHQKIF9fWk42d2VicnRjMThSdHBDb2RlY0NhcGFiaWxpdHlDMUV2CiBfX1pONndlYnJ0
YzIyUlRQRnJhZ21lbnRhdGlvbkhlYWRlckQxRXYKIF9fWk42d2VicnRjMjJSVFBGcmFnbWVudGF0
aW9uSGVhZGVyQzFFdgotX19aTjZ3ZWJydGMxOFJlbW90ZVZpZGVvRW5jb2RlcjE0ZW5jb2RlQ29t
cGxldGVFUHZQaG1SS05TXzIyV2ViS2l0RW5jb2RlZEZyYW1lSW5mb0VQS05TXzIyUlRQRnJhZ21l
bnRhdGlvbkhlYWRlckUKK19fWk42d2VicnRjMjRlbmNvZGVyVmlkZW9UYXNrQ29tcGxldGVFUHZO
U18xNFZpZGVvQ29kZWNUeXBlRVBobVJLTlNfMjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZvRVBLTlNf
MjJSVFBGcmFnbWVudGF0aW9uSGVhZGVyRQogX19aTjZ3ZWJydGMyMlJUUEZyYWdtZW50YXRpb25I
ZWFkZXI2UmVzaXplRW0KIF9fWk42d2VicnRjMjRzZXRWaWRlb0VuY29kZXJDYWxsYmFja3NFUEZQ
dlJLTlNfMTRTZHBWaWRlb0Zvcm1hdEVFUEZpUzBfRVBGaVMwX1JLTlNfMTBWaWRlb0NvZGVjRUVQ
RmlTMF9SS05TXzEwVmlkZW9GcmFtZUViRVBGaVMwX1MwX0VQRnZTMF9SS05TXzEyVmlkZW9FbmNv
ZGVyMjFSYXRlQ29udHJvbFBhcmFtZXRlcnNFRQogX19aTjZ3ZWJydGMyMHNldExvY2FsRW5jb2Rl
clJhdGVzRVB2amoKQEAgLTI1OCw3ICsyNTgsNyBAQCBfX1pONndlYnJ0YzE0U2RwVmlkZW9Gb3Jt
YXRDMUVSS05TdDNfXzExMmJhc2ljX3N0cmluZ0ljTlMxXzExY2hhcl90cmFpdHNJY0VFTlMxXwog
X19aTjZ3ZWJydGMxOGNyZWF0ZUxvY2FsRW5jb2RlckVSS05TXzE0U2RwVmlkZW9Gb3JtYXRFVTEz
YmxvY2tfcG9pbnRlckZ2UEtobVJLTlNfMjJXZWJLaXRFbmNvZGVkRnJhbWVJbmZvRVBOU18yMlJU
UEZyYWdtZW50YXRpb25IZWFkZXJFRQogX19aTjZ3ZWJydGMxNFNkcFZpZGVvRm9ybWF0RDFFdgog
X19aTjZ3ZWJydGMxOXJlbGVhc2VMb2NhbEVuY29kZXJFUHYKLV9fWk42d2VicnRjMjNlbmNvZGVM
b2NhbEVuY29kZXJGcmFtZUVQdlAxMF9fQ1ZCdWZmZXJ4TlNfMTNWaWRlb1JvdGF0aW9uRWIKK19f
Wk42d2VicnRjMjNlbmNvZGVMb2NhbEVuY29kZXJGcmFtZUVQdlAxMF9fQ1ZCdWZmZXJ4ak5TXzEz
VmlkZW9Sb3RhdGlvbkViCiBfX1pOM3J0YzE3Q29weU9uV3JpdGVCdWZmZXIyNFVuc2hhcmVBbmRF
bnN1cmVDYXBhY2l0eUVtCiBfX1pOM3J0YzZUaHJlYWQxNEludm9rZUludGVybmFsRVJLTlNfOExv
Y2F0aW9uRU5TXzEyRnVuY3Rpb25WaWV3SUZ2dkVFRQogX19aTjZ3ZWJydGMxOFJ0cFNlbmRlcklu
dGVyZmFjZTM4U2V0RW5jb2RlclRvUGFja2V0aXplckZyYW1lVHJhbnNmb3JtZXJFTjNydGMxM3Nj
b3BlZF9yZWZwdHJJTlNfMjVGcmFtZVRyYW5zZm9ybWVySW50ZXJmYWNlRUVFCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdEVuY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5oCmluZGV4IGJhMjY2MTA3NTE5MTBiMTMyMTMxZmZl
NjdjYWE5MjExZWM5NTI3YWQuLmU3MDNmNjI4YTM3YTUyMWY2OWQ5OWYxMjU5MWY5MmM1MjhkOWU5
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5oCkBAIC04NiwzMiAr
ODYsMTUgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpSVFBGcmFnbWVu
dGF0aW9uSGVhZGVyPiBtX293bmVkSGVhZGVyOwogfTsKIAotY2xhc3MgUmVtb3RlVmlkZW9FbmNv
ZGVyIGZpbmFsIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyIHsKLXB1YmxpYzoKLSAgICBl
eHBsaWNpdCBSZW1vdGVWaWRlb0VuY29kZXIoV2ViS2l0VmlkZW9FbmNvZGVyKTsKLSAgICB+UmVt
b3RlVmlkZW9FbmNvZGVyKCkgPSBkZWZhdWx0OwotCi0gICAgc3RhdGljIHZvaWQgZW5jb2RlQ29t
cGxldGUodm9pZCogY2FsbGJhY2ssIHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgY29u
c3QgV2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYsIGNvbnN0IHdlYnJ0Yzo6UlRQRnJhZ21lbnRhdGlv
bkhlYWRlciopOwotCi1wcml2YXRlOgotICAgIGludDMyX3QgSW5pdEVuY29kZShjb25zdCBWaWRl
b0NvZGVjKiwgY29uc3QgU2V0dGluZ3MmKSBmaW5hbDsKLSAgICBpbnQzMl90IFJlZ2lzdGVyRW5j
b2RlQ29tcGxldGVDYWxsYmFjayhFbmNvZGVkSW1hZ2VDYWxsYmFjayopIGZpbmFsOwotICAgIGlu
dDMyX3QgUmVsZWFzZSgpIGZpbmFsOwotICAgIGludDMyX3QgRW5jb2RlKGNvbnN0IFZpZGVvRnJh
bWUmLCBjb25zdCBzdGQ6OnZlY3RvcjxWaWRlb0ZyYW1lVHlwZT4qKSBmaW5hbDsKLSAgICB2b2lk
IFNldFJhdGVzKGNvbnN0IFJhdGVDb250cm9sUGFyYW1ldGVycyYpIGZpbmFsOwotICAgIEVuY29k
ZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29uc3QgZmluYWw7Ci0KLSAgICBXZWJLaXRWaWRlb0Vu
Y29kZXIgbV9pbnRlcm5hbEVuY29kZXI7Ci19OwotCiB1c2luZyBMb2NhbEVuY29kZXIgPSB2b2lk
KjsKIHVzaW5nIExvY2FsRW5jb2RlckNhbGxiYWNrID0gdm9pZCAoXikoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3Qgc2l6ZSwgY29uc3Qgd2VicnRjOjpXZWJLaXRFbmNvZGVkRnJhbWVJbmZv
Jiwgd2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyKik7CiB2b2lkKiBjcmVhdGVMb2NhbEVu
Y29kZXIoY29uc3Qgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdCYsIExvY2FsRW5jb2RlckNhbGxiYWNr
KTsKIHZvaWQgcmVsZWFzZUxvY2FsRW5jb2RlcihMb2NhbEVuY29kZXIpOwogdm9pZCBpbml0aWFs
aXplTG9jYWxFbmNvZGVyKExvY2FsRW5jb2RlciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhl
aWdodCwgdW5zaWduZWQgaW50IHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQgaW50IG1heEJpdHJhdGUs
IHVuc2lnbmVkIGludCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpOwotdm9pZCBl
bmNvZGVMb2NhbEVuY29kZXJGcmFtZShMb2NhbEVuY29kZXIsIENWUGl4ZWxCdWZmZXJSZWYsIGlu
dDY0X3QgdGltZVN0YW1wLCB3ZWJydGM6OlZpZGVvUm90YXRpb24sIGJvb2wgaXNLZXlmcmFtZVJl
cXVpcmVkKTsKK3ZvaWQgZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWUoTG9jYWxFbmNvZGVyLCBDVlBp
eGVsQnVmZmVyUmVmLCBpbnQ2NF90IHRpbWVTdGFtcE5zLCB1aW50MzJfdCB0aW1lU3RhbXAsIHdl
YnJ0Yzo6VmlkZW9Sb3RhdGlvbiwgYm9vbCBpc0tleWZyYW1lUmVxdWlyZWQpOwogdm9pZCBzZXRM
b2NhbEVuY29kZXJSYXRlcyhMb2NhbEVuY29kZXIsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90
IGZyYW1lUmF0ZSk7CiB2b2lkIHNldExvY2FsRW5jb2Rlckxvd0xhdGVuY3koTG9jYWxFbmNvZGVy
LCBib29sIGlzTG93TGF0ZW5jeUVuYWJsZWQpOwordm9pZCBlbmNvZGVyVmlkZW9UYXNrQ29tcGxl
dGUodm9pZCosIHdlYnJ0Yzo6VmlkZW9Db2RlY1R5cGUsIHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGxlbmd0aCwgY29uc3QgV2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYsIGNvbnN0IHdlYnJ0Yzo6UlRQ
RnJhZ21lbnRhdGlvbkhlYWRlciopOwogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogYm9vbCBX
ZWJLaXRFbmNvZGVkRnJhbWVJbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViS2l0RW5j
b2RlZEZyYW1lSW5mbyYgaW5mbykKQEAgLTEzOSwyNyArMTIyLDIyIEBAIGJvb2wgV2ViS2l0RW5j
b2RlZEZyYW1lSW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdlYktpdEVuY29kZWRGcmFt
ZUluZm8mIGluCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8udGltaW5nLmZsYWdzKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnRp
bWluZy5lbmNvZGVfc3RhcnRfbXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGluZm8udGltaW5nLmVuY29kZV9maW5pc2hfbXMpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8udGltaW5nLnBhY2tl
dGl6YXRpb25fZmluaXNoX21zKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShpbmZvLnRpbWluZy5wYWNlcl9leGl0X21zKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnRpbWluZy5uZXR3b3JrX3Rp
bWVzdGFtcF9tcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaW5mby50aW1pbmcubmV0d29yazJfdGltZXN0YW1wX21zKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnRpbWluZy5yZWNlaXZlX3N0
YXJ0X21zKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aW5mby50aW1pbmcucmVjZWl2ZV9maW5pc2hfbXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIwMCw2ICsxNzgsNyBAQCB2b2lkIFdlYktpdFJUUEZy
YWdtZW50YXRpb25IZWFkZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVu
Y29kZXIgPDwgISFtX3ZhbHVlOwogICAgIGlmICghbV92YWx1ZSkKICAgICAgICAgcmV0dXJuOwor
CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV92YWx1ZS0+U2l6ZSgpKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92YWx1ZS0+U2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV92YWx1ZS0+T2Zmc2V0KGkp
KTsKQEAgLTIxMCwxMSArMTg5LDExIEBAIHZvaWQgV2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRl
cjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgogYm9vbCBXZWJLaXRSVFBGcmFnbWVudGF0aW9uSGVhZGVyOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgV2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlciYgaGVhZGVyKQogewotICAgIGJvb2wg
aXNOdWxsOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNOdWxsKSkKKyAgICBib29sIGhhc1Zh
bHVlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzVmFsdWUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0gICAgaWYgKGlzTnVsbCkgeworICAgIGlmICghaGFzVmFsdWUpIHsKICAg
ICAgICAgaGVhZGVyLm1fdmFsdWUgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CkBAIC0yMjMsMjEgKzIwMiwyMiBAQCBib29sIFdlYktpdFJUUEZyYWdtZW50YXRpb25IZWFk
ZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJLaXRSVFBGcmFnbWVudGF0aQogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGhl
YWRlci5tX293bmVkSGVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTx3ZWJydGM6OlJUUEZyYWdtZW50
YXRpb25IZWFkZXI+KCk7Ci0gICAgaGVhZGVyLm1fdmFsdWUgPSBoZWFkZXIubV9vd25lZEhlYWRl
ci5nZXQoKTsKLQotICAgIGhlYWRlci5tX3ZhbHVlLT5WZXJpZnlBbmRBbGxvY2F0ZUZyYWdtZW50
YXRpb25IZWFkZXIoc2l6ZSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBoZWFkZXIubV92
YWx1ZS0+U2l6ZSgpOyArK2kpIHsKKyAgICBhdXRvIG93bmVkSGVhZGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTx3ZWJydGM6OlJUUEZyYWdtZW50YXRpb25IZWFkZXI+KCk7CisgICAgb3duZWRIZWFkZXIt
PlZlcmlmeUFuZEFsbG9jYXRlRnJhZ21lbnRhdGlvbkhlYWRlcihzaXplKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICB1bnNpZ25lZCBvZmZzZXQsIGxl
bmd0aDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvZmZzZXQpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxlbmd0aCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaGVhZGVyLm1fdmFsdWUtPmZyYWdtZW50
YXRpb25PZmZzZXRbaV0gPSBvZmZzZXQ7Ci0gICAgICAgIGhlYWRlci5tX3ZhbHVlLT5mcmFnbWVu
dGF0aW9uTGVuZ3RoW2ldID0gbGVuZ3RoOworICAgICAgICBvd25lZEhlYWRlci0+ZnJhZ21lbnRh
dGlvbk9mZnNldFtpXSA9IG9mZnNldDsKKyAgICAgICAgb3duZWRIZWFkZXItPmZyYWdtZW50YXRp
b25MZW5ndGhbaV0gPSBsZW5ndGg7CiAgICAgfQogCisgICAgaGVhZGVyLm1fb3duZWRIZWFkZXIg
PSBzdGQ6Om1vdmUob3duZWRIZWFkZXIpOworICAgIGhlYWRlci5tX3ZhbHVlID0gaGVhZGVyLm1f
b3duZWRIZWFkZXIuZ2V0KCk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJL
aXRFbmNvZGVyLm1tIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL1dlYktpdC9XZWJLaXRFbmNvZGVyLm1tCmluZGV4IDVmNTJjZGQzNTUwM2I4N2Q0YjA0M2Qz
NzM5OTc2Nzc2OWFlYmVjOTMuLmQ5Y2Y3YTVkZTlhZmNmMWZlYzY3ZmQ0MWYwOWRjM2VkNTNmMjVm
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIubW0KQEAgLTQyLDYg
KzQyLDcgQEAKIAogQGludGVyZmFjZSBXS19SVENMb2NhbFZpZGVvSDI2NEgyNjVFbmNvZGVyIDog
TlNPYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVjSW5mbzooUlRDVmlkZW9Db2Rl
Y0luZm8qKWNvZGVjSW5mbzsKKy0gKHdlYnJ0Yzo6VmlkZW9Db2RlY1R5cGUpY29kZWNUeXBlOwog
LSAodm9pZClzZXRDYWxsYmFjazooUlRDVmlkZW9FbmNvZGVyQ2FsbGJhY2spY2FsbGJhY2s7CiAt
IChOU0ludGVnZXIpcmVsZWFzZUVuY29kZXI7CiAtIChOU0ludGVnZXIpc3RhcnRFbmNvZGVXaXRo
U2V0dGluZ3M6KFJUQ1ZpZGVvRW5jb2RlclNldHRpbmdzICopc2V0dGluZ3MgbnVtYmVyT2ZDb3Jl
czooaW50KW51bWJlck9mQ29yZXM7CkBAIC01OCwxMyArNTksMjAgQEAKIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvZGVjSW5mbzooUlRDVmlkZW9Db2RlY0luZm8qKWNvZGVjSW5mbyB7CiAgICAg
aWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKICAgICAgICAgaWYgKFtjb2RlY0luZm8ubmFtZSBp
c0VxdWFsVG9TdHJpbmc6QCJIMjY1Il0pCi0gICAgICAgICAgICBtX2gyNjVFbmNvZGVyID0gW1tS
VENWaWRlb0VuY29kZXJIMjY1IGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIG1faDI2NUVuY29k
ZXIgPSBbW1JUQ1ZpZGVvRW5jb2RlckgyNjUgYWxsb2NdIGluaXRXaXRoQ29kZWNJbmZvOmNvZGVj
SW5mb107CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1faDI2NEVuY29kZXIgPSBbW1JUQ1Zp
ZGVvRW5jb2RlckgyNjQgYWxsb2NdIGluaXRdOworICAgICAgICAgICAgbV9oMjY0RW5jb2RlciA9
IFtbUlRDVmlkZW9FbmNvZGVySDI2NCBhbGxvY10gaW5pdFdpdGhDb2RlY0luZm86Y29kZWNJbmZv
XTsKICAgICB9CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKKy0gKHdlYnJ0Yzo6VmlkZW9Db2RlY1R5
cGUpY29kZWNUeXBlCit7CisgICAgaWYgKG1faDI2NEVuY29kZXIpCisgICAgICAgIHJldHVybiB3
ZWJydGM6OmtWaWRlb0NvZGVjSDI2NDsKKyAgICByZXR1cm4gd2VicnRjOjprVmlkZW9Db2RlY0gy
NjU7Cit9CisKIC0gKHZvaWQpc2V0Q2FsbGJhY2s6KFJUQ1ZpZGVvRW5jb2RlckNhbGxiYWNrKWNh
bGxiYWNrIHsKICAgICBpZiAobV9oMjY0RW5jb2RlcikKICAgICAgICAgcmV0dXJuIFttX2gyNjRF
bmNvZGVyIHNldENhbGxiYWNrOmNhbGxiYWNrXTsKQEAgLTExNywxOSArMTI1LDYgQEAgcHJpdmF0
ZToKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9FbmNvZGVyRmFjdG9yeT4gbV9pbnRl
cm5hbEVuY29kZXJGYWN0b3J5OwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9F
bmNvZGVyRmFjdG9yeT4gY3JlYXRlV2ViS2l0RW5jb2RlckZhY3RvcnkoV2ViS2l0SDI2NSBzdXBw
b3J0c0gyNjUsIFdlYktpdFZQOSBzdXBwb3J0c1ZQOSwgV2ViS2l0SDI2NExvd0xhdGVuY3kgdXNl
SDI2NExvd0xhdGVuY3kpCi17Ci0jaWYgRU5BQkxFX1ZDUF9FTkNPREVSIHx8IEVOQUJMRV9WQ1Bf
VlRCX0VOQ09ERVIKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3Rk
OjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgd2VicnRjOjpWUE1vZHVsZUluaXRp
YWxpemUoKTsKLSAgICB9KTsKLSNlbmRpZgotCi0gICAgYXV0byBpbnRlcm5hbEZhY3RvcnkgPSBP
YmpDVG9OYXRpdmVWaWRlb0VuY29kZXJGYWN0b3J5KFtbUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZh
Y3RvcnkgYWxsb2NdIGluaXRXaXRoSDI2NTogc3VwcG9ydHNIMjY1ID09IFdlYktpdEgyNjU6Ok9u
IHZwOTpzdXBwb3J0c1ZQOSA9PSBXZWJLaXRWUDk6Ok9uIGxvd0xhdGVuY3lIMjY0OnVzZUgyNjRM
b3dMYXRlbmN5ID09IFdlYktpdEgyNjRMb3dMYXRlbmN5OjpPbl0pOwotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFZpZGVvRW5jb2RlckZhY3RvcnlXaXRoU2ltdWxjYXN0PihzdGQ6Om1vdmUo
aW50ZXJuYWxGYWN0b3J5KSk7Ci19Ci0KIHN0YXRpYyBib29sIGgyNjRIYXJkd2FyZUVuY29kZXJB
bGxvd2VkID0gdHJ1ZTsKIHZvaWQgc2V0SDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoYm9vbCBh
bGxvd2VkKQogewpAQCAtMTcxLDExICsxNjYsNzkgQEAgdm9pZCBzZXRWaWRlb0VuY29kZXJDYWxs
YmFja3MoVmlkZW9FbmNvZGVyQ3JlYXRlQ2FsbGJhY2sgY3JlYXRlQ2FsbGJhY2ssIFZpZGVvRW4K
ICAgICBjYWxsYmFja3Muc2V0UmF0ZXNDYWxsYmFjayA9IHNldFJhdGVzQ2FsbGJhY2s7CiB9CiAK
K2NsYXNzIFJlbW90ZVZpZGVvRW5jb2RlciBmaW5hbCA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRW5j
b2RlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlVmlkZW9FbmNvZGVyKFdlYktpdFZp
ZGVvRW5jb2Rlcik7CisgICAgflJlbW90ZVZpZGVvRW5jb2RlcigpOworCitwcml2YXRlOgorICAg
IGludDMyX3QgSW5pdEVuY29kZShjb25zdCBWaWRlb0NvZGVjKiwgY29uc3QgU2V0dGluZ3MmKSBm
aW5hbDsKKyAgICBpbnQzMl90IFJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayhFbmNvZGVk
SW1hZ2VDYWxsYmFjayopIGZpbmFsOworICAgIGludDMyX3QgUmVsZWFzZSgpIGZpbmFsOworICAg
IGludDMyX3QgRW5jb2RlKGNvbnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6OnZlY3RvcjxWaWRl
b0ZyYW1lVHlwZT4qKSBmaW5hbDsKKyAgICB2b2lkIFNldFJhdGVzKGNvbnN0IFJhdGVDb250cm9s
UGFyYW1ldGVycyYpIGZpbmFsOworICAgIEVuY29kZXJJbmZvIEdldEVuY29kZXJJbmZvKCkgY29u
c3QgZmluYWw7CisKKyAgICBXZWJLaXRWaWRlb0VuY29kZXIgbV9pbnRlcm5hbEVuY29kZXI7Cit9
OworCitjbGFzcyBSZW1vdGVWaWRlb0VuY29kZXJGYWN0b3J5IGZpbmFsIDogcHVibGljIFZpZGVv
RW5jb2RlckZhY3RvcnkgeworcHVibGljOgorICAgIGV4cGxpY2l0IFJlbW90ZVZpZGVvRW5jb2Rl
ckZhY3Rvcnkoc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rvcnk+JiYpOworICAgIH5S
ZW1vdGVWaWRlb0VuY29kZXJGYWN0b3J5KCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIFZp
ZGVvRW5jb2RlckZhY3Rvcnk6OkNvZGVjSW5mbyBRdWVyeVZpZGVvRW5jb2Rlcihjb25zdCBTZHBW
aWRlb0Zvcm1hdCYgZm9ybWF0KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ludGVybmFsRmFjdG9y
eS0+UXVlcnlWaWRlb0VuY29kZXIoZm9ybWF0KTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRl
b0VuY29kZXI+IENyZWF0ZVZpZGVvRW5jb2Rlcihjb25zdCBTZHBWaWRlb0Zvcm1hdCYgZm9ybWF0
KSBmaW5hbDsKKyAgICBzdGQ6OnZlY3RvcjxTZHBWaWRlb0Zvcm1hdD4gR2V0U3VwcG9ydGVkRm9y
bWF0cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW50ZXJuYWxGYWN0b3J5LT5HZXRTdXBwb3J0
ZWRGb3JtYXRzKCk7IH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0VuY29kZXJGYWN0b3J5
PiBtX2ludGVybmFsRmFjdG9yeTsKK307CisKK1JlbW90ZVZpZGVvRW5jb2RlckZhY3Rvcnk6OlJl
bW90ZVZpZGVvRW5jb2RlckZhY3Rvcnkoc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2RlckZhY3Rv
cnk+JiYgZmFjdG9yeSkKKyAgICA6IG1faW50ZXJuYWxGYWN0b3J5KHN0ZDo6bW92ZShmYWN0b3J5
KSkKK3sKK30KKworc3RkOjp1bmlxdWVfcHRyPFZpZGVvRW5jb2Rlcj4gUmVtb3RlVmlkZW9FbmNv
ZGVyRmFjdG9yeTo6Q3JlYXRlVmlkZW9FbmNvZGVyKGNvbnN0IFNkcFZpZGVvRm9ybWF0JiBmb3Jt
YXQpCit7CisgICAgaWYgKCF2aWRlb0VuY29kZXJDYWxsYmFja3MoKS5jcmVhdGVDYWxsYmFjaykK
KyAgICAgICAgcmV0dXJuIG1faW50ZXJuYWxGYWN0b3J5LT5DcmVhdGVWaWRlb0VuY29kZXIoZm9y
bWF0KTsKKworICAgIGF1dG8gaW50ZXJuYWxFbmNvZGVyID0gdmlkZW9FbmNvZGVyQ2FsbGJhY2tz
KCkuY3JlYXRlQ2FsbGJhY2soZm9ybWF0KTsKKyAgICBpZiAoIWludGVybmFsRW5jb2RlcikKKyAg
ICAgICAgcmV0dXJuIG1faW50ZXJuYWxGYWN0b3J5LT5DcmVhdGVWaWRlb0VuY29kZXIoZm9ybWF0
KTsKKworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZVZpZGVvRW5jb2Rlcj4oaW50
ZXJuYWxFbmNvZGVyKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVy
RmFjdG9yeT4gY3JlYXRlV2ViS2l0RW5jb2RlckZhY3RvcnkoV2ViS2l0SDI2NSBzdXBwb3J0c0gy
NjUsIFdlYktpdFZQOSBzdXBwb3J0c1ZQOSwgV2ViS2l0SDI2NExvd0xhdGVuY3kgdXNlSDI2NExv
d0xhdGVuY3kpCit7CisjaWYgRU5BQkxFX1ZDUF9FTkNPREVSIHx8IEVOQUJMRV9WQ1BfVlRCX0VO
Q09ERVIKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgd2VicnRjOjpWUE1vZHVsZUluaXRpYWxpemUo
KTsKKyAgICB9KTsKKyNlbmRpZgorCisgICAgYXV0byBpbnRlcm5hbEZhY3RvcnkgPSBPYmpDVG9O
YXRpdmVWaWRlb0VuY29kZXJGYWN0b3J5KFtbUlRDRGVmYXVsdFZpZGVvRW5jb2RlckZhY3Rvcnkg
YWxsb2NdIGluaXRXaXRoSDI2NTogc3VwcG9ydHNIMjY1ID09IFdlYktpdEgyNjU6Ok9uIHZwOTpz
dXBwb3J0c1ZQOSA9PSBXZWJLaXRWUDk6Ok9uIGxvd0xhdGVuY3lIMjY0OnVzZUgyNjRMb3dMYXRl
bmN5ID09IFdlYktpdEgyNjRMb3dMYXRlbmN5OjpPbl0pOworCisgICAgaWYgKHZpZGVvRW5jb2Rl
ckNhbGxiYWNrcygpLmNyZWF0ZUNhbGxiYWNrKQorICAgICAgICBpbnRlcm5hbEZhY3RvcnkgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlbW90ZVZpZGVvRW5jb2RlckZhY3Rvcnk+KHN0ZDo6bW92ZShpbnRl
cm5hbEZhY3RvcnkpKTsKKworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvRW5jb2Rl
ckZhY3RvcnlXaXRoU2ltdWxjYXN0PihzdGQ6Om1vdmUoaW50ZXJuYWxGYWN0b3J5KSk7Cit9CisK
IFJlbW90ZVZpZGVvRW5jb2Rlcjo6UmVtb3RlVmlkZW9FbmNvZGVyKFdlYktpdFZpZGVvRW5jb2Rl
ciBpbnRlcm5hbEVuY29kZXIpCiAgICAgOiBtX2ludGVybmFsRW5jb2RlcihpbnRlcm5hbEVuY29k
ZXIpCiB7CiB9CiAKK1JlbW90ZVZpZGVvRW5jb2Rlcjo6flJlbW90ZVZpZGVvRW5jb2RlcigpCit7
CisgICAgdmlkZW9FbmNvZGVyQ2FsbGJhY2tzKCkucmVsZWFzZUNhbGxiYWNrKG1faW50ZXJuYWxF
bmNvZGVyKTsKK30KKwogaW50MzJfdCBSZW1vdGVWaWRlb0VuY29kZXI6OkluaXRFbmNvZGUoY29u
c3QgVmlkZW9Db2RlYyogY29kZWMsIGNvbnN0IFNldHRpbmdzJikKIHsKICAgICBpZiAoU2ltdWxj
YXN0VXRpbGl0eTo6TnVtYmVyT2ZTaW11bGNhc3RTdHJlYW1zKCpjb2RlYykgPiAxKQpAQCAtMTg2
LDcgKzI0OSw3IEBAIGludDMyX3QgUmVtb3RlVmlkZW9FbmNvZGVyOjpJbml0RW5jb2RlKGNvbnN0
IFZpZGVvQ29kZWMqIGNvZGVjLCBjb25zdCBTZXR0aW5ncyYpCiAKIGludDMyX3QgUmVtb3RlVmlk
ZW9FbmNvZGVyOjpSZWxlYXNlKCkKIHsKLSAgICByZXR1cm4gdmlkZW9FbmNvZGVyQ2FsbGJhY2tz
KCkucmVsZWFzZUNhbGxiYWNrKG1faW50ZXJuYWxFbmNvZGVyKTsKKyAgICByZXR1cm4gMDsKIH0K
IAogaW50MzJfdCBSZW1vdGVWaWRlb0VuY29kZXI6OkVuY29kZShjb25zdCBWaWRlb0ZyYW1lJiBm
cmFtZSwgY29uc3Qgc3RkOjp2ZWN0b3I8VmlkZW9GcmFtZVR5cGU+KiBmcmFtZVR5cGVzKQpAQCAt
MjI4LDcgKzI5MSw3IEBAIGludDMyX3QgUmVtb3RlVmlkZW9FbmNvZGVyOjpSZWdpc3RlckVuY29k
ZUNvbXBsZXRlQ2FsbGJhY2soRW5jb2RlZEltYWdlQ2FsbGJhY2sqCiAgICAgcmV0dXJuIHZpZGVv
RW5jb2RlckNhbGxiYWNrcygpLnJlZ2lzdGVyRW5jb2RlQ29tcGxldGVDYWxsYmFjayhtX2ludGVy
bmFsRW5jb2RlciwgY2FsbGJhY2spOwogfQogCi12b2lkIFJlbW90ZVZpZGVvRW5jb2Rlcjo6ZW5j
b2RlQ29tcGxldGUodm9pZCogY2FsbGJhY2ssIHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0
aCwgY29uc3QgV2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYgaW5mbywgY29uc3Qgd2VicnRjOjpSVFBG
cmFnbWVudGF0aW9uSGVhZGVyKiBoZWFkZXIpCit2b2lkIGVuY29kZXJWaWRlb1Rhc2tDb21wbGV0
ZSh2b2lkKiBjYWxsYmFjaywgd2VicnRjOjpWaWRlb0NvZGVjVHlwZSBjb2RlY1R5cGUsIHVpbnQ4
X3QqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgY29uc3QgV2ViS2l0RW5jb2RlZEZyYW1lSW5mbyYg
aW5mbywgY29uc3Qgd2VicnRjOjpSVFBGcmFnbWVudGF0aW9uSGVhZGVyKiBoZWFkZXIpCiB7CiAg
ICAgd2VicnRjOjpFbmNvZGVkSW1hZ2UgZW5jb2RlZEltYWdlKGJ1ZmZlciwgbGVuZ3RoLCBsZW5n
dGgpOwogICAgIGVuY29kZWRJbWFnZS5fZW5jb2RlZFdpZHRoID0gaW5mby53aWR0aDsKQEAgLTI0
NCw4ICszMDcsMTEgQEAgdm9pZCBSZW1vdGVWaWRlb0VuY29kZXI6OmVuY29kZUNvbXBsZXRlKHZv
aWQqIGNhbGxiYWNrLCB1aW50OF90KiBidWZmZXIsIHNpemVfdAogICAgIGVuY29kZWRJbWFnZS5j
b250ZW50X3R5cGVfID0gaW5mby5jb250ZW50VHlwZTsKIAogICAgIENvZGVjU3BlY2lmaWNJbmZv
IGNvZGVjU3BlY2lmaWNJbmZvOwotICAgIGNvZGVjU3BlY2lmaWNJbmZvLmNvZGVjVHlwZSA9IHdl
YnJ0Yzo6a1ZpZGVvQ29kZWNIMjY0OwotICAgIGNvZGVjU3BlY2lmaWNJbmZvLmNvZGVjU3BlY2lm
aWMuSDI2NC5wYWNrZXRpemF0aW9uX21vZGUgPSBIMjY0UGFja2V0aXphdGlvbk1vZGU6Ok5vbklu
dGVybGVhdmVkOworICAgIGNvZGVjU3BlY2lmaWNJbmZvLmNvZGVjVHlwZSA9IGNvZGVjVHlwZTsK
KyAgICBpZiAoY29kZWNUeXBlID09IGtWaWRlb0NvZGVjSDI2NCkKKyAgICAgICAgY29kZWNTcGVj
aWZpY0luZm8uY29kZWNTcGVjaWZpYy5IMjY0LnBhY2tldGl6YXRpb25fbW9kZSA9IEgyNjRQYWNr
ZXRpemF0aW9uTW9kZTo6Tm9uSW50ZXJsZWF2ZWQ7CisgICAgZWxzZSBpZiAoY29kZWNUeXBlID09
IGtWaWRlb0NvZGVjSDI2NSkKKyAgICAgICAgY29kZWNTcGVjaWZpY0luZm8uY29kZWNTcGVjaWZp
Yy5IMjY1LnBhY2tldGl6YXRpb25fbW9kZSA9IEgyNjVQYWNrZXRpemF0aW9uTW9kZTo6Tm9uSW50
ZXJsZWF2ZWQ7CiAKICAgICBzdGF0aWNfY2FzdDxFbmNvZGVkSW1hZ2VDYWxsYmFjayo+KGNhbGxi
YWNrKS0+T25FbmNvZGVkSW1hZ2UoZW5jb2RlZEltYWdlLCAmY29kZWNTcGVjaWZpY0luZm8sIGhl
YWRlcik7CiB9CkBAIC0yODcsNiArMzUzLDggQEAgdm9pZCByZWxlYXNlTG9jYWxFbmNvZGVyKExv
Y2FsRW5jb2RlciBsb2NhbEVuY29kZXIpCiAKIHZvaWQgaW5pdGlhbGl6ZUxvY2FsRW5jb2RlcihM
b2NhbEVuY29kZXIgbG9jYWxFbmNvZGVyLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0
LCB1bnNpZ25lZCBpbnQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBpbnQgbWF4Qml0cmF0ZSwgdW5z
aWduZWQgaW50IG1pbkJpdHJhdGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSkKIHsKKyAgICBhdXRv
ICplbmNvZGVyID0gKF9fYnJpZGdlIFdLX1JUQ0xvY2FsVmlkZW9IMjY0SDI2NUVuY29kZXIgKiko
bG9jYWxFbmNvZGVyKTsKKwogICAgIHdlYnJ0Yzo6VmlkZW9Db2RlYyBjb2RlY1NldHRpbmdzOwog
ICAgIGNvZGVjU2V0dGluZ3Mud2lkdGggPSB3aWR0aDsKICAgICBjb2RlY1NldHRpbmdzLmhlaWdo
dCA9IGhlaWdodDsKQEAgLTI5NCwxOCArMzYyLDE5IEBAIHZvaWQgaW5pdGlhbGl6ZUxvY2FsRW5j
b2RlcihMb2NhbEVuY29kZXIgbG9jYWxFbmNvZGVyLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QK
ICAgICBjb2RlY1NldHRpbmdzLm1heEJpdHJhdGUgPSBtYXhCaXRyYXRlOwogICAgIGNvZGVjU2V0
dGluZ3MubWluQml0cmF0ZSA9IG1pbkJpdHJhdGU7CiAgICAgY29kZWNTZXR0aW5ncy5tYXhGcmFt
ZXJhdGUgPSBtYXhGcmFtZXJhdGU7CisgICAgY29kZWNTZXR0aW5ncy5jb2RlY1R5cGUgPSBlbmNv
ZGVyLmNvZGVjVHlwZTsKIAotICAgIGF1dG8gKmVuY29kZXIgPSAoX19icmlkZ2UgV0tfUlRDTG9j
YWxWaWRlb0gyNjRIMjY1RW5jb2RlciAqKShsb2NhbEVuY29kZXIpOwogICAgIFtlbmNvZGVyIHN0
YXJ0RW5jb2RlV2l0aFNldHRpbmdzOltbUlRDVmlkZW9FbmNvZGVyU2V0dGluZ3MgYWxsb2NdIGlu
aXRXaXRoTmF0aXZlVmlkZW9Db2RlYzomY29kZWNTZXR0aW5nc10gbnVtYmVyT2ZDb3JlczoxXTsK
IH0KIAotdm9pZCBlbmNvZGVMb2NhbEVuY29kZXJGcmFtZShMb2NhbEVuY29kZXIgbG9jYWxFbmNv
ZGVyLCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBpbnQ2NF90IHRpbWVTdGFtcCwgd2Vi
cnRjOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIGlzS2V5ZnJhbWVSZXF1aXJlZCkKK3Zv
aWQgZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWUoTG9jYWxFbmNvZGVyIGxvY2FsRW5jb2RlciwgQ1ZQ
aXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgaW50NjRfdCB0aW1lU3RhbXBOcywgdWludDMyX3Qg
dGltZVN0YW1wLCB3ZWJydGM6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgaXNLZXlmcmFt
ZVJlcXVpcmVkKQogewogICAgIE5TTXV0YWJsZUFycmF5PE5TTnVtYmVyICo+ICpydGNGcmFtZVR5
cGVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICBpZiAoaXNLZXlmcmFtZVJlcXVpcmVk
KQogICAgICAgICBbcnRjRnJhbWVUeXBlcyBhZGRPYmplY3Q6QChSVENGcmFtZVR5cGUoUlRDRnJh
bWVUeXBlVmlkZW9GcmFtZUtleSkpXTsKIAotICAgIGF1dG8gKnZpZGVvRnJhbWUgPSBbW1JUQ1Zp
ZGVvRnJhbWUgYWxsb2NdIGluaXRXaXRoQnVmZmVyOlRvT2JqQ1ZpZGVvRnJhbWVCdWZmZXIocGl4
ZWxCdWZmZXJUb0ZyYW1lKHBpeGVsQnVmZmVyKSkgcm90YXRpb246UlRDVmlkZW9Sb3RhdGlvbihy
b3RhdGlvbikgdGltZVN0YW1wTnM6dGltZVN0YW1wXTsKKyAgICBhdXRvICp2aWRlb0ZyYW1lID0g
W1tSVENWaWRlb0ZyYW1lIGFsbG9jXSBpbml0V2l0aEJ1ZmZlcjpUb09iakNWaWRlb0ZyYW1lQnVm
ZmVyKHBpeGVsQnVmZmVyVG9GcmFtZShwaXhlbEJ1ZmZlcikpIHJvdGF0aW9uOlJUQ1ZpZGVvUm90
YXRpb24ocm90YXRpb24pIHRpbWVTdGFtcE5zOnRpbWVTdGFtcE5zXTsKKyAgICB2aWRlb0ZyYW1l
LnRpbWVTdGFtcCA9IHRpbWVTdGFtcDsKICAgICBhdXRvICplbmNvZGVyID0gKF9fYnJpZGdlIFdL
X1JUQ0xvY2FsVmlkZW9IMjY0SDI2NUVuY29kZXIgKikobG9jYWxFbmNvZGVyKTsKICAgICBbZW5j
b2RlciBlbmNvZGU6dmlkZW9GcmFtZSBjb2RlY1NwZWNpZmljSW5mbzpuaWwgZnJhbWVUeXBlczpy
dGNGcmFtZVR5cGVzXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBmY2IyMWNkYWYyZGUxZDc0NzI1NTgxZjJkZjEwYTYyZTE3
NGNmMDY1Li4wZDUzNjgwOWU3MTA3YjQxZDI1MDMwNmZhNjcwZTI1YTk0YTU1MzI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00
MjA1LDggKzQyMDUsOCBAQAogCQlDRDY0MUVCMzE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3Vy
Y2VQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDY0MUVCMTE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggKi87IH07
CiAJCUNENjQxRUI0MTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDY0MUVCMjE4MThG
NUVEMDBFRTRDNDEgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5oICovOyB9OwogCQlDRDcyMEI0RjIy
NjhCNTEzMDAwNDdGREUgLyogSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDcyMEI0OTIyNjgyQzdGMDAw
NDdGREUgLyogSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQ0Q3RDMzNDQxQzdBMTIzRjAwMDQxMjkz
IC8qIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEN0QzMzQyMUM3QTEyM0YwMDA0MTI5MyAvKiBQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWLmggKi87IH07Ci0JCUNEN0QzMzQ4MUM3QTE2QkYwMDA0MTI5MyAvKiBDb3Jl
VmlkZW9Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q3RDMzNDYxQzdBMTZCRjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmggKi87
IH07CisJCUNEN0QzMzQ0MUM3QTEyM0YwMDA0MTI5MyAvKiBQaXhlbEJ1ZmZlckNvbmZvcm1lckNW
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDdEMzM0
MjFDN0ExMjNGMDAwNDEyOTMgLyogUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEN0QzMzQ4MUM3QTE2QkYw
MDA0MTI5MyAvKiBDb3JlVmlkZW9Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q3RDMzNDYxQzdBMTZCRjAwMDQxMjkzIC8qIENvcmVWaWRl
b1NvZnRMaW5rLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0Q3REJCMjkxOENBMTlDNjAwQzExMDY2IC8qIENTU0dyaWRMaW5lTmFtZXNWYWx1ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q3REJCMjcx
OENBMTFGRjAwQzExMDY2IC8qIENTU0dyaWRMaW5lTmFtZXNWYWx1ZS5oICovOyB9OwogCQlDRDdF
MDUyMjE2NTFDMjgyMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q3RTA1MjExNjUxQTg0
MTAwQzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSAqLzsgfTsKIAkJQ0Q4M0Qz
NjIyMTEyMkEyMTAwNzZFMTFDIC8qIERlZmVycmFibGVUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgzRDM1QTIxMTExMDgyMDA3NkUxMUMgLyog
RGVmZXJyYWJsZVRhc2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZVZp
ZGVvU29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVv
U29mdExpbmsuY3BwCmluZGV4IGQ3ZjI4Yzg1Y2E5ZWVmNGI3M2Y4NTc4ZWEwOTJjNTFhMGQ4YmVk
YzIuLmEwNWZiYjM3YzU2NmIyMWQ2Y2QxMWZkYjBlOWMwZmUzY2IxZjMzMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29y
ZVZpZGVvLCBDVlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MKIFNPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGUs
IENWUmV0dXJuLChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGRGljdGlvbmFyeVJlZiBwb29s
QXR0cmlidXRlcywgQ0ZEaWN0aW9uYXJ5UmVmIHBpeGVsQnVmZmVyQXR0cmlidXRlcywgQ1ZQaXhl
bEJ1ZmZlclBvb2xSZWYqIHBvb2xPdXQpLCAoYWxsb2NhdG9yLCBwb29sQXR0cmlidXRlcywgcGl4
ZWxCdWZmZXJBdHRyaWJ1dGVzLCBwb29sT3V0KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGVQaXhlbEJ1ZmZl
ciwgQ1ZSZXR1cm4sIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENWUGl4ZWxCdWZmZXJQb29s
UmVmIHBpeGVsQnVmZmVyUG9vbCwgQ1ZQaXhlbEJ1ZmZlclJlZiogcGl4ZWxCdWZmZXJPdXQpLCAo
YWxsb2NhdG9yLCBwaXhlbEJ1ZmZlclBvb2wsIHBpeGVsQnVmZmVyT3V0KSkKIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlckdldElP
U3VyZmFjZSwgSU9TdXJmYWNlUmVmLCAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciksIChw
aXhlbEJ1ZmZlcikpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBDb3Jl
VmlkZW8sIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LCBDRlN0cmluZ1JlZikKK1NP
RlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFdlYkNvcmUsIENvcmVWaWRl
bywga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksIENGU3RyaW5nUmVmLCBXRUJDT1JF
X0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRl
bywga0NWUGl4ZWxCdWZmZXJDR0JpdG1hcENvbnRleHRDb21wYXRpYmlsaXR5S2V5LCBDRlN0cmlu
Z1JlZikKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywg
a0NWUGl4ZWxCdWZmZXJDR0ltYWdlQ29tcGF0aWJpbGl0eUtleSwgQ0ZTdHJpbmdSZWYpCiBTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlVmlkZW8sIGtDVlBpeGVsQnVm
ZmVySU9TdXJmYWNlT3BlbkdMRVNGQk9Db21wYXRpYmlsaXR5S2V5LCBDRlN0cmluZ1JlZikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVy
Q29uZm9ybWVyQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVs
QnVmZmVyQ29uZm9ybWVyQ1YuaAppbmRleCBhZDQxMGYyODMwYTc5NTllMzIzODk1ZGQyYzg0MjUz
ZDBjZjI3MTE0Li5jM2M1MzdjZTI3YzA0ODhhNTg4YzRkMDFiOGQ1NDA4ODhkYzdmNDA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNv
bmZvcm1lckNWLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4
ZWxCdWZmZXJDb25mb3JtZXJDVi5oCkBAIC0zNiw4ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YoQ0ZEaWN0aW9uYXJ5
UmVmIGF0dHJpYnV0ZXMpOwotICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0
KENWUGl4ZWxCdWZmZXJSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIFBpeGVsQnVmZmVyQ29uZm9y
bWVyQ1YoQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIFJl
dGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0KENWUGl4ZWxCdWZmZXJSZWYpOwogICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihDVlBpeGVs
QnVmZmVyUmVmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXJDb2NvYS5oCmluZGV4IDk4MWNkYjc1ODc4M2MwMzAzNmZlNmMzMTBiNzI3NjUzN2ZiMzQyNzYu
LjVkMzlkYTk1ZGQ2ZjMxZDgzMzM2NjhhYjBiMDBjMzEzODE1YjdhMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaApAQCAtNDIsMTAgKzQyLDEwIEBAIHB1Ymxp
YzoKICAgICB+TGliV2ViUlRDUHJvdmlkZXJDb2NvYSgpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gY3JlYXRlRGVjb2RlckZhY3RvcnkoKSBvdmVy
cmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiBj
cmVhdGVFbmNvZGVyRmFjdG9yeSgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgc2V0
QWN0aXZlKGJvb2wpIGZpbmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5j
b2RlckZhY3Rvcnk+IGNyZWF0ZUVuY29kZXJGYWN0b3J5KCkgZmluYWw7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKaW5kZXggMWU2ZjZmYmU2NDlhODM4NWQ4NThjOGIy
N2MxYzVlOWMzNjZlZGM1Ny4uMzYwMzEwYjdkMTIxZDI4NmQ4ZDE2MWYxODNhYmQwZTc0NWI4MzUz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3Jl
YXRlRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVj
dG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiwgYm9vbCB1c2VMb3dMYXRlbmN5KTsKICAg
ICB2b2lkIHJlbGVhc2VFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIGlu
aXRpYWxpemVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyLCB1aW50MTZfdCB3aWR0aCwgdWlu
dDE2X3QgaGVpZ2h0LCB1bnNpZ25lZCBzdGFydEJpdHJhdGUsIHVuc2lnbmVkIG1heEJpdHJhdGUs
IHVuc2lnbmVkIG1pbkJpdHJhdGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSk7Ci0gICAgdm9pZCBl
bmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1w
bGUmJiwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKKyAgICB2b2lkIGVuY29kZUZyYW1l
KFJUQ0VuY29kZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmLCB1aW50
MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSk7CiAgICAgdm9pZCBz
ZXRFbmNvZGVSYXRlcyhSVENFbmNvZGVySWRlbnRpZmllciwgdWludDMyX3QgYml0UmF0ZSwgdWlu
dDMyX3QgZnJhbWVSYXRlKTsKIAogICAgIENGRGljdGlvbmFyeVJlZiBpb1N1cmZhY2VQaXhlbEJ1
ZmZlckNyZWF0aW9uT3B0aW9ucyhJT1N1cmZhY2VSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggMDIzYWE2MjE1Mzk3MWU0MGEwZmE0ZGVlZjc2MmMyOTJiY2IyMGM3OS4u
YzI5OWJmM2JkNTE4ZmFhNWQ4ZWU5NDUzMWM1MjUzNWU0YmNmODBlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVj
c1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0zNCw3ICszNCw3IEBAIG1lc3NhZ2VzIC0+IExpYldlYlJU
Q0NvZGVjc1Byb3h5IE5vdFJlZkNvdW50ZWQgewogICAgIENyZWF0ZUVuY29kZXIoV2ViS2l0OjpS
VENFbmNvZGVySWRlbnRpZmllciBpZCwgU3RyaW5nIGZvcm1hdE5hbWUsIFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJhbWV0ZXJzLCBib29sIHVzZUxvd0xhdGVuY3kpOwogICAg
IFJlbGVhc2VFbmNvZGVyKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQpCiAgICAgSW5p
dGlhbGl6ZUVuY29kZXIoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgdWludDE2X3Qg
d2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBt
YXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpCi0g
ICAgRW5jb2RlRnJhbWUoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgV2ViQ29yZTo6
UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpCisg
ICAgRW5jb2RlRnJhbWUoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgV2ViQ29yZTo6
UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxk
RW5jb2RlQXNLZXlGcmFtZSkKICAgICBTZXRFbmNvZGVSYXRlcyhXZWJLaXQ6OlJUQ0VuY29kZXJJ
ZGVudGlmaWVyIGlkLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjc1Byb3h5Lm1tCmluZGV4IDQ3ZjIxYTk0ZDE1ZDMyNWJkNmU3ZjQwODkxODAwNmNlZDI5MjRm
M2UuLjQwMGM5ZTU5OTRjY2UyNTdhZDUzYzk5ODhhOGFmYTMwZGE3YWYxZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94
eS5tbQpAQCAtMTc0LDcgKzE3NCw3IEBAIHN0YXRpYyBpbmxpbmUgd2VicnRjOjpWaWRlb1JvdGF0
aW9uIHRvV2ViUlRDVmlkZW9Sb3RhdGlvbihNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhCiAgICAgcmV0
dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDsKIH0KIAotdm9pZCBMaWJXZWJSVENDb2RlY3NQ
cm94eTo6ZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiBzYW1wbGUsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFt
ZSkKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmVuY29kZUZyYW1lKFJUQ0VuY29kZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgc2FtcGxlLCB1
aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkKIHsKICAgICBB
U1NFUlQobV9lbmNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgYXV0byBlbmNvZGVy
ID0gbV9lbmNvZGVycy5nZXQoaWRlbnRpZmllcik7CkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBM
aWJXZWJSVENDb2RlY3NQcm94eTo6ZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgV2ViQ29yZToKIAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBhdXRv
IHBpeGVsQnVmZmVyID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlUGl4ZWxCdWZmZXIo
c2FtcGxlLnN1cmZhY2UoKSk7Ci0gICAgd2VicnRjOjplbmNvZGVMb2NhbEVuY29kZXJGcmFtZShl
bmNvZGVyLCBwaXhlbEJ1ZmZlci5nZXQoKSwgc2FtcGxlLnRpbWUoKS50b1RpbWVTY2FsZSgxMDAw
MDAwKS50aW1lVmFsdWUoKSwgdG9XZWJSVENWaWRlb1JvdGF0aW9uKHNhbXBsZS5yb3RhdGlvbigp
KSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSk7CisgICAgd2VicnRjOjplbmNvZGVMb2NhbEVuY29k
ZXJGcmFtZShlbmNvZGVyLCBwaXhlbEJ1ZmZlci5nZXQoKSwgc2FtcGxlLnRpbWUoKS50b1RpbWVT
Y2FsZSgxMDAwMDAwKS50aW1lVmFsdWUoKSwgdGltZVN0YW1wLCB0b1dlYlJUQ1ZpZGVvUm90YXRp
b24oc2FtcGxlLnJvdGF0aW9uKCkpLCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggOTliZWExZmI1OWU5NmQ2YTAwZWYxYmJhMDhh
NzI0YjFmMjg4NzAwNC4uZTk3YTJhMjc1Y2E4NjNmNGEzZTQ2ZGY5ZjhjZjUwM2EyNTE0MWNlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNTc2LDYgKzU3Niw3IEBAIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KIFdlYlByb2Nl
c3MvR1BVL21lZGlhL2NvY29hL1ZpZGVvTGF5ZXJSZW1vdGVDb2NvYS5tbQogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKK1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubW0KIAogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2VCYW5uZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ2NjVjY2I3YmM2YWY3YTdhMDg5MTVmZGU0
NjcyNmQ5NjdmNWZjYjQuLjMwZTY4ZTk1M2JmMDE1YmNjMzE0NmM2ZTg2MjRhNGY1ZWIxMzE5YTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMzQ2NSw2ICszNDY1LDcgQEAKIAkJNDEzMUYzRTAxRjk4NzEyQzAwNTk5OTVBIC8qIFdlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzVGQkNGMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzNUZCRDAxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzQzhCMTMyNTUxNkJGQTAw
RTY1MDU1IC8qIExpYldlYlJUQ0NvZGVjcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExpYldl
YlJUQ0NvZGVjcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQ0NENEYyMERF
QkMyRjAwNjVBMjFBIC8qIGNvbS5nb29nbGUuZ29vZ2xldGFsa2Jyb3dzZXJwbHVnaW4uc2IgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmdvb2dsZS5nb29nbGV0YWxrYnJvd3NlcnBsdWdpbi5z
Yjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0Mzc1MUIyMEVBRUExRTAwRkFEMDZD
IC8qIGNuLm1pY3JvZG9uZS5jbWIuc2FmYXJpLnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNu
Lm1pY3JvZG9uZS5jbWIuc2FmYXJpLnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTRERDM3ODIwQkY0M0VBMDA2OTU5RkIgLyogY29tLmNpc2NvLndlYmV4LnBsdWdpbi5ncGM2NC5z
YiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uY2lzY28ud2ViZXgucGx1Z2luLmdwYzY0LnNi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzc0Miw2ICs3NzQzLDcgQEAKIAkJCQk0
MTcyMTk4QTIzQjYxMjgyMDBBRTU2ODYgLyogTGliV2ViUlRDQ29kZWNzLmNwcCAqLywKIAkJCQk0
MTcyMTk4OTIzQjYxMjgyMDBBRTU2ODYgLyogTGliV2ViUlRDQ29kZWNzLmggKi8sCiAJCQkJNDE3
MjE5OEQyM0I2MkM3QzAwQUU1Njg2IC8qIExpYldlYlJUQ0NvZGVjcy5tZXNzYWdlcy5pbiAqLywK
KwkJCQk0MTNDOEIxMzI1NTE2QkZBMDBFNjUwNTUgLyogTGliV2ViUlRDQ29kZWNzLm1tICovLAog
CQkJCTQxNzZFODk3MjNDMzYxQkQwMDNFODNGRSAvKiBNZWRpYVJlY29yZGVySWRlbnRpZmllci5o
ICovLAogCQkJCTQxNzZFODk0MjNDMzRFMjYwMDNFODNGRSAvKiBNZWRpYVJlY29yZGVyUHJpdmF0
ZS5jcHAgKi8sCiAJCQkJNDE3NkU4OTUyM0MzNEUyNzAwM0U4M0ZFIC8qIE1lZGlhUmVjb3JkZXJQ
cml2YXRlLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAppbmRleCA1NWQ3MWM3YTM5ZjBjMmVjNzU4ZjE2NTNh
ZmEyN2MxOTYxZmNkZGU5Li5lM2NhZTNjZTkyY2E4ODExZWY4ZWQ1NDdiYmIxZGQyZGIwMTk4M2Uw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xp
YldlYlJUQ0NvZGVjcy5jcHAKQEAgLTQ5LDE0ICs0OSwxNSBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogc3RhdGljIHdlYnJ0Yzo6V2ViS2l0VmlkZW9EZWNvZGVyIGNyZWF0ZVZpZGVvRGVj
b2Rlcihjb25zdCB3ZWJydGM6OlNkcFZpZGVvRm9ybWF0JiBmb3JtYXQpCiB7CisgICAgYXV0byYg
Y29kZWNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCk7CiAgICAg
aWYgKGZvcm1hdC5uYW1lID09ICJIMjY0IikKLSAgICAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLmNyZWF0ZURlY29kZXIoTGliV2ViUlRDQ29kZWNz
OjpUeXBlOjpIMjY0KTsKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jcmVhdGVEZWNvZGVyKExpYldl
YlJUQ0NvZGVjczo6VHlwZTo6SDI2NCk7CiAKICAgICBpZiAoZm9ybWF0Lm5hbWUgPT0gIkgyNjUi
KQotICAgICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNz
KCkuY3JlYXRlRGVjb2RlcihMaWJXZWJSVENDb2RlY3M6OlR5cGU6OkgyNjUpOworICAgICAgICBy
ZXR1cm4gY29kZWNzLmNyZWF0ZURlY29kZXIoTGliV2ViUlRDQ29kZWNzOjpUeXBlOjpIMjY1KTsK
IAotICAgIGlmIChmb3JtYXQubmFtZSA9PSAiVlA5IiAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5saWJXZWJSVENDb2RlY3MoKS5zdXBwb3J0VlA5VlRCKCkpCi0gICAgICAgIHJldHVybiBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3MoKS5jcmVhdGVEZWNvZGVyKExpYldl
YlJUQ0NvZGVjczo6VHlwZTo6VlA5KTsKKyAgICBpZiAoZm9ybWF0Lm5hbWUgPT0gIlZQOSIgJiYg
Y29kZWNzLnN1cHBvcnRWUDlWVEIoKSkKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jcmVhdGVEZWNv
ZGVyKExpYldlYlJUQ0NvZGVjczo6VHlwZTo6VlA5KTsKIAogICAgIHJldHVybiBudWxscHRyOwog
fQpAQCAtMTE2LDI5ICsxMTcsNyBAQCBzdGF0aWMgaW5saW5lIE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uIHRvTWVkaWFTYW1wbGVWaWRlb1JvdGF0aW9uKHdlYnJ0Yzo6VmlkZQogCiBzdGF0aWMg
aW50MzJfdCBlbmNvZGVWaWRlb0ZyYW1lKHdlYnJ0Yzo6V2ViS2l0VmlkZW9FbmNvZGVyIGVuY29k
ZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUsIGJvb2wgc2hvdWxkRW5jb2RlQXNL
ZXlGcmFtZSkKIHsKLSAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gbmV3UGl4ZWxCdWZm
ZXI7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHdlYnJ0Yzo6cGl4ZWxCdWZmZXJGcm9tRnJhbWUo
ZnJhbWUsIFsmbmV3UGl4ZWxCdWZmZXJdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2Vi
cnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgewotICAgICAg
ICBPU1R5cGUgcG9vbEJ1ZmZlclR5cGU7Ci0gICAgICAgIHN3aXRjaCAoYnVmZmVyVHlwZSkgewot
ICAgICAgICBjYXNlIHdlYnJ0Yzo6QnVmZmVyVHlwZTo6STQyMDoKLSAgICAgICAgICAgIHBvb2xC
dWZmZXJUeXBlID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5n
ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIHdlYnJ0Yzo6QnVmZmVyVHlwZTo6
STAxMDoKLSAgICAgICAgICAgIHBvb2xCdWZmZXJUeXBlID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQy
MFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2U7Ci0gICAgICAgIH0KLSAgICAgICAgYXV0byBwaXhl
bEJ1ZmZlclBvb2wgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3MoKS5w
aXhlbEJ1ZmZlclBvb2wod2lkdGgsIGhlaWdodCwgcG9vbEJ1ZmZlclR5cGUpOwotICAgICAgICBp
ZiAoIXBpeGVsQnVmZmVyUG9vbCkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
ICAgIG5ld1BpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tUG9vbChw
aXhlbEJ1ZmZlclBvb2wpOwotICAgICAgICByZXR1cm4gbmV3UGl4ZWxCdWZmZXIuZ2V0KCk7Ci0g
ICAgfSk7Ci0KLSAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gV0VCUlRDX1ZJ
REVPX0NPREVDX0VSUk9SOwotCi0gICAgYXV0byBzYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6
Y3JlYXRlKHBpeGVsQnVmZmVyLCBNZWRpYVRpbWUoZnJhbWUudGltZXN0YW1wX3VzKCksIDEwMDAw
MDApLCB0b01lZGlhU2FtcGxlVmlkZW9Sb3RhdGlvbihmcmFtZS5yb3RhdGlvbigpKSk7Ci0gICAg
cmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLmVuY29kZUZy
YW1lKCpzdGF0aWNfY2FzdDxMaWJXZWJSVENDb2RlY3M6OkVuY29kZXIqPihlbmNvZGVyKSwgKnNh
bXBsZSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSk7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLmVuY29kZUZyYW1lKCpzdGF0aWNfY2FzdDxMaWJX
ZWJSVENDb2RlY3M6OkVuY29kZXIqPihlbmNvZGVyKSwgZnJhbWUsIHNob3VsZEVuY29kZUFzS2V5
RnJhbWUpOwogfQogCiBzdGF0aWMgaW50MzJfdCByZWdpc3RlckVuY29kZUNvbXBsZXRlQ2FsbGJh
Y2sod2VicnRjOjpXZWJLaXRWaWRlb0VuY29kZXIgZW5jb2Rlciwgdm9pZCogZW5jb2RlZEltYWdl
Q2FsbGJhY2spCkBAIC0yOTMsMTEgKzI3MiwyNCBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBmb3Jt
YXROYW1lRnJvbUNvZGVjVHlwZShMaWJXZWJSVENDb2RlY3M6OlR5cGUgdHlwZSkKICAgICB9CiB9
CiAKK3N0YXRpYyBpbmxpbmUgd2VicnRjOjpWaWRlb0NvZGVjVHlwZSB0b1dlYlJUQ0NvZGVjVHlw
ZShMaWJXZWJSVENDb2RlY3M6OlR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAg
ICBjYXNlIExpYldlYlJUQ0NvZGVjczo6VHlwZTo6SDI2NDoKKyAgICAgICAgcmV0dXJuIHdlYnJ0
Yzo6a1ZpZGVvQ29kZWNIMjY0OworICAgIGNhc2UgTGliV2ViUlRDQ29kZWNzOjpUeXBlOjpIMjY1
OgorICAgICAgICByZXR1cm4gd2VicnRjOjprVmlkZW9Db2RlY0gyNjU7CisgICAgY2FzZSBMaWJX
ZWJSVENDb2RlY3M6OlR5cGU6OlZQOToKKyAgICAgICAgcmV0dXJuIHdlYnJ0Yzo6a1ZpZGVvQ29k
ZWNWUDk7CisgICAgfQorfQorCiBMaWJXZWJSVENDb2RlY3M6OkVuY29kZXIqIExpYldlYlJUQ0Nv
ZGVjczo6Y3JlYXRlRW5jb2RlcihUeXBlIHR5cGUsIGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5n
LCBzdGQ6OnN0cmluZz4mIGZvcm1hdFBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byBlbmNvZGVyID0g
bWFrZVVuaXF1ZTxFbmNvZGVyPigpOwogICAgIGF1dG8qIHJlc3VsdCA9IGVuY29kZXIuZ2V0KCk7
CiAgICAgZW5jb2Rlci0+aWRlbnRpZmllciA9IFJUQ0VuY29kZXJJZGVudGlmaWVyOjpnZW5lcmF0
ZVRocmVhZFNhZmUoKTsKKyAgICBlbmNvZGVyLT5jb2RlY1R5cGUgPSB0b1dlYlJUQ0NvZGVjVHlw
ZSh0eXBlKTsKIAogICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJhbWV0
ZXJzOwogICAgIGZvciAoYXV0byYga2V5VmFsdWUgOiBmb3JtYXRQYXJhbWV0ZXJzKQpAQCAtMzQw
LDEyICszMzIsNDAgQEAgaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmluaXRpYWxpemVFbmNvZGVy
KEVuY29kZXImIGVuY29kZXIsIHVpbnQxNl90IHdpZHRoLCB1aW4KICAgICByZXR1cm4gMDsKIH0K
IAotaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmVuY29kZUZyYW1lKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiBmcmFtZSwgYm9vbCBzaG91bGRFbmNv
ZGVBc0tleUZyYW1lKQoraW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmVuY29kZUZyYW1lKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUsIGJvb2wgc2hvdWxk
RW5jb2RlQXNLZXlGcmFtZSkKIHsKICAgICBpZiAoIWVuY29kZXIuY29ubmVjdGlvbikKICAgICAg
ICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKIAotICAgIGVuY29kZXIuY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkVuY29kZUZyYW1lIHsg
ZW5jb2Rlci5pZGVudGlmaWVyLCBmcmFtZSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSB9LCAwKTsK
KyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gbmV3UGl4ZWxCdWZmZXI7CisgICAgYXV0
byBwaXhlbEJ1ZmZlciA9IHdlYnJ0Yzo6cGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFsmbmV3
UGl4ZWxCdWZmZXJdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2VicnRjOjpCdWZmZXJU
eXBlIGJ1ZmZlclR5cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgeworICAgICAgICBPU1R5cGUgcG9v
bEJ1ZmZlclR5cGU7CisgICAgICAgIHN3aXRjaCAoYnVmZmVyVHlwZSkgeworICAgICAgICBjYXNl
IHdlYnJ0Yzo6QnVmZmVyVHlwZTo6STQyMDoKKyAgICAgICAgICAgIHBvb2xCdWZmZXJUeXBlID0g
a0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIHdlYnJ0Yzo6QnVmZmVyVHlwZTo6STAxMDoKKyAgICAg
ICAgICAgIHBvb2xCdWZmZXJUeXBlID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQ
bGFuYXJGdWxsUmFuZ2U7CisgICAgICAgIH0KKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlclBvb2wg
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3MoKS5waXhlbEJ1ZmZlclBv
b2wod2lkdGgsIGhlaWdodCwgcG9vbEJ1ZmZlclR5cGUpOworICAgICAgICBpZiAoIXBpeGVsQnVm
ZmVyUG9vbCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIG5ld1BpeGVs
QnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tUG9vbChwaXhlbEJ1ZmZlclBv
b2wpOworICAgICAgICByZXR1cm4gbmV3UGl4ZWxCdWZmZXIuZ2V0KCk7CisgICAgfSk7CisKKyAg
ICBpZiAoIXBpeGVsQnVmZmVyKQorICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VS
Uk9SOworCisgICAgYXV0byBzYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVs
QnVmZmVyLCBNZWRpYVRpbWUoZnJhbWUudGltZXN0YW1wX3VzKCkgKiAxMDAwLCAxMDAwMDAwKSwg
dG9NZWRpYVNhbXBsZVZpZGVvUm90YXRpb24oZnJhbWUucm90YXRpb24oKSkpOworICAgIGlmICgh
c2FtcGxlKSB7CisgICAgICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGlzIGNvZGUgcGF0aCwgY3Vy
cmVudGx5IHdlIGhhdmUgbm9uIEJHUkEgZm9yIG11dGVkIGZyYW1lcyBhdCBsZWFzdC4KKyAgICAg
ICAgbmV3UGl4ZWxCdWZmZXIgPSBjb252ZXJ0VG9CR1JBKHBpeGVsQnVmZmVyKTsKKyAgICAgICAg
c2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShuZXdQaXhlbEJ1ZmZlci5nZXQoKSwg
TWVkaWFUaW1lKGZyYW1lLnRpbWVzdGFtcF91cygpICogMTAwMCwgMTAwMDAwMCksIHRvTWVkaWFT
YW1wbGVWaWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkpKTsKKyAgICB9CisKKyAgICBlbmNv
ZGVyLmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpFbmNv
ZGVGcmFtZSB7IGVuY29kZXIuaWRlbnRpZmllciwgKnNhbXBsZSwgZnJhbWUudGltZXN0YW1wKCks
IHNob3VsZEVuY29kZUFzS2V5RnJhbWUgfSwgMCk7CiAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19D
T0RFQ19PSzsKIH0KIApAQCAtMzg1LDcgKzQwNSw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpj
b21wbGV0ZWRFbmNvZGluZyhSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OkRh
CiAgICAgaWYgKCFlbmNvZGVyLT5lbmNvZGVkSW1hZ2VDYWxsYmFjaykKICAgICAgICAgcmV0dXJu
OwogCi0gICAgd2VicnRjOjpSZW1vdGVWaWRlb0VuY29kZXI6OmVuY29kZUNvbXBsZXRlKGVuY29k
ZXItPmVuY29kZWRJbWFnZUNhbGxiYWNrLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEo
KSksIGRhdGEuc2l6ZSgpLCBpbmZvLCBmcmFnbWVudGF0aW9uSGVhZGVyLnZhbHVlKCkpOworICAg
IHdlYnJ0Yzo6ZW5jb2RlclZpZGVvVGFza0NvbXBsZXRlKGVuY29kZXItPmVuY29kZWRJbWFnZUNh
bGxiYWNrLCBlbmNvZGVyLT5jb2RlY1R5cGUsIGNvbnN0X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0
YSgpKSwgZGF0YS5zaXplKCksIGluZm8sIGZyYWdtZW50YXRpb25IZWFkZXIudmFsdWUoKSk7CiB9
CiAKIENWUGl4ZWxCdWZmZXJQb29sUmVmIExpYldlYlJUQ0NvZGVjczo6cGl4ZWxCdWZmZXJQb29s
KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgT1NUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4
IGVlZTNiNTU2MGNlM2I0MTgyYjlmNzNjYjdhMTBjN2U2NTI5ODQ3ZGMuLjVlNjNiOWJiZDZkMGQ3
YzQ5ZmEzZGRkMzE0MDUwOWI1MWQ4ODgwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0zMSw3ICszMSw5IEBA
CiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVy
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oPgogI2luY2x1ZGUg
PG1hcD4KKyNpbmNsdWRlIDx3ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2NvZGVjX3R5cGUuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL0xvY2suaD4KQEAgLTQ5LDYgKzUxLDcgQEAgY2xhc3MgUmVtb3RlVmlkZW9TYW1wbGU7
CiB9CiAKIG5hbWVzcGFjZSB3ZWJydGMgeworY2xhc3MgVmlkZW9GcmFtZTsKIGNsYXNzIFdlYktp
dFJUUEZyYWdtZW50YXRpb25IZWFkZXI7CiBzdHJ1Y3QgV2ViS2l0RW5jb2RlZEZyYW1lSW5mbzsK
IH0KQEAgLTgzLDYgKzg2LDcgQEAgcHVibGljOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXI7CisgICAgICAgIHdlYnJ0Yzo6VmlkZW9Db2RlY1R5cGUgY29kZWNUeXBlIHsgd2VicnRjOjpr
VmlkZW9Db2RlY0dlbmVyaWMgfTsKICAgICAgICAgdm9pZCogZW5jb2RlZEltYWdlQ2FsbGJhY2sg
eyBudWxscHRyIH07CiAgICAgICAgIExvY2sgZW5jb2RlZEltYWdlQ2FsbGJhY2tMb2NrOwogICAg
ICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uOwpAQCAtOTEsNyArOTUsNyBA
QCBwdWJsaWM6CiAgICAgRW5jb2RlciogY3JlYXRlRW5jb2RlcihUeXBlLCBjb25zdCBzdGQ6Om1h
cDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+Jik7CiAgICAgaW50MzJfdCByZWxlYXNlRW5jb2Rl
cihFbmNvZGVyJik7CiAgICAgaW50MzJfdCBpbml0aWFsaXplRW5jb2RlcihFbmNvZGVyJiwgdWlu
dDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1bnNp
Z25lZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJh
dGUpOwotICAgIGludDMyX3QgZW5jb2RlRnJhbWUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlJl
bW90ZVZpZGVvU2FtcGxlJiwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKKyAgICBpbnQz
Ml90IGVuY29kZUZyYW1lKEVuY29kZXImLCBjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmLCBib29s
IHNob3VsZEVuY29kZUFzS2V5RnJhbWUpOwogICAgIHZvaWQgcmVnaXN0ZXJFbmNvZGVGcmFtZUNh
bGxiYWNrKEVuY29kZXImLCB2b2lkKiBlbmNvZGVkSW1hZ2VDYWxsYmFjayk7CiAgICAgdm9pZCBz
ZXRFbmNvZGVSYXRlcyhFbmNvZGVyJiwgdWludDMyX3QgYml0UmF0ZSwgdWludDMyX3QgZnJhbWVS
YXRlKTsKICAgICAKQEAgLTEwNiw2ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmFpbGVk
RGVjb2RpbmcoUlRDRGVjb2RlcklkZW50aWZpZXIpOwogICAgIHZvaWQgY29tcGxldGVkRGVjb2Rp
bmcoUlRDRGVjb2RlcklkZW50aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgV2ViQ29yZTo6UmVt
b3RlVmlkZW9TYW1wbGUmJik7CiAgICAgdm9pZCBjb21wbGV0ZWRFbmNvZGluZyhSVENFbmNvZGVy
SWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGNvbnN0IHdlYnJ0Yzo6V2ViS2l0RW5j
b2RlZEZyYW1lSW5mbyYsIHdlYnJ0Yzo6V2ViS2l0UlRQRnJhZ21lbnRhdGlvbkhlYWRlciYmKTsK
KyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY29udmVydFRvQkdSQShDVlBpeGVsQnVm
ZmVyUmVmKTsKIAogcHJpdmF0ZToKICAgICBIYXNoTWFwPFJUQ0RlY29kZXJJZGVudGlmaWVyLCBz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+IG1fZGVjb2RlcnM7CkBAIC0xMTQsNiArMTE5LDcgQEAg
cHJpdmF0ZToKICAgICBIYXNoTWFwPFJUQ0VuY29kZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8RW5jb2Rlcj4+IG1fZW5jb2RlcnM7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4gbV9waXhlbEJ1ZmZl
ckNvbmZvcm1lcjsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclBvb2xSZWY+IG1fcGl4ZWxC
dWZmZXJQb29sOwogICAgIHNpemVfdCBtX3BpeGVsQnVmZmVyUG9vbFdpZHRoIHsgMCB9OwogICAg
IHNpemVfdCBtX3BpeGVsQnVmZmVyUG9vbEhlaWdodCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MjI0YjExN2JkZTM0N2M3NDMxZmViNjZkMzRhZjk1NzUyNmY0NTkxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzLm1tCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKSAmJiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29y
ZS9Db3JlVmlkZW9Tb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCitSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gTGliV2ViUlRDQ29k
ZWNzOjpjb252ZXJ0VG9CR1JBKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpCit7CisgICAg
aWYgKCFtX3BpeGVsQnVmZmVyQ29uZm9ybWVyKQorICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9y
bWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0
aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3Jt
YXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH0pOworICAgIHJldHVybiBt
X3BpeGVsQnVmZmVyQ29uZm9ybWVyLT5jb252ZXJ0KHBpeGVsQnVmZmVyKTsKK30KKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4IDM0MTBhOTk3YTBiYTgxYWE1NWJl
NTk4MjQ3ZTY4NmMxMmNiYTVlMWIuLjMxMDRmNTU0MTA3NDliNWZmYzhkYmFkYTVkZDlmMTA0NWNm
MjZkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApAQCAtMTUxLDYgKzE1MSwxNCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PiBMaWJXZWJSVENQcm92
aWRlcjo6Y3JlYXRlRGVjb2RlckZhYwogICAgIHJldHVybiBMaWJXZWJSVENQcm92aWRlckNvY29h
OjpjcmVhdGVEZWNvZGVyRmFjdG9yeSgpOwogfQogCitzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpW
aWRlb0VuY29kZXJGYWN0b3J5PiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlRW5jb2RlckZhY3Rv
cnkoKQoreworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQorICAgIExpYldlYlJUQ0NvZGVjczo6c2V0Q2FsbGJhY2tzKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDUGxhdGZvcm1Db2RlY3NJbkdQVVByb2Nlc3NFbmFi
bGVkKCkpOworI2VuZGlmCisgICAgcmV0dXJuIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2E6OmNyZWF0
ZUVuY29kZXJGYWN0b3J5KCk7Cit9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5kZXggYzZiM2UwYTQ0MTZjYTBhNTZlYzliNzBiZmNiMGQ1
MzRjOTg3ZjIwNy4uMGYxMmIxMGUzYTk5NzEyOWQ0MWY0YWU1OGFmODUxNDk2ZGI5MTZjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHJpdmF0ZToKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZh
Y3Rvcnk+IGNyZWF0ZURlY29kZXJGYWN0b3J5KCkgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRy
PHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4gY3JlYXRlRW5jb2RlckZhY3RvcnkoKSBmaW5h
bDsKICNlbmRpZgogfTsKICNlbHNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>