<?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>136893</bug_id>
          
          <creation_ts>2014-09-17 12:26:40 -0700</creation_ts>
          <short_desc>Web Inspector: Should be able to attach a debugger to a JSContext before anything is executed</short_desc>
          <delta_ts>2014-09-23 16:59:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mark.lam</cc>
    
    <cc>ossy</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1035750</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-09-17 12:26:40 -0700</bug_when>
    <thetext>A shortcoming of JSContext inspection right now is that by the time you attach an Inspector you may have missed something (e.g. some evaluateScript invocations). There should be a way to have a debugger attach to a JSContext before any evaluations happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035751</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-09-17 12:27:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/18369504&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035962</commentid>
    <comment_count>2</comment_count>
      <attachid>238316</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-09-18 11:51:06 -0700</bug_when>
    <thetext>Created attachment 238316
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035963</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-18 11:52:37 -0700</bug_when>
    <thetext>Attachment 238316 did not pass style-queue:


ERROR: Source/WTF/wtf/Assertions.cpp:399:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Assertions.cpp:401:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/runtime/JSGlobalObjectDebuggable.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035970</commentid>
    <comment_count>4</comment_count>
      <attachid>238316</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-18 12:48:04 -0700</bug_when>
    <thetext>Comment on attachment 238316
[PATCH] Proposed Fix

Clearing flags on attachment: 238316

Committed r173731: &lt;http://trac.webkit.org/changeset/173731&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035971</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-18 12:48:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035983</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-09-18 14:15:45 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 238316 [details])
&gt; Clearing flags on attachment: 238316
&gt; 
&gt; Committed r173731: &lt;http://trac.webkit.org/changeset/173731&gt;

It broke the Apple Windows, GTK and EFL build, please fix them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035994</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-09-18 15:07:22 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 238316 [details] [details])
&gt; &gt; Clearing flags on attachment: 238316
&gt; &gt; 
&gt; &gt; Committed r173731: &lt;http://trac.webkit.org/changeset/173731&gt;
&gt; 
&gt; It broke the Apple Windows, GTK and EFL build, please fix them.

Rolled out in r173736: &lt;http://trac.webkit.org/changeset/173736&gt;.

Commit-queue beat the EWS bots. I&apos;ll address this using EWS to test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035995</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-09-18 15:07:46 -0700</bug_when>
    <thetext>Reopening because this was rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036013</commentid>
    <comment_count>9</comment_count>
      <attachid>238332</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-09-18 16:24:24 -0700</bug_when>
    <thetext>Created attachment 238332
[PATCH] For Bots 1

I will need the Win EWS to give me the new symbol name. This should fix style and EFL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036014</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-18 16:26:59 -0700</bug_when>
    <thetext>Attachment 238332 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSGlobalObjectDebuggable.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036034</commentid>
    <comment_count>11</comment_count>
      <attachid>238341</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-09-18 17:51:52 -0700</bug_when>
    <thetext>Created attachment 238341
[PATCH] For Bots 2

Windows bot failed without the patch. Trying Windows again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036606</commentid>
    <comment_count>12</comment_count>
      <attachid>238498</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-09-22 15:02:28 -0700</bug_when>
    <thetext>Created attachment 238498
[PATCH] Proposed Fix

This should get things working for windows now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036773</commentid>
    <comment_count>13</comment_count>
      <attachid>238498</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-23 11:38:32 -0700</bug_when>
    <thetext>Comment on attachment 238498
[PATCH] Proposed Fix

Clearing flags on attachment: 238498

Committed r173882: &lt;http://trac.webkit.org/changeset/173882&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036774</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-23 11:38:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036868</commentid>
    <comment_count>15</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-09-23 16:28:06 -0700</bug_when>
    <thetext>The mangled symbol name for 64-bit Windows is wrong, breaking the build. I&apos;ll check-in a fix as soon as my local build finishes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036874</commentid>
    <comment_count>16</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-09-23 16:40:43 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; The mangled symbol name for 64-bit Windows is wrong, breaking the build. I&apos;ll check-in a fix as soon as my local build finishes.

Doh! Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036876</commentid>
    <comment_count>17</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-09-23 16:59:58 -0700</bug_when>
    <thetext>Build fix for 64-bit Windows committed in r173900 &lt;http://trac.webkit.org/changeset/173900&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238316</attachid>
            <date>2014-09-18 11:51:06 -0700</date>
            <delta_ts>2014-09-18 12:48:04 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>WK-auto-inspect.patch</filename>
            <type>text/plain</type>
            <size>37093</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDcxZTBmYjAuLjFlYTA2YWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE0LTA5LTE3ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2hvdWxk
IGJlIGFibGUgdG8gYXR0YWNoIGEgZGVidWdnZXIgdG8gYSBKU0NvbnRleHQgYmVmb3JlIGFueXRo
aW5nIGlzIGV4ZWN1dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzY4OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRzIG5ldyByZW1vdGUgaW5zcGVjdG9yIHByb3RvY29sIGhhbmRsaW5nIGZvciBh
dXRvbWF0aWMgaW5zcGVjdGlvbi4KKyAgICAgICAgRGVidWdnZXJzIGNhbiBzaWduYWwgdGhleSBo
YXZlIGVuYWJsZWQgYXV0b21hdGljIGluc3BlY3Rpb24sIGFuZAorICAgICAgICB3aGVuIGRlYnVn
Z2FibGVzIGFyZSBjcmVhdGVkIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIHdpbGwgcGF1c2UgdG8K
KyAgICAgICAgc2VlIGlmIHRoZSBkZWJ1Z2dlciB3aWxsIGluc3BlY3Qgb3IgZGVjbGluZSB0byBp
bnNwZWN0IHRoZSBkZWJ1Z2dhYmxlLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JDb25zdGFudHMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3Rvci5oOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
Lm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpnbG9iYWxBdXRvbWF0aWNJbnNwZWN0aW9uU3RhdGUp
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcik6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c3RhcnQpOgorICAgICAgICBX
aGVuIGZpcnN0IHN0YXJ0aW5nLCBjaGVjayB0aGUgZ2xvYmFsICJpcyB0aGVyZSBhbiBhdXRvLWlu
c3BlY3QiIGRlYnVnZ2VyIHN0YXRlLgorICAgICAgICBUaGlzIGlzIG5lY2Vzc2FyeSBzbyB0aGF0
IHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGtub3dzIGlmIGl0IHNob3VsZCBwYXVzZSBvcgorICAg
ICAgICBub3Qgd2hlbiBhIGRlYnVnZ2FibGUgaXMgY3JlYXRlZCwgZXZlbiB3aXRob3V0IGhhdmlu
ZyBjb25uZWN0ZWQgdG8gd2ViaW5zcGVjdG9yZCB5ZXQuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVEZWJ1Z2dhYmxlQXV0b21hdGljSW5zcGVjdENhbmRpZGF0
ZSk6CisgICAgICAgIFdoZW4gYSBkZWJ1Z2dhYmxlIGhhcyBlbmFibGVkIHJlbW90ZSBpbnNwZWN0
aW9uLCB0YWtlIHRoaXMgcGF0aCB0byBwcm9wb3NlCisgICAgICAgIGl0IGFzIGFuIGF1dG9tYXRp
YyBpbnNwZWN0aW9uIGNhbmRpZGF0ZSBpZiB0aGVyZSBpcyBhbiBhdXRvLWluc3BlY3QgZGVidWdn
ZXIuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0b21hdGlj
SW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3NhZ2UpOgorICAgICAgICBTZW5kIHRoZSBhdXRvbWF0aWMg
aW5zcGVjdGlvbiBjYW5kaWRhdGUgbWVzc2FnZS4KKworICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yOjpzZXR1cEZhaWxlZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6c2V0dXBTdWNjZWVkZWQpOgorICAgICAgICBBZnRlciBhdHRlbXB0aW5nIHRv
IG9wZW4gYW4gaW5zcGVjdG9yLCB1bnBhdXNlIGlmIGl0IHdhcyBmb3IgdGhlCisgICAgICAgIGF1
dG9tYXRpYyBpbnNwZWN0aW9uIGNhbmRpZGF0ZS4KKworICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6OndhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKToKKyAgICAgICAgV2hl
biBydW5uaW5nIGEgbmVzdGVkIHJ1bmxvb3AsIGNoZWNrIGlmIHdlIHNob3VsZCByZW1haW4gcGF1
c2VkLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2V0dXBYUENDb25u
ZWN0aW9uSWZOZWVkZWQpOgorICAgICAgICBJZiBieSB0aGUgdGltZSB3ZSBjb25uZWN0IHRvIHdl
Ymluc3BlY3RvcmQgd2UgaGF2ZSBhIGNhbmRpZGF0ZSwgdGhlbgorICAgICAgICBpbW1lZGlhdGVs
eSBzZW5kIHRoZSBjYW5kaWRhdGUgbWVzc2FnZS4KKworICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6OnN0b3BJbnRlcm5hbCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUlu
c3BlY3Rvcjo6eHBjQ29ubmVjdGlvbkZhaWxlZCk6CisgICAgICAgIEluIGVycm9yIGNhc2VzLCBj
bGVhciBvdXIgc3RhdGUuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjp4
cGNDb25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yOjpyZWNlaXZlZEF1dG9tYXRpY0luc3BlY3Rpb25Db25maWd1cmF0aW9uTWVzc2Fn
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRBdXRvbWF0
aWNJbnNwZWN0aW9uUmVqZWN0TWVzc2FnZSk6CisgICAgICAgIFVwZGF0ZSBzdGF0ZSB3aGVuIHJl
Y2VpdmluZyBuZXcgbWVzc2FnZXMuCisKKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGU6OnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQpOgorICAgICAgICBT
cGVjaWFsIGNhc2Ugd2hlbiBhIGRlYnVnZ2FibGUgaXMgbmV3bHkgYWxsb3dlZCB0byBiZSBkZWJ1
Z2dhYmxlLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6
OnBhdXNlV2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24pOgorICAgICAgICBSdW4gYSBuZXN0
ZWQgcnVuIGxvb3Agd2hpbGUgdGhpcyBpcyBhbiBhdXRvbWF0aWMgaW5zcGVjdGlvbiBjYW5kaWRh
dGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRl
bmQpOgorICAgICAgICBXaGVuIHRoZSBpbnNwZWN0b3Igc3RhcnRzIHZpYSBhdXRvbWF0aWMgaW5z
cGVjdGlvbiBhdXRvbWF0aWNhbGx5IHBhdXNlLgorICAgICAgICBXZSBwbGFuIG9uIHJlbW92aW5n
IHRoaXMgY29uZGl0aW9uIGJ5IGhhdmluZyB0aGUgZnJvbnRlbmQgc2lnbmFsIHRvIHRoZQorICAg
ICAgICBiYWNrZW5kIHdoZW4gaXQgaXMgY29tcGxldGVseSBpbml0aWFsaXplZC4KKyAgICAgICAg
CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29u
bmVjdGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb24ubW06CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZXR1cCk6CisgICAgICAgIFBhc3Mgb24gdGhlIGZsYWcg
b2Ygd2hldGhlciBvciBub3QgdGhpcyB3YXMgYXV0b21hdGljIGluc3BlY3Rpb24uCisKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlOjpjb25uZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlOjpwYXVzZVdhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKToKKyAgICAgICAg
V2hlbiBwYXVzaW5nIGluIGEgSlNHbG9iYWxPYmplY3Qgd2UgbmVlZCB0byByZWxlYXNlIHRoZSBB
UEkgbG9jay4KKwogMjAxNC0wOS0xNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlZHVjZSBhIGJpdCBvZiBjaHVybiBzZXR0
aW5nIGluaXRpYWwgcmVtb3RlIGluc3BlY3Rpb24gc3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA4ODA5ZThhLi5jODhhNDNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC02MSw2ICs2MSw3IEBAIEpTR2xvYmFs
T2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyKEpTR2xvYmFsT2JqCiAgICAgYXV0byBjb25zb2xlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEpTR2xvYmFsT2JqZWN0Q29uc29sZUFnZW50PihtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQo
KSk7CiAgICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9i
amVjdERlYnVnZ2VyQWdlbnQ+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX2dsb2Jh
bE9iamVjdCwgY29uc29sZUFnZW50LmdldCgpKTsKIAorICAgIG1fZGVidWdnZXJBZ2VudCA9IGRl
YnVnZ2VyQWdlbnQuZ2V0KCk7CiAgICAgbV9jb25zb2xlQWdlbnQgPSBjb25zb2xlQWdlbnQuZ2V0
KCk7CiAgICAgbV9jb25zb2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVj
dENvbnNvbGVDbGllbnQ+KG1fY29uc29sZUFnZW50KTsKIApAQCAtODQsNyArODUsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2xvYmFsT2JqZWN0RGVzdHJveWVk
KCkKICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+ZGlzY29ubmVjdCgpOwogfQogCi12b2lk
IEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQordm9pZCBKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pCiB7CiAg
ICAgQVNTRVJUKCFtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCk7CiAgICAgQVNTRVJUKCFtX2lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKTsKQEAgLTkzLDYgKzk0LDE1IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsCiAgICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoZnJvbnRlbmRDaGFubmVsKTsKIAogICAgIG1fYWdl
bnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChmcm9udGVuZENoYW5uZWwsIG1faW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworCisgICAgaWYgKGlzQXV0b21hdGljSW5zcGVj
dGlvbikgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBhbHdheXMgcGF1c2UgZm9y
IGF1dG9tYXRpYyBpbnNwZWN0aW9uLgorICAgICAgICAvLyBDdXJyZW50bHkgaWYgd2UgZG9uJ3Qg
YXV0b21hdGljYWxseSBwYXVzZSwgdGhlbiB3ZSBtYXkgbWlzcyBhIGJyZWFrcG9pbnQsIHNpbmNl
IGJyZWFrcG9pbnRzCisgICAgICAgIC8vIGNvbWUgZnJvbSB0aGUgZnJvbnRlbmQgYW5kIG1pZ2h0
IGJlIHJlY2VpdmVkIGFmdGVyIHNvbWUgZXZhbHVhdGVTY3JpcHQgbWVzc2FnZS4gV2Ugc2hvdWxk
CisgICAgICAgIC8vIGhhdmUgdGhlIGZyb250ZW5kIHNpZ25hbCB0aGUgYmFja2VuZCB3aGVuIGl0
cyBzZXR1cCBtZXNzYWdlcyBhcmUgY29tcGxldGUuCisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+
ZW5hYmxlKG51bGxwdHIpOworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPnBhdXNlKG51bGxwdHIp
OworICAgIH0KIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRp
c2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDc2MDVhNWMuLjdmZTFjOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNDcsNiArNDcsNyBAQCBj
bGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7
CiBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEluc3BlY3RvckNvbnNv
bGVBZ2VudDsKK2NsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWw7CiBjbGFzcyBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ7CiBjbGFz
cyBTY3JpcHRDYWxsU3RhY2s7CkBAIC01OCw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBKU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNDOjpKU0dsb2JhbE9iamVjdCYpOwogICAgIH5K
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoKTsKIAotICAgIHZvaWQgY29ubmVjdEZy
b250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopOworICAgIHZvaWQgY29ubmVjdEZyb250
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9u
KTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29u
IHJlYXNvbik7CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJik7CiAKQEAgLTg1LDYgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50PiBtX2NvbnNvbGVDbGllbnQ7
CiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2NvbnNvbGVBZ2VudDsKKyAgICBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdlbnQ7CiAgICAgSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeSBtX2FnZW50czsKICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsOwogICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKaW5kZXggZmI2YTc4
YS4uYmNkNzgwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKQEAgLTUyLDggKzUyLDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZ2lzdGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKik7
CiAgICAgdm9pZCB1bnJlZ2lzdGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Kik7CiAgICAgdm9pZCB1cGRhdGVEZWJ1Z2dhYmxlKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUq
KTsKKyAgICB2b2lkIHVwZGF0ZURlYnVnZ2FibGVBdXRvbWF0aWNJbnNwZWN0Q2FuZGlkYXRlKFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUqKTsKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9SZW1vdGVG
cm9udGVuZCh1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAg
IHZvaWQgc2V0dXBGYWlsZWQodW5zaWduZWQgaWRlbnRpZmllcik7CisgICAgdm9pZCBzZXR1cFN1
Y2NlZWRlZCh1bnNpZ25lZCBpZGVudGlmaWVyKTsKKyAgICBib29sIHdhaXRpbmdGb3JBdXRvbWF0
aWNJbnNwZWN0aW9uKHVuc2lnbmVkIGlkZW50aWZpZXIpOwogCiAgICAgYm9vbCBlbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z1Nlc3Np
b24oKSBjb25zdCB7IHJldHVybiBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbjsgfQpAQCAtODMsNiAr
ODYsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24o
KTsKIAorICAgIHZvaWQgc2VuZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKCk7
CisKICAgICB2aXJ0dWFsIHZvaWQgeHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZShSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uKiwgTlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25h
cnkgKnVzZXJJbmZvKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgeHBjQ29ubmVjdGlvbkZh
aWxlZChSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24qLCB4cGNfb2JqZWN0X3QpIG92ZXJyaWRlOwpAQCAtOTQsNiArOTksOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2Vy
SW5mbyk7CiAgICAgdm9pZCByZWNlaXZlZFByb3h5QXBwbGljYXRpb25TZXR1cE1lc3NhZ2UoTlNE
aWN0aW9uYXJ5ICp1c2VySW5mbyk7CiAgICAgdm9pZCByZWNlaXZlZENvbm5lY3Rpb25EaWVkTWVz
c2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkQXV0b21hdGlj
SW5zcGVjdGlvbkNvbmZpZ3VyYXRpb25NZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOwor
ICAgIHZvaWQgcmVjZWl2ZWRBdXRvbWF0aWNJbnNwZWN0aW9uUmVqZWN0TWVzc2FnZShOU0RpY3Rp
b25hcnkgKnVzZXJJbmZvKTsKIAogICAgIHN0YXRpYyBib29sIHN0YXJ0RW5hYmxlZDsKIApAQCAt
MTE3LDYgKzEyNCw5IEBAIHByaXZhdGU6CiAgICAgcGlkX3QgbV9wYXJlbnRQcm9jZXNzSWRlbnRp
ZmllcjsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX3BhcmVudFByb2Nlc3NBdWRpdERhdGE7
CiAgICAgYm9vbCBtX3Nob3VsZFNlbmRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb247CisgICAgYm9v
bCBtX2F1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkOworICAgIGJvb2wgbV9hdXRvbWF0aWNJbnNw
ZWN0aW9uUGF1c2VkOworICAgIHVuc2lnbmVkIG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0
ZUlkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ci5tbQppbmRleCA2OGZhYTgyLi42YmY3NDJjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjgsNiAr
NjgsMTcgQEAgc3RhdGljIGJvb2wgY2FuQWNjZXNzV2ViSW5zcGVjdG9yTWFjaFBvcnQoKQogICAg
IHJldHVybiBzYW5kYm94X2NoZWNrKGdldHBpZCgpLCAibWFjaC1sb29rdXAiLCBTQU5EQk9YX0ZJ
TFRFUl9HTE9CQUxfTkFNRSwgV0lSWFBDTWFjaFBvcnROYW1lKSA9PSAwOwogfQogCitzdGF0aWMg
Ym9vbCBnbG9iYWxBdXRvbWF0aWNJbnNwZWN0aW9uU3RhdGUoKQoreworICAgIGludCB0b2tlbiA9
IDA7CisgICAgaWYgKG5vdGlmeV9yZWdpc3Rlcl9jaGVjayhXSVJBdXRvbWF0aWNJbnNwZWN0aW9u
RW5hYmxlZFN0YXRlLCAmdG9rZW4pICE9IE5PVElGWV9TVEFUVVNfT0spCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHVpbnQ2NF90IGF1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkID0gMDsK
KyAgICBub3RpZnlfZ2V0X3N0YXRlKHRva2VuLCAmYXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWQp
OworICAgIHJldHVybiBhdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZCA9PSAxOworfQorCiBzdGF0
aWMgdm9pZCBkaXNwYXRjaEFzeW5jT25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKHZvaWQgKF5i
bG9jaykoKSkKIHsKICNpZiBQTEFURk9STShJT1MpCkBAIC0xMTIsNiArMTIzLDkgQEAgUmVtb3Rl
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3IoKQogICAgICwgbV9wdXNoU2NoZWR1bGVkKGZhbHNl
KQogICAgICwgbV9wYXJlbnRQcm9jZXNzSWRlbnRpZmllcigwKQogICAgICwgbV9zaG91bGRTZW5k
UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKGZhbHNlKQorICAgICwgbV9hdXRvbWF0aWNJbnNwZWN0
aW9uRW5hYmxlZChmYWxzZSkKKyAgICAsIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZChmYWxz
ZSkKKyAgICAsIG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZUlkZW50aWZpZXIoMCkKIHsK
IH0KIApAQCAtMTcwLDYgKzE4NCw3NCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlRGVi
dWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxlKQogICAgIHB1c2hM
aXN0aW5nU29vbigpOwogfQogCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlRGVidWdnYWJs
ZUF1dG9tYXRpY0luc3BlY3RDYW5kaWRhdGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVi
dWdnYWJsZSkKK3sKKyAgICB7CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBs
b2NrKG1fbXV0ZXgpOworCisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBkZWJ1Z2dhYmxl
LT5pZGVudGlmaWVyKCk7CisgICAgICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZGVidWdnYWJsZU1hcC5zZXQoaWRlbnRp
Zmllciwgc3RkOjptYWtlX3BhaXIoZGVidWdnYWJsZSwgZGVidWdnYWJsZS0+aW5mbygpKSk7Cisg
ICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCAhcmVzdWx0LmlzTmV3RW50cnkpOworCisgICAg
ICAgIC8vIERvbid0IGFsbG93IGF1dG9tYXRpYyBpbnNwZWN0aW9uIHVubGVzcyB0aGVyZSBpcyBh
IGRlYnVnZ2VyIG9yIHdlIGFyZSBzdG9wcGVkLgorICAgICAgICBpZiAoIVdURklzRGVidWdnZXJB
dHRhY2hlZCgpIHx8ICFtX2F1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkIHx8ICFtX2VuYWJsZWQp
IHsKKyAgICAgICAgICAgIHB1c2hMaXN0aW5nU29vbigpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYW5kbGUgbXVsdGlwbGUg
ZGVidWdnYWJsZXMgdHJ5aW5nIHRvIHBhdXNlIGF0IHRoZSBzYW1lIHRpbWUgb24gZGlmZmVyZW50
IHRocmVhZHMuCisgICAgICAgIC8vIFRvIG1ha2UgdGhpcyB3b3JrIHdlIHdpbGwgbmVlZCB0byBj
aGFuZ2UgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlSWRlbnRpZmllciB0byBiZSBhIHBl
ci10aHJlYWQgdmFsdWUuCisgICAgICAgIC8vIE11bHRpcGxlIGF0dGVtcHRzIG9uIHRoZSBzYW1l
IHRocmVhZCBzaG91bGQgbm90IGJlIHBvc3NpYmxlIGJlY2F1c2Ugb3VyIG5lc3RlZCBydW4gbG9v
cCBpcyBpbiBhIHNwZWNpYWwgUldJIG1vZGUuCisgICAgICAgIGlmIChtX2F1dG9tYXRpY0luc3Bl
Y3Rpb25QYXVzZWQpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiU2tpcHBpbmcgQXV0b21hdGlj
IEluc3BlY3Rpb24gQ2FuZGlkYXRlIHdpdGggcGFnZUlkKCV1KSBiZWNhdXNlIHdlIGFyZSBhbHJl
YWR5IHBhdXNlZCB3YWl0aW5nIGZvciBwYWdlSWQoJXUpIiwgaWRlbnRpZmllciwgbV9hdXRvbWF0
aWNJbnNwZWN0aW9uQ2FuZGlkYXRlSWRlbnRpZmllcik7CisgICAgICAgICAgICBwdXNoTGlzdGlu
Z1Nvb24oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fYXV0
b21hdGljSW5zcGVjdGlvblBhdXNlZCA9IHRydWU7CisgICAgICAgIG1fYXV0b21hdGljSW5zcGVj
dGlvbkNhbmRpZGF0ZUlkZW50aWZpZXIgPSBpZGVudGlmaWVyOworCisgICAgICAgIC8vIElmIHdl
IGFyZSBwYXVzaW5nIGJlZm9yZSB3ZSBoYXZlIGNvbm5lY3RlZCB0byB3ZWJpbnNwZWN0b3JkIHRo
ZSBjYW5kaWRhdGUgbWVzc2FnZSB3aWxsIGJlIHNlbnQgYXMgc29vbiBhcyB0aGUgY29ubmVjdGlv
biBpcyBlc3RhYmxpc2hlZC4KKyAgICAgICAgaWYgKG1feHBjQ29ubmVjdGlvbikgeworICAgICAg
ICAgICAgcHVzaExpc3RpbmdOb3coKTsKKyAgICAgICAgICAgIHNlbmRBdXRvbWF0aWNJbnNwZWN0
aW9uQ2FuZGlkYXRlTWVzc2FnZSgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSW4gY2FzZSBk
ZWJ1Z2dlcnMgZmFpbCB0byByZXNwb25kLCBvciB3ZSBjYW5ub3QgY29ubmVjdCB0byB3ZWJpbnNw
ZWN0b3JkLCBhdXRvbWF0aWNhbGx5IGNvbnRpbnVlIGFmdGVyIGEgc2hvcnQgcGVyaW9kIG9mIHRp
bWUuCisgICAgICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9O
T1csIDAuMyAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFU
Q0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57CisgICAgICAgICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8c3RkOjptdXRleD4gbG9jayhtX211dGV4KTsKKyAgICAgICAgICAgIGlmIChtX2F1dG9t
YXRpY0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlmaWVyID09IGlkZW50aWZpZXIpIHsKKyAgICAg
ICAgICAgICAgICBMT0dfRVJST1IoIlNraXBwaW5nIEF1dG9tYXRpYyBJbnNwZWN0aW9uIENhbmRp
ZGF0ZSB3aXRoIHBhZ2VJZCgldSkgYmVjYXVzZSB3ZSBmYWlsZWQgdG8gcmVjZWl2ZSBhIHJlc3Bv
bnNlIGluIHRpbWUuIiwgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlSWRlbnRpZmllcik7
CisgICAgICAgICAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGRlYnVnZ2FibGUtPnBhdXNl
V2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24oKTsKKworICAgIHsKKyAgICAgICAgc3RkOjps
b2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2sobV9tdXRleCk7CisKKyAgICAgICAgQVNTRVJUKG1f
YXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZUlkZW50aWZpZXIpOworICAgICAgICBtX2F1dG9t
YXRpY0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlmaWVyID0gMDsKKyAgICB9Cit9CisKK3ZvaWQg
UmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3NhZ2Uo
KQoreworICAgIEFTU0VSVChtX2VuYWJsZWQpOworICAgIEFTU0VSVChtX2F1dG9tYXRpY0luc3Bl
Y3Rpb25FbmFibGVkKTsKKyAgICBBU1NFUlQobV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkKTsK
KyAgICBBU1NFUlQobV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlSWRlbnRpZmllcik7Cisg
ICAgQVNTRVJUKG1feHBjQ29ubmVjdGlvbik7CisKKyAgICBOU0RpY3Rpb25hcnkgKmRldGFpbHMg
PSBAe1dJUlBhZ2VJZGVudGlmaWVyS2V5OiBAKG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0
ZUlkZW50aWZpZXIpfTsKKyAgICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdJUkF1dG9t
YXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlLCBkZXRhaWxzKTsKK30KKwogdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZCh1bnNpZ25lZCBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6
bXV0ZXg+IGxvY2sobV9tdXRleCk7CkBAIC0xOTgsOSArMjgwLDI2IEBAIHZvaWQgUmVtb3RlSW5z
cGVjdG9yOjpzZXR1cEZhaWxlZCh1bnNpZ25lZCBpZGVudGlmaWVyKQogCiAgICAgdXBkYXRlSGFz
QWN0aXZlRGVidWdTZXNzaW9uKCk7CiAKKyAgICBpZiAoaWRlbnRpZmllciA9PSBtX2F1dG9tYXRp
Y0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlmaWVyKQorICAgICAgICBtX2F1dG9tYXRpY0luc3Bl
Y3Rpb25QYXVzZWQgPSBmYWxzZTsKKwogICAgIHB1c2hMaXN0aW5nU29vbigpOwogfQogCit2b2lk
IFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBTdWNjZWVkZWQodW5zaWduZWQgaWRlbnRpZmllcikKK3sK
KyAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9jayhtX211dGV4KTsKKworICAgIGlm
IChpZGVudGlmaWVyID09IG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZUlkZW50aWZpZXIp
CisgICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCA9IGZhbHNlOworfQorCitib29s
IFJlbW90ZUluc3BlY3Rvcjo6d2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24odW5zaWduZWQp
Cit7CisgICAgLy8gV2UgZG9uJ3QgdGFrZSB0aGUgbG9jayB0byBjaGVjayB0aGlzIGJlY2F1c2Ug
d2UgYXNzdW1lIGl0IHdpbGwgYmUgY2hlY2tlZCByZXBlYXRlZGx5LgorICAgIHJldHVybiBtX2F1
dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQ7Cit9CisKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFy
dCgpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2sobV9tdXRleCk7CkBA
IC0yMTAsNiArMzA5LDEyIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydCgpCiAKICAgICBt
X2VuYWJsZWQgPSB0cnVlOwogCisgICAgLy8gTG9hZCB0aGUgaW5pdGlhbCBhdXRvbWF0aWMgaW5z
cGVjdGlvbiBzdGF0ZSB3aGVuIGZpcnN0IHN0YXJ0ZWQsIHNvIHdlIGtub3cgaXQgYmVmb3JlIHdl
IGhhdmUgZXZlbiBjb25uZWN0ZWQgdG8gd2ViaW5zcGVjdG9yZC4KKyAgICBzdGF0aWMgZGlzcGF0
Y2hfb25jZV90IG9uY2U7CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKKyAgICAgICAgbV9h
dXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZCA9IGdsb2JhbEF1dG9tYXRpY0luc3BlY3Rpb25TdGF0
ZSgpOworICAgIH0pOworCiAgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKFdJUlNlcnZpY2VB
dmFpbGFibGVOb3RpZmljYXRpb24sICZtX25vdGlmeVRva2VuLCBtX3hwY1F1ZXVlLCBeKGludCkg
ewogICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OnNoYXJlZCgpLnNldHVwWFBDQ29ubmVjdGlvbklm
TmVlZGVkKCk7CiAgICAgfSk7CkBAIC0yMzksNiArMzQ0LDggQEAgdm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnN0b3BJbnRlcm5hbChTdG9wU291cmNlIHNvdXJjZSkKIAogICAgIHVwZGF0ZUhhc0FjdGl2
ZURlYnVnU2Vzc2lvbigpOwogCisgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFs
c2U7CisKICAgICBpZiAobV94cGNDb25uZWN0aW9uKSB7CiAgICAgICAgIHN3aXRjaCAoc291cmNl
KSB7CiAgICAgICAgIGNhc2UgU3RvcFNvdXJjZTo6QVBJOgpAQCAtMjcwLDcgKzM3NywxMiBAQCB2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQoKQogICAgIG1f
eHBjQ29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoQCJzeW4iLCBuaWwpOyAvLyBTZW5kIGEgc2ltcGxl
IG1lc3NhZ2UgdG8gaW5pdGlhbGl6ZSB0aGUgWFBDIGNvbm5lY3Rpb24uCiAgICAgeHBjX3JlbGVh
c2UoY29ubmVjdGlvbik7CiAKLSAgICBwdXNoTGlzdGluZ1Nvb24oKTsKKyAgICBpZiAobV9hdXRv
bWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlSWRlbnRpZmllcikgeworICAgICAgICAvLyBXZSBhbHJl
YWR5IGhhdmUgYSBkZWJ1Z2dhYmxlIHdhaXRpbmcgdG8gYmUgYXV0b21hdGljYWxseSBpbnNwZWN0
ZWQuCisgICAgICAgIHB1c2hMaXN0aW5nTm93KCk7CisgICAgICAgIHNlbmRBdXRvbWF0aWNJbnNw
ZWN0aW9uQ2FuZGlkYXRlTWVzc2FnZSgpOworICAgIH0gZWxzZQorICAgICAgICBwdXNoTGlzdGlu
Z1Nvb24oKTsKIH0KIAogI3ByYWdtYSBtYXJrIC0gUHJveHkgQXBwbGljYXRpb24gSW5mb3JtYXRp
b24KQEAgLTMxNCw2ICs0MjYsMTAgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rp
b25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbioKICAgICAgICAg
cmVjZWl2ZWRQcm94eUFwcGxpY2F0aW9uU2V0dXBNZXNzYWdlKHVzZXJJbmZvKTsKICAgICBlbHNl
IGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkNvbm5lY3Rpb25EaWVkTWVzc2Fn
ZV0pCiAgICAgICAgIHJlY2VpdmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdlKHVzZXJJbmZvKTsKKyAg
ICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkF1dG9tYXRpY0luc3Bl
Y3Rpb25Db25maWd1cmF0aW9uTWVzc2FnZV0pCisgICAgICAgIHJlY2VpdmVkQXV0b21hdGljSW5z
cGVjdGlvbkNvbmZpZ3VyYXRpb25NZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNlIGlmIChbbWVz
c2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkF1dG9tYXRpY0luc3BlY3Rpb25SZWplY3RNZXNz
YWdlXSkKKyAgICAgICAgcmVjZWl2ZWRBdXRvbWF0aWNJbnNwZWN0aW9uUmVqZWN0TWVzc2FnZSh1
c2VySW5mbyk7CiAgICAgZWxzZQogICAgICAgICBOU0xvZyhAIlVucmVjb2duaXplZCBSZW1vdGVJ
bnNwZWN0b3IgWFBDIE1lc3NhZ2U6ICVAIiwgbWVzc2FnZU5hbWUpOwogfQpAQCAtMzM0LDYgKzQ1
MCw4IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp4cGNDb25uZWN0aW9uRmFpbGVkKFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24qIGNvbm5lY3RpCiAKICAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1
Z1Nlc3Npb24oKTsKIAorICAgIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCA9IGZhbHNlOwor
CiAgICAgLy8gVGhlIGNvbm5lY3Rpb24gd2lsbCBjbG9zZSBpdHNlbGYuCiAgICAgbV94cGNDb25u
ZWN0aW9uID0gbnVsbHB0cjsKIH0KQEAgLTQzMyw2ICs1NTEsNyBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6dXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCkKICAgICAvLyBMZWdhY3kgaU9TIFdl
YktpdCAxIGhhZCBhIG5vdGlmaWNhdGlvbi4gVGhpcyB3aWxsIG5lZWQgdG8gYmUgc21hcnRlciB3
aXRoIFdlYktpdDIuCiB9CiAKKwogI3ByYWdtYSBtYXJrIC0gUmVjZWl2ZWQgWFBDIE1lc3NhZ2Vz
CiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZFNldHVwTWVzc2FnZShOU0RpY3Rpb25h
cnkgKnVzZXJJbmZvKQpAQCAtNDYxLDcgKzU4MCw4IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpy
ZWNlaXZlZFNldHVwTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQogICAgIFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gZGVidWdnYWJsZUluZm8gPSBpdC0+dmFsdWUuc2Vj
b25kOwogICAgIFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29u
bmVjdGlvbiA9IGFkb3B0UmVmKG5ldyBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlv
bihkZWJ1Z2dhYmxlLCBjb25uZWN0aW9uSWRlbnRpZmllciwgc2VuZGVyLCBkZWJ1Z2dhYmxlSW5m
by50eXBlKSk7Ci0gICAgaWYgKCFjb25uZWN0aW9uLT5zZXR1cCgpKSB7CisgICAgYm9vbCBpc0F1
dG9tYXRpY0luc3BlY3Rpb24gPSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlm
aWVyID09IGRlYnVnZ2FibGUtPmlkZW50aWZpZXIoKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24tPnNl
dHVwKGlzQXV0b21hdGljSW5zcGVjdGlvbikpIHsKICAgICAgICAgY29ubmVjdGlvbi0+Y2xvc2Uo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTU5Myw2ICs3MTMsMjMgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnJlY2VpdmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdlKE5TRGljdGlvbmFyeSAq
dXNlckluZm8pCiAgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CiB9CiAKK3ZvaWQg
UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEF1dG9tYXRpY0luc3BlY3Rpb25Db25maWd1cmF0aW9u
TWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQoreworICAgIG1fYXV0b21hdGljSW5zcGVj
dGlvbkVuYWJsZWQgPSBbW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJBdXRvbWF0aWNJbnNwZWN0
aW9uRW5hYmxlZEtleV0gYm9vbFZhbHVlXTsKKworICAgIGlmICghbV9hdXRvbWF0aWNJbnNwZWN0
aW9uRW5hYmxlZCAmJiBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQpCisgICAgICAgIG1fYXV0
b21hdGljSW5zcGVjdGlvblBhdXNlZCA9IGZhbHNlOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6cmVjZWl2ZWRBdXRvbWF0aWNJbnNwZWN0aW9uUmVqZWN0TWVzc2FnZShOU0RpY3Rpb25hcnkg
KnVzZXJJbmZvKQoreworICAgIHVuc2lnbmVkIHJlamVjdGlvbklkZW50aWZpZXIgPSBbW3VzZXJJ
bmZvIG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV0gdW5zaWduZWRJbnRWYWx1ZV07
CisKKyAgICBBU1NFUlQocmVqZWN0aW9uSWRlbnRpZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rp
b25DYW5kaWRhdGVJZGVudGlmaWVyKTsKKyAgICBpZiAocmVqZWN0aW9uSWRlbnRpZmllciA9PSBt
X2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlmaWVyKQorICAgICAgICBtX2F1dG9t
YXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSW5zcGVj
dG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0
YW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yQ29uc3RhbnRzLmgKaW5kZXggNjQ3YjIyZS4uZTNlYjQ0NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3Rh
bnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yQ29uc3RhbnRzLmgKQEAgLTM3LDEyICszNywxNCBAQAogI2RlZmluZSBXSVJTZXJ2
aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmljYXRpb24gImNvbS5hcHBsZS53ZWJpbnNwZWN0b3Jk
LmF2YWlsYWJpbGl0eV9jaGVjayIKICNkZWZpbmUgV0lSU2VydmljZUVuYWJsZWROb3RpZmljYXRp
b24gICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5lbmFibGVkIgogI2RlZmluZSBX
SVJTZXJ2aWNlRGlzYWJsZWROb3RpZmljYXRpb24gICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNw
ZWN0b3JkLmRpc2FibGVkIgorI2RlZmluZSBXSVJBdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZFN0
YXRlICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmF1dG9tYXRpY19pbnNwZWN0aW9uX2Vu
YWJsZWQiCiAKIAogI2RlZmluZSBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkgICAgICAgICAg
ICAgQCJXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiCiAjZGVmaW5lIFdJUkFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcktleSAgICAgICBAIldJUkFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cktleSIKICNkZWZpbmUgV0lSQXBwbGljYXRpb25OYW1lS2V5ICAgICAgICAgICAgICAgICAgIEAi
V0lSQXBwbGljYXRpb25OYW1lS2V5IgogI2RlZmluZSBXSVJJc0FwcGxpY2F0aW9uUHJveHlLZXkg
ICAgICAgICAgICAgICAgQCJXSVJJc0FwcGxpY2F0aW9uUHJveHlLZXkiCisjZGVmaW5lIFdJUklz
QXBwbGljYXRpb25BY3RpdmVLZXkgICAgICAgICAgICAgICBAIldJUklzQXBwbGljYXRpb25BY3Rp
dmVLZXkiCiAjZGVmaW5lIFdJUkhvc3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkgICAgICAgICBA
IldJUkhvc3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiCiAjZGVmaW5lIFdJUkhvc3RBcHBsaWNh
dGlvbk5hbWVLZXkgICAgICAgICAgICAgICBAIldJUkhvc3RBcHBsaWNhdGlvbk5hbWVLZXkiCiAj
ZGVmaW5lIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5ICAgICAgICAgICAgICBAIldJUkNvbm5l
Y3Rpb25JZGVudGlmaWVyS2V5IgpAQCAtNzEsNiArNzMsMTIgQEAKICNkZWZpbmUgV0lSVHlwZUph
dmFTY3JpcHQgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSVHlwZUphdmFTY3JpcHQiCiAjZGVm
aW5lIFdJUlR5cGVXZWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIldJUlR5cGVXZWIi
CiAKKyNkZWZpbmUgV0lSQXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWRLZXkgICAgICAgICAgIEAi
V0lSQXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWRLZXkiCisjZGVmaW5lIFdJUkF1dG9tYXRpY0lu
c3BlY3Rpb25TZXNzaW9uSWRlbnRpZmllcktleSBAIldJUkF1dG9tYXRpY0luc3BlY3Rpb25TZXNz
aW9uSWRlbnRpZmllcktleSIKKyNkZWZpbmUgV0lSQXV0b21hdGljSW5zcGVjdGlvbkNvbmZpZ3Vy
YXRpb25NZXNzYWdlIEAiV0lSQXV0b21hdGljSW5zcGVjdGlvbkNvbmZpZ3VyYXRpb25NZXNzYWdl
IgorI2RlZmluZSBXSVJBdXRvbWF0aWNJbnNwZWN0aW9uUmVqZWN0TWVzc2FnZSAgICAgICAgQCJX
SVJBdXRvbWF0aWNJbnNwZWN0aW9uUmVqZWN0TWVzc2FnZSIKKyNkZWZpbmUgV0lSQXV0b21hdGlj
SW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3NhZ2UgICAgIEAiV0lSQXV0b21hdGljSW5zcGVjdGlvbkNh
bmRpZGF0ZU1lc3NhZ2UiCisKIC8vIFRoZXNlIGRlZmluaXRpb25zIGFyZSBzaGFyZWQgd2l0aCBh
IFNpbXVsYXRvciB3ZWJpbnNwZWN0b3JkIGFuZAogLy8gT1MgWCBwcm9jZXNzIGNvbW11bmljYXRp
bmcgd2l0aCBpdC4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcAppbmRl
eCBmZGYxZDk2Li4xZjk4YTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAK
KyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaCIKICNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3IuaCIKIApAQCAtNjEsNyArNjIsMTAgQEAg
dm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpzZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2Vk
KGJvb2wgYWxsb3dlZCkKIAogICAgIG1fYWxsb3dlZCA9IGFsbG93ZWQ7CiAKLSAgICB1cGRhdGUo
KTsKKyAgICBpZiAobV9hbGxvd2VkICYmIGF1dG9tYXRpY0luc3BlY3Rpb25BbGxvd2VkKCkpCisg
ICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkudXBkYXRlRGVidWdnYWJsZUF1dG9tYXRp
Y0luc3BlY3RDYW5kaWRhdGUodGhpcyk7CisgICAgZWxzZQorICAgICAgICBSZW1vdGVJbnNwZWN0
b3I6OnNoYXJlZCgpLnVwZGF0ZURlYnVnZ2FibGUodGhpcyk7CiB9CiAKIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVJbmZvIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OmluZm8oKSBjb25zdApA
QCAtNzYsNiArODAsMTcgQEAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZTo6aW5mbygpIGNvbnN0CiAgICAgcmV0dXJuIGluZm87CiB9CiAKK3Zv
aWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6cGF1c2VXYWl0aW5nRm9yQXV0b21hdGljSW5z
cGVjdGlvbigpCit7CisgICAgQVNTRVJUKG1faWRlbnRpZmllcik7CisgICAgQVNTRVJUKG1fYWxs
b3dlZCk7CisgICAgQVNTRVJUKGF1dG9tYXRpY0luc3BlY3Rpb25BbGxvd2VkKCkpOworCisgICAg
RXZlbnRMb29wIGxvb3A7CisgICAgd2hpbGUgKFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkud2Fp
dGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24oaWRlbnRpZmllcigpKSAmJiAhbG9vcC5lbmRlZCgp
KQorICAgICAgICBsb29wLmN5Y2xlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3Rvcgog
CiAjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlLmgKaW5kZXggZDQ4MDk2OC4uMzlkNTBiNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUuaApAQCAtNjIsMTEgKzYyLDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFN0cmluZyB1cmwoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBXZWIKICAgICB2
aXJ0dWFsIGJvb2wgaGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwg
dm9pZCBjb25uZWN0KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY29ubmVjdChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGlj
SW5zcGVjdGlvbikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCkg
eyB9IC8vIERlZmF1bHQgaXMgdG8gZG8gbm90aGluZy4KIAorICAgIHZpcnR1YWwgYm9vbCBhdXRv
bWF0aWNJbnNwZWN0aW9uQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCB2b2lkIHBhdXNlV2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24oKTsKKwogcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX2lkZW50aWZpZXI7CiAgICAgYm9vbCBtX2FsbG93ZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaAppbmRleCAy
YmVjNDM3Li4xNWNiYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIE5TU3RyaW5n
ICpjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0OwogICAgIHVuc2lnbmVkIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAotICAgIGJvb2wgc2V0dXAoKTsKKyAg
ICBib29sIHNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKIAogICAgIHZvaWQgY2xv
c2UoKTsKICAgICB2b2lkIGNsb3NlRnJvbURlYnVnZ2FibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0KaW5kZXggMGMzYjkwOC4uNWQ5
MzUzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24ubW0KQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uOjpkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKHZvaWQgKF5ibG9jawogICAg
IFJlbW90ZUluc3BlY3RvclF1ZXVlVGFza09uR2xvYmFsUXVldWUoYmxvY2spOwogfQogCi1ib29s
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZXR1cCgpCitib29sIFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZXR1cChib29sIGlzQXV0b21hdGljSW5z
cGVjdGlvbikKIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9jayhtX2RlYnVn
Z2FibGVNdXRleCk7CiAKQEAgLTE2NCw4ICsxNjQsOSBAQCBib29sIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uOjpzZXR1cCgpCiAgICAgICAgICAgICAgICAgUmVtb3RlSW5zcGVj
dG9yOjpzaGFyZWQoKS5zZXR1cEZhaWxlZChpZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgICAg
IG1fZGVidWdnYWJsZSA9IG51bGxwdHI7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIG1fZGVidWdnYWJsZS0+Y29ubmVjdCh0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2Rl
YnVnZ2FibGUtPmNvbm5lY3QodGhpcywgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKICAgICAgICAg
ICAgICAgICBtX2Nvbm5lY3RlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgUmVtb3RlSW5zcGVj
dG9yOjpzaGFyZWQoKS5zZXR1cFN1Y2NlZWRlZChpZGVudGlmaWVyKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIGRlcmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcAppbmRleCAw
NWUwZDg3Li42N2U5ZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCisjaW5jbHVkZSAiSlNMb2NrLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAgLTQ4LDExICs0OSwx
MSBAQCBTdHJpbmcgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpuYW1lKCkgY29uc3QKICAgICBy
ZXR1cm4gbmFtZS5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoIkpTQ29udGV4dCIpIDogbmFtZTsK
IH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmNvbm5lY3QoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpCit2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdn
YWJsZTo6Y29ubmVjdChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwg
Ym9vbCBhdXRvbWF0aWNJbnNwZWN0aW9uKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoJm1f
Z2xvYmFsT2JqZWN0LnZtKCkpOwogCi0gICAgbV9nbG9iYWxPYmplY3QuaW5zcGVjdG9yQ29udHJv
bGxlcigpLmNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOworICAgIG1fZ2xvYmFsT2Jq
ZWN0Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVs
LCBhdXRvbWF0aWNJbnNwZWN0aW9uKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2Fi
bGU6OmRpc2Nvbm5lY3QoKQpAQCAtNjksNiArNzAsMTIgQEAgdm9pZCBKU0dsb2JhbE9iamVjdERl
YnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcm
IG0KICAgICBtX2dsb2JhbE9iamVjdC5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hNZXNz
YWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwogfQogCit2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdn
YWJsZTo6cGF1c2VXYWl0aW5nRm9yQXV0b21hdGljSW5zcGVjdGlvbigpCit7CisgICAgSlNDOjpK
U0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoJm1fZ2xvYmFsT2JqZWN0LnZtKCkpOwor
ICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OnBhdXNlV2FpdGluZ0ZvckF1dG9tYXRpY0lu
c3BlY3Rpb24oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgKaW5kZXggOWY0YjZlOC4uOGM2ZWFiNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmgKQEAgLTUxLDEwICs1MSwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBTdHJpbmcgbmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBoYXNMb2Nh
bERlYnVnZ2VyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBib29sIGF1dG9tYXRpY0luc3BlY3Rpb24pIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJy
aWRlOwogCisgICAgdmlydHVhbCBib29sIGF1dG9tYXRpY0luc3BlY3Rpb25BbGxvd2VkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwYXVzZVdhaXRp
bmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKCkgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAgSlNH
bG9iYWxPYmplY3QmIG1fZ2xvYmFsT2JqZWN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNmZhZTFjMy4uY2YyYzExOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNC0wOS0xNyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNob3VsZCBiZSBhYmxlIHRv
IGF0dGFjaCBhIGRlYnVnZ2VyIHRvIGEgSlNDb250ZXh0IGJlZm9yZSBhbnl0aGluZyBpcyBleGVj
dXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2
ODkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3Vy
cmVudGx5IGF1dG9tYXRpYyBpbnNwZWN0aW9uIG9ubHkgaGFwcGVucyBpbiBwcm9jZXNzZXMgdGhh
dCBoYXZlIGEKKyAgICAgICAgZGVidWdnZXIgYXR0YWNoZWQuIFRoYXQgY29uZGl0aW9uIG1heSBj
aGFuZ2UgaW4gdGhlIGZ1dHVyZSwgYnV0IHRoaXMKKyAgICAgICAgZnVuY3Rpb24gY2FuIHN0YW5k
IG9uIGl0cyBvd24gaW4gV1RGLiBJdCBtYXkgYmUgdXNlZnVsIGluIHRoZSBmdXR1cmUKKyAgICAg
ICAgdG8gcGVyaGFwcyBjb250aW51ZSB0aG91Z2ggQVNTRVJUcyBpZiB5b3UgaGF2ZSBhIGRlYnVn
Z2VyIGF0dGFjaGVkLgorCisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuY3BwOgorICAgICAgICAq
IHd0Zi9Bc3NlcnRpb25zLmg6CisKIDIwMTQtMDktMTcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNzM2OTUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0Fzc2VydGlvbnMuY3BwCmluZGV4IDM0MWJkMDEuLjA3ZDBiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMu
Y3BwCkBAIC02Myw2ICs2MywxMSBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgogCisj
aWYgT1MoREFSV0lOKQorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNpbmNsdWRlIDx1bmlzdGQu
aD4KKyNlbmRpZgorCiAjaWYgT1MoREFSV0lOKSB8fCAoT1MoTElOVVgpICYmICFkZWZpbmVkKF9f
VUNMSUJDX18pKQogI2luY2x1ZGUgPGN4eGFiaS5oPgogI2luY2x1ZGUgPGRsZmNuLmg+CkBAIC0z
ODUsNiArMzkwLDIwIEBAIHZvaWQgV1RGSW5zdGFsbFJlcG9ydEJhY2t0cmFjZU9uQ3Jhc2hIb29r
KCkKICNlbmRpZgogfQogCitib29sIFdURklzRGVidWdnZXJBdHRhY2hlZCgpCit7CisjaWYgT1Mo
REFSV0lOKQorICAgIHN0cnVjdCBraW5mb19wcm9jIGluZm87CisgICAgaW50IG1pYltdID0geyBD
VExfS0VSTiwgS0VSTl9QUk9DLCBLRVJOX1BST0NfUElELCBnZXRwaWQoKSB9OworICAgIHNpemVf
dCBzaXplID0gc2l6ZW9mKGluZm8pOworICAgIGlmIChzeXNjdGwobWliLCBzaXplb2YobWliKSAv
IHNpemVvZihtaWJbMF0pLCAmaW5mbywgJnNpemUsIG51bGxwdHIsIDApICE9IDApCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gKGluZm8ua3BfcHJvYy5wX2ZsYWcgJiBQX1RSQUNF
RCkgIT0gMDsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIHZvaWQgV1RG
UmVwb3J0RmF0YWxFcnJvcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciog
ZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgYXJnczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaCBiL1NvdXJjZS9XVEYvd3Rm
L0Fzc2VydGlvbnMuaAppbmRleCBmNGM4OTJhLi44YmUwOTRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9Bc3NlcnRpb25zLmgKKysrIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCkBA
IC0zOCw2ICszOCw3IEBACiAKICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogI2luY2x1ZGUgPHN0ZGFy
Zy5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KICNpbmNsdWRlIDxzdGRkZWYuaD4KIAogI2lmZGVm
IE5ERUJVRwpAQCAtMTQ1LDYgKzE0Niw4IEBAIHR5cGVkZWYgdm9pZCAoKldURkNyYXNoSG9va0Z1
bmN0aW9uKSgpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGU2V0Q3Jhc2hIb29rKFdURkNy
YXNoSG9va0Z1bmN0aW9uKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURkluc3RhbGxSZXBv
cnRCYWNrdHJhY2VPbkNyYXNoSG9vaygpOwogCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBXVEZJ
c0RlYnVnZ2VyQXR0YWNoZWQoKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAwZTg3ZmRiLi4xOGJlMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTQtMDktMTcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBTaG91bGQgYmUgYWJsZSB0byBhdHRhY2ggYSBkZWJ1Z2dlciB0
byBhIEpTQ29udGV4dCBiZWZvcmUgYW55dGhpbmcgaXMgZXhlY3V0ZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjg5MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEF1dG9tYXRpYyBpbnNwZWN0aW9uIGlz
IGN1cnJlbnRseSBkaXNhYmxlZCBmb3Igd2ViIHBhZ2VzLgorICAgICAgICBUaGlzIGp1c3QgdXBk
YXRlcyB0aGUgaW50ZXJmYWNlcyB0aGF0IGNoYW5nZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4
cC5pbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdyk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VEZWJ1Z2dh
YmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VEZWJ1Z2dhYmxlLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JG
cm9udGVuZCk6CisKIDIwMTQtMDktMTYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZWR1Y2UgYSBiaXQgb2YgY2h1cm4gc2V0
dGluZyBpbml0aWFsIHJlbW90ZSBpbnNwZWN0aW9uIHN0YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmlu
ZGV4IDg3NGU1MWUuLjg4ZTFlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0zMTIzLDcgKzMx
MjMsNyBAQCBfX1pON1dlYkNvcmU1Q29sb3JDMUVSS04zV1RGNlN0cmluZ0UKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogX19aTjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTI3c2hvdWxkVHJlYXRVUkxT
Y2hlbWVBc0xvY2FsRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTVJbnNwZWN0b3JDbGll
bnQzMWRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2VFUE5TXzRQYWdlRVJLTjNXVEY2U3Ry
aW5nRQotX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTVjb25uZWN0RnJvbnRlbmRF
UE45SW5zcGVjdG9yMjRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxFCitfX1pON1dlYkNvcmUxOUlu
c3BlY3RvckNvbnRyb2xsZXIxNWNvbm5lY3RGcm9udGVuZEVQTjlJbnNwZWN0b3IyNEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbEViCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOGRp
c2Nvbm5lY3RGcm9udGVuZEVOOUluc3BlY3RvcjI1SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbkUK
IF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4c2V0UHJvZmlsZXJFbmFibGVkRWIK
IF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI1ZXZhbHVhdGVGb3JUZXN0SW5Gcm9u
dGVuZEVSS04zV1RGNlN0cmluZ0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBjN2M4Nzk1Li4xNzFhNmEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0yMzAsNyAr
MjMwLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbGVhcldpbmRvd09iamVjdElu
V29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV28KICAgICAgICAgbV9pbnNwZWN0b3JGcm9u
dGVuZENsaWVudC0+d2luZG93T2JqZWN0Q2xlYXJlZCgpOwogfQogCi12b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbm5lbCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBib29sKQogewogICAgIEFT
U0VSVChmcm9udGVuZENoYW5uZWwpOwogICAgIEFTU0VSVChtX2luc3BlY3RvckNsaWVudCk7CkBA
IC0yODUsNyArMjg1LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KCkKICAgICBl
bHNlIHsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwg
PSBtX2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3RvckZyb250ZW5kKHRoaXMpOwogICAgICAg
ICBpZiAoZnJvbnRlbmRDaGFubmVsKQotICAgICAgICAgICAgY29ubmVjdEZyb250ZW5kKGZyb250
ZW5kQ2hhbm5lbCk7CisgICAgICAgICAgICBjb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVs
LCBmYWxzZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaAppbmRleCBmZDU1OTI0Li4xMmExZTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTkzLDcgKzkzLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzTG9jYWxGcm9udGVuZCgpIGNvbnN0OwogICAgIGJvb2wgaGFz
UmVtb3RlRnJvbnRlbmQoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVj
dEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25u
ZWN0UmVhc29uKTsKICAgICB2b2lkIHNldFByb2Nlc3NJZChsb25nKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcAppbmRleCA2NzhjNWYyLi41Y2Y4NDlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBib29sIFBhZ2VE
ZWJ1Z2dhYmxlOjpoYXNMb2NhbERlYnVnZ2VyKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlLmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5oYXNMb2NhbEZyb250ZW5kKCk7CiB9CiAKLXZvaWQgUGFnZURl
YnVnZ2FibGU6OmNvbm5lY3QoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGNo
YW5uZWwpCit2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBjaGFubmVsLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikKIHsK
ICAgICBpZiAoIW1fcGFnZS5zZXR0aW5ncygpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkgewog
ICAgICAgICBtX2ZvcmNlZERldmVsb3BlckV4dHJhc0VuYWJsZWQgPSB0cnVlOwpAQCAtNzgsNyAr
NzgsNyBAQCB2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBjaGFubmVsKQogCiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciYgaW5z
cGVjdG9yQ29udHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7CiAgICAgaW5z
cGVjdG9yQ29udHJvbGxlci5zZXRIYXNSZW1vdGVGcm9udGVuZCh0cnVlKTsKLSAgICBpbnNwZWN0
b3JDb250cm9sbGVyLmNvbm5lY3RGcm9udGVuZChyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCo+KGNoYW5uZWwpKTsKKyAgICBpbnNwZWN0b3JDb250cm9s
bGVyLmNvbm5lY3RGcm9udGVuZChyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCo+KGNoYW5uZWwpLCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pOwogfQogCiB2
b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVn
Z2FibGUuaAppbmRleCA2NzMyNjRjLi40MWVmYmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVi
dWdnYWJsZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB1
cmwoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzTG9jYWxEZWJ1Z2dlcigp
IGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY29u
bmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0
aWNJbnNwZWN0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
SW5kaWNhdGluZyhib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAppbmRleCAwYTAyNjdhLi5kZjc3ZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC0xNDc3LDcgKzE0NzcsOCBAQCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gSW50ZXJuYWxz
OjpvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHVybCkKIAogICAgIG1f
ZnJvbnRlbmRDaGFubmVsID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1
bW15KGZyb250ZW5kUGFnZSkpOwogCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNv
bm5lY3RGcm9udGVuZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSk7CisgICAgYm9vbCBpc0F1dG9t
YXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCku
Y29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmRDaGFubmVsLmdldCgpLCBpc0F1dG9tYXRpY0luc3Bl
Y3Rpb24pOwogCiAgICAgcmV0dXJuIG1fZnJvbnRlbmRXaW5kb3c7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238332</attachid>
            <date>2014-09-18 16:24:24 -0700</date>
            <delta_ts>2014-09-18 17:51:52 -0700</delta_ts>
            <desc>[PATCH] For Bots 1</desc>
            <filename>for-bots-1.patch</filename>
            <type>text/plain</type>
            <size>40859</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQxMmVkZjUuLmYwYjNkNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg0IEBACiAyMDE0LTA5LTE4ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2hvdWxk
IGJlIGFibGUgdG8gYXR0YWNoIGEgZGVidWdnZXIgdG8gYSBKU0NvbnRleHQgYmVmb3JlIGFueXRo
aW5nIGlzIGV4ZWN1dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzY4OTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisK
KyAgICAgICAgQWRkcyBuZXcgcmVtb3RlIGluc3BlY3RvciBwcm90b2NvbCBoYW5kbGluZyBmb3Ig
YXV0b21hdGljIGluc3BlY3Rpb24uCisgICAgICAgIERlYnVnZ2VycyBjYW4gc2lnbmFsIHRoZXkg
aGF2ZSBlbmFibGVkIGF1dG9tYXRpYyBpbnNwZWN0aW9uLCBhbmQKKyAgICAgICAgd2hlbiBkZWJ1
Z2dhYmxlcyBhcmUgY3JlYXRlZCB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiB3aWxsIHBhdXNlIHRv
CisgICAgICAgIHNlZSBpZiB0aGUgZGVidWdnZXIgd2lsbCBpbnNwZWN0IG9yIGRlY2xpbmUgdG8g
aW5zcGVjdCB0aGUgZGVidWdnYWJsZS4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ci5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6Z2xvYmFsQXV0b21hdGljSW5zcGVjdGlvblN0YXRl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3Ip
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAgICAg
V2hlbiBmaXJzdCBzdGFydGluZywgY2hlY2sgdGhlIGdsb2JhbCAiaXMgdGhlcmUgYW4gYXV0by1p
bnNwZWN0IiBkZWJ1Z2dlciBzdGF0ZS4KKyAgICAgICAgVGhpcyBpcyBuZWNlc3Nhcnkgc28gdGhh
dCB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBrbm93cyBpZiBpdCBzaG91bGQgcGF1c2Ugb3IKKyAg
ICAgICAgbm90IHdoZW4gYSBkZWJ1Z2dhYmxlIGlzIGNyZWF0ZWQsIGV2ZW4gd2l0aG91dCBoYXZp
bmcgY29ubmVjdGVkIHRvIHdlYmluc3BlY3RvcmQgeWV0LgorCisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlRGVidWdnYWJsZUF1dG9tYXRpY0luc3BlY3RDYW5kaWRh
dGUpOgorICAgICAgICBXaGVuIGEgZGVidWdnYWJsZSBoYXMgZW5hYmxlZCByZW1vdGUgaW5zcGVj
dGlvbiwgdGFrZSB0aGlzIHBhdGggdG8gcHJvcG9zZQorICAgICAgICBpdCBhcyBhbiBhdXRvbWF0
aWMgaW5zcGVjdGlvbiBjYW5kaWRhdGUgaWYgdGhlcmUgaXMgYW4gYXV0by1pbnNwZWN0IGRlYnVn
Z2VyLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2VuZEF1dG9tYXRp
Y0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKToKKyAgICAgICAgU2VuZCB0aGUgYXV0b21hdGlj
IGluc3BlY3Rpb24gY2FuZGlkYXRlIG1lc3NhZ2UuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpyZWNlaXZlZFNldHVwTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6c2V0dXBGYWlsZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6OnNldHVwU3VjY2VlZGVkKToKKyAgICAgICAgQWZ0ZXIgYXR0ZW1wdGluZyB0
byBvcGVuIGFuIGluc3BlY3RvciwgdW5wYXVzZSBpZiBpdCB3YXMgZm9yIHRoZQorICAgICAgICBh
dXRvbWF0aWMgaW5zcGVjdGlvbiBjYW5kaWRhdGUuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjp3YWl0aW5nRm9yQXV0b21hdGljSW5zcGVjdGlvbik6CisgICAgICAgIFdo
ZW4gcnVubmluZyBhIG5lc3RlZCBydW5sb29wLCBjaGVjayBpZiB3ZSBzaG91bGQgcmVtYWluIHBh
dXNlZC4KKworICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNldHVwWFBDQ29u
bmVjdGlvbklmTmVlZGVkKToKKyAgICAgICAgSWYgYnkgdGhlIHRpbWUgd2UgY29ubmVjdCB0byB3
ZWJpbnNwZWN0b3JkIHdlIGhhdmUgYSBjYW5kaWRhdGUsIHRoZW4KKyAgICAgICAgaW1tZWRpYXRl
bHkgc2VuZCB0aGUgY2FuZGlkYXRlIG1lc3NhZ2UuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25GYWlsZWQpOgorICAgICAgICBJbiBlcnJvciBjYXNlcywg
Y2xlYXIgb3VyIHN0YXRlLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6
eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6cmVjZWl2ZWRBdXRvbWF0aWNJbnNwZWN0aW9uQ29uZmlndXJhdGlvbk1lc3Nh
Z2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQXV0b21h
dGljSW5zcGVjdGlvblJlamVjdE1lc3NhZ2UpOgorICAgICAgICBVcGRhdGUgc3RhdGUgd2hlbiBy
ZWNlaXZpbmcgbmV3IG1lc3NhZ2VzLgorCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlOjpzZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKToKKyAgICAgICAg
U3BlY2lhbCBjYXNlIHdoZW4gYSBkZWJ1Z2dhYmxlIGlzIG5ld2x5IGFsbG93ZWQgdG8gYmUgZGVi
dWdnYWJsZS4KKworICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
OjpwYXVzZVdhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKToKKyAgICAgICAgUnVuIGEgbmVz
dGVkIHJ1biBsb29wIHdoaWxlIHRoaXMgaXMgYW4gYXV0b21hdGljIGluc3BlY3Rpb24gY2FuZGlk
YXRlLgorCisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChJ
bnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250
ZW5kKToKKyAgICAgICAgV2hlbiB0aGUgaW5zcGVjdG9yIHN0YXJ0cyB2aWEgYXV0b21hdGljIGlu
c3BlY3Rpb24gYXV0b21hdGljYWxseSBwYXVzZS4KKyAgICAgICAgV2UgcGxhbiBvbiByZW1vdmlu
ZyB0aGlzIGNvbmRpdGlvbiBieSBoYXZpbmcgdGhlIGZyb250ZW5kIHNpZ25hbCB0byB0aGUKKyAg
ICAgICAgYmFja2VuZCB3aGVuIGl0IGlzIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQuCisgICAgICAg
IAorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXApOgorICAgICAgICBQYXNzIG9uIHRoZSBmbGFn
IG9mIHdoZXRoZXIgb3Igbm90IHRoaXMgd2FzIGF1dG9tYXRpYyBpbnNwZWN0aW9uLgorCisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZTo6Y29ubmVjdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZTo6cGF1c2VXYWl0aW5nRm9yQXV0b21hdGljSW5zcGVjdGlvbik6CisgICAgICAg
IFdoZW4gcGF1c2luZyBpbiBhIEpTR2xvYmFsT2JqZWN0IHdlIG5lZWQgdG8gcmVsZWFzZSB0aGUg
QVBJIGxvY2suCisKKzIwMTQtMDktMTggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KKwogICAgICAgICBVbnJldmlld2VkIHJvbGxvdXQgcjE3MzczMS4gQnJva2UgbXVsdGlw
bGUgYnVpbGRzLgogCiAgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
aW5kZXggODgwOWU4YS4uYzg4YTQzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmNwcApAQCAtNjEsNiArNjEsNyBAQCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcihKU0dsb2JhbE9iagogICAg
IGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNv
bGVBZ2VudD4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCkpOwogICAgIGF1dG8gZGVidWdn
ZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50Piht
X2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgbV9nbG9iYWxPYmplY3QsIGNvbnNvbGVBZ2Vu
dC5nZXQoKSk7CiAKKyAgICBtX2RlYnVnZ2VyQWdlbnQgPSBkZWJ1Z2dlckFnZW50LmdldCgpOwog
ICAgIG1fY29uc29sZUFnZW50ID0gY29uc29sZUFnZW50LmdldCgpOwogICAgIG1fY29uc29sZUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50PihtX2Nv
bnNvbGVBZ2VudCk7CiAKQEAgLTg0LDcgKzg1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXI6Omdsb2JhbE9iamVjdERlc3Ryb3llZCgpCiAgICAgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXItPmRpc2Nvbm5lY3QoKTsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCkKK3ZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
Ojpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKQogewogICAgIEFTU0VSVCghbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcik7CkBAIC05Myw2ICs5NCwxNSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbAogICAgIG1f
aW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGZyb250ZW5kQ2hhbm5lbCk7CiAKICAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoZnJvbnRlbmRDaGFubmVsLCBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmdldCgpKTsKKworICAgIGlmIChpc0F1dG9tYXRpY0luc3BlY3Rpb24pIHsKKyAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBub3QgYWx3YXlzIHBhdXNlIGZvciBhdXRvbWF0aWMgaW5zcGVjdGlv
bi4KKyAgICAgICAgLy8gQ3VycmVudGx5IGlmIHdlIGRvbid0IGF1dG9tYXRpY2FsbHkgcGF1c2Us
IHRoZW4gd2UgbWF5IG1pc3MgYSBicmVha3BvaW50LCBzaW5jZSBicmVha3BvaW50cworICAgICAg
ICAvLyBjb21lIGZyb20gdGhlIGZyb250ZW5kIGFuZCBtaWdodCBiZSByZWNlaXZlZCBhZnRlciBz
b21lIGV2YWx1YXRlU2NyaXB0IG1lc3NhZ2UuIFdlIHNob3VsZAorICAgICAgICAvLyBoYXZlIHRo
ZSBmcm9udGVuZCBzaWduYWwgdGhlIGJhY2tlbmQgd2hlbiBpdHMgc2V0dXAgbWVzc2FnZXMgYXJl
IGNvbXBsZXRlLgorICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmVuYWJsZShudWxscHRyKTsKKyAg
ICAgICAgbV9kZWJ1Z2dlckFnZW50LT5wYXVzZShudWxscHRyKTsKKyAgICB9CiB9CiAKIHZvaWQg
SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoSW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXIuaAppbmRleCA3NjA1YTVjLi43ZmUxYzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7CitjbGFzcyBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xh
c3MgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OwogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwpA
QCAtNTgsNyArNTksNyBAQCBwdWJsaWM6CiAgICAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKICAgICB+SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyKCk7CiAKLSAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqKTsKKyAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CiAgICAgdm9pZCBkaXNjb25u
ZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pOwogICAgIHZvaWQg
ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYpOwogCkBAIC04NSw2ICs4
Niw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluamVjdGVkU2NyaXB0TWFuYWdl
cj4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudD4gbV9jb25zb2xlQ2xpZW50OwogICAgIEluc3BlY3RvckNvbnNv
bGVBZ2VudCogbV9jb25zb2xlQWdlbnQ7CisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9k
ZWJ1Z2dlckFnZW50OwogICAgIEluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CiAgICAg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCmluZGV4IGZiNmE3OGEuLmJjZDc4MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3Rvci5oCkBAIC01Miw4ICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckRl
YnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSopOwogICAgIHZvaWQgdW5yZWdpc3Rl
ckRlYnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSopOwogICAgIHZvaWQgdXBkYXRl
RGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKik7CisgICAgdm9pZCB1cGRhdGVE
ZWJ1Z2dhYmxlQXV0b21hdGljSW5zcGVjdENhbmRpZGF0ZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlKik7CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQodW5zaWduZWQgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2b2lkIHNldHVwRmFpbGVkKHVu
c2lnbmVkIGlkZW50aWZpZXIpOworICAgIHZvaWQgc2V0dXBTdWNjZWVkZWQodW5zaWduZWQgaWRl
bnRpZmllcik7CisgICAgYm9vbCB3YWl0aW5nRm9yQXV0b21hdGljSW5zcGVjdGlvbih1bnNpZ25l
ZCBpZGVudGlmaWVyKTsKIAogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5h
YmxlZDsgfQogICAgIGJvb2wgaGFzQWN0aXZlRGVidWdTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb247IH0KQEAgLTgzLDYgKzg2LDggQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CiAKKyAgICB2b2lkIHNlbmRB
dXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlTWVzc2FnZSgpOworCiAgICAgdmlydHVhbCB2b2lk
IHhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
biosIE5TU3RyaW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25GYWlsZWQoUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbiopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9u
VW5oYW5kbGVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgeHBjX29iamVj
dF90KSBvdmVycmlkZTsKQEAgLTk0LDYgKzk5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY2Vp
dmVkSW5kaWNhdGVNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOwogICAgIHZvaWQgcmVj
ZWl2ZWRQcm94eUFwcGxpY2F0aW9uU2V0dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8p
OwogICAgIHZvaWQgcmVjZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1
c2VySW5mbyk7CisgICAgdm9pZCByZWNlaXZlZEF1dG9tYXRpY0luc3BlY3Rpb25Db25maWd1cmF0
aW9uTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkQXV0
b21hdGljSW5zcGVjdGlvblJlamVjdE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CiAK
ICAgICBzdGF0aWMgYm9vbCBzdGFydEVuYWJsZWQ7CiAKQEAgLTExNyw2ICsxMjQsOSBAQCBwcml2
YXRlOgogICAgIHBpZF90IG1fcGFyZW50UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gbV9wYXJlbnRQcm9jZXNzQXVkaXREYXRhOwogICAgIGJvb2wgbV9zaG91bGRT
ZW5kUGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uOworICAgIGJvb2wgbV9hdXRvbWF0aWNJbnNwZWN0
aW9uRW5hYmxlZDsKKyAgICBib29sIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZDsKKyAgICB1
bnNpZ25lZCBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlmaWVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KaW5kZXggNjhmYWE4Mi4u
NmJmNzQyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY4LDYgKzY4LDE3IEBAIHN0YXRpYyBib29s
IGNhbkFjY2Vzc1dlYkluc3BlY3Rvck1hY2hQb3J0KCkKICAgICByZXR1cm4gc2FuZGJveF9jaGVj
ayhnZXRwaWQoKSwgIm1hY2gtbG9va3VwIiwgU0FOREJPWF9GSUxURVJfR0xPQkFMX05BTUUsIFdJ
UlhQQ01hY2hQb3J0TmFtZSkgPT0gMDsKIH0KIAorc3RhdGljIGJvb2wgZ2xvYmFsQXV0b21hdGlj
SW5zcGVjdGlvblN0YXRlKCkKK3sKKyAgICBpbnQgdG9rZW4gPSAwOworICAgIGlmIChub3RpZnlf
cmVnaXN0ZXJfY2hlY2soV0lSQXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWRTdGF0ZSwgJnRva2Vu
KSAhPSBOT1RJRllfU1RBVFVTX09LKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1aW50
NjRfdCBhdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZCA9IDA7CisgICAgbm90aWZ5X2dldF9zdGF0
ZSh0b2tlbiwgJmF1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkKTsKKyAgICByZXR1cm4gYXV0b21h
dGljSW5zcGVjdGlvbkVuYWJsZWQgPT0gMTsKK30KKwogc3RhdGljIHZvaWQgZGlzcGF0Y2hBc3lu
Y09uUXVldWVTYWZlRm9yQW55RGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkpCiB7CiAjaWYgUExB
VEZPUk0oSU9TKQpAQCAtMTEyLDYgKzEyMyw5IEBAIFJlbW90ZUluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yKCkKICAgICAsIG1fcHVzaFNjaGVkdWxlZChmYWxzZSkKICAgICAsIG1fcGFyZW50UHJv
Y2Vzc0lkZW50aWZpZXIoMCkKICAgICAsIG1fc2hvdWxkU2VuZFBhcmVudFByb2Nlc3NJbmZvcm1h
dGlvbihmYWxzZSkKKyAgICAsIG1fYXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWQoZmFsc2UpCisg
ICAgLCBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQoZmFsc2UpCisgICAgLCBtX2F1dG9tYXRp
Y0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlmaWVyKDApCiB7CiB9CiAKQEAgLTE3MCw2ICsxODQs
NzQgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZURlYnVnZ2FibGUoUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSkKICAgICBwdXNoTGlzdGluZ1Nvb24oKTsKIH0KIAor
dm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZURlYnVnZ2FibGVBdXRvbWF0aWNJbnNwZWN0Q2Fu
ZGlkYXRlKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUpCit7CisgICAgewor
ICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9jayhtX211dGV4KTsKKworICAg
ICAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gZGVidWdnYWJsZS0+aWRlbnRpZmllcigpOworICAg
ICAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0
byByZXN1bHQgPSBtX2RlYnVnZ2FibGVNYXAuc2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV9wYWly
KGRlYnVnZ2FibGUsIGRlYnVnZ2FibGUtPmluZm8oKSkpOworICAgICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgIXJlc3VsdC5pc05ld0VudHJ5KTsKKworICAgICAgICAvLyBEb24ndCBhbGxvdyBh
dXRvbWF0aWMgaW5zcGVjdGlvbiB1bmxlc3MgdGhlcmUgaXMgYSBkZWJ1Z2dlciBvciB3ZSBhcmUg
c3RvcHBlZC4KKyAgICAgICAgaWYgKCFXVEZJc0RlYnVnZ2VyQXR0YWNoZWQoKSB8fCAhbV9hdXRv
bWF0aWNJbnNwZWN0aW9uRW5hYmxlZCB8fCAhbV9lbmFibGVkKSB7CisgICAgICAgICAgICBwdXNo
TGlzdGluZ1Nvb24oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgaGFuZGxlIG11bHRpcGxlIGRlYnVnZ2FibGVzIHRyeWluZyB0
byBwYXVzZSBhdCB0aGUgc2FtZSB0aW1lIG9uIGRpZmZlcmVudCB0aHJlYWRzLgorICAgICAgICAv
LyBUbyBtYWtlIHRoaXMgd29yayB3ZSB3aWxsIG5lZWQgdG8gY2hhbmdlIG1fYXV0b21hdGljSW5z
cGVjdGlvbkNhbmRpZGF0ZUlkZW50aWZpZXIgdG8gYmUgYSBwZXItdGhyZWFkIHZhbHVlLgorICAg
ICAgICAvLyBNdWx0aXBsZSBhdHRlbXB0cyBvbiB0aGUgc2FtZSB0aHJlYWQgc2hvdWxkIG5vdCBi
ZSBwb3NzaWJsZSBiZWNhdXNlIG91ciBuZXN0ZWQgcnVuIGxvb3AgaXMgaW4gYSBzcGVjaWFsIFJX
SSBtb2RlLgorICAgICAgICBpZiAobV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkKSB7CisgICAg
ICAgICAgICBMT0dfRVJST1IoIlNraXBwaW5nIEF1dG9tYXRpYyBJbnNwZWN0aW9uIENhbmRpZGF0
ZSB3aXRoIHBhZ2VJZCgldSkgYmVjYXVzZSB3ZSBhcmUgYWxyZWFkeSBwYXVzZWQgd2FpdGluZyBm
b3IgcGFnZUlkKCV1KSIsIGlkZW50aWZpZXIsIG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0
ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgcHVzaExpc3RpbmdTb29uKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVz
ZWQgPSB0cnVlOworICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlm
aWVyID0gaWRlbnRpZmllcjsKKworICAgICAgICAvLyBJZiB3ZSBhcmUgcGF1c2luZyBiZWZvcmUg
d2UgaGF2ZSBjb25uZWN0ZWQgdG8gd2ViaW5zcGVjdG9yZCB0aGUgY2FuZGlkYXRlIG1lc3NhZ2Ug
d2lsbCBiZSBzZW50IGFzIHNvb24gYXMgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCisg
ICAgICAgIGlmIChtX3hwY0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIHB1c2hMaXN0aW5nTm93
KCk7CisgICAgICAgICAgICBzZW5kQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3NhZ2Uo
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEluIGNhc2UgZGVidWdnZXJzIGZhaWwgdG8gcmVz
cG9uZCwgb3Igd2UgY2Fubm90IGNvbm5lY3QgdG8gd2ViaW5zcGVjdG9yZCwgYXV0b21hdGljYWxs
eSBjb250aW51ZSBhZnRlciBhIHNob3J0IHBlcmlvZCBvZiB0aW1lLgorICAgICAgICBkaXNwYXRj
aF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCAwLjMgKiBOU0VDX1BFUl9T
RUMpLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RF
RkFVTFQsIDApLCBeeworICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxv
Y2sobV9tdXRleCk7CisgICAgICAgICAgICBpZiAobV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlk
YXRlSWRlbnRpZmllciA9PSBpZGVudGlmaWVyKSB7CisgICAgICAgICAgICAgICAgTE9HX0VSUk9S
KCJTa2lwcGluZyBBdXRvbWF0aWMgSW5zcGVjdGlvbiBDYW5kaWRhdGUgd2l0aCBwYWdlSWQoJXUp
IGJlY2F1c2Ugd2UgZmFpbGVkIHRvIHJlY2VpdmUgYSByZXNwb25zZSBpbiB0aW1lLiIsIG1fYXV0
b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIG1f
YXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICBkZWJ1Z2dhYmxlLT5wYXVzZVdhaXRpbmdGb3JBdXRvbWF0aWNJ
bnNwZWN0aW9uKCk7CisKKyAgICB7CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4
PiBsb2NrKG1fbXV0ZXgpOworCisgICAgICAgIEFTU0VSVChtX2F1dG9tYXRpY0luc3BlY3Rpb25D
YW5kaWRhdGVJZGVudGlmaWVyKTsKKyAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlk
YXRlSWRlbnRpZmllciA9IDA7CisgICAgfQorfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2Vu
ZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKCkKK3sKKyAgICBBU1NFUlQobV9l
bmFibGVkKTsKKyAgICBBU1NFUlQobV9hdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZCk7CisgICAg
QVNTRVJUKG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCk7CisgICAgQVNTRVJUKG1fYXV0b21h
dGljSW5zcGVjdGlvbkNhbmRpZGF0ZUlkZW50aWZpZXIpOworICAgIEFTU0VSVChtX3hwY0Nvbm5l
Y3Rpb24pOworCisgICAgTlNEaWN0aW9uYXJ5ICpkZXRhaWxzID0gQHtXSVJQYWdlSWRlbnRpZmll
cktleTogQChtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlmaWVyKX07CisgICAg
bV94cGNDb25uZWN0aW9uLT5zZW5kTWVzc2FnZShXSVJBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlk
YXRlTWVzc2FnZSwgZGV0YWlscyk7Cit9CisKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVz
c2FnZVRvUmVtb3RlRnJvbnRlbmQodW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrKG1fbXV0ZXgp
OwpAQCAtMTk4LDkgKzI4MCwyNiBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBGYWlsZWQo
dW5zaWduZWQgaWRlbnRpZmllcikKIAogICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigp
OwogCisgICAgaWYgKGlkZW50aWZpZXIgPT0gbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRl
SWRlbnRpZmllcikKKyAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7
CisKICAgICBwdXNoTGlzdGluZ1Nvb24oKTsKIH0KIAordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNl
dHVwU3VjY2VlZGVkKHVuc2lnbmVkIGlkZW50aWZpZXIpCit7CisgICAgc3RkOjpsb2NrX2d1YXJk
PHN0ZDo6bXV0ZXg+IGxvY2sobV9tdXRleCk7CisKKyAgICBpZiAoaWRlbnRpZmllciA9PSBtX2F1
dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlmaWVyKQorICAgICAgICBtX2F1dG9tYXRp
Y0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVJbnNwZWN0b3I6Ondh
aXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKHVuc2lnbmVkKQoreworICAgIC8vIFdlIGRvbid0
IHRha2UgdGhlIGxvY2sgdG8gY2hlY2sgdGhpcyBiZWNhdXNlIHdlIGFzc3VtZSBpdCB3aWxsIGJl
IGNoZWNrZWQgcmVwZWF0ZWRseS4KKyAgICByZXR1cm4gbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1
c2VkOworfQorCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogewogICAgIHN0ZDo6bG9j
a19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrKG1fbXV0ZXgpOwpAQCAtMjEwLDYgKzMwOSwxMiBAQCB2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogCiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKIAor
ICAgIC8vIExvYWQgdGhlIGluaXRpYWwgYXV0b21hdGljIGluc3BlY3Rpb24gc3RhdGUgd2hlbiBm
aXJzdCBzdGFydGVkLCBzbyB3ZSBrbm93IGl0IGJlZm9yZSB3ZSBoYXZlIGV2ZW4gY29ubmVjdGVk
IHRvIHdlYmluc3BlY3RvcmQuCisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOworICAg
IGRpc3BhdGNoX29uY2UoJm9uY2UsIF57CisgICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlvbkVu
YWJsZWQgPSBnbG9iYWxBdXRvbWF0aWNJbnNwZWN0aW9uU3RhdGUoKTsKKyAgICB9KTsKKwogICAg
IG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaChXSVJTZXJ2aWNlQXZhaWxhYmxlTm90aWZpY2F0aW9u
LCAmbV9ub3RpZnlUb2tlbiwgbV94cGNRdWV1ZSwgXihpbnQpIHsKICAgICAgICAgUmVtb3RlSW5z
cGVjdG9yOjpzaGFyZWQoKS5zZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCgpOwogICAgIH0pOwpA
QCAtMjM5LDYgKzM0NCw4IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwoU3Rv
cFNvdXJjZSBzb3VyY2UpCiAKICAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKIAor
ICAgIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCA9IGZhbHNlOworCiAgICAgaWYgKG1feHBj
Q29ubmVjdGlvbikgewogICAgICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAgICAgICBjYXNlIFN0
b3BTb3VyY2U6OkFQSToKQEAgLTI3MCw3ICszNzcsMTIgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCkKICAgICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRN
ZXNzYWdlKEAic3luIiwgbmlsKTsgLy8gU2VuZCBhIHNpbXBsZSBtZXNzYWdlIHRvIGluaXRpYWxp
emUgdGhlIFhQQyBjb25uZWN0aW9uLgogICAgIHhwY19yZWxlYXNlKGNvbm5lY3Rpb24pOwogCi0g
ICAgcHVzaExpc3RpbmdTb29uKCk7CisgICAgaWYgKG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRp
ZGF0ZUlkZW50aWZpZXIpIHsKKyAgICAgICAgLy8gV2UgYWxyZWFkeSBoYXZlIGEgZGVidWdnYWJs
ZSB3YWl0aW5nIHRvIGJlIGF1dG9tYXRpY2FsbHkgaW5zcGVjdGVkLgorICAgICAgICBwdXNoTGlz
dGluZ05vdygpOworICAgICAgICBzZW5kQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3Nh
Z2UoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcHVzaExpc3RpbmdTb29uKCk7CiB9CiAKICNwcmFn
bWEgbWFyayAtIFByb3h5IEFwcGxpY2F0aW9uIEluZm9ybWF0aW9uCkBAIC0zMTQsNiArNDI2LDEw
IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp4cGNDb25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKFJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qCiAgICAgICAgIHJlY2VpdmVkUHJveHlBcHBsaWNh
dGlvblNldHVwTWVzc2FnZSh1c2VySW5mbyk7CiAgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlz
RXF1YWxUb1N0cmluZzpXSVJDb25uZWN0aW9uRGllZE1lc3NhZ2VdKQogICAgICAgICByZWNlaXZl
ZENvbm5lY3Rpb25EaWVkTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VO
YW1lIGlzRXF1YWxUb1N0cmluZzpXSVJBdXRvbWF0aWNJbnNwZWN0aW9uQ29uZmlndXJhdGlvbk1l
c3NhZ2VdKQorICAgICAgICByZWNlaXZlZEF1dG9tYXRpY0luc3BlY3Rpb25Db25maWd1cmF0aW9u
TWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0
cmluZzpXSVJBdXRvbWF0aWNJbnNwZWN0aW9uUmVqZWN0TWVzc2FnZV0pCisgICAgICAgIHJlY2Vp
dmVkQXV0b21hdGljSW5zcGVjdGlvblJlamVjdE1lc3NhZ2UodXNlckluZm8pOwogICAgIGVsc2UK
ICAgICAgICAgTlNMb2coQCJVbnJlY29nbml6ZWQgUmVtb3RlSW5zcGVjdG9yIFhQQyBNZXNzYWdl
OiAlQCIsIG1lc3NhZ2VOYW1lKTsKIH0KQEAgLTMzNCw2ICs0NTAsOCBAQCB2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6eHBjQ29ubmVjdGlvbkZhaWxlZChSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
KiBjb25uZWN0aQogCiAgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CiAKKyAgICBt
X2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKKwogICAgIC8vIFRoZSBjb25uZWN0
aW9uIHdpbGwgY2xvc2UgaXRzZWxmLgogICAgIG1feHBjQ29ubmVjdGlvbiA9IG51bGxwdHI7CiB9
CkBAIC00MzMsNiArNTUxLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUhhc0FjdGl2
ZURlYnVnU2Vzc2lvbigpCiAgICAgLy8gTGVnYWN5IGlPUyBXZWJLaXQgMSBoYWQgYSBub3RpZmlj
YXRpb24uIFRoaXMgd2lsbCBuZWVkIHRvIGJlIHNtYXJ0ZXIgd2l0aCBXZWJLaXQyLgogfQogCisK
ICNwcmFnbWEgbWFyayAtIFJlY2VpdmVkIFhQQyBNZXNzYWdlcwogCiB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKQEAgLTQ2
MSw3ICs1ODAsOCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2Uo
TlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKICAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBk
ZWJ1Z2dhYmxlID0gaXQtPnZhbHVlLmZpcnN0OwogICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVJbmZvIGRlYnVnZ2FibGVJbmZvID0gaXQtPnZhbHVlLnNlY29uZDsKICAgICBSZWZQdHI8UmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9wdFJlZihu
ZXcgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oZGVidWdnYWJsZSwgY29ubmVj
dGlvbklkZW50aWZpZXIsIHNlbmRlciwgZGVidWdnYWJsZUluZm8udHlwZSkpOwotICAgIGlmICgh
Y29ubmVjdGlvbi0+c2V0dXAoKSkgeworICAgIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0g
bV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlSWRlbnRpZmllciA9PSBkZWJ1Z2dhYmxlLT5p
ZGVudGlmaWVyKCk7CisgICAgaWYgKCFjb25uZWN0aW9uLT5zZXR1cChpc0F1dG9tYXRpY0luc3Bl
Y3Rpb24pKSB7CiAgICAgICAgIGNvbm5lY3Rpb24tPmNsb3NlKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC01OTMsNiArNzEzLDIzIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZl
ZENvbm5lY3Rpb25EaWVkTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQogICAgIHVwZGF0
ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOwogfQogCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVj
ZWl2ZWRBdXRvbWF0aWNJbnNwZWN0aW9uQ29uZmlndXJhdGlvbk1lc3NhZ2UoTlNEaWN0aW9uYXJ5
ICp1c2VySW5mbykKK3sKKyAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkID0gW1t1c2Vy
SW5mbyBvYmplY3RGb3JLZXk6V0lSQXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWRLZXldIGJvb2xW
YWx1ZV07CisKKyAgICBpZiAoIW1fYXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWQgJiYgbV9hdXRv
bWF0aWNJbnNwZWN0aW9uUGF1c2VkKQorICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVz
ZWQgPSBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQXV0b21hdGlj
SW5zcGVjdGlvblJlamVjdE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICB1
bnNpZ25lZCByZWplY3Rpb25JZGVudGlmaWVyID0gW1t1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lS
UGFnZUlkZW50aWZpZXJLZXldIHVuc2lnbmVkSW50VmFsdWVdOworCisgICAgQVNTRVJUKHJlamVj
dGlvbklkZW50aWZpZXIgPT0gbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlSWRlbnRpZmll
cik7CisgICAgaWYgKHJlamVjdGlvbklkZW50aWZpZXIgPT0gbV9hdXRvbWF0aWNJbnNwZWN0aW9u
Q2FuZGlkYXRlSWRlbnRpZmllcikKKyAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2Vk
ID0gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oCmlu
ZGV4IDY0N2IyMmUuLmUzZWI0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5o
CkBAIC0zNywxMiArMzcsMTQgQEAKICNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNr
Tm90aWZpY2F0aW9uICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdmFpbGFiaWxpdHlfY2hlY2si
CiAjZGVmaW5lIFdJUlNlcnZpY2VFbmFibGVkTm90aWZpY2F0aW9uICAgICAgICAgICAiY29tLmFw
cGxlLndlYmluc3BlY3RvcmQuZW5hYmxlZCIKICNkZWZpbmUgV0lSU2VydmljZURpc2FibGVkTm90
aWZpY2F0aW9uICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5kaXNhYmxlZCIKKyNk
ZWZpbmUgV0lSQXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWRTdGF0ZSAgICAgICJjb20uYXBwbGUu
d2ViaW5zcGVjdG9yZC5hdXRvbWF0aWNfaW5zcGVjdGlvbl9lbmFibGVkIgogCiAKICNkZWZpbmUg
V0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5ICAgICAgICAgICAgIEAiV0lSQXBwbGljYXRpb25J
ZGVudGlmaWVyS2V5IgogI2RlZmluZSBXSVJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkg
ICAgICAgQCJXSVJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkiCiAjZGVmaW5lIFdJUkFw
cGxpY2F0aW9uTmFtZUtleSAgICAgICAgICAgICAgICAgICBAIldJUkFwcGxpY2F0aW9uTmFtZUtl
eSIKICNkZWZpbmUgV0lSSXNBcHBsaWNhdGlvblByb3h5S2V5ICAgICAgICAgICAgICAgIEAiV0lS
SXNBcHBsaWNhdGlvblByb3h5S2V5IgorI2RlZmluZSBXSVJJc0FwcGxpY2F0aW9uQWN0aXZlS2V5
ICAgICAgICAgICAgICAgQCJXSVJJc0FwcGxpY2F0aW9uQWN0aXZlS2V5IgogI2RlZmluZSBXSVJI
b3N0QXBwbGljYXRpb25JZGVudGlmaWVyS2V5ICAgICAgICAgQCJXSVJIb3N0QXBwbGljYXRpb25J
ZGVudGlmaWVyS2V5IgogI2RlZmluZSBXSVJIb3N0QXBwbGljYXRpb25OYW1lS2V5ICAgICAgICAg
ICAgICAgQCJXSVJIb3N0QXBwbGljYXRpb25OYW1lS2V5IgogI2RlZmluZSBXSVJDb25uZWN0aW9u
SWRlbnRpZmllcktleSAgICAgICAgICAgICAgQCJXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleSIK
QEAgLTcxLDYgKzczLDEyIEBACiAjZGVmaW5lIFdJUlR5cGVKYXZhU2NyaXB0ICAgICAgICAgICAg
ICAgICAgICAgICBAIldJUlR5cGVKYXZhU2NyaXB0IgogI2RlZmluZSBXSVJUeXBlV2ViICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJUeXBlV2ViIgogCisjZGVmaW5lIFdJUkF1dG9t
YXRpY0luc3BlY3Rpb25FbmFibGVkS2V5ICAgICAgICAgICBAIldJUkF1dG9tYXRpY0luc3BlY3Rp
b25FbmFibGVkS2V5IgorI2RlZmluZSBXSVJBdXRvbWF0aWNJbnNwZWN0aW9uU2Vzc2lvbklkZW50
aWZpZXJLZXkgQCJXSVJBdXRvbWF0aWNJbnNwZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJLZXkiCisj
ZGVmaW5lIFdJUkF1dG9tYXRpY0luc3BlY3Rpb25Db25maWd1cmF0aW9uTWVzc2FnZSBAIldJUkF1
dG9tYXRpY0luc3BlY3Rpb25Db25maWd1cmF0aW9uTWVzc2FnZSIKKyNkZWZpbmUgV0lSQXV0b21h
dGljSW5zcGVjdGlvblJlamVjdE1lc3NhZ2UgICAgICAgIEAiV0lSQXV0b21hdGljSW5zcGVjdGlv
blJlamVjdE1lc3NhZ2UiCisjZGVmaW5lIFdJUkF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVN
ZXNzYWdlICAgICBAIldJUkF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlIgorCiAv
LyBUaGVzZSBkZWZpbml0aW9ucyBhcmUgc2hhcmVkIHdpdGggYSBTaW11bGF0b3Igd2ViaW5zcGVj
dG9yZCBhbmQKIC8vIE9TIFggcHJvY2VzcyBjb21tdW5pY2F0aW5nIHdpdGggaXQuCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAKaW5kZXggZmRmMWQ5Ni4uMWY5OGE3MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCisjaW5jbHVkZSAiRXZlbnRMb29w
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCiAjaW5jbHVkZSAiUmVt
b3RlSW5zcGVjdG9yLmgiCiAKQEAgLTYxLDcgKzYyLDEwIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChib29sIGFsbG93ZWQpCiAKICAg
ICBtX2FsbG93ZWQgPSBhbGxvd2VkOwogCi0gICAgdXBkYXRlKCk7CisgICAgaWYgKG1fYWxsb3dl
ZCAmJiBhdXRvbWF0aWNJbnNwZWN0aW9uQWxsb3dlZCgpKQorICAgICAgICBSZW1vdGVJbnNwZWN0
b3I6OnNoYXJlZCgpLnVwZGF0ZURlYnVnZ2FibGVBdXRvbWF0aWNJbnNwZWN0Q2FuZGlkYXRlKHRo
aXMpOworICAgIGVsc2UKKyAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKS51cGRhdGVE
ZWJ1Z2dhYmxlKHRoaXMpOwogfQogCiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjppbmZvKCkgY29uc3QKQEAgLTc2LDYgKzgwLDE3IEBAIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6Omlu
Zm8oKSBjb25zdAogICAgIHJldHVybiBpbmZvOwogfQogCit2b2lkIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGU6OnBhdXNlV2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24oKQoreworICAgIEFT
U0VSVChtX2lkZW50aWZpZXIpOworICAgIEFTU0VSVChtX2FsbG93ZWQpOworICAgIEFTU0VSVChh
dXRvbWF0aWNJbnNwZWN0aW9uQWxsb3dlZCgpKTsKKworICAgIEV2ZW50TG9vcCBsb29wOworICAg
IHdoaWxlIChSZW1vdGVJbnNwZWN0b3I6OnNoYXJlZCgpLndhaXRpbmdGb3JBdXRvbWF0aWNJbnNw
ZWN0aW9uKGlkZW50aWZpZXIoKSkgJiYgIWxvb3AuZW5kZWQoKSkKKyAgICAgICAgbG9vcC5jeWNs
ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oCmluZGV4
IGQ0ODA5NjguLjM5ZDUwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgK
QEAgLTYyLDExICs2MiwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsKCkgY29u
c3QgeyByZXR1cm4gU3RyaW5nKCk7IH0gLy8gV2ViCiAgICAgdmlydHVhbCBib29sIGhhc0xvY2Fs
RGVidWdnZXIoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpIHsgfSAvLyBEZWZhdWx0IGlzIHRv
IGRvIG5vdGhpbmcuCiAKKyAgICB2aXJ0dWFsIGJvb2wgYXV0b21hdGljSW5zcGVjdGlvbkFsbG93
ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwYXVzZVdhaXRp
bmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKCk7CisKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9p
ZGVudGlmaWVyOwogICAgIGJvb2wgbV9hbGxvd2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmgKaW5kZXggMmJlYzQzNy4uMTVjYmIyYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oCkBA
IC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZp
ZXIoKSBjb25zdDsKICAgICB1bnNpZ25lZCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9CiAKLSAgICBib29sIHNldHVwKCk7CisgICAgYm9vbCBzZXR1cChib29sIGlz
QXV0b21hdGljSW5zcGVjdGlvbik7CiAKICAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCBjbG9z
ZUZyb21EZWJ1Z2dhYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uLm1tCmluZGV4IDBjM2I5MDguLjVkOTM1M2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCkBAIC0xNDksNyAr
MTQ5LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0
Y2hBc3luY09uRGVidWdnYWJsZSh2b2lkICheYmxvY2sKICAgICBSZW1vdGVJbnNwZWN0b3JRdWV1
ZVRhc2tPbkdsb2JhbFF1ZXVlKGJsb2NrKTsKIH0KIAotYm9vbCBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXAoKQorYm9vbCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbjo6c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pCiB7CiAgICAgc3Rk
Ojpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2sobV9kZWJ1Z2dhYmxlTXV0ZXgpOwogCkBAIC0x
NjQsOCArMTY0LDkgQEAgYm9vbCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
c2V0dXAoKQogICAgICAgICAgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkuc2V0dXBG
YWlsZWQoaWRlbnRpZmllcigpKTsKICAgICAgICAgICAgICAgICBtX2RlYnVnZ2FibGUgPSBudWxs
cHRyOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX2RlYnVnZ2FibGUt
PmNvbm5lY3QodGhpcyk7CisgICAgICAgICAgICAgICAgbV9kZWJ1Z2dhYmxlLT5jb25uZWN0KHRo
aXMsIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CiAgICAgICAgICAgICAgICAgbV9jb25uZWN0ZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkuc2V0dXBT
dWNjZWVkZWQoaWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICBkZXJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKaW5kZXggMDVlMGQ4Ny4uNjdlOWZiNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdERlYnVnZ2FibGUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKIAorI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkluc3BlY3RvckFn
ZW50QmFzZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC00OCwxMSArNDksMTEgQEAgU3RyaW5nIEpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZTo6bmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIG5hbWUuaXNFbXB0eSgp
ID8gQVNDSUlMaXRlcmFsKCJKU0NvbnRleHQiKSA6IG5hbWU7CiB9CiAKLXZvaWQgSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsKQordm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmNvbm5lY3QoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIGJvb2wgYXV0b21hdGljSW5zcGVj
dGlvbikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKCZtX2dsb2JhbE9iamVjdC52bSgpKTsK
IAotICAgIG1fZ2xvYmFsT2JqZWN0Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRl
bmQoZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2dsb2JhbE9iamVjdC5pbnNwZWN0b3JDb250cm9s
bGVyKCkuY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCwgYXV0b21hdGljSW5zcGVjdGlv
bik7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KCkKQEAg
LTY5LDYgKzcwLDEyIEBAIHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNwYXRjaE1l
c3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtCiAgICAgbV9nbG9iYWxPYmpl
Y3QuaW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNz
YWdlKTsKIH0KIAordm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OnBhdXNlV2FpdGluZ0Zv
ckF1dG9tYXRpY0luc3BlY3Rpb24oKQoreworICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3Mg
ZHJvcEFsbExvY2tzKCZtX2dsb2JhbE9iamVjdC52bSgpKTsKKyAgICBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlOjpwYXVzZVdhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERl
YnVnZ2FibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZS5oCmluZGV4IDlmNGI2ZTguLjhjNmVhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oCkBA
IC01MSwxMCArNTEsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgYm9vbCBh
dXRvbWF0aWNJbnNwZWN0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVj
dCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3Rl
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZTsKIAorICAgIHZpcnR1YWwg
Ym9vbCBhdXRvbWF0aWNJbnNwZWN0aW9uQWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2VXYWl0aW5nRm9yQXV0b21hdGljSW5zcGVj
dGlvbigpIG92ZXJyaWRlOworCiBwcml2YXRlOgogICAgIEpTR2xvYmFsT2JqZWN0JiBtX2dsb2Jh
bE9iamVjdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IDhhZWY4NjkuLjVjYzA1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjAgQEAK
IDIwMTQtMDktMTggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAorICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBTaG91bGQgYmUgYWJsZSB0byBhdHRhY2ggYSBkZWJ1Z2dlciB0
byBhIEpTQ29udGV4dCBiZWZvcmUgYW55dGhpbmcgaXMgZXhlY3V0ZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjg5MworCisgICAgICAgIFJldmll
d2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBDdXJyZW50bHkgYXV0b21hdGljIGlu
c3BlY3Rpb24gb25seSBoYXBwZW5zIGluIHByb2Nlc3NlcyB0aGF0IGhhdmUgYQorICAgICAgICBk
ZWJ1Z2dlciBhdHRhY2hlZC4gVGhhdCBjb25kaXRpb24gbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJl
LCBidXQgdGhpcworICAgICAgICBmdW5jdGlvbiBjYW4gc3RhbmQgb24gaXRzIG93biBpbiBXVEYu
IEl0IG1heSBiZSB1c2VmdWwgaW4gdGhlIGZ1dHVyZQorICAgICAgICB0byBwZXJoYXBzIGNvbnRp
bnVlIHRob3VnaCBBU1NFUlRzIGlmIHlvdSBoYXZlIGEgZGVidWdnZXIgYXR0YWNoZWQuCisKKyAg
ICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5jcHA6CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoK
KworMjAxNC0wOS0xOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAg
ICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dCByMTczNzMxLiBCcm9rZSBtdWx0aXBsZSBidWlsZHMu
CiAKICAgICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5jcHA6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9Bc3NlcnRpb25zLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCmluZGV4
IDM0MWJkMDEuLmVhNWI5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCkBAIC02Myw2ICs2MywxMSBA
QAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgogCisjaWYgT1MoREFSV0lOKQorI2luY2x1
ZGUgPHN5cy9zeXNjdGwuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorCiAjaWYgT1Mo
REFSV0lOKSB8fCAoT1MoTElOVVgpICYmICFkZWZpbmVkKF9fVUNMSUJDX18pKQogI2luY2x1ZGUg
PGN4eGFiaS5oPgogI2luY2x1ZGUgPGRsZmNuLmg+CkBAIC0zODUsNiArMzkwLDIwIEBAIHZvaWQg
V1RGSW5zdGFsbFJlcG9ydEJhY2t0cmFjZU9uQ3Jhc2hIb29rKCkKICNlbmRpZgogfQogCitib29s
IFdURklzRGVidWdnZXJBdHRhY2hlZCgpCit7CisjaWYgT1MoREFSV0lOKQorICAgIHN0cnVjdCBr
aW5mb19wcm9jIGluZm87CisgICAgaW50IG1pYltdID0geyBDVExfS0VSTiwgS0VSTl9QUk9DLCBL
RVJOX1BST0NfUElELCBnZXRwaWQoKSB9OworICAgIHNpemVfdCBzaXplID0gc2l6ZW9mKGluZm8p
OworICAgIGlmIChzeXNjdGwobWliLCBzaXplb2YobWliKSAvIHNpemVvZihtaWJbMF0pLCAmaW5m
bywgJnNpemUsIG51bGxwdHIsIDApID09IC0xKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIGluZm8ua3BfcHJvYy5wX2ZsYWcgJiBQX1RSQUNFRDsKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCit9CisKIHZvaWQgV1RGUmVwb3J0RmF0YWxFcnJvcihjb25zdCBjaGFy
KiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZvcm1h
dCwgLi4uKQogewogICAgIHZhX2xpc3QgYXJnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0Fzc2VydGlvbnMuaCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAppbmRleCBmNGM4OTJh
Li44YmUwOTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKKysrIGIv
U291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCkBAIC0zOCw2ICszOCw3IEBACiAKICNpbmNsdWRl
IDxpbnR0eXBlcy5oPgogI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4K
ICNpbmNsdWRlIDxzdGRkZWYuaD4KIAogI2lmZGVmIE5ERUJVRwpAQCAtMTQ1LDYgKzE0Niw4IEBA
IHR5cGVkZWYgdm9pZCAoKldURkNyYXNoSG9va0Z1bmN0aW9uKSgpOwogV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgV1RGU2V0Q3Jhc2hIb29rKFdURkNyYXNoSG9va0Z1bmN0aW9uKTsKIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIFdURkluc3RhbGxSZXBvcnRCYWNrdHJhY2VPbkNyYXNoSG9vaygpOwog
CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBXVEZJc0RlYnVnZ2VyQXR0YWNoZWQoKTsKKwogI2lm
ZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwY2EyMmUxLi44NTQxYTEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjYgQEAKIDIwMTQtMDktMTggIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBTaG91bGQg
YmUgYWJsZSB0byBhdHRhY2ggYSBkZWJ1Z2dlciB0byBhIEpTQ29udGV4dCBiZWZvcmUgYW55dGhp
bmcgaXMgZXhlY3V0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNjg5MworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKwor
ICAgICAgICBBdXRvbWF0aWMgaW5zcGVjdGlvbiBpcyBjdXJyZW50bHkgZGlzYWJsZWQgZm9yIHdl
YiBwYWdlcy4KKyAgICAgICAgVGhpcyBqdXN0IHVwZGF0ZXMgdGhlIGludGVyZmFjZXMgdGhhdCBj
aGFuZ2VkLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OnNob3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
Lmg6CisgICAgICAgICogcGFnZS9QYWdlRGVidWdnYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlRGVidWdnYWJsZTo6Y29ubmVjdCk6CisgICAgICAgICogcGFnZS9QYWdlRGVidWdnYWJs
ZS5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorCisyMDE0LTA5LTE4ICBK
b3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKICAgICAgICAgVW5yZXZpZXdl
ZCByb2xsb3V0IHIxNzM3MzEuIEJyb2tlIG11bHRpcGxlIGJ1aWxkcy4KIAogICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4g
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA4NzRlNTFlLi44OGUxZWJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMzEyMyw3ICszMTIzLDcgQEAgX19aTjdXZWJDb3JlNUNv
bG9yQzFFUktOM1dURjZTdHJpbmdFCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIF9fWk43V2ViQ29y
ZTE0U2NoZW1lUmVnaXN0cnkyN3Nob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbEVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTE1SW5zcGVjdG9yQ2xpZW50MzFkb0Rpc3BhdGNoTWVzc2FnZU9u
RnJvbnRlbmRQYWdlRVBOU180UGFnZUVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTE5SW5z
cGVjdG9yQ29udHJvbGxlcjE1Y29ubmVjdEZyb250ZW5kRVBOOUluc3BlY3RvcjI0SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsRQorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTVjb25u
ZWN0RnJvbnRlbmRFUE45SW5zcGVjdG9yMjRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxFYgogX19a
TjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMThkaXNjb25uZWN0RnJvbnRlbmRFTjlJbnNw
ZWN0b3IyNUluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb25FCiBfX1pON1dlYkNvcmUxOUluc3BlY3Rv
ckNvbnRyb2xsZXIxOHNldFByb2ZpbGVyRW5hYmxlZEViCiBfX1pON1dlYkNvcmUxOUluc3BlY3Rv
ckNvbnRyb2xsZXIyNWV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmRFUktOM1dURjZTdHJpbmdFCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5k
ZXggYzdjODc5NS4uMTcxYTZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiBmcmFtZSwgRE9N
V3JhcHBlcldvCiAgICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQtPndpbmRvd09iamVj
dENsZWFyZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpCit2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCwgYm9vbCkKIHsKICAgICBBU1NFUlQoZnJvbnRlbmRDaGFubmVsKTsK
ICAgICBBU1NFUlQobV9pbnNwZWN0b3JDbGllbnQpOwpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCiAgICAgZWxzZSB7CiAgICAgICAgIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gbV9pbnNwZWN0b3JDbGllbnQtPm9w
ZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlzKTsKICAgICAgICAgaWYgKGZyb250ZW5kQ2hhbm5lbCkK
LSAgICAgICAgICAgIGNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOworICAgICAgICAg
ICAgY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCwgZmFsc2UpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXgg
ZmQ1NTkyNC4uMTJhMWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0xv
Y2FsRnJvbnRlbmQoKSBjb25zdDsKICAgICBib29sIGhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3Q7
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Oklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29ubmVj
dEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1
dG9tYXRpY0luc3BlY3Rpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzY29ubmVjdEZy
b250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbik7CiAgICAgdm9pZCBz
ZXRQcm9jZXNzSWQobG9uZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZURlYnVnZ2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAK
aW5kZXggNjc4YzVmMi4uNWNmODQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlRGVidWdnYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJs
ZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBQYWdlRGVidWdnYWJsZTo6aGFzTG9jYWxEZWJ1
Z2dlcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuaGFz
TG9jYWxGcm9udGVuZCgpOwogfQogCi12b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBjaGFubmVsKQordm9pZCBQYWdlRGVidWdn
YWJsZTo6Y29ubmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogY2hhbm5l
bCwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pCiB7CiAgICAgaWYgKCFtX3BhZ2Uuc2V0dGlu
Z3MoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpIHsKICAgICAgICAgbV9mb3JjZWREZXZlbG9w
ZXJFeHRyYXNFbmFibGVkID0gdHJ1ZTsKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBQYWdlRGVidWdn
YWJsZTo6Y29ubmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogY2hhbm5l
bCkKIAogICAgIEluc3BlY3RvckNvbnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIgPSBtX3Bh
Z2UuaW5zcGVjdG9yQ29udHJvbGxlcigpOwogICAgIGluc3BlY3RvckNvbnRyb2xsZXIuc2V0SGFz
UmVtb3RlRnJvbnRlbmQodHJ1ZSk7Ci0gICAgaW5zcGVjdG9yQ29udHJvbGxlci5jb25uZWN0RnJv
bnRlbmQocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
PihjaGFubmVsKSk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci5jb25uZWN0RnJvbnRlbmQocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqPihjaGFubmVs
KSwgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKIH0KIAogdm9pZCBQYWdlRGVidWdnYWJsZTo6ZGlz
Y29ubmVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgKaW5kZXggNjczMjY0Yy4u
NDFlZmJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuaApAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMGEwMjY3YS4uZGY3N2Q5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTQ3Nyw3ICsxNDc3LDgg
QEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IEludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiAKICAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IGFkb3B0
UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teShmcm9udGVuZFBhZ2UpKTsKIAot
ICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQobV9mcm9udGVu
ZENoYW5uZWwuZ2V0KCkpOworICAgIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7
CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZChtX2Zyb250
ZW5kQ2hhbm5lbC5nZXQoKSwgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKIAogICAgIHJldHVybiBt
X2Zyb250ZW5kV2luZG93OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmMTQ0NjNmLi40MDRjMzczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDE0LTA5LTE4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2hvdWxkIGJlIGFibGUgdG8g
YXR0YWNoIGEgZGVidWdnZXIgdG8gYSBKU0NvbnRleHQgYmVmb3JlIGFueXRoaW5nIGlzIGV4ZWN1
dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY4
OTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgKiBX
ZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW46
CisKIDIwMTQtMDktMTUgIHBlYXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CiAK
ICAgICAgICAgW1dpbkNhaXJvXSBNYWtlIGl0IGVhc2llciB0byBlbmFibGUvZGlzYWJsZSBHU3Ry
ZWFtZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4
cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCmluZGV4
IGVkNDA4ZDYuLjdmZjc4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHBy
b2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9y
dHMuZGVmLmluCkBAIC0yMTksNyArMjE5LDYgQEAgRVhQT1JUUwogICAgICAgICBzeW1ib2xXaXRo
UG9pbnRlcig/PzFJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRUBYWiwg
Pz8xSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVRUFBQFhaKQogICAgICAg
ICBzeW1ib2xXaXRoUG9pbnRlcig/Y2hhbmdlQXR0YWNoZWRXaW5kb3dIZWlnaHRASW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVQUVYSUBaLCA/Y2hhbmdlQXR0YWNoZWRXaW5k
b3dIZWlnaHRASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVRUFBWElAWikK
ICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2NoYW5nZUF0dGFjaGVkV2luZG93V2lkdGhASW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVQUVYSUBaLCA/Y2hhbmdlQXR0YWNo
ZWRXaW5kb3dXaWR0aEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVFQUFY
SUBaKQotICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Y29ubmVjdEZyb250ZW5kQEluc3BlY3Rv
ckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFBBVkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbEBJbnNw
ZWN0b3JAQEBaLCA/Y29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBA
UUVBQVhQRUFWSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsQEluc3BlY3RvckBAQFopCiAgICAgICAg
IHN5bWJvbFdpdGhQb2ludGVyKD9kb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlQEluc3Bl
Y3RvckNsaWVudEBXZWJDb3JlQEBTQV9OUEFWUGFnZUAyQEFCVlN0cmluZ0BXVEZAQEBaLCA/ZG9E
aXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZUBJbnNwZWN0b3JDbGllbnRAV2ViQ29yZUBAU0Ff
TlBFQVZQYWdlQDJAQUVCVlN0cmluZ0BXVEZAQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRl
cig/ZnJvbnRlbmRMb2FkZWRASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBV
QUVYWFosID9mcm9udGVuZExvYWRlZEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNv
cmVAQFVFQUFYWFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9nZXRQcm9wZXJ0eUBTZXR0
aW5nc0BJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRT9BVlN0cmluZ0BX
VEZAQEFCVjQ1QEBaLCA/Z2V0UHJvcGVydHlAU2V0dGluZ3NASW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbEBXZWJDb3JlQEBVRUFBP0FWU3RyaW5nQFdURkBAQUVCVjQ1QEBaKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDFhYjkyYzkuLjBiNzQyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0w
OS0xOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFNob3VsZCBiZSBhYmxlIHRvIGF0dGFjaCBhIGRlYnVnZ2VyIHRvIGEgSlND
b250ZXh0IGJlZm9yZSBhbnl0aGluZyBpcyBleGVjdXRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2ODkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3Rvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmRD
b25uZWN0ZWQpOgorCiAyMDE0LTA5LTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBJbmNvcnJlY3QgcGVuZGluZyBBUEkgcmVxdWVzdCBVUkwg
d2hlbiBsb2FkaW5nIGFuIEhUTUwgc3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IDU2MTI5N2EuLmRmNjExMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3Iu
Y3BwCkBAIC0zMzEsOCArMzMxLDkgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5k
Q29ubmVjdGVkKCkKICAgICBBU1NFUlQoIW1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOwogICAg
IC8vIFN3aXRjaGluZyBiZXR3ZWVuIGluLXByb2Nlc3MgYW5kIHJlbW90ZSBpbnNwZWN0b3JzIGlz
bid0IHN1cHBvcnRlZCB5ZXQuCiAgICAgQVNTRVJUKCFtX2luc3BlY3RvclBhZ2UpOwotICAgIAot
ICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9u
dGVuZChtX2Zyb250ZW5kQ2hhbm5lbCk7CisKKyAgICBib29sIGlzQXV0b21hdGljSW5zcGVjdGlv
biA9IGZhbHNlOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LmNvbm5lY3RGcm9udGVuZChtX2Zyb250ZW5kQ2hhbm5lbCwgaXNBdXRvbWF0aWNJbnNwZWN0aW9u
KTsKICAgICBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkID0gdHJ1ZTsKIH0KIAo=
</data>
<flag name="commit-queue"
          id="263084"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238341</attachid>
            <date>2014-09-18 17:51:52 -0700</date>
            <delta_ts>2014-09-22 15:02:28 -0700</delta_ts>
            <desc>[PATCH] For Bots 2</desc>
            <filename>for-bots-2.patch</filename>
            <type>text/plain</type>
            <size>40885</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQxMmVkZjUuLmYwYjNkNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg0IEBACiAyMDE0LTA5LTE4ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2hvdWxk
IGJlIGFibGUgdG8gYXR0YWNoIGEgZGVidWdnZXIgdG8gYSBKU0NvbnRleHQgYmVmb3JlIGFueXRo
aW5nIGlzIGV4ZWN1dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzY4OTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisK
KyAgICAgICAgQWRkcyBuZXcgcmVtb3RlIGluc3BlY3RvciBwcm90b2NvbCBoYW5kbGluZyBmb3Ig
YXV0b21hdGljIGluc3BlY3Rpb24uCisgICAgICAgIERlYnVnZ2VycyBjYW4gc2lnbmFsIHRoZXkg
aGF2ZSBlbmFibGVkIGF1dG9tYXRpYyBpbnNwZWN0aW9uLCBhbmQKKyAgICAgICAgd2hlbiBkZWJ1
Z2dhYmxlcyBhcmUgY3JlYXRlZCB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiB3aWxsIHBhdXNlIHRv
CisgICAgICAgIHNlZSBpZiB0aGUgZGVidWdnZXIgd2lsbCBpbnNwZWN0IG9yIGRlY2xpbmUgdG8g
aW5zcGVjdCB0aGUgZGVidWdnYWJsZS4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ci5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6Z2xvYmFsQXV0b21hdGljSW5zcGVjdGlvblN0YXRl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3Ip
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAgICAg
V2hlbiBmaXJzdCBzdGFydGluZywgY2hlY2sgdGhlIGdsb2JhbCAiaXMgdGhlcmUgYW4gYXV0by1p
bnNwZWN0IiBkZWJ1Z2dlciBzdGF0ZS4KKyAgICAgICAgVGhpcyBpcyBuZWNlc3Nhcnkgc28gdGhh
dCB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBrbm93cyBpZiBpdCBzaG91bGQgcGF1c2Ugb3IKKyAg
ICAgICAgbm90IHdoZW4gYSBkZWJ1Z2dhYmxlIGlzIGNyZWF0ZWQsIGV2ZW4gd2l0aG91dCBoYXZp
bmcgY29ubmVjdGVkIHRvIHdlYmluc3BlY3RvcmQgeWV0LgorCisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlRGVidWdnYWJsZUF1dG9tYXRpY0luc3BlY3RDYW5kaWRh
dGUpOgorICAgICAgICBXaGVuIGEgZGVidWdnYWJsZSBoYXMgZW5hYmxlZCByZW1vdGUgaW5zcGVj
dGlvbiwgdGFrZSB0aGlzIHBhdGggdG8gcHJvcG9zZQorICAgICAgICBpdCBhcyBhbiBhdXRvbWF0
aWMgaW5zcGVjdGlvbiBjYW5kaWRhdGUgaWYgdGhlcmUgaXMgYW4gYXV0by1pbnNwZWN0IGRlYnVn
Z2VyLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2VuZEF1dG9tYXRp
Y0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKToKKyAgICAgICAgU2VuZCB0aGUgYXV0b21hdGlj
IGluc3BlY3Rpb24gY2FuZGlkYXRlIG1lc3NhZ2UuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpyZWNlaXZlZFNldHVwTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6c2V0dXBGYWlsZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6OnNldHVwU3VjY2VlZGVkKToKKyAgICAgICAgQWZ0ZXIgYXR0ZW1wdGluZyB0
byBvcGVuIGFuIGluc3BlY3RvciwgdW5wYXVzZSBpZiBpdCB3YXMgZm9yIHRoZQorICAgICAgICBh
dXRvbWF0aWMgaW5zcGVjdGlvbiBjYW5kaWRhdGUuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjp3YWl0aW5nRm9yQXV0b21hdGljSW5zcGVjdGlvbik6CisgICAgICAgIFdo
ZW4gcnVubmluZyBhIG5lc3RlZCBydW5sb29wLCBjaGVjayBpZiB3ZSBzaG91bGQgcmVtYWluIHBh
dXNlZC4KKworICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNldHVwWFBDQ29u
bmVjdGlvbklmTmVlZGVkKToKKyAgICAgICAgSWYgYnkgdGhlIHRpbWUgd2UgY29ubmVjdCB0byB3
ZWJpbnNwZWN0b3JkIHdlIGhhdmUgYSBjYW5kaWRhdGUsIHRoZW4KKyAgICAgICAgaW1tZWRpYXRl
bHkgc2VuZCB0aGUgY2FuZGlkYXRlIG1lc3NhZ2UuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25GYWlsZWQpOgorICAgICAgICBJbiBlcnJvciBjYXNlcywg
Y2xlYXIgb3VyIHN0YXRlLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6
eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6cmVjZWl2ZWRBdXRvbWF0aWNJbnNwZWN0aW9uQ29uZmlndXJhdGlvbk1lc3Nh
Z2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQXV0b21h
dGljSW5zcGVjdGlvblJlamVjdE1lc3NhZ2UpOgorICAgICAgICBVcGRhdGUgc3RhdGUgd2hlbiBy
ZWNlaXZpbmcgbmV3IG1lc3NhZ2VzLgorCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlOjpzZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKToKKyAgICAgICAg
U3BlY2lhbCBjYXNlIHdoZW4gYSBkZWJ1Z2dhYmxlIGlzIG5ld2x5IGFsbG93ZWQgdG8gYmUgZGVi
dWdnYWJsZS4KKworICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
OjpwYXVzZVdhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKToKKyAgICAgICAgUnVuIGEgbmVz
dGVkIHJ1biBsb29wIHdoaWxlIHRoaXMgaXMgYW4gYXV0b21hdGljIGluc3BlY3Rpb24gY2FuZGlk
YXRlLgorCisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChJ
bnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250
ZW5kKToKKyAgICAgICAgV2hlbiB0aGUgaW5zcGVjdG9yIHN0YXJ0cyB2aWEgYXV0b21hdGljIGlu
c3BlY3Rpb24gYXV0b21hdGljYWxseSBwYXVzZS4KKyAgICAgICAgV2UgcGxhbiBvbiByZW1vdmlu
ZyB0aGlzIGNvbmRpdGlvbiBieSBoYXZpbmcgdGhlIGZyb250ZW5kIHNpZ25hbCB0byB0aGUKKyAg
ICAgICAgYmFja2VuZCB3aGVuIGl0IGlzIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQuCisgICAgICAg
IAorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXApOgorICAgICAgICBQYXNzIG9uIHRoZSBmbGFn
IG9mIHdoZXRoZXIgb3Igbm90IHRoaXMgd2FzIGF1dG9tYXRpYyBpbnNwZWN0aW9uLgorCisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZTo6Y29ubmVjdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZTo6cGF1c2VXYWl0aW5nRm9yQXV0b21hdGljSW5zcGVjdGlvbik6CisgICAgICAg
IFdoZW4gcGF1c2luZyBpbiBhIEpTR2xvYmFsT2JqZWN0IHdlIG5lZWQgdG8gcmVsZWFzZSB0aGUg
QVBJIGxvY2suCisKKzIwMTQtMDktMTggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KKwogICAgICAgICBVbnJldmlld2VkIHJvbGxvdXQgcjE3MzczMS4gQnJva2UgbXVsdGlw
bGUgYnVpbGRzLgogCiAgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
aW5kZXggODgwOWU4YS4uYzg4YTQzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmNwcApAQCAtNjEsNiArNjEsNyBAQCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcihKU0dsb2JhbE9iagogICAg
IGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNv
bGVBZ2VudD4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCkpOwogICAgIGF1dG8gZGVidWdn
ZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50Piht
X2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgbV9nbG9iYWxPYmplY3QsIGNvbnNvbGVBZ2Vu
dC5nZXQoKSk7CiAKKyAgICBtX2RlYnVnZ2VyQWdlbnQgPSBkZWJ1Z2dlckFnZW50LmdldCgpOwog
ICAgIG1fY29uc29sZUFnZW50ID0gY29uc29sZUFnZW50LmdldCgpOwogICAgIG1fY29uc29sZUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50PihtX2Nv
bnNvbGVBZ2VudCk7CiAKQEAgLTg0LDcgKzg1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXI6Omdsb2JhbE9iamVjdERlc3Ryb3llZCgpCiAgICAgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXItPmRpc2Nvbm5lY3QoKTsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCkKK3ZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
Ojpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKQogewogICAgIEFTU0VSVCghbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcik7CkBAIC05Myw2ICs5NCwxNSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbAogICAgIG1f
aW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGZyb250ZW5kQ2hhbm5lbCk7CiAKICAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoZnJvbnRlbmRDaGFubmVsLCBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmdldCgpKTsKKworICAgIGlmIChpc0F1dG9tYXRpY0luc3BlY3Rpb24pIHsKKyAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBub3QgYWx3YXlzIHBhdXNlIGZvciBhdXRvbWF0aWMgaW5zcGVjdGlv
bi4KKyAgICAgICAgLy8gQ3VycmVudGx5IGlmIHdlIGRvbid0IGF1dG9tYXRpY2FsbHkgcGF1c2Us
IHRoZW4gd2UgbWF5IG1pc3MgYSBicmVha3BvaW50LCBzaW5jZSBicmVha3BvaW50cworICAgICAg
ICAvLyBjb21lIGZyb20gdGhlIGZyb250ZW5kIGFuZCBtaWdodCBiZSByZWNlaXZlZCBhZnRlciBz
b21lIGV2YWx1YXRlU2NyaXB0IG1lc3NhZ2UuIFdlIHNob3VsZAorICAgICAgICAvLyBoYXZlIHRo
ZSBmcm9udGVuZCBzaWduYWwgdGhlIGJhY2tlbmQgd2hlbiBpdHMgc2V0dXAgbWVzc2FnZXMgYXJl
IGNvbXBsZXRlLgorICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmVuYWJsZShudWxscHRyKTsKKyAg
ICAgICAgbV9kZWJ1Z2dlckFnZW50LT5wYXVzZShudWxscHRyKTsKKyAgICB9CiB9CiAKIHZvaWQg
SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoSW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXIuaAppbmRleCA3NjA1YTVjLi43ZmUxYzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7CitjbGFzcyBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xh
c3MgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OwogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwpA
QCAtNTgsNyArNTksNyBAQCBwdWJsaWM6CiAgICAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKICAgICB+SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyKCk7CiAKLSAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqKTsKKyAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CiAgICAgdm9pZCBkaXNjb25u
ZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pOwogICAgIHZvaWQg
ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYpOwogCkBAIC04NSw2ICs4
Niw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluamVjdGVkU2NyaXB0TWFuYWdl
cj4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudD4gbV9jb25zb2xlQ2xpZW50OwogICAgIEluc3BlY3RvckNvbnNv
bGVBZ2VudCogbV9jb25zb2xlQWdlbnQ7CisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9k
ZWJ1Z2dlckFnZW50OwogICAgIEluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CiAgICAg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCmluZGV4IGZiNmE3OGEuLmJjZDc4MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3Rvci5oCkBAIC01Miw4ICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckRl
YnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSopOwogICAgIHZvaWQgdW5yZWdpc3Rl
ckRlYnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSopOwogICAgIHZvaWQgdXBkYXRl
RGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKik7CisgICAgdm9pZCB1cGRhdGVE
ZWJ1Z2dhYmxlQXV0b21hdGljSW5zcGVjdENhbmRpZGF0ZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlKik7CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQodW5zaWduZWQgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2b2lkIHNldHVwRmFpbGVkKHVu
c2lnbmVkIGlkZW50aWZpZXIpOworICAgIHZvaWQgc2V0dXBTdWNjZWVkZWQodW5zaWduZWQgaWRl
bnRpZmllcik7CisgICAgYm9vbCB3YWl0aW5nRm9yQXV0b21hdGljSW5zcGVjdGlvbih1bnNpZ25l
ZCBpZGVudGlmaWVyKTsKIAogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5h
YmxlZDsgfQogICAgIGJvb2wgaGFzQWN0aXZlRGVidWdTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb247IH0KQEAgLTgzLDYgKzg2LDggQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CiAKKyAgICB2b2lkIHNlbmRB
dXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlTWVzc2FnZSgpOworCiAgICAgdmlydHVhbCB2b2lk
IHhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
biosIE5TU3RyaW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25GYWlsZWQoUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbiopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9u
VW5oYW5kbGVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgeHBjX29iamVj
dF90KSBvdmVycmlkZTsKQEAgLTk0LDYgKzk5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY2Vp
dmVkSW5kaWNhdGVNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOwogICAgIHZvaWQgcmVj
ZWl2ZWRQcm94eUFwcGxpY2F0aW9uU2V0dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8p
OwogICAgIHZvaWQgcmVjZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1
c2VySW5mbyk7CisgICAgdm9pZCByZWNlaXZlZEF1dG9tYXRpY0luc3BlY3Rpb25Db25maWd1cmF0
aW9uTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkQXV0
b21hdGljSW5zcGVjdGlvblJlamVjdE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CiAK
ICAgICBzdGF0aWMgYm9vbCBzdGFydEVuYWJsZWQ7CiAKQEAgLTExNyw2ICsxMjQsOSBAQCBwcml2
YXRlOgogICAgIHBpZF90IG1fcGFyZW50UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gbV9wYXJlbnRQcm9jZXNzQXVkaXREYXRhOwogICAgIGJvb2wgbV9zaG91bGRT
ZW5kUGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uOworICAgIGJvb2wgbV9hdXRvbWF0aWNJbnNwZWN0
aW9uRW5hYmxlZDsKKyAgICBib29sIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZDsKKyAgICB1
bnNpZ25lZCBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlmaWVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KaW5kZXggNjhmYWE4Mi4u
NmJmNzQyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY4LDYgKzY4LDE3IEBAIHN0YXRpYyBib29s
IGNhbkFjY2Vzc1dlYkluc3BlY3Rvck1hY2hQb3J0KCkKICAgICByZXR1cm4gc2FuZGJveF9jaGVj
ayhnZXRwaWQoKSwgIm1hY2gtbG9va3VwIiwgU0FOREJPWF9GSUxURVJfR0xPQkFMX05BTUUsIFdJ
UlhQQ01hY2hQb3J0TmFtZSkgPT0gMDsKIH0KIAorc3RhdGljIGJvb2wgZ2xvYmFsQXV0b21hdGlj
SW5zcGVjdGlvblN0YXRlKCkKK3sKKyAgICBpbnQgdG9rZW4gPSAwOworICAgIGlmIChub3RpZnlf
cmVnaXN0ZXJfY2hlY2soV0lSQXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWRTdGF0ZSwgJnRva2Vu
KSAhPSBOT1RJRllfU1RBVFVTX09LKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1aW50
NjRfdCBhdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZCA9IDA7CisgICAgbm90aWZ5X2dldF9zdGF0
ZSh0b2tlbiwgJmF1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkKTsKKyAgICByZXR1cm4gYXV0b21h
dGljSW5zcGVjdGlvbkVuYWJsZWQgPT0gMTsKK30KKwogc3RhdGljIHZvaWQgZGlzcGF0Y2hBc3lu
Y09uUXVldWVTYWZlRm9yQW55RGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkpCiB7CiAjaWYgUExB
VEZPUk0oSU9TKQpAQCAtMTEyLDYgKzEyMyw5IEBAIFJlbW90ZUluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yKCkKICAgICAsIG1fcHVzaFNjaGVkdWxlZChmYWxzZSkKICAgICAsIG1fcGFyZW50UHJv
Y2Vzc0lkZW50aWZpZXIoMCkKICAgICAsIG1fc2hvdWxkU2VuZFBhcmVudFByb2Nlc3NJbmZvcm1h
dGlvbihmYWxzZSkKKyAgICAsIG1fYXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWQoZmFsc2UpCisg
ICAgLCBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQoZmFsc2UpCisgICAgLCBtX2F1dG9tYXRp
Y0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlmaWVyKDApCiB7CiB9CiAKQEAgLTE3MCw2ICsxODQs
NzQgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZURlYnVnZ2FibGUoUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSkKICAgICBwdXNoTGlzdGluZ1Nvb24oKTsKIH0KIAor
dm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZURlYnVnZ2FibGVBdXRvbWF0aWNJbnNwZWN0Q2Fu
ZGlkYXRlKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUpCit7CisgICAgewor
ICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9jayhtX211dGV4KTsKKworICAg
ICAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gZGVidWdnYWJsZS0+aWRlbnRpZmllcigpOworICAg
ICAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0
byByZXN1bHQgPSBtX2RlYnVnZ2FibGVNYXAuc2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV9wYWly
KGRlYnVnZ2FibGUsIGRlYnVnZ2FibGUtPmluZm8oKSkpOworICAgICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgIXJlc3VsdC5pc05ld0VudHJ5KTsKKworICAgICAgICAvLyBEb24ndCBhbGxvdyBh
dXRvbWF0aWMgaW5zcGVjdGlvbiB1bmxlc3MgdGhlcmUgaXMgYSBkZWJ1Z2dlciBvciB3ZSBhcmUg
c3RvcHBlZC4KKyAgICAgICAgaWYgKCFXVEZJc0RlYnVnZ2VyQXR0YWNoZWQoKSB8fCAhbV9hdXRv
bWF0aWNJbnNwZWN0aW9uRW5hYmxlZCB8fCAhbV9lbmFibGVkKSB7CisgICAgICAgICAgICBwdXNo
TGlzdGluZ1Nvb24oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgaGFuZGxlIG11bHRpcGxlIGRlYnVnZ2FibGVzIHRyeWluZyB0
byBwYXVzZSBhdCB0aGUgc2FtZSB0aW1lIG9uIGRpZmZlcmVudCB0aHJlYWRzLgorICAgICAgICAv
LyBUbyBtYWtlIHRoaXMgd29yayB3ZSB3aWxsIG5lZWQgdG8gY2hhbmdlIG1fYXV0b21hdGljSW5z
cGVjdGlvbkNhbmRpZGF0ZUlkZW50aWZpZXIgdG8gYmUgYSBwZXItdGhyZWFkIHZhbHVlLgorICAg
ICAgICAvLyBNdWx0aXBsZSBhdHRlbXB0cyBvbiB0aGUgc2FtZSB0aHJlYWQgc2hvdWxkIG5vdCBi
ZSBwb3NzaWJsZSBiZWNhdXNlIG91ciBuZXN0ZWQgcnVuIGxvb3AgaXMgaW4gYSBzcGVjaWFsIFJX
SSBtb2RlLgorICAgICAgICBpZiAobV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkKSB7CisgICAg
ICAgICAgICBMT0dfRVJST1IoIlNraXBwaW5nIEF1dG9tYXRpYyBJbnNwZWN0aW9uIENhbmRpZGF0
ZSB3aXRoIHBhZ2VJZCgldSkgYmVjYXVzZSB3ZSBhcmUgYWxyZWFkeSBwYXVzZWQgd2FpdGluZyBm
b3IgcGFnZUlkKCV1KSIsIGlkZW50aWZpZXIsIG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0
ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgcHVzaExpc3RpbmdTb29uKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVz
ZWQgPSB0cnVlOworICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlm
aWVyID0gaWRlbnRpZmllcjsKKworICAgICAgICAvLyBJZiB3ZSBhcmUgcGF1c2luZyBiZWZvcmUg
d2UgaGF2ZSBjb25uZWN0ZWQgdG8gd2ViaW5zcGVjdG9yZCB0aGUgY2FuZGlkYXRlIG1lc3NhZ2Ug
d2lsbCBiZSBzZW50IGFzIHNvb24gYXMgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCisg
ICAgICAgIGlmIChtX3hwY0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIHB1c2hMaXN0aW5nTm93
KCk7CisgICAgICAgICAgICBzZW5kQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3NhZ2Uo
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEluIGNhc2UgZGVidWdnZXJzIGZhaWwgdG8gcmVz
cG9uZCwgb3Igd2UgY2Fubm90IGNvbm5lY3QgdG8gd2ViaW5zcGVjdG9yZCwgYXV0b21hdGljYWxs
eSBjb250aW51ZSBhZnRlciBhIHNob3J0IHBlcmlvZCBvZiB0aW1lLgorICAgICAgICBkaXNwYXRj
aF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCAwLjMgKiBOU0VDX1BFUl9T
RUMpLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RF
RkFVTFQsIDApLCBeeworICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxv
Y2sobV9tdXRleCk7CisgICAgICAgICAgICBpZiAobV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlk
YXRlSWRlbnRpZmllciA9PSBpZGVudGlmaWVyKSB7CisgICAgICAgICAgICAgICAgTE9HX0VSUk9S
KCJTa2lwcGluZyBBdXRvbWF0aWMgSW5zcGVjdGlvbiBDYW5kaWRhdGUgd2l0aCBwYWdlSWQoJXUp
IGJlY2F1c2Ugd2UgZmFpbGVkIHRvIHJlY2VpdmUgYSByZXNwb25zZSBpbiB0aW1lLiIsIG1fYXV0
b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIG1f
YXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICBkZWJ1Z2dhYmxlLT5wYXVzZVdhaXRpbmdGb3JBdXRvbWF0aWNJ
bnNwZWN0aW9uKCk7CisKKyAgICB7CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4
PiBsb2NrKG1fbXV0ZXgpOworCisgICAgICAgIEFTU0VSVChtX2F1dG9tYXRpY0luc3BlY3Rpb25D
YW5kaWRhdGVJZGVudGlmaWVyKTsKKyAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlk
YXRlSWRlbnRpZmllciA9IDA7CisgICAgfQorfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2Vu
ZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKCkKK3sKKyAgICBBU1NFUlQobV9l
bmFibGVkKTsKKyAgICBBU1NFUlQobV9hdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZCk7CisgICAg
QVNTRVJUKG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCk7CisgICAgQVNTRVJUKG1fYXV0b21h
dGljSW5zcGVjdGlvbkNhbmRpZGF0ZUlkZW50aWZpZXIpOworICAgIEFTU0VSVChtX3hwY0Nvbm5l
Y3Rpb24pOworCisgICAgTlNEaWN0aW9uYXJ5ICpkZXRhaWxzID0gQHtXSVJQYWdlSWRlbnRpZmll
cktleTogQChtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlmaWVyKX07CisgICAg
bV94cGNDb25uZWN0aW9uLT5zZW5kTWVzc2FnZShXSVJBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlk
YXRlTWVzc2FnZSwgZGV0YWlscyk7Cit9CisKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVz
c2FnZVRvUmVtb3RlRnJvbnRlbmQodW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrKG1fbXV0ZXgp
OwpAQCAtMTk4LDkgKzI4MCwyNiBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBGYWlsZWQo
dW5zaWduZWQgaWRlbnRpZmllcikKIAogICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigp
OwogCisgICAgaWYgKGlkZW50aWZpZXIgPT0gbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRl
SWRlbnRpZmllcikKKyAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7
CisKICAgICBwdXNoTGlzdGluZ1Nvb24oKTsKIH0KIAordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNl
dHVwU3VjY2VlZGVkKHVuc2lnbmVkIGlkZW50aWZpZXIpCit7CisgICAgc3RkOjpsb2NrX2d1YXJk
PHN0ZDo6bXV0ZXg+IGxvY2sobV9tdXRleCk7CisKKyAgICBpZiAoaWRlbnRpZmllciA9PSBtX2F1
dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlmaWVyKQorICAgICAgICBtX2F1dG9tYXRp
Y0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKK30KKworYm9vbCBSZW1vdGVJbnNwZWN0b3I6Ondh
aXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKHVuc2lnbmVkKQoreworICAgIC8vIFdlIGRvbid0
IHRha2UgdGhlIGxvY2sgdG8gY2hlY2sgdGhpcyBiZWNhdXNlIHdlIGFzc3VtZSBpdCB3aWxsIGJl
IGNoZWNrZWQgcmVwZWF0ZWRseS4KKyAgICByZXR1cm4gbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1
c2VkOworfQorCiB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogewogICAgIHN0ZDo6bG9j
a19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrKG1fbXV0ZXgpOwpAQCAtMjEwLDYgKzMwOSwxMiBAQCB2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogCiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKIAor
ICAgIC8vIExvYWQgdGhlIGluaXRpYWwgYXV0b21hdGljIGluc3BlY3Rpb24gc3RhdGUgd2hlbiBm
aXJzdCBzdGFydGVkLCBzbyB3ZSBrbm93IGl0IGJlZm9yZSB3ZSBoYXZlIGV2ZW4gY29ubmVjdGVk
IHRvIHdlYmluc3BlY3RvcmQuCisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOworICAg
IGRpc3BhdGNoX29uY2UoJm9uY2UsIF57CisgICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlvbkVu
YWJsZWQgPSBnbG9iYWxBdXRvbWF0aWNJbnNwZWN0aW9uU3RhdGUoKTsKKyAgICB9KTsKKwogICAg
IG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaChXSVJTZXJ2aWNlQXZhaWxhYmxlTm90aWZpY2F0aW9u
LCAmbV9ub3RpZnlUb2tlbiwgbV94cGNRdWV1ZSwgXihpbnQpIHsKICAgICAgICAgUmVtb3RlSW5z
cGVjdG9yOjpzaGFyZWQoKS5zZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCgpOwogICAgIH0pOwpA
QCAtMjM5LDYgKzM0NCw4IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwoU3Rv
cFNvdXJjZSBzb3VyY2UpCiAKICAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKIAor
ICAgIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCA9IGZhbHNlOworCiAgICAgaWYgKG1feHBj
Q29ubmVjdGlvbikgewogICAgICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAgICAgICBjYXNlIFN0
b3BTb3VyY2U6OkFQSToKQEAgLTI3MCw3ICszNzcsMTIgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCkKICAgICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRN
ZXNzYWdlKEAic3luIiwgbmlsKTsgLy8gU2VuZCBhIHNpbXBsZSBtZXNzYWdlIHRvIGluaXRpYWxp
emUgdGhlIFhQQyBjb25uZWN0aW9uLgogICAgIHhwY19yZWxlYXNlKGNvbm5lY3Rpb24pOwogCi0g
ICAgcHVzaExpc3RpbmdTb29uKCk7CisgICAgaWYgKG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRp
ZGF0ZUlkZW50aWZpZXIpIHsKKyAgICAgICAgLy8gV2UgYWxyZWFkeSBoYXZlIGEgZGVidWdnYWJs
ZSB3YWl0aW5nIHRvIGJlIGF1dG9tYXRpY2FsbHkgaW5zcGVjdGVkLgorICAgICAgICBwdXNoTGlz
dGluZ05vdygpOworICAgICAgICBzZW5kQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3Nh
Z2UoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcHVzaExpc3RpbmdTb29uKCk7CiB9CiAKICNwcmFn
bWEgbWFyayAtIFByb3h5IEFwcGxpY2F0aW9uIEluZm9ybWF0aW9uCkBAIC0zMTQsNiArNDI2LDEw
IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp4cGNDb25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKFJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qCiAgICAgICAgIHJlY2VpdmVkUHJveHlBcHBsaWNh
dGlvblNldHVwTWVzc2FnZSh1c2VySW5mbyk7CiAgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlz
RXF1YWxUb1N0cmluZzpXSVJDb25uZWN0aW9uRGllZE1lc3NhZ2VdKQogICAgICAgICByZWNlaXZl
ZENvbm5lY3Rpb25EaWVkTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VO
YW1lIGlzRXF1YWxUb1N0cmluZzpXSVJBdXRvbWF0aWNJbnNwZWN0aW9uQ29uZmlndXJhdGlvbk1l
c3NhZ2VdKQorICAgICAgICByZWNlaXZlZEF1dG9tYXRpY0luc3BlY3Rpb25Db25maWd1cmF0aW9u
TWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0
cmluZzpXSVJBdXRvbWF0aWNJbnNwZWN0aW9uUmVqZWN0TWVzc2FnZV0pCisgICAgICAgIHJlY2Vp
dmVkQXV0b21hdGljSW5zcGVjdGlvblJlamVjdE1lc3NhZ2UodXNlckluZm8pOwogICAgIGVsc2UK
ICAgICAgICAgTlNMb2coQCJVbnJlY29nbml6ZWQgUmVtb3RlSW5zcGVjdG9yIFhQQyBNZXNzYWdl
OiAlQCIsIG1lc3NhZ2VOYW1lKTsKIH0KQEAgLTMzNCw2ICs0NTAsOCBAQCB2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6eHBjQ29ubmVjdGlvbkZhaWxlZChSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
KiBjb25uZWN0aQogCiAgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CiAKKyAgICBt
X2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKKwogICAgIC8vIFRoZSBjb25uZWN0
aW9uIHdpbGwgY2xvc2UgaXRzZWxmLgogICAgIG1feHBjQ29ubmVjdGlvbiA9IG51bGxwdHI7CiB9
CkBAIC00MzMsNiArNTUxLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUhhc0FjdGl2
ZURlYnVnU2Vzc2lvbigpCiAgICAgLy8gTGVnYWN5IGlPUyBXZWJLaXQgMSBoYWQgYSBub3RpZmlj
YXRpb24uIFRoaXMgd2lsbCBuZWVkIHRvIGJlIHNtYXJ0ZXIgd2l0aCBXZWJLaXQyLgogfQogCisK
ICNwcmFnbWEgbWFyayAtIFJlY2VpdmVkIFhQQyBNZXNzYWdlcwogCiB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKQEAgLTQ2
MSw3ICs1ODAsOCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2Uo
TlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKICAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBk
ZWJ1Z2dhYmxlID0gaXQtPnZhbHVlLmZpcnN0OwogICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVJbmZvIGRlYnVnZ2FibGVJbmZvID0gaXQtPnZhbHVlLnNlY29uZDsKICAgICBSZWZQdHI8UmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9wdFJlZihu
ZXcgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oZGVidWdnYWJsZSwgY29ubmVj
dGlvbklkZW50aWZpZXIsIHNlbmRlciwgZGVidWdnYWJsZUluZm8udHlwZSkpOwotICAgIGlmICgh
Y29ubmVjdGlvbi0+c2V0dXAoKSkgeworICAgIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0g
bV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlSWRlbnRpZmllciA9PSBkZWJ1Z2dhYmxlLT5p
ZGVudGlmaWVyKCk7CisgICAgaWYgKCFjb25uZWN0aW9uLT5zZXR1cChpc0F1dG9tYXRpY0luc3Bl
Y3Rpb24pKSB7CiAgICAgICAgIGNvbm5lY3Rpb24tPmNsb3NlKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC01OTMsNiArNzEzLDIzIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZl
ZENvbm5lY3Rpb25EaWVkTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQogICAgIHVwZGF0
ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOwogfQogCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVj
ZWl2ZWRBdXRvbWF0aWNJbnNwZWN0aW9uQ29uZmlndXJhdGlvbk1lc3NhZ2UoTlNEaWN0aW9uYXJ5
ICp1c2VySW5mbykKK3sKKyAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkID0gW1t1c2Vy
SW5mbyBvYmplY3RGb3JLZXk6V0lSQXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWRLZXldIGJvb2xW
YWx1ZV07CisKKyAgICBpZiAoIW1fYXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWQgJiYgbV9hdXRv
bWF0aWNJbnNwZWN0aW9uUGF1c2VkKQorICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVz
ZWQgPSBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQXV0b21hdGlj
SW5zcGVjdGlvblJlamVjdE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICB1
bnNpZ25lZCByZWplY3Rpb25JZGVudGlmaWVyID0gW1t1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lS
UGFnZUlkZW50aWZpZXJLZXldIHVuc2lnbmVkSW50VmFsdWVdOworCisgICAgQVNTRVJUKHJlamVj
dGlvbklkZW50aWZpZXIgPT0gbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlSWRlbnRpZmll
cik7CisgICAgaWYgKHJlamVjdGlvbklkZW50aWZpZXIgPT0gbV9hdXRvbWF0aWNJbnNwZWN0aW9u
Q2FuZGlkYXRlSWRlbnRpZmllcikKKyAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2Vk
ID0gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oCmlu
ZGV4IDY0N2IyMmUuLmUzZWI0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5o
CkBAIC0zNywxMiArMzcsMTQgQEAKICNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNr
Tm90aWZpY2F0aW9uICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdmFpbGFiaWxpdHlfY2hlY2si
CiAjZGVmaW5lIFdJUlNlcnZpY2VFbmFibGVkTm90aWZpY2F0aW9uICAgICAgICAgICAiY29tLmFw
cGxlLndlYmluc3BlY3RvcmQuZW5hYmxlZCIKICNkZWZpbmUgV0lSU2VydmljZURpc2FibGVkTm90
aWZpY2F0aW9uICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5kaXNhYmxlZCIKKyNk
ZWZpbmUgV0lSQXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWRTdGF0ZSAgICAgICJjb20uYXBwbGUu
d2ViaW5zcGVjdG9yZC5hdXRvbWF0aWNfaW5zcGVjdGlvbl9lbmFibGVkIgogCiAKICNkZWZpbmUg
V0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5ICAgICAgICAgICAgIEAiV0lSQXBwbGljYXRpb25J
ZGVudGlmaWVyS2V5IgogI2RlZmluZSBXSVJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkg
ICAgICAgQCJXSVJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkiCiAjZGVmaW5lIFdJUkFw
cGxpY2F0aW9uTmFtZUtleSAgICAgICAgICAgICAgICAgICBAIldJUkFwcGxpY2F0aW9uTmFtZUtl
eSIKICNkZWZpbmUgV0lSSXNBcHBsaWNhdGlvblByb3h5S2V5ICAgICAgICAgICAgICAgIEAiV0lS
SXNBcHBsaWNhdGlvblByb3h5S2V5IgorI2RlZmluZSBXSVJJc0FwcGxpY2F0aW9uQWN0aXZlS2V5
ICAgICAgICAgICAgICAgQCJXSVJJc0FwcGxpY2F0aW9uQWN0aXZlS2V5IgogI2RlZmluZSBXSVJI
b3N0QXBwbGljYXRpb25JZGVudGlmaWVyS2V5ICAgICAgICAgQCJXSVJIb3N0QXBwbGljYXRpb25J
ZGVudGlmaWVyS2V5IgogI2RlZmluZSBXSVJIb3N0QXBwbGljYXRpb25OYW1lS2V5ICAgICAgICAg
ICAgICAgQCJXSVJIb3N0QXBwbGljYXRpb25OYW1lS2V5IgogI2RlZmluZSBXSVJDb25uZWN0aW9u
SWRlbnRpZmllcktleSAgICAgICAgICAgICAgQCJXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleSIK
QEAgLTcxLDYgKzczLDEyIEBACiAjZGVmaW5lIFdJUlR5cGVKYXZhU2NyaXB0ICAgICAgICAgICAg
ICAgICAgICAgICBAIldJUlR5cGVKYXZhU2NyaXB0IgogI2RlZmluZSBXSVJUeXBlV2ViICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJUeXBlV2ViIgogCisjZGVmaW5lIFdJUkF1dG9t
YXRpY0luc3BlY3Rpb25FbmFibGVkS2V5ICAgICAgICAgICBAIldJUkF1dG9tYXRpY0luc3BlY3Rp
b25FbmFibGVkS2V5IgorI2RlZmluZSBXSVJBdXRvbWF0aWNJbnNwZWN0aW9uU2Vzc2lvbklkZW50
aWZpZXJLZXkgQCJXSVJBdXRvbWF0aWNJbnNwZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJLZXkiCisj
ZGVmaW5lIFdJUkF1dG9tYXRpY0luc3BlY3Rpb25Db25maWd1cmF0aW9uTWVzc2FnZSBAIldJUkF1
dG9tYXRpY0luc3BlY3Rpb25Db25maWd1cmF0aW9uTWVzc2FnZSIKKyNkZWZpbmUgV0lSQXV0b21h
dGljSW5zcGVjdGlvblJlamVjdE1lc3NhZ2UgICAgICAgIEAiV0lSQXV0b21hdGljSW5zcGVjdGlv
blJlamVjdE1lc3NhZ2UiCisjZGVmaW5lIFdJUkF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVN
ZXNzYWdlICAgICBAIldJUkF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlIgorCiAv
LyBUaGVzZSBkZWZpbml0aW9ucyBhcmUgc2hhcmVkIHdpdGggYSBTaW11bGF0b3Igd2ViaW5zcGVj
dG9yZCBhbmQKIC8vIE9TIFggcHJvY2VzcyBjb21tdW5pY2F0aW5nIHdpdGggaXQuCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAKaW5kZXggZmRmMWQ5Ni4uMWY5OGE3MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCisjaW5jbHVkZSAiRXZlbnRMb29w
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCiAjaW5jbHVkZSAiUmVt
b3RlSW5zcGVjdG9yLmgiCiAKQEAgLTYxLDcgKzYyLDEwIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChib29sIGFsbG93ZWQpCiAKICAg
ICBtX2FsbG93ZWQgPSBhbGxvd2VkOwogCi0gICAgdXBkYXRlKCk7CisgICAgaWYgKG1fYWxsb3dl
ZCAmJiBhdXRvbWF0aWNJbnNwZWN0aW9uQWxsb3dlZCgpKQorICAgICAgICBSZW1vdGVJbnNwZWN0
b3I6OnNoYXJlZCgpLnVwZGF0ZURlYnVnZ2FibGVBdXRvbWF0aWNJbnNwZWN0Q2FuZGlkYXRlKHRo
aXMpOworICAgIGVsc2UKKyAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKS51cGRhdGVE
ZWJ1Z2dhYmxlKHRoaXMpOwogfQogCiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjppbmZvKCkgY29uc3QKQEAgLTc2LDYgKzgwLDE3IEBAIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6Omlu
Zm8oKSBjb25zdAogICAgIHJldHVybiBpbmZvOwogfQogCit2b2lkIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGU6OnBhdXNlV2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24oKQoreworICAgIEFT
U0VSVChtX2lkZW50aWZpZXIpOworICAgIEFTU0VSVChtX2FsbG93ZWQpOworICAgIEFTU0VSVChh
dXRvbWF0aWNJbnNwZWN0aW9uQWxsb3dlZCgpKTsKKworICAgIEV2ZW50TG9vcCBsb29wOworICAg
IHdoaWxlIChSZW1vdGVJbnNwZWN0b3I6OnNoYXJlZCgpLndhaXRpbmdGb3JBdXRvbWF0aWNJbnNw
ZWN0aW9uKGlkZW50aWZpZXIoKSkgJiYgIWxvb3AuZW5kZWQoKSkKKyAgICAgICAgbG9vcC5jeWNs
ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oCmluZGV4
IGQ0ODA5NjguLjM5ZDUwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgK
QEAgLTYyLDExICs2MiwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsKCkgY29u
c3QgeyByZXR1cm4gU3RyaW5nKCk7IH0gLy8gV2ViCiAgICAgdmlydHVhbCBib29sIGhhc0xvY2Fs
RGVidWdnZXIoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpIHsgfSAvLyBEZWZhdWx0IGlzIHRv
IGRvIG5vdGhpbmcuCiAKKyAgICB2aXJ0dWFsIGJvb2wgYXV0b21hdGljSW5zcGVjdGlvbkFsbG93
ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwYXVzZVdhaXRp
bmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKCk7CisKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9p
ZGVudGlmaWVyOwogICAgIGJvb2wgbV9hbGxvd2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmgKaW5kZXggMmJlYzQzNy4uMTVjYmIyYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oCkBA
IC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZp
ZXIoKSBjb25zdDsKICAgICB1bnNpZ25lZCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9CiAKLSAgICBib29sIHNldHVwKCk7CisgICAgYm9vbCBzZXR1cChib29sIGlz
QXV0b21hdGljSW5zcGVjdGlvbik7CiAKICAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCBjbG9z
ZUZyb21EZWJ1Z2dhYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uLm1tCmluZGV4IDBjM2I5MDguLjVkOTM1M2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCkBAIC0xNDksNyAr
MTQ5LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0
Y2hBc3luY09uRGVidWdnYWJsZSh2b2lkICheYmxvY2sKICAgICBSZW1vdGVJbnNwZWN0b3JRdWV1
ZVRhc2tPbkdsb2JhbFF1ZXVlKGJsb2NrKTsKIH0KIAotYm9vbCBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXAoKQorYm9vbCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbjo6c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pCiB7CiAgICAgc3Rk
Ojpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2sobV9kZWJ1Z2dhYmxlTXV0ZXgpOwogCkBAIC0x
NjQsOCArMTY0LDkgQEAgYm9vbCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
c2V0dXAoKQogICAgICAgICAgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkuc2V0dXBG
YWlsZWQoaWRlbnRpZmllcigpKTsKICAgICAgICAgICAgICAgICBtX2RlYnVnZ2FibGUgPSBudWxs
cHRyOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX2RlYnVnZ2FibGUt
PmNvbm5lY3QodGhpcyk7CisgICAgICAgICAgICAgICAgbV9kZWJ1Z2dhYmxlLT5jb25uZWN0KHRo
aXMsIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CiAgICAgICAgICAgICAgICAgbV9jb25uZWN0ZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkuc2V0dXBT
dWNjZWVkZWQoaWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICBkZXJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKaW5kZXggMDVlMGQ4Ny4uZTQyOGY0NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdERlYnVnZ2FibGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9y
QWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJS
ZW1vdGVJbnNwZWN0b3IuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAgLTQ4LDEx
ICs0OSwxMSBAQCBTdHJpbmcgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpuYW1lKCkgY29uc3QK
ICAgICByZXR1cm4gbmFtZS5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoIkpTQ29udGV4dCIpIDog
bmFtZTsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmNvbm5lY3QoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpCit2b2lkIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgYm9vbCBhdXRvbWF0aWNJbnNwZWN0aW9uKQogewogICAgIEpTTG9ja0hvbGRlciBsb2Nr
ZXIoJm1fZ2xvYmFsT2JqZWN0LnZtKCkpOwogCi0gICAgbV9nbG9iYWxPYmplY3QuaW5zcGVjdG9y
Q29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOworICAgIG1fZ2xv
YmFsT2JqZWN0Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRD
aGFubmVsLCBhdXRvbWF0aWNJbnNwZWN0aW9uKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdERl
YnVnZ2FibGU6OmRpc2Nvbm5lY3QoKQpAQCAtNjksNiArNzAsMTIgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdERlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBT
dHJpbmcmIG0KICAgICBtX2dsb2JhbE9iamVjdC5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0
Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwogfQogCit2b2lkIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZTo6cGF1c2VXYWl0aW5nRm9yQXV0b21hdGljSW5zcGVjdGlvbigpCit7CisgICAg
SlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoJm1fZ2xvYmFsT2JqZWN0LnZt
KCkpOworICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OnBhdXNlV2FpdGluZ0ZvckF1dG9t
YXRpY0luc3BlY3Rpb24oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgKaW5kZXggOWY0YjZlOC4uOGM2
ZWFiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgKQEAgLTUxLDEwICs1MSwxMyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBo
YXNMb2NhbERlYnVnZ2VyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBib29sIGF1dG9tYXRpY0luc3BlY3Rpb24pIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
IG92ZXJyaWRlOwogCisgICAgdmlydHVhbCBib29sIGF1dG9tYXRpY0luc3BlY3Rpb25BbGxvd2Vk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwYXVz
ZVdhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKCkgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAg
ICAgSlNHbG9iYWxPYmplY3QmIG1fZ2xvYmFsT2JqZWN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOGFlZjg2OS4uNWNj
MDU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsNSArMSwyMCBAQAogMjAxNC0wOS0xOCAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNob3VsZCBiZSBh
YmxlIHRvIGF0dGFjaCBhIGRlYnVnZ2VyIHRvIGEgSlNDb250ZXh0IGJlZm9yZSBhbnl0aGluZyBp
cyBleGVjdXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM2ODkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAg
ICAgIEN1cnJlbnRseSBhdXRvbWF0aWMgaW5zcGVjdGlvbiBvbmx5IGhhcHBlbnMgaW4gcHJvY2Vz
c2VzIHRoYXQgaGF2ZSBhCisgICAgICAgIGRlYnVnZ2VyIGF0dGFjaGVkLiBUaGF0IGNvbmRpdGlv
biBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUsIGJ1dCB0aGlzCisgICAgICAgIGZ1bmN0aW9uIGNh
biBzdGFuZCBvbiBpdHMgb3duIGluIFdURi4gSXQgbWF5IGJlIHVzZWZ1bCBpbiB0aGUgZnV0dXJl
CisgICAgICAgIHRvIHBlcmhhcHMgY29udGludWUgdGhvdWdoIEFTU0VSVHMgaWYgeW91IGhhdmUg
YSBkZWJ1Z2dlciBhdHRhY2hlZC4KKworICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmNwcDoKKyAg
ICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5oOgorCisyMDE0LTA5LTE4ICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCByb2xsb3V0IHIxNzM3
MzEuIEJyb2tlIG11bHRpcGxlIGJ1aWxkcy4KIAogICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmNw
cDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwIGIvU291cmNlL1dU
Ri93dGYvQXNzZXJ0aW9ucy5jcHAKaW5kZXggMzQxYmQwMS4uZWE1YjliMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvQXNzZXJ0
aW9ucy5jcHAKQEAgLTYzLDYgKzYzLDExIEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlm
CiAKKyNpZiBPUyhEQVJXSU4pCisjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorI2luY2x1ZGUgPHVu
aXN0ZC5oPgorI2VuZGlmCisKICNpZiBPUyhEQVJXSU4pIHx8IChPUyhMSU5VWCkgJiYgIWRlZmlu
ZWQoX19VQ0xJQkNfXykpCiAjaW5jbHVkZSA8Y3h4YWJpLmg+CiAjaW5jbHVkZSA8ZGxmY24uaD4K
QEAgLTM4NSw2ICszOTAsMjAgQEAgdm9pZCBXVEZJbnN0YWxsUmVwb3J0QmFja3RyYWNlT25DcmFz
aEhvb2soKQogI2VuZGlmCiB9CiAKK2Jvb2wgV1RGSXNEZWJ1Z2dlckF0dGFjaGVkKCkKK3sKKyNp
ZiBPUyhEQVJXSU4pCisgICAgc3RydWN0IGtpbmZvX3Byb2MgaW5mbzsKKyAgICBpbnQgbWliW10g
PSB7IENUTF9LRVJOLCBLRVJOX1BST0MsIEtFUk5fUFJPQ19QSUQsIGdldHBpZCgpIH07CisgICAg
c2l6ZV90IHNpemUgPSBzaXplb2YoaW5mbyk7CisgICAgaWYgKHN5c2N0bChtaWIsIHNpemVvZiht
aWIpIC8gc2l6ZW9mKG1pYlswXSksICZpbmZvLCAmc2l6ZSwgbnVsbHB0ciwgMCkgPT0gLTEpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaW5mby5rcF9wcm9jLnBfZmxhZyAmIFBf
VFJBQ0VEOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogdm9pZCBXVEZS
ZXBvcnRGYXRhbEVycm9yKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBm
dW5jdGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCBhcmdzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oIGIvU291cmNlL1dURi93dGYv
QXNzZXJ0aW9ucy5oCmluZGV4IGY0Yzg5MmEuLjhiZTA5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0Fzc2VydGlvbnMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKQEAg
LTM4LDYgKzM4LDcgQEAKIAogI2luY2x1ZGUgPGludHR5cGVzLmg+CiAjaW5jbHVkZSA8c3RkYXJn
Lmg+CisjaW5jbHVkZSA8c3RkYm9vbC5oPgogI2luY2x1ZGUgPHN0ZGRlZi5oPgogCiAjaWZkZWYg
TkRFQlVHCkBAIC0xNDUsNiArMTQ2LDggQEAgdHlwZWRlZiB2b2lkICgqV1RGQ3Jhc2hIb29rRnVu
Y3Rpb24pKCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZTZXRDcmFzaEhvb2soV1RGQ3Jh
c2hIb29rRnVuY3Rpb24pOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGSW5zdGFsbFJlcG9y
dEJhY2t0cmFjZU9uQ3Jhc2hIb29rKCk7CiAKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIFdURklz
RGVidWdnZXJBdHRhY2hlZCgpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDBjYTIyZTEuLjg1NDFhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBAQAog
MjAxNC0wOS0xOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFNob3VsZCBiZSBhYmxlIHRvIGF0dGFjaCBhIGRlYnVnZ2VyIHRv
IGEgSlNDb250ZXh0IGJlZm9yZSBhbnl0aGluZyBpcyBleGVjdXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2ODkzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIEF1dG9tYXRpYyBpbnNwZWN0aW9uIGlz
IGN1cnJlbnRseSBkaXNhYmxlZCBmb3Igd2ViIHBhZ2VzLgorICAgICAgICBUaGlzIGp1c3QgdXBk
YXRlcyB0aGUgaW50ZXJmYWNlcyB0aGF0IGNoYW5nZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4
cC5pbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdyk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VEZWJ1Z2dh
YmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VEZWJ1Z2dhYmxlLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JG
cm9udGVuZCk6CisKKzIwMTQtMDktMTggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KKwogICAgICAgICBVbnJldmlld2VkIHJvbGxvdXQgcjE3MzczMS4gQnJva2UgbXVsdGlw
bGUgYnVpbGRzLgogCiAgICAgICAgICogV2ViQ29yZS5leHAuaW46CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDg3NGU1MWUuLjg4ZTFlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0zMTIzLDcg
KzMxMjMsNyBAQCBfX1pON1dlYkNvcmU1Q29sb3JDMUVSS04zV1RGNlN0cmluZ0UKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogX19aTjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTI3c2hvdWxkVHJlYXRV
UkxTY2hlbWVBc0xvY2FsRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTVJbnNwZWN0b3JD
bGllbnQzMWRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2VFUE5TXzRQYWdlRVJLTjNXVEY2
U3RyaW5nRQotX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTVjb25uZWN0RnJvbnRl
bmRFUE45SW5zcGVjdG9yMjRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxFCitfX1pON1dlYkNvcmUx
OUluc3BlY3RvckNvbnRyb2xsZXIxNWNvbm5lY3RGcm9udGVuZEVQTjlJbnNwZWN0b3IyNEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbEViCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIx
OGRpc2Nvbm5lY3RGcm9udGVuZEVOOUluc3BlY3RvcjI1SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNv
bkUKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4c2V0UHJvZmlsZXJFbmFibGVk
RWIKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI1ZXZhbHVhdGVGb3JUZXN0SW5G
cm9udGVuZEVSS04zV1RGNlN0cmluZ0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBjN2M4Nzk1Li4xNzFhNmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0yMzAs
NyArMjMwLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbGVhcldpbmRvd09iamVj
dEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV28KICAgICAgICAgbV9pbnNwZWN0b3JG
cm9udGVuZENsaWVudC0+d2luZG93T2JqZWN0Q2xlYXJlZCgpOwogfQogCi12b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZy
b250ZW5kQ2hhbm5lbCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5k
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBib29sKQogewogICAg
IEFTU0VSVChmcm9udGVuZENoYW5uZWwpOwogICAgIEFTU0VSVChtX2luc3BlY3RvckNsaWVudCk7
CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KCkKICAg
ICBlbHNlIHsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwgPSBtX2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3RvckZyb250ZW5kKHRoaXMpOwogICAg
ICAgICBpZiAoZnJvbnRlbmRDaGFubmVsKQotICAgICAgICAgICAgY29ubmVjdEZyb250ZW5kKGZy
b250ZW5kQ2hhbm5lbCk7CisgICAgICAgICAgICBjb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFu
bmVsLCBmYWxzZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBmZDU1OTI0Li4xMmExZTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTkzLDcgKzkzLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaGFzTG9jYWxGcm9udGVuZCgpIGNvbnN0OwogICAgIGJvb2wg
aGFzUmVtb3RlRnJvbnRlbmQoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29u
bmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNj
b25uZWN0UmVhc29uKTsKICAgICB2b2lkIHNldFByb2Nlc3NJZChsb25nKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcAppbmRleCA2NzhjNWYyLi41Y2Y4NDlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBib29sIFBh
Z2VEZWJ1Z2dhYmxlOjpoYXNMb2NhbERlYnVnZ2VyKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdl
Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5oYXNMb2NhbEZyb250ZW5kKCk7CiB9CiAKLXZvaWQgUGFn
ZURlYnVnZ2FibGU6OmNvbm5lY3QoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGNoYW5uZWwpCit2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBjaGFubmVsLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikK
IHsKICAgICBpZiAoIW1fcGFnZS5zZXR0aW5ncygpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkg
ewogICAgICAgICBtX2ZvcmNlZERldmVsb3BlckV4dHJhc0VuYWJsZWQgPSB0cnVlOwpAQCAtNzgs
NyArNzgsNyBAQCB2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBjaGFubmVsKQogCiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciYg
aW5zcGVjdG9yQ29udHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7CiAgICAg
aW5zcGVjdG9yQ29udHJvbGxlci5zZXRIYXNSZW1vdGVGcm9udGVuZCh0cnVlKTsKLSAgICBpbnNw
ZWN0b3JDb250cm9sbGVyLmNvbm5lY3RGcm9udGVuZChyZWludGVycHJldF9jYXN0PFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCo+KGNoYW5uZWwpKTsKKyAgICBpbnNwZWN0b3JDb250
cm9sbGVyLmNvbm5lY3RGcm9udGVuZChyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCo+KGNoYW5uZWwpLCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pOwogfQog
CiB2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURl
YnVnZ2FibGUuaAppbmRleCA2NzMyNjRjLi40MWVmYmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
RGVidWdnYWJsZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmlu
ZyB1cmwoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzTG9jYWxEZWJ1Z2dl
cigpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9y
OjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y29ubmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRv
bWF0aWNJbnNwZWN0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0SW5kaWNhdGluZyhib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCAwYTAyNjdhLi5kZjc3ZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCkBAIC0xNDc3LDcgKzE0NzcsOCBAQCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gSW50ZXJu
YWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHVybCkKIAogICAg
IG1fZnJvbnRlbmRDaGFubmVsID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bER1bW15KGZyb250ZW5kUGFnZSkpOwogCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LmNvbm5lY3RGcm9udGVuZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSk7CisgICAgYm9vbCBpc0F1
dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVy
KCkuY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmRDaGFubmVsLmdldCgpLCBpc0F1dG9tYXRpY0lu
c3BlY3Rpb24pOwogCiAgICAgcmV0dXJuIG1fZnJvbnRlbmRXaW5kb3c7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGYxNDQ2M2YuLjQwNGMzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMDktMTgg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBTaG91bGQgYmUgYWJsZSB0byBhdHRhY2ggYSBkZWJ1Z2dlciB0byBhIEpTQ29udGV4
dCBiZWZvcmUgYW55dGhpbmcgaXMgZXhlY3V0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjg5MworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90
aHkgSGF0Y2hlci4KKworICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVy
YXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbjoKKwogMjAxNC0wOS0xNSAgcGVhdm9Ab3V0bG9vay5j
b20gIDxwZWF2b0BvdXRsb29rLmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIE1ha2UgaXQgZWFz
aWVyIHRvIGVuYWJsZS9kaXNhYmxlIEdTdHJlYW1lci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVm
LmluIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3Iv
V2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5kZXggZWQ0MDhkNi4uN2ZmNzgzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0
RXhwb3J0cy5kZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRF
eHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAgLTIxOSw3ICsyMTksNiBAQCBF
WFBPUlRTCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD8/MUluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWxAV2ViQ29yZUBAVUFFQFhaLCA/PzFJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
QFdlYkNvcmVAQFVFQUFAWFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jaGFuZ2VBdHRh
Y2hlZFdpbmRvd0hlaWdodEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVB
RVhJQFosID9jaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodEBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsQFdlYkNvcmVAQFVFQUFYSUBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Y2hh
bmdlQXR0YWNoZWRXaW5kb3dXaWR0aEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNv
cmVAQFVBRVhJQFosID9jaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoQEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWxAV2ViQ29yZUBAVUVBQVhJQFopCi0gICAgICAgIHN5bWJvbFdpdGhQb2ludGVy
KD9jb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYUEFWSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsQEluc3BlY3RvckBAQFosID9jb25uZWN0RnJvbnRlbmRASW5z
cGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRRUFBWFBFQVZJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWxASW5zcGVjdG9yQEBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2RvRGlzcGF0Y2hN
ZXNzYWdlT25Gcm9udGVuZFBhZ2VASW5zcGVjdG9yQ2xpZW50QFdlYkNvcmVAQFNBX05QQVZQYWdl
QDJAQUJWU3RyaW5nQFdURkBAQFosID9kb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlQElu
c3BlY3RvckNsaWVudEBXZWJDb3JlQEBTQV9OUEVBVlBhZ2VAMkBBRUJWU3RyaW5nQFdURkBAQFop
CiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9mcm9udGVuZExvYWRlZEBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRVhYWiwgP2Zyb250ZW5kTG9hZGVkQEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVBQVhYWikKICAgICAgICAgc3ltYm9sV2l0
aFBvaW50ZXIoP2dldFByb3BlcnR5QFNldHRpbmdzQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWxAV2ViQ29yZUBAVUFFP0FWU3RyaW5nQFdURkBAQUJWNDVAQFosID9nZXRQcm9wZXJ0eUBTZXR0
aW5nc0BJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVFQUE/QVZTdHJpbmdA
V1RGQEBBRUJWNDVAQFopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWFiOTJjOS4uMGI3NDIwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDE0LTA5LTE4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2hvdWxkIGJlIGFibGUgdG8g
YXR0YWNoIGEgZGVidWdnZXIgdG8gYSBKU0NvbnRleHQgYmVmb3JlIGFueXRoaW5nIGlzIGV4ZWN1
dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY4
OTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCk6CisKIDIwMTQtMDktMTggIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIEluY29ycmVj
dCBwZW5kaW5nIEFQSSByZXF1ZXN0IFVSTCB3aGVuIGxvYWRpbmcgYW4gSFRNTCBzdHJpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3Iu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAK
aW5kZXggNTYxMjk3YS4uZGY2MTEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKQEAgLTMzMSw4ICszMzEsOSBAQCB2b2lkIFdl
Ykluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQogICAgIEFTU0VSVCghbV9yZW1v
dGVGcm9udGVuZENvbm5lY3RlZCk7CiAgICAgLy8gU3dpdGNoaW5nIGJldHdlZW4gaW4tcHJvY2Vz
cyBhbmQgcmVtb3RlIGluc3BlY3RvcnMgaXNuJ3Qgc3VwcG9ydGVkIHlldC4KICAgICBBU1NFUlQo
IW1faW5zcGVjdG9yUGFnZSk7Ci0gICAgCi0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmRDaGFubmVsKTsKKworICAg
IGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7CisgICAgbV9wYWdlLT5jb3JlUGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmRDaGFu
bmVsLCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pOwogICAgIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0
ZWQgPSB0cnVlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238498</attachid>
            <date>2014-09-22 15:02:28 -0700</date>
            <delta_ts>2014-09-23 11:38:32 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>for-bots-3.patch</filename>
            <type>text/plain</type>
            <size>40926</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDlkMzk0OWIuLmQwMDlkYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE0LTA5LTE4ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2hvdWxk
IGJlIGFibGUgdG8gYXR0YWNoIGEgZGVidWdnZXIgdG8gYSBKU0NvbnRleHQgYmVmb3JlIGFueXRo
aW5nIGlzIGV4ZWN1dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzY4OTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisK
KyAgICAgICAgQWRkcyBuZXcgcmVtb3RlIGluc3BlY3RvciBwcm90b2NvbCBoYW5kbGluZyBmb3Ig
YXV0b21hdGljIGluc3BlY3Rpb24uCisgICAgICAgIERlYnVnZ2VycyBjYW4gc2lnbmFsIHRoZXkg
aGF2ZSBlbmFibGVkIGF1dG9tYXRpYyBpbnNwZWN0aW9uLCBhbmQKKyAgICAgICAgd2hlbiBkZWJ1
Z2dhYmxlcyBhcmUgY3JlYXRlZCB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiB3aWxsIHBhdXNlIHRv
CisgICAgICAgIHNlZSBpZiB0aGUgZGVidWdnZXIgd2lsbCBpbnNwZWN0IG9yIGRlY2xpbmUgdG8g
aW5zcGVjdCB0aGUgZGVidWdnYWJsZS4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ci5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6Z2xvYmFsQXV0b21hdGljSW5zcGVjdGlvblN0YXRl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3Ip
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAgICAg
V2hlbiBmaXJzdCBzdGFydGluZywgY2hlY2sgdGhlIGdsb2JhbCAiaXMgdGhlcmUgYW4gYXV0by1p
bnNwZWN0IiBkZWJ1Z2dlciBzdGF0ZS4KKyAgICAgICAgVGhpcyBpcyBuZWNlc3Nhcnkgc28gdGhh
dCB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBrbm93cyBpZiBpdCBzaG91bGQgcGF1c2Ugb3IKKyAg
ICAgICAgbm90IHdoZW4gYSBkZWJ1Z2dhYmxlIGlzIGNyZWF0ZWQsIGV2ZW4gd2l0aG91dCBoYXZp
bmcgY29ubmVjdGVkIHRvIHdlYmluc3BlY3RvcmQgeWV0LgorCisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlRGVidWdnYWJsZUF1dG9tYXRpY0luc3BlY3RDYW5kaWRh
dGUpOgorICAgICAgICBXaGVuIGEgZGVidWdnYWJsZSBoYXMgZW5hYmxlZCByZW1vdGUgaW5zcGVj
dGlvbiwgdGFrZSB0aGlzIHBhdGggdG8gcHJvcG9zZQorICAgICAgICBpdCBhcyBhbiBhdXRvbWF0
aWMgaW5zcGVjdGlvbiBjYW5kaWRhdGUgaWYgdGhlcmUgaXMgYW4gYXV0by1pbnNwZWN0IGRlYnVn
Z2VyLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2VuZEF1dG9tYXRp
Y0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKToKKyAgICAgICAgU2VuZCB0aGUgYXV0b21hdGlj
IGluc3BlY3Rpb24gY2FuZGlkYXRlIG1lc3NhZ2UuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpyZWNlaXZlZFNldHVwTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6c2V0dXBGYWlsZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6OnNldHVwU3VjY2VlZGVkKToKKyAgICAgICAgQWZ0ZXIgYXR0ZW1wdGluZyB0
byBvcGVuIGFuIGluc3BlY3RvciwgdW5wYXVzZSBpZiBpdCB3YXMgZm9yIHRoZQorICAgICAgICBh
dXRvbWF0aWMgaW5zcGVjdGlvbiBjYW5kaWRhdGUuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjp3YWl0aW5nRm9yQXV0b21hdGljSW5zcGVjdGlvbik6CisgICAgICAgIFdo
ZW4gcnVubmluZyBhIG5lc3RlZCBydW5sb29wLCBjaGVjayBpZiB3ZSBzaG91bGQgcmVtYWluIHBh
dXNlZC4KKworICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNldHVwWFBDQ29u
bmVjdGlvbklmTmVlZGVkKToKKyAgICAgICAgSWYgYnkgdGhlIHRpbWUgd2UgY29ubmVjdCB0byB3
ZWJpbnNwZWN0b3JkIHdlIGhhdmUgYSBjYW5kaWRhdGUsIHRoZW4KKyAgICAgICAgaW1tZWRpYXRl
bHkgc2VuZCB0aGUgY2FuZGlkYXRlIG1lc3NhZ2UuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25GYWlsZWQpOgorICAgICAgICBJbiBlcnJvciBjYXNlcywg
Y2xlYXIgb3VyIHN0YXRlLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6
eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6cmVjZWl2ZWRBdXRvbWF0aWNJbnNwZWN0aW9uQ29uZmlndXJhdGlvbk1lc3Nh
Z2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQXV0b21h
dGljSW5zcGVjdGlvblJlamVjdE1lc3NhZ2UpOgorICAgICAgICBVcGRhdGUgc3RhdGUgd2hlbiBy
ZWNlaXZpbmcgbmV3IG1lc3NhZ2VzLgorCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlOjpzZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKToKKyAgICAgICAg
U3BlY2lhbCBjYXNlIHdoZW4gYSBkZWJ1Z2dhYmxlIGlzIG5ld2x5IGFsbG93ZWQgdG8gYmUgZGVi
dWdnYWJsZS4KKworICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
OjpwYXVzZVdhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKToKKyAgICAgICAgUnVuIGEgbmVz
dGVkIHJ1biBsb29wIHdoaWxlIHRoaXMgaXMgYW4gYXV0b21hdGljIGluc3BlY3Rpb24gY2FuZGlk
YXRlLgorCisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChJ
bnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250
ZW5kKToKKyAgICAgICAgV2hlbiB0aGUgaW5zcGVjdG9yIHN0YXJ0cyB2aWEgYXV0b21hdGljIGlu
c3BlY3Rpb24gYXV0b21hdGljYWxseSBwYXVzZS4KKyAgICAgICAgV2UgcGxhbiBvbiByZW1vdmlu
ZyB0aGlzIGNvbmRpdGlvbiBieSBoYXZpbmcgdGhlIGZyb250ZW5kIHNpZ25hbCB0byB0aGUKKyAg
ICAgICAgYmFja2VuZCB3aGVuIGl0IGlzIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQuCisgICAgICAg
IAorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXApOgorICAgICAgICBQYXNzIG9uIHRoZSBmbGFn
IG9mIHdoZXRoZXIgb3Igbm90IHRoaXMgd2FzIGF1dG9tYXRpYyBpbnNwZWN0aW9uLgorCisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZTo6Y29ubmVjdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZTo6cGF1c2VXYWl0aW5nRm9yQXV0b21hdGljSW5zcGVjdGlvbik6CisgICAgICAg
IFdoZW4gcGF1c2luZyBpbiBhIEpTR2xvYmFsT2JqZWN0IHdlIG5lZWQgdG8gcmVsZWFzZSB0aGUg
QVBJIGxvY2suCisKIDIwMTQtMDktMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBGVEwgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UgY29kZSBzaG91bGQgaW52b2x2
ZSBsZXNzIGNvcHktcGFzdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNw
cAppbmRleCA4ODA5ZThhLi5jODhhNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXIuY3BwCkBAIC02MSw2ICs2MSw3IEBAIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFsT2JqCiAg
ICAgYXV0byBjb25zb2xlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0Q29u
c29sZUFnZW50PihtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSk7CiAgICAgYXV0byBkZWJ1
Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ+
KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX2dsb2JhbE9iamVjdCwgY29uc29sZUFn
ZW50LmdldCgpKTsKIAorICAgIG1fZGVidWdnZXJBZ2VudCA9IGRlYnVnZ2VyQWdlbnQuZ2V0KCk7
CiAgICAgbV9jb25zb2xlQWdlbnQgPSBjb25zb2xlQWdlbnQuZ2V0KCk7CiAgICAgbV9jb25zb2xl
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ+KG1f
Y29uc29sZUFnZW50KTsKIApAQCAtODQsNyArODUsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcjo6Z2xvYmFsT2JqZWN0RGVzdHJveWVkKCkKICAgICBtX2luamVjdGVk
U2NyaXB0TWFuYWdlci0+ZGlzY29ubmVjdCgpOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsKQordm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX2luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCk7CiAgICAgQVNTRVJUKCFtX2luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKTsKQEAgLTkzLDYgKzk0LDE1IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsCiAgICAg
bV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoZnJvbnRlbmRDaGFubmVsKTsKIAogICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChmcm9udGVuZENoYW5uZWwsIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuZ2V0KCkpOworCisgICAgaWYgKGlzQXV0b21hdGljSW5zcGVjdGlvbikgeworICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBhbHdheXMgcGF1c2UgZm9yIGF1dG9tYXRpYyBpbnNwZWN0
aW9uLgorICAgICAgICAvLyBDdXJyZW50bHkgaWYgd2UgZG9uJ3QgYXV0b21hdGljYWxseSBwYXVz
ZSwgdGhlbiB3ZSBtYXkgbWlzcyBhIGJyZWFrcG9pbnQsIHNpbmNlIGJyZWFrcG9pbnRzCisgICAg
ICAgIC8vIGNvbWUgZnJvbSB0aGUgZnJvbnRlbmQgYW5kIG1pZ2h0IGJlIHJlY2VpdmVkIGFmdGVy
IHNvbWUgZXZhbHVhdGVTY3JpcHQgbWVzc2FnZS4gV2Ugc2hvdWxkCisgICAgICAgIC8vIGhhdmUg
dGhlIGZyb250ZW5kIHNpZ25hbCB0aGUgYmFja2VuZCB3aGVuIGl0cyBzZXR1cCBtZXNzYWdlcyBh
cmUgY29tcGxldGUuCisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+ZW5hYmxlKG51bGxwdHIpOwor
ICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPnBhdXNlKG51bGxwdHIpOworICAgIH0KIH0KIAogdm9p
ZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChJ
bnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlci5oCmluZGV4IDc2MDVhNWMuLjdmZTFjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBJbmplY3RlZFNjcmlw
dE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudDsKK2NsYXNzIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiBj
bGFzcyBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ7CiBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7
CkBAIC01OCw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXIoSlNDOjpKU0dsb2JhbE9iamVjdCYpOwogICAgIH5KU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXIoKTsKIAotICAgIHZvaWQgY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCopOworICAgIHZvaWQgY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKICAgICB2b2lkIGRpc2Nv
bm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbik7CiAgICAgdm9p
ZCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJik7CiAKQEAgLTg1LDYg
Kzg2LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyPiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNHbG9i
YWxPYmplY3RDb25zb2xlQ2xpZW50PiBtX2NvbnNvbGVDbGllbnQ7CiAgICAgSW5zcGVjdG9yQ29u
c29sZUFnZW50KiBtX2NvbnNvbGVBZ2VudDsKKyAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBt
X2RlYnVnZ2VyQWdlbnQ7CiAgICAgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAg
ICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwog
ICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKaW5kZXggZmI2YTc4YS4uYmNkNzgwOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yLmgKQEAgLTUyLDggKzUyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVy
RGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKik7CiAgICAgdm9pZCB1bnJlZ2lz
dGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKik7CiAgICAgdm9pZCB1cGRh
dGVEZWJ1Z2dhYmxlKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqKTsKKyAgICB2b2lkIHVwZGF0
ZURlYnVnZ2FibGVBdXRvbWF0aWNJbnNwZWN0Q2FuZGlkYXRlKFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUqKTsKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZCh1bnNpZ25lZCBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0dXBGYWlsZWQo
dW5zaWduZWQgaWRlbnRpZmllcik7CisgICAgdm9pZCBzZXR1cFN1Y2NlZWRlZCh1bnNpZ25lZCBp
ZGVudGlmaWVyKTsKKyAgICBib29sIHdhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKHVuc2ln
bmVkIGlkZW50aWZpZXIpOwogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9l
bmFibGVkOyB9CiAgICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKSBjb25zdCB7IHJldHVy
biBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbjsgfQpAQCAtODMsNiArODYsOCBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKIAorICAgIHZvaWQgc2Vu
ZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKCk7CisKICAgICB2aXJ0dWFsIHZv
aWQgeHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uKiwgTlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgeHBjQ29ubmVjdGlvbkZhaWxlZChSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rp
b25VbmhhbmRsZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCB4cGNfb2Jq
ZWN0X3QpIG92ZXJyaWRlOwpAQCAtOTQsNiArOTksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVj
ZWl2ZWRJbmRpY2F0ZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CiAgICAgdm9pZCBy
ZWNlaXZlZFByb3h5QXBwbGljYXRpb25TZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5m
byk7CiAgICAgdm9pZCByZWNlaXZlZENvbm5lY3Rpb25EaWVkTWVzc2FnZShOU0RpY3Rpb25hcnkg
KnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkQXV0b21hdGljSW5zcGVjdGlvbkNvbmZpZ3Vy
YXRpb25NZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworICAgIHZvaWQgcmVjZWl2ZWRB
dXRvbWF0aWNJbnNwZWN0aW9uUmVqZWN0TWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsK
IAogICAgIHN0YXRpYyBib29sIHN0YXJ0RW5hYmxlZDsKIApAQCAtMTE3LDYgKzEyNCw5IEBAIHBy
aXZhdGU6CiAgICAgcGlkX3QgbV9wYXJlbnRQcm9jZXNzSWRlbnRpZmllcjsKICAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBtX3BhcmVudFByb2Nlc3NBdWRpdERhdGE7CiAgICAgYm9vbCBtX3Nob3Vs
ZFNlbmRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb247CisgICAgYm9vbCBtX2F1dG9tYXRpY0luc3Bl
Y3Rpb25FbmFibGVkOworICAgIGJvb2wgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkOworICAg
IHVuc2lnbmVkIG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZUlkZW50aWZpZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQppbmRleCA2OGZhYTgy
Li42YmY3NDJjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjgsNiArNjgsMTcgQEAgc3RhdGljIGJv
b2wgY2FuQWNjZXNzV2ViSW5zcGVjdG9yTWFjaFBvcnQoKQogICAgIHJldHVybiBzYW5kYm94X2No
ZWNrKGdldHBpZCgpLCAibWFjaC1sb29rdXAiLCBTQU5EQk9YX0ZJTFRFUl9HTE9CQUxfTkFNRSwg
V0lSWFBDTWFjaFBvcnROYW1lKSA9PSAwOwogfQogCitzdGF0aWMgYm9vbCBnbG9iYWxBdXRvbWF0
aWNJbnNwZWN0aW9uU3RhdGUoKQoreworICAgIGludCB0b2tlbiA9IDA7CisgICAgaWYgKG5vdGlm
eV9yZWdpc3Rlcl9jaGVjayhXSVJBdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZFN0YXRlLCAmdG9r
ZW4pICE9IE5PVElGWV9TVEFUVVNfT0spCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVp
bnQ2NF90IGF1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkID0gMDsKKyAgICBub3RpZnlfZ2V0X3N0
YXRlKHRva2VuLCAmYXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWQpOworICAgIHJldHVybiBhdXRv
bWF0aWNJbnNwZWN0aW9uRW5hYmxlZCA9PSAxOworfQorCiBzdGF0aWMgdm9pZCBkaXNwYXRjaEFz
eW5jT25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKHZvaWQgKF5ibG9jaykoKSkKIHsKICNpZiBQ
TEFURk9STShJT1MpCkBAIC0xMTIsNiArMTIzLDkgQEAgUmVtb3RlSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3IoKQogICAgICwgbV9wdXNoU2NoZWR1bGVkKGZhbHNlKQogICAgICwgbV9wYXJlbnRQ
cm9jZXNzSWRlbnRpZmllcigwKQogICAgICwgbV9zaG91bGRTZW5kUGFyZW50UHJvY2Vzc0luZm9y
bWF0aW9uKGZhbHNlKQorICAgICwgbV9hdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZChmYWxzZSkK
KyAgICAsIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZChmYWxzZSkKKyAgICAsIG1fYXV0b21h
dGljSW5zcGVjdGlvbkNhbmRpZGF0ZUlkZW50aWZpZXIoMCkKIHsKIH0KIApAQCAtMTcwLDYgKzE4
NCw3NCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlRGVidWdnYWJsZShSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxlKQogICAgIHB1c2hMaXN0aW5nU29vbigpOwogfQog
Cit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlRGVidWdnYWJsZUF1dG9tYXRpY0luc3BlY3RD
YW5kaWRhdGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSkKK3sKKyAgICB7
CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrKG1fbXV0ZXgpOworCisg
ICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBkZWJ1Z2dhYmxlLT5pZGVudGlmaWVyKCk7Cisg
ICAgICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBh
dXRvIHJlc3VsdCA9IG1fZGVidWdnYWJsZU1hcC5zZXQoaWRlbnRpZmllciwgc3RkOjptYWtlX3Bh
aXIoZGVidWdnYWJsZSwgZGVidWdnYWJsZS0+aW5mbygpKSk7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCAhcmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgICAgIC8vIERvbid0IGFsbG93
IGF1dG9tYXRpYyBpbnNwZWN0aW9uIHVubGVzcyB0aGVyZSBpcyBhIGRlYnVnZ2VyIG9yIHdlIGFy
ZSBzdG9wcGVkLgorICAgICAgICBpZiAoIVdURklzRGVidWdnZXJBdHRhY2hlZCgpIHx8ICFtX2F1
dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkIHx8ICFtX2VuYWJsZWQpIHsKKyAgICAgICAgICAgIHB1
c2hMaXN0aW5nU29vbigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYW5kbGUgbXVsdGlwbGUgZGVidWdnYWJsZXMgdHJ5aW5n
IHRvIHBhdXNlIGF0IHRoZSBzYW1lIHRpbWUgb24gZGlmZmVyZW50IHRocmVhZHMuCisgICAgICAg
IC8vIFRvIG1ha2UgdGhpcyB3b3JrIHdlIHdpbGwgbmVlZCB0byBjaGFuZ2UgbV9hdXRvbWF0aWNJ
bnNwZWN0aW9uQ2FuZGlkYXRlSWRlbnRpZmllciB0byBiZSBhIHBlci10aHJlYWQgdmFsdWUuCisg
ICAgICAgIC8vIE11bHRpcGxlIGF0dGVtcHRzIG9uIHRoZSBzYW1lIHRocmVhZCBzaG91bGQgbm90
IGJlIHBvc3NpYmxlIGJlY2F1c2Ugb3VyIG5lc3RlZCBydW4gbG9vcCBpcyBpbiBhIHNwZWNpYWwg
UldJIG1vZGUuCisgICAgICAgIGlmIChtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQpIHsKKyAg
ICAgICAgICAgIExPR19FUlJPUigiU2tpcHBpbmcgQXV0b21hdGljIEluc3BlY3Rpb24gQ2FuZGlk
YXRlIHdpdGggcGFnZUlkKCV1KSBiZWNhdXNlIHdlIGFyZSBhbHJlYWR5IHBhdXNlZCB3YWl0aW5n
IGZvciBwYWdlSWQoJXUpIiwgaWRlbnRpZmllciwgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlk
YXRlSWRlbnRpZmllcik7CisgICAgICAgICAgICBwdXNoTGlzdGluZ1Nvb24oKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlvblBh
dXNlZCA9IHRydWU7CisgICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZUlkZW50
aWZpZXIgPSBpZGVudGlmaWVyOworCisgICAgICAgIC8vIElmIHdlIGFyZSBwYXVzaW5nIGJlZm9y
ZSB3ZSBoYXZlIGNvbm5lY3RlZCB0byB3ZWJpbnNwZWN0b3JkIHRoZSBjYW5kaWRhdGUgbWVzc2Fn
ZSB3aWxsIGJlIHNlbnQgYXMgc29vbiBhcyB0aGUgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4K
KyAgICAgICAgaWYgKG1feHBjQ29ubmVjdGlvbikgeworICAgICAgICAgICAgcHVzaExpc3RpbmdO
b3coKTsKKyAgICAgICAgICAgIHNlbmRBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlTWVzc2Fn
ZSgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSW4gY2FzZSBkZWJ1Z2dlcnMgZmFpbCB0byBy
ZXNwb25kLCBvciB3ZSBjYW5ub3QgY29ubmVjdCB0byB3ZWJpbnNwZWN0b3JkLCBhdXRvbWF0aWNh
bGx5IGNvbnRpbnVlIGFmdGVyIGEgc2hvcnQgcGVyaW9kIG9mIHRpbWUuCisgICAgICAgIGRpc3Bh
dGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDAuMyAqIE5TRUNfUEVS
X1NFQyksIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlf
REVGQVVMVCwgMCksIF57CisgICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4g
bG9jayhtX211dGV4KTsKKyAgICAgICAgICAgIGlmIChtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5k
aWRhdGVJZGVudGlmaWVyID09IGlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJS
T1IoIlNraXBwaW5nIEF1dG9tYXRpYyBJbnNwZWN0aW9uIENhbmRpZGF0ZSB3aXRoIHBhZ2VJZCgl
dSkgYmVjYXVzZSB3ZSBmYWlsZWQgdG8gcmVjZWl2ZSBhIHJlc3BvbnNlIGluIHRpbWUuIiwgbV9h
dXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlSWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAg
bV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0pOworICAgIH0KKworICAgIGRlYnVnZ2FibGUtPnBhdXNlV2FpdGluZ0ZvckF1dG9tYXRp
Y0luc3BlY3Rpb24oKTsKKworICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0
ZXg+IGxvY2sobV9tdXRleCk7CisKKyAgICAgICAgQVNTRVJUKG1fYXV0b21hdGljSW5zcGVjdGlv
bkNhbmRpZGF0ZUlkZW50aWZpZXIpOworICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5k
aWRhdGVJZGVudGlmaWVyID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpz
ZW5kQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3NhZ2UoKQoreworICAgIEFTU0VSVCht
X2VuYWJsZWQpOworICAgIEFTU0VSVChtX2F1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkKTsKKyAg
ICBBU1NFUlQobV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkKTsKKyAgICBBU1NFUlQobV9hdXRv
bWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlSWRlbnRpZmllcik7CisgICAgQVNTRVJUKG1feHBjQ29u
bmVjdGlvbik7CisKKyAgICBOU0RpY3Rpb25hcnkgKmRldGFpbHMgPSBAe1dJUlBhZ2VJZGVudGlm
aWVyS2V5OiBAKG1fYXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZUlkZW50aWZpZXIpfTsKKyAg
ICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdJUkF1dG9tYXRpY0luc3BlY3Rpb25DYW5k
aWRhdGVNZXNzYWdlLCBkZXRhaWxzKTsKK30KKwogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRN
ZXNzYWdlVG9SZW1vdGVGcm9udGVuZCh1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2sobV9tdXRl
eCk7CkBAIC0xOTgsOSArMjgwLDI2IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cEZhaWxl
ZCh1bnNpZ25lZCBpZGVudGlmaWVyKQogCiAgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9u
KCk7CiAKKyAgICBpZiAoaWRlbnRpZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRh
dGVJZGVudGlmaWVyKQorICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxz
ZTsKKwogICAgIHB1c2hMaXN0aW5nU29vbigpOwogfQogCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6
c2V0dXBTdWNjZWVkZWQodW5zaWduZWQgaWRlbnRpZmllcikKK3sKKyAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8c3RkOjptdXRleD4gbG9jayhtX211dGV4KTsKKworICAgIGlmIChpZGVudGlmaWVyID09IG1f
YXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZUlkZW50aWZpZXIpCisgICAgICAgIG1fYXV0b21h
dGljSW5zcGVjdGlvblBhdXNlZCA9IGZhbHNlOworfQorCitib29sIFJlbW90ZUluc3BlY3Rvcjo6
d2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24odW5zaWduZWQpCit7CisgICAgLy8gV2UgZG9u
J3QgdGFrZSB0aGUgbG9jayB0byBjaGVjayB0aGlzIGJlY2F1c2Ugd2UgYXNzdW1lIGl0IHdpbGwg
YmUgY2hlY2tlZCByZXBlYXRlZGx5LgorICAgIHJldHVybiBtX2F1dG9tYXRpY0luc3BlY3Rpb25Q
YXVzZWQ7Cit9CisKIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydCgpCiB7CiAgICAgc3RkOjps
b2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2sobV9tdXRleCk7CkBAIC0yMTAsNiArMzA5LDEyIEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydCgpCiAKICAgICBtX2VuYWJsZWQgPSB0cnVlOwog
CisgICAgLy8gTG9hZCB0aGUgaW5pdGlhbCBhdXRvbWF0aWMgaW5zcGVjdGlvbiBzdGF0ZSB3aGVu
IGZpcnN0IHN0YXJ0ZWQsIHNvIHdlIGtub3cgaXQgYmVmb3JlIHdlIGhhdmUgZXZlbiBjb25uZWN0
ZWQgdG8gd2ViaW5zcGVjdG9yZC4KKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7Cisg
ICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKKyAgICAgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9u
RW5hYmxlZCA9IGdsb2JhbEF1dG9tYXRpY0luc3BlY3Rpb25TdGF0ZSgpOworICAgIH0pOworCiAg
ICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKFdJUlNlcnZpY2VBdmFpbGFibGVOb3RpZmljYXRp
b24sICZtX25vdGlmeVRva2VuLCBtX3hwY1F1ZXVlLCBeKGludCkgewogICAgICAgICBSZW1vdGVJ
bnNwZWN0b3I6OnNoYXJlZCgpLnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAgICAgfSk7
CkBAIC0yMzksNiArMzQ0LDggQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0b3BJbnRlcm5hbChT
dG9wU291cmNlIHNvdXJjZSkKIAogICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOwog
CisgICAgbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkID0gZmFsc2U7CisKICAgICBpZiAobV94
cGNDb25uZWN0aW9uKSB7CiAgICAgICAgIHN3aXRjaCAoc291cmNlKSB7CiAgICAgICAgIGNhc2Ug
U3RvcFNvdXJjZTo6QVBJOgpAQCAtMjcwLDcgKzM3NywxMiBAQCB2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQoKQogICAgIG1feHBjQ29ubmVjdGlvbi0+c2Vu
ZE1lc3NhZ2UoQCJzeW4iLCBuaWwpOyAvLyBTZW5kIGEgc2ltcGxlIG1lc3NhZ2UgdG8gaW5pdGlh
bGl6ZSB0aGUgWFBDIGNvbm5lY3Rpb24uCiAgICAgeHBjX3JlbGVhc2UoY29ubmVjdGlvbik7CiAK
LSAgICBwdXNoTGlzdGluZ1Nvb24oKTsKKyAgICBpZiAobV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2Fu
ZGlkYXRlSWRlbnRpZmllcikgeworICAgICAgICAvLyBXZSBhbHJlYWR5IGhhdmUgYSBkZWJ1Z2dh
YmxlIHdhaXRpbmcgdG8gYmUgYXV0b21hdGljYWxseSBpbnNwZWN0ZWQuCisgICAgICAgIHB1c2hM
aXN0aW5nTm93KCk7CisgICAgICAgIHNlbmRBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlTWVz
c2FnZSgpOworICAgIH0gZWxzZQorICAgICAgICBwdXNoTGlzdGluZ1Nvb24oKTsKIH0KIAogI3By
YWdtYSBtYXJrIC0gUHJveHkgQXBwbGljYXRpb24gSW5mb3JtYXRpb24KQEAgLTMxNCw2ICs0MjYs
MTAgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1lc3NhZ2Uo
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbioKICAgICAgICAgcmVjZWl2ZWRQcm94eUFwcGxp
Y2F0aW9uU2V0dXBNZXNzYWdlKHVzZXJJbmZvKTsKICAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOldJUkNvbm5lY3Rpb25EaWVkTWVzc2FnZV0pCiAgICAgICAgIHJlY2Vp
dmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNlIGlmIChbbWVzc2Fn
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkF1dG9tYXRpY0luc3BlY3Rpb25Db25maWd1cmF0aW9u
TWVzc2FnZV0pCisgICAgICAgIHJlY2VpdmVkQXV0b21hdGljSW5zcGVjdGlvbkNvbmZpZ3VyYXRp
b25NZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOldJUkF1dG9tYXRpY0luc3BlY3Rpb25SZWplY3RNZXNzYWdlXSkKKyAgICAgICAgcmVj
ZWl2ZWRBdXRvbWF0aWNJbnNwZWN0aW9uUmVqZWN0TWVzc2FnZSh1c2VySW5mbyk7CiAgICAgZWxz
ZQogICAgICAgICBOU0xvZyhAIlVucmVjb2duaXplZCBSZW1vdGVJbnNwZWN0b3IgWFBDIE1lc3Nh
Z2U6ICVAIiwgbWVzc2FnZU5hbWUpOwogfQpAQCAtMzM0LDYgKzQ1MCw4IEBAIHZvaWQgUmVtb3Rl
SW5zcGVjdG9yOjp4cGNDb25uZWN0aW9uRmFpbGVkKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24qIGNvbm5lY3RpCiAKICAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKIAorICAg
IG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCA9IGZhbHNlOworCiAgICAgLy8gVGhlIGNvbm5l
Y3Rpb24gd2lsbCBjbG9zZSBpdHNlbGYuCiAgICAgbV94cGNDb25uZWN0aW9uID0gbnVsbHB0cjsK
IH0KQEAgLTQzMyw2ICs1NTEsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlSGFzQWN0
aXZlRGVidWdTZXNzaW9uKCkKICAgICAvLyBMZWdhY3kgaU9TIFdlYktpdCAxIGhhZCBhIG5vdGlm
aWNhdGlvbi4gVGhpcyB3aWxsIG5lZWQgdG8gYmUgc21hcnRlciB3aXRoIFdlYktpdDIuCiB9CiAK
KwogI3ByYWdtYSBtYXJrIC0gUmVjZWl2ZWQgWFBDIE1lc3NhZ2VzCiAKIHZvaWQgUmVtb3RlSW5z
cGVjdG9yOjpyZWNlaXZlZFNldHVwTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQpAQCAt
NDYxLDcgKzU4MCw4IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZFNldHVwTWVzc2Fn
ZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQogICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUq
IGRlYnVnZ2FibGUgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUluZm8gZGVidWdnYWJsZUluZm8gPSBpdC0+dmFsdWUuc2Vjb25kOwogICAgIFJlZlB0cjxS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IGFkb3B0UmVm
KG5ldyBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbihkZWJ1Z2dhYmxlLCBjb25u
ZWN0aW9uSWRlbnRpZmllciwgc2VuZGVyLCBkZWJ1Z2dhYmxlSW5mby50eXBlKSk7Ci0gICAgaWYg
KCFjb25uZWN0aW9uLT5zZXR1cCgpKSB7CisgICAgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24g
PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlmaWVyID09IGRlYnVnZ2FibGUt
PmlkZW50aWZpZXIoKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24tPnNldHVwKGlzQXV0b21hdGljSW5z
cGVjdGlvbikpIHsKICAgICAgICAgY29ubmVjdGlvbi0+Y2xvc2UoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTU5Myw2ICs3MTMsMjMgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2Vp
dmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCiAgICAgdXBk
YXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CiB9CiAKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpy
ZWNlaXZlZEF1dG9tYXRpY0luc3BlY3Rpb25Db25maWd1cmF0aW9uTWVzc2FnZShOU0RpY3Rpb25h
cnkgKnVzZXJJbmZvKQoreworICAgIG1fYXV0b21hdGljSW5zcGVjdGlvbkVuYWJsZWQgPSBbW3Vz
ZXJJbmZvIG9iamVjdEZvcktleTpXSVJBdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZEtleV0gYm9v
bFZhbHVlXTsKKworICAgIGlmICghbV9hdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZCAmJiBtX2F1
dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQpCisgICAgICAgIG1fYXV0b21hdGljSW5zcGVjdGlvblBh
dXNlZCA9IGZhbHNlOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRBdXRvbWF0
aWNJbnNwZWN0aW9uUmVqZWN0TWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQoreworICAg
IHVuc2lnbmVkIHJlamVjdGlvbklkZW50aWZpZXIgPSBbW3VzZXJJbmZvIG9iamVjdEZvcktleTpX
SVJQYWdlSWRlbnRpZmllcktleV0gdW5zaWduZWRJbnRWYWx1ZV07CisKKyAgICBBU1NFUlQocmVq
ZWN0aW9uSWRlbnRpZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVJZGVudGlm
aWVyKTsKKyAgICBpZiAocmVqZWN0aW9uSWRlbnRpZmllciA9PSBtX2F1dG9tYXRpY0luc3BlY3Rp
b25DYW5kaWRhdGVJZGVudGlmaWVyKQorICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25QYXVz
ZWQgPSBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmgK
aW5kZXggNjQ3YjIyZS4uZTNlYjQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRz
LmgKQEAgLTM3LDEyICszNywxNCBAQAogI2RlZmluZSBXSVJTZXJ2aWNlQXZhaWxhYmlsaXR5Q2hl
Y2tOb3RpZmljYXRpb24gImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmF2YWlsYWJpbGl0eV9jaGVj
ayIKICNkZWZpbmUgV0lSU2VydmljZUVuYWJsZWROb3RpZmljYXRpb24gICAgICAgICAgICJjb20u
YXBwbGUud2ViaW5zcGVjdG9yZC5lbmFibGVkIgogI2RlZmluZSBXSVJTZXJ2aWNlRGlzYWJsZWRO
b3RpZmljYXRpb24gICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmRpc2FibGVkIgor
I2RlZmluZSBXSVJBdXRvbWF0aWNJbnNwZWN0aW9uRW5hYmxlZFN0YXRlICAgICAgImNvbS5hcHBs
ZS53ZWJpbnNwZWN0b3JkLmF1dG9tYXRpY19pbnNwZWN0aW9uX2VuYWJsZWQiCiAKIAogI2RlZmlu
ZSBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkgICAgICAgICAgICAgQCJXSVJBcHBsaWNhdGlv
bklkZW50aWZpZXJLZXkiCiAjZGVmaW5lIFdJUkFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcktl
eSAgICAgICBAIldJUkFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcktleSIKICNkZWZpbmUgV0lS
QXBwbGljYXRpb25OYW1lS2V5ICAgICAgICAgICAgICAgICAgIEAiV0lSQXBwbGljYXRpb25OYW1l
S2V5IgogI2RlZmluZSBXSVJJc0FwcGxpY2F0aW9uUHJveHlLZXkgICAgICAgICAgICAgICAgQCJX
SVJJc0FwcGxpY2F0aW9uUHJveHlLZXkiCisjZGVmaW5lIFdJUklzQXBwbGljYXRpb25BY3RpdmVL
ZXkgICAgICAgICAgICAgICBAIldJUklzQXBwbGljYXRpb25BY3RpdmVLZXkiCiAjZGVmaW5lIFdJ
Ukhvc3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkgICAgICAgICBAIldJUkhvc3RBcHBsaWNhdGlv
bklkZW50aWZpZXJLZXkiCiAjZGVmaW5lIFdJUkhvc3RBcHBsaWNhdGlvbk5hbWVLZXkgICAgICAg
ICAgICAgICBAIldJUkhvc3RBcHBsaWNhdGlvbk5hbWVLZXkiCiAjZGVmaW5lIFdJUkNvbm5lY3Rp
b25JZGVudGlmaWVyS2V5ICAgICAgICAgICAgICBAIldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5
IgpAQCAtNzEsNiArNzMsMTIgQEAKICNkZWZpbmUgV0lSVHlwZUphdmFTY3JpcHQgICAgICAgICAg
ICAgICAgICAgICAgIEAiV0lSVHlwZUphdmFTY3JpcHQiCiAjZGVmaW5lIFdJUlR5cGVXZWIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBAIldJUlR5cGVXZWIiCiAKKyNkZWZpbmUgV0lSQXV0
b21hdGljSW5zcGVjdGlvbkVuYWJsZWRLZXkgICAgICAgICAgIEAiV0lSQXV0b21hdGljSW5zcGVj
dGlvbkVuYWJsZWRLZXkiCisjZGVmaW5lIFdJUkF1dG9tYXRpY0luc3BlY3Rpb25TZXNzaW9uSWRl
bnRpZmllcktleSBAIldJUkF1dG9tYXRpY0luc3BlY3Rpb25TZXNzaW9uSWRlbnRpZmllcktleSIK
KyNkZWZpbmUgV0lSQXV0b21hdGljSW5zcGVjdGlvbkNvbmZpZ3VyYXRpb25NZXNzYWdlIEAiV0lS
QXV0b21hdGljSW5zcGVjdGlvbkNvbmZpZ3VyYXRpb25NZXNzYWdlIgorI2RlZmluZSBXSVJBdXRv
bWF0aWNJbnNwZWN0aW9uUmVqZWN0TWVzc2FnZSAgICAgICAgQCJXSVJBdXRvbWF0aWNJbnNwZWN0
aW9uUmVqZWN0TWVzc2FnZSIKKyNkZWZpbmUgV0lSQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0
ZU1lc3NhZ2UgICAgIEAiV0lSQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3NhZ2UiCisK
IC8vIFRoZXNlIGRlZmluaXRpb25zIGFyZSBzaGFyZWQgd2l0aCBhIFNpbXVsYXRvciB3ZWJpbnNw
ZWN0b3JkIGFuZAogLy8gT1MgWCBwcm9jZXNzIGNvbW11bmljYXRpbmcgd2l0aCBpdC4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcAppbmRleCBmZGYxZDk2Li4xZjk4YTcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcApAQCAtMjgsNiArMjgs
NyBAQAogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAKKyNpbmNsdWRlICJFdmVudExv
b3AuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKICNpbmNsdWRlICJS
ZW1vdGVJbnNwZWN0b3IuaCIKIApAQCAtNjEsNyArNjIsMTAgQEAgdm9pZCBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlOjpzZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKGJvb2wgYWxsb3dlZCkKIAog
ICAgIG1fYWxsb3dlZCA9IGFsbG93ZWQ7CiAKLSAgICB1cGRhdGUoKTsKKyAgICBpZiAobV9hbGxv
d2VkICYmIGF1dG9tYXRpY0luc3BlY3Rpb25BbGxvd2VkKCkpCisgICAgICAgIFJlbW90ZUluc3Bl
Y3Rvcjo6c2hhcmVkKCkudXBkYXRlRGVidWdnYWJsZUF1dG9tYXRpY0luc3BlY3RDYW5kaWRhdGUo
dGhpcyk7CisgICAgZWxzZQorICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OnNoYXJlZCgpLnVwZGF0
ZURlYnVnZ2FibGUodGhpcyk7CiB9CiAKIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OmluZm8oKSBjb25zdApAQCAtNzYsNiArODAsMTcgQEAg
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6
aW5mbygpIGNvbnN0CiAgICAgcmV0dXJuIGluZm87CiB9CiAKK3ZvaWQgUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6cGF1c2VXYWl0aW5nRm9yQXV0b21hdGljSW5zcGVjdGlvbigpCit7CisgICAg
QVNTRVJUKG1faWRlbnRpZmllcik7CisgICAgQVNTRVJUKG1fYWxsb3dlZCk7CisgICAgQVNTRVJU
KGF1dG9tYXRpY0luc3BlY3Rpb25BbGxvd2VkKCkpOworCisgICAgRXZlbnRMb29wIGxvb3A7Cisg
ICAgd2hpbGUgKFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkud2FpdGluZ0ZvckF1dG9tYXRpY0lu
c3BlY3Rpb24oaWRlbnRpZmllcigpKSAmJiAhbG9vcC5lbmRlZCgpKQorICAgICAgICBsb29wLmN5
Y2xlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgKaW5k
ZXggZDQ4MDk2OC4uMzlkNTBiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUu
aApAQCAtNjIsMTEgKzYyLDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB1cmwoKSBj
b25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBXZWIKICAgICB2aXJ0dWFsIGJvb2wgaGFzTG9j
YWxEZWJ1Z2dlcigpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCkgeyB9IC8vIERlZmF1bHQgaXMg
dG8gZG8gbm90aGluZy4KIAorICAgIHZpcnR1YWwgYm9vbCBhdXRvbWF0aWNJbnNwZWN0aW9uQWxs
b3dlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHBhdXNlV2Fp
dGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24oKTsKKwogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBt
X2lkZW50aWZpZXI7CiAgICAgYm9vbCBtX2FsbG93ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29u
bmVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaAppbmRleCAyYmVjNDM3Li4xNWNiYjJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmgK
QEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRp
ZmllcigpIGNvbnN0OwogICAgIHVuc2lnbmVkIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KIAotICAgIGJvb2wgc2V0dXAoKTsKKyAgICBib29sIHNldHVwKGJvb2wg
aXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKIAogICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIGNs
b3NlRnJvbURlYnVnZ2FibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb24ubW0KaW5kZXggMGMzYjkwOC4uNWQ5MzUzZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0KQEAgLTE0OSw3
ICsxNDksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpkaXNw
YXRjaEFzeW5jT25EZWJ1Z2dhYmxlKHZvaWQgKF5ibG9jawogICAgIFJlbW90ZUluc3BlY3RvclF1
ZXVlVGFza09uR2xvYmFsUXVldWUoYmxvY2spOwogfQogCi1ib29sIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uOjpzZXR1cCgpCitib29sIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uOjpzZXR1cChib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikKIHsKICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9jayhtX2RlYnVnZ2FibGVNdXRleCk7CiAKQEAg
LTE2NCw4ICsxNjQsOSBAQCBib29sIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
OjpzZXR1cCgpCiAgICAgICAgICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKS5zZXR1
cEZhaWxlZChpZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgICAgIG1fZGVidWdnYWJsZSA9IG51
bGxwdHI7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1fZGVidWdnYWJs
ZS0+Y29ubmVjdCh0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2RlYnVnZ2FibGUtPmNvbm5lY3Qo
dGhpcywgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rl
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKS5zZXR1
cFN1Y2NlZWRlZChpZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIGRlcmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcAppbmRleCAwNWUwZDg3Li5lNDI4ZjQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERl
YnVnZ2FibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0
b3JBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUg
IlJlbW90ZUluc3BlY3Rvci5oIgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpAQCAtNDgs
MTEgKzQ5LDExIEBAIFN0cmluZyBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6Om5hbWUoKSBjb25z
dAogICAgIHJldHVybiBuYW1lLmlzRW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgiSlNDb250ZXh0Iikg
OiBuYW1lOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6Y29ubmVjdChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkKK3ZvaWQgSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBib29sIGF1dG9tYXRpY0luc3BlY3Rpb24pCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2tlcigmbV9nbG9iYWxPYmplY3Qudm0oKSk7CiAKLSAgICBtX2dsb2JhbE9iamVjdC5pbnNwZWN0
b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9n
bG9iYWxPYmplY3QuaW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZChmcm9udGVu
ZENoYW5uZWwsIGF1dG9tYXRpY0luc3BlY3Rpb24pOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZTo6ZGlzY29ubmVjdCgpCkBAIC02OSw2ICs3MCwxMiBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0
IFN0cmluZyYgbQogICAgIG1fZ2xvYmFsT2JqZWN0Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNw
YXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CiB9CiAKK3ZvaWQgSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlOjpwYXVzZVdhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKCkKK3sKKyAg
ICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcygmbV9nbG9iYWxPYmplY3Qu
dm0oKSk7CisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6cGF1c2VXYWl0aW5nRm9yQXV0
b21hdGljSW5zcGVjdGlvbigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaAppbmRleCA5ZjRiNmU4Li44
YzZlYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaApAQCAtNTEsMTAgKzUxLDEzIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29s
IGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNwZWN0b3I6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCosIGJvb2wgYXV0b21hdGljSW5zcGVjdGlvbikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkgb3ZlcnJpZGU7CiAKKyAgICB2aXJ0dWFsIGJvb2wgYXV0b21hdGljSW5zcGVjdGlvbkFsbG93
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIHBh
dXNlV2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24oKSBvdmVycmlkZTsKKwogcHJpdmF0ZToK
ICAgICBKU0dsb2JhbE9iamVjdCYgbV9nbG9iYWxPYmplY3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAxNWY4NzBmLi43
NWE3ZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTA5LTE4ICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2hvdWxkIGJl
IGFibGUgdG8gYXR0YWNoIGEgZGVidWdnZXIgdG8gYSBKU0NvbnRleHQgYmVmb3JlIGFueXRoaW5n
IGlzIGV4ZWN1dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzY4OTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAg
ICAgICAgQ3VycmVudGx5IGF1dG9tYXRpYyBpbnNwZWN0aW9uIG9ubHkgaGFwcGVucyBpbiBwcm9j
ZXNzZXMgdGhhdCBoYXZlIGEKKyAgICAgICAgZGVidWdnZXIgYXR0YWNoZWQuIFRoYXQgY29uZGl0
aW9uIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSwgYnV0IHRoaXMKKyAgICAgICAgZnVuY3Rpb24g
Y2FuIHN0YW5kIG9uIGl0cyBvd24gaW4gV1RGLiBJdCBtYXkgYmUgdXNlZnVsIGluIHRoZSBmdXR1
cmUKKyAgICAgICAgdG8gcGVyaGFwcyBjb250aW51ZSB0aG91Z2ggQVNTRVJUcyBpZiB5b3UgaGF2
ZSBhIGRlYnVnZ2VyIGF0dGFjaGVkLgorCisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuY3BwOgor
ICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmg6CisKIDIwMTQtMDktMjIgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBFbGltaW5hdGUgcmVkdW5kYW50IFB0ckhhc2ggc3Bl
Y2lhbGl6YXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCmluZGV4IDM0MWJkMDEuLmVhNWI5YjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0Fzc2VydGlvbnMuY3BwCkBAIC02Myw2ICs2MywxMSBAQAogI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KICNlbmRpZgogCisjaWYgT1MoREFSV0lOKQorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNp
bmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorCiAjaWYgT1MoREFSV0lOKSB8fCAoT1MoTElOVVgp
ICYmICFkZWZpbmVkKF9fVUNMSUJDX18pKQogI2luY2x1ZGUgPGN4eGFiaS5oPgogI2luY2x1ZGUg
PGRsZmNuLmg+CkBAIC0zODUsNiArMzkwLDIwIEBAIHZvaWQgV1RGSW5zdGFsbFJlcG9ydEJhY2t0
cmFjZU9uQ3Jhc2hIb29rKCkKICNlbmRpZgogfQogCitib29sIFdURklzRGVidWdnZXJBdHRhY2hl
ZCgpCit7CisjaWYgT1MoREFSV0lOKQorICAgIHN0cnVjdCBraW5mb19wcm9jIGluZm87CisgICAg
aW50IG1pYltdID0geyBDVExfS0VSTiwgS0VSTl9QUk9DLCBLRVJOX1BST0NfUElELCBnZXRwaWQo
KSB9OworICAgIHNpemVfdCBzaXplID0gc2l6ZW9mKGluZm8pOworICAgIGlmIChzeXNjdGwobWli
LCBzaXplb2YobWliKSAvIHNpemVvZihtaWJbMF0pLCAmaW5mbywgJnNpemUsIG51bGxwdHIsIDAp
ID09IC0xKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGluZm8ua3BfcHJvYy5w
X2ZsYWcgJiBQX1RSQUNFRDsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisK
IHZvaWQgV1RGUmVwb3J0RmF0YWxFcnJvcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29u
c3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQogewogICAgIHZhX2xp
c3QgYXJnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaCBiL1NvdXJj
ZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAppbmRleCBmNGM4OTJhLi44YmUwOTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKKysrIGIvU291cmNlL1dURi93dGYvQXNzZXJ0
aW9ucy5oCkBAIC0zOCw2ICszOCw3IEBACiAKICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogI2luY2x1
ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KICNpbmNsdWRlIDxzdGRkZWYuaD4K
IAogI2lmZGVmIE5ERUJVRwpAQCAtMTQ1LDYgKzE0Niw4IEBAIHR5cGVkZWYgdm9pZCAoKldURkNy
YXNoSG9va0Z1bmN0aW9uKSgpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGU2V0Q3Jhc2hI
b29rKFdURkNyYXNoSG9va0Z1bmN0aW9uKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURklu
c3RhbGxSZXBvcnRCYWNrdHJhY2VPbkNyYXNoSG9vaygpOwogCitXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBXVEZJc0RlYnVnZ2VyQXR0YWNoZWQoKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA5ZTEyYzI2Li40NTE4YzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTQtMDktMTggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBTaG91bGQgYmUgYWJsZSB0byBhdHRhY2ggYSBk
ZWJ1Z2dlciB0byBhIEpTQ29udGV4dCBiZWZvcmUgYW55dGhpbmcgaXMgZXhlY3V0ZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjg5MworCisgICAg
ICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBBdXRvbWF0aWMgaW5z
cGVjdGlvbiBpcyBjdXJyZW50bHkgZGlzYWJsZWQgZm9yIHdlYiBwYWdlcy4KKyAgICAgICAgVGhp
cyBqdXN0IHVwZGF0ZXMgdGhlIGludGVyZmFjZXMgdGhhdCBjaGFuZ2VkLgorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNob3cpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9Q
YWdlRGVidWdnYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6Y29u
bmVjdCk6CisgICAgICAgICogcGFnZS9QYWdlRGVidWdnYWJsZS5oOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6b3BlbkR1bW15
SW5zcGVjdG9yRnJvbnRlbmQpOgorCiAyMDE0LTA5LTIyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYlNvY2tldCBjcmFzaCB3aGVuIGEgY29ubmVjdGlv
biBpcyBjbG9zZWQgZnJvbSBzZXJ2ZXIgc2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBhZjBk
NWFiLi4yMTcyOWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMzEyMiw3ICszMTIyLDcgQEAg
X19aTjdXZWJDb3JlNUNvbG9yQzFFUktOM1dURjZTdHJpbmdFCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKIF9fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnkyN3Nob3VsZFRyZWF0VVJMU2NoZW1lQXNM
b2NhbEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE1SW5zcGVjdG9yQ2xpZW50MzFkb0Rp
c3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlRVBOU180UGFnZUVSS04zV1RGNlN0cmluZ0UKLV9f
Wk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE1Y29ubmVjdEZyb250ZW5kRVBOOUluc3Bl
Y3RvcjI0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRQorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JD
b250cm9sbGVyMTVjb25uZWN0RnJvbnRlbmRFUE45SW5zcGVjdG9yMjRJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWxFYgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMThkaXNjb25uZWN0
RnJvbnRlbmRFTjlJbnNwZWN0b3IyNUluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb25FCiBfX1pON1dl
YkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOHNldFByb2ZpbGVyRW5hYmxlZEViCiBfX1pON1dl
YkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNWV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmRFUktO
M1dURjZTdHJpbmdFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKaW5kZXggYzdjODc5NS4uMTcxYTZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMjMwLDcgKzIzMCw3IEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZy
YW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvCiAgICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQtPndpbmRvd09iamVjdENsZWFyZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
Ojpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCkKIHsKICAgICBBU1NFUlQoZnJv
bnRlbmRDaGFubmVsKTsKICAgICBBU1NFUlQobV9pbnNwZWN0b3JDbGllbnQpOwpAQCAtMjg1LDcg
KzI4NSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCiAgICAgZWxzZSB7CiAg
ICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gbV9pbnNw
ZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlzKTsKICAgICAgICAgaWYgKGZy
b250ZW5kQ2hhbm5lbCkKLSAgICAgICAgICAgIGNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5u
ZWwpOworICAgICAgICAgICAgY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCwgZmFsc2Up
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmgKaW5kZXggZmQ1NTkyNC4uMTJhMWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGhhc0xvY2FsRnJvbnRlbmQoKSBjb25zdDsKICAgICBib29sIGhhc1JlbW90ZUZy
b250ZW5kKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3RGcm9udGVu
ZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNv
bik7CiAgICAgdm9pZCBzZXRQcm9jZXNzSWQobG9uZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
RGVidWdnYWJsZS5jcHAKaW5kZXggNjc4YzVmMi4uNWNmODQ5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlRGVidWdnYWJsZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBQYWdlRGVidWdnYWJs
ZTo6aGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS5pbnNwZWN0b3JD
b250cm9sbGVyKCkuaGFzTG9jYWxGcm9udGVuZCgpOwogfQogCi12b2lkIFBhZ2VEZWJ1Z2dhYmxl
Ojpjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBjaGFubmVsKQor
dm9pZCBQYWdlRGVidWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogY2hhbm5lbCwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pCiB7CiAgICAgaWYg
KCFtX3BhZ2Uuc2V0dGluZ3MoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpIHsKICAgICAgICAg
bV9mb3JjZWREZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gdHJ1ZTsKQEAgLTc4LDcgKzc4LDcgQEAg
dm9pZCBQYWdlRGVidWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogY2hhbm5lbCkKIAogICAgIEluc3BlY3RvckNvbnRyb2xsZXImIGluc3BlY3RvckNv
bnRyb2xsZXIgPSBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpOwogICAgIGluc3BlY3RvckNv
bnRyb2xsZXIuc2V0SGFzUmVtb3RlRnJvbnRlbmQodHJ1ZSk7Ci0gICAgaW5zcGVjdG9yQ29udHJv
bGxlci5jb25uZWN0RnJvbnRlbmQocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqPihjaGFubmVsKSk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci5jb25u
ZWN0RnJvbnRlbmQocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqPihjaGFubmVsKSwgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKIH0KIAogdm9pZCBQYWdl
RGVidWdnYWJsZTo6ZGlzY29ubmVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VEZWJ1Z2dhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgK
aW5kZXggNjczMjY0Yy4uNDFlZmJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlRGVidWdnYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUu
aApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVj
dGlvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGljYXRp
bmcoYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
MGEwMjY3YS4uZGY3N2Q5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAt
MTQ3Nyw3ICsxNDc3LDggQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IEludGVybmFsczo6b3BlbkR1
bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiAKICAgICBtX2Zyb250ZW5k
Q2hhbm5lbCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teShmcm9u
dGVuZFBhZ2UpKTsKIAotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJv
bnRlbmQobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOworICAgIGJvb2wgaXNBdXRvbWF0aWNJbnNw
ZWN0aW9uID0gZmFsc2U7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RG
cm9udGVuZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSwgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsK
IAogICAgIHJldHVybiBtX2Zyb250ZW5kV2luZG93OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhYjUxNWNhLi42
OGRmZDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE0LTA5LTE4ICBKb3NlcGggUGVj
b3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2hv
dWxkIGJlIGFibGUgdG8gYXR0YWNoIGEgZGVidWdnZXIgdG8gYSBKU0NvbnRleHQgYmVmb3JlIGFu
eXRoaW5nIGlzIGV4ZWN1dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzY4OTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIu
CisKKyAgICAgICAgKiBXZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0
RXhwb3J0cy5kZWYuaW46CisKIDIwMTQtMDktMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBHZW5lcmF0ZSBFbGVtZW50IGNhc3RpbmcgaGVscGVyIGZ1bmN0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRH
ZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hw
cm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgppbmRleCBmYmU4
Mzk0Li5mODk4NWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dl
YktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRl
Zi5pbgpAQCAtMjE5LDcgKzIxOSw3IEBAIEVYUE9SVFMKICAgICAgICAgc3ltYm9sV2l0aFBvaW50
ZXIoPz8xSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVQUVAWFosID8/MUlu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVBQUBYWikKICAgICAgICAgc3lt
Ym9sV2l0aFBvaW50ZXIoP2NoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0QEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFWElAWiwgP2NoYW5nZUF0dGFjaGVkV2luZG93SGVp
Z2h0QEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVBQVhJQFopCiAgICAg
ICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoQEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFWElAWiwgP2NoYW5nZUF0dGFjaGVkV2lu
ZG93V2lkdGhASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVRUFBWElAWikK
LSAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0b3JDb250
cm9sbGVyQFdlYkNvcmVAQFFBRVhQQVZJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxASW5zcGVjdG9y
QEBAWiwgP2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFFQUFY
UEVBVkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbEBJbnNwZWN0b3JAQEBaKQorICAgICAgICBzeW1i
b2xXaXRoUG9pbnRlcig/Y29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29y
ZUBAUUFFWFBBVkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbEBJbnNwZWN0b3JAQF9OQFosID9jb25u
ZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYUEFWSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsQEluc3BlY3RvckBAX05AWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50
ZXIoP2RvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2VASW5zcGVjdG9yQ2xpZW50QFdlYkNv
cmVAQFNBX05QQVZQYWdlQDJAQUJWU3RyaW5nQFdURkBAQFosID9kb0Rpc3BhdGNoTWVzc2FnZU9u
RnJvbnRlbmRQYWdlQEluc3BlY3RvckNsaWVudEBXZWJDb3JlQEBTQV9OUEVBVlBhZ2VAMkBBRUJW
U3RyaW5nQFdURkBAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9mcm9udGVuZExvYWRl
ZEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRVhYWiwgP2Zyb250ZW5k
TG9hZGVkQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVBQVhYWikKICAg
ICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2dldFByb3BlcnR5QFNldHRpbmdzQEluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFP0FWU3RyaW5nQFdURkBAQUJWNDVAQFosID9n
ZXRQcm9wZXJ0eUBTZXR0aW5nc0BJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVA
QFVFQUE/QVZTdHJpbmdAV1RGQEBBRUJWNDVAQFopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzgxY2JkNS4uMWY5
N2ZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE0LTA5LTE4ICBKb3NlcGggUGVj
b3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2hv
dWxkIGJlIGFibGUgdG8gYXR0YWNoIGEgZGVidWdnZXIgdG8gYSBKU0NvbnRleHQgYmVmb3JlIGFu
eXRoaW5nIGlzIGV4ZWN1dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzY4OTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCk6CisKIDIw
MTQtMDktMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBHZW5l
cmF0ZSBFbGVtZW50IGNhc3RpbmcgaGVscGVyIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCA1NjEyOTdhLi5k
ZjYxMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yLmNwcApAQCAtMzMxLDggKzMzMSw5IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1v
dGVGcm9udGVuZENvbm5lY3RlZCgpCiAgICAgQVNTRVJUKCFtX3JlbW90ZUZyb250ZW5kQ29ubmVj
dGVkKTsKICAgICAvLyBTd2l0Y2hpbmcgYmV0d2VlbiBpbi1wcm9jZXNzIGFuZCByZW1vdGUgaW5z
cGVjdG9ycyBpc24ndCBzdXBwb3J0ZWQgeWV0LgogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JQYWdl
KTsKLSAgICAKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5j
b25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwpOworCisgICAgYm9vbCBpc0F1dG9tYXRp
Y0luc3BlY3Rpb24gPSBmYWxzZTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwsIGlzQXV0b21hdGlj
SW5zcGVjdGlvbik7CiAgICAgbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCA9IHRydWU7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>