<?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>147475</bug_id>
          
          <creation_ts>2015-07-30 16:57:34 -0700</creation_ts>
          <short_desc>jsc-tailcall: Add enums for type-safety</short_desc>
          <delta_ts>2015-07-30 17:44:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (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>146477</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Basile Clement">basile_clement</reporter>
          <assigned_to name="Basile Clement">basile_clement</assigned_to>
          <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1113579</commentid>
    <comment_count>0</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-30 16:57:34 -0700</bug_when>
    <thetext>We should have:

 - An enum to specify whether we want to keep or trash the caller frame instead of using reinterpret_cast&lt;void*&gt;(0) and reinterpret_cast&lt;void*&gt;(1)

 - An enum to indicate whether we are performing a regular call, a tail call, or a constructor call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113582</commentid>
    <comment_count>1</comment_count>
      <attachid>257881</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-30 17:03:44 -0700</bug_when>
    <thetext>Created attachment 257881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113583</commentid>
    <comment_count>2</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-30 17:04:53 -0700</bug_when>
    <thetext>Building to run the tests but this should solve the build failures from the merge from trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113584</commentid>
    <comment_count>3</comment_count>
      <attachid>257882</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-30 17:08:31 -0700</bug_when>
    <thetext>Created attachment 257882
Patch

Now it builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113590</commentid>
    <comment_count>4</comment_count>
      <attachid>257881</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-07-30 17:28:21 -0700</bug_when>
    <thetext>Comment on attachment 257881
Patch

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

r-
You need to add CallMode.{cpp,h} &amp; DeferredSourceDump.{cpp,h} to Windows and cmake builds.

&gt; Source/JavaScriptCore/bytecode/CallMode.h:31
&gt; +enum class CallMode { Tail = 0, Regular, Construct };

Minor nit - Wouldn&apos;t it make more logical sense to order these Regular, TailCail, Construct, is there special meaning to TailCall being 0?

&gt; Source/JavaScriptCore/bytecode/CallMode.h:33
&gt; +enum FrameAction { KeepTheFrame = 0, TrashTheFrame };

Doesn&apos;t ReuseTheFrame sound better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113594</commentid>
    <comment_count>5</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-30 17:30:47 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 257881 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=257881&amp;action=review
&gt; 
&gt; r-
&gt; You need to add CallMode.{cpp,h} &amp; DeferredSourceDump.{cpp,h} to Windows and
&gt; cmake builds.

Oh oops, I knew there was a reason I kept this locally instead of submitting a patch earlier...
(Note that there is nothing to do w/ DeferredSourceDump, it was just reordered when I did &quot;Sort by name&quot; in XCode).

&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/CallMode.h:31
&gt; &gt; +enum class CallMode { Tail = 0, Regular, Construct };
&gt; 
&gt; Minor nit - Wouldn&apos;t it make more logical sense to order these Regular,
&gt; TailCail, Construct, is there special meaning to TailCall being 0?

It would make sense. Tail is 0 because CallMode and FrameAction were a single enum initially, changing this.

&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/CallMode.h:33
&gt; &gt; +enum FrameAction { KeepTheFrame = 0, TrashTheFrame };
&gt; 
&gt; Doesn&apos;t ReuseTheFrame sound better?

ReuseTheFrame is much nicer, changing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113596</commentid>
    <comment_count>6</comment_count>
      <attachid>257885</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-30 17:34:59 -0700</bug_when>
    <thetext>Created attachment 257885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113598</commentid>
    <comment_count>7</comment_count>
      <attachid>257887</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-30 17:38:24 -0700</bug_when>
    <thetext>Created attachment 257887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113601</commentid>
    <comment_count>8</comment_count>
      <attachid>257887</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-07-30 17:40:30 -0700</bug_when>
    <thetext>Comment on attachment 257887
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113602</commentid>
    <comment_count>9</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-30 17:44:01 -0700</bug_when>
    <thetext>Landed in r187629 &lt;http://trac.webkit.org/changeset/187629&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257881</attachid>
            <date>2015-07-30 17:03:44 -0700</date>
            <delta_ts>2015-07-30 17:28:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147475-20150730170343.patch</filename>
            <type>text/plain</type>
            <size>29901</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ODFiOTUxZmE2MTdjZjQyNGY1NTAwODA2OGIyMTczZGU2Zjk0ZTJlLi4wM2Q1ZmM2ZTNmOTFjZjBh
MzQzYzZiODhjZGY5YzIyMWM5NGY3M2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0NSBAQAogMjAxNS0wNy0zMCAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBh
cHBsZS5jb20+CiAKKyAgICAgICAganNjLXRhaWxjYWxsOiBBZGQgZW51bXMgZm9yIHR5cGUtc2Fm
ZXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc0
NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IGFkZHM6CisKKyAgICAgICAgIC0gQSBDYWxsTW9kZSBlbnVtIHRvIGRpc3Rpbmd1aXNoIHRhaWwg
Y2FsbHMgZnJvbSByZWd1bGFyIGNhbGxzIGZyb20gY29uc3RydWN0CisKKyAgICAgICAgIC0gQSBG
cmFtZUFjdGlvbiBlbnVtIHRvIGluZGljYXRlIHdoZXRoZXIgdG8ga2VlcCBvciB0cmFzaCB0aGUg
Y2FsbAorICAgICAgICAgICBmcmFtZS4gSXQgYWxzbyBjaGFuZ2VzIEpJVE9wZXJhdGlvbnMuaCB0
byBjb3JyZWN0bHkgdXNlIHRoaXMgdG8gdGVsbAorICAgICAgICAgICBzbG93UGF0aEZvciB0byAq
bm90KiB0cmFzaCB0aGUgZnJhbWUgb24gYSByZWd1bGFyIGNhbGwgKGJlZm9yZQorICAgICAgICAg
ICByMTg3NTA1LCB0aGlzIHdhcyBzdGF0aWNhbGx5IGtub3duIGluIHNsb3dQYXRoRm9yKS4KKwor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvQ29kZUxvY2F0aW9uLmg6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbk5lYXJDYWxs
OjpDb2RlTG9jYXRpb25OZWFyQ2FsbCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbk5lYXJD
YWxsOjpjYWxsTW9kZSk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6bmVhckNh
bGxBdE9mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAg
KEpTQzo6TGlua0J1ZmZlcjo6bG9jYXRpb25PZk5lYXJDYWxsKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsTGlua0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjYWxsTW9kZUZv
cik6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y2FsbE1vZGUpOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OmlzVGFpbENhbGwpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86
OmlzVmFyYXJncyk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbE1vZGUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbE1vZGUu
aDogQWRkZWQuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAg
ICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnNsb3dQYXRoRm9y
KToKKyAgICAgICAgKEpTQzo6dmlydHVhbFRodW5rRm9yKToKKworMjAxNS0wNy0zMCAgQmFzaWxl
IENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBhcHBsZS5jb20+CisKICAgICAgICAganNjLXRhaWxj
YWxsOiBEb24ndCB3YXN0ZSBzdGFjayBzcGFjZSB3aGVuIGFyaXR5IGZpeHVwIHdhcyBwZXJmb3Jt
ZWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzQ0
NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjN2RkNzAyYzM0ZmIzOGUxZDQ0
NmYyYzgxZTMzOWUyMzhmN2VkNjcuLjM0ZWI0M2I1Y2U2YmFiNTRmMTk3MTExM2EwMTk4NjkxMDI4
YjY0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NjIsNiArOTYyLDggQEAK
IAkJNURCQjE1MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRlc3RhcGkuanMgaW4gQ29weSBTdXBwb3J0
IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ4NTc3NDBBNDY5
NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLzsgfTsKIAkJNURCQjE1MjUxMzFEMEJENzAwNTZB
RDM2IC8qIG1pbmlkb20uanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNDEyMTEwRDBBNDg3ODg3MDA0ODAyNTUgLyogbWluaWRvbS5q
cyAqLzsgfTsKIAkJNURFNkU1QjMwRTE3MjhFQzAwMTgwNDA3IC8qIGNyZWF0ZV9oYXNoX3RhYmxl
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NTQw
MjU1NTk3RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKCk7IH07IH07CisJCTYyNzY3MzIzMUI2ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9k
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2Mjc2
NzMyMTFCNjgwQzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuY3BwICovOyB9OworCQk2Mjc2NzMyNDFC
NjgwQzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDYyNzY3MzIyMUI2ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9kZS5o
ICovOyB9OwogCQk2MkQyRDM4RjFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MkQyRDM4
RDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5jcHAgKi87IH07CiAJCTYyRDJE
MzkwMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MkQyRDM4RTFBREYxMDNGMDAwMjA2QzEg
LyogRnVuY3Rpb25SYXJlRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTYyRjJBQTM3MUIwQkVERTMwMDYxMEM3QSAvKiBERkdMYXp5Tm9kZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MkE5QTI5
RTFCMEJFRDQ4MDBCRDU0Q0EgLyogREZHTGF6eU5vZGUuY3BwICovOyB9OwpAQCAtMjY3Niw2ICsy
Njc4LDggQEAKIAkJNURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBKU0MueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVE
RERGNDQ2MTRGRUU3MjIwMEI0RkI0RCAvKiBMTEludERlc2lyZWRPZmZzZXRzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RGVzaXJlZE9mZnNldHMuaDsgcGF0aCA9IExM
SW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTVERTNEMEY0MEREOERERkIwMDQ2ODcxNCAvKiBXZWJLaXRBdmFpbGFi
aWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0QXZhaWxhYmls
aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYyNzY3MzIxMUI2ODBDMUUwMEZE
OUYyRSAvKiBDYWxsTW9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDYWxsTW9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYyNzY3MzIyMUI2
ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYWxsTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MkE5QTI5RTFC
MEJFRDQ4MDBCRDU0Q0EgLyogREZHTGF6eU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHTGF6eU5vZGUuY3BwOyBwYXRoID0gZGZnL0RGR0xhenlOb2RlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjJBOUEyOUYxQjBCRUQ0ODAwQkQ1NENB
IC8qIERGR0xhenlOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0xh
enlOb2RlLmg7IHBhdGggPSBkZmcvREZHTGF6eU5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25SYXJlRGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MjU3LDYgKzUyNjEsOCBAQAogCQkJ
CTBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLywKIAkJCQkwRjkz
MzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovLAogCQkJCTBGOTMz
Mjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oICovLAorCQkJCTYyNzY3MzIx
MUI2ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9kZS5jcHAgKi8sCisJCQkJNjI3NjczMjIxQjY4MEMx
RTAwRkQ5RjJFIC8qIENhbGxNb2RlLmggKi8sCiAJCQkJMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRG
IC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8sCiAJCQkJMEYzQjdFMjQx
OUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCAqLywKIAkJCQkwRjNCN0UyNTE5QTEx
QjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCAqLywKQEAgLTUyNzgsNiArNTI4NCw4IEBACiAJ
CQkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLywKIAkJCQkwRkM3
MTJEQzE3Q0Q4Nzc4MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCAq
LywKIAkJCQkwRkM3MTJERDE3Q0Q4Nzc4MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmggKi8sCisJCQkJRkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291
cmNlRHVtcC5jcHAgKi8sCisJCQkJRkU1MDY4NjQxQUUyNDYzOTAwMDlEQUI3IC8qIERlZmVycmVk
U291cmNlRHVtcC5oICovLAogCQkJCTBGQkMwQUU0MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0
UHJvZmlsZS5jcHAgKi8sCiAJCQkJMEZCQzBBRTUxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQ
cm9maWxlLmggKi8sCiAJCQkJOTY5QTA3OTIwRUQxRDNBRTAwRjFGNjgxIC8qIEV2YWxDb2RlQ2Fj
aGUuaCAqLywKQEAgLTUzMjUsOCArNTMzMyw2IEBACiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5
Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCAqLywKIAkJCQkxNDI5RDg4MzBFRDIxQzNEMDBCODk2
MTkgLyogU2FtcGxpbmdUb29sLmNwcCAqLywKIAkJCQkxNDI5RDg4NDBFRDIxQzNEMDBCODk2MTkg
LyogU2FtcGxpbmdUb29sLmggKi8sCi0JCQkJRkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERl
ZmVycmVkU291cmNlRHVtcC5jcHAgKi8sCi0JCQkJRkU1MDY4NjQxQUUyNDYzOTAwMDlEQUI3IC8q
IERlZmVycmVkU291cmNlRHVtcC5oICovLAogCQkJCTBGNTU0MUFGMTYxM0MxRkIwMENFM0UyNSAv
KiBTcGVjaWFsUG9pbnRlci5jcHAgKi8sCiAJCQkJMEY1NTQxQjAxNjEzQzFGQjAwQ0UzRTI1IC8q
IFNwZWNpYWxQb2ludGVyLmggKi8sCiAJCQkJMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFNw
ZWN1bGF0ZWRUeXBlLmNwcCAqLywKQEAgLTU4NjUsNiArNTg3MSw3IEBACiAJCQkJODZFQzlERDAx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
RDg5Q0ZFMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkU1NzE0MURBRjEwMDAxNzlDOTQgLyogREZHT1NS
RW50cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTYyNzY3MzI0MUI2ODBDMUUwMEZEOUYyRSAvKiBD
YWxsTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMjYxN0Q1MUY1NzAwQ0EyQzQwIC8q
IERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MkYy
QUEzODFCMEJFREUzMDA2MTBDN0EgLyogREZHTGF6eU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLywK
QEAgLTc1NjcsNiArNzU3NCw3IEBACiAJCQkJMEYyRDRERUYxOTgzMkREMzAwN0Q0QjE5IC8qIFR5
cGVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzNUYyNEQxMkU2NzY1QjAwMkI1NTUzIC8q
IFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNERTNCNDMw
RTZDODMyRDAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2Mjc2
NzMyMzFCNjgwQzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0U0RUU3MEYwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUMyRjBGMkQxMTZCQUVFRTkwMDE4N0MxOSAvKiBTdHJ1Y3R1cmVSYXJlRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3MDEzQ0E4QjFCNDkxQTk0MDBDQUU2MTMgLyogSlNKb2Iu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCmluZGV4IDE1OGY2MDAxNmRjNzU5YzAy
ZDU3YTk4NzZlMDRkN2NiNmIyODZjYmQuLjY5MDE0MzRlYjJjYTM0MWMwZmQ1MzhjOTBlN2RiNzI1
ZjNjZmYyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCkBAIC0xMTU0LDEwICsxMTU0LDEwIEBAIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgdm9pZCByZXBhdGNoTmVhckNhbGwoQ29kZUxvY2F0aW9uTmVhckNh
bGwgbmVhckNhbGwsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKICAgICAg
ICAgc3dpdGNoIChuZWFyQ2FsbC5jYWxsTW9kZSgpKSB7Ci0gICAgICAgIGNhc2UgQ2FsbE1vZGU6
OlRhaWw6CisgICAgICAgIGNhc2UgTmVhckNhbGxNb2RlOjpUYWlsOgogICAgICAgICAgICAgQXNz
ZW1ibGVyVHlwZTo6cmVsaW5rSnVtcChuZWFyQ2FsbC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRp
b24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNh
c2UgQ2FsbE1vZGU6OlJlZ3VsYXI6CisgICAgICAgIGNhc2UgTmVhckNhbGxNb2RlOjpSZWd1bGFy
OgogICAgICAgICAgICAgQXNzZW1ibGVyVHlwZTo6cmVsaW5rQ2FsbChuZWFyQ2FsbC5kYXRhTG9j
YXRpb24oKSwgZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQ29kZUxvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Nv
ZGVMb2NhdGlvbi5oCmluZGV4IDBkYzI0ZGU0OWQ0MmQ4YTkxM2QwZTk0MzE2YTA1MjYzNmM1ZjE0
NDYuLmUzODE3YjAxOTM1YTRjNzRhYTk0M2Q4NjZiMzcxNGNmMWYyN2U3MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaApAQCAtMzIsNyArMzIs
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBDYWxsTW9kZSB7IFJlZ3VsYXIsIFRhaWwg
fTsKK2VudW0gTmVhckNhbGxNb2RlIHsgUmVndWxhciwgVGFpbCB9OwogCiBjbGFzcyBDb2RlTG9j
YXRpb25JbnN0cnVjdGlvbjsKIGNsYXNzIENvZGVMb2NhdGlvbkxhYmVsOwpAQCAtNjEsNyArNjEs
NyBAQCBwdWJsaWM6CiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWxBdE9mZnNldChpbnQgb2Zm
c2V0KTsKICAgICBDb2RlTG9jYXRpb25KdW1wIGp1bXBBdE9mZnNldChpbnQgb2Zmc2V0KTsKICAg
ICBDb2RlTG9jYXRpb25DYWxsIGNhbGxBdE9mZnNldChpbnQgb2Zmc2V0KTsKLSAgICBDb2RlTG9j
YXRpb25OZWFyQ2FsbCBuZWFyQ2FsbEF0T2Zmc2V0KGludCBvZmZzZXQsIENhbGxNb2RlKTsKKyAg
ICBDb2RlTG9jYXRpb25OZWFyQ2FsbCBuZWFyQ2FsbEF0T2Zmc2V0KGludCBvZmZzZXQsIE5lYXJD
YWxsTW9kZSk7CiAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGRhdGFMYWJlbFB0ckF0T2Zm
c2V0KGludCBvZmZzZXQpOwogICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIGRhdGFMYWJlbDMy
QXRPZmZzZXQoaW50IG9mZnNldCk7CiAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdCBk
YXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoaW50IG9mZnNldCk7CkBAIC0xMTcsMTMgKzExNywxMyBA
QCBwdWJsaWM6CiBjbGFzcyBDb2RlTG9jYXRpb25OZWFyQ2FsbCA6IHB1YmxpYyBDb2RlTG9jYXRp
b25Db21tb24gewogcHVibGljOgogICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsKCkge30KLSAgICBl
eHBsaWNpdCBDb2RlTG9jYXRpb25OZWFyQ2FsbChNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbG9jYXRp
b24sIENhbGxNb2RlIGNhbGxNb2RlKQorICAgIGV4cGxpY2l0IENvZGVMb2NhdGlvbk5lYXJDYWxs
KE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsb2NhdGlvbiwgTmVhckNhbGxNb2RlIGNhbGxNb2RlKQog
ICAgICAgICA6IENvZGVMb2NhdGlvbkNvbW1vbihsb2NhdGlvbiksIG1fY2FsbE1vZGUoY2FsbE1v
ZGUpIHt9Ci0gICAgZXhwbGljaXQgQ29kZUxvY2F0aW9uTmVhckNhbGwodm9pZCogbG9jYXRpb24s
IENhbGxNb2RlIGNhbGxNb2RlKQorICAgIGV4cGxpY2l0IENvZGVMb2NhdGlvbk5lYXJDYWxsKHZv
aWQqIGxvY2F0aW9uLCBOZWFyQ2FsbE1vZGUgY2FsbE1vZGUpCiAgICAgICAgIDogQ29kZUxvY2F0
aW9uQ29tbW9uKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihsb2NhdGlvbikpLCBtX2NhbGxNb2RlKGNh
bGxNb2RlKSB7fQotICAgIENhbGxNb2RlIGNhbGxNb2RlKCkgeyByZXR1cm4gbV9jYWxsTW9kZTsg
fQorICAgIE5lYXJDYWxsTW9kZSBjYWxsTW9kZSgpIHsgcmV0dXJuIG1fY2FsbE1vZGU7IH0KIHBy
aXZhdGU6Ci0gICAgQ2FsbE1vZGUgbV9jYWxsTW9kZSA9IENhbGxNb2RlOjpSZWd1bGFyOworICAg
IE5lYXJDYWxsTW9kZSBtX2NhbGxNb2RlID0gTmVhckNhbGxNb2RlOjpSZWd1bGFyOwogfTsKIAog
Y2xhc3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgOiBwdWJsaWMgQ29kZUxvY2F0aW9uQ29tbW9u
IHsKQEAgLTE4Niw3ICsxODYsNyBAQCBpbmxpbmUgQ29kZUxvY2F0aW9uQ2FsbCBDb2RlTG9jYXRp
b25Db21tb246OmNhbGxBdE9mZnNldChpbnQgb2Zmc2V0KQogICAgIHJldHVybiBDb2RlTG9jYXRp
b25DYWxsKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNldCk7
CiB9CiAKLWlubGluZSBDb2RlTG9jYXRpb25OZWFyQ2FsbCBDb2RlTG9jYXRpb25Db21tb246Om5l
YXJDYWxsQXRPZmZzZXQoaW50IG9mZnNldCwgQ2FsbE1vZGUgY2FsbE1vZGUpCitpbmxpbmUgQ29k
ZUxvY2F0aW9uTmVhckNhbGwgQ29kZUxvY2F0aW9uQ29tbW9uOjpuZWFyQ2FsbEF0T2Zmc2V0KGlu
dCBvZmZzZXQsIE5lYXJDYWxsTW9kZSBjYWxsTW9kZSkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09E
RV9PRkZTRVQob2Zmc2V0KTsKICAgICByZXR1cm4gQ29kZUxvY2F0aW9uTmVhckNhbGwocmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0LCBjYWxsTW9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCmluZGV4IDljNDFi
OTVkNTE1NWM0ZDZjOTI0ODcxZGI5NGZhMTdmZjE4ZWNjMzguLmIzNGE2ZjE5ZmY0NDExMjhiODI1
MTMyODI1MzQyMTZlMjYwMjVmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTGlua0J1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTGlua0J1ZmZlci5oCkBAIC0xODEsNyArMTgxLDcgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQoY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TGlua2FibGUpKTsKICAgICAgICAgQVNTRVJUKGNhbGwu
aXNGbGFnU2V0KENhbGw6Ok5lYXIpKTsKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbk5lYXJD
YWxsKE1hY3JvQXNzZW1ibGVyOjpnZXRMaW5rZXJBZGRyZXNzKGNvZGUoKSwgYXBwbHlPZmZzZXQo
Y2FsbC5tX2xhYmVsKSksCi0gICAgICAgICAgICBjYWxsLmlzRmxhZ1NldChDYWxsOjpUYWlsKSA/
IENhbGxNb2RlOjpUYWlsIDogQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAgICAgICAgICAgY2FsbC5p
c0ZsYWdTZXQoQ2FsbDo6VGFpbCkgPyBOZWFyQ2FsbE1vZGU6OlRhaWwgOiBOZWFyQ2FsbE1vZGU6
OlJlZ3VsYXIpOwogICAgIH0KIAogICAgIENvZGVMb2NhdGlvbkxhYmVsIGxvY2F0aW9uT2YoUGF0
Y2hhYmxlSnVtcCBqdW1wKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5oCmluZGV4IGU5MWYwN2ZkNmRjMGUxYjY0OWUzZWQ1NGQ2OTc0ZTdjNTdkOWQzOTYu
LjYyMTI0MjVlMTY5ZThhODEwMjlkMzBiOWI1OWFmOGVmNGYzZDQyZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpZm5kZWYgQ2FsbExpbmtJbmZvX2gKICNkZWZpbmUgQ2FsbExpbmtJbmZvX2gKIAorI2luY2x1
ZGUgIkNhbGxNb2RlLmgiCiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29k
ZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgpAQCAt
NzMsMTggKzc0LDYgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RhdGljIGJv
b2wgaXNUYWlsQ2FsbFR5cGUoQ2FsbFR5cGUgY2FsbFR5cGUpCi0gICAgewotICAgICAgICBzd2l0
Y2ggKGNhbGxUeXBlKSB7Ci0gICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAgICAgIGNhc2UgVGFp
bENhbGxWYXJhcmdzOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKICAg
ICBDYWxsTGlua0luZm8oKQogICAgICAgICA6IG1fcmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkKSkKICAg
ICAgICAgLCBtX2hhc1NlZW5TaG91bGRSZXBhdGNoKGZhbHNlKQpAQCAtMTEzLDYgKzEwMiwzNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzcGVjaWFsaXphdGlvbktpbmRGb3Ioc3RhdGljX2Nh
c3Q8Q2FsbFR5cGU+KG1fY2FsbFR5cGUpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgQ2FsbE1vZGUg
Y2FsbE1vZGVGb3IoQ2FsbFR5cGUgY2FsbFR5cGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKGNh
bGxUeXBlKSB7CisgICAgICAgIGNhc2UgQ2FsbDoKKyAgICAgICAgY2FzZSBDYWxsVmFyYXJnczoK
KyAgICAgICAgICAgIHJldHVybiBDYWxsTW9kZTo6UmVndWxhcjsKKyAgICAgICAgY2FzZSBUYWls
Q2FsbDoKKyAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6CisgICAgICAgICAgICByZXR1cm4g
Q2FsbE1vZGU6OlRhaWw7CisgICAgICAgIGNhc2UgQ29uc3RydWN0OgorICAgICAgICBjYXNlIENv
bnN0cnVjdFZhcmFyZ3M6CisgICAgICAgICAgICByZXR1cm4gQ2FsbE1vZGU6OkNvbnN0cnVjdDsK
KyAgICAgICAgY2FzZSBOb25lOgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBDYWxsTW9kZSBjYWxsTW9kZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gY2FsbE1vZGVGb3Ioc3RhdGljX2Nhc3Q8Q2FsbFR5cGU+KG1f
Y2FsbFR5cGUpKTsKKyAgICB9CisKKyAgICBib29sIGlzVGFpbENhbGwoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWw7CisgICAgfQorCisg
ICAgYm9vbCBpc1ZhcmFyZ3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzVmFyYXJn
c0NhbGxUeXBlKHN0YXRpY19jYXN0PENhbGxUeXBlPihtX2NhbGxUeXBlKSk7CisgICAgfQorCiAg
ICAgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlIHJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSgpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVnaXN0ZXJQcmVzZXJ2YXRp
b25Nb2RlPihtX3JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbE1vZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxNb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzU3YjE4NTA2Nzk2OGE2YTFm
M2QwOTllZDIzOWNiNjE3M2ZjMjZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxNb2RlLmNwcApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDYWxsTW9kZS5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisK
K25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
SlNDOjpDYWxsTW9kZSBjYWxsTW9kZSkKK3sKKyAgICBzd2l0Y2ggKGNhbGxNb2RlKSB7CisgICAg
Y2FzZSBKU0M6OkNhbGxNb2RlOjpUYWlsOgorICAgICAgICBvdXQucHJpbnQoIlRhaWxDYWxsIik7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6Q2FsbE1vZGU6OlJlZ3VsYXI6CisgICAg
ICAgIG91dC5wcmludCgiQ2FsbCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OkNh
bGxNb2RlOjpDb25zdHJ1Y3Q6CisgICAgICAgIG91dC5wcmludCgiQ29uc3RydWN0Iik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbE1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TW9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg0NjQ2OGMxNTZkMzIxYjM2ZTMzMWU5ZTdjYzExZmE5MTYyOWRm
ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bE1vZGUuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbE1vZGVfaAorI2RlZmluZSBDYWxsTW9kZV9oCisK
K25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNzIENhbGxNb2RlIHsgVGFpbCA9IDAsIFJlZ3Vs
YXIsIENvbnN0cnVjdCB9OworCitlbnVtIEZyYW1lQWN0aW9uIHsgS2VlcFRoZUZyYW1lID0gMCwg
VHJhc2hUaGVGcmFtZSB9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7
CisKK2NsYXNzIFByaW50U3RyZWFtOwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwg
SlNDOjpDYWxsTW9kZSk7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gQ2FsbE1v
ZGVfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRl
eCA3MDk1NjBmMmRkM2YyNTg1NjYyOTczZjIzZjIyYzA5NTVkNmYzNDcwLi44NWJjNTUzODk4YmYz
NjMyNTRkNjJiZGY1Y2M5MDk3NGM1YzA1NWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTcwNSwxNCArNzA1LDE0IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoRXhlY1N0YXRlKiBleGVjLCBFeGVjU3Rh
dGUqIGV4ZWNDCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0
aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxl
ZSwgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3N0YXRpYyBT
bG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBK
U1ZhbHVlIGNhbGxlZSwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pCiB7CiAgICAgRXhlY1N0
YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBWTSogdm0gPSAmZXhl
Yy0+dm0oKTsKIAogICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKIAotICAgIGlmIChr
aW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgaWYgKGNhbGxMaW5rSW5mby0+c3BlY2lhbGl6YXRp
b25LaW5kKCkgPT0gQ29kZUZvckNhbGwpIHsKICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAg
ICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGVlLCBjYWxsRGF0YSk7
CiAgICAgCkBAIC03MjIsMTggKzcyMiwyNSBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhh
bmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsCiAgICAg
ICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjQ2FsbGVlKTsKICAg
ICAgICAgICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAgICAg
ICAgICAgIHZtLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7Ci0gICAgICAgICAgICBpZiAodm0tPmV4Y2Vw
dGlvbigpKQotICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQodm0tPmdldENUSVN0
dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMCkpOworICAgICAgICAgICAg
aWYgKHZtLT5leGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1
bHQoCisgICAgICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJv
bUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAg
ICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwor
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KDEpKTsKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCisgICAgICAgICAgICAg
ICAgYml0d2lzZV9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSwKKyAgICAgICAg
ICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsTGlua0luZm8tPmNhbGxNb2RlKCkg
PT0gQ2FsbE1vZGU6OlRhaWwgPyBUcmFzaFRoZUZyYW1lIDogS2VlcFRoZUZyYW1lKSk7CiAgICAg
ICAgIH0KICAgICAKICAgICAgICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSk7CiAg
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUZ1bmN0aW9u
RXJyb3IoZXhlYywgY2FsbGVlKSk7Ci0gICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQodm0tPmdl
dENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMCkpOworICAgICAg
ICByZXR1cm4gZW5jb2RlUmVzdWx0KAorICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dF
eGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSwKKyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkp
OwogICAgIH0KIAotICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIEFT
U0VSVChjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDb25zdHJ1
Y3QpOwogICAgIAogICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBDb25zdHJ1
Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0
RGF0YSk7CkBAIC03NDQsMTUgKzc1MSwyMCBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhh
bmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsCiAgICAg
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWNDYWxsZWUpOwogICAgICAg
ICBleGVjQ2FsbGVlLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAgICAgIHZtLT5o
b3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZl
LmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKLSAgICAgICAgaWYgKHZtLT5leGNlcHRpb24oKSkKLSAg
ICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQodm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRp
b25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMCkpOworICAgICAgICBpZiAodm0tPmV4Y2VwdGlvbigp
KSB7CisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAorICAgICAgICAgICAgICAgIHZt
LT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CisgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gZW5j
b2RlUmVzdWx0KGJpdHdpc2VfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDEpKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChi
aXR3aXNlX2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLCByZWludGVycHJldF9j
YXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKGNvbnN0
cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZU5vbmUpOwogICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7Ci0g
ICAgcmV0dXJuIGVuY29kZVJlc3VsdCh2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21D
YWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVy
cHJldF9jYXN0PHZvaWQqPigwKSk7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKKyAgICAgICAg
dm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5j
b2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oS2VlcFRoZUZyYW1lKSk7CiB9CiAKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkxpbmtDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm8pCkBAIC03NjgsNyArNzgwLDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBDYWxsTGkK
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjYWNoZSB0aGVzZSBraW5kcyBvZiBjYWxscy4g
VGhleSBjYW4gYmUgY29tbW9uIGFuZCBjdXJyZW50bHkgdGhleSBhcmUKICAgICAgICAgLy8gZXhw
ZW5zaXZlLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ0NDU4Ci0gICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBjYWxs
ZWVBc1ZhbHVlLCBraW5kKTsKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxs
ZWUsIGNhbGxlZUFzVmFsdWUsIGNhbGxMaW5rSW5mbyk7CiAgICAgfQogCiAgICAgSlNGdW5jdGlv
biogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CkBA
IC03ODQsMTcgKzc5NiwyMSBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25MaW5rQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENhbGxMaQogCiAgICAgICAgIGlm
ICghaXNDYWxsKGtpbmQpICYmIGZ1bmN0aW9uRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24o
KSkgewogICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVO
b3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKLSAgICAgICAgICAgIHJldHVybiBl
bmNvZGVSZXN1bHQodm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRo
R2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oMCkpOworICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKKyAgICAgICAgICAg
ICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0
b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLAorICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwogICAgICAgICB9CiAKICAgICAgICAgSlNP
YmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uKGV4
ZWNDYWxsZWUsIGNhbGxlZSwgc2NvcGUsIGtpbmQpOwogICAgICAgICBpZiAoZXJyb3IpIHsKICAg
ICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXJyb3IpOwotICAgICAg
ICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCh2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZy
b21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigwKSk7CisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0
KAorICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxT
bG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAgICAgICAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAgICAgIH0K
ICAgICAgICAgY29kZUJsb2NrID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Ioa2lu
ZCk7CiAgICAgICAgIEFyaXR5Q2hlY2tNb2RlIGFyaXR5OwotICAgICAgICBpZiAoZXhlY0NhbGxl
ZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpIHx8IENhbGxMaW5rSW5mbzo6aXNWYXJhcmdzQ2FsbFR5
cGUoY2FsbExpbmtJbmZvLT5jYWxsVHlwZSgpKSkKKyAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpKSB8fCBjYWxsTGlua0luZm8tPmlzVmFyYXJncygpKQogICAgICAg
ICAgICAgYXJpdHkgPSBNdXN0Q2hlY2tBcml0eTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
YXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7CkBAIC04MDUsNyArODIxLDcgQEAgU2xvd1Bh
dGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoRXhlY1N0YXRlKiBl
eGVjQ2FsbGVlLCBDYWxsTGkKICAgICBlbHNlCiAgICAgICAgIGxpbmtGb3IoZXhlY0NhbGxlZSwg
KmNhbGxMaW5rSW5mbywgY29kZUJsb2NrLCBjYWxsZWUsIGNvZGVQdHIpOwogICAgIAotICAgIHJl
dHVybiBlbmNvZGVSZXN1bHQoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJl
dF9jYXN0PHZvaWQqPigxKSk7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChjb2RlUHRyLmV4ZWN1
dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5mby0+Y2Fs
bE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/IFRyYXNoVGhlRnJhbWUgOiBLZWVwVGhlRnJhbWUp
KTsKIH0KIAogaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9u
KApAQCAtODE5LDcgKzgzNSw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZv
cldpdGhGdW5jdGlvbigKICAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBleGVjQ2FsbGVlLT5j
YWxsZWVBc1ZhbHVlKCk7CiAgICAgY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9u
KGNhbGxlZUFzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FsbGVlQXNGdW5jdGlvbkNlbGwp
KQotICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgY2FsbGVlQXNWYWx1
ZSwga2luZCk7CisgICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBjYWxs
ZWVBc1ZhbHVlLCBjYWxsTGlua0luZm8pOwogICAgIAogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9u
ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CiAgICAgSlNTY29w
ZSogc2NvcGUgPSBmdW5jdGlvbi0+c2NvcGVVbmNoZWNrZWQoKTsKQEAgLTgyOSwxOCArODQ1LDIy
IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhGdW5jdGlvbigKIAog
ICAgICAgICBpZiAoIWlzQ2FsbChraW5kKSAmJiBmdW5jdGlvbkV4ZWN1dGFibGUtPmlzQnVpbHRp
bkZ1bmN0aW9uKCkpIHsKICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgZnVuY3Rpb24pKTsKLSAgICAgICAg
ICAgIHJldHVybiBlbmNvZGVSZXN1bHQodm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9t
Q2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oMCkpOworICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgK
KyAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xv
d1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLAorICAgICAgICAgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwogICAgICAgICB9CiAK
ICAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9y
RXhlY3V0aW9uKGV4ZWNDYWxsZWUsIGZ1bmN0aW9uLCBzY29wZSwga2luZCk7CiAgICAgICAgIGlm
IChlcnJvcikgewogICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBl
cnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHZtLT5nZXRDVElTdHViKHRo
cm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDApKTsKKyAgICAgICAgICAgIHJldHVy
biBlbmNvZGVSZXN1bHQoCisgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dFeGNl
cHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwKKyAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUp
KTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUt
PmVudHJ5cG9pbnRGb3IoCiAgICAgICAgICp2bSwga2luZCwgTXVzdENoZWNrQXJpdHksIGNhbGxM
aW5rSW5mby0+cmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlKCkpLmV4ZWN1dGFibGVBZGRyZXNzKCks
Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDEpKTsKKyAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oY2FsbExpbmtJbmZvLT5jYWxsTW9kZSgpID09IENhbGxNb2RlOjpUYWls
ID8gVHJhc2hUaGVGcmFtZSA6IEtlZXBUaGVGcmFtZSkpOwogfQogCiBTbG93UGF0aFJldHVyblR5
cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsKEV4ZWNTdGF0ZSog
ZXhlY0NhbGxlZSwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAppbmRleCBjZjdkM2ZkMzE0ZTU5ZWQzYTQzYjRhNGE3MDc2NmNiNjk2
YzNlZmQ4Li5iMzZkOTFkNWRjZTIxMzJkY2E4MmM0YmZhMTFkNWExMTUzN2M5MzJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTE3NTcsNyArMTc1Nyw3IEBAIHZvaWQg
bGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gSWYgd2Ug
Y2Fubm90IGhhbmRsZSBhIGNhbGxlZSwgYXNzdW1lIHRoYXQgaXQncyBiZXR0ZXIgZm9yIHRoaXMg
d2hvbGUgdGhpbmcgdG8gYmUgYQogICAgICAgICAgICAgLy8gdmlydHVhbCBjYWxsLgotICAgICAg
ICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSB8fCBDYWxsTGlua0luZm86Omlz
VmFyYXJnc0NhbGxUeXBlKGNhbGxMaW5rSW5mby5jYWxsVHlwZSgpKSkgeworICAgICAgICAgICAg
aWYgKGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSB8fCBjYWxsTGlua0luZm8uaXNWYXJhcmdz
KCkpIHsKICAgICAgICAgICAgICAgICBsaW5rVmlydHVhbEZvcihleGVjLCBjYWxsTGlua0luZm8p
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTE4ODAsOCArMTg4
MCw4IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMigxKSwKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoZmFzdENvdW50c0Jhc2VHUFIsIGNhc2VJbmRleCAqIHNpemVvZih1aW50MzJfdCkpKTsK
ICAgICAgICAgfQotICAgICAgICBpZiAoQ2FsbExpbmtJbmZvOjppc1RhaWxDYWxsVHlwZShjYWxs
TGlua0luZm8uY2FsbFR5cGUoKSkpIHsKLSAgICAgICAgICAgIHN0dWJKaXQucHJlcGFyZUZvclRh
aWxDYWxsU2xvdygpOworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSkgewor
ICAgICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsKHN0dWJKaXQpOwogICAgICAgICAgICAgY2Fs
bHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwoKTsKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBjYWxsc1tjYXNlSW5kZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJDYWxs
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5k
ZXggNTJiNTU5YjBhYzA4MThlZTcyOWNkZTRjOWEzMWY2OTJhNTNiMTUxNS4uNjJlYTRjZWZlMjZk
ZmY0MzVhOTc5YjNmOGZhMDZlZDEyYWEzMGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtOTksNiArOTksNyBAQCBzdGF0aWMgdm9pZCBz
bG93UGF0aEZvcigKICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUik7CiAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAKKyAgICBSRUxF
QVNFX0FTU0VSVChyZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpID09IHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KDApKTsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9Ob3RUcmFz
aCA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIyKTsKIAogICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BS
SW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKQEAgLTE5MSw3ICsxOTIsNyBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rRm9yKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBj
YWxsTGlua0luZm8pCiAgICAgCiAgICAgLy8gTWFrZSBhIHRhaWwgY2FsbC4gVGhpcyB3aWxsIHJl
dHVybiBiYWNrIHRvIEpJVCBjb2RlLgogICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQ
UkluZm86OnJlZ1Q0KTsKLSAgICBpZiAoQ2FsbExpbmtJbmZvOjppc1RhaWxDYWxsVHlwZShjYWxs
TGlua0luZm8uY2FsbFR5cGUoKSkpIHsKKyAgICBpZiAoY2FsbExpbmtJbmZvLmlzVGFpbENhbGwo
KSkgewogICAgICAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86
OnJlZ1QwKTsKICAgICAgICAgaml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3coR1BSSW5mbzo6cmVn
VDQpOwogICAgIH0KQEAgLTIwNSw5ICsyMDYsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmly
dHVhbFRodW5rRm9yKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERSgKICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICgiVmlydHVh
bCAlcyVzIHNsb3cgcGF0aCB0aHVuayBhdCBDb2RlUHRyKCVwKSIsCi0gICAgICAgIGNhbGxMaW5r
SW5mby5zcGVjaWFsaXphdGlvbktpbmQoKSA9PSBDb2RlRm9yQ2FsbCA/ICJjYWxsIiA6ICJjb25z
dHJ1Y3QiLAotICAgICAgICBjYWxsTGlua0luZm8ucmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlKCkg
PT0gTXVzdFByZXNlcnZlUmVnaXN0ZXJzID8gIiB0aGF0IHByZXNlcnZlcyByZWdpc3RlcnMiIDog
IiIsCisgICAgICAgICgiVmlydHVhbCAlcyBzbG93IHBhdGggdGh1bmsgYXQgQ29kZVB0ciglcCki
LAorICAgICAgICBjYWxsTGlua0luZm8uY2FsbE1vZGUoKSA9PSBDYWxsTW9kZTo6UmVndWxhciA/
ICJjYWxsIiA6IGNhbGxMaW5rSW5mby5jYWxsTW9kZSgpID09IENhbGxNb2RlOjpUYWlsID8gInRh
aWwgY2FsbCIgOiAiY29uc3RydWN0IiwKICAgICAgICAgY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbigpLmRhdGFMb2NhdGlvbigpKSk7CiB9CiAK
</data>
<flag name="review"
          id="283073"
          type_id="1"
          status="-"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257882</attachid>
            <date>2015-07-30 17:08:31 -0700</date>
            <delta_ts>2015-07-30 17:34:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147475-20150730170830.patch</filename>
            <type>text/plain</type>
            <size>29802</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ODFiOTUxZmE2MTdjZjQyNGY1NTAwODA2OGIyMTczZGU2Zjk0ZTJlLi4wM2Q1ZmM2ZTNmOTFjZjBh
MzQzYzZiODhjZGY5YzIyMWM5NGY3M2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0NSBAQAogMjAxNS0wNy0zMCAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBh
cHBsZS5jb20+CiAKKyAgICAgICAganNjLXRhaWxjYWxsOiBBZGQgZW51bXMgZm9yIHR5cGUtc2Fm
ZXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc0
NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IGFkZHM6CisKKyAgICAgICAgIC0gQSBDYWxsTW9kZSBlbnVtIHRvIGRpc3Rpbmd1aXNoIHRhaWwg
Y2FsbHMgZnJvbSByZWd1bGFyIGNhbGxzIGZyb20gY29uc3RydWN0CisKKyAgICAgICAgIC0gQSBG
cmFtZUFjdGlvbiBlbnVtIHRvIGluZGljYXRlIHdoZXRoZXIgdG8ga2VlcCBvciB0cmFzaCB0aGUg
Y2FsbAorICAgICAgICAgICBmcmFtZS4gSXQgYWxzbyBjaGFuZ2VzIEpJVE9wZXJhdGlvbnMuaCB0
byBjb3JyZWN0bHkgdXNlIHRoaXMgdG8gdGVsbAorICAgICAgICAgICBzbG93UGF0aEZvciB0byAq
bm90KiB0cmFzaCB0aGUgZnJhbWUgb24gYSByZWd1bGFyIGNhbGwgKGJlZm9yZQorICAgICAgICAg
ICByMTg3NTA1LCB0aGlzIHdhcyBzdGF0aWNhbGx5IGtub3duIGluIHNsb3dQYXRoRm9yKS4KKwor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvQ29kZUxvY2F0aW9uLmg6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbk5lYXJDYWxs
OjpDb2RlTG9jYXRpb25OZWFyQ2FsbCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbk5lYXJD
YWxsOjpjYWxsTW9kZSk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6bmVhckNh
bGxBdE9mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAg
KEpTQzo6TGlua0J1ZmZlcjo6bG9jYXRpb25PZk5lYXJDYWxsKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsTGlua0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjYWxsTW9kZUZv
cik6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y2FsbE1vZGUpOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OmlzVGFpbENhbGwpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86
OmlzVmFyYXJncyk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbE1vZGUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbE1vZGUu
aDogQWRkZWQuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAg
ICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnNsb3dQYXRoRm9y
KToKKyAgICAgICAgKEpTQzo6dmlydHVhbFRodW5rRm9yKToKKworMjAxNS0wNy0zMCAgQmFzaWxl
IENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBhcHBsZS5jb20+CisKICAgICAgICAganNjLXRhaWxj
YWxsOiBEb24ndCB3YXN0ZSBzdGFjayBzcGFjZSB3aGVuIGFyaXR5IGZpeHVwIHdhcyBwZXJmb3Jt
ZWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzQ0
NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjN2RkNzAyYzM0ZmIzOGUxZDQ0
NmYyYzgxZTMzOWUyMzhmN2VkNjcuLjM0ZWI0M2I1Y2U2YmFiNTRmMTk3MTExM2EwMTk4NjkxMDI4
YjY0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NjIsNiArOTYyLDggQEAK
IAkJNURCQjE1MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRlc3RhcGkuanMgaW4gQ29weSBTdXBwb3J0
IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ4NTc3NDBBNDY5
NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLzsgfTsKIAkJNURCQjE1MjUxMzFEMEJENzAwNTZB
RDM2IC8qIG1pbmlkb20uanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNDEyMTEwRDBBNDg3ODg3MDA0ODAyNTUgLyogbWluaWRvbS5q
cyAqLzsgfTsKIAkJNURFNkU1QjMwRTE3MjhFQzAwMTgwNDA3IC8qIGNyZWF0ZV9oYXNoX3RhYmxl
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NTQw
MjU1NTk3RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKCk7IH07IH07CisJCTYyNzY3MzIzMUI2ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9k
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2Mjc2
NzMyMTFCNjgwQzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuY3BwICovOyB9OworCQk2Mjc2NzMyNDFC
NjgwQzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDYyNzY3MzIyMUI2ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9kZS5o
ICovOyB9OwogCQk2MkQyRDM4RjFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MkQyRDM4
RDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5jcHAgKi87IH07CiAJCTYyRDJE
MzkwMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MkQyRDM4RTFBREYxMDNGMDAwMjA2QzEg
LyogRnVuY3Rpb25SYXJlRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTYyRjJBQTM3MUIwQkVERTMwMDYxMEM3QSAvKiBERkdMYXp5Tm9kZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MkE5QTI5
RTFCMEJFRDQ4MDBCRDU0Q0EgLyogREZHTGF6eU5vZGUuY3BwICovOyB9OwpAQCAtMjY3Niw2ICsy
Njc4LDggQEAKIAkJNURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBKU0MueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVE
RERGNDQ2MTRGRUU3MjIwMEI0RkI0RCAvKiBMTEludERlc2lyZWRPZmZzZXRzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RGVzaXJlZE9mZnNldHMuaDsgcGF0aCA9IExM
SW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTVERTNEMEY0MEREOERERkIwMDQ2ODcxNCAvKiBXZWJLaXRBdmFpbGFi
aWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0QXZhaWxhYmls
aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYyNzY3MzIxMUI2ODBDMUUwMEZE
OUYyRSAvKiBDYWxsTW9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDYWxsTW9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYyNzY3MzIyMUI2
ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYWxsTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MkE5QTI5RTFC
MEJFRDQ4MDBCRDU0Q0EgLyogREZHTGF6eU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHTGF6eU5vZGUuY3BwOyBwYXRoID0gZGZnL0RGR0xhenlOb2RlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjJBOUEyOUYxQjBCRUQ0ODAwQkQ1NENB
IC8qIERGR0xhenlOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0xh
enlOb2RlLmg7IHBhdGggPSBkZmcvREZHTGF6eU5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25SYXJlRGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MjU3LDYgKzUyNjEsOCBAQAogCQkJ
CTBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLywKIAkJCQkwRjkz
MzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovLAogCQkJCTBGOTMz
Mjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oICovLAorCQkJCTYyNzY3MzIx
MUI2ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9kZS5jcHAgKi8sCisJCQkJNjI3NjczMjIxQjY4MEMx
RTAwRkQ5RjJFIC8qIENhbGxNb2RlLmggKi8sCiAJCQkJMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRG
IC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8sCiAJCQkJMEYzQjdFMjQx
OUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCAqLywKIAkJCQkwRjNCN0UyNTE5QTEx
QjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCAqLywKQEAgLTUyNzgsNiArNTI4NCw4IEBACiAJ
CQkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLywKIAkJCQkwRkM3
MTJEQzE3Q0Q4Nzc4MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCAq
LywKIAkJCQkwRkM3MTJERDE3Q0Q4Nzc4MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmggKi8sCisJCQkJRkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291
cmNlRHVtcC5jcHAgKi8sCisJCQkJRkU1MDY4NjQxQUUyNDYzOTAwMDlEQUI3IC8qIERlZmVycmVk
U291cmNlRHVtcC5oICovLAogCQkJCTBGQkMwQUU0MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0
UHJvZmlsZS5jcHAgKi8sCiAJCQkJMEZCQzBBRTUxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQ
cm9maWxlLmggKi8sCiAJCQkJOTY5QTA3OTIwRUQxRDNBRTAwRjFGNjgxIC8qIEV2YWxDb2RlQ2Fj
aGUuaCAqLywKQEAgLTUzMjUsOCArNTMzMyw2IEBACiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5
Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCAqLywKIAkJCQkxNDI5RDg4MzBFRDIxQzNEMDBCODk2
MTkgLyogU2FtcGxpbmdUb29sLmNwcCAqLywKIAkJCQkxNDI5RDg4NDBFRDIxQzNEMDBCODk2MTkg
LyogU2FtcGxpbmdUb29sLmggKi8sCi0JCQkJRkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERl
ZmVycmVkU291cmNlRHVtcC5jcHAgKi8sCi0JCQkJRkU1MDY4NjQxQUUyNDYzOTAwMDlEQUI3IC8q
IERlZmVycmVkU291cmNlRHVtcC5oICovLAogCQkJCTBGNTU0MUFGMTYxM0MxRkIwMENFM0UyNSAv
KiBTcGVjaWFsUG9pbnRlci5jcHAgKi8sCiAJCQkJMEY1NTQxQjAxNjEzQzFGQjAwQ0UzRTI1IC8q
IFNwZWNpYWxQb2ludGVyLmggKi8sCiAJCQkJMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFNw
ZWN1bGF0ZWRUeXBlLmNwcCAqLywKQEAgLTU4NjUsNiArNTg3MSw3IEBACiAJCQkJODZFQzlERDAx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
RDg5Q0ZFMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkU1NzE0MURBRjEwMDAxNzlDOTQgLyogREZHT1NS
RW50cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTYyNzY3MzI0MUI2ODBDMUUwMEZEOUYyRSAvKiBD
YWxsTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMjYxN0Q1MUY1NzAwQ0EyQzQwIC8q
IERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MkYy
QUEzODFCMEJFREUzMDA2MTBDN0EgLyogREZHTGF6eU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLywK
QEAgLTc1NjcsNiArNzU3NCw3IEBACiAJCQkJMEYyRDRERUYxOTgzMkREMzAwN0Q0QjE5IC8qIFR5
cGVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzNUYyNEQxMkU2NzY1QjAwMkI1NTUzIC8q
IFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNERTNCNDMw
RTZDODMyRDAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2Mjc2
NzMyMzFCNjgwQzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0U0RUU3MEYwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUMyRjBGMkQxMTZCQUVFRTkwMDE4N0MxOSAvKiBTdHJ1Y3R1cmVSYXJlRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3MDEzQ0E4QjFCNDkxQTk0MDBDQUU2MTMgLyogSlNKb2Iu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCmluZGV4IDE1OGY2MDAxNmRjNzU5YzAy
ZDU3YTk4NzZlMDRkN2NiNmIyODZjYmQuLjY5MDE0MzRlYjJjYTM0MWMwZmQ1MzhjOTBlN2RiNzI1
ZjNjZmYyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCkBAIC0xMTU0LDEwICsxMTU0LDEwIEBAIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgdm9pZCByZXBhdGNoTmVhckNhbGwoQ29kZUxvY2F0aW9uTmVhckNh
bGwgbmVhckNhbGwsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKICAgICAg
ICAgc3dpdGNoIChuZWFyQ2FsbC5jYWxsTW9kZSgpKSB7Ci0gICAgICAgIGNhc2UgQ2FsbE1vZGU6
OlRhaWw6CisgICAgICAgIGNhc2UgTmVhckNhbGxNb2RlOjpUYWlsOgogICAgICAgICAgICAgQXNz
ZW1ibGVyVHlwZTo6cmVsaW5rSnVtcChuZWFyQ2FsbC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRp
b24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNh
c2UgQ2FsbE1vZGU6OlJlZ3VsYXI6CisgICAgICAgIGNhc2UgTmVhckNhbGxNb2RlOjpSZWd1bGFy
OgogICAgICAgICAgICAgQXNzZW1ibGVyVHlwZTo6cmVsaW5rQ2FsbChuZWFyQ2FsbC5kYXRhTG9j
YXRpb24oKSwgZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQ29kZUxvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Nv
ZGVMb2NhdGlvbi5oCmluZGV4IDBkYzI0ZGU0OWQ0MmQ4YTkxM2QwZTk0MzE2YTA1MjYzNmM1ZjE0
NDYuLmUzODE3YjAxOTM1YTRjNzRhYTk0M2Q4NjZiMzcxNGNmMWYyN2U3MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaApAQCAtMzIsNyArMzIs
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBDYWxsTW9kZSB7IFJlZ3VsYXIsIFRhaWwg
fTsKK2VudW0gTmVhckNhbGxNb2RlIHsgUmVndWxhciwgVGFpbCB9OwogCiBjbGFzcyBDb2RlTG9j
YXRpb25JbnN0cnVjdGlvbjsKIGNsYXNzIENvZGVMb2NhdGlvbkxhYmVsOwpAQCAtNjEsNyArNjEs
NyBAQCBwdWJsaWM6CiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWxBdE9mZnNldChpbnQgb2Zm
c2V0KTsKICAgICBDb2RlTG9jYXRpb25KdW1wIGp1bXBBdE9mZnNldChpbnQgb2Zmc2V0KTsKICAg
ICBDb2RlTG9jYXRpb25DYWxsIGNhbGxBdE9mZnNldChpbnQgb2Zmc2V0KTsKLSAgICBDb2RlTG9j
YXRpb25OZWFyQ2FsbCBuZWFyQ2FsbEF0T2Zmc2V0KGludCBvZmZzZXQsIENhbGxNb2RlKTsKKyAg
ICBDb2RlTG9jYXRpb25OZWFyQ2FsbCBuZWFyQ2FsbEF0T2Zmc2V0KGludCBvZmZzZXQsIE5lYXJD
YWxsTW9kZSk7CiAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGRhdGFMYWJlbFB0ckF0T2Zm
c2V0KGludCBvZmZzZXQpOwogICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIGRhdGFMYWJlbDMy
QXRPZmZzZXQoaW50IG9mZnNldCk7CiAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdCBk
YXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoaW50IG9mZnNldCk7CkBAIC0xMTcsMTMgKzExNywxMyBA
QCBwdWJsaWM6CiBjbGFzcyBDb2RlTG9jYXRpb25OZWFyQ2FsbCA6IHB1YmxpYyBDb2RlTG9jYXRp
b25Db21tb24gewogcHVibGljOgogICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsKCkge30KLSAgICBl
eHBsaWNpdCBDb2RlTG9jYXRpb25OZWFyQ2FsbChNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbG9jYXRp
b24sIENhbGxNb2RlIGNhbGxNb2RlKQorICAgIGV4cGxpY2l0IENvZGVMb2NhdGlvbk5lYXJDYWxs
KE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsb2NhdGlvbiwgTmVhckNhbGxNb2RlIGNhbGxNb2RlKQog
ICAgICAgICA6IENvZGVMb2NhdGlvbkNvbW1vbihsb2NhdGlvbiksIG1fY2FsbE1vZGUoY2FsbE1v
ZGUpIHt9Ci0gICAgZXhwbGljaXQgQ29kZUxvY2F0aW9uTmVhckNhbGwodm9pZCogbG9jYXRpb24s
IENhbGxNb2RlIGNhbGxNb2RlKQorICAgIGV4cGxpY2l0IENvZGVMb2NhdGlvbk5lYXJDYWxsKHZv
aWQqIGxvY2F0aW9uLCBOZWFyQ2FsbE1vZGUgY2FsbE1vZGUpCiAgICAgICAgIDogQ29kZUxvY2F0
aW9uQ29tbW9uKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihsb2NhdGlvbikpLCBtX2NhbGxNb2RlKGNh
bGxNb2RlKSB7fQotICAgIENhbGxNb2RlIGNhbGxNb2RlKCkgeyByZXR1cm4gbV9jYWxsTW9kZTsg
fQorICAgIE5lYXJDYWxsTW9kZSBjYWxsTW9kZSgpIHsgcmV0dXJuIG1fY2FsbE1vZGU7IH0KIHBy
aXZhdGU6Ci0gICAgQ2FsbE1vZGUgbV9jYWxsTW9kZSA9IENhbGxNb2RlOjpSZWd1bGFyOworICAg
IE5lYXJDYWxsTW9kZSBtX2NhbGxNb2RlID0gTmVhckNhbGxNb2RlOjpSZWd1bGFyOwogfTsKIAog
Y2xhc3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgOiBwdWJsaWMgQ29kZUxvY2F0aW9uQ29tbW9u
IHsKQEAgLTE4Niw3ICsxODYsNyBAQCBpbmxpbmUgQ29kZUxvY2F0aW9uQ2FsbCBDb2RlTG9jYXRp
b25Db21tb246OmNhbGxBdE9mZnNldChpbnQgb2Zmc2V0KQogICAgIHJldHVybiBDb2RlTG9jYXRp
b25DYWxsKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNldCk7
CiB9CiAKLWlubGluZSBDb2RlTG9jYXRpb25OZWFyQ2FsbCBDb2RlTG9jYXRpb25Db21tb246Om5l
YXJDYWxsQXRPZmZzZXQoaW50IG9mZnNldCwgQ2FsbE1vZGUgY2FsbE1vZGUpCitpbmxpbmUgQ29k
ZUxvY2F0aW9uTmVhckNhbGwgQ29kZUxvY2F0aW9uQ29tbW9uOjpuZWFyQ2FsbEF0T2Zmc2V0KGlu
dCBvZmZzZXQsIE5lYXJDYWxsTW9kZSBjYWxsTW9kZSkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09E
RV9PRkZTRVQob2Zmc2V0KTsKICAgICByZXR1cm4gQ29kZUxvY2F0aW9uTmVhckNhbGwocmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0LCBjYWxsTW9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCmluZGV4IDljNDFi
OTVkNTE1NWM0ZDZjOTI0ODcxZGI5NGZhMTdmZjE4ZWNjMzguLmIzNGE2ZjE5ZmY0NDExMjhiODI1
MTMyODI1MzQyMTZlMjYwMjVmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTGlua0J1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTGlua0J1ZmZlci5oCkBAIC0xODEsNyArMTgxLDcgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQoY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TGlua2FibGUpKTsKICAgICAgICAgQVNTRVJUKGNhbGwu
aXNGbGFnU2V0KENhbGw6Ok5lYXIpKTsKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbk5lYXJD
YWxsKE1hY3JvQXNzZW1ibGVyOjpnZXRMaW5rZXJBZGRyZXNzKGNvZGUoKSwgYXBwbHlPZmZzZXQo
Y2FsbC5tX2xhYmVsKSksCi0gICAgICAgICAgICBjYWxsLmlzRmxhZ1NldChDYWxsOjpUYWlsKSA/
IENhbGxNb2RlOjpUYWlsIDogQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAgICAgICAgICAgY2FsbC5p
c0ZsYWdTZXQoQ2FsbDo6VGFpbCkgPyBOZWFyQ2FsbE1vZGU6OlRhaWwgOiBOZWFyQ2FsbE1vZGU6
OlJlZ3VsYXIpOwogICAgIH0KIAogICAgIENvZGVMb2NhdGlvbkxhYmVsIGxvY2F0aW9uT2YoUGF0
Y2hhYmxlSnVtcCBqdW1wKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5oCmluZGV4IGU5MWYwN2ZkNmRjMGUxYjY0OWUzZWQ1NGQ2OTc0ZTdjNTdkOWQzOTYu
LjYyMTI0MjVlMTY5ZThhODEwMjlkMzBiOWI1OWFmOGVmNGYzZDQyZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpZm5kZWYgQ2FsbExpbmtJbmZvX2gKICNkZWZpbmUgQ2FsbExpbmtJbmZvX2gKIAorI2luY2x1
ZGUgIkNhbGxNb2RlLmgiCiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQ29k
ZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgpAQCAt
NzMsMTggKzc0LDYgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RhdGljIGJv
b2wgaXNUYWlsQ2FsbFR5cGUoQ2FsbFR5cGUgY2FsbFR5cGUpCi0gICAgewotICAgICAgICBzd2l0
Y2ggKGNhbGxUeXBlKSB7Ci0gICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAgICAgIGNhc2UgVGFp
bENhbGxWYXJhcmdzOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKICAg
ICBDYWxsTGlua0luZm8oKQogICAgICAgICA6IG1fcmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkKSkKICAg
ICAgICAgLCBtX2hhc1NlZW5TaG91bGRSZXBhdGNoKGZhbHNlKQpAQCAtMTEzLDYgKzEwMiwzNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzcGVjaWFsaXphdGlvbktpbmRGb3Ioc3RhdGljX2Nh
c3Q8Q2FsbFR5cGU+KG1fY2FsbFR5cGUpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgQ2FsbE1vZGUg
Y2FsbE1vZGVGb3IoQ2FsbFR5cGUgY2FsbFR5cGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKGNh
bGxUeXBlKSB7CisgICAgICAgIGNhc2UgQ2FsbDoKKyAgICAgICAgY2FzZSBDYWxsVmFyYXJnczoK
KyAgICAgICAgICAgIHJldHVybiBDYWxsTW9kZTo6UmVndWxhcjsKKyAgICAgICAgY2FzZSBUYWls
Q2FsbDoKKyAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6CisgICAgICAgICAgICByZXR1cm4g
Q2FsbE1vZGU6OlRhaWw7CisgICAgICAgIGNhc2UgQ29uc3RydWN0OgorICAgICAgICBjYXNlIENv
bnN0cnVjdFZhcmFyZ3M6CisgICAgICAgICAgICByZXR1cm4gQ2FsbE1vZGU6OkNvbnN0cnVjdDsK
KyAgICAgICAgY2FzZSBOb25lOgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBDYWxsTW9kZSBjYWxsTW9kZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gY2FsbE1vZGVGb3Ioc3RhdGljX2Nhc3Q8Q2FsbFR5cGU+KG1f
Y2FsbFR5cGUpKTsKKyAgICB9CisKKyAgICBib29sIGlzVGFpbENhbGwoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWw7CisgICAgfQorCisg
ICAgYm9vbCBpc1ZhcmFyZ3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzVmFyYXJn
c0NhbGxUeXBlKHN0YXRpY19jYXN0PENhbGxUeXBlPihtX2NhbGxUeXBlKSk7CisgICAgfQorCiAg
ICAgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlIHJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSgpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVnaXN0ZXJQcmVzZXJ2YXRp
b25Nb2RlPihtX3JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbE1vZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxNb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzU3YjE4NTA2Nzk2OGE2YTFm
M2QwOTllZDIzOWNiNjE3M2ZjMjZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxNb2RlLmNwcApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDYWxsTW9kZS5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisK
K25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
SlNDOjpDYWxsTW9kZSBjYWxsTW9kZSkKK3sKKyAgICBzd2l0Y2ggKGNhbGxNb2RlKSB7CisgICAg
Y2FzZSBKU0M6OkNhbGxNb2RlOjpUYWlsOgorICAgICAgICBvdXQucHJpbnQoIlRhaWxDYWxsIik7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6Q2FsbE1vZGU6OlJlZ3VsYXI6CisgICAg
ICAgIG91dC5wcmludCgiQ2FsbCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OkNh
bGxNb2RlOjpDb25zdHJ1Y3Q6CisgICAgICAgIG91dC5wcmludCgiQ29uc3RydWN0Iik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbE1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TW9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg0NjQ2OGMxNTZkMzIxYjM2ZTMzMWU5ZTdjYzExZmE5MTYyOWRm
ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bE1vZGUuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbE1vZGVfaAorI2RlZmluZSBDYWxsTW9kZV9oCisK
K25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNzIENhbGxNb2RlIHsgVGFpbCA9IDAsIFJlZ3Vs
YXIsIENvbnN0cnVjdCB9OworCitlbnVtIEZyYW1lQWN0aW9uIHsgS2VlcFRoZUZyYW1lID0gMCwg
VHJhc2hUaGVGcmFtZSB9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7
CisKK2NsYXNzIFByaW50U3RyZWFtOwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwg
SlNDOjpDYWxsTW9kZSk7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gQ2FsbE1v
ZGVfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRl
eCA3MDk1NjBmMmRkM2YyNTg1NjYyOTczZjIzZjIyYzA5NTVkNmYzNDcwLi44NWJjNTUzODk4YmYz
NjMyNTRkNjJiZGY1Y2M5MDk3NGM1YzA1NWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTcwNSwxNCArNzA1LDE0IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEV2YWwoRXhlY1N0YXRlKiBleGVjLCBFeGVjU3Rh
dGUqIGV4ZWNDCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0
aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxl
ZSwgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3N0YXRpYyBT
bG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBK
U1ZhbHVlIGNhbGxlZSwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pCiB7CiAgICAgRXhlY1N0
YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBWTSogdm0gPSAmZXhl
Yy0+dm0oKTsKIAogICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKIAotICAgIGlmIChr
aW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgaWYgKGNhbGxMaW5rSW5mby0+c3BlY2lhbGl6YXRp
b25LaW5kKCkgPT0gQ29kZUZvckNhbGwpIHsKICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAg
ICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGVlLCBjYWxsRGF0YSk7
CiAgICAgCkBAIC03MjIsMTggKzcyMiwyNSBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhh
bmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsCiAgICAg
ICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjQ2FsbGVlKTsKICAg
ICAgICAgICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAgICAg
ICAgICAgIHZtLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7Ci0gICAgICAgICAgICBpZiAodm0tPmV4Y2Vw
dGlvbigpKQotICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQodm0tPmdldENUSVN0
dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMCkpOworICAgICAgICAgICAg
aWYgKHZtLT5leGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1
bHQoCisgICAgICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJv
bUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAg
ICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwor
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KDEpKTsKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCisgICAgICAgICAgICAg
ICAgYml0d2lzZV9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSwKKyAgICAgICAg
ICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsTGlua0luZm8tPmNhbGxNb2RlKCkg
PT0gQ2FsbE1vZGU6OlRhaWwgPyBUcmFzaFRoZUZyYW1lIDogS2VlcFRoZUZyYW1lKSk7CiAgICAg
ICAgIH0KICAgICAKICAgICAgICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSk7CiAg
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUZ1bmN0aW9u
RXJyb3IoZXhlYywgY2FsbGVlKSk7Ci0gICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQodm0tPmdl
dENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMCkpOworICAgICAg
ICByZXR1cm4gZW5jb2RlUmVzdWx0KAorICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dF
eGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSwKKyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkp
OwogICAgIH0KIAotICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIEFT
U0VSVChjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDb25zdHJ1
Y3QpOwogICAgIAogICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBDb25zdHJ1
Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0
RGF0YSk7CkBAIC03NDQsMTUgKzc1MSwyMCBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhh
bmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsCiAgICAg
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWNDYWxsZWUpOwogICAgICAg
ICBleGVjQ2FsbGVlLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAgICAgIHZtLT5o
b3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZl
LmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKLSAgICAgICAgaWYgKHZtLT5leGNlcHRpb24oKSkKLSAg
ICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQodm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRp
b25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMCkpOworICAgICAgICBpZiAodm0tPmV4Y2VwdGlvbigp
KSB7CisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAorICAgICAgICAgICAgICAgIHZt
LT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CisgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gZW5j
b2RlUmVzdWx0KGJpdHdpc2VfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDEpKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChi
aXR3aXNlX2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLCByZWludGVycHJldF9j
YXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKGNvbnN0
cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZU5vbmUpOwogICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7Ci0g
ICAgcmV0dXJuIGVuY29kZVJlc3VsdCh2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21D
YWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVy
cHJldF9jYXN0PHZvaWQqPigwKSk7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKKyAgICAgICAg
dm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5j
b2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oS2VlcFRoZUZyYW1lKSk7CiB9CiAKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkxpbmtDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm8pCkBAIC03NjgsNyArNzgwLDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBDYWxsTGkK
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjYWNoZSB0aGVzZSBraW5kcyBvZiBjYWxscy4g
VGhleSBjYW4gYmUgY29tbW9uIGFuZCBjdXJyZW50bHkgdGhleSBhcmUKICAgICAgICAgLy8gZXhw
ZW5zaXZlLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ0NDU4Ci0gICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBjYWxs
ZWVBc1ZhbHVlLCBraW5kKTsKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxs
ZWUsIGNhbGxlZUFzVmFsdWUsIGNhbGxMaW5rSW5mbyk7CiAgICAgfQogCiAgICAgSlNGdW5jdGlv
biogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CkBA
IC03ODQsMTcgKzc5NiwyMSBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25MaW5rQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENhbGxMaQogCiAgICAgICAgIGlm
ICghaXNDYWxsKGtpbmQpICYmIGZ1bmN0aW9uRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24o
KSkgewogICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVO
b3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKLSAgICAgICAgICAgIHJldHVybiBl
bmNvZGVSZXN1bHQodm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRo
R2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oMCkpOworICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKKyAgICAgICAgICAg
ICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0
b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLAorICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwogICAgICAgICB9CiAKICAgICAgICAgSlNP
YmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uKGV4
ZWNDYWxsZWUsIGNhbGxlZSwgc2NvcGUsIGtpbmQpOwogICAgICAgICBpZiAoZXJyb3IpIHsKICAg
ICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXJyb3IpOwotICAgICAg
ICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCh2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZy
b21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigwKSk7CisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0
KAorICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxT
bG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAgICAgICAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAgICAgIH0K
ICAgICAgICAgY29kZUJsb2NrID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Ioa2lu
ZCk7CiAgICAgICAgIEFyaXR5Q2hlY2tNb2RlIGFyaXR5OwotICAgICAgICBpZiAoZXhlY0NhbGxl
ZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpIHx8IENhbGxMaW5rSW5mbzo6aXNWYXJhcmdzQ2FsbFR5
cGUoY2FsbExpbmtJbmZvLT5jYWxsVHlwZSgpKSkKKyAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpKSB8fCBjYWxsTGlua0luZm8tPmlzVmFyYXJncygpKQogICAgICAg
ICAgICAgYXJpdHkgPSBNdXN0Q2hlY2tBcml0eTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
YXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7CkBAIC04MDUsNyArODIxLDcgQEAgU2xvd1Bh
dGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoRXhlY1N0YXRlKiBl
eGVjQ2FsbGVlLCBDYWxsTGkKICAgICBlbHNlCiAgICAgICAgIGxpbmtGb3IoZXhlY0NhbGxlZSwg
KmNhbGxMaW5rSW5mbywgY29kZUJsb2NrLCBjYWxsZWUsIGNvZGVQdHIpOwogICAgIAotICAgIHJl
dHVybiBlbmNvZGVSZXN1bHQoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJl
dF9jYXN0PHZvaWQqPigxKSk7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChjb2RlUHRyLmV4ZWN1
dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5mby0+Y2Fs
bE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/IFRyYXNoVGhlRnJhbWUgOiBLZWVwVGhlRnJhbWUp
KTsKIH0KIAogaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9u
KApAQCAtODE5LDcgKzgzNSw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZv
cldpdGhGdW5jdGlvbigKICAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBleGVjQ2FsbGVlLT5j
YWxsZWVBc1ZhbHVlKCk7CiAgICAgY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9u
KGNhbGxlZUFzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FsbGVlQXNGdW5jdGlvbkNlbGwp
KQotICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgY2FsbGVlQXNWYWx1
ZSwga2luZCk7CisgICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBjYWxs
ZWVBc1ZhbHVlLCBjYWxsTGlua0luZm8pOwogICAgIAogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9u
ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CiAgICAgSlNTY29w
ZSogc2NvcGUgPSBmdW5jdGlvbi0+c2NvcGVVbmNoZWNrZWQoKTsKQEAgLTgyOSwxOCArODQ1LDIy
IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhGdW5jdGlvbigKIAog
ICAgICAgICBpZiAoIWlzQ2FsbChraW5kKSAmJiBmdW5jdGlvbkV4ZWN1dGFibGUtPmlzQnVpbHRp
bkZ1bmN0aW9uKCkpIHsKICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgZnVuY3Rpb24pKTsKLSAgICAgICAg
ICAgIHJldHVybiBlbmNvZGVSZXN1bHQodm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9t
Q2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oMCkpOworICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgK
KyAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xv
d1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLAorICAgICAgICAgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwogICAgICAgICB9CiAK
ICAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9y
RXhlY3V0aW9uKGV4ZWNDYWxsZWUsIGZ1bmN0aW9uLCBzY29wZSwga2luZCk7CiAgICAgICAgIGlm
IChlcnJvcikgewogICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBl
cnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHZtLT5nZXRDVElTdHViKHRo
cm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDApKTsKKyAgICAgICAgICAgIHJldHVy
biBlbmNvZGVSZXN1bHQoCisgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dFeGNl
cHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwKKyAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUp
KTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUt
PmVudHJ5cG9pbnRGb3IoCiAgICAgICAgICp2bSwga2luZCwgTXVzdENoZWNrQXJpdHksIGNhbGxM
aW5rSW5mby0+cmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlKCkpLmV4ZWN1dGFibGVBZGRyZXNzKCks
Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDEpKTsKKyAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oY2FsbExpbmtJbmZvLT5jYWxsTW9kZSgpID09IENhbGxNb2RlOjpUYWls
ID8gVHJhc2hUaGVGcmFtZSA6IEtlZXBUaGVGcmFtZSkpOwogfQogCiBTbG93UGF0aFJldHVyblR5
cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsKEV4ZWNTdGF0ZSog
ZXhlY0NhbGxlZSwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAppbmRleCBjZjdkM2ZkMzE0ZTU5ZWQzYTQzYjRhNGE3MDc2NmNiNjk2
YzNlZmQ4Li4xNmFkMTEzMzg0YmZmNjIyNGFhMWVmMDMwOWY5YWI1ZDM0ZGMyY2YyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTE3NTcsNyArMTc1Nyw3IEBAIHZvaWQg
bGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gSWYgd2Ug
Y2Fubm90IGhhbmRsZSBhIGNhbGxlZSwgYXNzdW1lIHRoYXQgaXQncyBiZXR0ZXIgZm9yIHRoaXMg
d2hvbGUgdGhpbmcgdG8gYmUgYQogICAgICAgICAgICAgLy8gdmlydHVhbCBjYWxsLgotICAgICAg
ICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSB8fCBDYWxsTGlua0luZm86Omlz
VmFyYXJnc0NhbGxUeXBlKGNhbGxMaW5rSW5mby5jYWxsVHlwZSgpKSkgeworICAgICAgICAgICAg
aWYgKGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSB8fCBjYWxsTGlua0luZm8uaXNWYXJhcmdz
KCkpIHsKICAgICAgICAgICAgICAgICBsaW5rVmlydHVhbEZvcihleGVjLCBjYWxsTGlua0luZm8p
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTE4ODAsNyArMTg4
MCw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMigxKSwKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoZmFzdENvdW50c0Jhc2VHUFIsIGNhc2VJbmRleCAqIHNpemVvZih1aW50MzJfdCkpKTsK
ICAgICAgICAgfQotICAgICAgICBpZiAoQ2FsbExpbmtJbmZvOjppc1RhaWxDYWxsVHlwZShjYWxs
TGlua0luZm8uY2FsbFR5cGUoKSkpIHsKKyAgICAgICAgaWYgKGNhbGxMaW5rSW5mby5pc1RhaWxD
YWxsKCkpIHsKICAgICAgICAgICAgIHN0dWJKaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdygpOwog
ICAgICAgICAgICAgY2FsbHNbY2FzZUluZGV4XS5jYWxsID0gc3R1YkppdC5uZWFyVGFpbENhbGwo
KTsKICAgICAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHAKaW5kZXggNTJiNTU5YjBhYzA4MThlZTcyOWNkZTRjOWEzMWY2OTJhNTNiMTUx
NS4uNjJlYTRjZWZlMjZkZmY0MzVhOTc5YjNmOGZhMDZlZDEyYWEzMGE2MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtOTksNiArOTksNyBA
QCBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcigKICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0
LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3Vl
KCk7CiAKKyAgICBSRUxFQVNFX0FTU0VSVChyZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhl
RnJhbWUpID09IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDApKTsKICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgZG9Ob3RUcmFzaCA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywg
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsKIAogICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJl
c3NBZnRlckNhbGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKQEAgLTE5MSw3
ICsxOTIsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rRm9yKFZNKiB2bSwg
Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiAgICAgCiAgICAgLy8gTWFrZSBhIHRhaWwgY2Fs
bC4gVGhpcyB3aWxsIHJldHVybiBiYWNrIHRvIEpJVCBjb2RlLgogICAgIGVtaXRQb2ludGVyVmFs
aWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1Q0KTsKLSAgICBpZiAoQ2FsbExpbmtJbmZvOjppc1Rh
aWxDYWxsVHlwZShjYWxsTGlua0luZm8uY2FsbFR5cGUoKSkpIHsKKyAgICBpZiAoY2FsbExpbmtJ
bmZvLmlzVGFpbENhbGwoKSkgewogICAgICAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0
ZXJDYWxsKEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgaml0LnByZXBhcmVGb3JUYWlsQ2FsbFNs
b3coR1BSSW5mbzo6cmVnVDQpOwogICAgIH0KQEAgLTIwNSw5ICsyMDYsOCBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgdmlydHVhbFRodW5rRm9yKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlu
a0luZm8pCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5L
X0lEKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERSgKICAgICAgICAgcGF0Y2hCdWZmZXIsCi0g
ICAgICAgICgiVmlydHVhbCAlcyVzIHNsb3cgcGF0aCB0aHVuayBhdCBDb2RlUHRyKCVwKSIsCi0g
ICAgICAgIGNhbGxMaW5rSW5mby5zcGVjaWFsaXphdGlvbktpbmQoKSA9PSBDb2RlRm9yQ2FsbCA/
ICJjYWxsIiA6ICJjb25zdHJ1Y3QiLAotICAgICAgICBjYWxsTGlua0luZm8ucmVnaXN0ZXJQcmVz
ZXJ2YXRpb25Nb2RlKCkgPT0gTXVzdFByZXNlcnZlUmVnaXN0ZXJzID8gIiB0aGF0IHByZXNlcnZl
cyByZWdpc3RlcnMiIDogIiIsCisgICAgICAgICgiVmlydHVhbCAlcyBzbG93IHBhdGggdGh1bmsg
YXQgQ29kZVB0ciglcCkiLAorICAgICAgICBjYWxsTGlua0luZm8uY2FsbE1vZGUoKSA9PSBDYWxs
TW9kZTo6UmVndWxhciA/ICJjYWxsIiA6IGNhbGxMaW5rSW5mby5jYWxsTW9kZSgpID09IENhbGxN
b2RlOjpUYWlsID8gInRhaWwgY2FsbCIgOiAiY29uc3RydWN0IiwKICAgICAgICAgY2FsbExpbmtJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbigpLmRhdGFMb2NhdGlvbigpKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257885</attachid>
            <date>2015-07-30 17:34:59 -0700</date>
            <delta_ts>2015-07-30 17:38:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147475-20150730173457.patch</filename>
            <type>text/plain</type>
            <size>32674</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ODFiOTUxZmE2MTdjZjQyNGY1NTAwODA2OGIyMTczZGU2Zjk0ZTJlLi4wM2Q1ZmM2ZTNmOTFjZjBh
MzQzYzZiODhjZGY5YzIyMWM5NGY3M2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0NSBAQAogMjAxNS0wNy0zMCAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBh
cHBsZS5jb20+CiAKKyAgICAgICAganNjLXRhaWxjYWxsOiBBZGQgZW51bXMgZm9yIHR5cGUtc2Fm
ZXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc0
NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IGFkZHM6CisKKyAgICAgICAgIC0gQSBDYWxsTW9kZSBlbnVtIHRvIGRpc3Rpbmd1aXNoIHRhaWwg
Y2FsbHMgZnJvbSByZWd1bGFyIGNhbGxzIGZyb20gY29uc3RydWN0CisKKyAgICAgICAgIC0gQSBG
cmFtZUFjdGlvbiBlbnVtIHRvIGluZGljYXRlIHdoZXRoZXIgdG8ga2VlcCBvciB0cmFzaCB0aGUg
Y2FsbAorICAgICAgICAgICBmcmFtZS4gSXQgYWxzbyBjaGFuZ2VzIEpJVE9wZXJhdGlvbnMuaCB0
byBjb3JyZWN0bHkgdXNlIHRoaXMgdG8gdGVsbAorICAgICAgICAgICBzbG93UGF0aEZvciB0byAq
bm90KiB0cmFzaCB0aGUgZnJhbWUgb24gYSByZWd1bGFyIGNhbGwgKGJlZm9yZQorICAgICAgICAg
ICByMTg3NTA1LCB0aGlzIHdhcyBzdGF0aWNhbGx5IGtub3duIGluIHNsb3dQYXRoRm9yKS4KKwor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvQ29kZUxvY2F0aW9uLmg6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbk5lYXJDYWxs
OjpDb2RlTG9jYXRpb25OZWFyQ2FsbCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbk5lYXJD
YWxsOjpjYWxsTW9kZSk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6bmVhckNh
bGxBdE9mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAg
KEpTQzo6TGlua0J1ZmZlcjo6bG9jYXRpb25PZk5lYXJDYWxsKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsTGlua0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjYWxsTW9kZUZv
cik6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y2FsbE1vZGUpOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OmlzVGFpbENhbGwpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86
OmlzVmFyYXJncyk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbE1vZGUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbE1vZGUu
aDogQWRkZWQuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAg
ICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnNsb3dQYXRoRm9y
KToKKyAgICAgICAgKEpTQzo6dmlydHVhbFRodW5rRm9yKToKKworMjAxNS0wNy0zMCAgQmFzaWxl
IENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBhcHBsZS5jb20+CisKICAgICAgICAganNjLXRhaWxj
YWxsOiBEb24ndCB3YXN0ZSBzdGFjayBzcGFjZSB3aGVuIGFyaXR5IGZpeHVwIHdhcyBwZXJmb3Jt
ZWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzQ0
NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYWQ5NzFiMDQ2NmE5MDYw
NGM0NjM4Mjk2YWU1MmQwYjY2MWM1OTVlZC4uNTZjNjI1N2M3MmY0MjhmYjUxODU4NzE1ZDBiMTkz
MjJiNDVhMzUzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzYsNiAr
NzYsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0NhbGxFZGdl
LmNwcAogICAgIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKICAgICBieXRlY29kZS9DYWxsTGlu
a1N0YXR1cy5jcHAKKyAgICBieXRlY29kZS9DYWxsTW9kZS5jcHAKICAgICBieXRlY29kZS9DYWxs
VmFyaWFudC5jcHAKICAgICBieXRlY29kZS9Db2RlQmxvY2suY3BwCiAgICAgYnl0ZWNvZGUvQ29k
ZUJsb2NrSGFzaC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4
IGNkMTNmYjAxYzZmZGEzNDUxOGViNDQ4NTNhN2RiY2Y2NzU0MDg3MmMuLjA2NzIwMzdjMTk4NWI4
NTZhMzYwZjY4YThhMDQwMDQxNmY1Njc4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagpAQCAtMzE3LDYgKzMxNyw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxieXRlY29kZVxDYWxsRWRnZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxi
eXRlY29kZVxDYWxsTGlua0luZm8uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQ2FsbExpbmtTdGF0dXMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQ2FsbE1vZGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQ2FsbFZhcmlhbnQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQ29kZUJsb2NrLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5
dGVjb2RlXENvZGVCbG9ja0hhc2guY3BwIiAvPgpAQCAtOTY3LDYgKzk2OCw3IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsRWRnZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbExpbmtJbmZvLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsTGlua1N0YXR1cy5oIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbE1vZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsVmFyaWFudC5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ29kZUJsb2NrLmgiIC8+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggY2Ew
OTY0ZWJkYmQzMmJjNDBmMThiZWM3MDUxYzlhYzNiZDk5YjNkMC4uNWEzMGQ4NDQ0NTdlYzczMDEw
YjhhZWRiODQ0YmU1YWZhMzVmYTA4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMTU2LDYgKzE1Niw5IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsTGlua1N0YXR1cy5jcHAiPgogICAgICAgPEZpbHRl
cj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbE1vZGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5
dGVjb2RlXENvZGVCbG9jay5jcHAiPgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpAQCAtMTkzNSw2ICsxOTM4LDkgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxMaW5rU3RhdHVzLmgiPgogICAgICAgPEZpbHRlcj5ieXRl
Y29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQ2FsbE1vZGUuaCI+CisgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+
CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxD
YWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNv
ZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNGM3ZGQ3MDJjMzRmYjM4ZTFkNDQ2ZjJjODFlMzM5ZTIzOGY3ZWQ2Ny4uMzRlYjQzYjVj
ZTZiYWI1NGYxOTcxMTEzYTAxOTg2OTEwMjhiNjRlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTk2Miw2ICs5NjIsOCBAQAogCQk1REJCMTUxQjEzMUQwQjMxMDA1NkFEMzYgLyog
dGVzdGFwaS5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovOyB9
OwogCQk1REJCMTUyNTEzMUQwQkQ3MDA1NkFEMzYgLyogbWluaWRvbS5qcyBpbiBDb3B5IFN1cHBv
cnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MTIxMTBEMEE0
ODc4ODcwMDQ4MDI1NSAvKiBtaW5pZG9tLmpzICovOyB9OwogCQk1REU2RTVCMzBFMTcyOEVDMDAx
ODA0MDcgLyogY3JlYXRlX2hhc2hfdGFibGUgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg1NDAyNTU1OTdEMDFGRjYwRjcgLyogY3JlYXRlX2hhc2hf
dGFibGUgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJNjI3NjczMjMx
QjY4MEMxRTAwRkQ5RjJFIC8qIENhbGxNb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYyNzY3MzIxMUI2ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9k
ZS5jcHAgKi87IH07CisJCTYyNzY3MzI0MUI2ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9kZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjI3NjczMjIxQjY4
MEMxRTAwRkQ5RjJFIC8qIENhbGxNb2RlLmggKi87IH07CiAJCTYyRDJEMzhGMUFERjEwM0YwMDAy
MDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDYyRDJEMzhEMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJh
cmVEYXRhLmNwcCAqLzsgfTsKIAkJNjJEMkQzOTAxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9u
UmFyZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDYyRDJEMzhFMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjJGMkFBMzcxQjBCRURF
MzAwNjEwQzdBIC8qIERGR0xhenlOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDYyQTlBMjlFMUIwQkVENDgwMEJENTRDQSAvKiBERkdMYXp5Tm9k
ZS5jcHAgKi87IH07CkBAIC0yNjc2LDYgKzI2NzgsOCBAQAogCQk1REFGRDZDQjE0NkI2ODYzMDBG
QkVGQjQgLyogSlNDLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEpTQy54Y2NvbmZpZzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUREREY0NDYxNEZFRTcyMjAwQjRGQjREIC8qIExMSW50
RGVzaXJlZE9mZnNldHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRE
ZXNpcmVkT2Zmc2V0cy5oOyBwYXRoID0gTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMu
aDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNURFM0QwRjQwREQ4RERG
QjAwNDY4NzE0IC8qIFdlYktpdEF2YWlsYWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJLaXRBdmFpbGFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNjI3NjczMjExQjY4MEMxRTAwRkQ5RjJFIC8qIENhbGxNb2RlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxNb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNjI3NjczMjIxQjY4MEMxRTAwRkQ5RjJFIC8qIENhbGxNb2RlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxNb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTYyQTlBMjlFMUIwQkVENDgwMEJENTRDQSAvKiBERkdMYXp5Tm9kZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdMYXp5Tm9kZS5jcHA7
IHBhdGggPSBkZmcvREZHTGF6eU5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2MkE5QTI5RjFCMEJFRDQ4MDBCRDU0Q0EgLyogREZHTGF6eU5vZGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTGF6eU5vZGUuaDsgcGF0aCA9IGRmZy9ERkdMYXp5Tm9k
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MkQyRDM4RDFBREYxMDNGMDAwMjA2
QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGdW5jdGlvblJhcmVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTUyNTcsNiArNTI2MSw4IEBACiAJCQkJMEYwQjgzQUYxNEJDRjcxNDAwODg1QjRGIC8qIENh
bGxMaW5rSW5mby5oICovLAogCQkJCTBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlu
a1N0YXR1cy5jcHAgKi8sCiAJCQkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5r
U3RhdHVzLmggKi8sCisJCQkJNjI3NjczMjExQjY4MEMxRTAwRkQ5RjJFIC8qIENhbGxNb2RlLmNw
cCAqLywKKwkJCQk2Mjc2NzMyMjFCNjgwQzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuaCAqLywKIAkJ
CQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQuaCAqLywKIAkJCQkwRjNCN0UyNDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQu
Y3BwICovLAogCQkJCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oICov
LApAQCAtNTI3OCw2ICs1Mjg0LDggQEAKIAkJCQkwRjQyNkE0QTE0NjBDRDZCMDAxMzFGOEYgLyog
RGF0YUZvcm1hdC5oICovLAogCQkJCTBGQzcxMkRDMTdDRDg3NzgwMDhDQzkzQyAvKiBEZWZlcnJl
ZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwICovLAogCQkJCTBGQzcxMkREMTdDRDg3NzgwMDhDQzkz
QyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLywKKwkJCQlGRTUwNjg2NjFBRTI1
RTI4MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmNwcCAqLywKKwkJCQlGRTUwNjg2NDFB
RTI0NjM5MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmggKi8sCiAJCQkJMEZCQzBBRTQx
NDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNwcCAqLywKIAkJCQkwRkJDMEFFNTE0
OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuaCAqLywKIAkJCQk5NjlBMDc5MjBFRDFE
M0FFMDBGMUY2ODEgLyogRXZhbENvZGVDYWNoZS5oICovLApAQCAtNTMyNSw4ICs1MzMzLDYgQEAK
IAkJCQkwRkY2MEFDMDE2NzQwRjgxMDAwMjk3NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5oICovLAog
CQkJCTE0MjlEODgzMEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuY3BwICovLAogCQkJ
CTE0MjlEODg0MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuaCAqLywKLQkJCQlGRTUw
Njg2NjFBRTI1RTI4MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmNwcCAqLywKLQkJCQlG
RTUwNjg2NDFBRTI0NjM5MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmggKi8sCiAJCQkJ
MEY1NTQxQUYxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmNwcCAqLywKIAkJCQkw
RjU1NDFCMDE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuaCAqLywKIAkJCQkwRkQ4
MkU4NDE0MUYzRkRBMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuY3BwICovLApAQCAtNTg2NSw2
ICs1ODcxLDcgQEAKIAkJCQk4NkVDOUREMDEzMjhERjgyMDAyQjJBRDcgLyogREZHT3BlcmF0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlDRkUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR09T
UkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU3
MTQxREFGMTAwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjI3
NjczMjQxQjY4MEMxRTAwRkQ5RjJFIC8qIENhbGxNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkQ4QTMyNjE3RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTYyRjJBQTM4MUIwQkVERTMwMDYxMEM3QSAvKiBERkdMYXp5
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERG
R09TUkV4aXQuaCBpbiBIZWFkZXJzICovLApAQCAtNzU2Nyw2ICs3NTc0LDcgQEAKIAkJCQkwRjJE
NERFRjE5ODMyREQzMDA3RDRCMTkgLyogVHlwZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzM1RjI0RDEyRTY3NjVCMDAyQjU1NTMgLyogU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0RFM0I0MzBFNkM4MzJEMDAxNDUzQTcgLyogU3RydWN0dXJlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTYyNzY3MzIzMUI2ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEgLyogU3Ry
dWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJGMEYyRDExNkJBRUVFOTAwMTg3
QzE5IC8qIFN0cnVjdHVyZVJhcmVEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwMTNDQThC
MUI0OTFBOTQwMENBRTYxMyAvKiBKU0pvYi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmgKaW5kZXggMTU4ZjYwMDE2ZGM3NTljMDJkNTdhOTg3NmUwNGQ3Y2I2YjI4NmNiZC4uNjkwMTQz
NGViMmNhMzQxYzBmZDUzOGM5MGU3ZGI3MjVmM2NmZjI2MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAg
LTExNTQsMTAgKzExNTQsMTAgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hO
ZWFyQ2FsbChDb2RlTG9jYXRpb25OZWFyQ2FsbCBuZWFyQ2FsbCwgQ29kZUxvY2F0aW9uTGFiZWwg
ZGVzdGluYXRpb24pCiAgICAgewogICAgICAgICBzd2l0Y2ggKG5lYXJDYWxsLmNhbGxNb2RlKCkp
IHsKLSAgICAgICAgY2FzZSBDYWxsTW9kZTo6VGFpbDoKKyAgICAgICAgY2FzZSBOZWFyQ2FsbE1v
ZGU6OlRhaWw6CiAgICAgICAgICAgICBBc3NlbWJsZXJUeXBlOjpyZWxpbmtKdW1wKG5lYXJDYWxs
LmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBDYWxsTW9kZTo6UmVndWxhcjoKKyAgICAgICAg
Y2FzZSBOZWFyQ2FsbE1vZGU6OlJlZ3VsYXI6CiAgICAgICAgICAgICBBc3NlbWJsZXJUeXBlOjpy
ZWxpbmtDYWxsKG5lYXJDYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxl
QWRkcmVzcygpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmgKaW5kZXggMGRjMjRkZTQ5ZDQy
ZDhhOTEzZDBlOTQzMTZhMDUyNjM2YzVmMTQ0Ni4uZTM4MTdiMDE5MzVhNGM3NGFhOTQzZDg2NmIz
NzE0Y2YxZjI3ZTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9Db2RlTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Nv
ZGVMb2NhdGlvbi5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVt
IENhbGxNb2RlIHsgUmVndWxhciwgVGFpbCB9OworZW51bSBOZWFyQ2FsbE1vZGUgeyBSZWd1bGFy
LCBUYWlsIH07CiAKIGNsYXNzIENvZGVMb2NhdGlvbkluc3RydWN0aW9uOwogY2xhc3MgQ29kZUxv
Y2F0aW9uTGFiZWw7CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBDb2RlTG9jYXRpb25M
YWJlbCBsYWJlbEF0T2Zmc2V0KGludCBvZmZzZXQpOwogICAgIENvZGVMb2NhdGlvbkp1bXAganVt
cEF0T2Zmc2V0KGludCBvZmZzZXQpOwogICAgIENvZGVMb2NhdGlvbkNhbGwgY2FsbEF0T2Zmc2V0
KGludCBvZmZzZXQpOwotICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsIG5lYXJDYWxsQXRPZmZzZXQo
aW50IG9mZnNldCwgQ2FsbE1vZGUpOworICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsIG5lYXJDYWxs
QXRPZmZzZXQoaW50IG9mZnNldCwgTmVhckNhbGxNb2RlKTsKICAgICBDb2RlTG9jYXRpb25EYXRh
TGFiZWxQdHIgZGF0YUxhYmVsUHRyQXRPZmZzZXQoaW50IG9mZnNldCk7CiAgICAgQ29kZUxvY2F0
aW9uRGF0YUxhYmVsMzIgZGF0YUxhYmVsMzJBdE9mZnNldChpbnQgb2Zmc2V0KTsKICAgICBDb2Rl
TG9jYXRpb25EYXRhTGFiZWxDb21wYWN0IGRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChpbnQgb2Zm
c2V0KTsKQEAgLTExNywxMyArMTE3LDEzIEBAIHB1YmxpYzoKIGNsYXNzIENvZGVMb2NhdGlvbk5l
YXJDYWxsIDogcHVibGljIENvZGVMb2NhdGlvbkNvbW1vbiB7CiBwdWJsaWM6CiAgICAgQ29kZUxv
Y2F0aW9uTmVhckNhbGwoKSB7fQotICAgIGV4cGxpY2l0IENvZGVMb2NhdGlvbk5lYXJDYWxsKE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBsb2NhdGlvbiwgQ2FsbE1vZGUgY2FsbE1vZGUpCisgICAgZXhw
bGljaXQgQ29kZUxvY2F0aW9uTmVhckNhbGwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxvY2F0aW9u
LCBOZWFyQ2FsbE1vZGUgY2FsbE1vZGUpCiAgICAgICAgIDogQ29kZUxvY2F0aW9uQ29tbW9uKGxv
Y2F0aW9uKSwgbV9jYWxsTW9kZShjYWxsTW9kZSkge30KLSAgICBleHBsaWNpdCBDb2RlTG9jYXRp
b25OZWFyQ2FsbCh2b2lkKiBsb2NhdGlvbiwgQ2FsbE1vZGUgY2FsbE1vZGUpCisgICAgZXhwbGlj
aXQgQ29kZUxvY2F0aW9uTmVhckNhbGwodm9pZCogbG9jYXRpb24sIE5lYXJDYWxsTW9kZSBjYWxs
TW9kZSkKICAgICAgICAgOiBDb2RlTG9jYXRpb25Db21tb24oTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KGxvY2F0aW9uKSksIG1fY2FsbE1vZGUoY2FsbE1vZGUpIHt9Ci0gICAgQ2FsbE1vZGUgY2FsbE1v
ZGUoKSB7IHJldHVybiBtX2NhbGxNb2RlOyB9CisgICAgTmVhckNhbGxNb2RlIGNhbGxNb2RlKCkg
eyByZXR1cm4gbV9jYWxsTW9kZTsgfQogcHJpdmF0ZToKLSAgICBDYWxsTW9kZSBtX2NhbGxNb2Rl
ID0gQ2FsbE1vZGU6OlJlZ3VsYXI7CisgICAgTmVhckNhbGxNb2RlIG1fY2FsbE1vZGUgPSBOZWFy
Q2FsbE1vZGU6OlJlZ3VsYXI7CiB9OwogCiBjbGFzcyBDb2RlTG9jYXRpb25EYXRhTGFiZWwzMiA6
IHB1YmxpYyBDb2RlTG9jYXRpb25Db21tb24gewpAQCAtMTg2LDcgKzE4Niw3IEBAIGlubGluZSBD
b2RlTG9jYXRpb25DYWxsIENvZGVMb2NhdGlvbkNvbW1vbjo6Y2FsbEF0T2Zmc2V0KGludCBvZmZz
ZXQpCiAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkNhbGwocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
ZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0KTsKIH0KIAotaW5saW5lIENvZGVMb2NhdGlvbk5lYXJD
YWxsIENvZGVMb2NhdGlvbkNvbW1vbjo6bmVhckNhbGxBdE9mZnNldChpbnQgb2Zmc2V0LCBDYWxs
TW9kZSBjYWxsTW9kZSkKK2lubGluZSBDb2RlTG9jYXRpb25OZWFyQ2FsbCBDb2RlTG9jYXRpb25D
b21tb246Om5lYXJDYWxsQXRPZmZzZXQoaW50IG9mZnNldCwgTmVhckNhbGxNb2RlIGNhbGxNb2Rl
KQogewogICAgIEFTU0VSVF9WQUxJRF9DT0RFX09GRlNFVChvZmZzZXQpOwogICAgIHJldHVybiBD
b2RlTG9jYXRpb25OZWFyQ2FsbChyZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhTG9jYXRpb24o
KSkgKyBvZmZzZXQsIGNhbGxNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9MaW5rQnVmZmVyLmgKaW5kZXggOWM0MWI5NWQ1MTU1YzRkNmM5MjQ4NzFkYjk0ZmExN2ZmMThl
Y2MzOC4uYjM0YTZmMTlmZjQ0MTEyOGI4MjUxMzI4MjUzNDIxNmUyNjAyNWY0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKQEAgLTE4MSw3ICsxODEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChjYWxsLmlzRmxhZ1NldChDYWxsOjpMaW5rYWJs
ZSkpOwogICAgICAgICBBU1NFUlQoY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TmVhcikpOwogICAgICAg
ICByZXR1cm4gQ29kZUxvY2F0aW9uTmVhckNhbGwoTWFjcm9Bc3NlbWJsZXI6OmdldExpbmtlckFk
ZHJlc3MoY29kZSgpLCBhcHBseU9mZnNldChjYWxsLm1fbGFiZWwpKSwKLSAgICAgICAgICAgIGNh
bGwuaXNGbGFnU2V0KENhbGw6OlRhaWwpID8gQ2FsbE1vZGU6OlRhaWwgOiBDYWxsTW9kZTo6UmVn
dWxhcik7CisgICAgICAgICAgICBjYWxsLmlzRmxhZ1NldChDYWxsOjpUYWlsKSA/IE5lYXJDYWxs
TW9kZTo6VGFpbCA6IE5lYXJDYWxsTW9kZTo6UmVndWxhcik7CiAgICAgfQogCiAgICAgQ29kZUxv
Y2F0aW9uTGFiZWwgbG9jYXRpb25PZihQYXRjaGFibGVKdW1wIGp1bXApCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKaW5kZXggZTkxZjA3ZmQ2ZGMwZTFi
NjQ5ZTNlZDU0ZDY5NzRlN2M1N2Q5ZDM5Ni4uNjIxMjQyNWUxNjllOGE4MTAyOWQzMGI5YjU5YWY4
ZWY0ZjNkNDJkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a0luZm8uaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBDYWxsTGlua0luZm9faAogI2RlZmlu
ZSBDYWxsTGlua0luZm9faAogCisjaW5jbHVkZSAiQ2FsbE1vZGUuaCIKICNpbmNsdWRlICJDb2Rl
TG9jYXRpb24uaCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVk
ZSAiSklUV3JpdGVCYXJyaWVyLmgiCkBAIC03MywxOCArNzQsNiBAQCBwdWJsaWM6CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc1RhaWxDYWxsVHlwZShDYWxsVHlwZSBjYWxs
VHlwZSkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoY2FsbFR5cGUpIHsKLSAgICAgICAgY2FzZSBU
YWlsQ2FsbDoKLSAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0gICAgfQotICAgIAogICAgIENhbGxMaW5rSW5mbygpCiAgICAgICAgIDogbV9y
ZWdpc3RlclByZXNlcnZhdGlvbk1vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlZ2lzdGVyUHJl
c2VydmF0aW9uTm90UmVxdWlyZWQpKQogICAgICAgICAsIG1faGFzU2VlblNob3VsZFJlcGF0Y2go
ZmFsc2UpCkBAIC0xMTMsNiArMTAyLDM3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHNwZWNp
YWxpemF0aW9uS2luZEZvcihzdGF0aWNfY2FzdDxDYWxsVHlwZT4obV9jYWxsVHlwZSkpOwogICAg
IH0KIAorICAgIHN0YXRpYyBDYWxsTW9kZSBjYWxsTW9kZUZvcihDYWxsVHlwZSBjYWxsVHlwZSkK
KyAgICB7CisgICAgICAgIHN3aXRjaCAoY2FsbFR5cGUpIHsKKyAgICAgICAgY2FzZSBDYWxsOgor
ICAgICAgICBjYXNlIENhbGxWYXJhcmdzOgorICAgICAgICAgICAgcmV0dXJuIENhbGxNb2RlOjpS
ZWd1bGFyOworICAgICAgICBjYXNlIFRhaWxDYWxsOgorICAgICAgICBjYXNlIFRhaWxDYWxsVmFy
YXJnczoKKyAgICAgICAgICAgIHJldHVybiBDYWxsTW9kZTo6VGFpbDsKKyAgICAgICAgY2FzZSBD
b25zdHJ1Y3Q6CisgICAgICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoKKyAgICAgICAgICAgIHJl
dHVybiBDYWxsTW9kZTo6Q29uc3RydWN0OworICAgICAgICBjYXNlIE5vbmU6CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorICAgIENh
bGxNb2RlIGNhbGxNb2RlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjYWxsTW9kZUZv
cihzdGF0aWNfY2FzdDxDYWxsVHlwZT4obV9jYWxsVHlwZSkpOworICAgIH0KKworICAgIGJvb2wg
aXNUYWlsQ2FsbCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY2FsbE1vZGUoKSA9PSBD
YWxsTW9kZTo6VGFpbDsKKyAgICB9CisKKyAgICBib29sIGlzVmFyYXJncygpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gaXNWYXJhcmdzQ2FsbFR5cGUoc3RhdGljX2Nhc3Q8Q2FsbFR5cGU+
KG1fY2FsbFR5cGUpKTsKKyAgICB9CisKICAgICBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUgcmVn
aXN0ZXJQcmVzZXJ2YXRpb25Nb2RlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxSZWdpc3RlclByZXNlcnZhdGlvbk1vZGU+KG1fcmVnaXN0ZXJQcmVzZXJ2YXRpb25N
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTW9k
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbE1vZGUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU3NTdiMTg1MDY3OTY4YTZhMWYzZDA5OWVkMjM5Y2I2MTczZmMyNmEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbE1vZGUuY3BwCkBA
IC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhbGxNb2RlLmgiCisKKyNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkNhbGxNb2RlIGNhbGxNb2RlKQoreworICAg
IHN3aXRjaCAoY2FsbE1vZGUpIHsKKyAgICBjYXNlIEpTQzo6Q2FsbE1vZGU6OlRhaWw6CisgICAg
ICAgIG91dC5wcmludCgiVGFpbENhbGwiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlND
OjpDYWxsTW9kZTo6UmVndWxhcjoKKyAgICAgICAgb3V0LnByaW50KCJDYWxsIik7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIEpTQzo6Q2FsbE1vZGU6OkNvbnN0cnVjdDoKKyAgICAgICAgb3V0
LnByaW50KCJDb25zdHJ1Y3QiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTW9kZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxNb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNiYjYxMzBjNDhm
Nzg4MjRmYjBlYTk0NjEzODBkZGZkMmNhZjEyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTW9kZS5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDYWxsTW9k
ZV9oCisjZGVmaW5lIENhbGxNb2RlX2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gY2xhc3Mg
Q2FsbE1vZGUgeyBSZWd1bGFyLCBUYWlsLCBDb25zdHJ1Y3QgfTsKKworZW51bSBGcmFtZUFjdGlv
biB7IEtlZXBUaGVGcmFtZSA9IDAsIFJldXNlVGhlRnJhbWUgfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKK3ZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6Q2FsbE1vZGUpOworCit9IC8vIG5hbWVzcGFjZSBX
VEYKKworI2VuZGlmIC8vIENhbGxNb2RlX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKaW5kZXggNzA5NTYwZjJkZDNmMjU4NTY2Mjk3M2YyM2YyMmMwOTU1
ZDZmMzQ3MC4uNjVhNjk3NWFhNGY0ZmVmNjdlOGExYjQ3NmFhNWY0YzM0YTM4ZDc5OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC03MDUsMTQgKzcw
NSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxFdmFsKEV4
ZWNTdGF0ZSogZXhlYywgRXhlY1N0YXRlKiBleGVjQwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2Fs
bChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCitzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4
ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsIENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1l
KCk7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAKICAgICBleGVjQ2FsbGVlLT5zZXRDb2Rl
QmxvY2soMCk7CiAKLSAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgIGlmIChjYWxs
TGlua0luZm8tPnNwZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDYWxsKSB7CiAgICAgICAg
IENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxE
YXRhKGNhbGxlZSwgY2FsbERhdGEpOwogICAgIApAQCAtNzIyLDE4ICs3MjIsMjUgQEAgc3RhdGlj
IFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUs
IEpTVmFsdWUgY2FsbGVlLAogICAgICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlY0NhbGxlZSk7CiAgICAgICAgICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZWUoYXNP
YmplY3QoY2FsbGVlKSk7CiAgICAgICAgICAgICB2bS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOwotICAg
ICAgICAgICAgaWYgKHZtLT5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZW5j
b2RlUmVzdWx0KHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdl
bmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KDApKTsKKyAgICAgICAgICAgIGlmICh2bS0+ZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAorICAgICAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJ
U3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVj
dXRhYmxlQWRkcmVzcygpLAorICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZv
aWQqPihLZWVwVGhlRnJhbWUpKTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcmV0dXJu
IGVuY29kZVJlc3VsdChiaXR3aXNlX2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
LCByZWludGVycHJldF9jYXN0PHZvaWQqPigxKSk7CisgICAgICAgICAgICByZXR1cm4gZW5jb2Rl
UmVzdWx0KAorICAgICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSksCisgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2Fs
bExpbmtJbmZvLT5jYWxsTW9kZSgpID09IENhbGxNb2RlOjpUYWlsID8gUmV1c2VUaGVGcmFtZSA6
IEtlZXBUaGVGcmFtZSkpOwogICAgICAgICB9CiAgICAgCiAgICAgICAgIEFTU0VSVChjYWxsVHlw
ZSA9PSBDYWxsVHlwZU5vbmUpOwogICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkpOwotICAgICAgICByZXR1
cm4gZW5jb2RlUmVzdWx0KHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93
UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KDApKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKKyAgICAgICAgICAg
IHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvciku
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKICAgICB9CiAKLSAgICBBU1NFUlQoa2luZCA9PSBDb2Rl
Rm9yQ29uc3RydWN0KTsKKyAgICBBU1NFUlQoY2FsbExpbmtJbmZvLT5zcGVjaWFsaXphdGlvbktp
bmQoKSA9PSBDb2RlRm9yQ29uc3RydWN0KTsKICAgICAKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0
cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0
RGF0YShjYWxsZWUsIGNvbnN0cnVjdERhdGEpOwpAQCAtNzQ0LDE1ICs3NTEsMjAgQEAgc3RhdGlj
IFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUs
IEpTVmFsdWUgY2FsbGVlLAogICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjQ2FsbGVlKTsKICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNh
bGxlZSkpOwogICAgICAgICB2bS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7Ci0gICAgICAgIGlm
ICh2bS0+ZXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHZtLT5n
ZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDApKTsKKyAgICAg
ICAgaWYgKHZtLT5leGNlcHRpb24oKSkgeworICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3Vs
dCgKKyAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxs
U2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLAorICAgICAgICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOworICAgICAgICB9
CiAKLSAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChiaXR3aXNlX2Nhc3Q8dm9pZCo+KGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpLCByZWludGVycHJldF9jYXN0PHZvaWQqPigxKSk7CisgICAgICAg
IHJldHVybiBlbmNvZGVSZXN1bHQoYml0d2lzZV9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAgfQog
ICAgIAogICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVOb25lKTsKICAg
ICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVy
cm9yKGV4ZWMsIGNhbGxlZSkpOwotICAgIHJldHVybiBlbmNvZGVSZXN1bHQodm0tPmdldENUSVN0
dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMCkpOworICAgIHJldHVybiBl
bmNvZGVSZXN1bHQoCisgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNh
bGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwogfQogCiBTbG93UGF0aFJl
dHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ2FsbChFeGVjU3RhdGUqIGV4ZWND
YWxsZWUsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKQpAQCAtNzY4LDcgKzc4MCw3IEBAIFNs
b3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxsKEV4ZWNTdGF0
ZSogZXhlY0NhbGxlZSwgQ2FsbExpCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2FjaGUg
dGhlc2Uga2luZHMgb2YgY2FsbHMuIFRoZXkgY2FuIGJlIGNvbW1vbiBhbmQgY3VycmVudGx5IHRo
ZXkgYXJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZS4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDQ1OAotICAgICAgICByZXR1cm4gaGFuZGxlSG9z
dENhbGwoZXhlY0NhbGxlZSwgY2FsbGVlQXNWYWx1ZSwga2luZCk7CisgICAgICAgIHJldHVybiBo
YW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBjYWxsZWVBc1ZhbHVlLCBjYWxsTGlua0luZm8pOwog
ICAgIH0KIAogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2Fs
bGVlQXNGdW5jdGlvbkNlbGwpOwpAQCAtNzg0LDE3ICs3OTYsMjEgQEAgU2xvd1BhdGhSZXR1cm5U
eXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVl
LCBDYWxsTGkKIAogICAgICAgICBpZiAoIWlzQ2FsbChraW5kKSAmJiBmdW5jdGlvbkV4ZWN1dGFi
bGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dF
eGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7
Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHZtLT5nZXRDVElTdHViKHRocm93RXhj
ZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNz
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDApKTsKKyAgICAgICAgICAgIHJldHVybiBlbmNv
ZGVSZXN1bHQoCisgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25G
cm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKKyAg
ICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+
cHJlcGFyZUZvckV4ZWN1dGlvbihleGVjQ2FsbGVlLCBjYWxsZWUsIHNjb3BlLCBraW5kKTsKICAg
ICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQodm0tPmdldENU
SVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMCkpOworICAgICAgICAg
ICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKKyAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0
aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxl
QWRkcmVzcygpLAorICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBU
aGVGcmFtZSkpOwogICAgICAgICB9CiAgICAgICAgIGNvZGVCbG9jayA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+Y29kZUJsb2NrRm9yKGtpbmQpOwogICAgICAgICBBcml0eUNoZWNrTW9kZSBhcml0eTsK
LSAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBz
dGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSB8fCBDYWxsTGlu
a0luZm86OmlzVmFyYXJnc0NhbGxUeXBlKGNhbGxMaW5rSW5mby0+Y2FsbFR5cGUoKSkpCisgICAg
ICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZv
LT5pc1ZhcmFyZ3MoKSkKICAgICAgICAgICAgIGFyaXR5ID0gTXVzdENoZWNrQXJpdHk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGFyaXR5ID0gQXJpdHlDaGVja05vdFJlcXVpcmVkOwpAQCAt
ODA1LDcgKzgyMSw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkxpbmtDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ2FsbExpCiAgICAgZWxzZQogICAgICAg
ICBsaW5rRm9yKGV4ZWNDYWxsZWUsICpjYWxsTGlua0luZm8sIGNvZGVCbG9jaywgY2FsbGVlLCBj
b2RlUHRyKTsKICAgICAKLSAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGNvZGVQdHIuZXhlY3V0YWJs
ZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMSkpOworICAgIHJldHVybiBlbmNv
ZGVSZXN1bHQoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PHZv
aWQqPihjYWxsTGlua0luZm8tPmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWwgPyBSZXVzZVRo
ZUZyYW1lIDogS2VlcFRoZUZyYW1lKSk7CiB9CiAKIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUg
dmlydHVhbEZvcldpdGhGdW5jdGlvbigKQEAgLTgxOSw3ICs4MzUsNyBAQCBpbmxpbmUgU2xvd1Bh
dGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oCiAgICAgSlNWYWx1ZSBjYWxsZWVB
c1ZhbHVlID0gZXhlY0NhbGxlZS0+Y2FsbGVlQXNWYWx1ZSgpOwogICAgIGNhbGxlZUFzRnVuY3Rp
b25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhbGxlZUFzRnVuY3Rpb25DZWxsKSkKLSAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4
ZWNDYWxsZWUsIGNhbGxlZUFzVmFsdWUsIGtpbmQpOworICAgICAgICByZXR1cm4gaGFuZGxlSG9z
dENhbGwoZXhlY0NhbGxlZSwgY2FsbGVlQXNWYWx1ZSwgY2FsbExpbmtJbmZvKTsKICAgICAKICAg
ICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVlQXNGdW5j
dGlvbkNlbGwpOwogICAgIEpTU2NvcGUqIHNjb3BlID0gZnVuY3Rpb24tPnNjb3BlVW5jaGVja2Vk
KCk7CkBAIC04MjksMTggKzg0NSwyMiBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1
YWxGb3JXaXRoRnVuY3Rpb24oCiAKICAgICAgICAgaWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rp
b25FeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgICAgICBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMs
IGZ1bmN0aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHZtLT5nZXRDVElT
dHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDApKTsKKyAgICAgICAgICAg
IHJldHVybiBlbmNvZGVSZXN1bHQoCisgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhy
b3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSwKKyAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhl
RnJhbWUpKTsKICAgICAgICAgfQogCiAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9u
RXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbihleGVjQ2FsbGVlLCBmdW5jdGlvbiwgc2Nv
cGUsIGtpbmQpOwogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJl
c3VsdCh2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0
b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PHZvaWQqPigw
KSk7CisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAorICAgICAgICAgICAgICAgIHZt
LT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdChleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKAogICAgICAgICAqdm0sIGtpbmQs
IE11c3RDaGVja0FyaXR5LCBjYWxsTGlua0luZm8tPnJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSgp
KS5leGVjdXRhYmxlQWRkcmVzcygpLAotICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPigx
KSk7CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5mby0+Y2FsbE1v
ZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/IFJldXNlVGhlRnJhbWUgOiBLZWVwVGhlRnJhbWUpKTsK
IH0KIAogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua1BvbHlt
b3JwaGljQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJ
bmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggY2Y3ZDNmZDMxNGU1
OWVkM2E0M2I0YTRhNzA3NjZjYjY5NmMzZWZkOC4uMTZhZDExMzM4NGJmZjYyMjRhYTFlZjAzMDlm
OWFiNWQzNGRjMmNmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC0x
NzU3LDcgKzE3NTcsNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIC8vIElmIHdlIGNhbm5vdCBoYW5kbGUgYSBjYWxsZWUsIGFzc3VtZSB0aGF0
IGl0J3MgYmV0dGVyIGZvciB0aGlzIHdob2xlIHRoaW5nIHRvIGJlIGEKICAgICAgICAgICAgIC8v
IHZpcnR1YWwgY2FsbC4KLSAgICAgICAgICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSkgfHwgQ2FsbExpbmtJbmZvOjppc1ZhcmFyZ3NDYWxsVHlwZShjYWxsTGlua0luZm8uY2FsbFR5
cGUoKSkpIHsKKyAgICAgICAgICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwg
Y2FsbExpbmtJbmZvLmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAgICAgbGlua1ZpcnR1YWxG
b3IoZXhlYywgY2FsbExpbmtJbmZvKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CkBAIC0xODgwLDcgKzE4ODAsNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksCiAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGZhc3RDb3VudHNCYXNlR1BSLCBjYXNlSW5kZXgg
KiBzaXplb2YodWludDMyX3QpKSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKENhbGxMaW5rSW5m
bzo6aXNUYWlsQ2FsbFR5cGUoY2FsbExpbmtJbmZvLmNhbGxUeXBlKCkpKSB7CisgICAgICAgIGlm
IChjYWxsTGlua0luZm8uaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgICAgICBzdHViSml0LnByZXBh
cmVGb3JUYWlsQ2FsbFNsb3coKTsKICAgICAgICAgICAgIGNhbGxzW2Nhc2VJbmRleF0uY2FsbCA9
IHN0dWJKaXQubmVhclRhaWxDYWxsKCk7CiAgICAgICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDUyYjU1OWIwYWMwODE4ZWU3
MjljZGU0YzlhMzFmNjkyYTUzYjE1MTUuLjYyZWE0Y2VmZTI2ZGZmNDM1YTk3OWIzZjhmYTA2ZWQx
MmFhMzBhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAKQEAgLTk5LDYgKzk5LDcgQEAgc3RhdGljIHZvaWQgc2xvd1BhdGhGb3IoCiAgICAgZW1p
dFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgIGpp
dC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogCisgICAgUkVMRUFTRV9BU1NFUlQocmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSA9PSByZWludGVycHJldF9jYXN0PHZvaWQqPigw
KSk7CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvTm90VHJhc2ggPSBqaXQuYnJhbmNoVGVzdFB0
cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7CiAKICAgICBq
aXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86Om5vblByZXNlcnZlZE5v
blJldHVybkdQUik7CkBAIC0xOTEsNyArMTkyLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZp
cnR1YWxUaHVua0ZvcihWTSogdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogICAgIAog
ICAgIC8vIE1ha2UgYSB0YWlsIGNhbGwuIFRoaXMgd2lsbCByZXR1cm4gYmFjayB0byBKSVQgY29k
ZS4KICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUNCk7Ci0gICAg
aWYgKENhbGxMaW5rSW5mbzo6aXNUYWlsQ2FsbFR5cGUoY2FsbExpbmtJbmZvLmNhbGxUeXBlKCkp
KSB7CisgICAgaWYgKGNhbGxMaW5rSW5mby5pc1RhaWxDYWxsKCkpIHsKICAgICAgICAgaml0LnBy
ZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIGpp
dC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KEdQUkluZm86OnJlZ1Q0KTsKICAgICB9CkBAIC0yMDUs
OSArMjA2LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVua0ZvcihWTSogdm0s
IENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
KnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUoCiAg
ICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAoIlZpcnR1YWwgJXMlcyBzbG93IHBhdGggdGh1
bmsgYXQgQ29kZVB0ciglcCkiLAotICAgICAgICBjYWxsTGlua0luZm8uc3BlY2lhbGl6YXRpb25L
aW5kKCkgPT0gQ29kZUZvckNhbGwgPyAiY2FsbCIgOiAiY29uc3RydWN0IiwKLSAgICAgICAgY2Fs
bExpbmtJbmZvLnJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSgpID09IE11c3RQcmVzZXJ2ZVJlZ2lz
dGVycyA/ICIgdGhhdCBwcmVzZXJ2ZXMgcmVnaXN0ZXJzIiA6ICIiLAorICAgICAgICAoIlZpcnR1
YWwgJXMgc2xvdyBwYXRoIHRodW5rIGF0IENvZGVQdHIoJXApIiwKKyAgICAgICAgY2FsbExpbmtJ
bmZvLmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlJlZ3VsYXIgPyAiY2FsbCIgOiBjYWxsTGlua0lu
Zm8uY2FsbE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/ICJ0YWlsIGNhbGwiIDogImNvbnN0cnVj
dCIsCiAgICAgICAgIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24oKS5kYXRhTG9jYXRp
b24oKSkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257887</attachid>
            <date>2015-07-30 17:38:24 -0700</date>
            <delta_ts>2015-07-30 17:40:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147475-20150730173823.patch</filename>
            <type>text/plain</type>
            <size>32825</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ODFiOTUxZmE2MTdjZjQyNGY1NTAwODA2OGIyMTczZGU2Zjk0ZTJlLi4xOTJlZjY4YzhiODE1ZmRh
ZjU4ZmRkYmUyOWUwMWUzMmM4YmUwN2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0OCBAQAogMjAxNS0wNy0zMCAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBh
cHBsZS5jb20+CiAKKyAgICAgICAganNjLXRhaWxjYWxsOiBBZGQgZW51bXMgZm9yIHR5cGUtc2Fm
ZXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc0
NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IGFkZHM6CisKKyAgICAgICAgIC0gQSBDYWxsTW9kZSBlbnVtIHRvIGRpc3Rpbmd1aXNoIHRhaWwg
Y2FsbHMgZnJvbSByZWd1bGFyIGNhbGxzIGZyb20gY29uc3RydWN0CisKKyAgICAgICAgIC0gQSBG
cmFtZUFjdGlvbiBlbnVtIHRvIGluZGljYXRlIHdoZXRoZXIgdG8ga2VlcCBvciByZXVzZSB0aGUg
Y2FsbAorICAgICAgICAgICBmcmFtZS4gSXQgYWxzbyBjaGFuZ2VzIEpJVE9wZXJhdGlvbnMuaCB0
byBjb3JyZWN0bHkgdXNlIHRoaXMgdG8gdGVsbAorICAgICAgICAgICBzbG93UGF0aEZvciB0byAq
bm90KiB0cmFzaCB0aGUgZnJhbWUgb24gYSByZWd1bGFyIGNhbGwgKGJlZm9yZQorICAgICAgICAg
ICByMTg3NTA1LCB0aGlzIHdhcyBzdGF0aWNhbGx5IGtub3duIGluIHNsb3dQYXRoRm9yKS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hOZWFyQ2FsbCk6CisgICAgICAgICogYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5o
OgorICAgICAgICAoSlNDOjpDb2RlTG9jYXRpb25OZWFyQ2FsbDo6Q29kZUxvY2F0aW9uTmVhckNh
bGwpOgorICAgICAgICAoSlNDOjpDb2RlTG9jYXRpb25OZWFyQ2FsbDo6Y2FsbE1vZGUpOgorICAg
ICAgICAoSlNDOjpDb2RlTG9jYXRpb25Db21tb246Om5lYXJDYWxsQXRPZmZzZXQpOgorICAgICAg
ICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6Omxv
Y2F0aW9uT2ZOZWFyQ2FsbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmg6Cisg
ICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y2FsbE1vZGVGb3IpOgorICAgICAgICAoSlNDOjpD
YWxsTGlua0luZm86OmNhbGxNb2RlKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjppc1Rh
aWxDYWxsKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjppc1ZhcmFyZ3MpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NhbGxNb2RlLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OnByaW50SW50
ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxNb2RlLmg6IEFkZGVkLgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAg
ICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVy
YXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpzbG93UGF0aEZvcik6CisgICAgICAgIChKU0M6OnZp
cnR1YWxUaHVua0Zvcik6CisKKzIwMTUtMDctMzAgIEJhc2lsZSBDbGVtZW50ICA8YmFzaWxlX2Ns
ZW1lbnRAYXBwbGUuY29tPgorCiAgICAgICAgIGpzYy10YWlsY2FsbDogRG9uJ3Qgd2FzdGUgc3Rh
Y2sgc3BhY2Ugd2hlbiBhcml0eSBmaXh1cCB3YXMgcGVyZm9ybWVkCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc0NDcKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGFkOTcxYjA0NjZhOTA2MDRjNDYzODI5NmFlNTJkMGI2NjFj
NTk1ZWQuLjU2YzYyNTdjNzJmNDI4ZmI1MTg1ODcxNWQwYjE5MzIyYjQ1YTM1M2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTc2LDYgKzc2LDcgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9DYWxsRWRnZS5jcHAKICAgICBieXRlY29kZS9D
YWxsTGlua0luZm8uY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCisgICAgYnl0
ZWNvZGUvQ2FsbE1vZGUuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCiAgICAgYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAogICAgIGJ5dGVjb2RlL0NvZGVCbG9ja0hhc2guY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCBjZDEzZmIwMWM2ZmRhMzQ1MThl
YjQ0ODUzYTdkYmNmNjc1NDA4NzJjLi4wNjcyMDM3YzE5ODViODU2YTM2MGY2OGE4YTA0MDA0MTZm
NTY3ODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTMxNyw2
ICszMTcsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbEVkZ2Uu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbExpbmtJbmZv
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxMaW5rU3Rh
dHVzLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxNb2Rl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxWYXJpYW50
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENvZGVCbG9jay5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDb2RlQmxvY2tIYXNo
LmNwcCIgLz4KQEAgLTk2Nyw2ICs5NjgsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQ2FsbEVkZ2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVj
b2RlXENhbGxMaW5rSW5mby5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNv
ZGVcQ2FsbExpbmtTdGF0dXMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVj
b2RlXENhbGxNb2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxD
YWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbFZhcmlhbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJ5dGVjb2RlXENvZGVCbG9jay5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGNhMDk2NGViZGJkMzJiYzQwZjE4YmVj
NzA1MWM5YWMzYmQ5OWIzZDAuLjVhMzBkODQ0NDU3ZWM3MzAxMGI4YWVkYjg0NGJlNWFmYTM1ZmEw
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMKQEAgLTE1Niw2ICsxNTYsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNv
ZGVcQ2FsbExpbmtTdGF0dXMuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENh
bGxNb2RlLmNwcCI+CisgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDb2RlQmxvY2suY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAg
LTE5MzUsNiArMTkzOCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxD
YWxsTGlua1N0YXR1cy5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxNb2Rl
LmgiPgorICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQuaCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjN2RkNzAyYzM0ZmIz
OGUxZDQ0NmYyYzgxZTMzOWUyMzhmN2VkNjcuLjM0ZWI0M2I1Y2U2YmFiNTRmMTk3MTExM2EwMTk4
NjkxMDI4YjY0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NjIsNiArOTYy
LDggQEAKIAkJNURCQjE1MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRlc3RhcGkuanMgaW4gQ29weSBT
dXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ4NTc3
NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLzsgfTsKIAkJNURCQjE1MjUxMzFEMEJE
NzAwNTZBRDM2IC8qIG1pbmlkb20uanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDEyMTEwRDBBNDg3ODg3MDA0ODAyNTUgLyogbWlu
aWRvbS5qcyAqLzsgfTsKIAkJNURFNkU1QjMwRTE3MjhFQzAwMTgwNDA3IC8qIGNyZWF0ZV9oYXNo
X3RhYmxlIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5
MkE4NTQwMjU1NTk3RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTYyNzY3MzIzMUI2ODBDMUUwMEZEOUYyRSAvKiBD
YWxsTW9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2Mjc2NzMyMTFCNjgwQzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuY3BwICovOyB9OworCQk2Mjc2
NzMyNDFCNjgwQzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYyNzY3MzIyMUI2ODBDMUUwMEZEOUYyRSAvKiBDYWxs
TW9kZS5oICovOyB9OwogCQk2MkQyRDM4RjFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJl
RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
MkQyRDM4RDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5jcHAgKi87IH07CiAJ
CTYyRDJEMzkwMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MkQyRDM4RTFBREYxMDNGMDAw
MjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTYyRjJBQTM3MUIwQkVERTMwMDYxMEM3QSAvKiBERkdMYXp5
Tm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
MkE5QTI5RTFCMEJFRDQ4MDBCRDU0Q0EgLyogREZHTGF6eU5vZGUuY3BwICovOyB9OwpAQCAtMjY3
Niw2ICsyNjc4LDggQEAKIAkJNURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZp
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBKU0MueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVERERGNDQ2MTRGRUU3MjIwMEI0RkI0RCAvKiBMTEludERlc2lyZWRPZmZzZXRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RGVzaXJlZE9mZnNldHMuaDsgcGF0
aCA9IExMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmg7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCTVERTNEMEY0MEREOERERkIwMDQ2ODcxNCAvKiBXZWJLaXRB
dmFpbGFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0QXZh
aWxhYmlsaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYyNzY3MzIxMUI2ODBD
MUUwMEZEOUYyRSAvKiBDYWxsTW9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDYWxsTW9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYyNzY3
MzIyMUI2ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYWxsTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MkE5
QTI5RTFCMEJFRDQ4MDBCRDU0Q0EgLyogREZHTGF6eU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHTGF6eU5vZGUuY3BwOyBwYXRoID0gZGZnL0RGR0xhenlO
b2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjJBOUEyOUYxQjBCRUQ0ODAw
QkQ1NENBIC8qIERGR0xhenlOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0xhenlOb2RlLmg7IHBhdGggPSBkZmcvREZHTGF6eU5vZGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25SYXJl
RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MjU3LDYgKzUyNjEsOCBA
QAogCQkJCTBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLywKIAkJ
CQkwRjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovLAogCQkJ
CTBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oICovLAorCQkJCTYy
NzY3MzIxMUI2ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9kZS5jcHAgKi8sCisJCQkJNjI3NjczMjIx
QjY4MEMxRTAwRkQ5RjJFIC8qIENhbGxNb2RlLmggKi8sCiAJCQkJMEYwQjgzQjgxNEJDRjk1QjAw
ODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8sCiAJCQkJMEYz
QjdFMjQxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCAqLywKIAkJCQkwRjNCN0Uy
NTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCAqLywKQEAgLTUyNzgsNiArNTI4NCw4
IEBACiAJCQkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLywKIAkJ
CQkwRkM3MTJEQzE3Q0Q4Nzc4MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmNwcCAqLywKIAkJCQkwRkM3MTJERDE3Q0Q4Nzc4MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrLmggKi8sCisJCQkJRkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVy
cmVkU291cmNlRHVtcC5jcHAgKi8sCisJCQkJRkU1MDY4NjQxQUUyNDYzOTAwMDlEQUI3IC8qIERl
ZmVycmVkU291cmNlRHVtcC5oICovLAogCQkJCTBGQkMwQUU0MTQ5NkM3QzEwMEQ0RkJERCAvKiBE
RkdFeGl0UHJvZmlsZS5jcHAgKi8sCiAJCQkJMEZCQzBBRTUxNDk2QzdDMTAwRDRGQkREIC8qIERG
R0V4aXRQcm9maWxlLmggKi8sCiAJCQkJOTY5QTA3OTIwRUQxRDNBRTAwRjFGNjgxIC8qIEV2YWxD
b2RlQ2FjaGUuaCAqLywKQEAgLTUzMjUsOCArNTMzMyw2IEBACiAJCQkJMEZGNjBBQzAxNjc0MEY4
MTAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCAqLywKIAkJCQkxNDI5RDg4MzBFRDIxQzNE
MDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmNwcCAqLywKIAkJCQkxNDI5RDg4NDBFRDIxQzNEMDBC
ODk2MTkgLyogU2FtcGxpbmdUb29sLmggKi8sCi0JCQkJRkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3
IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgKi8sCi0JCQkJRkU1MDY4NjQxQUUyNDYzOTAwMDlE
QUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5oICovLAogCQkJCTBGNTU0MUFGMTYxM0MxRkIwMENF
M0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAgKi8sCiAJCQkJMEY1NTQxQjAxNjEzQzFGQjAwQ0Uz
RTI1IC8qIFNwZWNpYWxQb2ludGVyLmggKi8sCiAJCQkJMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0
IC8qIFNwZWN1bGF0ZWRUeXBlLmNwcCAqLywKQEAgLTU4NjUsNiArNTg3MSw3IEBACiAJCQkJODZF
QzlERDAxMzI4REY4MjAwMkIyQUQ3IC8qIERGR09wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3RDg5Q0ZFMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNp
c1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkU1NzE0MURBRjEwMDAxNzlDOTQgLyog
REZHT1NSRW50cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTYyNzY3MzI0MUI2ODBDMUUwMEZEOUYy
RSAvKiBDYWxsTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMjYxN0Q1MUY1NzAwQ0Ey
QzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2MkYyQUEzODFCMEJFREUzMDA2MTBDN0EgLyogREZHTGF6eU5vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTc1NjcsNiArNzU3NCw3IEBACiAJCQkJMEYyRDRERUYxOTgzMkREMzAwN0Q0QjE5
IC8qIFR5cGVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzNUYyNEQxMkU2NzY1QjAwMkI1
NTUzIC8qIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNE
RTNCNDMwRTZDODMyRDAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk2Mjc2NzMyMzFCNjgwQzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0U0RUU3MEYwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUMyRjBGMkQxMTZCQUVFRTkwMDE4N0MxOSAvKiBTdHJ1Y3R1cmVSYXJl
RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MDEzQ0E4QjFCNDkxQTk0MDBDQUU2MTMgLyog
SlNKb2IuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCmluZGV4IDE1OGY2MDAxNmRj
NzU5YzAyZDU3YTk4NzZlMDRkN2NiNmIyODZjYmQuLjY5MDE0MzRlYjJjYTM0MWMwZmQ1MzhjOTBl
N2RiNzI1ZjNjZmYyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCkBAIC0xMTU0LDEwICsxMTU0LDEwIEBA
IHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCByZXBhdGNoTmVhckNhbGwoQ29kZUxvY2F0aW9u
TmVhckNhbGwgbmVhckNhbGwsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsK
ICAgICAgICAgc3dpdGNoIChuZWFyQ2FsbC5jYWxsTW9kZSgpKSB7Ci0gICAgICAgIGNhc2UgQ2Fs
bE1vZGU6OlRhaWw6CisgICAgICAgIGNhc2UgTmVhckNhbGxNb2RlOjpUYWlsOgogICAgICAgICAg
ICAgQXNzZW1ibGVyVHlwZTo6cmVsaW5rSnVtcChuZWFyQ2FsbC5kYXRhTG9jYXRpb24oKSwgZGVz
dGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGNhc2UgQ2FsbE1vZGU6OlJlZ3VsYXI6CisgICAgICAgIGNhc2UgTmVhckNhbGxNb2RlOjpS
ZWd1bGFyOgogICAgICAgICAgICAgQXNzZW1ibGVyVHlwZTo6cmVsaW5rQ2FsbChuZWFyQ2FsbC5k
YXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0NvZGVMb2NhdGlvbi5oCmluZGV4IDBkYzI0ZGU0OWQ0MmQ4YTkxM2QwZTk0MzE2YTA1MjYz
NmM1ZjE0NDYuLmUzODE3YjAxOTM1YTRjNzRhYTk0M2Q4NjZiMzcxNGNmMWYyN2U3MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaApAQCAtMzIs
NyArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBDYWxsTW9kZSB7IFJlZ3VsYXIs
IFRhaWwgfTsKK2VudW0gTmVhckNhbGxNb2RlIHsgUmVndWxhciwgVGFpbCB9OwogCiBjbGFzcyBD
b2RlTG9jYXRpb25JbnN0cnVjdGlvbjsKIGNsYXNzIENvZGVMb2NhdGlvbkxhYmVsOwpAQCAtNjEs
NyArNjEsNyBAQCBwdWJsaWM6CiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWxBdE9mZnNldChp
bnQgb2Zmc2V0KTsKICAgICBDb2RlTG9jYXRpb25KdW1wIGp1bXBBdE9mZnNldChpbnQgb2Zmc2V0
KTsKICAgICBDb2RlTG9jYXRpb25DYWxsIGNhbGxBdE9mZnNldChpbnQgb2Zmc2V0KTsKLSAgICBD
b2RlTG9jYXRpb25OZWFyQ2FsbCBuZWFyQ2FsbEF0T2Zmc2V0KGludCBvZmZzZXQsIENhbGxNb2Rl
KTsKKyAgICBDb2RlTG9jYXRpb25OZWFyQ2FsbCBuZWFyQ2FsbEF0T2Zmc2V0KGludCBvZmZzZXQs
IE5lYXJDYWxsTW9kZSk7CiAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGRhdGFMYWJlbFB0
ckF0T2Zmc2V0KGludCBvZmZzZXQpOwogICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIGRhdGFM
YWJlbDMyQXRPZmZzZXQoaW50IG9mZnNldCk7CiAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29t
cGFjdCBkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoaW50IG9mZnNldCk7CkBAIC0xMTcsMTMgKzEx
NywxMyBAQCBwdWJsaWM6CiBjbGFzcyBDb2RlTG9jYXRpb25OZWFyQ2FsbCA6IHB1YmxpYyBDb2Rl
TG9jYXRpb25Db21tb24gewogcHVibGljOgogICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsKCkge30K
LSAgICBleHBsaWNpdCBDb2RlTG9jYXRpb25OZWFyQ2FsbChNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
bG9jYXRpb24sIENhbGxNb2RlIGNhbGxNb2RlKQorICAgIGV4cGxpY2l0IENvZGVMb2NhdGlvbk5l
YXJDYWxsKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsb2NhdGlvbiwgTmVhckNhbGxNb2RlIGNhbGxN
b2RlKQogICAgICAgICA6IENvZGVMb2NhdGlvbkNvbW1vbihsb2NhdGlvbiksIG1fY2FsbE1vZGUo
Y2FsbE1vZGUpIHt9Ci0gICAgZXhwbGljaXQgQ29kZUxvY2F0aW9uTmVhckNhbGwodm9pZCogbG9j
YXRpb24sIENhbGxNb2RlIGNhbGxNb2RlKQorICAgIGV4cGxpY2l0IENvZGVMb2NhdGlvbk5lYXJD
YWxsKHZvaWQqIGxvY2F0aW9uLCBOZWFyQ2FsbE1vZGUgY2FsbE1vZGUpCiAgICAgICAgIDogQ29k
ZUxvY2F0aW9uQ29tbW9uKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihsb2NhdGlvbikpLCBtX2NhbGxN
b2RlKGNhbGxNb2RlKSB7fQotICAgIENhbGxNb2RlIGNhbGxNb2RlKCkgeyByZXR1cm4gbV9jYWxs
TW9kZTsgfQorICAgIE5lYXJDYWxsTW9kZSBjYWxsTW9kZSgpIHsgcmV0dXJuIG1fY2FsbE1vZGU7
IH0KIHByaXZhdGU6Ci0gICAgQ2FsbE1vZGUgbV9jYWxsTW9kZSA9IENhbGxNb2RlOjpSZWd1bGFy
OworICAgIE5lYXJDYWxsTW9kZSBtX2NhbGxNb2RlID0gTmVhckNhbGxNb2RlOjpSZWd1bGFyOwog
fTsKIAogY2xhc3MgQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgOiBwdWJsaWMgQ29kZUxvY2F0aW9u
Q29tbW9uIHsKQEAgLTE4Niw3ICsxODYsNyBAQCBpbmxpbmUgQ29kZUxvY2F0aW9uQ2FsbCBDb2Rl
TG9jYXRpb25Db21tb246OmNhbGxBdE9mZnNldChpbnQgb2Zmc2V0KQogICAgIHJldHVybiBDb2Rl
TG9jYXRpb25DYWxsKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9m
ZnNldCk7CiB9CiAKLWlubGluZSBDb2RlTG9jYXRpb25OZWFyQ2FsbCBDb2RlTG9jYXRpb25Db21t
b246Om5lYXJDYWxsQXRPZmZzZXQoaW50IG9mZnNldCwgQ2FsbE1vZGUgY2FsbE1vZGUpCitpbmxp
bmUgQ29kZUxvY2F0aW9uTmVhckNhbGwgQ29kZUxvY2F0aW9uQ29tbW9uOjpuZWFyQ2FsbEF0T2Zm
c2V0KGludCBvZmZzZXQsIE5lYXJDYWxsTW9kZSBjYWxsTW9kZSkKIHsKICAgICBBU1NFUlRfVkFM
SURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKICAgICByZXR1cm4gQ29kZUxvY2F0aW9uTmVhckNhbGwo
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0LCBjYWxsTW9k
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCmluZGV4
IDljNDFiOTVkNTE1NWM0ZDZjOTI0ODcxZGI5NGZhMTdmZjE4ZWNjMzguLmIzNGE2ZjE5ZmY0NDEx
MjhiODI1MTMyODI1MzQyMTZlMjYwMjVmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTGlua0J1ZmZlci5oCkBAIC0xODEsNyArMTgxLDcgQEAgcHVibGljOgogICAgICAg
ICBBU1NFUlQoY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TGlua2FibGUpKTsKICAgICAgICAgQVNTRVJU
KGNhbGwuaXNGbGFnU2V0KENhbGw6Ok5lYXIpKTsKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlv
bk5lYXJDYWxsKE1hY3JvQXNzZW1ibGVyOjpnZXRMaW5rZXJBZGRyZXNzKGNvZGUoKSwgYXBwbHlP
ZmZzZXQoY2FsbC5tX2xhYmVsKSksCi0gICAgICAgICAgICBjYWxsLmlzRmxhZ1NldChDYWxsOjpU
YWlsKSA/IENhbGxNb2RlOjpUYWlsIDogQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAgICAgICAgICAg
Y2FsbC5pc0ZsYWdTZXQoQ2FsbDo6VGFpbCkgPyBOZWFyQ2FsbE1vZGU6OlRhaWwgOiBOZWFyQ2Fs
bE1vZGU6OlJlZ3VsYXIpOwogICAgIH0KIAogICAgIENvZGVMb2NhdGlvbkxhYmVsIGxvY2F0aW9u
T2YoUGF0Y2hhYmxlSnVtcCBqdW1wKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5oCmluZGV4IGU5MWYwN2ZkNmRjMGUxYjY0OWUzZWQ1NGQ2OTc0ZTdjNTdk
OWQzOTYuLjYyMTI0MjVlMTY5ZThhODEwMjlkMzBiOWI1OWFmOGVmNGYzZDQyZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNpZm5kZWYgQ2FsbExpbmtJbmZvX2gKICNkZWZpbmUgQ2FsbExpbmtJbmZvX2gKIAor
I2luY2x1ZGUgIkNhbGxNb2RlLmgiCiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCiAjaW5jbHVk
ZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5o
IgpAQCAtNzMsMTggKzc0LDYgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgc3Rh
dGljIGJvb2wgaXNUYWlsQ2FsbFR5cGUoQ2FsbFR5cGUgY2FsbFR5cGUpCi0gICAgewotICAgICAg
ICBzd2l0Y2ggKGNhbGxUeXBlKSB7Ci0gICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAgICAgIGNh
c2UgVGFpbENhbGxWYXJhcmdzOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICAKICAgICBDYWxsTGlua0luZm8oKQogICAgICAgICA6IG1fcmVnaXN0ZXJQcmVzZXJ2YXRpb25N
b2RlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVk
KSkKICAgICAgICAgLCBtX2hhc1NlZW5TaG91bGRSZXBhdGNoKGZhbHNlKQpAQCAtMTEzLDYgKzEw
MiwzNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzcGVjaWFsaXphdGlvbktpbmRGb3Ioc3Rh
dGljX2Nhc3Q8Q2FsbFR5cGU+KG1fY2FsbFR5cGUpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgQ2Fs
bE1vZGUgY2FsbE1vZGVGb3IoQ2FsbFR5cGUgY2FsbFR5cGUpCisgICAgeworICAgICAgICBzd2l0
Y2ggKGNhbGxUeXBlKSB7CisgICAgICAgIGNhc2UgQ2FsbDoKKyAgICAgICAgY2FzZSBDYWxsVmFy
YXJnczoKKyAgICAgICAgICAgIHJldHVybiBDYWxsTW9kZTo6UmVndWxhcjsKKyAgICAgICAgY2Fz
ZSBUYWlsQ2FsbDoKKyAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6CisgICAgICAgICAgICBy
ZXR1cm4gQ2FsbE1vZGU6OlRhaWw7CisgICAgICAgIGNhc2UgQ29uc3RydWN0OgorICAgICAgICBj
YXNlIENvbnN0cnVjdFZhcmFyZ3M6CisgICAgICAgICAgICByZXR1cm4gQ2FsbE1vZGU6OkNvbnN0
cnVjdDsKKyAgICAgICAgY2FzZSBOb25lOgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBDYWxsTW9kZSBjYWxsTW9kZSgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gY2FsbE1vZGVGb3Ioc3RhdGljX2Nhc3Q8Q2FsbFR5
cGU+KG1fY2FsbFR5cGUpKTsKKyAgICB9CisKKyAgICBib29sIGlzVGFpbENhbGwoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWw7CisgICAg
fQorCisgICAgYm9vbCBpc1ZhcmFyZ3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlz
VmFyYXJnc0NhbGxUeXBlKHN0YXRpY19jYXN0PENhbGxUeXBlPihtX2NhbGxUeXBlKSk7CisgICAg
fQorCiAgICAgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlIHJlZ2lzdGVyUHJlc2VydmF0aW9uTW9k
ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVnaXN0ZXJQcmVz
ZXJ2YXRpb25Nb2RlPihtX3JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbE1vZGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxNb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzU3YjE4NTA2Nzk2
OGE2YTFmM2QwOTllZDIzOWNiNjE3M2ZjMjZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxNb2RlLmNwcApAQCAtMCwwICsxLDQ5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJDYWxsTW9kZS5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgSlNDOjpDYWxsTW9kZSBjYWxsTW9kZSkKK3sKKyAgICBzd2l0Y2ggKGNhbGxNb2RlKSB7
CisgICAgY2FzZSBKU0M6OkNhbGxNb2RlOjpUYWlsOgorICAgICAgICBvdXQucHJpbnQoIlRhaWxD
YWxsIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6Q2FsbE1vZGU6OlJlZ3VsYXI6
CisgICAgICAgIG91dC5wcmludCgiQ2FsbCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBK
U0M6OkNhbGxNb2RlOjpDb25zdHJ1Y3Q6CisgICAgICAgIG91dC5wcmludCgiQ29uc3RydWN0Iik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbE1vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTW9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjYmI2MTMwYzQ4Zjc4ODI0ZmIwZWE5NDYxMzgwZGRm
ZDJjYWYxMjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbE1vZGUuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbE1vZGVfaAorI2RlZmluZSBDYWxsTW9k
ZV9oCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNzIENhbGxNb2RlIHsgUmVndWxhciwg
VGFpbCwgQ29uc3RydWN0IH07CisKK2VudW0gRnJhbWVBY3Rpb24geyBLZWVwVGhlRnJhbWUgPSAw
LCBSZXVzZVRoZUZyYW1lIH07CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RG
IHsKKworY2xhc3MgUHJpbnRTdHJlYW07Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
LCBKU0M6OkNhbGxNb2RlKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBDYWxs
TW9kZV9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmlu
ZGV4IDcwOTU2MGYyZGQzZjI1ODU2NjI5NzNmMjNmMjJjMDk1NWQ2ZjM0NzAuLjY1YTY5NzVhYTRm
NGZlZjY3ZThhMWI0NzZhYTVmNGMzNGEzOGQ3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNzA1LDE0ICs3MDUsMTQgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChFeGVjU3RhdGUqIGV4ZWMsIEV4ZWNT
dGF0ZSogZXhlY0MKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0
YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2Fs
bGVlLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorc3RhdGlj
IFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUs
IEpTVmFsdWUgY2FsbGVlLCBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykKIHsKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwogCiAgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOwogCi0gICAgaWYg
KGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICBpZiAoY2FsbExpbmtJbmZvLT5zcGVjaWFsaXph
dGlvbktpbmQoKSA9PSBDb2RlRm9yQ2FsbCkgewogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
ICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShjYWxsZWUsIGNhbGxEYXRh
KTsKICAgICAKQEAgLTcyMiwxOCArNzIyLDI1IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUg
aGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwKICAg
ICAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWNDYWxsZWUpOwog
ICAgICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwogICAg
ICAgICAgICAgdm0tPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERh
dGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKLSAgICAgICAgICAgIGlmICh2bS0+ZXhj
ZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCh2bS0+Z2V0Q1RJ
U3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVj
dXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PHZvaWQqPigwKSk7CisgICAgICAgICAg
ICBpZiAodm0tPmV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJl
c3VsdCgKKyAgICAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25G
cm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKKyAg
ICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7
CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoYml0d2lz
ZV9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oMSkpOworICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKKyAgICAgICAgICAg
ICAgICBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLAorICAgICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5mby0+Y2FsbE1vZGUo
KSA9PSBDYWxsTW9kZTo6VGFpbCA/IFJldXNlVGhlRnJhbWUgOiBLZWVwVGhlRnJhbWUpKTsKICAg
ICAgICAgfQogICAgIAogICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKTsK
ICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RBRnVuY3Rp
b25FcnJvcihleGVjLCBjYWxsZWUpKTsKLSAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCh2bS0+
Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUo
KS5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PHZvaWQqPigwKSk7CisgICAg
ICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCisgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJv
d0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRk
cmVzcygpLAorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1l
KSk7CiAgICAgfQogCi0gICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAg
QVNTRVJUKGNhbGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5kKCkgPT0gQ29kZUZvckNvbnN0
cnVjdCk7CiAgICAgCiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwogICAgIENvbnN0
cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEoY2FsbGVlLCBjb25zdHJ1
Y3REYXRhKTsKQEAgLTc0NCwxNSArNzUxLDIwIEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUg
aGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwKICAg
ICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlY0NhbGxlZSk7CiAgICAg
ICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAgICAgICAgdm0t
Pmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOwotICAgICAgICBpZiAodm0tPmV4Y2VwdGlvbigpKQot
ICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCh2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2Vw
dGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
LCByZWludGVycHJldF9jYXN0PHZvaWQqPigwKSk7CisgICAgICAgIGlmICh2bS0+ZXhjZXB0aW9u
KCkpIHsKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCisgICAgICAgICAgICAgICAg
dm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5j
b2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKKyAgICAgICAgICAgICAgICByZWludGVycHJldF9j
YXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKKyAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBl
bmNvZGVSZXN1bHQoYml0d2lzZV9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMSkpOworICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0
KGJpdHdpc2VfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwogICAgIH0KICAgICAKICAgICBBU1NFUlQoY29u
c3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSk7CiAgICAgZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsK
LSAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJv
bUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KDApKTsKKyAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAorICAgICAg
ICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3Ip
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLAorICAgICAgICByZWludGVycHJldF9jYXN0PHZv
aWQqPihLZWVwVGhlRnJhbWUpKTsKIH0KIAogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTGlua0NhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbykKQEAgLTc2OCw3ICs3ODAsNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENhbGxM
aQogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNhY2hlIHRoZXNlIGtpbmRzIG9mIGNhbGxz
LiBUaGV5IGNhbiBiZSBjb21tb24gYW5kIGN1cnJlbnRseSB0aGV5IGFyZQogICAgICAgICAvLyBl
eHBlbnNpdmUuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDQ0NTgKLSAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIGNh
bGxlZUFzVmFsdWUsIGtpbmQpOworICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0Nh
bGxlZSwgY2FsbGVlQXNWYWx1ZSwgY2FsbExpbmtJbmZvKTsKICAgICB9CiAKICAgICBKU0Z1bmN0
aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsK
QEAgLTc4NCwxNyArNzk2LDIxIEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkxpbmtDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ2FsbExpCiAKICAgICAgICAg
aWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rpb25FeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlv
bigpKSB7CiAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOwotICAgICAgICAgICAgcmV0dXJu
IGVuY29kZVJlc3VsdCh2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1Bh
dGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0
PHZvaWQqPigwKSk7CisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAorICAgICAgICAg
ICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVy
YXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAgICAgIH0KIAogICAgICAgICBK
U09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb24o
ZXhlY0NhbGxlZSwgY2FsbGVlLCBzY29wZSwga2luZCk7CiAgICAgICAgIGlmIChlcnJvcikgewog
ICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7Ci0gICAg
ICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9u
RnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDApKTsKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1
bHQoCisgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2Fs
bFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKKyAgICAgICAg
ICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKICAgICAgICAg
fQogICAgICAgICBjb2RlQmxvY2sgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvZGVCbG9ja0Zvcihr
aW5kKTsKICAgICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7Ci0gICAgICAgIGlmIChleGVjQ2Fs
bGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihj
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgQ2FsbExpbmtJbmZvOjppc1ZhcmFyZ3NDYWxs
VHlwZShjYWxsTGlua0luZm8tPmNhbGxUeXBlKCkpKQorICAgICAgICBpZiAoZXhlY0NhbGxlZS0+
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCkpIHx8IGNhbGxMaW5rSW5mby0+aXNWYXJhcmdzKCkpCiAgICAg
ICAgICAgICBhcml0eSA9IE11c3RDaGVja0FyaXR5OwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBhcml0eSA9IEFyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKQEAgLTgwNSw3ICs4MjEsNyBAQCBTbG93
UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ2FsbChFeGVjU3RhdGUq
IGV4ZWNDYWxsZWUsIENhbGxMaQogICAgIGVsc2UKICAgICAgICAgbGlua0ZvcihleGVjQ2FsbGVl
LCAqY2FsbExpbmtJbmZvLCBjb2RlQmxvY2ssIGNhbGxlZSwgY29kZVB0cik7CiAgICAgCi0gICAg
cmV0dXJuIGVuY29kZVJlc3VsdChjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KDEpKTsKKyAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGNvZGVQdHIuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbExpbmtJbmZvLT5j
YWxsTW9kZSgpID09IENhbGxNb2RlOjpUYWlsID8gUmV1c2VUaGVGcmFtZSA6IEtlZXBUaGVGcmFt
ZSkpOwogfQogCiBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoRnVuY3Rp
b24oCkBAIC04MTksNyArODM1LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFs
Rm9yV2l0aEZ1bmN0aW9uKAogICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IGV4ZWNDYWxsZWUt
PmNhbGxlZUFzVmFsdWUoKTsKICAgICBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rp
b24oY2FsbGVlQXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYWxsZWVBc0Z1bmN0aW9uQ2Vs
bCkpCi0gICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBjYWxsZWVBc1Zh
bHVlLCBraW5kKTsKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIGNh
bGxlZUFzVmFsdWUsIGNhbGxMaW5rSW5mbyk7CiAgICAgCiAgICAgSlNGdW5jdGlvbiogZnVuY3Rp
b24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKICAgICBKU1Nj
b3BlKiBzY29wZSA9IGZ1bmN0aW9uLT5zY29wZVVuY2hlY2tlZCgpOwpAQCAtODI5LDE4ICs4NDUs
MjIgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKAog
CiAgICAgICAgIGlmICghaXNDYWxsKGtpbmQpICYmIGZ1bmN0aW9uRXhlY3V0YWJsZS0+aXNCdWls
dGluRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBmdW5jdGlvbikpOwotICAgICAg
ICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCh2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZy
b21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigwKSk7CisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0
KAorICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxT
bG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAgICAgICAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAgICAgIH0K
IAogICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVG
b3JFeGVjdXRpb24oZXhlY0NhbGxlZSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kKTsKICAgICAgICAg
aWYgKGVycm9yKSB7CiAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQodm0tPmdldENUSVN0dWIo
dGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMCkpOworICAgICAgICAgICAgcmV0
dXJuIGVuY29kZVJlc3VsdCgKKyAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4
Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVz
cygpLAorICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFt
ZSkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZXhlY3V0YWJs
ZS0+ZW50cnlwb2ludEZvcigKICAgICAgICAgKnZtLCBraW5kLCBNdXN0Q2hlY2tBcml0eSwgY2Fs
bExpbmtJbmZvLT5yZWdpc3RlclByZXNlcnZhdGlvbk1vZGUoKSkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMSkpOworICAgICAgICByZWludGVy
cHJldF9jYXN0PHZvaWQqPihjYWxsTGlua0luZm8tPmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRh
aWwgPyBSZXVzZVRoZUZyYW1lIDogS2VlcFRoZUZyYW1lKSk7CiB9CiAKIFNsb3dQYXRoUmV0dXJu
VHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtQb2x5bW9ycGhpY0NhbGwoRXhlY1N0YXRl
KiBleGVjQ2FsbGVlLCBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGNmN2QzZmQzMTRlNTllZDNhNDNiNGE0YTcwNzY2Y2I2
OTZjM2VmZDguLjE2YWQxMTMzODRiZmY2MjI0YWExZWYwMzA5ZjlhYjVkMzRkYzJjZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtMTc1Nyw3ICsxNzU3LDcgQEAgdm9p
ZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBJZiB3
ZSBjYW5ub3QgaGFuZGxlIGEgY2FsbGVlLCBhc3N1bWUgdGhhdCBpdCdzIGJldHRlciBmb3IgdGhp
cyB3aG9sZSB0aGluZyB0byBiZSBhCiAgICAgICAgICAgICAvLyB2aXJ0dWFsIGNhbGwuCi0gICAg
ICAgICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19j
YXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpIHx8IENhbGxMaW5rSW5mbzo6
aXNWYXJhcmdzQ2FsbFR5cGUoY2FsbExpbmtJbmZvLmNhbGxUeXBlKCkpKSB7CisgICAgICAgICAg
ICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNp
emVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpIHx8IGNhbGxMaW5rSW5mby5pc1ZhcmFy
Z3MoKSkgewogICAgICAgICAgICAgICAgIGxpbmtWaXJ0dWFsRm9yKGV4ZWMsIGNhbGxMaW5rSW5m
byk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMTg4MCw3ICsx
ODgwLDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
QWRkcmVzcyhmYXN0Q291bnRzQmFzZUdQUiwgY2FzZUluZGV4ICogc2l6ZW9mKHVpbnQzMl90KSkp
OwogICAgICAgICB9Ci0gICAgICAgIGlmIChDYWxsTGlua0luZm86OmlzVGFpbENhbGxUeXBlKGNh
bGxMaW5rSW5mby5jYWxsVHlwZSgpKSkgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmlzVGFp
bENhbGwoKSkgewogICAgICAgICAgICAgc3R1YkppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KCk7
CiAgICAgICAgICAgICBjYWxsc1tjYXNlSW5kZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJUYWlsQ2Fs
bCgpOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcAppbmRleCA1MmI1NTliMGFjMDgxOGVlNzI5Y2RlNGM5YTMxZjY5MmE1M2Ix
NTE1Li42MmVhNGNlZmUyNmRmZjQzNWE5NzliM2Y4ZmEwNmVkMTJhYTMwYTYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC05OSw2ICs5OSw3
IEBAIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKAogICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihq
aXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9n
dWUoKTsKIAorICAgIFJFTEVBU0VfQVNTRVJUKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBU
aGVGcmFtZSkgPT0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMCkpOwogICAgIENDYWxsSGVscGVy
czo6SnVtcCBkb05vdFRyYXNoID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJv
LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwogCiAgICAgaml0LnByZXNlcnZlUmV0dXJuQWRk
cmVzc0FmdGVyQ2FsbChHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwpAQCAtMTkx
LDcgKzE5Miw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmtGb3IoVk0qIHZt
LCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKICAgICAKICAgICAvLyBNYWtlIGEgdGFpbCBj
YWxsLiBUaGlzIHdpbGwgcmV0dXJuIGJhY2sgdG8gSklUIGNvZGUuCiAgICAgZW1pdFBvaW50ZXJW
YWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6cmVnVDQpOwotICAgIGlmIChDYWxsTGlua0luZm86Omlz
VGFpbENhbGxUeXBlKGNhbGxMaW5rSW5mby5jYWxsVHlwZSgpKSkgeworICAgIGlmIChjYWxsTGlu
a0luZm8uaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NB
ZnRlckNhbGwoR1BSSW5mbzo6cmVnVDApOwogICAgICAgICBqaXQucHJlcGFyZUZvclRhaWxDYWxs
U2xvdyhHUFJJbmZvOjpyZWdUNCk7CiAgICAgfQpAQCAtMjA1LDkgKzIwNiw4IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmtGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxM
aW5rSW5mbykKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhV
TktfSUQpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKAogICAgICAgICBwYXRjaEJ1ZmZlciwK
LSAgICAgICAgKCJWaXJ0dWFsICVzJXMgc2xvdyBwYXRoIHRodW5rIGF0IENvZGVQdHIoJXApIiwK
LSAgICAgICAgY2FsbExpbmtJbmZvLnNwZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDYWxs
ID8gImNhbGwiIDogImNvbnN0cnVjdCIsCi0gICAgICAgIGNhbGxMaW5rSW5mby5yZWdpc3RlclBy
ZXNlcnZhdGlvbk1vZGUoKSA9PSBNdXN0UHJlc2VydmVSZWdpc3RlcnMgPyAiIHRoYXQgcHJlc2Vy
dmVzIHJlZ2lzdGVycyIgOiAiIiwKKyAgICAgICAgKCJWaXJ0dWFsICVzIHNsb3cgcGF0aCB0aHVu
ayBhdCBDb2RlUHRyKCVwKSIsCisgICAgICAgIGNhbGxMaW5rSW5mby5jYWxsTW9kZSgpID09IENh
bGxNb2RlOjpSZWd1bGFyID8gImNhbGwiIDogY2FsbExpbmtJbmZvLmNhbGxNb2RlKCkgPT0gQ2Fs
bE1vZGU6OlRhaWwgPyAidGFpbCBjYWxsIiA6ICJjb25zdHJ1Y3QiLAogICAgICAgICBjYWxsTGlu
a0luZm8uY2FsbFJldHVybkxvY2F0aW9uKCkuZGF0YUxvY2F0aW9uKCkpKTsKIH0KIAo=
</data>
<flag name="review"
          id="283076"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>