<?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>140283</bug_id>
          
          <creation_ts>2015-01-08 20:42:31 -0800</creation_ts>
          <short_desc>Add basic pattern matching support to the url filters</short_desc>
          <delta_ts>2015-01-12 17:37:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>barraclough</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1060065</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-01-08 20:42:31 -0800</bug_when>
    <thetext>Add basic pattern matching support to the url filters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060066</commentid>
    <comment_count>1</comment_count>
      <attachid>244322</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-01-08 20:56:13 -0800</bug_when>
    <thetext>Created attachment 244322
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060196</commentid>
    <comment_count>2</comment_count>
      <attachid>244322</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2015-01-09 11:29:03 -0800</bug_when>
    <thetext>Comment on attachment 244322
Patch

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

&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:140
&gt; +    void disjunction() { }

Shouldn&apos;t these fail()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060206</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-01-09 11:46:58 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 244322 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=244322&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/contentextensions/URLFilterParser.cpp:140
&gt; &gt; +    void disjunction() { }
&gt; 
&gt; Shouldn&apos;t these fail()?

I can add that. I was just implementing the minimum I need at the moment. Eventually everything except backreference should have an implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060265</commentid>
    <comment_count>4</comment_count>
      <attachid>244370</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-01-09 14:07:53 -0800</bug_when>
    <thetext>Created attachment 244370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060342</commentid>
    <comment_count>5</comment_count>
      <attachid>244370</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-01-09 16:51:43 -0800</bug_when>
    <thetext>Comment on attachment 244370
Patch

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

r=me

&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:70
&gt; +        ASSERT(isASCII(character));

I think this needs a runtime check, there&apos;s no guarantee that &apos;character&apos; will be ASCII.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060733</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-01-12 17:37:21 -0800</bug_when>
    <thetext>Committed r178313: &lt;http://trac.webkit.org/changeset/178313&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244322</attachid>
            <date>2015-01-08 20:56:13 -0800</date>
            <delta_ts>2015-01-09 14:07:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140283-20150108205617.patch</filename>
            <type>text/plain</type>
            <size>33634</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4MTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YmY4NjZiMDY3NDk3OWY3NWNhNDYxODQzZmM5Y2IwMjYyZmRmMzNhLi5mYTkzZDM4YWZmZDJlMWMz
NmUyOGIzNWJjMWUzYWZmODEwZmU0OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNS0wMS0wOCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgQWRkIGJhc2ljIHBhdHRlcm4gbWF0Y2hpbmcgc3VwcG9ydCB0byB0
aGUgdXJsIGZpbHRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MDI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgTWFrZSBZYXJyUGFyc2VyLmggcHJpdmF0ZSBpbiBvcmRlciB0byB1c2UgaXQgZnJvbSBXZWJD
b3JlLgorCiAyMDE1LTAxLTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBcmd1bWVudCBvYmplY3QgY3JlYXRlZCBieSAiRnVuY3Rpb24gZG90IGFyZ3VtZW50cyIg
c2hvdWxkIHVzZSBhIGNsb25lIG9mIHRoZSBhcmd1bWVudCB2YWx1ZXMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2Y2NDVhM2ZmMGNhNDIyMGZkZWM4NjYxZTNiMzJlNTFmOTQ2Y2IwMC4uYjg2MjkwYmI0ODI0NjI1
NjQ5Y2ZjNjczNGEzMjNhODUyZDNkZjJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg5IEBACiAy
MDE1LTAxLTA4ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAorICAg
ICAgICBBZGQgYmFzaWMgcGF0dGVybiBtYXRjaGluZyBzdXBwb3J0IHRvIHRoZSB1cmwgZmlsdGVy
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwMjgz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhZGRzIHNvbWUgYmFzaWMgZ2VuZXJpYyBwYXR0ZXJuIHN1cHBvcnQgZm9yIHRoZSB1cmwg
ZmlsdGVycworICAgICAgICBvZiBDb250ZW50RXh0ZW5zaW9ucy4KKworICAgICAgICBJbnN0ZWFk
IG9mIHdyaXR0aW5nIGEgbmV3IHBhcnNlciwgSSByZS11c2VkIEdhdmluJ3MgcGFyc2VyIGZvciBK
YXZhU2NyaXB0CisgICAgICAgIFJlZ0V4cC4KKworICAgICAgICBUaGlzIHBhdGNoIG9ubHkgaW1w
bGVtZW50cyB0aGUgdmVyeSBiYXNpYyBzdHVmZnM6IHRyYW5zaXRpb24gb24gYW55IGNoYXJhY3Rl
cgorICAgICAgICBhbmQgcmVwZXRpdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6c2V0UnVsZUxpc3QpOgorICAgICAgICBVc2UgdGhl
IG5ldyBwYXJzZXIuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6REZBKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpwcmludFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpwcmludFRyYW5zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6ZGVidWdQcmludERvdCk6CisgICAgICAgICogY29udGVu
dGV4dGVuc2lvbnMvTkZBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpwcmludFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpwcmlu
dFRyYW5zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5GQTo6
ZGVidWdQcmludERvdCk6CisgICAgICAgIFRoZSBncmFwaHMgZ2VuZXJhdGVkIHdpdGggdGhlIGV4
dGVuZGVkIHBhdHRlcm5zIGFyZSB2YXN0bHkgbW9yZSBjb21wbGljYXRlZAorICAgICAgICB0aGFu
IHRoZSBvbGQgcHJlZml4IG1hdGNoZXIuCisgICAgICAgIEkgY2hhbmdlZCB0aGUgZGVidWcgb3V0
cHV0IHRvIGhhdmUgYSBzaW5nbGUgbGluayBiZXR3ZWVuIGFueSB0d28gbm9kZXMKKyAgICAgICAg
aW5zdGVhZCBvZiBvbmUgcGVyIHRyYW5zaXRpb24uIFRoaXMgbWFrZXMgdGhlIGdyYXBoIGEgbGl0
dGxlIG1vcmUgbWFuYWdlYWJsZS4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL05GQS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TkZBOjphZGRUcmFuc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpORkE6OmFkZEVwc2ls
b25UcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpORkE6
OmdyYXBoU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TkZBOjpy
ZXN0b3JlVG9HcmFwaFNpemUpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL05GQS5oOgor
ICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL05GQU5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjplcHNpbG9uQ2xvc3VyZSk6CisgICAgICAgIFRoZSBuZXcgcGFy
c2VyIGNhbiBnZW5lcmF0ZSB0cmFuc2l0aW9ucyBiYWNrIHRvIHRoZSByb290IG5vZGUgb2YgaW5k
ZXggemVyby4KKyAgICAgICAgQWxsIHRoZSBoYXNoIHN0cnVjdHVyZXMgaGFkIHRvIGJlIHVwZGF0
ZWQgdG8gc3VwcG9ydCB0aGlzIGtpbmQgb2Yga2V5LgorCisgICAgICAgICogY29udGVudGV4dGVu
c2lvbnMvTkZBVG9ERkEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
Okhhc2hhYmxlTm9kZUlkU2V0SGFzaDo6aGFzaCk6CisgICAgICAgIFR3byB0aW55IGltcHJvdmVt
ZW50czoKKyAgICAgICAgLURvbid0IGhhc2ggemVybyB0byB6ZXJvLCBpdCBjYXVzZXMgbW9yZSBj
b25mbGljdHMgdGhhdCBuZWVkZWQuCisgICAgICAgIC1UaGUgaGFzaCBvcGVyYXRpb24gbXVzdCB1
c2UgYSBjb21tdXRhdGl2ZSBvcGVyYXRpb24sIG90aGVyd2lzZSB0aGUgb3JkZXIKKyAgICAgICAg
IG9mIGVsZW1lbnRzIGNhbiBhZmZlY3QgdGhlIGhhc2gsIHdoaWNoIGlzIHVuZGVzaXJlZCBmb3Ig
YSBzZXQuCisgICAgICAgIEknbGwgaW1wcm92ZSB0aGlzIGZ1cnRoZXIgbGF0ZXIuCisKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpORkFUb0RGQTo6Y29udmVydCk6CisKKyAg
ICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpHcmFwaEJ1aWxkZXI6OkdyYXBoQnVp
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVy
OjptX2xhc3RBdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpHcmFw
aEJ1aWxkZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpHcmFwaEJ1aWxkZXI6OmVycm9yTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjphdG9tUGF0dGVybkNoYXJhY3Rlcik6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjphdG9tQnVpbHRJbkNo
YXJhY3RlckNsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpHcmFw
aEJ1aWxkZXI6OnF1YW50aWZ5QXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6R3JhcGhCdWlsZGVyOjphdG9tQmFja1JlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjphdG9tQ2hhcmFjdGVyQ2xhc3NBdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpHcmFwaEJ1aWxkZXI6OmFz
c2VydGlvbkJPTCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhC
dWlsZGVyOjphc3NlcnRpb25FT0wpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkdyYXBoQnVpbGRlcjo6YXNzZXJ0aW9uV29yZEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpHcmFwaEJ1aWxkZXI6OmF0b21DaGFyYWN0ZXJDbGFzc0Jl
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpHcmFwaEJ1aWxkZXI6
OmF0b21DaGFyYWN0ZXJDbGFzc1JhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpHcmFwaEJ1aWxkZXI6OmF0b21DaGFyYWN0ZXJDbGFzc0J1aWx0SW4pOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6YXRvbUNoYXJhY3Rl
ckNsYXNzRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpHcmFwaEJ1
aWxkZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjphdG9tUGFyZW50aGV0aWNhbEFzc2Vy
dGlvbkJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpHcmFwaEJ1
aWxkZXI6OmF0b21QYXJlbnRoZXNlc0VuZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjpkaXNqdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjpoYXNFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjpmYWlsKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpVUkxGaWx0ZXJQYXJzZXI6OnBhcnNlKToKKyAgICAg
ICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpVUkxGaWx0ZXJQYXJzZXI6Omhhc0Vycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpVUkxGaWx0ZXJQYXJzZXI6OmVycm9yTWVz
c2FnZSk6CisKKzIwMTUtMDEtMDggIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQu
b3JnPgorCiAgICAgICAgIEJ1aWxkIGZpeCBhZnRlciByMTc4MTUxCiAKICAgICAgICAgKiBjb250
ZW50ZXh0ZW5zaW9ucy9ERkEuY3BwOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2
Mjk1OGJiMjBlN2NmM2VjYjhmODkxNjFhNTBhZTY0ZDgxZTliODM4Li5lN2Q0MjMxNzRmMzc1MTlh
MDI2ZmEwYTg2NTk3Njk1YTJhODAxOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtOTY4LDcgKzk2OCw3IEBACiAJCTg2NzA0Qjg1MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50
ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2NzA0QjdFMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4NjEyREJBMzM3
MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NjcwNEI3RjEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgKi87
IH07CiAJCTg2NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MDEyREJBMzM3MDBBOUZF
N0IgLyogWWFyckpJVC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTg2NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7
IH07IH07CisJCTg2NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVy
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njcw
NEI4MjEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwICovOyB9OwogCQk4NjcwNEI4
QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJy
UGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTg2ODgwRjFGMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODgwRjFC
MTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLzsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA5MDY0ZWNkMDBiNWJlODFkNDQwN2NhM2EwZTJjN2U0YmI2MTRkMzllLi4xZjJlMjY5ZDg1OWNi
MDZlNTg4YWY1YmVhOWRiNTViNGFmMTAwZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDI4LDYgKzEwMjgsOCBAQAogCQky
Njc3MjVGRjFBNUIzQUQ5MDAzQzI0REQgLyogREZBTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY3NzI1RjkxQTVCM0FEOTAwM0MyNEREIC8qIERG
QU5vZGUuaCAqLzsgfTsKIAkJMjY3NzI2MDAxQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZBLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2NzcyNUZB
MUE1QjNBRDkwMDNDMjRERCAvKiBORkFUb0RGQS5jcHAgKi87IH07CiAJCTI2NzcyNjAxMUE1QjNB
RDkwMDNDMjRERCAvKiBORkFUb0RGQS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjY3NzI1RkIxQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZBLmggKi87
IH07CisJCTI2NzcyNjA0MUE1REY2RjIwMDNDMjRERCAvKiBVUkxGaWx0ZXJQYXJzZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY3NzI2MDIxQTVE
RjZGMjAwM0MyNEREIC8qIFVSTEZpbHRlclBhcnNlci5jcHAgKi87IH07CisJCTI2NzcyNjA1MUE1
REY2RjIwMDNDMjRERCAvKiBVUkxGaWx0ZXJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2NzcyNjAzMUE1REY2RjIwMDNDMjRERCAvKiBVUkxG
aWx0ZXJQYXJzZXIuaCAqLzsgfTsKIAkJMjY5MjM5OTYxNTA1RTFBQTAwOUU1N0ZDIC8qIEpTSURC
VmVyc2lvbkNoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyNjkyMzk5MjE1MDVFMUFBMDA5RTU3RkMgLyogSlNJREJWZXJzaW9uQ2hhbmdl
RXZlbnQuaCAqLzsgfTsKIAkJMjY5Mzk3MjExQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY5Mzk3MUYx
QTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuY3BwICovOyB9OwogCQkyNjkzOTcyMjFBNEE0MTJG
MDBFODM0OUQgLyogTkZBTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjY5Mzk3MjAxQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuaCAqLzsgfTsK
QEAgLTgwNjcsNiArODA2OSw4IEBACiAJCTI2NzcyNUY5MUE1QjNBRDkwMDNDMjRERCAvKiBERkFO
b2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGQU5vZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjY3NzI1RkExQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRv
REZBLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5GQVRvREZBLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjY3NzI1RkIxQTVCM0FEOTAwM0MyNERE
IC8qIE5GQVRvREZBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5GQVRvREZB
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2NzcyNjAyMUE1REY2RjIwMDNDMjRE
RCAvKiBVUkxGaWx0ZXJQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVVJMRmlsdGVyUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MjY3NzI2MDMxQTVERjZGMjAwM0MyNEREIC8qIFVSTEZpbHRlclBhcnNlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxGaWx0ZXJQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjY5MjM5OTExNTA1RTFBQTAwOUU1N0ZDIC8qIEpTSURCVmVyc2lvbkNo
YW5nZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSURC
VmVyc2lvbkNoYW5nZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjY5
MjM5OTIxNTA1RTFBQTAwOUU1N0ZDIC8qIEpTSURCVmVyc2lvbkNoYW5nZUV2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSURCVmVyc2lvbkNoYW5nZUV2ZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2OTM5NzFGMUE0QTQxMkYwMEU4MzQ5RCAvKiBO
RkFOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5GQU5vZGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU0MjUsNiArMTU0MjksOCBAQAog
CQkJCTI2OTM5NzIwMUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFOb2RlLmggKi8sCiAJCQkJMjY3NzI1
RkExQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZBLmNwcCAqLywKIAkJCQkyNjc3MjVGQjFBNUIz
QUQ5MDAzQzI0REQgLyogTkZBVG9ERkEuaCAqLywKKwkJCQkyNjc3MjYwMjFBNURGNkYyMDAzQzI0
REQgLyogVVJMRmlsdGVyUGFyc2VyLmNwcCAqLywKKwkJCQkyNjc3MjYwMzFBNURGNkYyMDAzQzI0
REQgLyogVVJMRmlsdGVyUGFyc2VyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvbnRlbnRleHRl
bnNpb25zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI0MTM5LDYgKzI0MTQ1LDcg
QEAKIAkJCQk4NTk5MkVCRTBBQTUwNjk1MDBBQzA3ODUgLyogRE9NSFRNTExpbmtFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTFCODBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTExp
bmtFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RUNCRUYzMEFBNzYyNjkw
MDU0NEYwQiAvKiBET01IVE1MTWFwRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjY3NzI2
MDUxQTVERjZGMjAwM0MyNEREIC8qIFVSTEZpbHRlclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODVFNzExQjkwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxNYXBFbGVtZW50SW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTE1NzlGMEMwM0JCRDMwMDhCQjBFRSAvKiBET01IVE1M
TWFycXVlZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTE1NkVBMEMwM0I3NDEwMDhC
QjBFRSAvKiBET01IVE1MTWFycXVlZUVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yODkxMCw2ICsyODkxNyw3IEBACiAJCQkJMDdCNUEyREIxNDY0MzIwQTAwQTgxRUNFIC8qIEpT
VGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwN0I1QTMwRDE0Njg3RDcxMDBB
ODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0
NDYxNDFBMENENjgyNjkwMEZBREE3NSAvKiBKU1RpbWVSYW5nZXMuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMjY3NzI2MDQxQTVERjZGMjAwM0MyNEREIC8qIFVSTEZpbHRlclBhcnNlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkRBN0MxNjE4ODMyMkVCMDBDOTU0QjUgLyogSlNUb3VjaC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxODE4ODMyMkVCMDBDOTU0QjUgLyogSlNUb3VjaEV2
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGREE3QzFBMTg4MzIyRUIwMEM5NTRCNSAvKiBK
U1RvdWNoTGlzdC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCmlu
ZGV4IGE2ZDFhYTMwOWFlYWIwNTgxZjFlZmVkMzJkZWUyMzBhZDVhNDI0MzcuLjAyMzczOWRmMzdi
NzE3ZmJiNDZjN2E2NGNjNmM1ZjU2Y2ZmMjYyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNw
cApAQCAtMzEsNyArMzEsMTAgQEAKICNpbmNsdWRlICJORkEuaCIKICNpbmNsdWRlICJORkFUb0RG
QS5oIgogI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgIlVSTEZpbHRlclBhcnNlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTU1LDIxICs1OCwxOCBAQCB2b2lkIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6c2V0UnVsZUxp
c3QoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBWZWN0bwogICAgIH0KIAogICAgIE5G
QSBuZmE7Ci0gICAgdW5zaWduZWQgcm9vdE5vZGUgPSBuZmEucm9vdCgpOwogICAgIGZvciAodW5z
aWduZWQgcnVsZUluZGV4ID0gMDsgcnVsZUluZGV4IDwgcnVsZUxpc3Quc2l6ZSgpOyArK3J1bGVJ
bmRleCkgewogICAgICAgICBjb25zdCBDb250ZW50RXh0ZW5zaW9uUnVsZSYgY29udGVudEV4dGVu
c2lvblJ1bGUgPSBydWxlTGlzdFtydWxlSW5kZXhdOwogICAgICAgICBjb25zdCBDb250ZW50RXh0
ZW5zaW9uUnVsZTo6VHJpZ2dlciYgdHJpZ2dlciA9IGNvbnRlbnRFeHRlbnNpb25SdWxlLnRyaWdn
ZXIoKTsKICAgICAgICAgQVNTRVJUKHRyaWdnZXIudXJsRmlsdGVyLmxlbmd0aCgpKTsKIAotICAg
ICAgICB1bnNpZ25lZCBsYXN0Tm9kZSA9IHJvb3ROb2RlOworICAgICAgICBVUkxGaWx0ZXJQYXJz
ZXIgdXJsRmlsdGVyUGFyc2VyOworICAgICAgICB1cmxGaWx0ZXJQYXJzZXIucGFyc2UodHJpZ2dl
ci51cmxGaWx0ZXIsIHJ1bGVJbmRleCwgbmZhKTsKIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdHJpZ2dlci51cmxGaWx0ZXIubGVuZ3RoKCk7ICsraSkgewotICAgICAgICAgICAg
dW5zaWduZWQgbmV3Tm9kZSA9IG5mYS5jcmVhdGVOb2RlKHJ1bGVJbmRleCk7Ci0gICAgICAgICAg
ICBuZmEuYWRkVHJhbnNpdGlvbihsYXN0Tm9kZSwgbmV3Tm9kZSwgdHJpZ2dlci51cmxGaWx0ZXJb
aV0pOwotICAgICAgICAgICAgbGFzdE5vZGUgPSBuZXdOb2RlOworICAgICAgICBpZiAodXJsRmls
dGVyUGFyc2VyLmhhc0Vycm9yKCkpIHsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJFcnJvciB3aGls
ZSBwYXJzaW5nICVzOiAlcyIsIHRyaWdnZXIudXJsRmlsdGVyLnV0ZjgoKS5kYXRhKCksIHVybEZp
bHRlclBhcnNlci5lcnJvck1lc3NhZ2UoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9Ci0KLSAgICAgICAgbmZhLnNldEZpbmFsKGxhc3ROb2RlKTsKICAg
ICB9CiAKICAgICAvLyBGSVhNRTogbmV2ZXIgYWRkIGEgREZBIHRoYXQgb25seSBtYXRjaGVzIHRo
ZSBlbXB0eSBzZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9ERkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmNwcAppbmRl
eCBlNGFiYmZiOTVjOWRmZmExMTlkMGU2ZjNkMzAzYmQyOTk2ZGNhMTkxLi4yOTAwYzY5ODZmODdi
YTlmMGQ5YmMyMjI2NWNmNTJjZWQzMTEzOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9ERkEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0RGQS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgREZBOjpERkEoVmVjdG9yPERGQU5vZGU+
JiYgbm9kZXMsIHVuc2lnbmVkIHJvb3RJbmRleCkKICAgICA6IG1fbm9kZXMoV1RGOjptb3ZlKG5v
ZGVzKSkKICAgICAsIG1fcm9vdChyb290SW5kZXgpCiB7Ci0gICAgQVNTRVJUKHJvb3RJbmRleCA8
IG5vZGVzLnNpemUoKSk7CisgICAgQVNTRVJUKHJvb3RJbmRleCA8IG1fbm9kZXMuc2l6ZSgpKTsK
IH0KIAogREZBOjpERkEoY29uc3QgREZBJiBkZmEpCkBAIC04MCw2ICs4MCw2MiBAQCBjb25zdCBW
ZWN0b3I8dWludDY0X3Q+JiBERkE6OmFjdGlvbnModW5zaWduZWQgY3VycmVudFN0YXRlKSBjb25z
dAogfQogCiAjaWZuZGVmIE5ERUJVRworc3RhdGljIHZvaWQgcHJpbnRSYW5nZShib29sIGZpcnN0
UmFuZ2UsIGNoYXIgcmFuZ2VTdGFydCwgY2hhciByYW5nZUVuZCkKK3sKKyAgICBpZiAoIWZpcnN0
UmFuZ2UpCisgICAgICAgIGRhdGFMb2dGKCIsICIpOworICAgIGlmIChyYW5nZVN0YXJ0ID09IHJh
bmdlRW5kKSB7CisgICAgICAgIGlmIChyYW5nZVN0YXJ0ID09ICciJyB8fCByYW5nZVN0YXJ0ID09
ICdcXCcpCisgICAgICAgICAgICBkYXRhTG9nRigiXFwlYyIsIHJhbmdlU3RhcnQpOworICAgICAg
ICBlbHNlIGlmIChyYW5nZVN0YXJ0ID49ICchJyAmJiByYW5nZVN0YXJ0IDw9ICd+JykKKyAgICAg
ICAgICAgIGRhdGFMb2dGKCIlYyIsIHJhbmdlU3RhcnQpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBkYXRhTG9nRigiXFxcXCVkIiwgcmFuZ2VTdGFydCk7CisgICAgfSBlbHNlCisgICAgICAg
IGRhdGFMb2dGKCJcXFxcJWQtXFxcXCVkIiwgcmFuZ2VTdGFydCwgcmFuZ2VFbmQpOworfQorCitz
dGF0aWMgdm9pZCBwcmludFRyYW5zaXRpb24odW5zaWduZWQgc291cmNlTm9kZSwgY29uc3QgSGFz
aE1hcDx1aW50MTZfdCwgdW5zaWduZWQ+JiB0cmFuc2l0aW9ucykKK3sKKyAgICBpZiAodHJhbnNp
dGlvbnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBIYXNoTWFwPHVuc2lnbmVk
LCBWZWN0b3I8dWludDE2X3Q+LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiB0cmFuc2l0aW9uc1BlclRhcmdl
dDsKKworICAgIC8vIEZpcnN0LCB3ZSBidWlsZCB0aGUgbGlzdCBvZiB0cmFuc2l0aW9ucyBjb21p
bmcgdG8gZWFjaCB0YXJnZXQgbm9kZS4KKyAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5zaXRpb24g
OiB0cmFuc2l0aW9ucykgeworICAgICAgICB1bnNpZ25lZCB0YXJnZXQgPSB0cmFuc2l0aW9uLnZh
bHVlOworICAgICAgICB0cmFuc2l0aW9uc1BlclRhcmdldC5hZGQodGFyZ2V0LCBWZWN0b3I8dWlu
dDE2X3Q+KCkpOworCisgICAgICAgIHRyYW5zaXRpb25zUGVyVGFyZ2V0LmZpbmQodGFyZ2V0KS0+
dmFsdWUuYXBwZW5kKHRyYW5zaXRpb24ua2V5KTsKKyAgICB9CisKKyAgICAvLyBUaGVuIHdlIGdv
IG92ZXIgZWFjaCBvbmUgYW4gZGlzcGxheSB0aGUgcmFuZ2VzIG9uZSBieSBvbmUuCisgICAgZm9y
IChjb25zdCBhdXRvJiB0cmFuc2l0aW9uUGVyVGFyZ2V0IDogdHJhbnNpdGlvbnNQZXJUYXJnZXQp
IHsKKyAgICAgICAgZGF0YUxvZ0YoIiAgICAgICAgJWQgLT4gJWQgW2xhYmVsPVwiIiwgc291cmNl
Tm9kZSwgdHJhbnNpdGlvblBlclRhcmdldC5rZXkpOworCisgICAgICAgIFZlY3Rvcjx1aW50MTZf
dD4gaW5jb21taW5nQ2hhcmFjdGVycyA9IHRyYW5zaXRpb25QZXJUYXJnZXQudmFsdWU7CisgICAg
ICAgIHN0ZDo6c29ydChpbmNvbW1pbmdDaGFyYWN0ZXJzLmJlZ2luKCksIGluY29tbWluZ0NoYXJh
Y3RlcnMuZW5kKCkpOworCisgICAgICAgIGNoYXIgcmFuZ2VTdGFydCA9IGluY29tbWluZ0NoYXJh
Y3RlcnMuZmlyc3QoKTsKKyAgICAgICAgY2hhciByYW5nZUVuZCA9IHJhbmdlU3RhcnQ7CisgICAg
ICAgIGJvb2wgZmlyc3QgPSB0cnVlOworICAgICAgICBmb3IgKHVuc2lnbmVkIHNvcnRlZFRyYW5z
aXRpb25JbmRleCA9IDE7IHNvcnRlZFRyYW5zaXRpb25JbmRleCA8IGluY29tbWluZ0NoYXJhY3Rl
cnMuc2l6ZSgpOyArK3NvcnRlZFRyYW5zaXRpb25JbmRleCkgeworICAgICAgICAgICAgY2hhciBu
ZXh0Q2hhciA9IGluY29tbWluZ0NoYXJhY3RlcnNbc29ydGVkVHJhbnNpdGlvbkluZGV4XTsKKyAg
ICAgICAgICAgIGlmIChuZXh0Q2hhciA9PSByYW5nZUVuZCsxKSB7CisgICAgICAgICAgICAgICAg
cmFuZ2VFbmQgPSBuZXh0Q2hhcjsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHByaW50UmFuZ2UoZmlyc3QsIHJhbmdlU3RhcnQsIHJhbmdlRW5k
KTsKKyAgICAgICAgICAgIHJhbmdlU3RhcnQgPSByYW5nZUVuZCA9IG5leHRDaGFyOworICAgICAg
ICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBwcmludFJhbmdlKGZpcnN0
LCByYW5nZVN0YXJ0LCByYW5nZUVuZCk7CisKKyAgICAgICAgZGF0YUxvZ0YoIlwiXTtcbiIpOwor
ICAgIH0KK30KKwogdm9pZCBERkE6OmRlYnVnUHJpbnREb3QoKSBjb25zdAogewogICAgIGRhdGFM
b2dGKCJkaWdyYXBoIERGQV9UcmFuc2l0aW9ucyB7XG4iKTsKQEAgLTExNywxMCArMTczLDkgQEAg
dm9pZCBERkE6OmRlYnVnUHJpbnREb3QoKSBjb25zdAogICAgIGRhdGFMb2dGKCIgICAgfVxuIik7
CiAKICAgICBkYXRhTG9nRigiICAgIHtcbiIpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX25vZGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgc2xvdCA6
IG1fbm9kZXNbaV0udHJhbnNpdGlvbnMpCi0gICAgICAgICAgICBkYXRhTG9nRigiICAgICAgICAl
ZCAtPiAlZCBbbGFiZWw9XCIlY1wiXTtcbiIsIGksIHNsb3QudmFsdWUsIHNsb3Qua2V5KTsKLSAg
ICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9kZXMuc2l6ZSgpOyArK2kpCisg
ICAgICAgIHByaW50VHJhbnNpdGlvbihpLCBtX25vZGVzW2ldLnRyYW5zaXRpb25zKTsKKwogICAg
IGRhdGFMb2dGKCIgICAgfVxuIik7CiAgICAgZGF0YUxvZ0YoIn1cbiIpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL05GQS5jcHAKaW5kZXggNTFlOWE3ZTI3ODRiMmIxNWVlMDBk
YzgwYTI4Y2QyZDEyMDU3ODhjNi4uNzI4ODc5ZDA2NTExMWJjM2RlM2ZkN2M3NTE0MzljN2M5MmFm
MmFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkEuY3BwCkBAIC01Myw3
ICs1Myw3IEBAIHZvaWQgTkZBOjphZGRUcmFuc2l0aW9uKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVk
IHRvLCBjaGFyIGNoYXJhY3RlcikKICAgICBBU1NFUlQodG8gPCBtX25vZGVzLnNpemUoKSk7CiAg
ICAgQVNTRVJUKGNoYXJhY3Rlcik7CiAKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbm9kZXNbZnJv
bV0udHJhbnNpdGlvbnMuYWRkKGNoYXJhY3RlciwgSGFzaFNldDx1bnNpZ25lZD4oKSk7CisgICAg
YXV0byBhZGRSZXN1bHQgPSBtX25vZGVzW2Zyb21dLnRyYW5zaXRpb25zLmFkZChjaGFyYWN0ZXIs
IEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCkpOwogICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUuYWRkKHRvKTsKIH0KIApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIE5GQTo6
YWRkRXBzaWxvblRyYW5zaXRpb24odW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pCiAgICAgQVNT
RVJUKGZyb20gPCBtX25vZGVzLnNpemUoKSk7CiAgICAgQVNTRVJUKHRvIDwgbV9ub2Rlcy5zaXpl
KCkpOwogCi0gICAgYXV0byBhZGRSZXN1bHQgPSBtX25vZGVzW2Zyb21dLnRyYW5zaXRpb25zLmFk
ZChlcHNpbG9uVHJhbnNpdGlvbkNoYXJhY3RlciwgSGFzaFNldDx1bnNpZ25lZD4oKSk7CisgICAg
YXV0byBhZGRSZXN1bHQgPSBtX25vZGVzW2Zyb21dLnRyYW5zaXRpb25zLmFkZChlcHNpbG9uVHJh
bnNpdGlvbkNoYXJhY3RlciwgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+
OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKSk7
CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hZGQodG8pOwogfQogCkBAIC03Miw3ICs3
Miw3OSBAQCB2b2lkIE5GQTo6c2V0RmluYWwodW5zaWduZWQgbm9kZSkKICAgICBtX25vZGVzW25v
ZGVdLmlzRmluYWwgPSB0cnVlOwogfQogCit1bnNpZ25lZCBORkE6OmdyYXBoU2l6ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbm9kZXMuc2l6ZSgpOworfQorCit2b2lkIE5GQTo6cmVzdG9yZVRv
R3JhcGhTaXplKHVuc2lnbmVkIHNpemUpCit7CisgICAgQVNTRVJUKHNpemUgPiAxKTsKKyAgICBB
U1NFUlQoc2l6ZSA8PSBncmFwaFNpemUoKSk7CisKKyAgICBtX25vZGVzLnNocmluayhzaXplKTsK
K30KKwogI2lmbmRlZiBOREVCVUcKKworc3RhdGljIHZvaWQgcHJpbnRSYW5nZShib29sIGZpcnN0
UmFuZ2UsIHVpbnQxNl90IHJhbmdlU3RhcnQsIHVpbnQxNl90IHJhbmdlRW5kLCB1aW50MTZfdCBl
cHNpbG9uVHJhbnNpdGlvbkNoYXJhY3RlcikKK3sKKyAgICBpZiAoIWZpcnN0UmFuZ2UpCisgICAg
ICAgIGRhdGFMb2dGKCIsICIpOworICAgIGlmIChyYW5nZVN0YXJ0ID09IHJhbmdlRW5kKSB7Cisg
ICAgICAgIGlmIChyYW5nZVN0YXJ0ID09IGVwc2lsb25UcmFuc2l0aW9uQ2hhcmFjdGVyKQorICAg
ICAgICAgICAgZGF0YUxvZ0YoIsmbIik7CisgICAgICAgIGVsc2UgaWYgKHJhbmdlU3RhcnQgPT0g
JyInIHx8IHJhbmdlU3RhcnQgPT0gJ1xcJykKKyAgICAgICAgICAgIGRhdGFMb2dGKCJcXCVjIiwg
cmFuZ2VTdGFydCk7CisgICAgICAgIGVsc2UgaWYgKHJhbmdlU3RhcnQgPj0gJyEnICYmIHJhbmdl
U3RhcnQgPD0gJ34nKQorICAgICAgICAgICAgZGF0YUxvZ0YoIiVjIiwgcmFuZ2VTdGFydCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRhdGFMb2dGKCJcXFxcJWQiLCByYW5nZVN0YXJ0KTsK
KyAgICB9IGVsc2UgeworICAgICAgICBpZiAocmFuZ2VTdGFydCA9PSAxICYmIHJhbmdlRW5kID09
IDEyNykKKyAgICAgICAgICAgIGRhdGFMb2dGKCJbYW55IGlucHV0XSIpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBkYXRhTG9nRigiXFxcXCVkLVxcXFwlZCIsIHJhbmdlU3RhcnQsIHJhbmdl
RW5kKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHByaW50VHJhbnNpdGlvbih1bnNpZ25lZCBz
b3VyY2VOb2RlLCBjb25zdCBIYXNoTWFwPHVpbnQxNl90LCBIYXNoU2V0PHVuc2lnbmVkLCBEZWZh
dWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8dW5zaWduZWQ+Pj4mIHRyYW5zaXRpb25zLCB1aW50MTZfdCBlcHNpbG9uVHJhbnNpdGlvbkNo
YXJhY3RlcikKK3sKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBIYXNoU2V0PHVpbnQxNl90PiwgRGVm
YXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPHVuc2lnbmVkPj4gdHJhbnNpdGlvbnNQZXJUYXJnZXQ7CisKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIHRyYW5zaXRpb24gOiB0cmFuc2l0aW9ucykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIHRh
cmdldE5vZGUgOiB0cmFuc2l0aW9uLnZhbHVlKSB7CisgICAgICAgICAgICB0cmFuc2l0aW9uc1Bl
clRhcmdldC5hZGQodGFyZ2V0Tm9kZSwgSGFzaFNldDx1aW50MTZfdD4oKSk7CisgICAgICAgICAg
ICB0cmFuc2l0aW9uc1BlclRhcmdldC5maW5kKHRhcmdldE5vZGUpLT52YWx1ZS5hZGQodHJhbnNp
dGlvbi5rZXkpOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChjb25zdCBhdXRvJiB0cmFu
c2l0aW9uUGVyVGFyZ2V0IDogdHJhbnNpdGlvbnNQZXJUYXJnZXQpIHsKKyAgICAgICAgZGF0YUxv
Z0YoIiAgICAgICAgJWQgLT4gJWQgW2xhYmVsPVwiIiwgc291cmNlTm9kZSwgdHJhbnNpdGlvblBl
clRhcmdldC5rZXkpOworCisgICAgICAgIFZlY3Rvcjx1aW50MTZfdD4gaW5jb21taW5nQ2hhcmFj
dGVyczsKKyAgICAgICAgY29weVRvVmVjdG9yKHRyYW5zaXRpb25QZXJUYXJnZXQudmFsdWUsIGlu
Y29tbWluZ0NoYXJhY3RlcnMpOworICAgICAgICBzdGQ6OnNvcnQoaW5jb21taW5nQ2hhcmFjdGVy
cy5iZWdpbigpLCBpbmNvbW1pbmdDaGFyYWN0ZXJzLmVuZCgpKTsKKworICAgICAgICB1aW50MTZf
dCByYW5nZVN0YXJ0ID0gaW5jb21taW5nQ2hhcmFjdGVycy5maXJzdCgpOworICAgICAgICB1aW50
MTZfdCByYW5nZUVuZCA9IHJhbmdlU3RhcnQ7CisgICAgICAgIGJvb2wgZmlyc3QgPSB0cnVlOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIHNvcnRlZFRyYW5zaXRpb25JbmRleCA9IDE7IHNvcnRlZFRy
YW5zaXRpb25JbmRleCA8IGluY29tbWluZ0NoYXJhY3RlcnMuc2l6ZSgpOyArK3NvcnRlZFRyYW5z
aXRpb25JbmRleCkgeworICAgICAgICAgICAgdWludDE2X3QgbmV4dENoYXIgPSBpbmNvbW1pbmdD
aGFyYWN0ZXJzW3NvcnRlZFRyYW5zaXRpb25JbmRleF07CisgICAgICAgICAgICBpZiAobmV4dENo
YXIgPT0gcmFuZ2VFbmQrMSkgeworICAgICAgICAgICAgICAgIHJhbmdlRW5kID0gbmV4dENoYXI7
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBw
cmludFJhbmdlKGZpcnN0LCByYW5nZVN0YXJ0LCByYW5nZUVuZCwgZXBzaWxvblRyYW5zaXRpb25D
aGFyYWN0ZXIpOworICAgICAgICAgICAgcmFuZ2VTdGFydCA9IHJhbmdlRW5kID0gbmV4dENoYXI7
CisgICAgICAgICAgICBmaXJzdCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHByaW50UmFu
Z2UoZmlyc3QsIHJhbmdlU3RhcnQsIHJhbmdlRW5kLCBlcHNpbG9uVHJhbnNpdGlvbkNoYXJhY3Rl
cik7CisKKyAgICAgICAgZGF0YUxvZ0YoIlwiXTtcbiIpOworICAgIH0KK30KKwogdm9pZCBORkE6
OmRlYnVnUHJpbnREb3QoKSBjb25zdAogewogICAgIGRhdGFMb2dGKCJkaWdyYXBoIE5GQV9UcmFu
c2l0aW9ucyB7XG4iKTsKQEAgLTkzLDE2ICsxNjUsOCBAQCB2b2lkIE5GQTo6ZGVidWdQcmludERv
dCgpIGNvbnN0CiAgICAgZGF0YUxvZ0YoIiAgICB9XG4iKTsKIAogICAgIGRhdGFMb2dGKCIgICAg
e1xuIik7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9kZXMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzbG90IDogbV9ub2Rlc1tpXS50cmFuc2l0aW9u
cykgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBuZXh0U3RhdGUgOiBzbG90LnZhbHVlKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHNsb3Qua2V5ID09IGVwc2lsb25UcmFuc2l0aW9uQ2hhcmFj
dGVyKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiICAgICAgICAlZCAtPiAlZCBbbGFi
ZWw9XCLJm1wiXTtcbiIsIGksIG5leHRTdGF0ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nRigiICAgICAgICAlZCAtPiAlZCBbbGFiZWw9XCIlY1wi
XTtcbiIsIGksIG5leHRTdGF0ZSwgc2xvdC5rZXkpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vZGVzLnNpemUoKTsgKytp
KQorICAgICAgICBwcmludFRyYW5zaXRpb24oaSwgbV9ub2Rlc1tpXS50cmFuc2l0aW9ucywgZXBz
aWxvblRyYW5zaXRpb25DaGFyYWN0ZXIpOwogICAgIGRhdGFMb2dGKCIgICAgfVxuIik7CiAgICAg
ZGF0YUxvZ0YoIn1cbiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvTkZBLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkEuaApp
bmRleCA3Y2MxNDQ1NzQ5MjQ3N2QxNjFlZmFhODkyY2M2MTgzZTEwYTZkYWQ3Li4xMDlhNjk5OTAw
YjM4YzgyY2YyMzg0MTNhNTVkODgxODMzNzM0YjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ORkEuaApAQCAtNTAsNiArNTAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFcHNp
bG9uVHJhbnNpdGlvbih1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0byk7CiAgICAgdm9pZCBzZXRG
aW5hbCh1bnNpZ25lZCBub2RlKTsKIAorICAgIHVuc2lnbmVkIGdyYXBoU2l6ZSgpIGNvbnN0Owor
ICAgIHZvaWQgcmVzdG9yZVRvR3JhcGhTaXplKHVuc2lnbmVkKTsKKwogI2lmbmRlZiBOREVCVUcK
ICAgICB2b2lkIGRlYnVnUHJpbnREb3QoKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvTkZBTm9kZS5oCmluZGV4IDMyMzlkNjYzZmEzOTk3NDUyNTI4MWY0
ZTE2YzI5ZWU1YjE2ZDFjODguLmVhMjQzNzcwMDAwZGVjMDQ2OGJjODU4MGJkMzEwZjU2MWYxZjQ1
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQU5vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFOb2RlLmgKQEAgLTQw
LDcgKzQwLDcgQEAgY2xhc3MgTkZBTm9kZSB7CiBwdWJsaWM6CiAgICAgTkZBTm9kZSh1aW50NjRf
dCBydWxlSWQpOwogCi0gICAgSGFzaE1hcDx1aW50MTZfdCwgSGFzaFNldDx1bnNpZ25lZD4+IHRy
YW5zaXRpb25zOworICAgIEhhc2hNYXA8dWludDE2X3QsIEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1
bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4+PiB0cmFuc2l0aW9uczsKICAgICBib29sIGlzRmluYWw7CiAgICAgY29uc3Qg
dWludDY0X3QgcnVsZUlkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL05GQVRvREZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L05GQVRvREZBLmNwcAppbmRleCA4NjY2ZmRjYjVhOTBmMjgyNjQ3NmFjN2NiMzhhZDMyNTkxZGQw
N2M4Li5iM2YzMTU4ODgwMmVkNzRmMjFiNGFkNjIxOTQ4MTk0ZTY2ZGNiZTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCkBAIC01OCw3ICs1OCw3
IEBAIHN0YXRpYyBOb2RlSWRTZXQgZXBzaWxvbkNsb3N1cmUoY29uc3QgTm9kZUlkU2V0JiBub2Rl
U2V0LCBjb25zdCBWZWN0b3I8TkZBTm9kZT4mCiAgICAgICAgICAgICBjb25zdCBORkFOb2RlJiBu
b2RlID0gZ3JhcGhbbm9kZUlkXTsKICAgICAgICAgICAgIGF1dG8gZXBzaWxvblRyYW5zaXRpb25T
bG90ID0gbm9kZS50cmFuc2l0aW9ucy5maW5kKGVwc2lsb25UcmFuc2l0aW9uQ2hhcmFjdGVyKTsK
ICAgICAgICAgICAgIGlmIChlcHNpbG9uVHJhbnNpdGlvblNsb3QgIT0gbm9kZS50cmFuc2l0aW9u
cy5lbmQoKSkgewotICAgICAgICAgICAgICAgIGNvbnN0IEhhc2hTZXQ8dW5zaWduZWQ+JiB0YXJn
ZXRzID0gZXBzaWxvblRyYW5zaXRpb25TbG90LT52YWx1ZTsKKyAgICAgICAgICAgICAgICBjb25z
dCBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiYgdGFyZ2V0cyA9IGVwc2lsb25U
cmFuc2l0aW9uU2xvdC0+dmFsdWU7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCB0YXJn
ZXROb2RlSWQgOiB0YXJnZXRzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghb3V0cHV0Tm9k
ZVNldC5jb250YWlucyh0YXJnZXROb2RlSWQpKQogICAgICAgICAgICAgICAgICAgICAgICAgbmV4
dEdlbmVyYXRpb25EaXNjb3ZlcmVkTm9kZXMuYWRkKHRhcmdldE5vZGVJZCk7CkBAIC0xNDgsOSAr
MTQ4LDkgQEAgcHJpdmF0ZToKIHN0cnVjdCBIYXNoYWJsZU5vZGVJZFNldEhhc2ggewogICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEhhc2hhYmxlTm9kZUlkU2V0JiBwKQogICAgIHsKLSAg
ICAgICAgdW5zaWduZWQgaGFzaCA9IDA7CisgICAgICAgIHVuc2lnbmVkIGhhc2ggPSA0MjA3NDQ1
MTU1OwogICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJZCA6IHAubm9kZUlkU2V0KCkpCi0gICAg
ICAgICAgICBoYXNoIF49IERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaDo6aGFzaChub2RlSWQp
OworICAgICAgICAgICAgaGFzaCArPSBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2g6Omhhc2go
bm9kZUlkKTsKICAgICAgICAgcmV0dXJuIGhhc2g7CiAgICAgfQogCkBAIC0yMTIsNyArMjEyLDcg
QEAgREZBIE5GQVRvREZBOjpjb252ZXJ0KGNvbnN0IE5GQSYgbmZhKQogICAgIGRvIHsKICAgICAg
ICAgSGFzaGFibGVOb2RlSWRTZXQgc3RhdGVTZXQgPSB1bnByb2Nlc3NlZFN0YXRlU2V0cy50YWtl
QW55KCk7CiAKLSAgICAgICAgQVNTRVJUKCFwcm9jZXNzZWRTdGF0ZVNldHMuY29udGFpbnMoc3Rh
dGVTZXQpKTsKKyAgICAgICAgQVNTRVJUKCFwcm9jZXNzZWRTdGF0ZVNldHMuY29udGFpbnMoc3Rh
dGVTZXQubm9kZUlkU2V0KCkpKTsKICAgICAgICAgcHJvY2Vzc2VkU3RhdGVTZXRzLmFkZChzdGF0
ZVNldC5ub2RlSWRTZXQoKSk7CiAKICAgICAgICAgdW5zaWduZWQgZGZhTm9kZUlkID0gbmZhVG9E
RkFOb2RlTWFwLmdldChzdGF0ZVNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNGI1MWMzMWZjZDE5
NTVkN2IxNjdiYjUzOWE1Y2M5M2IzMTg0MDY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcApAQCAtMCwwICsxLDE5
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJV
UkxGaWx0ZXJQYXJzZXIuaCIKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNp
bmNsdWRlICJORkEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ZYXJyUGFyc2VyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKKwor
Y2xhc3MgR3JhcGhCdWlsZGVyIHsKK3ByaXZhdGU6CisgICAgc3RydWN0IEJvdW5kZWRTdWJHcmFw
aCB7CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0OworICAgICAgICB1bnNpZ25lZCBlbmQ7CisgICAg
fTsKK3B1YmxpYzoKKyAgICBHcmFwaEJ1aWxkZXIoTkZBJiBuZmEsIHVpbnQ2NF90IHBhdHRlcm5J
ZCkKKyAgICAgICAgOiBtX25mYShuZmEpCisgICAgICAgICwgbV9wYXR0ZXJuSWQocGF0dGVybklk
KQorICAgICAgICAsIG1fYWN0aXZlR3JvdXAoeyBuZmEucm9vdCgpLCBuZmEucm9vdCgpIH0pCisg
ICAgICAgICwgbV9sYXN0QXRvbShtX2FjdGl2ZUdyb3VwKQorICAgIHsKKyAgICB9CisKKyAgICB2
b2lkIGZpbmFsaXplKCkKKyAgICB7CisgICAgICAgIGlmIChoYXNFcnJvcigpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBpZiAobV9hY3RpdmVHcm91cC5zdGFydCAhPSBtX2FjdGl2ZUdy
b3VwLmVuZCkKKyAgICAgICAgICAgIG1fbmZhLnNldEZpbmFsKG1fYWN0aXZlR3JvdXAuZW5kKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmFpbChBU0NJSUxpdGVyYWwoIlRoZSBwYXR0ZXJu
IGNhbm5vdCBtYXRjaCBhbnl0aGluZy4iKSk7CisgICAgfQorCisgICAgY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXJyb3JNZXNzYWdl
OworICAgIH0KKworICAgIHZvaWQgYXRvbVBhdHRlcm5DaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVy
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzQVNDSUkoY2hhcmFjdGVyKSk7CisKKyAgICAgICAg
aWYgKGhhc0Vycm9yKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9oYXNWYWxp
ZEF0b20gPSB0cnVlOworICAgICAgICB1bnNpZ25lZCBuZXdFbmQgPSBtX25mYS5jcmVhdGVOb2Rl
KG1fcGF0dGVybklkKTsKKyAgICAgICAgbV9uZmEuYWRkVHJhbnNpdGlvbihtX2xhc3RBdG9tLmVu
ZCwgbmV3RW5kLCBzdGF0aWNfY2FzdDxjaGFyPihjaGFyYWN0ZXIpKTsKKyAgICAgICAgbV9sYXN0
QXRvbS5zdGFydCA9IG1fbGFzdEF0b20uZW5kOworICAgICAgICBtX2xhc3RBdG9tLmVuZCA9IG5l
d0VuZDsKKyAgICAgICAgbV9hY3RpdmVHcm91cC5lbmQgPSBtX2xhc3RBdG9tLmVuZDsKKyAgICB9
CisKKyAgICB2b2lkIGF0b21CdWlsdEluQ2hhcmFjdGVyQ2xhc3MoSlNDOjpZYXJyOjpCdWlsdElu
Q2hhcmFjdGVyQ2xhc3NJRCBidWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCwgYm9vbCBpbnZlcnRlZCkK
KyAgICB7CisgICAgICAgIGlmIChoYXNFcnJvcigpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmIChidWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCA9PSBKU0M6OllhcnI6Ok5ld2xpbmVD
bGFzc0lEICYmIGludmVydGVkKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogaGFuZGxlIG5ldyBs
aW5lIHByb3Blcmx5LgorICAgICAgICAgICAgbV9oYXNWYWxpZEF0b20gPSB0cnVlOworICAgICAg
ICAgICAgdW5zaWduZWQgbmV3RW5kID0gbV9uZmEuY3JlYXRlTm9kZShtX3BhdHRlcm5JZCk7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgMTI4OyArK2kpCisgICAgICAgICAg
ICAgICAgbV9uZmEuYWRkVHJhbnNpdGlvbihtX2xhc3RBdG9tLmVuZCwgbmV3RW5kLCBpKTsKKyAg
ICAgICAgICAgIG1fbGFzdEF0b20uc3RhcnQgPSBtX2xhc3RBdG9tLmVuZDsKKyAgICAgICAgICAg
IG1fbGFzdEF0b20uZW5kID0gbmV3RW5kOworICAgICAgICAgICAgbV9hY3RpdmVHcm91cC5lbmQg
PSBtX2xhc3RBdG9tLmVuZDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBmYWlsKEFTQ0lJ
TGl0ZXJhbCgiQ2hhcmFjdGVyIGNsYXNzIGlzIG5vdCBzdXBwb3J0ZWQuIikpOworICAgIH0KKwor
ICAgIHZvaWQgcXVhbnRpZnlBdG9tKHVuc2lnbmVkIG1pbmltdW0sIHVuc2lnbmVkIG1heGltdW0s
IGJvb2wpCisgICAgeworICAgICAgICBpZiAoaGFzRXJyb3IoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBBU1NFUlQobV9oYXNWYWxpZEF0b20pOworICAgICAgICBpZiAoIW1faGFz
VmFsaWRBdG9tKSB7CisgICAgICAgICAgICBmYWlsKEFTQ0lJTGl0ZXJhbCgiUXVhbnRpZmllciB3
aXRob3V0IGNvcnJlc3BvbmRpbmcgYXRvbSB0byBxdWFudGlmeS4iKSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1pbmltdW0gJiYgbWF4aW11bSA9PSAx
KQorICAgICAgICAgICAgbV9uZmEuYWRkRXBzaWxvblRyYW5zaXRpb24obV9sYXN0QXRvbS5zdGFy
dCwgbV9sYXN0QXRvbS5lbmQpOworICAgICAgICBlbHNlIGlmICghbWluaW11bSAmJiBtYXhpbXVt
ID09IEpTQzo6WWFycjo6cXVhbnRpZnlJbmZpbml0ZSkgeworICAgICAgICAgICAgbV9uZmEuYWRk
RXBzaWxvblRyYW5zaXRpb24obV9sYXN0QXRvbS5zdGFydCwgbV9sYXN0QXRvbS5lbmQpOworICAg
ICAgICAgICAgbV9uZmEuYWRkRXBzaWxvblRyYW5zaXRpb24obV9sYXN0QXRvbS5lbmQsIG1fbGFz
dEF0b20uc3RhcnQpOworICAgICAgICB9IGVsc2UgaWYgKG1pbmltdW0gPT0gMSAmJiBtYXhpbXVt
ID09IEpTQzo6WWFycjo6cXVhbnRpZnlJbmZpbml0ZSkKKyAgICAgICAgICAgIG1fbmZhLmFkZEVw
c2lsb25UcmFuc2l0aW9uKG1fbGFzdEF0b20uZW5kLCBtX2xhc3RBdG9tLnN0YXJ0KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgZmFpbChBU0NJSUxpdGVyYWwoIkFyYml0cmFyeSBhdG9tIHJl
cGV0aXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLiIpKTsKKyAgICB9CisKKyAgICBOT19SRVRVUk5f
RFVFX1RPX0FTU0VSVCB2b2lkIGF0b21CYWNrUmVmZXJlbmNlKHVuc2lnbmVkKQorICAgIHsKKyAg
ICAgICAgZmFpbChBU0NJSUxpdGVyYWwoIlBhdHRlcm5zIGNhbm5vdCBjb250YWluIGJhY2tyZWZl
cmVuY2VzLiIpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAg
dm9pZCBhdG9tQ2hhcmFjdGVyQ2xhc3NBdG9tKFVDaGFyKSB7IH0KKyAgICB2b2lkIGFzc2VydGlv
bkJPTCgpIHsgfQorICAgIHZvaWQgYXNzZXJ0aW9uRU9MKCkgeyB9CisgICAgdm9pZCBhc3NlcnRp
b25Xb3JkQm91bmRhcnkoYm9vbCkgeyB9CisgICAgdm9pZCBhdG9tQ2hhcmFjdGVyQ2xhc3NCZWdp
bihib29sID0gZmFsc2UpIHsgfQorICAgIHZvaWQgYXRvbUNoYXJhY3RlckNsYXNzUmFuZ2UoVUNo
YXIsIFVDaGFyKSB7IH0KKyAgICB2b2lkIGF0b21DaGFyYWN0ZXJDbGFzc0J1aWx0SW4oSlNDOjpZ
YXJyOjpCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCwgYm9vbCkgeyB9CisgICAgdm9pZCBhdG9tQ2hh
cmFjdGVyQ2xhc3NFbmQoKSB7IH0KKyAgICB2b2lkIGF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5C
ZWdpbihib29sID0gdHJ1ZSkgeyB9CisgICAgdm9pZCBhdG9tUGFyZW50aGV0aWNhbEFzc2VydGlv
bkJlZ2luKGJvb2wgPSBmYWxzZSkgeyB9CisgICAgdm9pZCBhdG9tUGFyZW50aGVzZXNFbmQoKSB7
IH0KKyAgICB2b2lkIGRpc2p1bmN0aW9uKCkgeyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBoYXNF
cnJvcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gIW1fZXJyb3JNZXNzYWdlLmlzTnVs
bCgpOworICAgIH0KKworICAgIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkK
KyAgICB7CisgICAgICAgIGlmIChoYXNFcnJvcigpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX2Vycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTsKKyAgICB9CisKKyAgICBORkEmIG1f
bmZhOworICAgIGNvbnN0IHVpbnQ2NF90IG1fcGF0dGVybklkOworCisgICAgQm91bmRlZFN1Ykdy
YXBoIG1fYWN0aXZlR3JvdXA7CisKKyAgICBib29sIG1faGFzVmFsaWRBdG9tID0gZmFsc2U7Cisg
ICAgQm91bmRlZFN1YkdyYXBoIG1fbGFzdEF0b207CisKKyAgICBTdHJpbmcgbV9lcnJvck1lc3Nh
Z2U7Cit9OworCit2b2lkIFVSTEZpbHRlclBhcnNlcjo6cGFyc2UoY29uc3QgU3RyaW5nJiBwYXR0
ZXJuLCB1aW50NjRfdCBwYXR0ZXJuSWQsIE5GQSYgbmZhKQoreworICAgIGlmICghcGF0dGVybi5j
b250YWluc09ubHlBU0NJSSgpKQorICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJh
bCgiVVJMRmlsdGVyUGFyc2VyIG9ubHkgc3VwcG9ydHMgQVNDSUkgcGF0dGVybnMuIik7CisgICAg
QVNTRVJUKCFwYXR0ZXJuLmlzRW1wdHkoKSk7CisKKyAgICBpZiAocGF0dGVybi5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIG9sZFNpemUgPSBuZmEuZ3JhcGhTaXpl
KCk7CisKKyAgICBHcmFwaEJ1aWxkZXIgZ3JhcGhCdWlsZGVyKG5mYSwgcGF0dGVybklkKTsKKyAg
ICBjb25zdCBjaGFyKiBlcnJvciA9IEpTQzo6WWFycjo6cGFyc2UoZ3JhcGhCdWlsZGVyLCBwYXR0
ZXJuLCAwKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gU3RyaW5n
KGVycm9yKTsKKyAgICBlbHNlCisgICAgICAgIGdyYXBoQnVpbGRlci5maW5hbGl6ZSgpOworCisg
ICAgaWYgKCFlcnJvcikKKyAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBncmFwaEJ1aWxkZXIuZXJy
b3JNZXNzYWdlKCk7CisKKyAgICBpZiAoaGFzRXJyb3IoKSkKKyAgICAgICAgbmZhLnJlc3RvcmVU
b0dyYXBoU2l6ZShvbGRTaXplKTsKK30KKworfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lv
bnMKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9V
UkxGaWx0ZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZp
bHRlclBhcnNlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlYzgwMjRhNjNlODRiYmFkZTdmYzE0YzAzMzkzYWI3
Njc3YjgwNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9VUkxGaWx0ZXJQYXJzZXIuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBVUkxGaWx0ZXJQYXJzZXJfaAorI2RlZmluZSBVUkxGaWx0ZXJQYXJzZXJfaAor
CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0
ZW5zaW9ucyB7CisKK2NsYXNzIE5GQTsKKworY2xhc3MgVVJMRmlsdGVyUGFyc2VyIHsKK3B1Ymxp
YzoKKyAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVybiwgdWludDY0X3QgcGF0dGVy
bklkLCBORkEmKTsKKworICAgIGJvb2wgaGFzRXJyb3IoKSBjb25zdCB7IHJldHVybiAhbV9lcnJv
ck1lc3NhZ2UuaXNOdWxsKCk7IH0KKyAgICBTdHJpbmcgZXJyb3JNZXNzYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9lcnJvck1lc3NhZ2U7IH0KKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgQm91bmRlZFN1
YkdyYXBoIHsKKyAgICAgICAgdW5zaWduZWQgc3RhcnQ7CisgICAgICAgIHVuc2lnbmVkIGVuZDsK
KyAgICB9OworCisgICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgQ29udGVudEV4dGVuc2lvbnMKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworI2VuZGlmIC8vIFVSTEZpbHRlclBhcnNl
cl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244370</attachid>
            <date>2015-01-09 14:07:53 -0800</date>
            <delta_ts>2015-01-09 16:51:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140283-20150109140758.patch</filename>
            <type>text/plain</type>
            <size>34654</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4MTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
OTViNjFkN2VlN2M5ODM2MmQwMDQwYmU3MTU2M2M2YTIzMWI3MTk4Li44NDBmMDJkY2YzY2Y3MzQ1
OGM2NTQ1YTkxYTRmM2I5Y2JiNjZiNTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNS0wMS0wOCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgQWRkIGJhc2ljIHBhdHRlcm4gbWF0Y2hpbmcgc3VwcG9ydCB0byB0
aGUgdXJsIGZpbHRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MDI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgTWFrZSBZYXJyUGFyc2VyLmggcHJpdmF0ZSBpbiBvcmRlciB0byB1c2UgaXQgZnJvbSBXZWJD
b3JlLgorCiAyMDE1LTAxLTA5ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTc3OTI1KTogSXQgYnJva2UgdGhlICFFTkFCTEUoSU5T
UEVDVE9SKSBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk3ZWMwZmY5YTQwOTZiZDEzMzk4NzU4YTdiNDQx
NDg3MzI3NmRlYWIuLjhiOGE2NzU3NmFkYjYzZDFjOWZlOTRjZWZiMWRkYzU3YjM0ZGZiMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw4NyBAQAorMjAxNS0wMS0wOCAgQmVuamFtaW4gUG91bGFpbiAg
PGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGJhc2ljIHBhdHRlcm4gbWF0Y2hp
bmcgc3VwcG9ydCB0byB0aGUgdXJsIGZpbHRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzb21lIGJhc2ljIGdlbmVyaWMg
cGF0dGVybiBzdXBwb3J0IGZvciB0aGUgdXJsIGZpbHRlcnMKKyAgICAgICAgb2YgQ29udGVudEV4
dGVuc2lvbnMuCisKKyAgICAgICAgSW5zdGVhZCBvZiB3cml0dGluZyBhIG5ldyBwYXJzZXIsIEkg
cmUtdXNlZCBHYXZpbidzIHBhcnNlciBmb3IgSmF2YVNjcmlwdAorICAgICAgICBSZWdFeHAuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBvbmx5IGltcGxlbWVudHMgdGhlIHZlcnkgYmFzaWMgc3R1ZmZz
OiB0cmFuc2l0aW9uIG9uIGFueSBjaGFyYWN0ZXIKKyAgICAgICAgYW5kIHJlcGV0aXRpb24uCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnNl
dFJ1bGVMaXN0KToKKyAgICAgICAgVXNlIHRoZSBuZXcgcGFyc2VyLgorCisgICAgICAgICogY29u
dGVudGV4dGVuc2lvbnMvREZBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpERkE6OkRGQSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6cHJp
bnRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6cHJpbnRUcmFu
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkE6OmRlYnVn
UHJpbnREb3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL05GQS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6cHJpbnRSYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6cHJpbnRUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpORkE6OmRlYnVnUHJpbnREb3QpOgorICAgICAgICBUaGUg
Z3JhcGhzIGdlbmVyYXRlZCB3aXRoIHRoZSBleHRlbmRlZCBwYXR0ZXJucyBhcmUgdmFzdGx5IG1v
cmUgY29tcGxpY2F0ZWQKKyAgICAgICAgdGhhbiB0aGUgb2xkIHByZWZpeCBtYXRjaGVyLgorICAg
ICAgICBJIGNoYW5nZWQgdGhlIGRlYnVnIG91dHB1dCB0byBoYXZlIGEgc2luZ2xlIGxpbmsgYmV0
d2VlbiBhbnkgdHdvIG5vZGVzCisgICAgICAgIGluc3RlYWQgb2Ygb25lIHBlciB0cmFuc2l0aW9u
LiBUaGlzIG1ha2VzIHRoZSBncmFwaCBhIGxpdHRsZSBtb3JlIG1hbmFnZWFibGUuCisKKyAgICAg
ICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ORkEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6Ok5GQTo6YWRkVHJhbnNpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6TkZBOjphZGRFcHNpbG9uVHJhbnNpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TkZBOjpncmFwaFNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5GQTo6cmVzdG9yZVRvR3JhcGhTaXplKToKKyAgICAgICAg
KiBjb250ZW50ZXh0ZW5zaW9ucy9ORkEuaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9O
RkFOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6ZXBzaWxvbkNs
b3N1cmUpOgorICAgICAgICBUaGUgbmV3IHBhcnNlciBjYW4gZ2VuZXJhdGUgdHJhbnNpdGlvbnMg
YmFjayB0byB0aGUgcm9vdCBub2RlIG9mIGluZGV4IHplcm8uCisgICAgICAgIEFsbCB0aGUgaGFz
aCBzdHJ1Y3R1cmVzIGhhZCB0byBiZSB1cGRhdGVkIHRvIHN1cHBvcnQgdGhpcyBraW5kIG9mIGtl
eS4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpIYXNoYWJsZU5vZGVJZFNldEhhc2g6Omhhc2gp
OgorICAgICAgICBUd28gdGlueSBpbXByb3ZlbWVudHM6CisgICAgICAgIC1Eb24ndCBoYXNoIHpl
cm8gdG8gemVybywgaXQgY2F1c2VzIG1vcmUgY29uZmxpY3RzIHRoYXQgbmVlZGVkLgorICAgICAg
ICAtVGhlIGhhc2ggb3BlcmF0aW9uIG11c3QgdXNlIGEgY29tbXV0YXRpdmUgb3BlcmF0aW9uLCBv
dGhlcndpc2UgdGhlIG9yZGVyCisgICAgICAgICBvZiBlbGVtZW50cyBjYW4gYWZmZWN0IHRoZSBo
YXNoLCB3aGljaCBpcyB1bmRlc2lyZWQgZm9yIGEgc2V0LgorICAgICAgICBJJ2xsIGltcHJvdmUg
dGhpcyBmdXJ0aGVyIGxhdGVyLgorCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6TkZBVG9ERkE6OmNvbnZlcnQpOgorCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvVVJM
RmlsdGVyUGFyc2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6R3JhcGhCdWlsZGVyOjpHcmFwaEJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6bV9sYXN0QXRvbSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjpmaW5hbGl6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjplcnJvck1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6YXRv
bVBhdHRlcm5DaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkdyYXBoQnVpbGRlcjo6YXRvbUJ1aWx0SW5DaGFyYWN0ZXJDbGFzcyk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjpxdWFudGlmeUF0b20pOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6YXRvbUJhY2tS
ZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVp
bGRlcjo6YXRvbUNoYXJhY3RlckNsYXNzQXRvbSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjphc3NlcnRpb25CT0wpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6YXNzZXJ0aW9uRU9MKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpHcmFwaEJ1aWxkZXI6OmFzc2VydGlvbldv
cmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhC
dWlsZGVyOjphdG9tQ2hhcmFjdGVyQ2xhc3NCZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjphdG9tQ2hhcmFjdGVyQ2xhc3NSYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjphdG9tQ2hh
cmFjdGVyQ2xhc3NCdWlsdEluKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpHcmFwaEJ1aWxkZXI6OmF0b21DaGFyYWN0ZXJDbGFzc0VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjphdG9tUGFyZW50aGVzZXNTdWJwYXR0
ZXJuQmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVp
bGRlcjo6YXRvbVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6R3JhcGhCdWlsZGVyOjphdG9tUGFyZW50aGVzZXNFbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRlcjo6ZGlzanVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBoQnVpbGRl
cjo6aGFzRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkdyYXBo
QnVpbGRlcjo6ZmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VVJM
RmlsdGVyUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvVVJMRmls
dGVyUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VVJMRmls
dGVyUGFyc2VyOjpoYXNFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6VVJMRmlsdGVyUGFyc2VyOjplcnJvck1lc3NhZ2UpOgorCiAyMDE1LTAxLTA5ICBCZW5qYW1p
biBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggZXJyb3IgaGFu
ZGxpbmcgb2YgQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyIHdoZW4gdGhlIHRvcCBsZXZlbCBpbnB1
dCBpcyB1bnVzYWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2Mjk1OGJiMjBl
N2NmM2VjYjhmODkxNjFhNTBhZTY0ZDgxZTliODM4Li5lN2Q0MjMxNzRmMzc1MTlhMDI2ZmEwYTg2
NTk3Njk1YTJhODAxOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTY4LDcg
Kzk2OCw3IEBACiAJCTg2NzA0Qjg1MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjdF
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4NjEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyckpJVC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjcwNEI3RjEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgKi87IH07CiAJCTg2
NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MDEyREJBMzM3MDBBOUZFN0IgLyogWWFy
ckpJVC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTg2NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyclBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJ
CTg2NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyclBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MjEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwICovOyB9OwogCQk4NjcwNEI4QTEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODgw
RjFGMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODgwRjFCMTQzMjhCQjkw
MEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLzsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMzgxN2Q2
NTcxNWQzYzM1MDgyOTM3MzA2YTIyNmFmNGNlMmJiNmRjLi4wMjU0NDdiMzE5NjRlOWQwNGU2NTI0
YzJkOTFjMTA1OGY3MDAxYTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDI4LDYgKzEwMjgsOCBAQAogCQkyNjc3MjVGRjFB
NUIzQUQ5MDAzQzI0REQgLyogREZBTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjY3NzI1RjkxQTVCM0FEOTAwM0MyNEREIC8qIERGQU5vZGUuaCAq
LzsgfTsKIAkJMjY3NzI2MDAxQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZBLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2NzcyNUZBMUE1QjNBRDkw
MDNDMjRERCAvKiBORkFUb0RGQS5jcHAgKi87IH07CiAJCTI2NzcyNjAxMUE1QjNBRDkwMDNDMjRE
RCAvKiBORkFUb0RGQS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjY3NzI1RkIxQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZBLmggKi87IH07CisJCTI2
NzcyNjA0MUE1REY2RjIwMDNDMjRERCAvKiBVUkxGaWx0ZXJQYXJzZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY3NzI2MDIxQTVERjZGMjAwM0My
NEREIC8qIFVSTEZpbHRlclBhcnNlci5jcHAgKi87IH07CisJCTI2NzcyNjA1MUE1REY2RjIwMDND
MjRERCAvKiBVUkxGaWx0ZXJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI2NzcyNjAzMUE1REY2RjIwMDNDMjRERCAvKiBVUkxGaWx0ZXJQYXJz
ZXIuaCAqLzsgfTsKIAkJMjY5MjM5OTYxNTA1RTFBQTAwOUU1N0ZDIC8qIEpTSURCVmVyc2lvbkNo
YW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyNjkyMzk5MjE1MDVFMUFBMDA5RTU3RkMgLyogSlNJREJWZXJzaW9uQ2hhbmdlRXZlbnQuaCAq
LzsgfTsKIAkJMjY5Mzk3MjExQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY5Mzk3MUYxQTRBNDEyRjAw
RTgzNDlEIC8qIE5GQU5vZGUuY3BwICovOyB9OwogCQkyNjkzOTcyMjFBNEE0MTJGMDBFODM0OUQg
LyogTkZBTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjY5Mzk3MjAxQTRBNDEyRjAwRTgzNDlEIC8qIE5GQU5vZGUuaCAqLzsgfTsKQEAgLTgwNjUs
NiArODA2Nyw4IEBACiAJCTI2NzcyNUY5MUE1QjNBRDkwMDNDMjRERCAvKiBERkFOb2RlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGQU5vZGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjY3NzI1RkExQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZBLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5GQVRvREZBLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjY3NzI1RkIxQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRv
REZBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5GQVRvREZBLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2NzcyNjAyMUE1REY2RjIwMDNDMjRERCAvKiBVUkxG
aWx0ZXJQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJM
RmlsdGVyUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjY3NzI2MDMx
QTVERjZGMjAwM0MyNEREIC8qIFVSTEZpbHRlclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVUkxGaWx0ZXJQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMjY5MjM5OTExNTA1RTFBQTAwOUU1N0ZDIC8qIEpTSURCVmVyc2lvbkNoYW5nZUV2ZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSURCVmVyc2lvbkNo
YW5nZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjY5MjM5OTIxNTA1
RTFBQTAwOUU1N0ZDIC8qIEpTSURCVmVyc2lvbkNoYW5nZUV2ZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTSURCVmVyc2lvbkNoYW5nZUV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTI2OTM5NzFGMUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFOb2RlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5GQU5vZGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU0MTksNiArMTU0MjMsOCBAQAogCQkJCTI2OTM5
NzIwMUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFOb2RlLmggKi8sCiAJCQkJMjY3NzI1RkExQTVCM0FE
OTAwM0MyNEREIC8qIE5GQVRvREZBLmNwcCAqLywKIAkJCQkyNjc3MjVGQjFBNUIzQUQ5MDAzQzI0
REQgLyogTkZBVG9ERkEuaCAqLywKKwkJCQkyNjc3MjYwMjFBNURGNkYyMDAzQzI0REQgLyogVVJM
RmlsdGVyUGFyc2VyLmNwcCAqLywKKwkJCQkyNjc3MjYwMzFBNURGNkYyMDAzQzI0REQgLyogVVJM
RmlsdGVyUGFyc2VyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvbnRlbnRleHRlbnNpb25zOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI0MTI5LDYgKzI0MTM1LDcgQEAKIAkJCQk4
NTk5MkVCRTBBQTUwNjk1MDBBQzA3ODUgLyogRE9NSFRNTExpbmtFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NUU3MTFCODBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTExpbmtFbGVtZW50
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RUNCRUYzMEFBNzYyNjkwMDU0NEYwQiAv
KiBET01IVE1MTWFwRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjY3NzI2MDUxQTVERjZG
MjAwM0MyNEREIC8qIFVSTEZpbHRlclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzEx
QjkwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxNYXBFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNTE1NzlGMEMwM0JCRDMwMDhCQjBFRSAvKiBET01IVE1MTWFycXVlZUVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTE1NkVBMEMwM0I3NDEwMDhCQjBFRSAvKiBE
T01IVE1MTWFycXVlZUVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODg5OSw2
ICsyODkwNiw3IEBACiAJCQkJMDdCNUEyREIxNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNr
TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwN0I1QTMwRDE0Njg3RDcxMDBBODFFQ0UgLyog
SlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDYxNDFBMENE
NjgyNjkwMEZBREE3NSAvKiBKU1RpbWVSYW5nZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjY3
NzI2MDQxQTVERjZGMjAwM0MyNEREIC8qIFVSTEZpbHRlclBhcnNlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkRBN0MxNjE4ODMyMkVCMDBDOTU0QjUgLyogSlNUb3VjaC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkRBN0MxODE4ODMyMkVCMDBDOTU0QjUgLyogSlNUb3VjaEV2ZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGREE3QzFBMTg4MzIyRUIwMEM5NTRCNSAvKiBKU1RvdWNoTGlz
dC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCmluZGV4IGE2ZDFh
YTMwOWFlYWIwNTgxZjFlZmVkMzJkZWUyMzBhZDVhNDI0MzcuLjAyMzczOWRmMzdiNzE3ZmJiNDZj
N2E2NGNjNmM1ZjU2Y2ZmMjYyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApAQCAtMzEs
NyArMzEsMTAgQEAKICNpbmNsdWRlICJORkEuaCIKICNpbmNsdWRlICJORkFUb0RGQS5oIgogI2lu
Y2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgIlVSTEZpbHRlclBhcnNlci5oIgorI2luY2x1ZGUgPHd0
Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU1LDIxICs1
OCwxOCBAQCB2b2lkIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6c2V0UnVsZUxpc3QoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBWZWN0bwogICAgIH0KIAogICAgIE5GQSBuZmE7Ci0g
ICAgdW5zaWduZWQgcm9vdE5vZGUgPSBuZmEucm9vdCgpOwogICAgIGZvciAodW5zaWduZWQgcnVs
ZUluZGV4ID0gMDsgcnVsZUluZGV4IDwgcnVsZUxpc3Quc2l6ZSgpOyArK3J1bGVJbmRleCkgewog
ICAgICAgICBjb25zdCBDb250ZW50RXh0ZW5zaW9uUnVsZSYgY29udGVudEV4dGVuc2lvblJ1bGUg
PSBydWxlTGlzdFtydWxlSW5kZXhdOwogICAgICAgICBjb25zdCBDb250ZW50RXh0ZW5zaW9uUnVs
ZTo6VHJpZ2dlciYgdHJpZ2dlciA9IGNvbnRlbnRFeHRlbnNpb25SdWxlLnRyaWdnZXIoKTsKICAg
ICAgICAgQVNTRVJUKHRyaWdnZXIudXJsRmlsdGVyLmxlbmd0aCgpKTsKIAotICAgICAgICB1bnNp
Z25lZCBsYXN0Tm9kZSA9IHJvb3ROb2RlOworICAgICAgICBVUkxGaWx0ZXJQYXJzZXIgdXJsRmls
dGVyUGFyc2VyOworICAgICAgICB1cmxGaWx0ZXJQYXJzZXIucGFyc2UodHJpZ2dlci51cmxGaWx0
ZXIsIHJ1bGVJbmRleCwgbmZhKTsKIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
dHJpZ2dlci51cmxGaWx0ZXIubGVuZ3RoKCk7ICsraSkgewotICAgICAgICAgICAgdW5zaWduZWQg
bmV3Tm9kZSA9IG5mYS5jcmVhdGVOb2RlKHJ1bGVJbmRleCk7Ci0gICAgICAgICAgICBuZmEuYWRk
VHJhbnNpdGlvbihsYXN0Tm9kZSwgbmV3Tm9kZSwgdHJpZ2dlci51cmxGaWx0ZXJbaV0pOwotICAg
ICAgICAgICAgbGFzdE5vZGUgPSBuZXdOb2RlOworICAgICAgICBpZiAodXJsRmlsdGVyUGFyc2Vy
Lmhhc0Vycm9yKCkpIHsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJFcnJvciB3aGlsZSBwYXJzaW5n
ICVzOiAlcyIsIHRyaWdnZXIudXJsRmlsdGVyLnV0ZjgoKS5kYXRhKCksIHVybEZpbHRlclBhcnNl
ci5lcnJvck1lc3NhZ2UoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9Ci0KLSAgICAgICAgbmZhLnNldEZpbmFsKGxhc3ROb2RlKTsKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogbmV2ZXIgYWRkIGEgREZBIHRoYXQgb25seSBtYXRjaGVzIHRoZSBlbXB0eSBz
ZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmNwcAppbmRleCBlNGFiYmZi
OTVjOWRmZmExMTlkMGU2ZjNkMzAzYmQyOTk2ZGNhMTkxLi4yOTAwYzY5ODZmODdiYTlmMGQ5YmMy
MjI2NWNmNTJjZWQzMTEzOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ERkEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RG
QS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgREZBOjpERkEoVmVjdG9yPERGQU5vZGU+JiYgbm9kZXMs
IHVuc2lnbmVkIHJvb3RJbmRleCkKICAgICA6IG1fbm9kZXMoV1RGOjptb3ZlKG5vZGVzKSkKICAg
ICAsIG1fcm9vdChyb290SW5kZXgpCiB7Ci0gICAgQVNTRVJUKHJvb3RJbmRleCA8IG5vZGVzLnNp
emUoKSk7CisgICAgQVNTRVJUKHJvb3RJbmRleCA8IG1fbm9kZXMuc2l6ZSgpKTsKIH0KIAogREZB
OjpERkEoY29uc3QgREZBJiBkZmEpCkBAIC04MCw2ICs4MCw2MiBAQCBjb25zdCBWZWN0b3I8dWlu
dDY0X3Q+JiBERkE6OmFjdGlvbnModW5zaWduZWQgY3VycmVudFN0YXRlKSBjb25zdAogfQogCiAj
aWZuZGVmIE5ERUJVRworc3RhdGljIHZvaWQgcHJpbnRSYW5nZShib29sIGZpcnN0UmFuZ2UsIGNo
YXIgcmFuZ2VTdGFydCwgY2hhciByYW5nZUVuZCkKK3sKKyAgICBpZiAoIWZpcnN0UmFuZ2UpCisg
ICAgICAgIGRhdGFMb2dGKCIsICIpOworICAgIGlmIChyYW5nZVN0YXJ0ID09IHJhbmdlRW5kKSB7
CisgICAgICAgIGlmIChyYW5nZVN0YXJ0ID09ICciJyB8fCByYW5nZVN0YXJ0ID09ICdcXCcpCisg
ICAgICAgICAgICBkYXRhTG9nRigiXFwlYyIsIHJhbmdlU3RhcnQpOworICAgICAgICBlbHNlIGlm
IChyYW5nZVN0YXJ0ID49ICchJyAmJiByYW5nZVN0YXJ0IDw9ICd+JykKKyAgICAgICAgICAgIGRh
dGFMb2dGKCIlYyIsIHJhbmdlU3RhcnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkYXRh
TG9nRigiXFxcXCVkIiwgcmFuZ2VTdGFydCk7CisgICAgfSBlbHNlCisgICAgICAgIGRhdGFMb2dG
KCJcXFxcJWQtXFxcXCVkIiwgcmFuZ2VTdGFydCwgcmFuZ2VFbmQpOworfQorCitzdGF0aWMgdm9p
ZCBwcmludFRyYW5zaXRpb24odW5zaWduZWQgc291cmNlTm9kZSwgY29uc3QgSGFzaE1hcDx1aW50
MTZfdCwgdW5zaWduZWQ+JiB0cmFuc2l0aW9ucykKK3sKKyAgICBpZiAodHJhbnNpdGlvbnMuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBWZWN0b3I8
dWludDE2X3Q+LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiB0cmFuc2l0aW9uc1BlclRhcmdldDsKKworICAg
IC8vIEZpcnN0LCB3ZSBidWlsZCB0aGUgbGlzdCBvZiB0cmFuc2l0aW9ucyBjb21pbmcgdG8gZWFj
aCB0YXJnZXQgbm9kZS4KKyAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5zaXRpb24gOiB0cmFuc2l0
aW9ucykgeworICAgICAgICB1bnNpZ25lZCB0YXJnZXQgPSB0cmFuc2l0aW9uLnZhbHVlOworICAg
ICAgICB0cmFuc2l0aW9uc1BlclRhcmdldC5hZGQodGFyZ2V0LCBWZWN0b3I8dWludDE2X3Q+KCkp
OworCisgICAgICAgIHRyYW5zaXRpb25zUGVyVGFyZ2V0LmZpbmQodGFyZ2V0KS0+dmFsdWUuYXBw
ZW5kKHRyYW5zaXRpb24ua2V5KTsKKyAgICB9CisKKyAgICAvLyBUaGVuIHdlIGdvIG92ZXIgZWFj
aCBvbmUgYW4gZGlzcGxheSB0aGUgcmFuZ2VzIG9uZSBieSBvbmUuCisgICAgZm9yIChjb25zdCBh
dXRvJiB0cmFuc2l0aW9uUGVyVGFyZ2V0IDogdHJhbnNpdGlvbnNQZXJUYXJnZXQpIHsKKyAgICAg
ICAgZGF0YUxvZ0YoIiAgICAgICAgJWQgLT4gJWQgW2xhYmVsPVwiIiwgc291cmNlTm9kZSwgdHJh
bnNpdGlvblBlclRhcmdldC5rZXkpOworCisgICAgICAgIFZlY3Rvcjx1aW50MTZfdD4gaW5jb21t
aW5nQ2hhcmFjdGVycyA9IHRyYW5zaXRpb25QZXJUYXJnZXQudmFsdWU7CisgICAgICAgIHN0ZDo6
c29ydChpbmNvbW1pbmdDaGFyYWN0ZXJzLmJlZ2luKCksIGluY29tbWluZ0NoYXJhY3RlcnMuZW5k
KCkpOworCisgICAgICAgIGNoYXIgcmFuZ2VTdGFydCA9IGluY29tbWluZ0NoYXJhY3RlcnMuZmly
c3QoKTsKKyAgICAgICAgY2hhciByYW5nZUVuZCA9IHJhbmdlU3RhcnQ7CisgICAgICAgIGJvb2wg
Zmlyc3QgPSB0cnVlOworICAgICAgICBmb3IgKHVuc2lnbmVkIHNvcnRlZFRyYW5zaXRpb25JbmRl
eCA9IDE7IHNvcnRlZFRyYW5zaXRpb25JbmRleCA8IGluY29tbWluZ0NoYXJhY3RlcnMuc2l6ZSgp
OyArK3NvcnRlZFRyYW5zaXRpb25JbmRleCkgeworICAgICAgICAgICAgY2hhciBuZXh0Q2hhciA9
IGluY29tbWluZ0NoYXJhY3RlcnNbc29ydGVkVHJhbnNpdGlvbkluZGV4XTsKKyAgICAgICAgICAg
IGlmIChuZXh0Q2hhciA9PSByYW5nZUVuZCsxKSB7CisgICAgICAgICAgICAgICAgcmFuZ2VFbmQg
PSBuZXh0Q2hhcjsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHByaW50UmFuZ2UoZmlyc3QsIHJhbmdlU3RhcnQsIHJhbmdlRW5kKTsKKyAgICAg
ICAgICAgIHJhbmdlU3RhcnQgPSByYW5nZUVuZCA9IG5leHRDaGFyOworICAgICAgICAgICAgZmly
c3QgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBwcmludFJhbmdlKGZpcnN0LCByYW5nZVN0
YXJ0LCByYW5nZUVuZCk7CisKKyAgICAgICAgZGF0YUxvZ0YoIlwiXTtcbiIpOworICAgIH0KK30K
Kwogdm9pZCBERkE6OmRlYnVnUHJpbnREb3QoKSBjb25zdAogewogICAgIGRhdGFMb2dGKCJkaWdy
YXBoIERGQV9UcmFuc2l0aW9ucyB7XG4iKTsKQEAgLTExNywxMCArMTczLDkgQEAgdm9pZCBERkE6
OmRlYnVnUHJpbnREb3QoKSBjb25zdAogICAgIGRhdGFMb2dGKCIgICAgfVxuIik7CiAKICAgICBk
YXRhTG9nRigiICAgIHtcbiIpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vZGVz
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgc2xvdCA6IG1fbm9kZXNb
aV0udHJhbnNpdGlvbnMpCi0gICAgICAgICAgICBkYXRhTG9nRigiICAgICAgICAlZCAtPiAlZCBb
bGFiZWw9XCIlY1wiXTtcbiIsIGksIHNsb3QudmFsdWUsIHNsb3Qua2V5KTsKLSAgICB9CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9kZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHBy
aW50VHJhbnNpdGlvbihpLCBtX25vZGVzW2ldLnRyYW5zaXRpb25zKTsKKwogICAgIGRhdGFMb2dG
KCIgICAgfVxuIik7CiAgICAgZGF0YUxvZ0YoIn1cbiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL05GQS5jcHAKaW5kZXggNTFlOWE3ZTI3ODRiMmIxNWVlMDBkYzgwYTI4Y2Qy
ZDEyMDU3ODhjNi4uNzI4ODc5ZDA2NTExMWJjM2RlM2ZkN2M3NTE0MzljN2M5MmFmMmFlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkEuY3BwCkBAIC01Myw3ICs1Myw3IEBA
IHZvaWQgTkZBOjphZGRUcmFuc2l0aW9uKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBjaGFy
IGNoYXJhY3RlcikKICAgICBBU1NFUlQodG8gPCBtX25vZGVzLnNpemUoKSk7CiAgICAgQVNTRVJU
KGNoYXJhY3Rlcik7CiAKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbm9kZXNbZnJvbV0udHJhbnNp
dGlvbnMuYWRkKGNoYXJhY3RlciwgSGFzaFNldDx1bnNpZ25lZD4oKSk7CisgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX25vZGVzW2Zyb21dLnRyYW5zaXRpb25zLmFkZChjaGFyYWN0ZXIsIEhhc2hTZXQ8
dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+KCkpOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuYWRkKHRvKTsKIH0KIApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIE5GQTo6YWRkRXBzaWxv
blRyYW5zaXRpb24odW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pCiAgICAgQVNTRVJUKGZyb20g
PCBtX25vZGVzLnNpemUoKSk7CiAgICAgQVNTRVJUKHRvIDwgbV9ub2Rlcy5zaXplKCkpOwogCi0g
ICAgYXV0byBhZGRSZXN1bHQgPSBtX25vZGVzW2Zyb21dLnRyYW5zaXRpb25zLmFkZChlcHNpbG9u
VHJhbnNpdGlvbkNoYXJhY3RlciwgSGFzaFNldDx1bnNpZ25lZD4oKSk7CisgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX25vZGVzW2Zyb21dLnRyYW5zaXRpb25zLmFkZChlcHNpbG9uVHJhbnNpdGlvbkNo
YXJhY3RlciwgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4oKSk7CiAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hZGQodG8pOwogfQogCkBAIC03Miw3ICs3Miw3OSBAQCB2
b2lkIE5GQTo6c2V0RmluYWwodW5zaWduZWQgbm9kZSkKICAgICBtX25vZGVzW25vZGVdLmlzRmlu
YWwgPSB0cnVlOwogfQogCit1bnNpZ25lZCBORkE6OmdyYXBoU2l6ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fbm9kZXMuc2l6ZSgpOworfQorCit2b2lkIE5GQTo6cmVzdG9yZVRvR3JhcGhTaXpl
KHVuc2lnbmVkIHNpemUpCit7CisgICAgQVNTRVJUKHNpemUgPiAxKTsKKyAgICBBU1NFUlQoc2l6
ZSA8PSBncmFwaFNpemUoKSk7CisKKyAgICBtX25vZGVzLnNocmluayhzaXplKTsKK30KKwogI2lm
bmRlZiBOREVCVUcKKworc3RhdGljIHZvaWQgcHJpbnRSYW5nZShib29sIGZpcnN0UmFuZ2UsIHVp
bnQxNl90IHJhbmdlU3RhcnQsIHVpbnQxNl90IHJhbmdlRW5kLCB1aW50MTZfdCBlcHNpbG9uVHJh
bnNpdGlvbkNoYXJhY3RlcikKK3sKKyAgICBpZiAoIWZpcnN0UmFuZ2UpCisgICAgICAgIGRhdGFM
b2dGKCIsICIpOworICAgIGlmIChyYW5nZVN0YXJ0ID09IHJhbmdlRW5kKSB7CisgICAgICAgIGlm
IChyYW5nZVN0YXJ0ID09IGVwc2lsb25UcmFuc2l0aW9uQ2hhcmFjdGVyKQorICAgICAgICAgICAg
ZGF0YUxvZ0YoIsmbIik7CisgICAgICAgIGVsc2UgaWYgKHJhbmdlU3RhcnQgPT0gJyInIHx8IHJh
bmdlU3RhcnQgPT0gJ1xcJykKKyAgICAgICAgICAgIGRhdGFMb2dGKCJcXCVjIiwgcmFuZ2VTdGFy
dCk7CisgICAgICAgIGVsc2UgaWYgKHJhbmdlU3RhcnQgPj0gJyEnICYmIHJhbmdlU3RhcnQgPD0g
J34nKQorICAgICAgICAgICAgZGF0YUxvZ0YoIiVjIiwgcmFuZ2VTdGFydCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGRhdGFMb2dGKCJcXFxcJWQiLCByYW5nZVN0YXJ0KTsKKyAgICB9IGVs
c2UgeworICAgICAgICBpZiAocmFuZ2VTdGFydCA9PSAxICYmIHJhbmdlRW5kID09IDEyNykKKyAg
ICAgICAgICAgIGRhdGFMb2dGKCJbYW55IGlucHV0XSIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBkYXRhTG9nRigiXFxcXCVkLVxcXFwlZCIsIHJhbmdlU3RhcnQsIHJhbmdlRW5kKTsKKyAg
ICB9Cit9CisKK3N0YXRpYyB2b2lkIHByaW50VHJhbnNpdGlvbih1bnNpZ25lZCBzb3VyY2VOb2Rl
LCBjb25zdCBIYXNoTWFwPHVpbnQxNl90LCBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1
bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWdu
ZWQ+Pj4mIHRyYW5zaXRpb25zLCB1aW50MTZfdCBlcHNpbG9uVHJhbnNpdGlvbkNoYXJhY3RlcikK
K3sKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBIYXNoU2V0PHVpbnQxNl90PiwgRGVmYXVsdEhhc2g8
dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2ln
bmVkPj4gdHJhbnNpdGlvbnNQZXJUYXJnZXQ7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5z
aXRpb24gOiB0cmFuc2l0aW9ucykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIHRhcmdldE5vZGUg
OiB0cmFuc2l0aW9uLnZhbHVlKSB7CisgICAgICAgICAgICB0cmFuc2l0aW9uc1BlclRhcmdldC5h
ZGQodGFyZ2V0Tm9kZSwgSGFzaFNldDx1aW50MTZfdD4oKSk7CisgICAgICAgICAgICB0cmFuc2l0
aW9uc1BlclRhcmdldC5maW5kKHRhcmdldE5vZGUpLT52YWx1ZS5hZGQodHJhbnNpdGlvbi5rZXkp
OworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChjb25zdCBhdXRvJiB0cmFuc2l0aW9uUGVy
VGFyZ2V0IDogdHJhbnNpdGlvbnNQZXJUYXJnZXQpIHsKKyAgICAgICAgZGF0YUxvZ0YoIiAgICAg
ICAgJWQgLT4gJWQgW2xhYmVsPVwiIiwgc291cmNlTm9kZSwgdHJhbnNpdGlvblBlclRhcmdldC5r
ZXkpOworCisgICAgICAgIFZlY3Rvcjx1aW50MTZfdD4gaW5jb21taW5nQ2hhcmFjdGVyczsKKyAg
ICAgICAgY29weVRvVmVjdG9yKHRyYW5zaXRpb25QZXJUYXJnZXQudmFsdWUsIGluY29tbWluZ0No
YXJhY3RlcnMpOworICAgICAgICBzdGQ6OnNvcnQoaW5jb21taW5nQ2hhcmFjdGVycy5iZWdpbigp
LCBpbmNvbW1pbmdDaGFyYWN0ZXJzLmVuZCgpKTsKKworICAgICAgICB1aW50MTZfdCByYW5nZVN0
YXJ0ID0gaW5jb21taW5nQ2hhcmFjdGVycy5maXJzdCgpOworICAgICAgICB1aW50MTZfdCByYW5n
ZUVuZCA9IHJhbmdlU3RhcnQ7CisgICAgICAgIGJvb2wgZmlyc3QgPSB0cnVlOworICAgICAgICBm
b3IgKHVuc2lnbmVkIHNvcnRlZFRyYW5zaXRpb25JbmRleCA9IDE7IHNvcnRlZFRyYW5zaXRpb25J
bmRleCA8IGluY29tbWluZ0NoYXJhY3RlcnMuc2l6ZSgpOyArK3NvcnRlZFRyYW5zaXRpb25JbmRl
eCkgeworICAgICAgICAgICAgdWludDE2X3QgbmV4dENoYXIgPSBpbmNvbW1pbmdDaGFyYWN0ZXJz
W3NvcnRlZFRyYW5zaXRpb25JbmRleF07CisgICAgICAgICAgICBpZiAobmV4dENoYXIgPT0gcmFu
Z2VFbmQrMSkgeworICAgICAgICAgICAgICAgIHJhbmdlRW5kID0gbmV4dENoYXI7CisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmludFJhbmdl
KGZpcnN0LCByYW5nZVN0YXJ0LCByYW5nZUVuZCwgZXBzaWxvblRyYW5zaXRpb25DaGFyYWN0ZXIp
OworICAgICAgICAgICAgcmFuZ2VTdGFydCA9IHJhbmdlRW5kID0gbmV4dENoYXI7CisgICAgICAg
ICAgICBmaXJzdCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHByaW50UmFuZ2UoZmlyc3Qs
IHJhbmdlU3RhcnQsIHJhbmdlRW5kLCBlcHNpbG9uVHJhbnNpdGlvbkNoYXJhY3Rlcik7CisKKyAg
ICAgICAgZGF0YUxvZ0YoIlwiXTtcbiIpOworICAgIH0KK30KKwogdm9pZCBORkE6OmRlYnVnUHJp
bnREb3QoKSBjb25zdAogewogICAgIGRhdGFMb2dGKCJkaWdyYXBoIE5GQV9UcmFuc2l0aW9ucyB7
XG4iKTsKQEAgLTkzLDE2ICsxNjUsOCBAQCB2b2lkIE5GQTo6ZGVidWdQcmludERvdCgpIGNvbnN0
CiAgICAgZGF0YUxvZ0YoIiAgICB9XG4iKTsKIAogICAgIGRhdGFMb2dGKCIgICAge1xuIik7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9kZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBzbG90IDogbV9ub2Rlc1tpXS50cmFuc2l0aW9ucykgewotICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBuZXh0U3RhdGUgOiBzbG90LnZhbHVlKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHNsb3Qua2V5ID09IGVwc2lsb25UcmFuc2l0aW9uQ2hhcmFjdGVyKQotICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nRigiICAgICAgICAlZCAtPiAlZCBbbGFiZWw9XCLJm1wi
XTtcbiIsIGksIG5leHRTdGF0ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nRigiICAgICAgICAlZCAtPiAlZCBbbGFiZWw9XCIlY1wiXTtcbiIsIGks
IG5leHRTdGF0ZSwgc2xvdC5rZXkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vZGVzLnNpemUoKTsgKytpKQorICAgICAg
ICBwcmludFRyYW5zaXRpb24oaSwgbV9ub2Rlc1tpXS50cmFuc2l0aW9ucywgZXBzaWxvblRyYW5z
aXRpb25DaGFyYWN0ZXIpOwogICAgIGRhdGFMb2dGKCIgICAgfVxuIik7CiAgICAgZGF0YUxvZ0Yo
In1cbiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
TkZBLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkEuaAppbmRleCA3Y2Mx
NDQ1NzQ5MjQ3N2QxNjFlZmFhODkyY2M2MTgzZTEwYTZkYWQ3Li4xMDlhNjk5OTAwYjM4YzgyY2Yy
Mzg0MTNhNTVkODgxODMzNzM0YjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9ORkEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9O
RkEuaApAQCAtNTAsNiArNTAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFcHNpbG9uVHJhbnNp
dGlvbih1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0byk7CiAgICAgdm9pZCBzZXRGaW5hbCh1bnNp
Z25lZCBub2RlKTsKIAorICAgIHVuc2lnbmVkIGdyYXBoU2l6ZSgpIGNvbnN0OworICAgIHZvaWQg
cmVzdG9yZVRvR3JhcGhTaXplKHVuc2lnbmVkKTsKKwogI2lmbmRlZiBOREVCVUcKICAgICB2b2lk
IGRlYnVnUHJpbnREb3QoKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvTkZBTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvTkZBTm9kZS5oCmluZGV4IDMyMzlkNjYzZmEzOTk3NDUyNTI4MWY0ZTE2YzI5ZWU1
YjE2ZDFjODguLmVhMjQzNzcwMDAwZGVjMDQ2OGJjODU4MGJkMzEwZjU2MWYxZjQ1YWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQU5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFOb2RlLmgKQEAgLTQwLDcgKzQwLDcg
QEAgY2xhc3MgTkZBTm9kZSB7CiBwdWJsaWM6CiAgICAgTkZBTm9kZSh1aW50NjRfdCBydWxlSWQp
OwogCi0gICAgSGFzaE1hcDx1aW50MTZfdCwgSGFzaFNldDx1bnNpZ25lZD4+IHRyYW5zaXRpb25z
OworICAgIEhhc2hNYXA8dWludDE2X3QsIEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVu
c2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25l
ZD4+PiB0cmFuc2l0aW9uczsKICAgICBib29sIGlzRmluYWw7CiAgICAgY29uc3QgdWludDY0X3Qg
cnVsZUlkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L05GQVRvREZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZB
LmNwcAppbmRleCA4NjY2ZmRjYjVhOTBmMjgyNjQ3NmFjN2NiMzhhZDMyNTkxZGQwN2M4Li5iM2Yz
MTU4ODgwMmVkNzRmMjFiNGFkNjIxOTQ4MTk0ZTY2ZGNiZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHN0YXRp
YyBOb2RlSWRTZXQgZXBzaWxvbkNsb3N1cmUoY29uc3QgTm9kZUlkU2V0JiBub2RlU2V0LCBjb25z
dCBWZWN0b3I8TkZBTm9kZT4mCiAgICAgICAgICAgICBjb25zdCBORkFOb2RlJiBub2RlID0gZ3Jh
cGhbbm9kZUlkXTsKICAgICAgICAgICAgIGF1dG8gZXBzaWxvblRyYW5zaXRpb25TbG90ID0gbm9k
ZS50cmFuc2l0aW9ucy5maW5kKGVwc2lsb25UcmFuc2l0aW9uQ2hhcmFjdGVyKTsKICAgICAgICAg
ICAgIGlmIChlcHNpbG9uVHJhbnNpdGlvblNsb3QgIT0gbm9kZS50cmFuc2l0aW9ucy5lbmQoKSkg
ewotICAgICAgICAgICAgICAgIGNvbnN0IEhhc2hTZXQ8dW5zaWduZWQ+JiB0YXJnZXRzID0gZXBz
aWxvblRyYW5zaXRpb25TbG90LT52YWx1ZTsKKyAgICAgICAgICAgICAgICBjb25zdCBIYXNoU2V0
PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiYgdGFyZ2V0cyA9IGVwc2lsb25UcmFuc2l0aW9u
U2xvdC0+dmFsdWU7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCB0YXJnZXROb2RlSWQg
OiB0YXJnZXRzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghb3V0cHV0Tm9kZVNldC5jb250
YWlucyh0YXJnZXROb2RlSWQpKQogICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEdlbmVyYXRp
b25EaXNjb3ZlcmVkTm9kZXMuYWRkKHRhcmdldE5vZGVJZCk7CkBAIC0xNDgsOSArMTQ4LDkgQEAg
cHJpdmF0ZToKIHN0cnVjdCBIYXNoYWJsZU5vZGVJZFNldEhhc2ggewogICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IEhhc2hhYmxlTm9kZUlkU2V0JiBwKQogICAgIHsKLSAgICAgICAgdW5z
aWduZWQgaGFzaCA9IDA7CisgICAgICAgIHVuc2lnbmVkIGhhc2ggPSA0MjA3NDQ1MTU1OwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJZCA6IHAubm9kZUlkU2V0KCkpCi0gICAgICAgICAgICBo
YXNoIF49IERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaDo6aGFzaChub2RlSWQpOworICAgICAg
ICAgICAgaGFzaCArPSBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2g6Omhhc2gobm9kZUlkKTsK
ICAgICAgICAgcmV0dXJuIGhhc2g7CiAgICAgfQogCkBAIC0yMTIsNyArMjEyLDcgQEAgREZBIE5G
QVRvREZBOjpjb252ZXJ0KGNvbnN0IE5GQSYgbmZhKQogICAgIGRvIHsKICAgICAgICAgSGFzaGFi
bGVOb2RlSWRTZXQgc3RhdGVTZXQgPSB1bnByb2Nlc3NlZFN0YXRlU2V0cy50YWtlQW55KCk7CiAK
LSAgICAgICAgQVNTRVJUKCFwcm9jZXNzZWRTdGF0ZVNldHMuY29udGFpbnMoc3RhdGVTZXQpKTsK
KyAgICAgICAgQVNTRVJUKCFwcm9jZXNzZWRTdGF0ZVNldHMuY29udGFpbnMoc3RhdGVTZXQubm9k
ZUlkU2V0KCkpKTsKICAgICAgICAgcHJvY2Vzc2VkU3RhdGVTZXRzLmFkZChzdGF0ZVNldC5ub2Rl
SWRTZXQoKSk7CiAKICAgICAgICAgdW5zaWduZWQgZGZhTm9kZUlkID0gbmZhVG9ERkFOb2RlTWFw
LmdldChzdGF0ZVNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvVVJMRmlsdGVyUGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MWJmM2Q4MGVmOWY1YmU0NDljNDlm
OWQ1Y2Q1MjQ3MWY0OWYyZmVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcApAQCAtMCwwICsxLDI0MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVUkxGaWx0ZXJQ
YXJzZXIuaCIKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJO
RkEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ZYXJyUGFyc2VyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKKworY2xhc3MgR3Jh
cGhCdWlsZGVyIHsKK3ByaXZhdGU6CisgICAgc3RydWN0IEJvdW5kZWRTdWJHcmFwaCB7CisgICAg
ICAgIHVuc2lnbmVkIHN0YXJ0OworICAgICAgICB1bnNpZ25lZCBlbmQ7CisgICAgfTsKK3B1Ymxp
YzoKKyAgICBHcmFwaEJ1aWxkZXIoTkZBJiBuZmEsIHVpbnQ2NF90IHBhdHRlcm5JZCkKKyAgICAg
ICAgOiBtX25mYShuZmEpCisgICAgICAgICwgbV9wYXR0ZXJuSWQocGF0dGVybklkKQorICAgICAg
ICAsIG1fYWN0aXZlR3JvdXAoeyBuZmEucm9vdCgpLCBuZmEucm9vdCgpIH0pCisgICAgICAgICwg
bV9sYXN0QXRvbShtX2FjdGl2ZUdyb3VwKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFs
aXplKCkKKyAgICB7CisgICAgICAgIGlmIChoYXNFcnJvcigpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBpZiAobV9hY3RpdmVHcm91cC5zdGFydCAhPSBtX2FjdGl2ZUdyb3VwLmVuZCkK
KyAgICAgICAgICAgIG1fbmZhLnNldEZpbmFsKG1fYWN0aXZlR3JvdXAuZW5kKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgZmFpbChBU0NJSUxpdGVyYWwoIlRoZSBwYXR0ZXJuIGNhbm5vdCBt
YXRjaCBhbnl0aGluZy4iKSk7CisgICAgfQorCisgICAgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXJyb3JNZXNzYWdlOworICAgIH0K
KworICAgIHZvaWQgYXRvbVBhdHRlcm5DaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGlzQVNDSUkoY2hhcmFjdGVyKSk7CisKKyAgICAgICAgaWYgKGhhc0Vy
cm9yKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9oYXNWYWxpZEF0b20gPSB0
cnVlOworICAgICAgICB1bnNpZ25lZCBuZXdFbmQgPSBtX25mYS5jcmVhdGVOb2RlKG1fcGF0dGVy
bklkKTsKKyAgICAgICAgbV9uZmEuYWRkVHJhbnNpdGlvbihtX2xhc3RBdG9tLmVuZCwgbmV3RW5k
LCBzdGF0aWNfY2FzdDxjaGFyPihjaGFyYWN0ZXIpKTsKKyAgICAgICAgbV9sYXN0QXRvbS5zdGFy
dCA9IG1fbGFzdEF0b20uZW5kOworICAgICAgICBtX2xhc3RBdG9tLmVuZCA9IG5ld0VuZDsKKyAg
ICAgICAgbV9hY3RpdmVHcm91cC5lbmQgPSBtX2xhc3RBdG9tLmVuZDsKKyAgICB9CisKKyAgICB2
b2lkIGF0b21CdWlsdEluQ2hhcmFjdGVyQ2xhc3MoSlNDOjpZYXJyOjpCdWlsdEluQ2hhcmFjdGVy
Q2xhc3NJRCBidWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCwgYm9vbCBpbnZlcnRlZCkKKyAgICB7Cisg
ICAgICAgIGlmIChoYXNFcnJvcigpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm
IChidWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCA9PSBKU0M6OllhcnI6Ok5ld2xpbmVDbGFzc0lEICYm
IGludmVydGVkKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogaGFuZGxlIG5ldyBsaW5lIHByb3Bl
cmx5LgorICAgICAgICAgICAgbV9oYXNWYWxpZEF0b20gPSB0cnVlOworICAgICAgICAgICAgdW5z
aWduZWQgbmV3RW5kID0gbV9uZmEuY3JlYXRlTm9kZShtX3BhdHRlcm5JZCk7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgMTI4OyArK2kpCisgICAgICAgICAgICAgICAgbV9u
ZmEuYWRkVHJhbnNpdGlvbihtX2xhc3RBdG9tLmVuZCwgbmV3RW5kLCBpKTsKKyAgICAgICAgICAg
IG1fbGFzdEF0b20uc3RhcnQgPSBtX2xhc3RBdG9tLmVuZDsKKyAgICAgICAgICAgIG1fbGFzdEF0
b20uZW5kID0gbmV3RW5kOworICAgICAgICAgICAgbV9hY3RpdmVHcm91cC5lbmQgPSBtX2xhc3RB
dG9tLmVuZDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBmYWlsKEFTQ0lJTGl0ZXJhbCgi
Q2hhcmFjdGVyIGNsYXNzIGlzIG5vdCBzdXBwb3J0ZWQuIikpOworICAgIH0KKworICAgIHZvaWQg
cXVhbnRpZnlBdG9tKHVuc2lnbmVkIG1pbmltdW0sIHVuc2lnbmVkIG1heGltdW0sIGJvb2wpCisg
ICAgeworICAgICAgICBpZiAoaGFzRXJyb3IoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBBU1NFUlQobV9oYXNWYWxpZEF0b20pOworICAgICAgICBpZiAoIW1faGFzVmFsaWRBdG9t
KSB7CisgICAgICAgICAgICBmYWlsKEFTQ0lJTGl0ZXJhbCgiUXVhbnRpZmllciB3aXRob3V0IGNv
cnJlc3BvbmRpbmcgYXRvbSB0byBxdWFudGlmeS4iKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIW1pbmltdW0gJiYgbWF4aW11bSA9PSAxKQorICAgICAg
ICAgICAgbV9uZmEuYWRkRXBzaWxvblRyYW5zaXRpb24obV9sYXN0QXRvbS5zdGFydCwgbV9sYXN0
QXRvbS5lbmQpOworICAgICAgICBlbHNlIGlmICghbWluaW11bSAmJiBtYXhpbXVtID09IEpTQzo6
WWFycjo6cXVhbnRpZnlJbmZpbml0ZSkgeworICAgICAgICAgICAgbV9uZmEuYWRkRXBzaWxvblRy
YW5zaXRpb24obV9sYXN0QXRvbS5zdGFydCwgbV9sYXN0QXRvbS5lbmQpOworICAgICAgICAgICAg
bV9uZmEuYWRkRXBzaWxvblRyYW5zaXRpb24obV9sYXN0QXRvbS5lbmQsIG1fbGFzdEF0b20uc3Rh
cnQpOworICAgICAgICB9IGVsc2UgaWYgKG1pbmltdW0gPT0gMSAmJiBtYXhpbXVtID09IEpTQzo6
WWFycjo6cXVhbnRpZnlJbmZpbml0ZSkKKyAgICAgICAgICAgIG1fbmZhLmFkZEVwc2lsb25UcmFu
c2l0aW9uKG1fbGFzdEF0b20uZW5kLCBtX2xhc3RBdG9tLnN0YXJ0KTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgZmFpbChBU0NJSUxpdGVyYWwoIkFyYml0cmFyeSBhdG9tIHJlcGV0aXRpb25z
IGFyZSBub3Qgc3VwcG9ydGVkLiIpKTsKKyAgICB9CisKKyAgICBOT19SRVRVUk5fRFVFX1RPX0FT
U0VSVCB2b2lkIGF0b21CYWNrUmVmZXJlbmNlKHVuc2lnbmVkKQorICAgIHsKKyAgICAgICAgZmFp
bChBU0NJSUxpdGVyYWwoIlBhdHRlcm5zIGNhbm5vdCBjb250YWluIGJhY2tyZWZlcmVuY2VzLiIp
KTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgdm9pZCBhdG9t
Q2hhcmFjdGVyQ2xhc3NBdG9tKFVDaGFyKQorICAgIHsKKyAgICAgICAgZmFpbChBU0NJSUxpdGVy
YWwoIkNoYXJhY3RlciBjbGFzcyBhdG9tcyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuIikpOworICAg
IH0KKworICAgIHZvaWQgYXNzZXJ0aW9uQk9MKCkKKyAgICB7CisgICAgICAgIGZhaWwoQVNDSUlM
aXRlcmFsKCJMaW5lIGJvdW5kYXJ5IGFzc2VydGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiIp
KTsKKyAgICB9CisKKyAgICB2b2lkIGFzc2VydGlvbkVPTCgpCisgICAgeworICAgICAgICBmYWls
KEFTQ0lJTGl0ZXJhbCgiTGluZSBib3VuZGFyeSBhc3NlcnRpb25zIGFyZSBub3Qgc3VwcG9ydGVk
IHlldC4iKSk7CisgICAgfQorCisgICAgdm9pZCBhc3NlcnRpb25Xb3JkQm91bmRhcnkoYm9vbCkK
KyAgICB7CisgICAgICAgIGZhaWwoQVNDSUlMaXRlcmFsKCJXb3JkIGJvdW5kYXJpZXMgYXNzZXJ0
aW9ucyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuIikpOworICAgIH0KKworICAgIHZvaWQgYXRvbUNo
YXJhY3RlckNsYXNzQmVnaW4oYm9vbCA9IGZhbHNlKQorICAgIHsKKyAgICAgICAgZmFpbChBU0NJ
SUxpdGVyYWwoIkNoYXJhY3RlciBjbGFzcyBhdG9tcyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuIikp
OworICAgIH0KKworICAgIHZvaWQgYXRvbUNoYXJhY3RlckNsYXNzUmFuZ2UoVUNoYXIsIFVDaGFy
KQorICAgIHsKKyAgICAgICAgZmFpbChBU0NJSUxpdGVyYWwoIkNoYXJhY3RlciBjbGFzcyByYW5n
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiIpKTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21DaGFy
YWN0ZXJDbGFzc0J1aWx0SW4oSlNDOjpZYXJyOjpCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCwgYm9v
bCkKKyAgICB7CisgICAgICAgIGZhaWwoQVNDSUlMaXRlcmFsKCJCdWlsZGlucyBjaGFyYWN0ZXIg
Y2xhc3MgYXRvbXMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiIpKTsKKyAgICB9CisKKyAgICB2b2lk
IGF0b21DaGFyYWN0ZXJDbGFzc0VuZCgpCisgICAgeworICAgICAgICBmYWlsKEFTQ0lJTGl0ZXJh
bCgiQ2hhcmFjdGVyIGNsYXNzIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4iKSk7CisgICAgfQorCisg
ICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4oYm9vbCA9IHRydWUpCisgICAg
eworICAgICAgICBmYWlsKEFTQ0lJTGl0ZXJhbCgiR3JvdXBzIGFyZSBub3Qgc3VwcG9ydGVkIHll
dC4iKSk7CisgICAgfQorCisgICAgdm9pZCBhdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2lu
KGJvb2wgPSBmYWxzZSkKKyAgICB7CisgICAgICAgIGZhaWwoQVNDSUlMaXRlcmFsKCJHcm91cHMg
YXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiIpKTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21QYXJlbnRo
ZXNlc0VuZCgpCisgICAgeworICAgICAgICBmYWlsKEFTQ0lJTGl0ZXJhbCgiR3JvdXBzIGFyZSBu
b3Qgc3VwcG9ydGVkIHlldC4iKSk7CisgICAgfQorCisgICAgdm9pZCBkaXNqdW5jdGlvbigpCisg
ICAgeworICAgICAgICBmYWlsKEFTQ0lJTGl0ZXJhbCgiRGlzanVuY3Rpb25zIGFyZSBub3Qgc3Vw
cG9ydGVkIHlldC4iKSk7CisgICAgfQorCisKK3ByaXZhdGU6CisgICAgYm9vbCBoYXNFcnJvcigp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gIW1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpOwor
ICAgIH0KKworICAgIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKKyAgICB7
CisgICAgICAgIGlmIChoYXNFcnJvcigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBt
X2Vycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTsKKyAgICB9CisKKyAgICBORkEmIG1fbmZhOwor
ICAgIGNvbnN0IHVpbnQ2NF90IG1fcGF0dGVybklkOworCisgICAgQm91bmRlZFN1YkdyYXBoIG1f
YWN0aXZlR3JvdXA7CisKKyAgICBib29sIG1faGFzVmFsaWRBdG9tID0gZmFsc2U7CisgICAgQm91
bmRlZFN1YkdyYXBoIG1fbGFzdEF0b207CisKKyAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7Cit9
OworCit2b2lkIFVSTEZpbHRlclBhcnNlcjo6cGFyc2UoY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCB1
aW50NjRfdCBwYXR0ZXJuSWQsIE5GQSYgbmZhKQoreworICAgIGlmICghcGF0dGVybi5jb250YWlu
c09ubHlBU0NJSSgpKQorICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVVJM
RmlsdGVyUGFyc2VyIG9ubHkgc3VwcG9ydHMgQVNDSUkgcGF0dGVybnMuIik7CisgICAgQVNTRVJU
KCFwYXR0ZXJuLmlzRW1wdHkoKSk7CisKKyAgICBpZiAocGF0dGVybi5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIG9sZFNpemUgPSBuZmEuZ3JhcGhTaXplKCk7CisK
KyAgICBHcmFwaEJ1aWxkZXIgZ3JhcGhCdWlsZGVyKG5mYSwgcGF0dGVybklkKTsKKyAgICBjb25z
dCBjaGFyKiBlcnJvciA9IEpTQzo6WWFycjo6cGFyc2UoZ3JhcGhCdWlsZGVyLCBwYXR0ZXJuLCAw
KTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gU3RyaW5nKGVycm9y
KTsKKyAgICBlbHNlCisgICAgICAgIGdyYXBoQnVpbGRlci5maW5hbGl6ZSgpOworCisgICAgaWYg
KCFlcnJvcikKKyAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBncmFwaEJ1aWxkZXIuZXJyb3JNZXNz
YWdlKCk7CisKKyAgICBpZiAoaGFzRXJyb3IoKSkKKyAgICAgICAgbmZhLnJlc3RvcmVUb0dyYXBo
U2l6ZShvbGRTaXplKTsKK30KKworfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0
ZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBh
cnNlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNlYzgwMjRhNjNlODRiYmFkZTdmYzE0YzAzMzkzYWI3Njc3Yjgw
NmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9V
UkxGaWx0ZXJQYXJzZXIuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBVUkxGaWx0ZXJQYXJzZXJfaAorI2RlZmluZSBVUkxGaWx0ZXJQYXJzZXJfaAorCisjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9u
cyB7CisKK2NsYXNzIE5GQTsKKworY2xhc3MgVVJMRmlsdGVyUGFyc2VyIHsKK3B1YmxpYzoKKyAg
ICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVybiwgdWludDY0X3QgcGF0dGVybklkLCBO
RkEmKTsKKworICAgIGJvb2wgaGFzRXJyb3IoKSBjb25zdCB7IHJldHVybiAhbV9lcnJvck1lc3Nh
Z2UuaXNOdWxsKCk7IH0KKyAgICBTdHJpbmcgZXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9lcnJvck1lc3NhZ2U7IH0KKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgQm91bmRlZFN1YkdyYXBo
IHsKKyAgICAgICAgdW5zaWduZWQgc3RhcnQ7CisgICAgICAgIHVuc2lnbmVkIGVuZDsKKyAgICB9
OworCisgICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgQ29u
dGVudEV4dGVuc2lvbnMKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworI2VuZGlmIC8vIFVSTEZpbHRlclBhcnNlcl9oCg==
</data>
<flag name="review"
          id="269294"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>