<?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>204970</bug_id>
          
          <creation_ts>2019-12-06 19:07:22 -0800</creation_ts>
          <short_desc>Make ColorSpace an enum class</short_desc>
          <delta_ts>2019-12-07 22:00:03 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>204955</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1596480</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-12-06 19:07:22 -0800</bug_when>
    <thetext>So it can be encoded and decoded through the IPC messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596482</commentid>
    <comment_count>1</comment_count>
      <attachid>385075</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-12-06 19:22:20 -0800</bug_when>
    <thetext>Created attachment 385075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596656</commentid>
    <comment_count>2</comment_count>
      <attachid>385075</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-07 21:59:31 -0800</bug_when>
    <thetext>Comment on attachment 385075
Patch

Clearing flags on attachment: 385075

Committed r253268: &lt;https://trac.webkit.org/changeset/253268&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596657</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-07 21:59:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385075</attachid>
            <date>2019-12-06 19:22:20 -0800</date>
            <delta_ts>2019-12-07 21:59:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204970-20191206192213.patch</filename>
            <type>text/plain</type>
            <size>45636</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjU2MGFmOTdkYjMwNDUz
OGE3NWU5NzkzZGJiZDhmMzZiOWMxNWJhNC4uYWU0NDY1OGI3NzdiMmMzNDE0YzhhMjA5Mjc0MTky
ZjlkN2JlZThhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDE5LTEyLTA2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBD
b2xvclNwYWNlIGFuIGVudW0gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNDk3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNvIGl0IGNhbiBiZSBlbmNvZGVkIGFuZCBkZWNvZGVkIHRocm91Z2gg
dGhlIElQQyBtZXNzYWdlcy4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVy
czo6cGFyc2VDb2xvckZ1bmN0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogaHRtbC9DdXN0b21Q
YWludENhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6Y29w
aWVkSW1hZ2UgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNv
bnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dElu
dGVybmFsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6
OmRyYXdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
cjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q29sb3I6OkNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNw
YWNlLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJbWFn
ZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29s
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuZGVkQ29sb3I6OmNzc1RleHQgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6
OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dHJhbnNmb3JtQ29sb3JTcGFjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxlYWtD
R0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5oOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkQ0dDb2xvclNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVMaWdo
dGluZzo6ZHJhd0xpZ2h0aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OlNvdXJjZUdyYXBoaWMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1h
Yzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQpOgorICAgICAgICAqIHJl
bmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpidWls
ZFJlZmVyZW5jZUZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmJ1aWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJuRm9yVG91
Y2hBY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZl
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBw
bHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6
cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXNrQW5kU3dhcENv
bnRleHRGb3JUZXh0R3JhZGllbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdQ
YXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisKIDIwMTktMTItMDYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdIENhbGxzIHRvIGRldmljZSBvcmllbnRhdGlvbiBBUEkgc2hvdWxk
IGJlIGRvbmUgaW4gdGhlIFVJIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGFhZjViMTFiODQwYjk1YjI2
MzM4M2RiNzhhZjYxNTk5MzU3NDA4MS4uZjc5M2RkMjNhZTA1YmQ1OGYyMTBiYTBiZjAxOTVmMDgy
MGMwYmIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0xMi0wNiAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgQ29sb3JT
cGFjZSBhbiBlbnVtIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDQ5NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKwogMjAxOS0xMi0w
NiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtJUENdIE1FU1NB
R0VfQ0hFQ0soKSBwYXJhbWV0ZXJzIGZvciBBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoIC8g
UGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbiBJUENzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKaW5kZXggMWUw
OTIyYjMwOTVlOWFmN2UxMmJiNDVjMWRjOTEwNzZlNjI0YzVmMC4uZjUwMmM2ZmNhZjE0MGY5Njk5
ZDcxZTllZWEwZjE0OTYwMmVhYmU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcApAQCAtNjUxLDEwICs2NTEsMTAg
QEAgc3RhdGljIENvbG9yIHBhcnNlQ29sb3JGdW5jdGlvblBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCiAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlOwogICAgIHN3aXRjaCAo
YXJncy5wZWVrKCkuaWQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVTUkdCOgotICAgICAgICBjb2xv
clNwYWNlID0gQ29sb3JTcGFjZVNSR0I7CisgICAgICAgIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNl
OjpTUkdCOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlRGlzcGxheVAzOgotICAg
ICAgICBjb2xvclNwYWNlID0gQ29sb3JTcGFjZURpc3BsYXlQMzsKKyAgICAgICAgY29sb3JTcGFj
ZSA9IENvbG9yU3BhY2U6OkRpc3BsYXlQMzsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuIENvbG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0N1c3RvbVBhaW50Q2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRD
YW52YXMuY3BwCmluZGV4IDQzZDZhNWE0MDQwODFiYmNjZjNlN2JiZmQxYzRjNDliOTM5MTg3NjIu
LmY0Yjc3MDdlOTdhOGZlNTFmOGUyNTc3NThhZGU0YjZkZGZmNTAyZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCkBAIC05Myw3ICs5Myw3IEBAIEltYWdlKiBD
dXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UoKSBjb25zdAogICAgIGlmICghd2lkdGgoKSB8
fCAhaGVpZ2h0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbV9jb3BpZWRCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgVW5hY2NlbGVyYXRlZCwgMSwgQ29sb3JT
cGFjZVNSR0IsIG51bGxwdHIpOworICAgIG1fY29waWVkQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplKCksIFVuYWNjZWxlcmF0ZWQsIDEsIENvbG9yU3BhY2U6OlNSR0IsIG51bGxwdHIp
OwogICAgIGlmICghbV9jb3BpZWRCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IGVlYTk2NGFjMTFh
OTk5M2RiNjRkZjY4Y2QxMTZmNTIyNDMwNTExMDMuLjIzZDliMzRlODQ4ZjZkMDFkMzRhOWRhZmZi
YTMwNTBmYzdhNzEzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCkBAIC04ODgsNyArODg4LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoKSBjb25zdAogICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IHNob3Vs
ZEFjY2VsZXJhdGUoc2l6ZSgpKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZDsKIAogICAg
IGF1dG8gaG9zdFdpbmRvdyA9IChkb2N1bWVudCgpLnZpZXcoKSAmJiBkb2N1bWVudCgpLnZpZXco
KS0+cm9vdCgpKSA/IGRvY3VtZW50KCkudmlldygpLT5yb290KCktPmhvc3RXaW5kb3coKSA6IG51
bGxwdHI7Ci0gICAgc2V0SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIHJl
bmRlcmluZ01vZGUsIDEsIENvbG9yU3BhY2VTUkdCLCBob3N0V2luZG93KSk7CisgICAgc2V0SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIHJlbmRlcmluZ01vZGUsIDEsIENv
bG9yU3BhY2U6OlNSR0IsIGhvc3RXaW5kb3cpKTsKIAogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFT
X0JBQ0tJTkdfU1RPUkUpIHx8IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAgICAgaWYg
KG1fY29udGV4dCAmJiBtX2NvbnRleHQtPmlzMmQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggMzIz
ZGQ0ZTAzYmFjZGIyZDhmN2Y4ZGVmYmFkNWNmMDgwM2IxNWViOS4uZDc2ZjE3ZDhlZTFlZWM0OWRl
MmRjYzNjODE5YjI2MTAwZDQ1YTdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC01NDUsNyArNTQ1LDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICAgICAgICAgIGZvbnRQcm94eS5kcmF3Qmlk
aVRleHQoKmMsIHRleHRSdW4sIGxvY2F0aW9uICsgb2Zmc2V0LCBGb250Q2FzY2FkZTo6VXNlRmFs
bGJhY2tJZkZvbnROb3RSZWFkeSk7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIG1hc2tJbWFn
ZSA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwg
Q29sb3JTcGFjZVNSR0IsICpjKTsKKyAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIENvbG9yU3BhY2U6OlNS
R0IsICpjKTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggOTI4Mjg4NDU2YjM1ODIxNGYzZmRlMWU1YzAyNDgx
YmU5NWRlODg5My4uZTJjYjcyOWEyNmU2OTRhODFmMDM1NDA1ZDQ4Mzk1Y2Q3Y2RkM2M5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE2NDAsNyArMTY0MCw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZShDYW52YXNCYXNlJiBz
b3VyY2VDYW52CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYg
KHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlID09IENvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5KSB7CiAg
ICAgICAgIGlmICgmc291cmNlQ2FudmFzID09ICZjYW52YXNCYXNlKCkpIHsKLSAgICAgICAgICAg
IGlmIChhdXRvIGNvcHkgPSBidWZmZXItPmNvcHlSZWN0VG9CdWZmZXIoc3JjUmVjdCwgQ29sb3JT
cGFjZVNSR0IsICpjKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+Y29w
eVJlY3RUb0J1ZmZlcihzcmNSZWN0LCBDb2xvclNwYWNlOjpTUkdCLCAqYykpIHsKICAgICAgICAg
ICAgICAgICBjbGVhckNhbnZhcygpOwogICAgICAgICAgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZl
cigqY29weSwgZHN0UmVjdCwgeyB7IH0sIHNyY1JlY3Quc2l6ZSgpIH0sIHsgc3RhdGUoKS5nbG9i
YWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXgg
Mjc2MWE1MmYyMzIyMWI3YzY5MGQ5MWUzZGI5NjM0NWFjY2JjZGY0ZC4uM2NlMTM4MTYwMTNlZWVj
MjBlYTQzZTI2MjY0ZGFhYzBiZjJkZGQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgQml0
bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwKICAgICB9CiAKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpIHsKLSAgICAg
ICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBh
bmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSwgQ29sb3JTcGFjZVNSR0IsIGN0eHQpOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4
cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBDb2xvclNwYWNlOjpTUkdCLCBjdHh0KTsK
ICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAppbmRleCA1Zjk0NTI5OTViYTE4ODUwZTk2
MjQ0MGUxZjk1Yjg0Mjg4YWQyYjUwLi5lYzE0M2EwYTNmYzA0NmIwMTE4NTFjZGI3MWIwMGZmNDY0
Mjc2NGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCkBA
IC02NTAsMTMgKzY1MCwxMyBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBDb2xvciYgY29sb3IpCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7
Ci0gICAgY2FzZSBDb2xvclNwYWNlU1JHQjoKKyAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6CiAg
ICAgICAgIHRzIDw8ICJzUkdCIjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xvclNwYWNl
TGluZWFyUkdCOgorICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgogICAgICAgICB0cyA8
PCAiTGluZWFyUkdCIjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xvclNwYWNlRGlzcGxh
eVAzOgorICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAzOgogICAgICAgICB0cyA8PCAiRGlz
cGxheVAzIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmgKaW5kZXggNjA1MzU3Y2VhZTZmNDJkOGU2Nzg0NWFhZmI5MDRmODk3Mjk5
NGQyYS4uOGUzNWUwOTllNGFmMzJkNjk3N2VlYmQyYzcwNWNhNzY2YTQzZWY0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCkBAIC0zODUsNyArMzg1LDcgQEAgaW5s
aW5lIGJvb2wgUkdCQTo6aGFzQWxwaGEoKSBjb25zdAogaW5saW5lIENvbG9yOjpDb2xvcihSR0JB
IGNvbG9yLCBDb2xvclNwYWNlIHNwYWNlKQogewogICAgIHNldFJHQihjb2xvci5tX2ludGVnZXIp
OwotICAgIEFTU0VSVF9VTlVTRUQoc3BhY2UsIHNwYWNlID09IENvbG9yU3BhY2VTUkdCKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHNwYWNlLCBzcGFjZSA9PSBDb2xvclNwYWNlOjpTUkdCKTsKIH0KIAog
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xvciYgYSwgY29uc3QgQ29sb3ImIGIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgKaW5kZXggMTFk
MDE3ZmFhOGYyY2Y0NGNkYmUyOWNmNThkNzU3NTA1ZGVlMTU4ZC4uMGFhMjc0YTFjNTA5NTM1MjZh
ODhlZTRhNGVmYTNmOWM4ZDIzN2IzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yU3BhY2UuaApAQCAtMjcsMTAgKzI3LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotZW51bSBDb2xvclNwYWNlIHsKLSAgICBDb2xvclNwYWNlU1JHQiwKLSAgICBDb2xv
clNwYWNlTGluZWFyUkdCLAotICAgIENvbG9yU3BhY2VEaXNwbGF5UDMKK2VudW0gY2xhc3MgQ29s
b3JTcGFjZSA6IHVpbnQ4X3QgeworICAgIFNSR0IsCisgICAgTGluZWFyUkdCLAorICAgIERpc3Bs
YXlQMwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKaW5kZXggNjU5
MDQxNWNjMDM3Nzk2ZjE0ZDAzMjZiOTE2OWZlMjFhMTJlZWZkOS4uODQwMDUxNWY5ZjY5ZDE2N2E1
Y2U2ZTgzOTM5NzVlOWQ2NjI4MjdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCB2
b2lkIEN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgIGFkanVzdGVkUGF0dGVybkNUTS5zY2FsZSgxLjAg
LyB4U2NhbGUsIDEuMCAvIHlTY2FsZSk7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHhTY2Fs
ZSwgeVNjYWxlKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBDb2xvclNwYWNlU1JHQiwgZGVzdENvbnRleHQpOwor
ICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRq
dXN0ZWRTaXplLCBDb2xvclNwYWNlOjpTUkdCLCBkZXN0Q29udGV4dCk7CiAgICAgaWYgKCFidWZm
ZXIpCiAgICAgICAgIHJldHVybjsKICAgICBkb0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgp
LCBhZGp1c3RlZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5kZWRDb2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbmRlZENvbG9yLmNwcAppbmRleCAyYTNjODNlNTNlY2ZjNjcwNjc4NDczOTllNjE1OWFk
OWJlZDM0YjIyLi5lYjBlMDJkM2VjYTk1MmYyNzE5Mzk5Y2Y0MWRiN2Y3YmM5N2M1NTFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNw
cApAQCAtMzMsOSArMzMsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxFeHRlbmRl
ZENvbG9yPiBFeHRlbmRlZENvbG9yOjpjcmVhdGUoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwg
ZmxvYXQgYSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorUmVmPEV4dGVuZGVkQ29sb3I+IEV4dGVu
ZGVkQ29sb3I6OmNyZWF0ZShmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9h
dCBhbHBoYSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEV4dGVuZGVkQ29sb3IociwgZywgYiwgYSwgY29sb3JTcGFjZSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEV4dGVuZGVkQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEsIGNvbG9y
U3BhY2UpKTsKIH0KIAogU3RyaW5nIEV4dGVuZGVkQ29sb3I6OmNzc1RleHQoKSBjb25zdApAQCAt
NDUsMTAgKzQ1LDEwIEBAIFN0cmluZyBFeHRlbmRlZENvbG9yOjpjc3NUZXh0KCkgY29uc3QKICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImNvbG9yKCIpOwogCiAgICAgc3dpdGNoIChtX2NvbG9y
U3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2VTUkdCOgorICAgIGNhc2UgQ29sb3JTcGFjZTo6
U1JHQjoKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJzcmdiICIpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENvbG9yU3BhY2VEaXNwbGF5UDM6CisgICAgY2FzZSBDb2xvclNwYWNl
OjpEaXNwbGF5UDM6CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZGlzcGxheS1wMyAi
KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaAppbmRleCAzN2M2OGVkYzMwZWFhODY1Y2Q5
ZjM5YzM5MmFiNmEzMTRjNjgwZjA1Li4xMjc3Zjk0OGYxMjE1NTk1OGM4OTMyY2U5YzYxNzM1ODFl
MzE0YWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bmRlZENvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5k
ZWRDb2xvci5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RXh0ZW5kZWRDb2xvciA6IHB1YmxpYyBSZWZDb3VudGVkPEV4dGVuZGVkQ29sb3I+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEV4dGVuZGVkQ29sb3I+IGNyZWF0ZShmbG9hdCByLCBmbG9hdCBn
LCBmbG9hdCBiLCBmbG9hdCBhLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6Q29sb3JTcGFjZVNS
R0IpOworICAgIHN0YXRpYyBSZWY8RXh0ZW5kZWRDb2xvcj4gY3JlYXRlKGZsb2F0IHJlZCwgZmxv
YXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhLCBDb2xvclNwYWNlID0gQ29sb3JTcGFj
ZTo6U1JHQik7CiAKICAgICBmbG9hdCByZWQoKSBjb25zdCB7IHJldHVybiBtX3JlZDsgfQogICAg
IGZsb2F0IGdyZWVuKCkgY29uc3QgeyByZXR1cm4gbV9ncmVlbjsgfQpAQCAtNjAsNyArNjAsNyBA
QCBwcml2YXRlOgogICAgIGZsb2F0IG1fYmx1ZSB7IDAgfTsKICAgICBmbG9hdCBtX2FscGhhIHsg
MCB9OwogCi0gICAgQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2UgeyBDb2xvclNwYWNlOjpDb2xvclNw
YWNlU1JHQiB9OworICAgIENvbG9yU3BhY2UgbV9jb2xvclNwYWNlIHsgQ29sb3JTcGFjZTo6U1JH
QiB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFkaWVudEltYWdlLmNwcAppbmRleCBmM2VjMGExYWQ0NjA0MTI4NzJkOTIwZTdlMWUwMTE2NzY2
Y2E2M2ZiLi4wOGJhOWM5ZWE4ZDU3ODYzMTg2ZTI0NWY1ZDgyZTIwODgzNDQ3NzNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcApA
QCAtNzEsNyArNzEsNyBAQCB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIHVuc2lnbmVkIGdl
bmVyYXRvckhhc2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CiAKICAgICBpZiAoIW1fY2FjaGVkSW1h
Z2UgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRvckhhc2ggfHwgbV9jYWNoZWRB
ZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFhcmVFc3NlbnRpYWxseUVxdWFsKGRlc3RD
b250ZXh0LnNjYWxlRmFjdG9yKCksIG1fY2FjaGVkU2NhbGVGYWN0b3IpKSB7Ci0gICAgICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1
c3RlZFNpemUsIENvbG9yU3BhY2VTUkdCLCBkZXN0Q29udGV4dCk7CisgICAgICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNp
emUsIENvbG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKICAgICAgICAgaWYgKCFpbWFnZUJ1
ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IGZiNTM2YjNkNjI4ZjI2YWU0ZmY1OTkx
ZDkxZmJkZGFiM2RjMWFmNjUuLjBlOGRhZjFlYTk1NTg5YzUzNDBlMDI2ZTQ0Njg1NWE1MTEyYmMw
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5jcHAKQEAgLTEyNiwxMSArMTI2LDExIEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnRyYW5zZm9ybUNv
bG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRzdENvCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIG9ubHkgc1JHQiA8LT4gbGluZWFyUkdCIGFyZSBzdXBwb3J0
ZWQgYXQgdGhlIG1vbWVudAotICAgIGlmICgoc3JjQ29sb3JTcGFjZSAhPSBDb2xvclNwYWNlTGlu
ZWFyUkdCICYmIHNyY0NvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZVNSR0IpCi0gICAgICAgIHx8IChk
c3RDb2xvclNwYWNlICE9IENvbG9yU3BhY2VMaW5lYXJSR0IgJiYgZHN0Q29sb3JTcGFjZSAhPSBD
b2xvclNwYWNlU1JHQikpCisgICAgaWYgKChzcmNDb2xvclNwYWNlICE9IENvbG9yU3BhY2U6Okxp
bmVhclJHQiAmJiBzcmNDb2xvclNwYWNlICE9IENvbG9yU3BhY2U6OlNSR0IpCisgICAgICAgIHx8
IChkc3RDb2xvclNwYWNlICE9IENvbG9yU3BhY2U6OkxpbmVhclJHQiAmJiBkc3RDb2xvclNwYWNl
ICE9IENvbG9yU3BhY2U6OlNSR0IpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoZHN0Q29s
b3JTcGFjZSA9PSBDb2xvclNwYWNlTGluZWFyUkdCKSB7CisgICAgaWYgKGRzdENvbG9yU3BhY2Ug
PT0gQ29sb3JTcGFjZTo6TGluZWFyUkdCKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFy
cmF5PHVpbnQ4X3QsIDI1Nj4gbGluZWFyUmdiTFVUID0gW10gewogICAgICAgICAgICAgc3RkOjph
cnJheTx1aW50OF90LCAyNTY+IGFycmF5OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IDI1NjsgaSsrKSB7CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6
dHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIENvbG9yU3BhY2Ug
ZHN0Q28KICAgICAgICAgICAgIHJldHVybiBhcnJheTsKICAgICAgICAgfSgpOwogICAgICAgICBw
bGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UobGluZWFyUmdiTFVUKTsKLSAgICB9IGVsc2UgaWYg
KGRzdENvbG9yU3BhY2UgPT0gQ29sb3JTcGFjZVNSR0IpIHsKKyAgICB9IGVsc2UgaWYgKGRzdENv
bG9yU3BhY2UgPT0gQ29sb3JTcGFjZTo6U1JHQikgewogICAgICAgICBzdGF0aWMgY29uc3Qgc3Rk
OjphcnJheTx1aW50OF90LCAyNTY+IGRldmljZVJnYkxVVD0gW10gewogICAgICAgICAgICAgc3Rk
OjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IDI1NjsgaSsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaAppbmRleCAyYmFhOGUyYjIwOWVjZmUyNDdhYzhkOGUzYTA2OGMwZDA2
ZjlmNzZiLi4xMTg4MGNhMTg1NjgyZTM0MGEwNTg1ZGYxZTAxZTUxNTk5ZDAyMTU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTY5LDkg
KzY5LDkgQEAgY2xhc3MgSW1hZ2VCdWZmZXIgewogICAgIGZyaWVuZCBjbGFzcyBJT1N1cmZhY2U7
CiBwdWJsaWM6CiAgICAgLy8gV2lsbCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlv
biBmYWlsdXJlLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZVNSR0IsIGNvbnN0IEhv
c3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01v
ZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpT
UkdCLCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwogI2lmIFVTRShESVJFQ1QyRCkKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0
KiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9yU3BhY2VTUkdC
LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBS
ZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUgPSAxLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6U1JHQiwgY29uc3QgSG9zdFdpbmRvdyog
PSBudWxscHRyKTsKICNlbmRpZgogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21w
YXRpYmxlIHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMgYnVmZmVyIGlu
dG8gdGhpcyBuZXcgb25lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCA1ZTU1ZjMwOGJlOTli
N2ExZjYwM2RhMjVkOTVkMDVjZWUyNmNjYWE1Li41NTcxMDZjZDI4OGEwYzA3MGFiZmZiZTljNDgx
NWUxMThjZTZkMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBA
IEltYWdlQnVmZmVyOjp+SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAg
cmV0dXJuIGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2l6ZSwgQ29sb3JTcGFjZVNSR0IsIGNvbnRl
eHQpOworICAgIHJldHVybiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUsIENvbG9yU3BhY2U6
OlNSR0IsIGNvbnRleHQpOwogfQogCiBHcmFwaGljc0NvbnRleHQmIEltYWdlQnVmZmVyOjpjb250
ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29s
b3JDRy5jcHAKaW5kZXggMTA5YzY0MGM1MjY2MWExODdlZDUxMGFkMmYyNzAwMGRlNTNiNzgzOS4u
Y2RmZmEzZjYwZTlhZDE4ZjJhNDBhOGU4OTg1MmEzNmEzMzdmNTEwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKQEAgLTExMSwxMSArMTEx
LDExIEBAIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikK
ICAgICAgICAgY29tcG9uZW50c1syXSA9IGV4dGVuZGVkQ29sb3IuYmx1ZSgpOwogICAgICAgICBj
b21wb25lbnRzWzNdID0gZXh0ZW5kZWRDb2xvci5hbHBoYSgpOwogICAgICAgICBzd2l0Y2ggKGV4
dGVuZGVkQ29sb3IuY29sb3JTcGFjZSgpKSB7Ci0gICAgICAgIGNhc2UgQ29sb3JTcGFjZVNSR0I6
CisgICAgICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKICAgICAgICAgICAgIHJldHVybiBDR0Nv
bG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCksIGNvbXBvbmVudHMpOwotICAgICAgICBjYXNl
IENvbG9yU3BhY2VEaXNwbGF5UDM6CisgICAgICAgIGNhc2UgQ29sb3JTcGFjZTo6RGlzcGxheVAz
OgogICAgICAgICAgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoZGlzcGxheVAzQ29sb3JTcGFjZVJl
ZigpLCBjb21wb25lbnRzKTsKLSAgICAgICAgY2FzZSBDb2xvclNwYWNlTGluZWFyUkdCOgorICAg
ICAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKICAgICAgICAgICAgIC8vIEZJWE1FOiBE
byB3ZSBldmVyIGNyZWF0ZSBDR0NvbG9yUmVmcyBpbiB0aGVzZSBzcGFjZXM/IEl0IG1heSBvbmx5
IGJlIEltYWdlQnVmZmVycy4KICAgICAgICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JD
b2xvclNwYWNlUmVmKCksIGNvbXBvbmVudHMpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAppbmRl
eCBkMDM3MDQwNWZjNzkwNTUyZTEwMjhiZWNhY2Y4MTk4MGRlZjJiNThiLi41ZDU5ZDE1ZGJlZGY1
ZTM1MjM5YjM3YWI1MmVjNDQ5YTkxMmJkNGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKQEAgLTQxLDExICs0
MSwxMSBAQCBDR0FmZmluZVRyYW5zZm9ybSBnZXRVc2VyVG9CYXNlQ1RNKENHQ29udGV4dFJlZik7
CiBzdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9yU3BhY2UoQ29sb3JT
cGFjZSBjb2xvclNwYWNlKQogewogICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2Ug
Q29sb3JTcGFjZVNSR0I6CisgICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgogICAgICAgICByZXR1
cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSAgICBjYXNlIENvbG9yU3BhY2VMaW5lYXJSR0I6Cisg
ICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CiAgICAgICAgIHJldHVybiBsaW5lYXJSR0JD
b2xvclNwYWNlUmVmKCk7Ci0gICAgY2FzZSBDb2xvclNwYWNlRGlzcGxheVAzOgorICAgIGNhc2Ug
Q29sb3JTcGFjZTo6RGlzcGxheVAzOgogICAgICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFj
ZVJlZigpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgKaW5kZXggNDhjMzFh
MDZlZjQxMDdjMGE1NjBjOGRjMWM2MDJkODc1YTVhODRhOC4uZjY2OTFlNDY0ZGFkODM1YTAxZmQ4
MDY5NDQ5NWJlYjRiM2ZhYzdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgKQEAgLTQwLDggKzQwLDggQEAgcHVibGljOgogI2lm
ICFVU0UoQ0cpCiAgICAgLy8gZmVGbG9vZCBkb2VzIG5vdCBwZXJmb3JtIGNvbG9yIGludGVycG9s
YXRpb24gb2YgYW55IGtpbmQsIHNvIHRoZSByZXN1bHQgaXMgYWx3YXlzIGluIHRoZSBjdXJyZW50
CiAgICAgLy8gY29sb3Igc3BhY2UgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUgb2YgY29sb3ItaW50
ZXJwb2xhdGlvbi1maWx0ZXJzLgotICAgIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShDb2xv
clNwYWNlKSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZShDb2xv
clNwYWNlU1JHQik7IH0KLSAgICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZSkg
b3ZlcnJpZGUgeyBGaWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZVNS
R0IpOyB9CisgICAgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKENvbG9yU3BhY2UpIG92ZXJy
aWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2U6OlNSR0Ip
OyB9CisgICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2UpIG92ZXJyaWRlIHsg
RmlsdGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2U6OlNSR0IpOyB9CiAj
ZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCmluZGV4IDcwN2VhZDlhYWNhNjYyNmQ3MzRi
YmZiMmU4Y2I1ZjM5ZWQwYmYzYTEuLjBiYTUxYjc2MTJmMmNiMmY2OWY0ZjYwMjFjZWZjYmUzYzJl
NzQyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVMaWdodGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUxpZ2h0aW5nLmNwcApAQCAtNDAzLDcgKzQwMyw3IEBAIGJvb2wgRkVMaWdodGlu
Zzo6ZHJhd0xpZ2h0aW5nKFVpbnQ4Q2xhbXBlZEFycmF5JiBwaXhlbHMsIGludCB3aWR0aCwgaW50
IGhlaWdodCkKICAgICBkYXRhLndpZHRoRGVjcmVhc2VkQnlPbmUgPSB3aWR0aCAtIDE7CiAgICAg
ZGF0YS5oZWlnaHREZWNyZWFzZWRCeU9uZSA9IGhlaWdodCAtIDE7CiAgICAgCi0gICAgRmxvYXRD
b21wb25lbnRzIGxpZ2h0Q29sb3IgPSAob3BlcmF0aW5nQ29sb3JTcGFjZSgpID09IENvbG9yU3Bh
Y2VMaW5lYXJSR0IpID8gc1JHQkNvbG9yVG9MaW5lYXJDb21wb25lbnRzKG1fbGlnaHRpbmdDb2xv
cikgOiBGbG9hdENvbXBvbmVudHMobV9saWdodGluZ0NvbG9yKTsKKyAgICBGbG9hdENvbXBvbmVu
dHMgbGlnaHRDb2xvciA9IChvcGVyYXRpbmdDb2xvclNwYWNlKCkgPT0gQ29sb3JTcGFjZTo6TGlu
ZWFyUkdCKSA/IHNSR0JDb2xvclRvTGluZWFyQ29tcG9uZW50cyhtX2xpZ2h0aW5nQ29sb3IpIDog
RmxvYXRDb21wb25lbnRzKG1fbGlnaHRpbmdDb2xvcik7CiAgICAgcGFpbnRpbmdEYXRhLmluaXRp
YWxMaWdodGluZ0RhdGEuY29sb3JWZWN0b3IgPSBGbG9hdFBvaW50M0QobGlnaHRDb2xvci5jb21w
b25lbnRzWzBdLCBsaWdodENvbG9yLmNvbXBvbmVudHNbMV0sIGxpZ2h0Q29sb3IuY29tcG9uZW50
c1syXSk7CiAgICAgbV9saWdodFNvdXJjZS0+aW5pdFBhaW50aW5nRGF0YSgqdGhpcywgcGFpbnRp
bmdEYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVRpbGUuY3BwCmluZGV4IDcwN2M2ZWI0NmM4MzI5N2ZiZjZlMmQ5MGY1ZGZmNDdlNjkz
NmQ4NTQuLjFhODAxODVkZjRjMThjMzJlZmNkMjEyZDBkNzJlMjFiNGJiZmE3M2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAK
QEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAg
ICAgICAgIHRpbGVSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCkud2lkdGgoKSwg
ZmlsdGVyLmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSk7CiAgICAgfQogCi0gICAgYXV0byB0
aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcih0aWxlUmVj
dCwgdGlsZVJlY3QsIENvbG9yU3BhY2VTUkdCLCBmaWx0ZXIoKS5yZW5kZXJpbmdNb2RlKCkpOwor
ICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBDb2xvclNwYWNlOjpTUkdCLCBmaWx0ZXIoKS5yZW5kZXJp
bmdNb2RlKCkpOwogICAgIGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oCmluZGV4IDE5ZjZmYjRkZGJmMmM0MzY2YjhlNWIwNjVkMTc4ZWE2NTZlYzQxMDMuLmM5
NjZmY2MyMTYzOWRlNWE0MDRhN2M2MmYzZWEyYjZlOTMzMmZlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApA
QCAtMjExLDggKzIxMSw4IEBAIHByaXZhdGU6CiAgICAgLy8gU2hvdWxkIHRoZSBlZmZlY3QgY2xp
cCB0byBpdHMgcHJpbWl0aXZlIHJlZ2lvbiwgb3IgZXhwYW5kIHRvIHVzZSB0aGUgY29tYmluZWQg
cmVnaW9uIG9mIGl0cyBpbnB1dHMuCiAgICAgYm9vbCBtX2NsaXBzVG9Cb3VuZHMgeyB0cnVlIH07
CiAKLSAgICBDb2xvclNwYWNlIG1fb3BlcmF0aW5nQ29sb3JTcGFjZSB7IENvbG9yU3BhY2VMaW5l
YXJSR0IgfTsKLSAgICBDb2xvclNwYWNlIG1fcmVzdWx0Q29sb3JTcGFjZSB7IENvbG9yU3BhY2VT
UkdCIH07CisgICAgQ29sb3JTcGFjZSBtX29wZXJhdGluZ0NvbG9yU3BhY2UgeyBDb2xvclNwYWNl
OjpMaW5lYXJSR0IgfTsKKyAgICBDb2xvclNwYWNlIG1fcmVzdWx0Q29sb3JTcGFjZSB7IENvbG9y
U3BhY2U6OlNSR0IgfTsKIH07CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBGaWx0ZXJFZmZlY3QmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhp
Yy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFw
aGljLmgKaW5kZXggMzYxNWYwZTliNjFhODMzYWIxZDQ2ODdhYmE2OGFiMzIxNDU1OGZkZi4uNDI4
NjI5YmUzNTViYzk5NTQ1ZTBmMmM0N2QxZmYwMmEyOWEzYWVjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgK
QEAgLTM2LDcgKzM2LDcgQEAgcHJpdmF0ZToKICAgICBTb3VyY2VHcmFwaGljKEZpbHRlciYgZmls
dGVyKQogICAgICAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIpCiAgICAgewotICAgICAgICBzZXRP
cGVyYXRpbmdDb2xvclNwYWNlKENvbG9yU3BhY2VTUkdCKTsKKyAgICAgICAgc2V0T3BlcmF0aW5n
Q29sb3JTcGFjZShDb2xvclNwYWNlOjpTUkdCKTsKICAgICB9CiAKICAgICBjb25zdCBjaGFyKiBm
aWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlNvdXJjZUdyYXBoaWMiOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJE
aXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEaXJlY3QyRC5jcHAKaW5kZXggNTVmM2NlMWE4Y2Q4NDNmYzlmMDI2MjYwYzNkNzZmMjU4
N2VhMWYzYS4uNWU5Y2YwNTc4YTZiODI5ZjBhNmMwYTAxYjA5ODZlNjAzZDYwNDI4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGly
ZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUJ1ZmZlckRpcmVjdDJELmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZQogICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IGNvbnRleHQucmVuZGVyaW5n
TW9kZSgpOwogICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxl
QnVmZmVyU2l6ZShzaXplLCBjb250ZXh0KTsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihuZXcgSW1hZ2VCdWZmZXIoc2Nh
bGVkU2l6ZSwgMSwgQ29sb3JTcGFjZVNSR0IsIHJlbmRlcmluZ01vZGUsIG51bGxwdHIsICZjb250
ZXh0LCBzdWNjZXNzKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIo
bmV3IEltYWdlQnVmZmVyKHNjYWxlZFNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIHJlbmRlcmlu
Z01vZGUsIG51bGxwdHIsICZjb250ZXh0LCBzdWNjZXNzKSk7CiAKICAgICBpZiAoIXN1Y2Nlc3Mp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLm1tCmluZGV4IDI3MjgyNGVjODhiYmJjMTAzNjk0NzdlZDA5OGFjNDg0NDEzYWI5YWYuLjY2
Y2I2OWJjZjQ1MDkwODY2MjRjNGExNWIxODFmNjFkYTc2OGUwM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTY5OCw3ICs2OTgsNyBAQCBib29sIFRoZW1lTWFj
OjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwgKmNlbGwsIEdy
YXBoaWNzQ29udAogICAgIGJvb2wgbmVlZHNSZXBhaW50ID0gZmFsc2U7CiAgICAgaWYgKHVzZUlt
YWdlQnVmZmVyKSB7CiAgICAgICAgIE5TUmVjdCBpbWFnZUJ1ZmZlckRyYXdSZWN0ID0gTlNSZWN0
KEZsb2F0UmVjdChidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91
dGxpbmVXaWR0aCwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7Ci0gICAgICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNp
emUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25G
b2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZVNSR0Is
IGNvbnRleHQpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXplKCkgKyAyICogRmxvYXRTaXplKGJ1dHRvbkZvY3Vz
UmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSwgZGV2aWNlU2Nh
bGVGYWN0b3IsIENvbG9yU3BhY2U6OlNSR0IsIGNvbnRleHQpOwogICAgICAgICBpZiAoIWltYWdl
QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG5lZWRzUmVwYWludDsKICAgICAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAppbmRleCA2ZDU5NWEyZGIyOWM1M2JmYjI5
YjY2YWU1MmJmMjI3ZTViYTcxMjM1Li4xNjAyNTdiY2I5MDhlNzJhYWYzOWQyMjBjYTViNWI3NmQ1
YzVjZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcApAQCAtMTIxLDcg
KzEyMSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VG
aWx0ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEZpCiAKICAgICAgICAgZWZmZWN0RWxlbWVu
dC5zZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZWZmZWN0LmdldCgpKTsKICAgICAgICAgaWYgKGVmZmVj
dEVsZW1lbnQucmVuZGVyZXIoKSkKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29s
b3JTcGFjZShlZmZlY3RFbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xv
ckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0Ig
PyBDb2xvclNwYWNlTGluZWFyUkdCIDogQ29sb3JTcGFjZVNSR0IpOworICAgICAgICAgICAgZWZm
ZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKS0+c3R5
bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVy
cG9sYXRpb246OkxpbmVhclJHQiA/IENvbG9yU3BhY2U6OkxpbmVhclJHQiA6IENvbG9yU3BhY2U6
OlNSR0IpOwogCiAgICAgICAgIGJ1aWxkZXItPmFkZChlZmZlY3RFbGVtZW50LnJlc3VsdCgpLCBl
ZmZlY3QpOwogICAgICAgICBtX2VmZmVjdHMuYXBwZW5kKCplZmZlY3QpOwpAQCAtMjg5LDcgKzI4
OSw3IEBAIGJvb2wgQ1NTRmlsdGVyOjpidWlsZChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9uCiAgICAgICAgICAgICAvLyBVbmxpa2UgU1ZH
IEZpbHRlcnMgYW5kIENTU0ZpbHRlckltYWdlcywgZmlsdGVyIGZ1bmN0aW9ucyBvbiB0aGUgZmls
dGVyCiAgICAgICAgICAgICAvLyBwcm9wZXJ0eSBhcHBsaWVkIGhlcmUgc2hvdWxkIG5vdCBjbGlw
IHRvIHRoZWlyIHByaW1pdGl2ZSBzdWJyZWdpb25zLgogICAgICAgICAgICAgZWZmZWN0LT5zZXRD
bGlwc1RvQm91bmRzKGNvbnN1bWVyID09IEZpbHRlckNvbnN1bWVyOjpGaWx0ZXJGdW5jdGlvbik7
Ci0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoQ29sb3JTcGFjZVNS
R0IpOworICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKENvbG9yU3Bh
Y2U6OlNSR0IpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoZmlsdGVyT3BlcmF0aW9u
LnR5cGUoKSAhPSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRSkgewogICAgICAgICAgICAgICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKFdURk1vdmUocHJldmlvdXNFZmZlY3QpKTsK
QEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIENTU0ZpbHRlcjo6YXBwbHkoKQogewogICAgIGF1dG8m
IGVmZmVjdCA9IG1fZWZmZWN0cy5sYXN0KCkuZ2V0KCk7CiAgICAgZWZmZWN0LmFwcGx5KCk7Ci0g
ICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZVNSR0IpOworICAg
IGVmZmVjdC50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2U6OlNSR0IpOwogfQog
CiBMYXlvdXRSZWN0IENTU0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVj
dChjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0
eVJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAppbmRleCBlNWI3NTU4MjU4Y2RlNjZmM2QyNjgwMTU3OTQzZTQ3ZDUwZjRkYTkwLi5j
OGM3YmYxMjdlZmY0MDAxZDRjMGE1OWJlMzJiNmJiMzFjNmJjOTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTg2MSw3ICs4
NjEsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVk
KGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICBtYXNrUmVjdC5pbnRlcnNl
Y3Qoc25hcHBlZEludFJlY3QocGFpbnRJbmZvLnJlY3QpKTsKIAogICAgICAgICAvLyBOb3cgY3Jl
YXRlIHRoZSBtYXNrLgotICAgICAgICBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIENvbG9yU3BhY2VTUkdCLCBjb250ZXh0KTsK
KyAgICAgICAgbWFza0ltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
bWFza1JlY3Quc2l6ZSgpLCBDb2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKICAgICAgICAgaWYg
KCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHBhaW50TWFza0ZvclRl
eHRGaWxsQm94KG1hc2tJbWFnZS5nZXQoKSwgbWFza1JlY3QsIGJveCwgc2Nyb2xsZWRQYWludFJl
Y3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAppbmRleCBkMDgyOGEyMmVhMDBiZTdiMzNhYzNiN2EyZDViZTdjMTM0YTJjYzEwLi44ZWI1YmMy
MjEwYjhjMWU4NDU5YWNhMjYwMmQ3ODEyZGUwNzdlYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMjkyNyw3ICsyOTI3LDcgQEAg
c3RhdGljIFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuRm9yVG91Y2hBY3Rpb24oVG91Y2hBY3Rpb24g
dG91Y2hBY3Rpb24sIEZsb2F0U2l6ZQogCiAgICAgY29uc3QgRmxvYXRTaXplIHRpbGVTaXplIHsg
MzIsIDE4IH07CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIodGlsZVNpemUsIENvbG9yU3BhY2VTUkdCLCBkZXN0Q29udGV4dCk7Cisg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KHRpbGVTaXplLCBDb2xvclNwYWNlOjpTUkdCLCBkZXN0Q29udGV4dCk7CiAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA2NTc0YjUwZjQzMjY1MzQ4YTk0MjdmZjU5Zjcw
NDM4YWI2MGQ4YzVkLi5jZDhhZjZlMmE3ODVmMDE2OTI0N2IwZDFmMmNhYTc3YzkzYzYxNDBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0xNDcxLDcg
KzE0NzEsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYQogICAgIHRyYWNrSW5mby5yZXNlcnZl
ZCA9IDA7CiAgICAgdHJhY2tJbmZvLmZpbGxlcjEgPSAwOwogCi0gICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKGluZmxhdGVkUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNl
U1JHQiwgcGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGlu
ZmxhdGVkUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlOjpTUkdCLCBw
YWludEluZm8uY29udGV4dCgpKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCmluZGV4IGNmNWQzNWI1ODg0MWRiY2NmMmMyN2E2
ZTVjZDM5MjFjYjRhZGM2YTYuLjA4ZTQ5MjgyYWQ5M2JjYWNkMjk3NzViODQ2ZjA1OWQ1YTJjYTcx
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ2xpcHBlci5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIFJlbmRlclNW
R1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dChSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgYwogCiAgICAgaWYgKHNob3VsZENyZWF0ZUNsaXBwZXJNYXNrSW1hZ2UgJiYgIXJl
cGFpbnRSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAvLyBGSVhNRSAoMTQ5NDY5KTogVGhpcyBp
bWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4g
TWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFrcyBuZXN0ZWQgY2xpcHBpbmcsIHRob3Vn
aC4KLSAgICAgICAgY2xpcHBlck1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgQ29sb3JTcGFjZVNS
R0IsIFVuYWNjZWxlcmF0ZWQsICZjb250ZXh0KTsKKyAgICAgICAgY2xpcHBlck1hc2tJbWFnZSA9
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNv
bHV0ZVRyYW5zZm9ybSwgQ29sb3JTcGFjZTo6U1JHQiwgVW5hY2NlbGVyYXRlZCwgJmNvbnRleHQp
OwogICAgICAgICBpZiAoIWNsaXBwZXJNYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggZDgyM2EwMmI1NGRmMTNhYzM0M2FkYmE2ZDVmMTQz
ZDRiYWFjYjc1NC4uNzViNTliNjNjM2U0OTYwYmQ0ZTNiZGJkODc0OTJhOTMyZjQzMTYxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRmls
dGVyQnVpbGRlcj4gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcyhTVkdG
aQogICAgICAgICBlbGVtZW50LnNldFN0YW5kYXJkQXR0cmlidXRlcyhlZmZlY3QuZ2V0KCkpOwog
ICAgICAgICBlZmZlY3QtPnNldEVmZmVjdEJvdW5kYXJpZXMoU1ZHTGVuZ3RoQ29udGV4dDo6cmVz
b2x2ZVJlY3RhbmdsZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCZlbGVt
ZW50LCBmaWx0ZXJFbGVtZW50KCkucHJpbWl0aXZlVW5pdHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gp
KTsKICAgICAgICAgaWYgKGVsZW1lbnQucmVuZGVyZXIoKSkKLSAgICAgICAgICAgIGVmZmVjdC0+
c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3ZnU3R5
bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpM
aW5lYXJSR0IgPyBDb2xvclNwYWNlTGluZWFyUkdCIDogQ29sb3JTcGFjZVNSR0IpOworICAgICAg
ICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVuZGVyZXIoKS0+
c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvcklu
dGVycG9sYXRpb246OkxpbmVhclJHQiA/IENvbG9yU3BhY2U6OkxpbmVhclJHQiA6IENvbG9yU3Bh
Y2U6OlNSR0IpOwogICAgICAgICBidWlsZGVyLT5hZGQoZWxlbWVudC5yZXN1bHQoKSwgV1RGTW92
ZShlZmZlY3QpKTsKICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkZXI7CkBAIC0xOTIsNyArMTkyLDcg
QEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVt
ZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICBlZmZlY3RpdmVUcmFuc2Zvcm0ubXVsdGlw
bHkoZmlsdGVyRGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0pOwogCiAgICAgUmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlID0gcmVuZGVyZXIuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZp
bHRlcnNFbmFibGVkKCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQ7Ci0gICAgYXV0byBz
b3VyY2VHcmFwaGljID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoZmls
dGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiwgZWZmZWN0aXZlVHJhbnNmb3JtLCBDb2xvclNwYWNlTGlu
ZWFyUkdCLCByZW5kZXJpbmdNb2RlLCBjb250ZXh0KTsKKyAgICBhdXRvIHNvdXJjZUdyYXBoaWMg
PSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLT5kcmF3
aW5nUmVnaW9uLCBlZmZlY3RpdmVUcmFuc2Zvcm0sIENvbG9yU3BhY2U6OkxpbmVhclJHQiwgcmVu
ZGVyaW5nTW9kZSwgY29udGV4dCk7CiAgICAgaWYgKCFzb3VyY2VHcmFwaGljKSB7CiAgICAgICAg
IEFTU0VSVCghbV9yZW5kZXJlckZpbHRlckRhdGFNYXAuY29udGFpbnMoJnJlbmRlcmVyKSk7CiAg
ICAgICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4dCA9IGNvbnRleHQ7CkBAIC0yNzEsNyArMjcx
LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKICAgICAgICAgICAgIGZpbHRlckRhdGEuc3Rh
dGUgPSBGaWx0ZXJEYXRhOjpBcHBseWluZzsKICAgICAgICAgICAgIGxhc3RFZmZlY3QtPmFwcGx5
KCk7CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT5jb3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQo
KTsKLSAgICAgICAgICAgIGxhc3RFZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoQ29s
b3JTcGFjZVNSR0IpOworICAgICAgICAgICAgbGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29s
b3JTcGFjZShDb2xvclNwYWNlOjpTUkdCKTsKICAgICAgICAgfQogICAgICAgICBmaWx0ZXJEYXRh
LnN0YXRlID0gRmlsdGVyRGF0YTo6QnVpbHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCmluZGV4IDU1
MmNlNWEzM2E4MDYyZTZiZWUwYjA0YWUzZjE2MGYwOTllYjUyZjUuLmNmM2Y5ZWE4OGIxNDU5ZDk3
NzNkZDUzZjJiMDEyZTJiNGIyYjA2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcApAQCAtNjAsNyAr
NjAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250ZXh0Rm9yVGV4
dEdyYWRpZW50KEdyYXBoaWNzQ29udGV4dComIGNvbgogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNv
bHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0
aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKCp0ZXh0Um9vdEJsb2NrKTsKICAgICBGbG9h
dFJlY3QgcmVwYWludFJlY3QgPSB0ZXh0Um9vdEJsb2NrLT5yZXBhaW50UmVjdEluTG9jYWxDb29y
ZGluYXRlcygpOwogCi0gICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIENvbG9yU3Bh
Y2VTUkdCLCBjb250ZXh0LT5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1dG8gbWFza0ltYWdlID0g
U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29s
dXRlVHJhbnNmb3JtLCBDb2xvclNwYWNlOjpTUkdCLCBjb250ZXh0LT5yZW5kZXJpbmdNb2RlKCkp
OwogICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHAKaW5kZXggNGM4MTliOWJjNTVkYzJiZmE4MmZiYmMwOTdmNjM3NTg1YjViMTI3Ny4uMTc4
N2UxOGMyZGNlZjViZGY5OTI0NzRjZmMwMjJiNTE2NmFkNTg0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAK
QEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNv
dXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKIAogICAgIGlmICghbWFz
a2VyRGF0YS0+bWFza0ltYWdlICYmICFyZXBhaW50UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAg
Y29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGUoKS5zdmdTdHlsZSgpOwotICAg
ICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24o
KSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IENvbG9yU3BhY2VMaW5lYXJSR0Ig
OiBDb2xvclNwYWNlU1JHQjsKKyAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3ZnU3R5
bGUuY29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0Ig
PyBDb2xvclNwYWNlOjpMaW5lYXJSR0IgOiBDb2xvclNwYWNlOjpTUkdCOwogICAgICAgICAvLyBG
SVhNRSAoMTQ5NDcwKTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFrcyBh
bHBoYSBtYXNraW5nLCB0aG91Z2guCiAgICAgICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZSA9IFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0
ZVRyYW5zZm9ybSwgY29sb3JTcGFjZSwgVW5hY2NlbGVyYXRlZCwgY29udGV4dCk7CiAgICAgICAg
IGlmICghbWFza2VyRGF0YS0+bWFza0ltYWdlKQpAQCAtMTEzLDcgKzExMyw3IEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRh
KiBtYXNrZXJEYXRhLCBDCiAgICAgfQogCiAjaWYgIVVTRShDRykKLSAgICBtYXNrZXJEYXRhLT5t
YXNrSW1hZ2UtPnRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZVNSR0IsIGNvbG9yU3BhY2Up
OworICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+dHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNw
YWNlOjpTUkdCLCBjb2xvclNwYWNlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbG9yU3Bh
Y2UpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKaW5kZXggMzFiYzVmMTkzMWJkYWU1MGFhYzY2
MTM1OWZjMGEyNmYxNzg1ODZmYy4uMWMzYzg1NGFlZjI5NzY5YzJkZjllYjQ0ZjljZDE5YjNiMWM2
NTcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZVBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApAQCAtMjU1LDcgKzI1NSw3IEBAIGJvb2wgUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFRpbGVJbWFnZVRyYW5zZm9ybShSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UoY29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmIGF0dHJp
YnV0ZXMsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMsIGNvbnN0IEZsb2F0UmVjdCYg
YWJzb2x1dGVUaWxlQm91bmRhcmllcywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0aWxlSW1hZ2VU
cmFuc2Zvcm0sIEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgY29uc3QKIHsKICAgICBjbGFtcGVkQWJzb2x1dGVUaWxl
Qm91bmRhcmllcyA9IEltYWdlQnVmZmVyOjpjbGFtcGVkUmVjdChhYnNvbHV0ZVRpbGVCb3VuZGFy
aWVzKTsKLSAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3Vu
ZGFyaWVzLCBDb2xvclNwYWNlU1JHQiwgcmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byB0aWxlSW1h
Z2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVC
b3VuZGFyaWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgQ29sb3JTcGFjZTo6U1JH
QiwgcmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJpbmdDb250ZXh0LmNwcAppbmRleCBhYTkyZDYzNGVjZWY4MGU5MDY4YTgxMTU3ODM3MDI4ZTZj
NjFmM2VkLi5kNzg2OTRhYWU3YjM1OTJiMzYyNTI2N2Q5NTAwMTY2YWJlMDUwZmY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5j
cHAKQEAgLTM1MSw3ICszNTEsNyBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZv
cmVncm91bmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdQogCiAgICAgLy8g
Q3JlYXRlIGEgbmV3IGJ1ZmZlciBhbmQgcGFpbnQgdGhlIGZvcmVncm91bmQgaW50byBpdC4KICAg
ICBpZiAoIWltYWdlQnVmZmVyKSB7Ci0gICAgICAgIGlmICgoaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3gu
c2l6ZSgpKSwgQ29sb3JTcGFjZVNSR0IsIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkpKSkgeworICAg
ICAgICBpZiAoKGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSksIENvbG9yU3BhY2U6OlNSR0Is
IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkpKSkgewogICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0
JiBidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwogICAg
ICAgICAgICAgYnVmZmVyZWRSZW5kZXJpbmdDb250ZXh0LnRyYW5zbGF0ZSgtYm91bmRpbmdCb3gu
bG9jYXRpb24oKSk7CiAgICAgICAgICAgICBQYWludEluZm8gYnVmZmVyZWRJbmZvKCptX3BhaW50
SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCBjMzUz
N2UzOGNkOTgwNDhmYzAyMTc1ZjI4MjIxNGI1MTUzOWEwOTM4Li43ZTg2MDc5OGY3MWY3NmI1NzZm
YzZlMTkzNmZmMWJhNzI4ZDcxMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZv
ckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZQogICAg
IEZsb2F0UmVjdCBpbWFnZUJ1ZmZlclNpemUgPSB6b29tZWRDb250YWluZXJSZWN0OwogICAgIGlt
YWdlQnVmZmVyU2l6ZS5zY2FsZShpbWFnZUJ1ZmZlclNjYWxlLndpZHRoKCksIGltYWdlQnVmZmVy
U2NhbGUuaGVpZ2h0KCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUo
aW1hZ2VCdWZmZXJTaXplLnNpemUoKSksIDEsIENvbG9yU3BhY2VTUkdCLCBjb250ZXh0KTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgp
KSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIpIC8vIEZh
aWxlZCB0byBhbGxvY2F0ZSBidWZmZXIuCiAgICAgICAgIHJldHVybjsKICAgICBkcmF3Rm9yQ29u
dGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJTaXplLCBjb250YWluZXJab29tLCBp
bml0aWFsRnJhZ21lbnRVUkwsIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVyUmVjdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2Uu
Y3BwCmluZGV4IGM1ODRlYjUzN2U2ZTU2NzMxOGViMDIzODhlZmY3ODI4MjJhOTYyNzQuLjhmMTM4
YTJlNWExNWQ4Y2IxNzE0Y2YyYjZkZDAwNTk1Zjk5NWEyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCkBAIC05Myw4ICs5Myw4
IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBpZiAoIW1faW1h
Z2UgJiYgIXJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGRUltYWdlIHJlc3Vs
dHMgYXJlIGFsd2F5cyBpbiBDb2xvclNwYWNlU1JHQgotICAgIHNldFJlc3VsdENvbG9yU3BhY2Uo
Q29sb3JTcGFjZVNSR0IpOworICAgIC8vIEZFSW1hZ2UgcmVzdWx0cyBhcmUgYWx3YXlzIGluIENv
bG9yU3BhY2U6OlNSR0IKKyAgICBzZXRSZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2U6OlNSR0Ip
OwogCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1
bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA2MDZkYmNhOGUzMjZiMWQ0Zjk4MjJkZGE5M2I3OGM4
MWQxYmU0NDMyLi45NGY0MzIxYjNlZWExYzc1YjY1MzM0YjMzYTI0ZjJiZDZkNzU4YTcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNzg2LDkg
Kzc4Niw5IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpDb2xvclNwYWNlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAg
ICBXZWJDb3JlOjpDb2xvclNwYWNlLAotICAgIFdlYkNvcmU6OkNvbG9yU3BhY2U6OkNvbG9yU3Bh
Y2VTUkdCLAotICAgIFdlYkNvcmU6OkNvbG9yU3BhY2U6OkNvbG9yU3BhY2VMaW5lYXJSR0IsCi0g
ICAgV2ViQ29yZTo6Q29sb3JTcGFjZTo6Q29sb3JTcGFjZURpc3BsYXlQMworICAgIFdlYkNvcmU6
OkNvbG9yU3BhY2U6OlNSR0IsCisgICAgV2ViQ29yZTo6Q29sb3JTcGFjZTo6TGluZWFyUkdCLAor
ICAgIFdlYkNvcmU6OkNvbG9yU3BhY2U6OkRpc3BsYXlQMwogICAgID47CiB9OwogCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGUzMDA4MWFmOGE0
NTUxOWQzYjViYzdhODI5NDNlYjJkNGMyZTRhNy4uMjg0OGJkZDNhOWViNzZmYjMyODU3ZmY0OTdi
MzNkMzc2NDEwZjgxOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTEyLTA2ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBDb2xvclNwYWNlIGFuIGVu
dW0gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNDk3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3IuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjptYWtlQ29s
b3IpOgorCiAyMDE5LTEyLTA2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4K
IAogICAgICAgICBQeXRob24gMzogQWRkIHN1cHBvcnQgaW4gd2Via2l0cHkudG9vbCAoRm9sbG93
LXVwLCBwYXJ0IDIpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRXh0ZW5kZWRDb2xvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RXh0ZW5kZWRDb2xvci5jcHAKaW5kZXggNjA3Nzc3ZGM4ZWE1YmU2ZGJiYWU5NGQxYTg4NzNkYzY0
MDFkODE5Ni4uNzUxMmFkNzg4MjYxMWI2YzgwNmVhMDY4MjNjZDBiYTlkNTY5ZmY4ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3IuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yLmNw
cApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoRXh0
ZW5kZWRDb2xvciwgQ29uc3RydWN0b3IpCiB7Ci0gICAgQ29sb3IgYzEoMS4wLCAwLjUsIDAuMjUs
IDEuMCwgQ29sb3JTcGFjZURpc3BsYXlQMyk7CisgICAgQ29sb3IgYzEoMS4wLCAwLjUsIDAuMjUs
IDEuMCwgQ29sb3JTcGFjZTo6RGlzcGxheVAzKTsKICAgICBFWFBFQ1RfVFJVRShjMS5pc0V4dGVu
ZGVkKCkpOwogICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIGMxLmFzRXh0ZW5kZWQoKS5yZWQoKSk7
CiAgICAgRVhQRUNUX0ZMT0FUX0VRKDAuNSwgYzEuYXNFeHRlbmRlZCgpLmdyZWVuKCkpOwpAQCAt
NDcsNyArNDcsNyBAQCBURVNUKEV4dGVuZGVkQ29sb3IsIENvbnN0cnVjdG9yKQogCiBURVNUKEV4
dGVuZGVkQ29sb3IsIENvcHlDb25zdHJ1Y3RvcikKIHsKLSAgICBDb2xvciBjMSgxLjAsIDAuNSwg
MC4yNSwgMS4wLCBDb2xvclNwYWNlRGlzcGxheVAzKTsKKyAgICBDb2xvciBjMSgxLjAsIDAuNSwg
MC4yNSwgMS4wLCBDb2xvclNwYWNlOjpEaXNwbGF5UDMpOwogICAgIEVYUEVDVF9UUlVFKGMxLmlz
RXh0ZW5kZWQoKSk7CiAKICAgICBDb2xvciBjMihjMSk7CkBAIC02Myw3ICs2Myw3IEBAIFRFU1Qo
RXh0ZW5kZWRDb2xvciwgQ29weUNvbnN0cnVjdG9yKQogCiBURVNUKEV4dGVuZGVkQ29sb3IsIEFz
c2lnbm1lbnQpCiB7Ci0gICAgQ29sb3IgYzEoMS4wLCAwLjUsIDAuMjUsIDEuMCwgQ29sb3JTcGFj
ZURpc3BsYXlQMyk7CisgICAgQ29sb3IgYzEoMS4wLCAwLjUsIDAuMjUsIDEuMCwgQ29sb3JTcGFj
ZTo6RGlzcGxheVAzKTsKICAgICBFWFBFQ1RfVFJVRShjMS5pc0V4dGVuZGVkKCkpOwogCiAgICAg
Q29sb3IgYzIgPSBjMTsKQEAgLTc5LDcgKzc5LDcgQEAgVEVTVChFeHRlbmRlZENvbG9yLCBBc3Np
Z25tZW50KQogCiBURVNUKEV4dGVuZGVkQ29sb3IsIE1vdmVDb25zdHJ1Y3RvcikKIHsKLSAgICBD
b2xvciBjMSgxLjAsIDAuNSwgMC4yNSwgMS4wLCBDb2xvclNwYWNlRGlzcGxheVAzKTsKKyAgICBD
b2xvciBjMSgxLjAsIDAuNSwgMC4yNSwgMS4wLCBDb2xvclNwYWNlOjpEaXNwbGF5UDMpOwogICAg
IEVYUEVDVF9UUlVFKGMxLmlzRXh0ZW5kZWQoKSk7CiAKICAgICBDb2xvciBjMihXVEZNb3ZlKGMx
KSk7CkBAIC05OCw3ICs5OCw3IEBAIFRFU1QoRXh0ZW5kZWRDb2xvciwgTW92ZUNvbnN0cnVjdG9y
KQogCiBURVNUKEV4dGVuZGVkQ29sb3IsIE1vdmVBc3NpZ25tZW50KQogewotICAgIENvbG9yIGMx
KDEuMCwgMC41LCAwLjI1LCAxLjAsIENvbG9yU3BhY2VEaXNwbGF5UDMpOworICAgIENvbG9yIGMx
KDEuMCwgMC41LCAwLjI1LCAxLjAsIENvbG9yU3BhY2U6OkRpc3BsYXlQMyk7CiAgICAgRVhQRUNU
X1RSVUUoYzEuaXNFeHRlbmRlZCgpKTsKIAogICAgIENvbG9yIGMyID0gV1RGTW92ZShjMSk7CkBA
IC0xMTgsNyArMTE4LDcgQEAgVEVTVChFeHRlbmRlZENvbG9yLCBNb3ZlQXNzaWdubWVudCkKIAog
VEVTVChFeHRlbmRlZENvbG9yLCBCYXNpY1JlZmVyZW5jZUNvdW50aW5nKQogewotICAgIENvbG9y
KiBjMSA9IG5ldyBDb2xvcigxLjAsIDAuNSwgMC4yNSwgMS4wLCBDb2xvclNwYWNlRGlzcGxheVAz
KTsKKyAgICBDb2xvciogYzEgPSBuZXcgQ29sb3IoMS4wLCAwLjUsIDAuMjUsIDEuMCwgQ29sb3JT
cGFjZTo6RGlzcGxheVAzKTsKICAgICBFWFBFQ1RfVFJVRShjMS0+aXNFeHRlbmRlZCgpKTsKIAog
ICAgIENvbG9yKiBjMiA9IG5ldyBDb2xvcigqYzEpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFRFU1Qo
RXh0ZW5kZWRDb2xvciwgQmFzaWNSZWZlcmVuY2VDb3VudGluZykKIAogQ29sb3IgbWFrZUNvbG9y
KCkKIHsKLSAgICBDb2xvciBjMSgxLjAsIDAuNSwgMC4yNSwgMS4wLCBDb2xvclNwYWNlRGlzcGxh
eVAzKTsKKyAgICBDb2xvciBjMSgxLjAsIDAuNSwgMC4yNSwgMS4wLCBDb2xvclNwYWNlOjpEaXNw
bGF5UDMpOwogICAgIEVYUEVDVF9UUlVFKGMxLmlzRXh0ZW5kZWQoKSk7CiAgICAgRVhQRUNUX0VR
KDF1LCBjMS5hc0V4dGVuZGVkKCkucmVmQ291bnQoKSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>