<?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>47285</bug_id>
          
          <creation_ts>2010-10-06 11:22:32 -0700</creation_ts>
          <short_desc>Remove the block-flow property and update writing-mode</short_desc>
          <delta_ts>2010-10-06 17:43:55 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>46123</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>290471</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-06 11:22:32 -0700</bug_when>
    <thetext>The latest draft of the writing mode spec kills the block-flow property and just makes writing-mode the property to use.  Update all the code to match the new draft.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290473</commentid>
    <comment_count>1</comment_count>
      <attachid>69968</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-06 11:26:42 -0700</bug_when>
    <thetext>Created attachment 69968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290477</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-06 11:29:25 -0700</bug_when>
    <thetext>Attachment 69968 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/rendering/style/SVGRenderStyle.h:354:  _writingMode is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 39 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>290481</commentid>
    <comment_count>3</comment_count>
      <attachid>69968</attachid>
    <who name="">mitz</who>
    <bug_when>2010-10-06 11:32:32 -0700</bug_when>
    <thetext>Comment on attachment 69968
Patch

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

&gt; WebCore/css/CSSProperty.cpp:45
&gt; +static int resolveToPhysicalProperty(TextDirection direction, WritingMode blockDirection, LogicalBoxSide logicalSide, const int* properties)

I’d rename the variable too.

&gt; WebCore/css/CSSProperty.cpp:152
&gt; +static int resolveToPhysicalProperty(WritingMode blockDirection, LogicalExtent logicalSide, const int* properties)

Ditto.

&gt; WebCore/css/CSSProperty.cpp:159
&gt; +int CSSProperty::resolveDirectionAwareProperty(int propertyID, TextDirection direction, WritingMode blockDirection)

Ditto.

&gt; WebCore/css/CSSValueKeywords.in:762
&gt; +# Standards values from CSS3

Standard?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290503</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-06 12:02:46 -0700</bug_when>
    <thetext>Fixed in r69220.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290528</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-06 13:00:24 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/69220 might have broken SnowLeopard Intel Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290721</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-06 17:34:22 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; http://trac.webkit.org/changeset/69220 might have broken SnowLeopard Intel Release (Tests)

This failure is still on the bots.  Investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290722</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-06 17:35:29 -0700</bug_when>
    <thetext>http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r69257%20(18889)/fast/css/getComputedStyle/computed-style-without-renderer-pretty-diff.html

Maybe just needs a new baseline?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290725</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-06 17:43:55 -0700</bug_when>
    <thetext>Landed updated baseline in http://trac.webkit.org/changeset/69263

Mr. Hyatt, was that correct?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69968</attachid>
            <date>2010-10-06 11:26:42 -0700</date>
            <delta_ts>2010-10-06 11:32:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>96379</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTIxNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTU5IEBACisyMDEwLTEwLTA2ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcyODUKKworICAgICAgICBVcGRh
dGUgdG8gdGhlIGxhdGVzdCB3cml0aW5nLW1vZGUgZHJhZnQuIFRoZSBibG9jay1mbG93IHByb3Bl
cnR5IGlzIGdvbmUgYW5kIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggd3JpdGluZy1tb2RlLgorICAg
ICAgICBDaGFuZ2UgYWxsIHRoZSBjb2RlIHRvIHVzZSB3cml0aW5nTW9kZSgpIGluc3RlYWQgb2Yg
YmxvY2tGbG93KCkgYW5kIHJlbmFtZSBhbGwgZnVuY3Rpb25zIHRoYXQgcmVmZXJyZWQgdG8gYmxv
Y2sgZmxvdworICAgICAgICBhcyBhcHByb3ByaWF0ZS4KKworICAgICAgICAqIGNzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6Cisg
ICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgV3JpdGluZ01vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFNWR1dyaXRpbmdNb2RlKToKKyAg
ICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVRv
UGh5c2ljYWxQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eTo6cmVzb2x2
ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5oOgor
ICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOgorICAgICAgICAqIGNzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxl
Rm9yRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YWRqdXN0
UmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlE
ZWNsYXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQ
cm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpNYXJnaW5JbmZvOjpNYXJnaW5JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpleHBhbmRzVG9FbmNsb3NlT3ZlcmhhbmdpbmdGbG9hdHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OnNldExvZ2ljYWxMZWZ0Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OnNldExvZ2ljYWxUb3BGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6bGF5b3V0QmxvY2tDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6aW5zZXJ0RmxvYXRpbmdPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmFkZE92ZXJoYW5naW5nRmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjphZGRJbnRydWRpbmdGbG9hdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNv
bGxhcHNlZE1hcmdpbkJlZm9yZUZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpjb2xsYXBzZWRNYXJnaW5BZnRlckZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjptYXJnaW5CZWZvcmVGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6bWFyZ2luQWZ0ZXJGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6bWFyZ2luU3RhcnRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6bWFyZ2luRW5kRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNl
dE1hcmdpblN0YXJ0Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNl
dE1hcmdpbkVuZEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzZXRN
YXJnaW5CZWZvcmVGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2V0
TWFyZ2luQWZ0ZXJGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bWFy
Z2luVmFsdWVzRm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxXaWR0aEZvckNoaWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxUb3BGb3JDaGlsZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbFJpZ2h0T2Zmc2V0Rm9yQ29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRPZmZzZXRGb3JDb250ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsVG9wRm9yRmxvYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxCb3R0b21Gb3JGbG9hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRGb3JGbG9hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbFJpZ2h0Rm9yRmxvYXQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxXaWR0aEZvckZsb2F0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzZXRMb2dpY2FsVG9wRm9yRmxvYXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNldExvZ2ljYWxMZWZ0Rm9yRmxvYXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNldExvZ2ljYWxIZWlnaHRGb3JGbG9hdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2V0TG9naWNhbFdpZHRoRm9yRmxvYXQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjptYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjptYXJnaW5BZnRl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1hcmdpblN0YXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6bWFyZ2luRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6c2V0TWFyZ2luU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzZXRN
YXJnaW5FbmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzZXRNYXJnaW5CZWZvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzZXRNYXJnaW5BZnRlcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6cGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0VXNpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94Ojphdm9pZHNGbG9hdHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bG9naWNhbExlZnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpsb2dpY2FsVG9wKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6bG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6bG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNldExv
Z2ljYWxMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2V0TG9naWNhbFRvcCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNldExvZ2ljYWxXaWR0aCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OnNldExvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94OjpzZXRMb2dpY2FsTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94Ojpjb250ZW50TG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6Y29udGVudExvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpz
dHJldGNoZXNUb1ZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aW50cmlu
c2ljTG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aW50cmluc2lj
TG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmF2YWlsYWJsZVdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXZhaWxhYmxlSGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2Nyb2xsYmFyTG9naWNhbEhlaWdodCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmlzV3JpdGluZ01vZGVSb290KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmll
bGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmll
bGRzZXQ6OnBhaW50TWFzayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lk
dGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNvbXB1dGVSZXBsYWNlZExvZ2lj
YWxIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjptYXJnaW5MZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlcklubGluZTo6bWFyZ2luUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5s
aW5lOjptYXJnaW5Ub3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjptYXJnaW5C
b3R0b20pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWRkaW5nVG9wKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFkZGluZ0JvdHRvbSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUYWJsZUNlbGw6OnBhZGRpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlQ2VsbDo6cGFkZGluZ1JpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6dmlld0xvZ2ljYWxXaWR0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojp2aWV3TG9naWNhbEhlaWdodCk6CisgICAgICAgICog
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGlu
ZUJveDo6Um9vdElubGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpkaWZmKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpsb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmxvZ2ljYWxNaW5XaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6bG9n
aWNhbE1heFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpsb2dpY2FsTWlu
SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpsb2dpY2FsTWF4SGVpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpib3JkZXJCZWZvcmVXaWR0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Ym9yZGVyQWZ0ZXJXaWR0aCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Ym9yZGVyU3RhcnRXaWR0aCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6Ym9yZGVyRW5kV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6Om1hcmdpbkJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
bWFyZ2luQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Om1hcmdpbkJlZm9y
ZVVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjptYXJnaW5BZnRlclVzaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjptYXJnaW5TdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6bWFyZ2luRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjptYXJnaW5TdGFydFVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjptYXJnaW5FbmRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cGFk
ZGluZ0JlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cGFkZGluZ0FmdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpwYWRkaW5nU3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnBhZGRpbmdFbmQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6
OnNldEJpdERlZmF1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjp3cml0
aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6aXNIb3Jpem9udGFs
V3JpdGluZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldFdyaXRp
bmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjppbml0aWFsV3JpdGlu
Z01vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxXcml0aW5nTW9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6c2V0V3JpdGluZ01vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyU3R5bGU6OndyaXRpbmdNb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmg6CisKIDIwMTAtMTAtMDYgIEx1aXogQWdvc3RpbmkgIDxs
dWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDY5MDE5KQorKysgV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw2
IEBAIHN0YXRpYyBjb25zdCBpbnQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSAKICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRCYWNr
Z3JvdW5kT3JpZ2luLAogICAgIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUsCi0gICAg
Q1NTUHJvcGVydHlXZWJraXRCbG9ja0Zsb3csCiAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJG
aXQsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZywKICAgICBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlLApAQCAtMjI2LDcgKzIyNSw4IEBAIHN0YXRpYyBj
b25zdCBpbnQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSAKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zaXRpb25UaW1pbmdGdW5jdGlvbiwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLAog
ICAgIENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwKLSAgICBDU1NQcm9wZXJ0eVdlYmtpdFVz
ZXJTZWxlY3QKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QsCisgICAgQ1NTUHJvcGVy
dHlXZWJraXRXcml0aW5nTW9kZQogCiAjaWYgRU5BQkxFKFNWRykKICAgICAsCkBAIC03MzQsNyAr
NzM0LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgIGlm
ICghc3R5bGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcHJvcGVydHlJRCA9IENTU1Byb3Bl
cnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShwcm9wZXJ0eUlELCBzdHlsZS0+ZGly
ZWN0aW9uKCksIHN0eWxlLT5ibG9ja0Zsb3coKSk7CisgICAgcHJvcGVydHlJRCA9IENTU1Byb3Bl
cnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShwcm9wZXJ0eUlELCBzdHlsZS0+ZGly
ZWN0aW9uKCksIHN0eWxlLT53cml0aW5nTW9kZSgpKTsKIAogICAgIHN3aXRjaCAoc3RhdGljX2Nh
c3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpIHsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUludmFsaWQ6CkBAIC0xMzU0LDggKzEzNTQsNiBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1ND
b21wdXRlZFN0eWxlRGVjCiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShzdHlsZS0+YXBwZWFyYW5jZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tmYWNlVmlzaWJpbGl0eToKICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcigoc3R5bGUtPmJhY2tmYWNlVmlzaWJpbGl0eSgpID09IEJhY2tm
YWNlVmlzaWJpbGl0eUhpZGRlbikgPyBDU1NWYWx1ZUhpZGRlbiA6IENTU1ZhbHVlVmlzaWJsZSk7
Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCbG9ja0Zsb3c6Ci0gICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+YmxvY2tGbG93KCkpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2U6CiAgICAgICAgICAgICByZXR1
cm4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZShzdHlsZS0+Ym9yZGVySW1hZ2UoKSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2U6CkBAIC0xNDYzLDcgKzE0NjEsOSBA
QCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+cG9pbnRlckV2ZW50cygpKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoKICAgICAgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5jb2xvclNwYWNlKCkp
OwotCisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZToKKyAgICAgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT53cml0aW5nTW9kZSgp
KTsKKyAgICAgICAgCiAgICAgICAgIC8qIFNob3J0aGFuZCBwcm9wZXJ0aWVzLCBjdXJyZW50bHkg
bm90IHN1cHBvcnRlZCBzZWUgYnVnIDEzNjU4Ki8KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmQ6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6CkBAIC0xNDc5LDcgKzE0
NzksNiBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJn
aW46CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgotICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0V3JpdGluZ01vZGU6CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAv
KiBVbmltcGxlbWVudGVkIENTUyAzIHByb3BlcnRpZXMgKGluY2x1ZGluZyBDU1MzIHNob3J0aGFu
ZCBwcm9wZXJ0aWVzKSAqLwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiA2OTAxOSkKKysrIFdl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NzQsMTUgKzE3NzQs
OCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAjZW5kaWYKIAog
ICAgIC8vIENTUyBUZXh0IExheW91dCBNb2R1bGUgTGV2ZWwgMzogVmVydGljYWwgd3JpdGluZyBz
dXBwb3J0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJsb2NrRmxvdzoKLSAgICAgICAgLy8g
WyAidGIiIHwgInJsIiB8ICJsciIgfCAiYnQiIF0KLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
VGIgfHwgaWQgPT0gQ1NTVmFsdWVSbCB8fCBpZCA9PSBDU1NWYWx1ZUxyIHx8IGlkID09IENTU1Zh
bHVlQnQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFr
OwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlOgotICAgICAgICAvLyBb
ICJsci10YiIgfCAicmwtdGIiIHwgInRiLXJsIiB8ICJidC1ybCIgfCAidGItbHIiIHwgImJ0LWxy
IiBdCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUxyVGIgfHwgaWQgPT0gQ1NTVmFsdWVSbFRi
IHx8IGlkID09IENTU1ZhbHVlVGJSbCB8fCBpZCA9PSBDU1NWYWx1ZUJ0UmwgfHwgaWQgPT0gQ1NT
VmFsdWVUYkxyIHx8IGlkID09IENTU1ZhbHVlQnRMcikKKyAgICAgICAgaWYgKGlkID49IENTU1Zh
bHVlSG9yaXpvbnRhbFRiICYmIGlkIDw9IENTU1ZhbHVlSG9yaXpvbnRhbEJ0KQogICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKIApJbmRleDogV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkocmV2aXNpb24gNjkwMTkpCisrKyBXZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIw
MDMsNDAgKzIwMDMsNDAgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZQogICAgIH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1By
aW1pdGl2ZVZhbHVlKEVCbG9ja0Zsb3dEaXJlY3Rpb24gZSkKK3RlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShXcml0aW5nTW9kZSBlKQogICAgIDog
bV90eXBlKENTU19JREVOVCkKICAgICAsIG1faGFzQ2FjaGVkQ1NTVGV4dChmYWxzZSkKIHsKICAg
ICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIFRvcFRvQm90dG9tQmxvY2tGbG93OgotICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVUYjsKKyAgICBjYXNlIFRvcFRvQm90dG9tV3JpdGluZ01v
ZGU6CisgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NWYWx1ZUhvcml6b250YWxUYjsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBSaWdodFRvTGVmdEJsb2NrRmxvdzoKLSAgICAgICAgbV92YWx1
ZS5pZGVudCA9IENTU1ZhbHVlUmw7CisgICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOgor
ICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVWZXJ0aWNhbFJsOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIExlZnRUb1JpZ2h0QmxvY2tGbG93OgotICAgICAgICBtX3ZhbHVlLmlkZW50
ID0gQ1NTVmFsdWVMcjsKKyAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGluZ01vZGU6CisgICAgICAg
IG1fdmFsdWUuaWRlbnQgPSBDU1NWYWx1ZVZlcnRpY2FsTHI7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQm90dG9tVG9Ub3BCbG9ja0Zsb3c6Ci0gICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NW
YWx1ZUJ0OworICAgIGNhc2UgQm90dG9tVG9Ub3BXcml0aW5nTW9kZToKKyAgICAgICAgbV92YWx1
ZS5pZGVudCA9IENTU1ZhbHVlSG9yaXpvbnRhbEJ0OwogICAgICAgICBicmVhazsKICAgICB9CiB9
CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQmxvY2tG
bG93RGlyZWN0aW9uKCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciBXcml0aW5nTW9kZSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX3ZhbHVlLmlk
ZW50KSB7Ci0gICAgY2FzZSBDU1NWYWx1ZVRiOgotICAgICAgICByZXR1cm4gVG9wVG9Cb3R0b21C
bG9ja0Zsb3c7Ci0gICAgY2FzZSBDU1NWYWx1ZVJsOgotICAgICAgICByZXR1cm4gUmlnaHRUb0xl
ZnRCbG9ja0Zsb3c7Ci0gICAgY2FzZSBDU1NWYWx1ZUxyOgotICAgICAgICByZXR1cm4gTGVmdFRv
UmlnaHRCbG9ja0Zsb3c7Ci0gICAgY2FzZSBDU1NWYWx1ZUJ0OgotICAgICAgICByZXR1cm4gQm90
dG9tVG9Ub3BCbG9ja0Zsb3c7CisgICAgY2FzZSBDU1NWYWx1ZUhvcml6b250YWxUYjoKKyAgICAg
ICAgcmV0dXJuIFRvcFRvQm90dG9tV3JpdGluZ01vZGU7CisgICAgY2FzZSBDU1NWYWx1ZVZlcnRp
Y2FsUmw6CisgICAgICAgIHJldHVybiBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOworICAgIGNhc2Ug
Q1NTVmFsdWVWZXJ0aWNhbExyOgorICAgICAgICByZXR1cm4gTGVmdFRvUmlnaHRXcml0aW5nTW9k
ZTsKKyAgICBjYXNlIENTU1ZhbHVlSG9yaXpvbnRhbEJ0OgorICAgICAgICByZXR1cm4gQm90dG9t
VG9Ub3BXcml0aW5nTW9kZTsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIFRvcFRvQm90dG9tQmxvY2tGbG93OworICAgICAgICByZXR1
cm4gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZTsKICAgICB9CiB9CiAKQEAgLTI3MDMsNyArMjcwMyw3
IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKICAgICB9CiB9CiAK
LXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShF
V3JpdGluZ01vZGUgZSkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZShTVkdXcml0aW5nTW9kZSBlKQogICAgIDogbV90eXBlKENTU19JREVOVCkK
ICAgICAsIG1faGFzQ2FjaGVkQ1NTVGV4dChmYWxzZSkKIHsKQEAgLTI3MjksNyArMjcyOSw3IEBA
IHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKICAgICB9CiB9CiAKLXRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFV3JpdGluZ01vZGUo
KSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFNW
R1dyaXRpbmdNb2RlKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsKICAg
ICBjYXNlIENTU1ZhbHVlTHJUYjoKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDY5MDE5
KQorKysgV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miwx
NiArNDIsMTYgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1Byb3BlcnR5JiBhLCBjbwogZW51
bSBMb2dpY2FsQm94U2lkZSB7IEJlZm9yZVNpZGUsIEVuZFNpZGUsIEFmdGVyU2lkZSwgU3RhcnRT
aWRlIH07CiBlbnVtIFBoeXNpY2FsQm94U2lkZSB7IFRvcFNpZGUsIFJpZ2h0U2lkZSwgQm90dG9t
U2lkZSwgTGVmdFNpZGUgfTsKIAotc3RhdGljIGludCByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5
KFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBFQmxvY2tGbG93RGlyZWN0aW9uIGJsb2NrRGlyZWN0
aW9uLCBMb2dpY2FsQm94U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgaW50KiBwcm9wZXJ0aWVzKQor
c3RhdGljIGludCByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KFRleHREaXJlY3Rpb24gZGlyZWN0
aW9uLCBXcml0aW5nTW9kZSBibG9ja0RpcmVjdGlvbiwgTG9naWNhbEJveFNpZGUgbG9naWNhbFNp
ZGUsIGNvbnN0IGludCogcHJvcGVydGllcykKIHsKICAgICBpZiAoZGlyZWN0aW9uID09IExUUikg
ewotICAgICAgICBpZiAoYmxvY2tEaXJlY3Rpb24gPT0gVG9wVG9Cb3R0b21CbG9ja0Zsb3cpIHsK
KyAgICAgICAgaWYgKGJsb2NrRGlyZWN0aW9uID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUpIHsK
ICAgICAgICAgICAgIC8vIFRoZSBjb21tb24gY2FzZS4gVGhlIGxvZ2ljYWwgYW5kIHBoeXNpY2Fs
IGJveCBzaWRlcyBtYXRjaC4KICAgICAgICAgICAgIC8vIExlZnQgPSBTdGFydCwgUmlnaHQgPSBF
bmQsIEJlZm9yZSA9IFRvcCwgQWZ0ZXIgPSBCb3R0b20KICAgICAgICAgICAgIHJldHVybiBwcm9w
ZXJ0aWVzW2xvZ2ljYWxTaWRlXTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGJs
b2NrRGlyZWN0aW9uID09IEJvdHRvbVRvVG9wQmxvY2tGbG93KSB7CisgICAgICAgIGlmIChibG9j
a0RpcmVjdGlvbiA9PSBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlKSB7CiAgICAgICAgICAgICAvLyBT
dGFydCA9IExlZnQsIEVuZCA9IFJpZ2h0LCBCZWZvcmUgPSBCb3R0b20sIEFmdGVyID0gVG9wLgog
ICAgICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewogICAgICAgICAgICAgY2FzZSBTdGFy
dFNpZGU6CkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBpbnQgcmVzb2x2ZVRvUGh5c2ljYWxQcm9w
ZXJ0eShUZXgKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYg
KGJsb2NrRGlyZWN0aW9uID09IExlZnRUb1JpZ2h0QmxvY2tGbG93KSB7CisgICAgICAgIGlmIChi
bG9ja0RpcmVjdGlvbiA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKSB7CiAgICAgICAgICAgICAv
LyBTdGFydCA9IFRvcCwgRW5kID0gQm90dG9tLCBCZWZvcmUgPSBMZWZ0LCBBZnRlciA9IFJpZ2h0
LgogICAgICAgICAgICAgc3dpdGNoIChsb2dpY2FsU2lkZSkgewogICAgICAgICAgICAgY2FzZSBT
dGFydFNpZGU6CkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyBpbnQgcmVzb2x2ZVRvUGh5c2ljYWxQ
cm9wZXJ0eShUZXgKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChibG9ja0RpcmVjdGlvbiA9
PSBUb3BUb0JvdHRvbUJsb2NrRmxvdykgeworICAgIGlmIChibG9ja0RpcmVjdGlvbiA9PSBUb3BU
b0JvdHRvbVdyaXRpbmdNb2RlKSB7CiAgICAgICAgIC8vIFN0YXJ0ID0gUmlnaHQsIEVuZCA9IExl
ZnQsIEJlZm9yZSA9IFRvcCwgQWZ0ZXIgPSBCb3R0b20KICAgICAgICAgc3dpdGNoIChsb2dpY2Fs
U2lkZSkgewogICAgICAgICBjYXNlIFN0YXJ0U2lkZToKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0
aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4CiAgICAgICAgIH0KICAgICB9CiAg
ICAgCi0gICAgaWYgKGJsb2NrRGlyZWN0aW9uID09IEJvdHRvbVRvVG9wQmxvY2tGbG93KSB7Cisg
ICAgaWYgKGJsb2NrRGlyZWN0aW9uID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUpIHsKICAgICAg
ICAgLy8gU3RhcnQgPSBSaWdodCwgRW5kID0gTGVmdCwgQmVmb3JlID0gQm90dG9tLCBBZnRlciA9
IFRvcAogICAgICAgICBzd2l0Y2ggKGxvZ2ljYWxTaWRlKSB7CiAgICAgICAgIGNhc2UgU3RhcnRT
aWRlOgpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyBpbnQgcmVzb2x2ZVRvUGh5c2ljYWxQcm9w
ZXJ0eShUZXgKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAoYmxvY2tEaXJlY3Rpb24g
PT0gTGVmdFRvUmlnaHRCbG9ja0Zsb3cpIHsKKyAgICBpZiAoYmxvY2tEaXJlY3Rpb24gPT0gTGVm
dFRvUmlnaHRXcml0aW5nTW9kZSkgewogICAgICAgICAvLyBTdGFydCA9IEJvdHRvbSwgRW5kID0g
VG9wLCBCZWZvcmUgPSBMZWZ0LCBBZnRlciA9IFJpZ2h0CiAgICAgICAgIHN3aXRjaCAobG9naWNh
bFNpZGUpIHsKICAgICAgICAgY2FzZSBTdGFydFNpZGU6CkBAIC0xNDksMTQgKzE0OSwxNCBAQCBz
dGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4CiAKIGVudW0gTG9naWNhbEV4
dGVudCB7IExvZ2ljYWxXaWR0aCwgTG9naWNhbEhlaWdodCB9OwogCi1zdGF0aWMgaW50IHJlc29s
dmVUb1BoeXNpY2FsUHJvcGVydHkoRUJsb2NrRmxvd0RpcmVjdGlvbiBibG9ja0RpcmVjdGlvbiwg
TG9naWNhbEV4dGVudCBsb2dpY2FsU2lkZSwgY29uc3QgaW50KiBwcm9wZXJ0aWVzKQorc3RhdGlj
IGludCByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KFdyaXRpbmdNb2RlIGJsb2NrRGlyZWN0aW9u
LCBMb2dpY2FsRXh0ZW50IGxvZ2ljYWxTaWRlLCBjb25zdCBpbnQqIHByb3BlcnRpZXMpCiB7Ci0g
ICAgaWYgKGJsb2NrRGlyZWN0aW9uID09IFRvcFRvQm90dG9tQmxvY2tGbG93IHx8IGJsb2NrRGly
ZWN0aW9uID09IEJvdHRvbVRvVG9wQmxvY2tGbG93KQorICAgIGlmIChibG9ja0RpcmVjdGlvbiA9
PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlIHx8IGJsb2NrRGlyZWN0aW9uID09IEJvdHRvbVRvVG9w
V3JpdGluZ01vZGUpCiAgICAgICAgIHJldHVybiBwcm9wZXJ0aWVzW2xvZ2ljYWxTaWRlXTsKICAg
ICByZXR1cm4gbG9naWNhbFNpZGUgPT0gTG9naWNhbFdpZHRoID8gcHJvcGVydGllc1sxXSA6IHBy
b3BlcnRpZXNbMF07CiB9CiAgICAgICAgIAotaW50IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0
aW9uQXdhcmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24s
IEVCbG9ja0Zsb3dEaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCitpbnQgQ1NTUHJvcGVydHk6OnJl
c29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbiwgV3JpdGluZ01vZGUgYmxvY2tEaXJlY3Rpb24pCiB7CiAgICAgc3dpdGNoIChz
dGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSkgewogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXJnaW5FbmQ6IHsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAkocmV2aXNpb24gNjkwMTkp
CisrKyBXZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2
MCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwogCi0gICAg
c3RhdGljIGludCByZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwg
VGV4dERpcmVjdGlvbiwgRUJsb2NrRmxvd0RpcmVjdGlvbik7CisgICAgc3RhdGljIGludCByZXNv
bHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgVGV4dERpcmVjdGlvbiwg
V3JpdGluZ01vZGUpOwogCiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NQcm9w
ZXJ0eSYsIGNvbnN0IENTU1Byb3BlcnR5Jik7CiAKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5p
bgkocmV2aXNpb24gNjkwMTkpCisrKyBXZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw2IEBAIGZvbnQtc3R5bGUKIGZvbnQtdmFyaWFudAog
Zm9udC13ZWlnaHQKIHRleHQtcmVuZGVyaW5nCi0td2Via2l0LWJsb2NrLWZsb3cKIC13ZWJraXQt
Zm9udC1zbW9vdGhpbmcKIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdAogLXdlYmtpdC13cml0aW5n
LW1vZGUKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA2OTAxOSkKKysr
IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEw
LDcgKzExMTAsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAg
ICAgaWYgKGRvY0VsZW1lbnQgJiYgZG9jRWxlbWVudC0+cmVuZGVyZXIoKSkgewogICAgICAgICAv
LyBVc2UgdGhlIGRpcmVjdGlvbiBhbmQgYmxvY2stZmxvdyBvZiB0aGUgZG9jdW1lbnQgZWxlbWVu
dCB0byBzZXQgdGhlCiAgICAgICAgIC8vIHZpZXdwb3J0J3MgZGlyZWN0aW9uIGFuZCBibG9jay1m
bG93LgotICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXRCbG9ja0Zsb3coZG9jRWxlbWVudC0+cmVu
ZGVyZXIoKS0+c3R5bGUoKS0+YmxvY2tGbG93KCkpOworICAgICAgICBkb2N1bWVudFN0eWxlLT5z
ZXRXcml0aW5nTW9kZShkb2NFbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLT53cml0aW5nTW9k
ZSgpKTsKICAgICAgICAgZG9jdW1lbnRTdHlsZS0+c2V0RGlyZWN0aW9uKGRvY0VsZW1lbnQtPnJl
bmRlcmVyKCktPnN0eWxlKCktPmRpcmVjdGlvbigpKTsKICAgICB9CiAKQEAgLTE3MjYsNyArMTcy
Niw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YWRqdXN0UmVuZGVyU3R5bGUKICAgICAgICAg
CiAgICAgICAgIC8vIEZJWE1FOiBEb24ndCBzdXBwb3J0IHRoaXMgbXV0YXRpb24gZm9yIHBzZXVk
byBzdHlsZXMgbGlrZSBmaXJzdC1sZXR0ZXIgb3IgZmlyc3QtbGluZSwgc2luY2UgaXQncyBub3Qg
Y29tcGxldGVseQogICAgICAgICAvLyBjbGVhciBob3cgdGhhdCBzaG91bGQgd29yay4KLSAgICAg
ICAgaWYgKHN0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FICYmIHN0eWxlLT5zdHlsZVR5cGUoKSA9
PSBOT1BTRVVETyAmJiBwYXJlbnRTdHlsZSAmJiBzdHlsZS0+YmxvY2tGbG93KCkgIT0gcGFyZW50
U3R5bGUtPmJsb2NrRmxvdygpKQorICAgICAgICBpZiAoc3R5bGUtPmRpc3BsYXkoKSA9PSBJTkxJ
TkUgJiYgc3R5bGUtPnN0eWxlVHlwZSgpID09IE5PUFNFVURPICYmIHBhcmVudFN0eWxlICYmIHN0
eWxlLT53cml0aW5nTW9kZSgpICE9IHBhcmVudFN0eWxlLT53cml0aW5nTW9kZSgpKQogICAgICAg
ICAgICAgc3R5bGUtPnNldERpc3BsYXkoSU5MSU5FX0JMT0NLKTsKICAgICAgICAgCiAgICAgICAg
IC8vIEFmdGVyIHBlcmZvcm1pbmcgdGhlIGRpc3BsYXkgbXV0YXRpb24sIGNoZWNrIHRhYmxlIHJv
d3MuICBXZSBkbyBub3QgaG9ub3IgcG9zaXRpb246cmVsYXRpdmUgb24KQEAgLTE3MzgsMTQgKzE3
MzgsMTQgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphZGp1c3RSZW5kZXJTdHlsZQogICAgICAg
ICAgICAgc3R5bGUtPnNldFBvc2l0aW9uKFN0YXRpY1Bvc2l0aW9uKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIEZJWE1FOiBTaW5jZSB3ZSBkb24ndCBzdXBwb3J0IGJsb2NrLWZsb3cgb24gZWl0aGVy
IHRhYmxlcyBvciBmbGV4aWJsZSBib3hlcyB5ZXQsIGRpc2FsbG93IHNldHRpbmcKLSAgICAgICAg
Ly8gb2YgYmxvY2stZmxvdyB0byBhbnl0aGluZyBvdGhlciB0aGFuIFRvcFRvQm90dG9tQmxvY2tG
bG93LgorICAgICAgICAvLyBvZiBibG9jay1mbG93IHRvIGFueXRoaW5nIG90aGVyIHRoYW4gVG9w
VG9Cb3R0b21Xcml0aW5nTW9kZS4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ2NDE3IC0gVGFibGVzIHN1cHBvcnQKICAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NDE4IC0gRmxleGlibGUgYm94IHN1
cHBvcnQuCi0gICAgICAgIGlmIChzdHlsZS0+YmxvY2tGbG93KCkgIT0gVG9wVG9Cb3R0b21CbG9j
a0Zsb3cgJiYgKHN0eWxlLT5kaXNwbGF5KCkgPT0gVEFCTEUgfHwgc3R5bGUtPmRpc3BsYXkoKSA9
PSBJTkxJTkVfVEFCTEUKKyAgICAgICAgaWYgKHN0eWxlLT53cml0aW5nTW9kZSgpICE9IFRvcFRv
Qm90dG9tV3JpdGluZ01vZGUgJiYgKHN0eWxlLT5kaXNwbGF5KCkgPT0gVEFCTEUgfHwgc3R5bGUt
PmRpc3BsYXkoKSA9PSBJTkxJTkVfVEFCTEUKICAgICAgICAgICAgIHx8IHN0eWxlLT5kaXNwbGF5
KCkgPT0gVEFCTEVfSEVBREVSX0dST1VQIHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0gVEFCTEVfUk9X
X0dST1VQCiAgICAgICAgICAgICB8fCBzdHlsZS0+ZGlzcGxheSgpID09IFRBQkxFX0ZPT1RFUl9H
Uk9VUCB8fCBzdHlsZS0+ZGlzcGxheSgpID09IFRBQkxFX1JPVyB8fCBzdHlsZS0+ZGlzcGxheSgp
ID09IFRBQkxFX0NFTEwKICAgICAgICAgICAgIHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0gQk9YIHx8
IHN0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FX0JPWCkpCi0gICAgICAgICAgICBzdHlsZS0+c2V0
QmxvY2tGbG93KFRvcFRvQm90dG9tQmxvY2tGbG93KTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRX
cml0aW5nTW9kZShUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKTsKICAgICB9CiAKICAgICAvLyBNYWtl
IHN1cmUgb3VyIHotaW5kZXggdmFsdWUgaXMgb25seSBhcHBsaWVkIGlmIHRoZSBvYmplY3QgaXMg
cG9zaXRpb25lZC4KQEAgLTI5NDYsNyArMjk0Niw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
YXBwbHlEZWNsYXJhdGlvbnMKIAogICAgICAgICAgICAgICAgIGlmIChhcHBseUZpcnN0KSB7CiAg
ICAgICAgICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKGZpcnN0Q1NTUHJvcGVydHkgPT0gQ1NT
UHJvcGVydHlDb2xvciwgQ1NTX2NvbG9yX2lzX2ZpcnN0X3Byb3BlcnR5KTsKLSAgICAgICAgICAg
ICAgICAgICAgQ09NUElMRV9BU1NFUlQoQ1NTUHJvcGVydHlab29tID09IENTU1Byb3BlcnR5Q29s
b3IgKyAxNCwgQ1NTX3pvb21faXNfZW5kX29mX2ZpcnN0X3Byb3BfcmFuZ2UpOworICAgICAgICAg
ICAgICAgICAgICBDT01QSUxFX0FTU0VSVChDU1NQcm9wZXJ0eVpvb20gPT0gQ1NTUHJvcGVydHlD
b2xvciArIDEzLCBDU1Nfem9vbV9pc19lbmRfb2ZfZmlyc3RfcHJvcF9yYW5nZSk7CiAgICAgICAg
ICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKENTU1Byb3BlcnR5TGluZUhlaWdodCA9PSBDU1NQ
cm9wZXJ0eVpvb20gKyAxLCBDU1NfbGluZV9oZWlnaHRfaXNfYWZ0ZXJfem9vbSk7CiAKICAgICAg
ICAgICAgICAgICAgICAgLy8gZ2l2ZSBzcGVjaWFsIHByaW9yaXR5IHRvIGZvbnQteHh4LCBjb2xv
ciBwcm9wZXJ0aWVzLCBldGMKQEAgLTMxMzQsNyArMzEzNCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICBib29sIGlzSW5oZXJpdCA9IG1fcGFyZW50Tm9k
ZSAmJiB2YWx1ZVR5cGUgPT0gQ1NTVmFsdWU6OkNTU19JTkhFUklUOwogICAgIGJvb2wgaXNJbml0
aWFsID0gdmFsdWVUeXBlID09IENTU1ZhbHVlOjpDU1NfSU5JVElBTCB8fCAoIW1fcGFyZW50Tm9k
ZSAmJiB2YWx1ZVR5cGUgPT0gQ1NTVmFsdWU6OkNTU19JTkhFUklUKTsKICAgICAKLSAgICBpZCA9
IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCwgbV9zdHlsZS0+
ZGlyZWN0aW9uKCksIG1fc3R5bGUtPmJsb2NrRmxvdygpKTsKKyAgICBpZCA9IENTU1Byb3BlcnR5
OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCwgbV9zdHlsZS0+ZGlyZWN0aW9uKCks
IG1fc3R5bGUtPndyaXRpbmdNb2RlKCkpOwogCiAgICAgaWYgKG1fY2hlY2tlci5tX21hdGNoVmlz
aXRlZFBzZXVkb0NsYXNzICYmICFpc1ZhbGlkVmlzaXRlZExpbmtQcm9wZXJ0eShpZCkpIHsKICAg
ICAgICAgLy8gTGltaXQgdGhlIHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBvbmx5
IHRoZSBvbmVzIGhvbm9yZWQgYnkgOnZpc2l0ZWQuCkBAIC01NTcxLDUwICs1NTcxLDggQEAgdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogI2VuZGlmIAogCiAgICAgLy8g
Q1NTIFRleHQgTGF5b3V0IE1vZHVsZSBMZXZlbCAzOiBWZXJ0aWNhbCB3cml0aW5nIHN1cHBvcnQK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmxvY2tGbG93OgotICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKGJsb2NrRmxvdywgQmxvY2tGbG93KQotICAg
ICAgICByZXR1cm47Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JpdGluZ01vZGU6Ci0g
ICAgICAgIC8vIFRoZSAnd3JpdGluZy1tb2RlJyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9w
ZXJ0eSBmb3IgdGhlICdkaXJlY3Rpb24nIHByb3BlcnR5IGFuZCB0aGUgJ2Jsb2NrLWZsb3cnIHBy
b3BlcnR5LiAKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+
c2V0RGlyZWN0aW9uKG1fcGFyZW50U3R5bGUtPmRpcmVjdGlvbigpKTsKLSAgICAgICAgICAgIG1f
c3R5bGUtPnNldEJsb2NrRmxvdyhtX3BhcmVudFN0eWxlLT5ibG9ja0Zsb3coKSk7Ci0gICAgICAg
IH0gZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXREaXJlY3Rp
b24obV9zdHlsZS0+aW5pdGlhbERpcmVjdGlvbigpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNl
dEJsb2NrRmxvdyhtX3N0eWxlLT5pbml0aWFsQmxvY2tGbG93KCkpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0g
ICAgICAgICAgICBjYXNlIENTU1ZhbHVlTHJUYjoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5z
ZXREaXJlY3Rpb24oTFRSKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCbG9ja0Zsb3co
VG9wVG9Cb3R0b21CbG9ja0Zsb3cpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBDU1NWYWx1ZVJsVGI6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0RGlyZWN0
aW9uKFJUTCk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0QmxvY2tGbG93KFRvcFRvQm90
dG9tQmxvY2tGbG93KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVUYlJsOgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldERpcmVjdGlvbihMVFIp
OwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJsb2NrRmxvdyhSaWdodFRvTGVmdEJsb2Nr
Rmxvdyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVl
QnRSbDoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXREaXJlY3Rpb24oUlRMKTsKLSAgICAg
ICAgICAgICAgICBtX3N0eWxlLT5zZXRCbG9ja0Zsb3coUmlnaHRUb0xlZnRCbG9ja0Zsb3cpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVRiTHI6Ci0g
ICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0RGlyZWN0aW9uKExUUik7Ci0gICAgICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0QmxvY2tGbG93KExlZnRUb1JpZ2h0QmxvY2tGbG93KTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVCdExyOgotICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldERpcmVjdGlvbihSVEwpOwotICAgICAgICAgICAgICAgIG1fc3R5
bGUtPnNldEJsb2NrRmxvdyhMZWZ0VG9SaWdodEJsb2NrRmxvdyk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
X0FORF9QUklNSVRJVkUod3JpdGluZ01vZGUsIFdyaXRpbmdNb2RlKQogICAgICAgICByZXR1cm47
CiAKICNpZiBFTkFCTEUoU1ZHKQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCShyZXZpc2lv
biA2OTAxOSkKKysrIFdlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTc1MSwxNiArNzUxLDE2IEBAIHdpbmRvd2VkCiBtYW51YWwKICMgYXV0bwogCi0jIC13
ZWJraXQtYmxvY2stZmxvdwotdGIKLXJsCi1scgotYnQKLQogIyAtd2Via2l0LXdyaXRpbmctbW9k
ZQorIyBTVkcgY29tcGF0aWJpbGl0eQorbHIKK3JsCit0YgogbHItdGIKIHJsLXRiCiB0Yi1ybAot
YnQtcmwKLXRiLWxyCi1idC1scgorIyBTdGFuZGFyZHMgdmFsdWVzIGZyb20gQ1NTMworaG9yaXpv
bnRhbC10YgordmVydGljYWwtcmwKK3ZlcnRpY2FsLWxyCitob3Jpem9udGFsLWJ0CkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiA2OTE4NCkKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCBS
ZW5kZXJCbG9jazo6TWFyZ2luSW5mbzo6TWFyZ2luSW5mbyhSZW5kCiAgICAgLy8gd2UncmUgcG9z
aXRpb25lZCwgZmxvYXRpbmcsIGEgdGFibGUgY2VsbC4KICAgICBtX2NhbkNvbGxhcHNlV2l0aENo
aWxkcmVuID0gIWJsb2NrLT5pc1JlbmRlclZpZXcoKSAmJiAhYmxvY2stPmlzUm9vdCgpICYmICFi
bG9jay0+aXNQb3NpdGlvbmVkKCkKICAgICAgICAgJiYgIWJsb2NrLT5pc0Zsb2F0aW5nKCkgJiYg
IWJsb2NrLT5pc1RhYmxlQ2VsbCgpICYmICFibG9jay0+aGFzT3ZlcmZsb3dDbGlwKCkgJiYgIWJs
b2NrLT5pc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpCi0gICAgICAgICYmICFibG9jay0+aXNC
bG9ja0Zsb3dSb290KCk7CisgICAgICAgICYmICFibG9jay0+aXNXcml0aW5nTW9kZVJvb3QoKTsK
IAogICAgIG1fY2FuQ29sbGFwc2VNYXJnaW5CZWZvcmVXaXRoQ2hpbGRyZW4gPSBtX2NhbkNvbGxh
cHNlV2l0aENoaWxkcmVuICYmIChiZWZvcmVCb3JkZXJQYWRkaW5nID09IDApICYmIGJsb2NrLT5z
dHlsZSgpLT5tYXJnaW5CZWZvcmVDb2xsYXBzZSgpICE9IE1TRVBBUkFURTsKIApAQCAtMTMxOSw3
ICsxMzE5LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRkT3ZlcmZsb3dGcm9tRmxvYXRzKAogYm9v
bCBSZW5kZXJCbG9jazo6ZXhwYW5kc1RvRW5jbG9zZU92ZXJoYW5naW5nRmxvYXRzKCkgY29uc3QK
IHsKICAgICByZXR1cm4gaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSB8fCBpc0Zsb2F0aW5n
T3JQb3NpdGlvbmVkKCkgfHwgaGFzT3ZlcmZsb3dDbGlwKCkgfHwgKHBhcmVudCgpICYmIHBhcmVu
dCgpLT5pc0ZsZXhpYmxlQm94KCkpCi0gICAgICAgICAgIHx8IGhhc0NvbHVtbnMoKSB8fCBpc1Rh
YmxlQ2VsbCgpIHx8IGlzRmllbGRzZXQoKSB8fCBpc0Jsb2NrRmxvd1Jvb3QoKTsKKyAgICAgICAg
ICAgfHwgaGFzQ29sdW1ucygpIHx8IGlzVGFibGVDZWxsKCkgfHwgaXNGaWVsZHNldCgpIHx8IGlz
V3JpdGluZ01vZGVSb290KCk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OmFkanVzdFBvc2l0aW9u
ZWRCbG9jayhSZW5kZXJCb3gqIGNoaWxkLCBjb25zdCBNYXJnaW5JbmZvJiBtYXJnaW5JbmZvKQpA
QCAtMTcyMCw3ICsxNzIwLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6aGFuZGxlQWZ0ZXJTaWRlT2ZC
bG9jawogCiB2b2lkIFJlbmRlckJsb2NrOjpzZXRMb2dpY2FsTGVmdEZvckNoaWxkKFJlbmRlckJv
eCogY2hpbGQsIGludCBsb2dpY2FsTGVmdCwgQXBwbHlMYXlvdXREZWx0YU1vZGUgYXBwbHlEZWx0
YSkKIHsKLSAgICBpZiAoc3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpKSB7CisgICAgaWYg
KHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKICAgICAgICAgaWYgKGFwcGx5
RGVsdGEgPT0gQXBwbHlMYXlvdXREZWx0YSkKICAgICAgICAgICAgIHZpZXcoKS0+YWRkTGF5b3V0
RGVsdGEoSW50U2l6ZShjaGlsZC0+eCgpIC0gbG9naWNhbExlZnQsIDApKTsKICAgICAgICAgY2hp
bGQtPnNldFgobG9naWNhbExlZnQpOwpAQCAtMTczMyw3ICsxNzMzLDcgQEAgdm9pZCBSZW5kZXJC
bG9jazo6c2V0TG9naWNhbExlZnRGb3JDaGlsZAogCiB2b2lkIFJlbmRlckJsb2NrOjpzZXRMb2dp
Y2FsVG9wRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgaW50IGxvZ2ljYWxUb3AsIEFwcGx5TGF5
b3V0RGVsdGFNb2RlIGFwcGx5RGVsdGEpCiB7Ci0gICAgaWYgKHN0eWxlKCktPmlzVmVydGljYWxC
bG9ja0Zsb3coKSkgeworICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgp
KSB7CiAgICAgICAgIGlmIChhcHBseURlbHRhID09IEFwcGx5TGF5b3V0RGVsdGEpCiAgICAgICAg
ICAgICB2aWV3KCktPmFkZExheW91dERlbHRhKEludFNpemUoMCwgY2hpbGQtPnkoKSAtIGxvZ2lj
YWxUb3ApKTsKICAgICAgICAgY2hpbGQtPnNldFkobG9naWNhbFRvcCk7CkBAIC0xODU4LDcgKzE4
NTgsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9ja0NoaWxkKFJlbmRlCiAgICAgaWYg
KGNoaWxkUmVuZGVyQmxvY2spIHsKICAgICAgICAgaWYgKG1hcmtEZXNjZW5kYW50c1dpdGhGbG9h
dHMpCiAgICAgICAgICAgICBjaGlsZFJlbmRlckJsb2NrLT5tYXJrQWxsRGVzY2VuZGFudHNXaXRo
RmxvYXRzRm9yTGF5b3V0KCk7Ci0gICAgICAgIGlmICghY2hpbGQtPmlzQmxvY2tGbG93Um9vdCgp
KQorICAgICAgICBpZiAoIWNoaWxkLT5pc1dyaXRpbmdNb2RlUm9vdCgpKQogICAgICAgICAgICAg
cHJldmlvdXNGbG9hdExvZ2ljYWxCb3R0b20gPSBtYXgocHJldmlvdXNGbG9hdExvZ2ljYWxCb3R0
b20sIG9sZExvZ2ljYWxUb3AgKyBjaGlsZFJlbmRlckJsb2NrLT5sb3dlc3RGbG9hdExvZ2ljYWxC
b3R0b20oKSk7CiAgICAgfQogCkBAIC0yOTM2LDcgKzI5MzYsNyBAQCBSZW5kZXJCbG9jazo6Rmxv
YXRpbmdPYmplY3QqIFJlbmRlckJsb2NrCiAgICAgLy8gT3VyIGxvY2F0aW9uIGlzIGlycmVsZXZh
bnQgaWYgd2UncmUgdW5zcGxpdHRhYmxlIG9yIG5vIHBhZ2luYXRpb24gaXMgaW4gZWZmZWN0Lgog
ICAgIC8vIEp1c3QgZ28gYWhlYWQgYW5kIGxheSBvdXQgdGhlIGZsb2F0LgogICAgIGJvb2wgYWZm
ZWN0ZWRCeVBhZ2luYXRpb24gPSBvLT5pc1JlbmRlckJsb2NrKCkgJiYgdmlldygpLT5sYXlvdXRT
dGF0ZSgpLT5tX3BhZ2VIZWlnaHQ7Ci0gICAgaWYgKCFhZmZlY3RlZEJ5UGFnaW5hdGlvbiB8fCBp
c0Jsb2NrRmxvd1Jvb3QoKSkgLy8gV2UgYXJlIHVuc3BsaXR0YWJsZSBpZiB3ZSdyZSBhIGJsb2Nr
IGZsb3cgcm9vdC4KKyAgICBpZiAoIWFmZmVjdGVkQnlQYWdpbmF0aW9uIHx8IGlzV3JpdGluZ01v
ZGVSb290KCkpIC8vIFdlIGFyZSB1bnNwbGl0dGFibGUgaWYgd2UncmUgYSBibG9jayBmbG93IHJv
b3QuCiAgICAgICAgIG8tPmxheW91dElmTmVlZGVkKCk7CiAgICAgZWxzZSB7CiAgICAgICAgIG8t
PmNvbXB1dGVMb2dpY2FsV2lkdGgoKTsKQEAgLTM3MjAsNyArMzcyMCw3IEBAIHZvaWQgUmVuZGVy
QmxvY2s6OmNsZWFyRmxvYXRzKCkKIGludCBSZW5kZXJCbG9jazo6YWRkT3ZlcmhhbmdpbmdGbG9h
dHMoUmVuZGVyQmxvY2sqIGNoaWxkLCBpbnQgbG9naWNhbExlZnRPZmZzZXQsIGludCBsb2dpY2Fs
VG9wT2Zmc2V0LCBib29sIG1ha2VDaGlsZFBhaW50T3RoZXJGbG9hdHMpCiB7CiAgICAgLy8gUHJl
dmVudCBmbG9hdHMgZnJvbSBiZWluZyBhZGRlZCB0byB0aGUgY2FudmFzIGJ5IHRoZSByb290IGVs
ZW1lbnQsIGUuZy4sIDxodG1sPi4KLSAgICBpZiAoY2hpbGQtPmhhc092ZXJmbG93Q2xpcCgpIHx8
ICFjaGlsZC0+Y29udGFpbnNGbG9hdHMoKSB8fCBjaGlsZC0+aXNSb290KCkgfHwgY2hpbGQtPmhh
c0NvbHVtbnMoKSB8fCBjaGlsZC0+aXNCbG9ja0Zsb3dSb290KCkpCisgICAgaWYgKGNoaWxkLT5o
YXNPdmVyZmxvd0NsaXAoKSB8fCAhY2hpbGQtPmNvbnRhaW5zRmxvYXRzKCkgfHwgY2hpbGQtPmlz
Um9vdCgpIHx8IGNoaWxkLT5oYXNDb2x1bW5zKCkgfHwgY2hpbGQtPmlzV3JpdGluZ01vZGVSb290
KCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaW50IGxvd2VzdEZsb2F0TG9naWNhbEJvdHRv
bSA9IDA7CkBAIC0zNzM1LDggKzM3MzUsOCBAQCBpbnQgUmVuZGVyQmxvY2s6OmFkZE92ZXJoYW5n
aW5nRmxvYXRzKFJlCiAgICAgICAgIGlmIChsb2dpY2FsQm90dG9tID4gbG9naWNhbEhlaWdodCgp
KSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgb2JqZWN0IGlzIG5vdCBpbiB0aGUgbGlzdCwgd2Ug
YWRkIGl0IG5vdy4KICAgICAgICAgICAgIGlmICghY29udGFpbnNGbG9hdChyLT5tX3JlbmRlcmVy
KSkgewotICAgICAgICAgICAgICAgIGludCBsZWZ0T2Zmc2V0ID0gc3R5bGUoKS0+aXNWZXJ0aWNh
bEJsb2NrRmxvdygpID8gbG9naWNhbExlZnRPZmZzZXQgOiBsb2dpY2FsVG9wT2Zmc2V0OwotICAg
ICAgICAgICAgICAgIGludCB0b3BPZmZzZXQgPSBzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93
KCkgPyBsb2dpY2FsVG9wT2Zmc2V0IDogbG9naWNhbExlZnRPZmZzZXQ7CisgICAgICAgICAgICAg
ICAgaW50IGxlZnRPZmZzZXQgPSBzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
bG9naWNhbExlZnRPZmZzZXQgOiBsb2dpY2FsVG9wT2Zmc2V0OworICAgICAgICAgICAgICAgIGlu
dCB0b3BPZmZzZXQgPSBzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gbG9naWNh
bFRvcE9mZnNldCA6IGxvZ2ljYWxMZWZ0T2Zmc2V0OwogICAgICAgICAgICAgICAgIEZsb2F0aW5n
T2JqZWN0KiBmbG9hdGluZ09iaiA9IG5ldyBGbG9hdGluZ09iamVjdChyLT50eXBlKCksIEludFJl
Y3Qoci0+bGVmdCgpIC0gbGVmdE9mZnNldCwgci0+dG9wKCkgLSB0b3BPZmZzZXQsIHItPndpZHRo
KCksIHItPmhlaWdodCgpKSk7CiAgICAgICAgICAgICAgICAgZmxvYXRpbmdPYmotPm1fcmVuZGVy
ZXIgPSByLT5tX3JlbmRlcmVyOwogCkBAIC0zNzc3LDcgKzM3NzcsNyBAQCB2b2lkIFJlbmRlckJs
b2NrOjphZGRJbnRydWRpbmdGbG9hdHMoUmVuCiAgICAgaWYgKCFwcmV2LT5tX2Zsb2F0aW5nT2Jq
ZWN0cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbG9naWNhbExlZnRPZmZzZXQgKz0gKHN0eWxl
KCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSA/IG1hcmdpbkxlZnQoKSA6IG1hcmdpblRvcCgpKTsK
KyAgICBsb2dpY2FsTGVmdE9mZnNldCArPSAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA/IG1hcmdpbkxlZnQoKSA6IG1hcmdpblRvcCgpKTsKICAgICAgICAgICAgICAgICAKICAg
ICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPEZsb2F0aW5nT2JqZWN0PiBpdCgqcHJldi0+bV9m
bG9hdGluZ09iamVjdHMpOwogICAgIGZvciAoRmxvYXRpbmdPYmplY3QgKnI7IChyID0gaXQuY3Vy
cmVudCgpKTsgKytpdCkgewpAQCAtMzc5NCw4ICszNzk0LDggQEAgdm9pZCBSZW5kZXJCbG9jazo6
YWRkSW50cnVkaW5nRmxvYXRzKFJlbgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmICghZikgewotICAgICAgICAgICAgICAgIGludCBsZWZ0T2Zmc2V0ID0g
c3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpID8gbG9naWNhbExlZnRPZmZzZXQgOiBsb2dp
Y2FsVG9wT2Zmc2V0OwotICAgICAgICAgICAgICAgIGludCB0b3BPZmZzZXQgPSBzdHlsZSgpLT5p
c1ZlcnRpY2FsQmxvY2tGbG93KCkgPyBsb2dpY2FsVG9wT2Zmc2V0IDogbG9naWNhbExlZnRPZmZz
ZXQ7CisgICAgICAgICAgICAgICAgaW50IGxlZnRPZmZzZXQgPSBzdHlsZSgpLT5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8gbG9naWNhbExlZnRPZmZzZXQgOiBsb2dpY2FsVG9wT2Zmc2V0Owor
ICAgICAgICAgICAgICAgIGludCB0b3BPZmZzZXQgPSBzdHlsZSgpLT5pc0hvcml6b250YWxXcml0
aW5nTW9kZSgpID8gbG9naWNhbFRvcE9mZnNldCA6IGxvZ2ljYWxMZWZ0T2Zmc2V0OwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iaiA9
IG5ldyBGbG9hdGluZ09iamVjdChyLT50eXBlKCksIEludFJlY3Qoci0+bGVmdCgpIC0gbGVmdE9m
ZnNldCwgci0+dG9wKCkgLSB0b3BPZmZzZXQsIHItPndpZHRoKCksIHItPmhlaWdodCgpKSk7CiAK
QEAgLTM4MDUsNyArMzgwNSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZEludHJ1ZGluZ0Zsb2F0
cyhSZW4KICAgICAgICAgICAgICAgICAvLyBpbnRvIGFjY291bnQuICBPbmx5IGFwcGx5IHRoaXMg
Y29kZSBpZiBwcmV2IGlzIHRoZSBwYXJlbnQsIHNpbmNlIG90aGVyd2lzZSB0aGUgbGVmdCBtYXJn
aW4KICAgICAgICAgICAgICAgICAvLyB3aWxsIGdldCBhcHBsaWVkIHR3aWNlLgogICAgICAgICAg
ICAgICAgIGlmIChwcmV2ICE9IHBhcmVudCgpKQotICAgICAgICAgICAgICAgICAgICBmbG9hdGlu
Z09iai0+c2V0TGVmdChmbG9hdGluZ09iai0+bGVmdCgpICsgKHN0eWxlKCktPmlzVmVydGljYWxC
bG9ja0Zsb3coKSA/IHByZXYtPm1hcmdpbkxlZnQoKSA6IHByZXYtPm1hcmdpblRvcCgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqLT5zZXRMZWZ0KGZsb2F0aW5nT2JqLT5sZWZ0
KCkgKyAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHByZXYtPm1hcmdpbkxl
ZnQoKSA6IHByZXYtPm1hcmdpblRvcCgpKSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBmbG9hdGluZ09iai0+bV9zaG91bGRQYWludCA9IGZhbHNlOyAgLy8gV2UgYXJlIG5vdCBp
biB0aGUgZGlyZWN0IGluaGVyaXRhbmNlIGNoYWluIGZvciB0aGlzIGZsb2F0LiBXZSB3aWxsIG5l
dmVyIHBhaW50IGl0LgogICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqLT5tX3JlbmRlcmVyID0g
ci0+bV9yZW5kZXJlcjsKQEAgLTU5OTcsMTIgKzU5OTcsMTIgQEAgaW50IFJlbmRlckJsb2NrOjpj
b2xsYXBzZWRNYXJnaW5CZWZvcmVGbwogewogICAgIC8vIElmIHRoZSBjaGlsZCBoYXMgdGhlIHNh
bWUgZGlyZWN0aW9uYWxpdHkgYXMgd2UgZG8sIHRoZW4gd2UgY2FuIGp1c3QgcmV0dXJuIGl0cwog
ICAgIC8vIGNvbGxhcHNlZCBtYXJnaW4uCi0gICAgaWYgKCFjaGlsZC0+aXNCbG9ja0Zsb3dSb290
KCkpCisgICAgaWYgKCFjaGlsZC0+aXNXcml0aW5nTW9kZVJvb3QoKSkKICAgICAgICAgcmV0dXJu
IGNoaWxkLT5jb2xsYXBzZWRNYXJnaW5CZWZvcmUoKTsKICAgICAKICAgICAvLyBUaGUgY2hpbGQg
aGFzIGEgZGlmZmVyZW50IGRpcmVjdGlvbmFsaXR5LiAgSWYgdGhlIGNoaWxkIGlzIHBhcmFsbGVs
LCB0aGVuIGl0J3MganVzdAogICAgIC8vIGZsaXBwZWQgcmVsYXRpdmUgdG8gdXMuICBXZSBjYW4g
dXNlIHRoZSBjb2xsYXBzZWQgbWFyZ2luIGZvciB0aGUgb3Bwb3NpdGUgZWRnZS4KLSAgICBpZiAo
Y2hpbGQtPnN0eWxlKCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSA9PSBzdHlsZSgpLT5pc1ZlcnRp
Y2FsQmxvY2tGbG93KCkpCisgICAgaWYgKGNoaWxkLT5zdHlsZSgpLT5pc0hvcml6b250YWxXcml0
aW5nTW9kZSgpID09IHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAg
IHJldHVybiBjaGlsZC0+Y29sbGFwc2VkTWFyZ2luQWZ0ZXIoKTsKICAgICAKICAgICAvLyBUaGUg
Y2hpbGQgaXMgcGVycGVuZGljdWxhciB0byB1cywgd2hpY2ggbWVhbnMgaXRzIG1hcmdpbnMgZG9u
J3QgY29sbGFwc2UgYnV0IGFyZSBvbiB0aGUKQEAgLTYwMTQsMTIgKzYwMTQsMTIgQEAgaW50IFJl
bmRlckJsb2NrOjpjb2xsYXBzZWRNYXJnaW5BZnRlckZvcgogewogICAgIC8vIElmIHRoZSBjaGls
ZCBoYXMgdGhlIHNhbWUgZGlyZWN0aW9uYWxpdHkgYXMgd2UgZG8sIHRoZW4gd2UgY2FuIGp1c3Qg
cmV0dXJuIGl0cwogICAgIC8vIGNvbGxhcHNlZCBtYXJnaW4uCi0gICAgaWYgKCFjaGlsZC0+aXNC
bG9ja0Zsb3dSb290KCkpCisgICAgaWYgKCFjaGlsZC0+aXNXcml0aW5nTW9kZVJvb3QoKSkKICAg
ICAgICAgcmV0dXJuIGNoaWxkLT5jb2xsYXBzZWRNYXJnaW5BZnRlcigpOwogICAgIAogICAgIC8v
IFRoZSBjaGlsZCBoYXMgYSBkaWZmZXJlbnQgZGlyZWN0aW9uYWxpdHkuICBJZiB0aGUgY2hpbGQg
aXMgcGFyYWxsZWwsIHRoZW4gaXQncyBqdXN0CiAgICAgLy8gZmxpcHBlZCByZWxhdGl2ZSB0byB1
cy4gIFdlIGNhbiB1c2UgdGhlIGNvbGxhcHNlZCBtYXJnaW4gZm9yIHRoZSBvcHBvc2l0ZSBlZGdl
LgotICAgIGlmIChjaGlsZC0+c3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpID09IHN0eWxl
KCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSkKKyAgICBpZiAoY2hpbGQtPnN0eWxlKCktPmlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPT0gc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSkKICAgICAgICAgcmV0dXJuIGNoaWxkLT5jb2xsYXBzZWRNYXJnaW5CZWZvcmUoKTsKICAgICAK
ICAgICAvLyBUaGUgY2hpbGQgaXMgcGVycGVuZGljdWxhciB0byB1cywgd2hpY2ggbWVhbnMgaXRz
IG1hcmdpbnMgZG9uJ3QgY29sbGFwc2UgYnV0IGFyZSBvbiB0aGUKQEAgLTYwMjksMTQgKzYwMjks
MTQgQEAgaW50IFJlbmRlckJsb2NrOjpjb2xsYXBzZWRNYXJnaW5BZnRlckZvcgogCiBpbnQgUmVu
ZGVyQmxvY2s6Om1hcmdpbkJlZm9yZUZvckNoaWxkKFJlbmRlckJveE1vZGVsT2JqZWN0KiBjaGls
ZCkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKHN0eWxlKCktPmJsb2NrRmxvdygpKSB7Ci0gICAgY2Fz
ZSBUb3BUb0JvdHRvbUJsb2NrRmxvdzoKKyAgICBzd2l0Y2ggKHN0eWxlKCktPndyaXRpbmdNb2Rl
KCkpIHsKKyAgICBjYXNlIFRvcFRvQm90dG9tV3JpdGluZ01vZGU6CiAgICAgICAgIHJldHVybiBj
aGlsZC0+bWFyZ2luVG9wKCk7Ci0gICAgY2FzZSBCb3R0b21Ub1RvcEJsb2NrRmxvdzoKKyAgICBj
YXNlIEJvdHRvbVRvVG9wV3JpdGluZ01vZGU6CiAgICAgICAgIHJldHVybiBjaGlsZC0+bWFyZ2lu
Qm90dG9tKCk7Ci0gICAgY2FzZSBMZWZ0VG9SaWdodEJsb2NrRmxvdzoKKyAgICBjYXNlIExlZnRU
b1JpZ2h0V3JpdGluZ01vZGU6CiAgICAgICAgIHJldHVybiBjaGlsZC0+bWFyZ2luTGVmdCgpOwot
ICAgIGNhc2UgUmlnaHRUb0xlZnRCbG9ja0Zsb3c6CisgICAgY2FzZSBSaWdodFRvTGVmdFdyaXRp
bmdNb2RlOgogICAgICAgICByZXR1cm4gY2hpbGQtPm1hcmdpblJpZ2h0KCk7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNjA0NSwxNCArNjA0NSwxNCBAQCBpbnQgUmVuZGVy
QmxvY2s6Om1hcmdpbkJlZm9yZUZvckNoaWxkKFJlCiAKIGludCBSZW5kZXJCbG9jazo6bWFyZ2lu
QWZ0ZXJGb3JDaGlsZChSZW5kZXJCb3hNb2RlbE9iamVjdCogY2hpbGQpIGNvbnN0CiB7Ci0gICAg
c3dpdGNoIChzdHlsZSgpLT5ibG9ja0Zsb3coKSkgewotICAgIGNhc2UgVG9wVG9Cb3R0b21CbG9j
a0Zsb3c6CisgICAgc3dpdGNoIChzdHlsZSgpLT53cml0aW5nTW9kZSgpKSB7CisgICAgY2FzZSBU
b3BUb0JvdHRvbVdyaXRpbmdNb2RlOgogICAgICAgICByZXR1cm4gY2hpbGQtPm1hcmdpbkJvdHRv
bSgpOwotICAgIGNhc2UgQm90dG9tVG9Ub3BCbG9ja0Zsb3c6CisgICAgY2FzZSBCb3R0b21Ub1Rv
cFdyaXRpbmdNb2RlOgogICAgICAgICByZXR1cm4gY2hpbGQtPm1hcmdpblRvcCgpOwotICAgIGNh
c2UgTGVmdFRvUmlnaHRCbG9ja0Zsb3c6CisgICAgY2FzZSBMZWZ0VG9SaWdodFdyaXRpbmdNb2Rl
OgogICAgICAgICByZXR1cm4gY2hpbGQtPm1hcmdpblJpZ2h0KCk7Ci0gICAgY2FzZSBSaWdodFRv
TGVmdEJsb2NrRmxvdzoKKyAgICBjYXNlIFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGU6CiAgICAgICAg
IHJldHVybiBjaGlsZC0+bWFyZ2luTGVmdCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTYwNjEsMjEgKzYwNjEsMjEgQEAgaW50IFJlbmRlckJsb2NrOjptYXJnaW5BZnRl
ckZvckNoaWxkKFJlbgogICAgIAogaW50IFJlbmRlckJsb2NrOjptYXJnaW5TdGFydEZvckNoaWxk
KFJlbmRlckJveE1vZGVsT2JqZWN0KiBjaGlsZCkgY29uc3QKIHsKLSAgICBpZiAoc3R5bGUoKS0+
aXNWZXJ0aWNhbEJsb2NrRmxvdygpKQorICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0
aW5nTW9kZSgpKQogICAgICAgICByZXR1cm4gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpID8gY2hpbGQtPm1hcmdpbkxlZnQoKSA6IGNoaWxkLT5tYXJnaW5SaWdodCgpOwogICAgIHJl
dHVybiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBjaGlsZC0+bWFyZ2luVG9w
KCkgOiBjaGlsZC0+bWFyZ2luQm90dG9tKCk7CiB9CiAKIGludCBSZW5kZXJCbG9jazo6bWFyZ2lu
RW5kRm9yQ2hpbGQoUmVuZGVyQm94TW9kZWxPYmplY3QqIGNoaWxkKSBjb25zdAogewotICAgIGlm
IChzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkpCisgICAgaWYgKHN0eWxlKCktPmlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiBzdHlsZSgpLT5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkgPyBjaGlsZC0+bWFyZ2luUmlnaHQoKSA6IGNoaWxkLT5tYXJnaW5MZWZ0
KCk7CiAgICAgcmV0dXJuIHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNoaWxk
LT5tYXJnaW5Cb3R0b20oKSA6IGNoaWxkLT5tYXJnaW5Ub3AoKTsKIH0KIAogdm9pZCBSZW5kZXJC
bG9jazo6c2V0TWFyZ2luU3RhcnRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBpbnQgbWFyZ2lu
KQogewotICAgIGlmIChzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkpIHsKKyAgICBpZiAo
c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewogICAgICAgICBpZiAoc3R5bGUo
KS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQogICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdp
bkxlZnQobWFyZ2luKTsKICAgICAgICAgZWxzZQpAQCAtNjA5MCw3ICs2MDkwLDcgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6c2V0TWFyZ2luU3RhcnRGb3JDaGlsZAogCiB2b2lkIFJlbmRlckJsb2NrOjpz
ZXRNYXJnaW5FbmRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBpbnQgbWFyZ2luKQogewotICAg
IGlmIChzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkpIHsKKyAgICBpZiAoc3R5bGUoKS0+
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewogICAgICAgICBpZiAoc3R5bGUoKS0+aXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpKQogICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpblJpZ2h0KG1h
cmdpbik7CiAgICAgICAgIGVsc2UKQEAgLTYxMDUsMTcgKzYxMDUsMTcgQEAgdm9pZCBSZW5kZXJC
bG9jazo6c2V0TWFyZ2luRW5kRm9yQ2hpbGQoUgogCiB2b2lkIFJlbmRlckJsb2NrOjpzZXRNYXJn
aW5CZWZvcmVGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBpbnQgbWFyZ2luKQogewotICAgIHN3
aXRjaCAoc3R5bGUoKS0+YmxvY2tGbG93KCkpIHsKLSAgICBjYXNlIFRvcFRvQm90dG9tQmxvY2tG
bG93OgorICAgIHN3aXRjaCAoc3R5bGUoKS0+d3JpdGluZ01vZGUoKSkgeworICAgIGNhc2UgVG9w
VG9Cb3R0b21Xcml0aW5nTW9kZToKICAgICAgICAgY2hpbGQtPnNldE1hcmdpblRvcChtYXJnaW4p
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJvdHRvbVRvVG9wQmxvY2tGbG93OgorICAgIGNh
c2UgQm90dG9tVG9Ub3BXcml0aW5nTW9kZToKICAgICAgICAgY2hpbGQtPnNldE1hcmdpbkJvdHRv
bShtYXJnaW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExlZnRUb1JpZ2h0QmxvY2tGbG93
OgorICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5nTW9kZToKICAgICAgICAgY2hpbGQtPnNldE1h
cmdpbkxlZnQobWFyZ2luKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSaWdodFRvTGVmdEJs
b2NrRmxvdzoKKyAgICBjYXNlIFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGU6CiAgICAgICAgIGNoaWxk
LT5zZXRNYXJnaW5SaWdodChtYXJnaW4pOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC02MTIz
LDE3ICs2MTIzLDE3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnNldE1hcmdpbkJlZm9yZUZvckNoaWwK
IAogdm9pZCBSZW5kZXJCbG9jazo6c2V0TWFyZ2luQWZ0ZXJGb3JDaGlsZChSZW5kZXJCb3gqIGNo
aWxkLCBpbnQgbWFyZ2luKQogewotICAgIHN3aXRjaCAoc3R5bGUoKS0+YmxvY2tGbG93KCkpIHsK
LSAgICBjYXNlIFRvcFRvQm90dG9tQmxvY2tGbG93OgorICAgIHN3aXRjaCAoc3R5bGUoKS0+d3Jp
dGluZ01vZGUoKSkgeworICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZToKICAgICAgICAg
Y2hpbGQtPnNldE1hcmdpbkJvdHRvbShtYXJnaW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEJvdHRvbVRvVG9wQmxvY2tGbG93OgorICAgIGNhc2UgQm90dG9tVG9Ub3BXcml0aW5nTW9kZToK
ICAgICAgICAgY2hpbGQtPnNldE1hcmdpblRvcChtYXJnaW4pOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIExlZnRUb1JpZ2h0QmxvY2tGbG93OgorICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5n
TW9kZToKICAgICAgICAgY2hpbGQtPnNldE1hcmdpblJpZ2h0KG1hcmdpbik7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUmlnaHRUb0xlZnRCbG9ja0Zsb3c6CisgICAgY2FzZSBSaWdodFRvTGVm
dFdyaXRpbmdNb2RlOgogICAgICAgICBjaGlsZC0+c2V0TWFyZ2luTGVmdChtYXJnaW4pOwogICAg
ICAgICBicmVhazsKICAgICB9CkBAIC02MTUzLDcgKzYxNTMsNyBAQCBSZW5kZXJCbG9jazo6TWFy
Z2luVmFsdWVzIFJlbmRlckJsb2NrOjptCiAgICAgCiAgICAgLy8gSWYgdGhlIGNoaWxkIGhhcyB0
aGUgc2FtZSBkaXJlY3Rpb25hbGl0eSBhcyB3ZSBkbywgdGhlbiB3ZSBjYW4ganVzdCByZXR1cm4g
aXRzCiAgICAgLy8gbWFyZ2lucyBpbiB0aGUgc2FtZSBkaXJlY3Rpb24uCi0gICAgaWYgKCFjaGls
ZC0+aXNCbG9ja0Zsb3dSb290KCkpIHsKKyAgICBpZiAoIWNoaWxkLT5pc1dyaXRpbmdNb2RlUm9v
dCgpKSB7CiAgICAgICAgIGlmIChjaGlsZFJlbmRlckJsb2NrKSB7CiAgICAgICAgICAgICBjaGls
ZEJlZm9yZVBvc2l0aXZlID0gY2hpbGRSZW5kZXJCbG9jay0+bWF4UG9zaXRpdmVNYXJnaW5CZWZv
cmUoKTsKICAgICAgICAgICAgIGNoaWxkQmVmb3JlTmVnYXRpdmUgPSBjaGlsZFJlbmRlckJsb2Nr
LT5tYXhOZWdhdGl2ZU1hcmdpbkJlZm9yZSgpOwpAQCAtNjE2Myw3ICs2MTYzLDcgQEAgUmVuZGVy
QmxvY2s6Ok1hcmdpblZhbHVlcyBSZW5kZXJCbG9jazo6bQogICAgICAgICAgICAgYmVmb3JlTWFy
Z2luID0gY2hpbGQtPm1hcmdpbkJlZm9yZSgpOwogICAgICAgICAgICAgYWZ0ZXJNYXJnaW4gPSBj
aGlsZC0+bWFyZ2luQWZ0ZXIoKTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoY2hpbGQtPnN0
eWxlKCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSA9PSBzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tG
bG93KCkpIHsKKyAgICB9IGVsc2UgaWYgKGNoaWxkLT5zdHlsZSgpLT5pc0hvcml6b250YWxXcml0
aW5nTW9kZSgpID09IHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKICAgICAg
ICAgLy8gVGhlIGNoaWxkIGhhcyBhIGRpZmZlcmVudCBkaXJlY3Rpb25hbGl0eS4gIElmIHRoZSBj
aGlsZCBpcyBwYXJhbGxlbCwgdGhlbiBpdCdzIGp1c3QKICAgICAgICAgLy8gZmxpcHBlZCByZWxh
dGl2ZSB0byB1cy4gIFdlIGNhbiB1c2UgdGhlIG1hcmdpbnMgZm9yIHRoZSBvcHBvc2l0ZSBlZGdl
cy4KICAgICAgICAgaWYgKGNoaWxkUmVuZGVyQmxvY2spIHsKSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaAkocmV2aXNpb24gNjkxODQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsOSArMTcxLDkgQEAgcHVibGljOgogCiAgICAgLy8g
QWNjZXNzb3JzIGZvciBsb2dpY2FsIHdpZHRoL2hlaWdodCBhbmQgbWFyZ2lucyBpbiB0aGUgY29u
dGFpbmluZyBibG9jaydzIGJsb2NrLWZsb3cgZGlyZWN0aW9uLgogICAgIGVudW0gQXBwbHlMYXlv
dXREZWx0YU1vZGUgeyBBcHBseUxheW91dERlbHRhLCBEb05vdEFwcGx5TGF5b3V0RGVsdGEgfTsK
LSAgICBpbnQgbG9naWNhbFdpZHRoRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgeyByZXR1cm4g
c3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpID8gY2hpbGQtPndpZHRoKCkgOiBjaGlsZC0+
aGVpZ2h0KCk7IH0KLSAgICBpbnQgbG9naWNhbEhlaWdodEZvckNoaWxkKFJlbmRlckJveCogY2hp
bGQpIHsgcmV0dXJuIHN0eWxlKCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSA/IGNoaWxkLT5oZWln
aHQoKSA6IGNoaWxkLT53aWR0aCgpOyB9Ci0gICAgaW50IGxvZ2ljYWxUb3BGb3JDaGlsZChSZW5k
ZXJCb3gqIGNoaWxkKSB7IHJldHVybiBzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkgPyBj
aGlsZC0+eSgpIDogY2hpbGQtPngoKTsgfQorICAgIGludCBsb2dpY2FsV2lkdGhGb3JDaGlsZChS
ZW5kZXJCb3gqIGNoaWxkKSB7IHJldHVybiBzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gY2hpbGQtPndpZHRoKCkgOiBjaGlsZC0+aGVpZ2h0KCk7IH0KKyAgICBpbnQgbG9naWNh
bEhlaWdodEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIHsgcmV0dXJuIHN0eWxlKCktPmlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC0+aGVpZ2h0KCkgOiBjaGlsZC0+d2lkdGgoKTsg
fQorICAgIGludCBsb2dpY2FsVG9wRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgeyByZXR1cm4g
c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT55KCkgOiBjaGlsZC0+
eCgpOyB9CiAgICAgdm9pZCBzZXRMb2dpY2FsTGVmdEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQs
IGludCBsb2dpY2FsTGVmdCwgQXBwbHlMYXlvdXREZWx0YU1vZGUgPSBEb05vdEFwcGx5TGF5b3V0
RGVsdGEpOwogICAgIHZvaWQgc2V0TG9naWNhbFRvcEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQs
IGludCBsb2dpY2FsVG9wLCBBcHBseUxheW91dERlbHRhTW9kZSA9IERvTm90QXBwbHlMYXlvdXRE
ZWx0YSk7CiAgICAgaW50IG1hcmdpbkJlZm9yZUZvckNoaWxkKFJlbmRlckJveE1vZGVsT2JqZWN0
KiBjaGlsZCkgY29uc3Q7CkBAIC0yNjMsOCArMjYzLDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCBwYWludChQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSk7CiAgICAgdmlydHVhbCB2
b2lkIHBhaW50T2JqZWN0KFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKIAotICAgIGludCBs
b2dpY2FsUmlnaHRPZmZzZXRGb3JDb250ZW50KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNW
ZXJ0aWNhbEJsb2NrRmxvdygpID8gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSArIGF2YWls
YWJsZUxvZ2ljYWxXaWR0aCgpIDogYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgKyBhdmFpbGFi
bGVMb2dpY2FsV2lkdGgoKTsgfQotICAgIGludCBsb2dpY2FsTGVmdE9mZnNldEZvckNvbnRlbnQo
KSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkgPyBib3JkZXJM
ZWZ0KCkgKyBwYWRkaW5nTGVmdCgpIDogYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCk7IH0KKyAg
ICBpbnQgbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxl
KCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVm
dCgpICsgYXZhaWxhYmxlTG9naWNhbFdpZHRoKCkgOiBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3Ao
KSArIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOyB9CisgICAgaW50IGxvZ2ljYWxMZWZ0T2Zmc2V0
Rm9yQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkgPyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpIDogYm9yZGVyVG9wKCkgKyBwYWRk
aW5nVG9wKCk7IH0KICAgICBpbnQgbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShpbnQgcG9zaXRp
b24sIGludCBmaXhlZE9mZnNldCwgYm9vbCBhcHBseVRleHRJbmRlbnQgPSB0cnVlLCBpbnQqIGxv
Z2ljYWxIZWlnaHRSZW1haW5pbmcgPSAwKSBjb25zdDsKICAgICBpbnQgbG9naWNhbExlZnRPZmZz
ZXRGb3JMaW5lKGludCBwb3NpdGlvbiwgaW50IGZpeGVkT2Zmc2V0LCBib29sIGFwcGx5VGV4dElu
ZGVudCA9IHRydWUsIGludCogbG9naWNhbEhlaWdodFJlbWFpbmluZyA9IDApIGNvbnN0OwogCkBA
IC00MTQsMzUgKzQxNCwzNSBAQCBwcml2YXRlOgogICAgICAgICBib29sIG1faXNQbGFjZWQgOiAx
OwogICAgIH07CiAKLSAgICBpbnQgbG9naWNhbFRvcEZvckZsb2F0KEZsb2F0aW5nT2JqZWN0KiBj
aGlsZCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpID8gY2hp
bGQtPnRvcCgpIDogY2hpbGQtPmxlZnQoKTsgfQotICAgIGludCBsb2dpY2FsQm90dG9tRm9yRmxv
YXQoRmxvYXRpbmdPYmplY3QqIGNoaWxkKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5pc1ZlcnRp
Y2FsQmxvY2tGbG93KCkgPyBjaGlsZC0+Ym90dG9tKCkgOiBjaGlsZC0+cmlnaHQoKTsgfQotICAg
IGludCBsb2dpY2FsTGVmdEZvckZsb2F0KEZsb2F0aW5nT2JqZWN0KiBjaGlsZCkgY29uc3QgeyBy
ZXR1cm4gc3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpID8gY2hpbGQtPmxlZnQoKSA6IGNo
aWxkLT50b3AoKTsgfQotICAgIGludCBsb2dpY2FsUmlnaHRGb3JGbG9hdChGbG9hdGluZ09iamVj
dCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSA/
IGNoaWxkLT5yaWdodCgpIDogY2hpbGQtPmJvdHRvbSgpOyB9Ci0gICAgaW50IGxvZ2ljYWxXaWR0
aEZvckZsb2F0KEZsb2F0aW5nT2JqZWN0KiBjaGlsZCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+
aXNWZXJ0aWNhbEJsb2NrRmxvdygpID8gY2hpbGQtPndpZHRoKCkgOiBjaGlsZC0+aGVpZ2h0KCk7
IH0KKyAgICBpbnQgbG9naWNhbFRvcEZvckZsb2F0KEZsb2F0aW5nT2JqZWN0KiBjaGlsZCkgY29u
c3QgeyByZXR1cm4gc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT50
b3AoKSA6IGNoaWxkLT5sZWZ0KCk7IH0KKyAgICBpbnQgbG9naWNhbEJvdHRvbUZvckZsb2F0KEZs
b2F0aW5nT2JqZWN0KiBjaGlsZCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IGNoaWxkLT5ib3R0b20oKSA6IGNoaWxkLT5yaWdodCgpOyB9CisgICAg
aW50IGxvZ2ljYWxMZWZ0Rm9yRmxvYXQoRmxvYXRpbmdPYmplY3QqIGNoaWxkKSBjb25zdCB7IHJl
dHVybiBzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPmxlZnQoKSA6
IGNoaWxkLT50b3AoKTsgfQorICAgIGludCBsb2dpY2FsUmlnaHRGb3JGbG9hdChGbG9hdGluZ09i
amVjdCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkgPyBjaGlsZC0+cmlnaHQoKSA6IGNoaWxkLT5ib3R0b20oKTsgfQorICAgIGludCBsb2dp
Y2FsV2lkdGhGb3JGbG9hdChGbG9hdGluZ09iamVjdCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIHN0
eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC0+d2lkdGgoKSA6IGNoaWxk
LT5oZWlnaHQoKTsgfQogICAgIHZvaWQgc2V0TG9naWNhbFRvcEZvckZsb2F0KEZsb2F0aW5nT2Jq
ZWN0KiBjaGlsZCwgaW50IGxvZ2ljYWxUb3ApCiAgICAgewotICAgICAgICBpZiAoc3R5bGUoKS0+
aXNWZXJ0aWNhbEJsb2NrRmxvdygpKQorICAgICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSkKICAgICAgICAgICAgIGNoaWxkLT5zZXRUb3AobG9naWNhbFRvcCk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGNoaWxkLT5zZXRMZWZ0KGxvZ2ljYWxUb3ApOwogICAg
IH0KICAgICB2b2lkIHNldExvZ2ljYWxMZWZ0Rm9yRmxvYXQoRmxvYXRpbmdPYmplY3QqIGNoaWxk
LCBpbnQgbG9naWNhbExlZnQpCiAgICAgewotICAgICAgICBpZiAoc3R5bGUoKS0+aXNWZXJ0aWNh
bEJsb2NrRmxvdygpKQorICAgICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSkKICAgICAgICAgICAgIGNoaWxkLT5zZXRMZWZ0KGxvZ2ljYWxMZWZ0KTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgY2hpbGQtPnNldFRvcChsb2dpY2FsTGVmdCk7CiAgICAgfQogICAg
IHZvaWQgc2V0TG9naWNhbEhlaWdodEZvckZsb2F0KEZsb2F0aW5nT2JqZWN0KiBjaGlsZCwgaW50
IGxvZ2ljYWxIZWlnaHQpCiAgICAgewotICAgICAgICBpZiAoc3R5bGUoKS0+aXNWZXJ0aWNhbEJs
b2NrRmxvdygpKQorICAgICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSkKICAgICAgICAgICAgIGNoaWxkLT5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGNoaWxkLT5zZXRXaWR0aChsb2dpY2FsSGVpZ2h0KTsKICAgICB9
CiAgICAgdm9pZCBzZXRMb2dpY2FsV2lkdGhGb3JGbG9hdChGbG9hdGluZ09iamVjdCogY2hpbGQs
IGludCBsb2dpY2FsV2lkdGgpCiAgICAgewotICAgICAgICBpZiAoc3R5bGUoKS0+aXNWZXJ0aWNh
bEJsb2NrRmxvdygpKQorICAgICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSkKICAgICAgICAgICAgIGNoaWxkLT5zZXRXaWR0aChsb2dpY2FsV2lkdGgpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBjaGlsZC0+c2V0SGVpZ2h0KGxvZ2ljYWxXaWR0aCk7CkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDY5MDE5KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsMTQgKzg1LDE0IEBAIFJl
bmRlckJveDo6flJlbmRlckJveCgpCiAKIGludCBSZW5kZXJCb3g6Om1hcmdpbkJlZm9yZSgpIGNv
bnN0CiB7Ci0gICAgc3dpdGNoIChzdHlsZSgpLT5ibG9ja0Zsb3coKSkgewotICAgIGNhc2UgVG9w
VG9Cb3R0b21CbG9ja0Zsb3c6CisgICAgc3dpdGNoIChzdHlsZSgpLT53cml0aW5nTW9kZSgpKSB7
CisgICAgY2FzZSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlOgogICAgICAgICByZXR1cm4gbV9tYXJn
aW5Ub3A7Ci0gICAgY2FzZSBCb3R0b21Ub1RvcEJsb2NrRmxvdzoKKyAgICBjYXNlIEJvdHRvbVRv
VG9wV3JpdGluZ01vZGU6CiAgICAgICAgIHJldHVybiBtX21hcmdpbkJvdHRvbTsKLSAgICBjYXNl
IExlZnRUb1JpZ2h0QmxvY2tGbG93OgorICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5nTW9kZToK
ICAgICAgICAgcmV0dXJuIG1fbWFyZ2luTGVmdDsKLSAgICBjYXNlIFJpZ2h0VG9MZWZ0QmxvY2tG
bG93OgorICAgIGNhc2UgUmlnaHRUb0xlZnRXcml0aW5nTW9kZToKICAgICAgICAgcmV0dXJuIG1f
bWFyZ2luUmlnaHQ7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTAxLDE0
ICsxMDEsMTQgQEAgaW50IFJlbmRlckJveDo6bWFyZ2luQmVmb3JlKCkgY29uc3QKIAogaW50IFJl
bmRlckJveDo6bWFyZ2luQWZ0ZXIoKSBjb25zdAogewotICAgIHN3aXRjaCAoc3R5bGUoKS0+Ymxv
Y2tGbG93KCkpIHsKLSAgICBjYXNlIFRvcFRvQm90dG9tQmxvY2tGbG93OgorICAgIHN3aXRjaCAo
c3R5bGUoKS0+d3JpdGluZ01vZGUoKSkgeworICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9k
ZToKICAgICAgICAgcmV0dXJuIG1fbWFyZ2luQm90dG9tOwotICAgIGNhc2UgQm90dG9tVG9Ub3BC
bG9ja0Zsb3c6CisgICAgY2FzZSBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlOgogICAgICAgICByZXR1
cm4gbV9tYXJnaW5Ub3A7Ci0gICAgY2FzZSBMZWZ0VG9SaWdodEJsb2NrRmxvdzoKKyAgICBjYXNl
IExlZnRUb1JpZ2h0V3JpdGluZ01vZGU6CiAgICAgICAgIHJldHVybiBtX21hcmdpblJpZ2h0Owot
ICAgIGNhc2UgUmlnaHRUb0xlZnRCbG9ja0Zsb3c6CisgICAgY2FzZSBSaWdodFRvTGVmdFdyaXRp
bmdNb2RlOgogICAgICAgICByZXR1cm4gbV9tYXJnaW5MZWZ0OwogICAgIH0KICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTExNywyMSArMTE3LDIxIEBAIGludCBSZW5kZXJCb3g6Om1hcmdp
bkFmdGVyKCkgY29uc3QKIAogaW50IFJlbmRlckJveDo6bWFyZ2luU3RhcnQoKSBjb25zdAogewot
ICAgIGlmIChzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkpCisgICAgaWYgKHN0eWxlKCkt
PmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiBzdHlsZSgpLT5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBtX21hcmdpbkxlZnQgOiBtX21hcmdpblJpZ2h0OwogICAg
IHJldHVybiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBtX21hcmdpblRvcCA6
IG1fbWFyZ2luQm90dG9tOwogfQogCiBpbnQgUmVuZGVyQm94OjptYXJnaW5FbmQoKSBjb25zdAog
ewotICAgIGlmIChzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkpCisgICAgaWYgKHN0eWxl
KCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiBzdHlsZSgpLT5p
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBtX21hcmdpblJpZ2h0IDogbV9tYXJnaW5MZWZ0Owog
ICAgIHJldHVybiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBtX21hcmdpbkJv
dHRvbSA6IG1fbWFyZ2luVG9wOwogfQogCiB2b2lkIFJlbmRlckJveDo6c2V0TWFyZ2luU3RhcnQo
aW50IG1hcmdpbikKIHsKLSAgICBpZiAoc3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpKSB7
CisgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKICAgICAgICAg
aWYgKHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKICAgICAgICAgICAgIG1fbWFy
Z2luTGVmdCA9IG1hcmdpbjsKICAgICAgICAgZWxzZQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQg
UmVuZGVyQm94OjpzZXRNYXJnaW5TdGFydChpbnQgbWFyZ2kKIAogdm9pZCBSZW5kZXJCb3g6OnNl
dE1hcmdpbkVuZChpbnQgbWFyZ2luKQogewotICAgIGlmIChzdHlsZSgpLT5pc1ZlcnRpY2FsQmxv
Y2tGbG93KCkpIHsKKyAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkg
ewogICAgICAgICBpZiAoc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQogICAgICAg
ICAgICAgbV9tYXJnaW5SaWdodCA9IG1hcmdpbjsKICAgICAgICAgZWxzZQpAQCAtMTYxLDE3ICsx
NjEsMTcgQEAgdm9pZCBSZW5kZXJCb3g6OnNldE1hcmdpbkVuZChpbnQgbWFyZ2luKQogCiB2b2lk
IFJlbmRlckJveDo6c2V0TWFyZ2luQmVmb3JlKGludCBtYXJnaW4pCiB7Ci0gICAgc3dpdGNoIChz
dHlsZSgpLT5ibG9ja0Zsb3coKSkgewotICAgIGNhc2UgVG9wVG9Cb3R0b21CbG9ja0Zsb3c6Cisg
ICAgc3dpdGNoIChzdHlsZSgpLT53cml0aW5nTW9kZSgpKSB7CisgICAgY2FzZSBUb3BUb0JvdHRv
bVdyaXRpbmdNb2RlOgogICAgICAgICBtX21hcmdpblRvcCA9IG1hcmdpbjsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBCb3R0b21Ub1RvcEJsb2NrRmxvdzoKKyAgICBjYXNlIEJvdHRvbVRvVG9w
V3JpdGluZ01vZGU6CiAgICAgICAgIG1fbWFyZ2luQm90dG9tID0gbWFyZ2luOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIExlZnRUb1JpZ2h0QmxvY2tGbG93OgorICAgIGNhc2UgTGVmdFRvUmln
aHRXcml0aW5nTW9kZToKICAgICAgICAgbV9tYXJnaW5MZWZ0ID0gbWFyZ2luOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFJpZ2h0VG9MZWZ0QmxvY2tGbG93OgorICAgIGNhc2UgUmlnaHRUb0xl
ZnRXcml0aW5nTW9kZToKICAgICAgICAgbV9tYXJnaW5SaWdodCA9IG1hcmdpbjsKICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtMTc5LDE3ICsxNzksMTcgQEAgdm9pZCBSZW5kZXJCb3g6OnNldE1h
cmdpbkJlZm9yZShpbnQgbWFyZwogCiB2b2lkIFJlbmRlckJveDo6c2V0TWFyZ2luQWZ0ZXIoaW50
IG1hcmdpbikKIHsKLSAgICBzd2l0Y2ggKHN0eWxlKCktPmJsb2NrRmxvdygpKSB7Ci0gICAgY2Fz
ZSBUb3BUb0JvdHRvbUJsb2NrRmxvdzoKKyAgICBzd2l0Y2ggKHN0eWxlKCktPndyaXRpbmdNb2Rl
KCkpIHsKKyAgICBjYXNlIFRvcFRvQm90dG9tV3JpdGluZ01vZGU6CiAgICAgICAgIG1fbWFyZ2lu
Qm90dG9tID0gbWFyZ2luOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJvdHRvbVRvVG9wQmxv
Y2tGbG93OgorICAgIGNhc2UgQm90dG9tVG9Ub3BXcml0aW5nTW9kZToKICAgICAgICAgbV9tYXJn
aW5Ub3AgPSBtYXJnaW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGVmdFRvUmlnaHRCbG9j
a0Zsb3c6CisgICAgY2FzZSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlOgogICAgICAgICBtX21hcmdp
blJpZ2h0ID0gbWFyZ2luOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJpZ2h0VG9MZWZ0Qmxv
Y2tGbG93OgorICAgIGNhc2UgUmlnaHRUb0xlZnRXcml0aW5nTW9kZToKICAgICAgICAgbV9tYXJn
aW5MZWZ0ID0gbWFyZ2luOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zMDAsMTMgKzMwMCwx
MyBAQCB2b2lkIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmCiAgICAgLy8gU2V0
IHRoZSB0ZXh0IGNvbG9yIGlmIHdlJ3JlIHRoZSBib2R5LgogICAgIGlmIChpc0JvZHkoKSkKICAg
ICAgICAgZG9jdW1lbnQoKS0+c2V0VGV4dENvbG9yKHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7Ci0gICAgZWxzZSBpZiAoaXNSb290KCkgJiYgKCFvbGRT
dHlsZSB8fCBvbGRTdHlsZS0+YmxvY2tGbG93KCkgIT0gc3R5bGUoKS0+YmxvY2tGbG93KCkgfHwg
b2xkU3R5bGUtPmRpcmVjdGlvbigpICE9IHN0eWxlKCktPmRpcmVjdGlvbigpKSkgeworICAgIGVs
c2UgaWYgKGlzUm9vdCgpICYmICghb2xkU3R5bGUgfHwgb2xkU3R5bGUtPndyaXRpbmdNb2RlKCkg
IT0gc3R5bGUoKS0+d3JpdGluZ01vZGUoKSB8fCBvbGRTdHlsZS0+ZGlyZWN0aW9uKCkgIT0gc3R5
bGUoKS0+ZGlyZWN0aW9uKCkpKSB7CiAgICAgICAgIC8vIFByb3BhZ2F0ZSB0aGUgbmV3IGJsb2Nr
IGZsb3cgYW5kIGRpcmVjdGlvbiB1cCB0byB0aGUgUmVuZGVyVmlldy4KICAgICAgICAgLy8gRklY
TUU6IFdpbklFIHNlZW1zIHRvIHByb3BhZ2F0ZSBmcm9tIHRoZSA8Ym9keT4gYXMgd2VsbC4gIFdl
IG1heSB3YW50IHRvIGNvbnNpZGVyIGRvaW5nIHRoYXQgYXQgc29tZSBwb2ludC4KICAgICAgICAg
UmVuZGVyVmlldyogdmlld1JlbmRlcmVyID0gdmlldygpOwogICAgICAgICBSZW5kZXJTdHlsZSog
dmlld1N0eWxlID0gdmlld1JlbmRlcmVyLT5zdHlsZSgpOwotICAgICAgICBpZiAodmlld1N0eWxl
LT5ibG9ja0Zsb3coKSAhPSBzdHlsZSgpLT5ibG9ja0Zsb3coKSB8fCB2aWV3U3R5bGUtPmRpcmVj
dGlvbigpICE9IHN0eWxlKCktPmRpcmVjdGlvbigpKSB7Ci0gICAgICAgICAgICB2aWV3U3R5bGUt
PnNldEJsb2NrRmxvdyhzdHlsZSgpLT5ibG9ja0Zsb3coKSk7CisgICAgICAgIGlmICh2aWV3U3R5
bGUtPndyaXRpbmdNb2RlKCkgIT0gc3R5bGUoKS0+d3JpdGluZ01vZGUoKSB8fCB2aWV3U3R5bGUt
PmRpcmVjdGlvbigpICE9IHN0eWxlKCktPmRpcmVjdGlvbigpKSB7CisgICAgICAgICAgICB2aWV3
U3R5bGUtPnNldFdyaXRpbmdNb2RlKHN0eWxlKCktPndyaXRpbmdNb2RlKCkpOwogICAgICAgICAg
ICAgdmlld1N0eWxlLT5zZXREaXJlY3Rpb24oc3R5bGUoKS0+ZGlyZWN0aW9uKCkpOwogICAgICAg
ICAgICAgdmlld1JlbmRlcmVyLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsK
ICAgICAgICAgfQpAQCAtMTA5OSw3ICsxMDk5LDcgQEAgaW50IFJlbmRlckJveDo6cGVycGVuZGlj
dWxhckNvbnRhaW5pbmdCbAogICAgICAgICAvLyBSYXRoZXIgdGhhbiBtYWtpbmcgdGhlIGNoaWxk
IGJlIGNvbXBsZXRlbHkgdW5jb25zdHJhaW5lZCwgV2luSUUgdXNlcyB0aGUgdmlld3BvcnQgd2lk
dGggYW5kIGhlaWdodAogICAgICAgICAvLyBhcyBhIGNvbnN0cmFpbnQuICBXZSBkbyB0aGF0IGZv
ciBub3cgYXMgd2VsbCBldmVuIHRob3VnaCBpdCdzIGxpa2VseSBiZWluZyB1bmNvbnN0cmFpbmVk
IGlzIHdoYXQgdGhlIHNwZWMKICAgICAgICAgLy8gd2lsbCBkZWNpZGUuCi0gICAgICAgIHJldHVy
biBjb250YWluaW5nQmxvY2tTdHlsZS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpID8gdmlldygpLT5m
cmFtZVZpZXcoKS0+dmlzaWJsZUhlaWdodCgpIDogdmlldygpLT5mcmFtZVZpZXcoKS0+dmlzaWJs
ZVdpZHRoKCk7CisgICAgICAgIHJldHVybiBjb250YWluaW5nQmxvY2tTdHlsZS0+aXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IHZpZXcoKS0+ZnJhbWVWaWV3KCktPnZpc2libGVIZWlnaHQoKSA6
IHZpZXcoKS0+ZnJhbWVWaWV3KCktPnZpc2libGVXaWR0aCgpOwogICAgIH0KICAgICAKICAgICAv
LyBVc2UgdGhlIGNvbnRlbnQgYm94IGxvZ2ljYWwgaGVpZ2h0IGFzIHNwZWNpZmllZCBieSB0aGUg
c3R5bGUuCkBAIC0xNDQzLDcgKzE0NDMsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2lj
YWxXaWR0aCgpCiAKICAgICBSZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2soKTsKICAg
ICBpbnQgY29udGFpbmVyTG9naWNhbFdpZHRoID0gbWF4KDAsIGNvbnRhaW5pbmdCbG9ja0xvZ2lj
YWxXaWR0aEZvckNvbnRlbnQoKSk7Ci0gICAgYm9vbCBoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmlu
Z0Jsb2NrID0gY2ItPnN0eWxlKCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSAhPSBzdHlsZSgpLT5p
c1ZlcnRpY2FsQmxvY2tGbG93KCk7CisgICAgYm9vbCBoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmlu
Z0Jsb2NrID0gY2ItPnN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgIT0gc3R5bGUo
KS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKICAgICBpbnQgY29udGFpbmVyV2lkdGhJbklu
bGluZURpcmVjdGlvbiA9IGNvbnRhaW5lckxvZ2ljYWxXaWR0aDsKICAgICBpZiAoaGFzUGVycGVu
ZGljdWxhckNvbnRhaW5pbmdCbG9jaykKICAgICAgICAgY29udGFpbmVyV2lkdGhJbklubGluZURp
cmVjdGlvbiA9IHBlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0KCk7CkBA
IC0xNjE4LDcgKzE2MTgsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQo
KQogICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHQoKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBSZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2soKTsKLSAgICAgICAg
Ym9vbCBoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrID0gY2ItPnN0eWxlKCktPmlzVmVy
dGljYWxCbG9ja0Zsb3coKSAhPSBzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCk7CisgICAg
ICAgIGJvb2wgaGFzUGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9jayA9IGNiLT5zdHlsZSgpLT5p
c0hvcml6b250YWxXcml0aW5nTW9kZSgpICE9IHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCk7CiAgICAgCiAgICAgICAgIGlmICghaGFzUGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9j
aykKICAgICAgICAgICAgIGNvbXB1dGVCbG9ja0RpcmVjdGlvbk1hcmdpbnMoY2IpOwpAQCAtMTY5
OSw3ICsxNjk5LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KCkKICAg
ICAgICAgaWYgKGRvY3VtZW50KCktPnByaW50aW5nKCkpCiAgICAgICAgICAgICB2aXNIZWlnaHQg
PSBzdGF0aWNfY2FzdDxpbnQ+KHZpZXcoKS0+cGFnZUhlaWdodCgpKTsKICAgICAgICAgZWxzZSAg
ewotICAgICAgICAgICAgaWYgKHN0eWxlKCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSkKKyAgICAg
ICAgICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICAg
ICAgICAgIHZpc0hlaWdodCA9IHZpZXcoKS0+dmlld0hlaWdodCgpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIHZpc0hlaWdodCA9IHZpZXcoKS0+dmlld1dpZHRoKCk7CkBAIC0x
OTA3LDcgKzE5MDcsNyBAQCBpbnQgUmVuZGVyQm94OjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0VXNp
CiAgICAgICAgIHJldHVybiBjb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQoaC52YWx1ZSgp
KTsKIAogICAgIGlmIChpc1JlbmRlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIHN0eWxlKCktPmlz
VmVydGljYWxCbG9ja0Zsb3coKSA/IHRvUmVuZGVyVmlldyh0aGlzKS0+ZnJhbWVWaWV3KCktPnZp
c2libGVIZWlnaHQoKSA6IHRvUmVuZGVyVmlldyh0aGlzKS0+ZnJhbWVWaWV3KCktPnZpc2libGVX
aWR0aCgpOworICAgICAgICByZXR1cm4gc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSA/IHRvUmVuZGVyVmlldyh0aGlzKS0+ZnJhbWVWaWV3KCktPnZpc2libGVIZWlnaHQoKSA6IHRv
UmVuZGVyVmlldyh0aGlzKS0+ZnJhbWVWaWV3KCktPnZpc2libGVXaWR0aCgpOwogCiAgICAgLy8g
V2UgbmVlZCB0byBzdG9wIGhlcmUsIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gaW5jcmVhc2UgdGhl
IGhlaWdodCBvZiB0aGUgdGFibGUKICAgICAvLyBhcnRpZmljaWFsbHkuICBXZSdyZSBnb2luZyB0
byByZWx5IG9uIHRoaXMgY2VsbCBnZXR0aW5nIGV4cGFuZGVkIHRvIHNvbWUgbmV3CkBAIC0zMDM4
LDcgKzMwMzgsNyBAQCBib29sIFJlbmRlckJveDo6c2hyaW5rVG9Bdm9pZEZsb2F0cygpIGNvCiAK
IGJvb2wgUmVuZGVyQm94Ojphdm9pZHNGbG9hdHMoKSBjb25zdAogewotICAgIHJldHVybiBpc1Jl
cGxhY2VkKCkgfHwgaGFzT3ZlcmZsb3dDbGlwKCkgfHwgaXNIUigpIHx8IGlzQmxvY2tGbG93Um9v
dCgpOworICAgIHJldHVybiBpc1JlcGxhY2VkKCkgfHwgaGFzT3ZlcmZsb3dDbGlwKCkgfHwgaXNI
UigpIHx8IGlzV3JpdGluZ01vZGVSb290KCk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjphZGRTaGFk
b3dPdmVyZmxvdygpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkocmV2aXNpb24gNjkwMTkpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNDEg
KzUwLDQxIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdpZHRoKGludCB3aWR0aCkgeyBtX2ZyYW1l
UmVjdC5zZXRXaWR0aCh3aWR0aCk7IH0KICAgICB2b2lkIHNldEhlaWdodChpbnQgaGVpZ2h0KSB7
IG1fZnJhbWVSZWN0LnNldEhlaWdodChoZWlnaHQpOyB9CiAKLSAgICBpbnQgbG9naWNhbExlZnQo
KSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkgPyB4KCkgOiB5
KCk7IH0KLSAgICBpbnQgbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzVmVy
dGljYWxCbG9ja0Zsb3coKSA/IHkoKSA6IHgoKTsgfQotICAgIGludCBsb2dpY2FsV2lkdGgoKSBj
b25zdCB7IHJldHVybiBzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkgPyB3aWR0aCgpIDog
aGVpZ2h0KCk7IH0KLSAgICBpbnQgbG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxl
KCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSA/IGhlaWdodCgpIDogd2lkdGgoKTsgfQorICAgIGlu
dCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyB4KCkgOiB5KCk7IH0KKyAgICBpbnQgbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0
dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyB5KCkgOiB4KCk7IH0KKyAg
ICBpbnQgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IHdpZHRoKCkgOiBoZWlnaHQoKTsgfQorICAgIGludCBsb2dpY2FsSGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IGhlaWdodCgpIDogd2lkdGgoKTsgfQogICAgIHZvaWQgc2V0TG9naWNhbExlZnQoaW50IGxlZnQp
CiAgICAgewotICAgICAgICBpZiAoc3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpKQorICAg
ICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAgICAg
IHNldFgobGVmdCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNldFkobGVmdCk7CiAgICAg
fQogICAgIHZvaWQgc2V0TG9naWNhbFRvcChpbnQgdG9wKQogICAgIHsKLSAgICAgICAgaWYgKHN0
eWxlKCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSkKKyAgICAgICAgaWYgKHN0eWxlKCktPmlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgICAgICBzZXRZKHRvcCk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHNldFgodG9wKTsKICAgICB9CiAgICAgdm9pZCBzZXRMb2dpY2FsV2lk
dGgoaW50IHNpemUpCiAgICAgewotICAgICAgICBpZiAoc3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2Nr
RmxvdygpKQorICAgICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkK
ICAgICAgICAgICAgIHNldFdpZHRoKHNpemUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBz
ZXRIZWlnaHQoc2l6ZSk7CiAgICAgfQogICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodChpbnQgc2l6
ZSkKICAgICB7Ci0gICAgICAgIGlmIChzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkpCisg
ICAgICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICAg
ICAgc2V0SGVpZ2h0KHNpemUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzZXRXaWR0aChz
aXplKTsKICAgICB9CiAgICAgdm9pZCBzZXRMb2dpY2FsTG9jYXRpb24oaW50IGxlZnQsIGludCB0
b3ApCiAgICAgewotICAgICAgICBpZiAoc3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpKQor
ICAgICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAg
ICAgIHNldExvY2F0aW9uKGxlZnQsIHRvcCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNl
dExvY2F0aW9uKHRvcCwgbGVmdCk7CkBAIC0xNTAsOCArMTUwLDggQEAgcHVibGljOgogCiAgICAg
aW50IGNvbnRlbnRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGNsaWVudFdpZHRoKCkgLSBwYWRkaW5n
TGVmdCgpIC0gcGFkZGluZ1JpZ2h0KCk7IH0KICAgICBpbnQgY29udGVudEhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIGNsaWVudEhlaWdodCgpIC0gcGFkZGluZ1RvcCgpIC0gcGFkZGluZ0JvdHRvbSgp
OyB9Ci0gICAgaW50IGNvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdHlsZSgp
LT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkgPyBjb250ZW50V2lkdGgoKSA6IGNvbnRlbnRIZWlnaHQo
KTsgfQotICAgIGludCBjb250ZW50TG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxl
KCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSA/IGNvbnRlbnRIZWlnaHQoKSA6IGNvbnRlbnRXaWR0
aCgpOyB9CisgICAgaW50IGNvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdHls
ZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY29udGVudFdpZHRoKCkgOiBjb250ZW50
SGVpZ2h0KCk7IH0KKyAgICBpbnQgY29udGVudExvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVy
biBzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY29udGVudEhlaWdodCgpIDog
Y29udGVudFdpZHRoKCk7IH0KIAogICAgIC8vIElFIGV4dGVuc2lvbnMuIFVzZWQgdG8gY2FsY3Vs
YXRlIG9mZnNldFdpZHRoL0hlaWdodC4gIE92ZXJyaWRkZW4gYnkgaW5saW5lcyAoUmVuZGVyRmxv
dykKICAgICAvLyB0byByZXR1cm4gdGhlIHJlbWFpbmluZyB3aWR0aCBvbiBhIGdpdmVuIGxpbmUg
KGFuZCB0aGUgaGVpZ2h0IG9mIGEgc2luZ2xlIGxpbmUpLgpAQCAtMjcyLDEyICsyNzIsMTIgQEAg
cHVibGljOgogCiAgICAgYm9vbCBzdHJldGNoZXNUb1ZpZXdwb3J0KCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBkb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSAmJiBzdHlsZSgpLT5sb2dp
Y2FsSGVpZ2h0KCkuaXNBdXRvKCkgJiYgIWlzRmxvYXRpbmdPclBvc2l0aW9uZWQoKSAmJiAoaXNS
b290KCkgfHwgaXNCb2R5KCkpICYmICFpc0Jsb2NrRmxvd1Jvb3QoKTsKKyAgICAgICAgcmV0dXJu
IGRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpICYmIHN0eWxlKCktPmxvZ2ljYWxIZWlnaHQoKS5p
c0F1dG8oKSAmJiAhaXNGbG9hdGluZ09yUG9zaXRpb25lZCgpICYmIChpc1Jvb3QoKSB8fCBpc0Jv
ZHkoKSkgJiYgIWlzV3JpdGluZ01vZGVSb290KCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBJbnRT
aXplIGludHJpbnNpY1NpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0KLSAgICBpbnQg
aW50cmluc2ljTG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNWZXJ0aWNh
bEJsb2NrRmxvdygpID8gaW50cmluc2ljU2l6ZSgpLndpZHRoKCkgOiBpbnRyaW5zaWNTaXplKCku
aGVpZ2h0KCk7IH0KLSAgICBpbnQgaW50cmluc2ljTG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIHN0eWxlKCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSA/IGludHJpbnNpY1NpemUoKS5oZWln
aHQoKSA6IGludHJpbnNpY1NpemUoKS53aWR0aCgpOyB9CisgICAgaW50IGludHJpbnNpY0xvZ2lj
YWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBpbnRyaW5zaWNTaXplKCkud2lkdGgoKSA6IGludHJpbnNpY1NpemUoKS5oZWlnaHQoKTsg
fQorICAgIGludCBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUo
KS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA6
IGludHJpbnNpY1NpemUoKS53aWR0aCgpOyB9CiAKICAgICAvLyBXaGV0aGVyIG9yIG5vdCB0aGUg
ZWxlbWVudCBzaHJpbmtzIHRvIGl0cyBpbnRyaW5zaWMgd2lkdGggKHJhdGhlciB0aGFuIGZpbGxp
bmcgdGhlIHdpZHRoCiAgICAgLy8gb2YgYSBjb250YWluaW5nIGJsb2NrKS4gIEhUTUw0IGJ1dHRv
bnMsIDxzZWxlY3Q+cywgPGlucHV0PnMsIGxlZ2VuZHMsIGFuZCBmbG9hdGluZy9jb21wYWN0IGVs
ZW1lbnRzIGRvIHRoaXMuCkBAIC0zMDEsMTIgKzMwMSwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAg
Ly8gVGhlcmUgYXJlIGEgZmV3IGNhc2VzIHdoZXJlIHdlIG5lZWQgdG8gcmVmZXIgc3BlY2lmaWNh
bGx5IHRvIHRoZSBhdmFpbGFibGUgcGh5c2ljYWwgd2lkdGggYW5kIGF2YWlsYWJsZSBwaHlzaWNh
bCBoZWlnaHQuCiAgICAgLy8gUmVsYXRpdmUgcG9zaXRpb25pbmcgaXMgb25lIG9mIHRob3NlIGNh
c2VzLCBzaW5jZSBsZWZ0L3RvcCBvZmZzZXRzIGFyZSBwaHlzaWNhbC4KLSAgICBpbnQgYXZhaWxh
YmxlV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkg
PyBhdmFpbGFibGVMb2dpY2FsV2lkdGgoKSA6IGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoKTsgfQot
ICAgIGludCBhdmFpbGFibGVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5pc1ZlcnRp
Y2FsQmxvY2tGbG93KCkgPyBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0KCkgOiBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgoKTsgfQorICAgIGludCBhdmFpbGFibGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN0
eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBhdmFpbGFibGVMb2dpY2FsV2lkdGgo
KSA6IGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoKTsgfQorICAgIGludCBhdmFpbGFibGVIZWlnaHQo
KSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gYXZh
aWxhYmxlTG9naWNhbEhlaWdodCgpIDogYXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7IH0KIAogICAg
IHZpcnR1YWwgaW50IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKSBjb25zdDsKICAgICBpbnQgaG9y
aXpvbnRhbFNjcm9sbGJhckhlaWdodCgpIGNvbnN0OwotICAgIGludCBzY3JvbGxiYXJMb2dpY2Fs
SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpID8g
aG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCgpIDogdmVydGljYWxTY3JvbGxiYXJXaWR0aCgpOyB9
CisgICAgaW50IHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgp
LT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCgp
IDogdmVydGljYWxTY3JvbGxiYXJXaWR0aCgpOyB9CiAgICAgdmlydHVhbCBib29sIHNjcm9sbChT
Y3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyID0gMSwg
Tm9kZSoqIHN0b3BOb2RlID0gMCk7CiAgICAgYm9vbCBjYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xs
YWJsZUFyZWEoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVQcm9ncmFtYXRpY2FsbHlT
Y3JvbGxlZChib29sKSBjb25zdDsKQEAgLTM2MCw3ICszNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgbWFya0Rlc2NlbmRhbnRCbG9ja3NBbmRMaW5lc0ZvckxheW91dChib29sIGlu
TGF5b3V0ID0gdHJ1ZSk7CiAgICAgCi0gICAgYm9vbCBpc0Jsb2NrRmxvd1Jvb3QoKSBjb25zdCB7
IHJldHVybiAhcGFyZW50KCkgfHwgcGFyZW50KCktPnN0eWxlKCktPmJsb2NrRmxvdygpICE9IHN0
eWxlKCktPmJsb2NrRmxvdygpOyB9CisgICAgYm9vbCBpc1dyaXRpbmdNb2RlUm9vdCgpIGNvbnN0
IHsgcmV0dXJuICFwYXJlbnQoKSB8fCBwYXJlbnQoKS0+c3R5bGUoKS0+d3JpdGluZ01vZGUoKSAh
PSBzdHlsZSgpLT53cml0aW5nTW9kZSgpOyB9CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZv
aWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5l
d1N0eWxlKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAJKHJldmlzaW9u
IDY5MTg0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hE
ZWNvcmF0aW9ucwogICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHdvcmsgd2l0aCAicmwiIGFuZCAi
YnQiIGJsb2NrIGZsb3cgZGlyZWN0aW9ucy4gIEluIHRob3NlCiAgICAgLy8gY2FzZXMgdGhlIGxl
Z2VuZCBpcyBlbWJlZGRlZCBpbiB0aGUgcmlnaHQgYW5kIGJvdHRvbSBib3JkZXJzIHJlc3BlY3Rp
dmVseS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcy
MzYKLSAgICBpZiAoc3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpKSB7CisgICAgaWYgKHN0
eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKICAgICAgICAgaW50IHlPZmYgPSAo
bGVnZW5kLT55KCkgPiAwKSA/IDAgOiAobGVnZW5kLT5oZWlnaHQoKSAtIGJvcmRlclRvcCgpKSAv
IDI7CiAgICAgICAgIGggLT0geU9mZjsKICAgICAgICAgdHkgKz0geU9mZjsKQEAgLTE2Niw3ICsx
NjYsNyBAQCB2b2lkIFJlbmRlckZpZWxkc2V0OjpwYWludEJveERlY29yYXRpb25zCiAgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gd29yayB3aXRoICJybCIgYW5kICJidCIgYmxvY2sgZmxvdyBkaXJl
Y3Rpb25zLiAgSW4gdGhvc2UKICAgICAvLyBjYXNlcyB0aGUgbGVnZW5kIGlzIGVtYmVkZGVkIGlu
IHRoZSByaWdodCBhbmQgYm90dG9tIGJvcmRlcnMgcmVzcGVjdGl2ZWx5LgogICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzIzNgotICAgIGlmIChzdHlsZSgp
LT5pc1ZlcnRpY2FsQmxvY2tGbG93KCkpIHsKKyAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSkgewogICAgICAgICBpbnQgY2xpcFRvcCA9IHR5OwogICAgICAgICBpbnQg
Y2xpcEhlaWdodCA9IG1heChzdGF0aWNfY2FzdDxpbnQ+KHN0eWxlKCktPmJvcmRlclRvcFdpZHRo
KCkpLCBsZWdlbmQtPmhlaWdodCgpKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0
KEludFJlY3QodHggKyBsZWdlbmQtPngoKSwgY2xpcFRvcCwgbGVnZW5kLT53aWR0aCgpLCBjbGlw
SGVpZ2h0KSk7CkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBSZW5kZXJGaWVsZHNldDo6cGFpbnRN
YXNrKFBhaW50SW5mbwogICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHdvcmsgd2l0aCAicmwiIGFu
ZCAiYnQiIGJsb2NrIGZsb3cgZGlyZWN0aW9ucy4gIEluIHRob3NlCiAgICAgLy8gY2FzZXMgdGhl
IGxlZ2VuZCBpcyBlbWJlZGRlZCBpbiB0aGUgcmlnaHQgYW5kIGJvdHRvbSBib3JkZXJzIHJlc3Bl
Y3RpdmVseS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDcyMzYKLSAgICBpZiAoc3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpKSB7CisgICAgaWYg
KHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKICAgICAgICAgaW50IHlPZmYg
PSAobGVnZW5kLT55KCkgPiAwKSA/IDAgOiAobGVnZW5kLT5oZWlnaHQoKSAtIGJvcmRlclRvcCgp
KSAvIDI7CiAgICAgICAgIGggLT0geU9mZjsKICAgICAgICAgdHkgKz0geU9mZjsKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9uIDY5MDE5KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDIsNyArNDQyLDcgQEAg
aW50IFJlbmRlckltYWdlOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsVwogICAgICAgICBsb2dpY2Fs
V2lkdGggPSBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhzdHlsZSgpLT5sb2dpY2Fs
V2lkdGgoKSk7CiAgICAgZWxzZSBpZiAobV9pbWFnZVJlc291cmNlLT51c2VzSW1hZ2VDb250YWlu
ZXJTaXplKCkpIHsKICAgICAgICAgSW50U2l6ZSBzaXplID0gbV9pbWFnZVJlc291cmNlLT5pbWFn
ZVNpemUoc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKLSAgICAgICAgbG9naWNhbFdpZHRoID0g
c3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpID8gc2l6ZS53aWR0aCgpIDogc2l6ZS5oZWln
aHQoKTsKKyAgICAgICAgbG9naWNhbFdpZHRoID0gc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA/IHNpemUud2lkdGgoKSA6IHNpemUuaGVpZ2h0KCk7CiAgICAgfSBlbHNlIGlmICht
X2ltYWdlUmVzb3VyY2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpKQogICAgICAgICBsb2dpY2Fs
V2lkdGggPSAwOyAvLyBJZiB0aGUgaW1hZ2UgaXMgcmVsYXRpdmVseS1zaXplZCwgc2V0IHRoZSB3
aWR0aCB0byAwIHVudGlsIHRoZXJlIGlzIGEgc2V0IGNvbnRhaW5lciBzaXplLgogICAgIGVsc2UK
QEAgLTQ2MSw3ICs0NjEsNyBAQCBpbnQgUmVuZGVySW1hZ2U6OmNvbXB1dGVSZXBsYWNlZExvZ2lj
YWxICiAgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0
VXNpbmcoc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpKTsKICAgICBlbHNlIGlmIChtX2ltYWdlUmVz
b3VyY2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSkgewogICAgICAgICBJbnRTaXplIHNpemUg
PSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlU2l6ZShzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOwot
ICAgICAgICBsb2dpY2FsSGVpZ2h0ID0gc3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpID8g
c2l6ZS5oZWlnaHQoKSA6IHNpemUud2lkdGgoKTsKKyAgICAgICAgbG9naWNhbEhlaWdodCA9IHN0
eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBzaXplLmhlaWdodCgpIDogc2l6ZS53
aWR0aCgpOwogICAgIH0gZWxzZSBpZiAobV9pbWFnZVJlc291cmNlLT5pbWFnZUhhc1JlbGF0aXZl
SGVpZ2h0KCkpCiAgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSAwOyAvLyBJZiB0aGUgaW1hZ2UgaXMg
cmVsYXRpdmVseS1zaXplZCwgc2V0IHRoZSBoZWlnaHQgdG8gMCB1bnRpbCB0aGVyZSBpcyBhIHNl
dCBjb250YWluZXIgc2l6ZS4KICAgICBlbHNlCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5jcHAJKHJldmlzaW9uIDY5MDE5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcxLDI4ICs0NzEsMjggQEAgc3RhdGljIGludCBjb21w
dXRlTWFyZ2luKGNvbnN0IFJlbmRlcklubAogCiBpbnQgUmVuZGVySW5saW5lOjptYXJnaW5MZWZ0
KCkgY29uc3QKIHsKLSAgICBpZiAoIXN0eWxlKCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSkKKyAg
ICBpZiAoIXN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVy
biAwOwogICAgIHJldHVybiBjb21wdXRlTWFyZ2luKHRoaXMsIHN0eWxlKCktPm1hcmdpbkxlZnQo
KSk7CiB9CiAKIGludCBSZW5kZXJJbmxpbmU6Om1hcmdpblJpZ2h0KCkgY29uc3QKIHsKLSAgICBp
ZiAoIXN0eWxlKCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSkKKyAgICBpZiAoIXN0eWxlKCktPmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBj
b21wdXRlTWFyZ2luKHRoaXMsIHN0eWxlKCktPm1hcmdpblJpZ2h0KCkpOwogfQogCiBpbnQgUmVu
ZGVySW5saW5lOjptYXJnaW5Ub3AoKSBjb25zdAogewotICAgIGlmIChzdHlsZSgpLT5pc1ZlcnRp
Y2FsQmxvY2tGbG93KCkpCisgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBjb21wdXRlTWFyZ2luKHRoaXMsIHN0
eWxlKCktPm1hcmdpblRvcCgpKTsKIH0KIAogaW50IFJlbmRlcklubGluZTo6bWFyZ2luQm90dG9t
KCkgY29uc3QKIHsKLSAgICBpZiAoc3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpKQorICAg
IGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICByZXR1cm4g
MDsKICAgICByZXR1cm4gY29tcHV0ZU1hcmdpbih0aGlzLCBzdHlsZSgpLT5tYXJnaW5Cb3R0b20o
KSk7CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHJldmlzaW9u
IDY5MDE5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY1LDM0ICsxNjUsMzQgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OmxheW91
dCgpCiBpbnQgUmVuZGVyVGFibGVDZWxsOjpwYWRkaW5nVG9wKGJvb2wgaW5jbHVkZUludHJpbnNp
Y1BhZGRpbmcpIGNvbnN0CiB7CiAgICAgaW50IHJlc3VsdCA9IFJlbmRlckJsb2NrOjpwYWRkaW5n
VG9wKCk7Ci0gICAgaWYgKCFpbmNsdWRlSW50cmluc2ljUGFkZGluZyB8fCAhc3R5bGUoKS0+aXNW
ZXJ0aWNhbEJsb2NrRmxvdygpKQorICAgIGlmICghaW5jbHVkZUludHJpbnNpY1BhZGRpbmcgfHwg
IXN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgcmV0dXJuIHJlc3VsdCArIChzdHlsZSgpLT5ibG9ja0Zsb3coKSA9PSBUb3BUb0Jv
dHRvbUJsb2NrRmxvdyA/IGludHJpbnNpY1BhZGRpbmdCZWZvcmUoKSA6IGludHJpbnNpY1BhZGRp
bmdBZnRlcigpKTsKKyAgICByZXR1cm4gcmVzdWx0ICsgKHN0eWxlKCktPndyaXRpbmdNb2RlKCkg
PT0gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSA/IGludHJpbnNpY1BhZGRpbmdCZWZvcmUoKSA6IGlu
dHJpbnNpY1BhZGRpbmdBZnRlcigpKTsKIH0KIAogaW50IFJlbmRlclRhYmxlQ2VsbDo6cGFkZGlu
Z0JvdHRvbShib29sIGluY2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSBjb25zdAogewogICAgIGludCBy
ZXN1bHQgPSBSZW5kZXJCbG9jazo6cGFkZGluZ0JvdHRvbSgpOwotICAgIGlmICghaW5jbHVkZUlu
dHJpbnNpY1BhZGRpbmcgfHwgIXN0eWxlKCktPmlzVmVydGljYWxCbG9ja0Zsb3coKSkKKyAgICBp
ZiAoIWluY2x1ZGVJbnRyaW5zaWNQYWRkaW5nIHx8ICFzdHlsZSgpLT5pc0hvcml6b250YWxXcml0
aW5nTW9kZSgpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJldHVybiByZXN1bHQgKyAo
c3R5bGUoKS0+YmxvY2tGbG93KCkgPT0gVG9wVG9Cb3R0b21CbG9ja0Zsb3cgPyBpbnRyaW5zaWNQ
YWRkaW5nQWZ0ZXIoKSA6IGludHJpbnNpY1BhZGRpbmdCZWZvcmUoKSk7CisgICAgcmV0dXJuIHJl
c3VsdCArIChzdHlsZSgpLT53cml0aW5nTW9kZSgpID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUg
PyBpbnRyaW5zaWNQYWRkaW5nQWZ0ZXIoKSA6IGludHJpbnNpY1BhZGRpbmdCZWZvcmUoKSk7CiB9
CiAKIGludCBSZW5kZXJUYWJsZUNlbGw6OnBhZGRpbmdMZWZ0KGJvb2wgaW5jbHVkZUludHJpbnNp
Y1BhZGRpbmcpIGNvbnN0CiB7CiAgICAgaW50IHJlc3VsdCA9IFJlbmRlckJsb2NrOjpwYWRkaW5n
TGVmdCgpOwotICAgIGlmICghaW5jbHVkZUludHJpbnNpY1BhZGRpbmcgfHwgc3R5bGUoKS0+aXNW
ZXJ0aWNhbEJsb2NrRmxvdygpKQorICAgIGlmICghaW5jbHVkZUludHJpbnNpY1BhZGRpbmcgfHwg
c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICByZXR1cm4gcmVzdWx0ICsgKHN0eWxlKCktPmJsb2NrRmxvdygpID09IExlZnRUb1Jp
Z2h0QmxvY2tGbG93ID8gaW50cmluc2ljUGFkZGluZ0JlZm9yZSgpIDogaW50cmluc2ljUGFkZGlu
Z0FmdGVyKCkpOworICAgIHJldHVybiByZXN1bHQgKyAoc3R5bGUoKS0+d3JpdGluZ01vZGUoKSA9
PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlID8gaW50cmluc2ljUGFkZGluZ0JlZm9yZSgpIDogaW50
cmluc2ljUGFkZGluZ0FmdGVyKCkpOwogICAgIAogfQogCiBpbnQgUmVuZGVyVGFibGVDZWxsOjpw
YWRkaW5nUmlnaHQoYm9vbCBpbmNsdWRlSW50cmluc2ljUGFkZGluZykgY29uc3QKIHsgICAKICAg
ICBpbnQgcmVzdWx0ID0gUmVuZGVyQmxvY2s6OnBhZGRpbmdSaWdodCgpOwotICAgIGlmICghaW5j
bHVkZUludHJpbnNpY1BhZGRpbmcgfHwgc3R5bGUoKS0+aXNWZXJ0aWNhbEJsb2NrRmxvdygpKQor
ICAgIGlmICghaW5jbHVkZUludHJpbnNpY1BhZGRpbmcgfHwgc3R5bGUoKS0+aXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gcmVzdWx0
ICsgKHN0eWxlKCktPmJsb2NrRmxvdygpID09IExlZnRUb1JpZ2h0QmxvY2tGbG93ID8gaW50cmlu
c2ljUGFkZGluZ0FmdGVyKCkgOiBpbnRyaW5zaWNQYWRkaW5nQmVmb3JlKCkpOworICAgIHJldHVy
biByZXN1bHQgKyAoc3R5bGUoKS0+d3JpdGluZ01vZGUoKSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdN
b2RlID8gaW50cmluc2ljUGFkZGluZ0FmdGVyKCkgOiBpbnRyaW5zaWNQYWRkaW5nQmVmb3JlKCkp
OwogfQogCiBpbnQgUmVuZGVyVGFibGVDZWxsOjpwYWRkaW5nQmVmb3JlKGJvb2wgaW5jbHVkZUlu
dHJpbnNpY1BhZGRpbmcpIGNvbnN0CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCShyZXZpc2lv
biA2OTAxOSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAkod29ya2luZyBjb3B5
KQpAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIHNhbWUgYXMgdGhlIEZyYW1l
VmlldydzIGxheW91dEhlaWdodC9sYXlvdXRXaWR0aCBidXQgd2l0aCBudWxsIGNoZWNrIGd1YXJk
cy4KICAgICBpbnQgdmlld0hlaWdodCgpIGNvbnN0OwogICAgIGludCB2aWV3V2lkdGgoKSBjb25z
dDsKLSAgICBpbnQgdmlld0xvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlz
VmVydGljYWxCbG9ja0Zsb3coKSA/IHZpZXdXaWR0aCgpIDogdmlld0hlaWdodCgpOyB9Ci0gICAg
aW50IHZpZXdMb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNWZXJ0aWNh
bEJsb2NrRmxvdygpID8gdmlld0hlaWdodCgpIDogdmlld1dpZHRoKCk7IH0KKyAgICBpbnQgdmll
d0xvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyB2aWV3V2lkdGgoKSA6IHZpZXdIZWlnaHQoKTsgfQorICAgIGludCB2aWV3TG9n
aWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkgPyB2aWV3SGVpZ2h0KCkgOiB2aWV3V2lkdGgoKTsgfQogCiAgICAgZmxvYXQgem9vbUZh
Y3RvcigpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAkocmV2
aXNpb24gNjkwMTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBSb290SW5saW5lQm94OjpSb290SW5saW5lQm94
KFJlbmRlckJsb2NrCiAgICAgLCBtX2xpbmVCb3R0b20oMCkKICAgICAsIG1fcGFnaW5hdGlvblN0
cnV0KDApCiB7Ci0gICAgc2V0SXNWZXJ0aWNhbCghYmxvY2stPnN0eWxlKCktPmlzVmVydGljYWxC
bG9ja0Zsb3coKSk7CisgICAgc2V0SXNWZXJ0aWNhbCghYmxvY2stPnN0eWxlKCktPmlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkpOwogfQogCiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDY5MDE5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDYsNyArNDQ2LDcgQEAgU3R5
bGVEaWZmZXJlbmNlIFJlbmRlclN0eWxlOjpkaWZmKGNvbnN0IAogICAgICAgICByZXR1cm4gU3R5
bGVEaWZmZXJlbmNlTGF5b3V0OwogCiAgICAgLy8gQ2hlY2sgYmxvY2sgZmxvdyBkaXJlY3Rpb24u
Ci0gICAgaWYgKGluaGVyaXRlZF9mbGFncy5fYmxvY2tGbG93ICE9IG90aGVyLT5pbmhlcml0ZWRf
ZmxhZ3MuX2Jsb2NrRmxvdykKKyAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLm1fd3JpdGluZ01vZGUg
IT0gb3RoZXItPmluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2RlKQogICAgICAgICByZXR1cm4g
U3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogCiAgICAgLy8gT3ZlcmZsb3cgcmV0dXJucyBhIGxheW91
dCBoaW50LgpAQCAtMTA3OSw1NiArMTA3OSw1NiBAQCBjb25zdCBDb2xvciBSZW5kZXJTdHlsZTo6
dmlzaXRlZERlcGVuZGVuCiAKIExlbmd0aCBSZW5kZXJTdHlsZTo6bG9naWNhbFdpZHRoKCkgY29u
c3QKIHsKLSAgICBpZiAoaXNWZXJ0aWNhbEJsb2NrRmxvdygpKQorICAgIGlmIChpc0hvcml6b250
YWxXcml0aW5nTW9kZSgpKQogICAgICAgICByZXR1cm4gd2lkdGgoKTsKICAgICByZXR1cm4gaGVp
Z2h0KCk7CiB9CiAKIExlbmd0aCBSZW5kZXJTdHlsZTo6bG9naWNhbEhlaWdodCgpIGNvbnN0CiB7
Ci0gICAgaWYgKGlzVmVydGljYWxCbG9ja0Zsb3coKSkKKyAgICBpZiAoaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSkKICAgICAgICAgcmV0dXJuIGhlaWdodCgpOwogICAgIHJldHVybiB3aWR0aCgp
OwogfQogCiBMZW5ndGggUmVuZGVyU3R5bGU6OmxvZ2ljYWxNaW5XaWR0aCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKGlzVmVydGljYWxCbG9ja0Zsb3coKSkKKyAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSkKICAgICAgICAgcmV0dXJuIG1pbldpZHRoKCk7CiAgICAgcmV0dXJuIG1pbkhlaWdo
dCgpOwogfQogCiBMZW5ndGggUmVuZGVyU3R5bGU6OmxvZ2ljYWxNYXhXaWR0aCgpIGNvbnN0CiB7
Ci0gICAgaWYgKGlzVmVydGljYWxCbG9ja0Zsb3coKSkKKyAgICBpZiAoaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSkKICAgICAgICAgcmV0dXJuIG1heFdpZHRoKCk7CiAgICAgcmV0dXJuIG1heEhl
aWdodCgpOwogfQogCiBMZW5ndGggUmVuZGVyU3R5bGU6OmxvZ2ljYWxNaW5IZWlnaHQoKSBjb25z
dAogewotICAgIGlmIChpc1ZlcnRpY2FsQmxvY2tGbG93KCkpCisgICAgaWYgKGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiBtaW5IZWlnaHQoKTsKICAgICByZXR1cm4g
bWluV2lkdGgoKTsKIH0KIAogTGVuZ3RoIFJlbmRlclN0eWxlOjpsb2dpY2FsTWF4SGVpZ2h0KCkg
Y29uc3QKIHsKLSAgICBpZiAoaXNWZXJ0aWNhbEJsb2NrRmxvdygpKQorICAgIGlmIChpc0hvcml6
b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICByZXR1cm4gbWF4SGVpZ2h0KCk7CiAgICAgcmV0
dXJuIG1heFdpZHRoKCk7CiB9CiAKIHVuc2lnbmVkIHNob3J0IFJlbmRlclN0eWxlOjpib3JkZXJC
ZWZvcmVXaWR0aCgpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChibG9ja0Zsb3coKSkgewotICAgIGNh
c2UgVG9wVG9Cb3R0b21CbG9ja0Zsb3c6CisgICAgc3dpdGNoICh3cml0aW5nTW9kZSgpKSB7Cisg
ICAgY2FzZSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlOgogICAgICAgICByZXR1cm4gYm9yZGVyVG9w
V2lkdGgoKTsKLSAgICBjYXNlIEJvdHRvbVRvVG9wQmxvY2tGbG93OgorICAgIGNhc2UgQm90dG9t
VG9Ub3BXcml0aW5nTW9kZToKICAgICAgICAgcmV0dXJuIGJvcmRlckJvdHRvbVdpZHRoKCk7Ci0g
ICAgY2FzZSBMZWZ0VG9SaWdodEJsb2NrRmxvdzoKKyAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGlu
Z01vZGU6CiAgICAgICAgIHJldHVybiBib3JkZXJMZWZ0V2lkdGgoKTsKLSAgICBjYXNlIFJpZ2h0
VG9MZWZ0QmxvY2tGbG93OgorICAgIGNhc2UgUmlnaHRUb0xlZnRXcml0aW5nTW9kZToKICAgICAg
ICAgcmV0dXJuIGJvcmRlclJpZ2h0V2lkdGgoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0xMTM3LDE0ICsxMTM3LDE0IEBAIHVuc2lnbmVkIHNob3J0IFJlbmRlclN0eWxl
Ojpib3JkZXJCZWZvcmUKIAogdW5zaWduZWQgc2hvcnQgUmVuZGVyU3R5bGU6OmJvcmRlckFmdGVy
V2lkdGgoKSBjb25zdAogewotICAgIHN3aXRjaCAoYmxvY2tGbG93KCkpIHsKLSAgICBjYXNlIFRv
cFRvQm90dG9tQmxvY2tGbG93OgorICAgIHN3aXRjaCAod3JpdGluZ01vZGUoKSkgeworICAgIGNh
c2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZToKICAgICAgICAgcmV0dXJuIGJvcmRlckJvdHRvbVdp
ZHRoKCk7Ci0gICAgY2FzZSBCb3R0b21Ub1RvcEJsb2NrRmxvdzoKKyAgICBjYXNlIEJvdHRvbVRv
VG9wV3JpdGluZ01vZGU6CiAgICAgICAgIHJldHVybiBib3JkZXJUb3BXaWR0aCgpOwotICAgIGNh
c2UgTGVmdFRvUmlnaHRCbG9ja0Zsb3c6CisgICAgY2FzZSBMZWZ0VG9SaWdodFdyaXRpbmdNb2Rl
OgogICAgICAgICByZXR1cm4gYm9yZGVyUmlnaHRXaWR0aCgpOwotICAgIGNhc2UgUmlnaHRUb0xl
ZnRCbG9ja0Zsb3c6CisgICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOgogICAgICAgICBy
ZXR1cm4gYm9yZGVyTGVmdFdpZHRoKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMTE1MywyOCArMTE1MywyOCBAQCB1bnNpZ25lZCBzaG9ydCBSZW5kZXJTdHlsZTo6Ym9y
ZGVyQWZ0ZXJXCiAKIHVuc2lnbmVkIHNob3J0IFJlbmRlclN0eWxlOjpib3JkZXJTdGFydFdpZHRo
KCkgY29uc3QKIHsKLSAgICBpZiAoaXNWZXJ0aWNhbEJsb2NrRmxvdygpKQorICAgIGlmIChpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICByZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gYm9yZGVyTGVmdFdpZHRoKCkgOiBib3JkZXJSaWdodFdpZHRoKCk7CiAgICAgcmV0
dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGJvcmRlclRvcFdpZHRoKCkgOiBib3JkZXJC
b3R0b21XaWR0aCgpOwogfQogCiB1bnNpZ25lZCBzaG9ydCBSZW5kZXJTdHlsZTo6Ym9yZGVyRW5k
V2lkdGgoKSBjb25zdAogewotICAgIGlmIChpc1ZlcnRpY2FsQmxvY2tGbG93KCkpCisgICAgaWYg
KGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKCkgPyBib3JkZXJSaWdodFdpZHRoKCkgOiBib3JkZXJMZWZ0V2lkdGgoKTsKICAg
ICByZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gYm9yZGVyQm90dG9tV2lkdGgoKSA6
IGJvcmRlclRvcFdpZHRoKCk7CiB9CiAgICAgCiBMZW5ndGggUmVuZGVyU3R5bGU6Om1hcmdpbkJl
Zm9yZSgpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChibG9ja0Zsb3coKSkgewotICAgIGNhc2UgVG9w
VG9Cb3R0b21CbG9ja0Zsb3c6CisgICAgc3dpdGNoICh3cml0aW5nTW9kZSgpKSB7CisgICAgY2Fz
ZSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlOgogICAgICAgICByZXR1cm4gbWFyZ2luVG9wKCk7Ci0g
ICAgY2FzZSBCb3R0b21Ub1RvcEJsb2NrRmxvdzoKKyAgICBjYXNlIEJvdHRvbVRvVG9wV3JpdGlu
Z01vZGU6CiAgICAgICAgIHJldHVybiBtYXJnaW5Cb3R0b20oKTsKLSAgICBjYXNlIExlZnRUb1Jp
Z2h0QmxvY2tGbG93OgorICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5nTW9kZToKICAgICAgICAg
cmV0dXJuIG1hcmdpbkxlZnQoKTsKLSAgICBjYXNlIFJpZ2h0VG9MZWZ0QmxvY2tGbG93OgorICAg
IGNhc2UgUmlnaHRUb0xlZnRXcml0aW5nTW9kZToKICAgICAgICAgcmV0dXJuIG1hcmdpblJpZ2h0
KCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTE4MywxNCArMTE4Mywx
NCBAQCBMZW5ndGggUmVuZGVyU3R5bGU6Om1hcmdpbkJlZm9yZSgpIGNvbnN0CiAKIExlbmd0aCBS
ZW5kZXJTdHlsZTo6bWFyZ2luQWZ0ZXIoKSBjb25zdAogewotICAgIHN3aXRjaCAoYmxvY2tGbG93
KCkpIHsKLSAgICBjYXNlIFRvcFRvQm90dG9tQmxvY2tGbG93OgorICAgIHN3aXRjaCAod3JpdGlu
Z01vZGUoKSkgeworICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZToKICAgICAgICAgcmV0
dXJuIG1hcmdpbkJvdHRvbSgpOwotICAgIGNhc2UgQm90dG9tVG9Ub3BCbG9ja0Zsb3c6CisgICAg
Y2FzZSBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlOgogICAgICAgICByZXR1cm4gbWFyZ2luVG9wKCk7
Ci0gICAgY2FzZSBMZWZ0VG9SaWdodEJsb2NrRmxvdzoKKyAgICBjYXNlIExlZnRUb1JpZ2h0V3Jp
dGluZ01vZGU6CiAgICAgICAgIHJldHVybiBtYXJnaW5SaWdodCgpOwotICAgIGNhc2UgUmlnaHRU
b0xlZnRCbG9ja0Zsb3c6CisgICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOgogICAgICAg
ICByZXR1cm4gbWFyZ2luTGVmdCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTExOTksMTQgKzExOTksMTQgQEAgTGVuZ3RoIFJlbmRlclN0eWxlOjptYXJnaW5BZnRlcigp
IGNvbnN0CiAKIExlbmd0aCBSZW5kZXJTdHlsZTo6bWFyZ2luQmVmb3JlVXNpbmcoY29uc3QgUmVu
ZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChvdGhlclN0eWxlLT5i
bG9ja0Zsb3coKSkgewotICAgIGNhc2UgVG9wVG9Cb3R0b21CbG9ja0Zsb3c6CisgICAgc3dpdGNo
IChvdGhlclN0eWxlLT53cml0aW5nTW9kZSgpKSB7CisgICAgY2FzZSBUb3BUb0JvdHRvbVdyaXRp
bmdNb2RlOgogICAgICAgICByZXR1cm4gbWFyZ2luVG9wKCk7Ci0gICAgY2FzZSBCb3R0b21Ub1Rv
cEJsb2NrRmxvdzoKKyAgICBjYXNlIEJvdHRvbVRvVG9wV3JpdGluZ01vZGU6CiAgICAgICAgIHJl
dHVybiBtYXJnaW5Cb3R0b20oKTsKLSAgICBjYXNlIExlZnRUb1JpZ2h0QmxvY2tGbG93OgorICAg
IGNhc2UgTGVmdFRvUmlnaHRXcml0aW5nTW9kZToKICAgICAgICAgcmV0dXJuIG1hcmdpbkxlZnQo
KTsKLSAgICBjYXNlIFJpZ2h0VG9MZWZ0QmxvY2tGbG93OgorICAgIGNhc2UgUmlnaHRUb0xlZnRX
cml0aW5nTW9kZToKICAgICAgICAgcmV0dXJuIG1hcmdpblJpZ2h0KCk7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTIxNSwxNCArMTIxNSwxNCBAQCBMZW5ndGggUmVuZGVy
U3R5bGU6Om1hcmdpbkJlZm9yZVVzaW5nKGNvCiAKIExlbmd0aCBSZW5kZXJTdHlsZTo6bWFyZ2lu
QWZ0ZXJVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QKIHsKLSAgICBz
d2l0Y2ggKG90aGVyU3R5bGUtPmJsb2NrRmxvdygpKSB7Ci0gICAgY2FzZSBUb3BUb0JvdHRvbUJs
b2NrRmxvdzoKKyAgICBzd2l0Y2ggKG90aGVyU3R5bGUtPndyaXRpbmdNb2RlKCkpIHsKKyAgICBj
YXNlIFRvcFRvQm90dG9tV3JpdGluZ01vZGU6CiAgICAgICAgIHJldHVybiBtYXJnaW5Cb3R0b20o
KTsKLSAgICBjYXNlIEJvdHRvbVRvVG9wQmxvY2tGbG93OgorICAgIGNhc2UgQm90dG9tVG9Ub3BX
cml0aW5nTW9kZToKICAgICAgICAgcmV0dXJuIG1hcmdpblRvcCgpOwotICAgIGNhc2UgTGVmdFRv
UmlnaHRCbG9ja0Zsb3c6CisgICAgY2FzZSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlOgogICAgICAg
ICByZXR1cm4gbWFyZ2luUmlnaHQoKTsKLSAgICBjYXNlIFJpZ2h0VG9MZWZ0QmxvY2tGbG93Ogor
ICAgIGNhc2UgUmlnaHRUb0xlZnRXcml0aW5nTW9kZToKICAgICAgICAgcmV0dXJuIG1hcmdpbkxl
ZnQoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMjMxLDQyICsxMjMx
LDQyIEBAIExlbmd0aCBSZW5kZXJTdHlsZTo6bWFyZ2luQWZ0ZXJVc2luZyhjb24KIAogTGVuZ3Ro
IFJlbmRlclN0eWxlOjptYXJnaW5TdGFydCgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzVmVydGljYWxC
bG9ja0Zsb3coKSkKKyAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAg
cmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IG1hcmdpbkxlZnQoKSA6IG1hcmdpblJp
Z2h0KCk7CiAgICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IG1hcmdpblRvcCgp
IDogbWFyZ2luQm90dG9tKCk7CiB9CiAKIExlbmd0aCBSZW5kZXJTdHlsZTo6bWFyZ2luRW5kKCkg
Y29uc3QKIHsKLSAgICBpZiAoaXNWZXJ0aWNhbEJsb2NrRmxvdygpKQorICAgIGlmIChpc0hvcml6
b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICByZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpID8gbWFyZ2luUmlnaHQoKSA6IG1hcmdpbkxlZnQoKTsKICAgICByZXR1cm4gaXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpID8gbWFyZ2luQm90dG9tKCkgOiBtYXJnaW5Ub3AoKTsKIH0KICAgICAK
IExlbmd0aCBSZW5kZXJTdHlsZTo6bWFyZ2luU3RhcnRVc2luZyhjb25zdCBSZW5kZXJTdHlsZSog
b3RoZXJTdHlsZSkgY29uc3QKIHsKLSAgICBpZiAob3RoZXJTdHlsZS0+aXNWZXJ0aWNhbEJsb2Nr
RmxvdygpKQorICAgIGlmIChvdGhlclN0eWxlLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQog
ICAgICAgICByZXR1cm4gb3RoZXJTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbWFy
Z2luTGVmdCgpIDogbWFyZ2luUmlnaHQoKTsKICAgICByZXR1cm4gb3RoZXJTdHlsZS0+aXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpID8gbWFyZ2luVG9wKCkgOiBtYXJnaW5Cb3R0b20oKTsKIH0KIAog
TGVuZ3RoIFJlbmRlclN0eWxlOjptYXJnaW5FbmRVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogb3Ro
ZXJTdHlsZSkgY29uc3QKIHsKLSAgICBpZiAob3RoZXJTdHlsZS0+aXNWZXJ0aWNhbEJsb2NrRmxv
dygpKQorICAgIGlmIChvdGhlclN0eWxlLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAg
ICAgICByZXR1cm4gb3RoZXJTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbWFyZ2lu
UmlnaHQoKSA6IG1hcmdpbkxlZnQoKTsKICAgICByZXR1cm4gb3RoZXJTdHlsZS0+aXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpID8gbWFyZ2luQm90dG9tKCkgOiBtYXJnaW5Ub3AoKTsKIH0KIAogTGVu
Z3RoIFJlbmRlclN0eWxlOjpwYWRkaW5nQmVmb3JlKCkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKGJs
b2NrRmxvdygpKSB7Ci0gICAgY2FzZSBUb3BUb0JvdHRvbUJsb2NrRmxvdzoKKyAgICBzd2l0Y2gg
KHdyaXRpbmdNb2RlKCkpIHsKKyAgICBjYXNlIFRvcFRvQm90dG9tV3JpdGluZ01vZGU6CiAgICAg
ICAgIHJldHVybiBwYWRkaW5nVG9wKCk7Ci0gICAgY2FzZSBCb3R0b21Ub1RvcEJsb2NrRmxvdzoK
KyAgICBjYXNlIEJvdHRvbVRvVG9wV3JpdGluZ01vZGU6CiAgICAgICAgIHJldHVybiBwYWRkaW5n
Qm90dG9tKCk7Ci0gICAgY2FzZSBMZWZ0VG9SaWdodEJsb2NrRmxvdzoKKyAgICBjYXNlIExlZnRU
b1JpZ2h0V3JpdGluZ01vZGU6CiAgICAgICAgIHJldHVybiBwYWRkaW5nTGVmdCgpOwotICAgIGNh
c2UgUmlnaHRUb0xlZnRCbG9ja0Zsb3c6CisgICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2Rl
OgogICAgICAgICByZXR1cm4gcGFkZGluZ1JpZ2h0KCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtMTI3NSwxNCArMTI3NSwxNCBAQCBMZW5ndGggUmVuZGVyU3R5bGU6OnBh
ZGRpbmdCZWZvcmUoKSBjb25zCiAKIExlbmd0aCBSZW5kZXJTdHlsZTo6cGFkZGluZ0FmdGVyKCkg
Y29uc3QKIHsKLSAgICBzd2l0Y2ggKGJsb2NrRmxvdygpKSB7Ci0gICAgY2FzZSBUb3BUb0JvdHRv
bUJsb2NrRmxvdzoKKyAgICBzd2l0Y2ggKHdyaXRpbmdNb2RlKCkpIHsKKyAgICBjYXNlIFRvcFRv
Qm90dG9tV3JpdGluZ01vZGU6CiAgICAgICAgIHJldHVybiBwYWRkaW5nQm90dG9tKCk7Ci0gICAg
Y2FzZSBCb3R0b21Ub1RvcEJsb2NrRmxvdzoKKyAgICBjYXNlIEJvdHRvbVRvVG9wV3JpdGluZ01v
ZGU6CiAgICAgICAgIHJldHVybiBwYWRkaW5nVG9wKCk7Ci0gICAgY2FzZSBMZWZ0VG9SaWdodEJs
b2NrRmxvdzoKKyAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGluZ01vZGU6CiAgICAgICAgIHJldHVy
biBwYWRkaW5nUmlnaHQoKTsKLSAgICBjYXNlIFJpZ2h0VG9MZWZ0QmxvY2tGbG93OgorICAgIGNh
c2UgUmlnaHRUb0xlZnRXcml0aW5nTW9kZToKICAgICAgICAgcmV0dXJuIHBhZGRpbmdMZWZ0KCk7
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTI5MSwxNCArMTI5MSwxNCBA
QCBMZW5ndGggUmVuZGVyU3R5bGU6OnBhZGRpbmdBZnRlcigpIGNvbnN0CiAKIExlbmd0aCBSZW5k
ZXJTdHlsZTo6cGFkZGluZ1N0YXJ0KCkgY29uc3QKIHsKLSAgICBpZiAoaXNWZXJ0aWNhbEJsb2Nr
RmxvdygpKQorICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICByZXR1
cm4gaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gcGFkZGluZ0xlZnQoKSA6IHBhZGRpbmdSaWdo
dCgpOwogICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBwYWRkaW5nVG9wKCkg
OiBwYWRkaW5nQm90dG9tKCk7CiB9CiAKIExlbmd0aCBSZW5kZXJTdHlsZTo6cGFkZGluZ0VuZCgp
IGNvbnN0CiB7Ci0gICAgaWYgKGlzVmVydGljYWxCbG9ja0Zsb3coKSkKKyAgICBpZiAoaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSA/IHBhZGRpbmdSaWdodCgpIDogcGFkZGluZ0xlZnQoKTsKICAgICByZXR1cm4gaXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpID8gcGFkZGluZ0JvdHRvbSgpIDogcGFkZGluZ1RvcCgpOwogfQpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiA2OTAxOSkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3OCw3ICsxNzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICAgICAgICAgKF9mb3Jj
ZV9iYWNrZ3JvdW5kc190b193aGl0ZSA9PSBvdGhlci5fZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hp
dGUpICYmCiAgICAgICAgICAgICAgICAgICAgKF9wb2ludGVyRXZlbnRzID09IG90aGVyLl9wb2lu
dGVyRXZlbnRzKSAmJgogICAgICAgICAgICAgICAgICAgIChfaW5zaWRlTGluayA9PSBvdGhlci5f
aW5zaWRlTGluaykgJiYKLSAgICAgICAgICAgICAgICAgICAoX2Jsb2NrRmxvdyA9PSBvdGhlci5f
YmxvY2tGbG93KTsKKyAgICAgICAgICAgICAgICAgICAobV93cml0aW5nTW9kZSA9PSBvdGhlci5t
X3dyaXRpbmdNb2RlKTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OyB9CkBAIC0yMDYsNyArMjA2LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAvLyA0MyBiaXRzCiAK
ICAgICAgICAgLy8gQ1NTIFRleHQgTGF5b3V0IE1vZHVsZSBMZXZlbCAzOiBWZXJ0aWNhbCB3cml0
aW5nIHN1cHBvcnQKLSAgICAgICAgdW5zaWduZWQgX2Jsb2NrRmxvdyA6IDI7IC8vIEVCbG9ja0Zs
b3dEaXJlY3Rpb24KKyAgICAgICAgdW5zaWduZWQgbV93cml0aW5nTW9kZSA6IDI7IC8vIFdyaXRp
bmdNb2RlCiAgICAgICAgIC8vIDQ1IGJpdHMKICAgICB9IGluaGVyaXRlZF9mbGFnczsKIApAQCAt
MjgzLDcgKzI4Myw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9mb3Jj
ZV9iYWNrZ3JvdW5kc190b193aGl0ZSA9IGZhbHNlOwogICAgICAgICBpbmhlcml0ZWRfZmxhZ3Mu
X3BvaW50ZXJFdmVudHMgPSBpbml0aWFsUG9pbnRlckV2ZW50cygpOwogICAgICAgICBpbmhlcml0
ZWRfZmxhZ3MuX2luc2lkZUxpbmsgPSBOb3RJbnNpZGVMaW5rOwotICAgICAgICBpbmhlcml0ZWRf
ZmxhZ3MuX2Jsb2NrRmxvdyA9IGluaXRpYWxCbG9ja0Zsb3coKTsKKyAgICAgICAgaW5oZXJpdGVk
X2ZsYWdzLm1fd3JpdGluZ01vZGUgPSBpbml0aWFsV3JpdGluZ01vZGUoKTsKIAogICAgICAgICBu
b25pbmhlcml0ZWRfZmxhZ3MuX2VmZmVjdGl2ZURpc3BsYXkgPSBub25pbmhlcml0ZWRfZmxhZ3Mu
X29yaWdpbmFsRGlzcGxheSA9IGluaXRpYWxEaXNwbGF5KCk7CiAgICAgICAgIG5vbmluaGVyaXRl
ZF9mbGFncy5fb3ZlcmZsb3dYID0gaW5pdGlhbE92ZXJmbG93WCgpOwpAQCAtNzQzLDggKzc0Myw4
IEBAIHB1YmxpYzoKICAgICBib29sIHRleHRTaXplQWRqdXN0KCkgY29uc3QgeyByZXR1cm4gcmFy
ZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0OyB9CiAgICAgRVRleHRTZWN1cml0eSB0ZXh0
U2VjdXJpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dFNlY3VyaXR5PihyYXJl
SW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5KTsgfQogCi0gICAgRUJsb2NrRmxvd0RpcmVjdGlv
biBibG9ja0Zsb3coKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQmxvY2tGbG93RGlyZWN0
aW9uPihpbmhlcml0ZWRfZmxhZ3MuX2Jsb2NrRmxvdyk7IH0KLSAgICBib29sIGlzVmVydGljYWxC
bG9ja0Zsb3coKSBjb25zdCB7IHJldHVybiBibG9ja0Zsb3coKSA9PSBUb3BUb0JvdHRvbUJsb2Nr
RmxvdyB8fCBibG9ja0Zsb3coKSA9PSBCb3R0b21Ub1RvcEJsb2NrRmxvdzsgfQorICAgIFdyaXRp
bmdNb2RlIHdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V3JpdGluZ01v
ZGU+KGluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2RlKTsgfQorICAgIGJvb2wgaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiB3cml0aW5nTW9kZSgpID09IFRvcFRvQm90
dG9tV3JpdGluZ01vZGUgfHwgd3JpdGluZ01vZGUoKSA9PSBCb3R0b21Ub1RvcFdyaXRpbmdNb2Rl
OyB9CiAKICAgICBFU3BlYWsgc3BlYWsoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFU3BlYWs+KHJh
cmVJbmhlcml0ZWREYXRhLT5zcGVhayk7IH0KICAgICAgICAgCkBAIC0xMTI0LDcgKzExMjQsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICBvcmlnaW5hbERpc3BsYXkoKSA9PSBJTkxJTkVfQk9Y
IHx8IG9yaWdpbmFsRGlzcGxheSgpID09IElOTElORV9UQUJMRTsKICAgICB9CiAKLSAgICB2b2lk
IHNldEJsb2NrRmxvdyhFQmxvY2tGbG93RGlyZWN0aW9uIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl9i
bG9ja0Zsb3cgPSB2OyB9CisgICAgdm9pZCBzZXRXcml0aW5nTW9kZShXcml0aW5nTW9kZSB2KSB7
IGluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2RlID0gdjsgfQogCiAgICAgLy8gVG8gdGVsbCBp
ZiB0aGlzIHN0eWxlIG1hdGNoZWQgYXR0cmlidXRlIHNlbGVjdG9ycy4gVGhpcyBtYWtlcyBpdCBp
bXBvc3NpYmxlIHRvIHNoYXJlLgogICAgIGJvb2wgYWZmZWN0ZWRCeUF0dHJpYnV0ZVNlbGVjdG9y
cygpIGNvbnN0IHsgcmV0dXJuIG1fYWZmZWN0ZWRCeUF0dHJpYnV0ZVNlbGVjdG9yczsgfQpAQCAt
MTE2NSw3ICsxMTY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBFQ2FwdGlvblNpZGUgaW5pdGlh
bENhcHRpb25TaWRlKCkgeyByZXR1cm4gQ0FQVE9QOyB9CiAgICAgc3RhdGljIEVDbGVhciBpbml0
aWFsQ2xlYXIoKSB7IHJldHVybiBDTk9ORTsgfQogICAgIHN0YXRpYyBUZXh0RGlyZWN0aW9uIGlu
aXRpYWxEaXJlY3Rpb24oKSB7IHJldHVybiBMVFI7IH0KLSAgICBzdGF0aWMgRUJsb2NrRmxvd0Rp
cmVjdGlvbiBpbml0aWFsQmxvY2tGbG93KCkgeyByZXR1cm4gVG9wVG9Cb3R0b21CbG9ja0Zsb3c7
IH0KKyAgICBzdGF0aWMgV3JpdGluZ01vZGUgaW5pdGlhbFdyaXRpbmdNb2RlKCkgeyByZXR1cm4g
VG9wVG9Cb3R0b21Xcml0aW5nTW9kZTsgfQogICAgIHN0YXRpYyBFRGlzcGxheSBpbml0aWFsRGlz
cGxheSgpIHsgcmV0dXJuIElOTElORTsgfQogICAgIHN0YXRpYyBFRW1wdHlDZWxsIGluaXRpYWxF
bXB0eUNlbGxzKCkgeyByZXR1cm4gU0hPVzsgfQogICAgIHN0YXRpYyBFRmxvYXQgaW5pdGlhbEZs
b2F0aW5nKCkgeyByZXR1cm4gRk5PTkU7IH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkocmV2aXNpb24gNjkwMTkpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjksOCArMTI5LDggQEAgZW51bSBFVW5pY29kZUJpZGkgewogfTsKIAogLy8gQ1NTIFRleHQg
TGF5b3V0IE1vZHVsZSBMZXZlbCAzOiBWZXJ0aWNhbCB3cml0aW5nIHN1cHBvcnQKLWVudW0gRUJs
b2NrRmxvd0RpcmVjdGlvbiB7Ci0gICAgVG9wVG9Cb3R0b21CbG9ja0Zsb3csIFJpZ2h0VG9MZWZ0
QmxvY2tGbG93LCBMZWZ0VG9SaWdodEJsb2NrRmxvdywgQm90dG9tVG9Ub3BCbG9ja0Zsb3cKK2Vu
dW0gV3JpdGluZ01vZGUgeworICAgIFRvcFRvQm90dG9tV3JpdGluZ01vZGUsIFJpZ2h0VG9MZWZ0
V3JpdGluZ01vZGUsIExlZnRUb1JpZ2h0V3JpdGluZ01vZGUsIEJvdHRvbVRvVG9wV3JpdGluZ01v
ZGUKIH07CiAKIGVudW0gRUZpbGxBdHRhY2htZW50IHsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gNjkwMTkpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTGluZUpvaW4gaW5pdGlhbEpvaW5TdHlsZSgpIHsgcmV0
dXJuIE1pdGVySm9pbjsgfQogICAgIHN0YXRpYyBFU2hhcGVSZW5kZXJpbmcgaW5pdGlhbFNoYXBl
UmVuZGVyaW5nKCkgeyByZXR1cm4gU1JfQVVUTzsgfQogICAgIHN0YXRpYyBFVGV4dEFuY2hvciBp
bml0aWFsVGV4dEFuY2hvcigpIHsgcmV0dXJuIFRBX1NUQVJUOyB9Ci0gICAgc3RhdGljIEVXcml0
aW5nTW9kZSBpbml0aWFsV3JpdGluZ01vZGUoKSB7IHJldHVybiBXTV9MUlRCOyB9CisgICAgc3Rh
dGljIFNWR1dyaXRpbmdNb2RlIGluaXRpYWxXcml0aW5nTW9kZSgpIHsgcmV0dXJuIFdNX0xSVEI7
IH0KICAgICBzdGF0aWMgRUdseXBoT3JpZW50YXRpb24gaW5pdGlhbEdseXBoT3JpZW50YXRpb25I
b3Jpem9udGFsKCkgeyByZXR1cm4gR09fMERFRzsgfQogICAgIHN0YXRpYyBFR2x5cGhPcmllbnRh
dGlvbiBpbml0aWFsR2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKCkgeyByZXR1cm4gR09fQVVUTzsg
fQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsRmlsbE9wYWNpdHkoKSB7IHJldHVybiAxLjBmOyB9
CkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Sm9pblN0eWxlKExpbmVK
b2luIHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9qb2luU3R5bGUgPSB2YWw7IH0KICAgICB2
b2lkIHNldFNoYXBlUmVuZGVyaW5nKEVTaGFwZVJlbmRlcmluZyB2YWwpIHsgc3ZnX2luaGVyaXRl
ZF9mbGFncy5fc2hhcGVSZW5kZXJpbmcgPSB2YWw7IH0KICAgICB2b2lkIHNldFRleHRBbmNob3Io
RVRleHRBbmNob3IgdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3RleHRBbmNob3IgPSB2YWw7
IH0KLSAgICB2b2lkIHNldFdyaXRpbmdNb2RlKEVXcml0aW5nTW9kZSB2YWwpIHsgc3ZnX2luaGVy
aXRlZF9mbGFncy5fd3JpdGluZ01vZGUgPSB2YWw7IH0KKyAgICB2b2lkIHNldFdyaXRpbmdNb2Rl
KFNWR1dyaXRpbmdNb2RlIHZhbCkgeyBzdmdfaW5oZXJpdGVkX2ZsYWdzLl93cml0aW5nTW9kZSA9
IHZhbDsgfQogICAgIHZvaWQgc2V0R2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwoRUdseXBoT3Jp
ZW50YXRpb24gdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRpb25Ib3Jp
em9udGFsID0gdmFsOyB9CiAgICAgdm9pZCBzZXRHbHlwaE9yaWVudGF0aW9uVmVydGljYWwoRUds
eXBoT3JpZW50YXRpb24gdmFsKSB7IHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRp
b25WZXJ0aWNhbCA9IHZhbDsgfQogICAgIApAQCAtMjgxLDcgKzI4MSw3IEBAIHB1YmxpYzoKICAg
ICBMaW5lSm9pbiBqb2luU3R5bGUoKSBjb25zdCB7IHJldHVybiAoTGluZUpvaW4pIHN2Z19pbmhl
cml0ZWRfZmxhZ3MuX2pvaW5TdHlsZTsgfQogICAgIEVTaGFwZVJlbmRlcmluZyBzaGFwZVJlbmRl
cmluZygpIGNvbnN0IHsgcmV0dXJuIChFU2hhcGVSZW5kZXJpbmcpIHN2Z19pbmhlcml0ZWRfZmxh
Z3MuX3NoYXBlUmVuZGVyaW5nOyB9CiAgICAgRVRleHRBbmNob3IgdGV4dEFuY2hvcigpIGNvbnN0
IHsgcmV0dXJuIChFVGV4dEFuY2hvcikgc3ZnX2luaGVyaXRlZF9mbGFncy5fdGV4dEFuY2hvcjsg
fQotICAgIEVXcml0aW5nTW9kZSB3cml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIChFV3JpdGlu
Z01vZGUpIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX3dyaXRpbmdNb2RlOyB9CisgICAgU1ZHV3JpdGlu
Z01vZGUgd3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiAoU1ZHV3JpdGluZ01vZGUpIHN2Z19p
bmhlcml0ZWRfZmxhZ3MuX3dyaXRpbmdNb2RlOyB9CiAgICAgRUdseXBoT3JpZW50YXRpb24gZ2x5
cGhPcmllbnRhdGlvbkhvcml6b250YWwoKSBjb25zdCB7IHJldHVybiAoRUdseXBoT3JpZW50YXRp
b24pIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOyB9CiAg
ICAgRUdseXBoT3JpZW50YXRpb24gZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKCkgY29uc3QgeyBy
ZXR1cm4gKEVHbHlwaE9yaWVudGF0aW9uKSBzdmdfaW5oZXJpdGVkX2ZsYWdzLl9nbHlwaE9yaWVu
dGF0aW9uVmVydGljYWw7IH0KICAgICBmbG9hdCBmaWxsT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJu
IGZpbGwtPm9wYWNpdHk7IH0KQEAgLTM1MSw3ICszNTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IHVuc2lnbmVkIF90ZXh0QW5jaG9yIDogMjsgLy8gRVRleHRBbmNob3IKICAgICAgICAgdW5zaWdu
ZWQgX2NvbG9ySW50ZXJwb2xhdGlvbiA6IDI7IC8vIEVDb2xvckludGVycG9sYXRpb24KICAgICAg
ICAgdW5zaWduZWQgX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgOiAyOyAvLyBFQ29sb3JJbnRl
cnBvbGF0aW9uCi0gICAgICAgIHVuc2lnbmVkIF93cml0aW5nTW9kZSA6IDM7IC8vIEVXcml0aW5n
TW9kZQorICAgICAgICB1bnNpZ25lZCBfd3JpdGluZ01vZGUgOiAzOyAvLyBTVkdXcml0aW5nTW9k
ZQogICAgICAgICB1bnNpZ25lZCBfZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwgOiAzOyAvLyBF
R2x5cGhPcmllbnRhdGlvbgogICAgICAgICB1bnNpZ25lZCBfZ2x5cGhPcmllbnRhdGlvblZlcnRp
Y2FsIDogMzsgLy8gRUdseXBoT3JpZW50YXRpb24KICAgICB9IHN2Z19pbmhlcml0ZWRfZmxhZ3M7
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaAko
cmV2aXNpb24gNjkwMTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHls
ZURlZnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFNSX0FVVE8sIFNSX09QVElNSVpFU1BFRUQsIFNSX0NSSVNQRURHRVMsIFNS
X0dFT01FVFJJQ1BSRUNJU0lPTgogICAgIH07CiAKLSAgICBlbnVtIEVXcml0aW5nTW9kZSB7Cisg
ICAgZW51bSBTVkdXcml0aW5nTW9kZSB7CiAgICAgICAgIFdNX0xSVEIsIFdNX0xSLCBXTV9STFRC
LCBXTV9STCwgV01fVEJSTCwgV01fVEIKICAgICB9OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2OTIx
NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5
IEBACisyMDEwLTEwLTA2ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcyODUKKworICAgICAgICBVcGRhdGUgdG8gdGhlIGxh
dGVzdCB3cml0aW5nLW1vZGUgZHJhZnQuIFRoZSBibG9jay1mbG93IHByb3BlcnR5IGlzIGdvbmUg
YW5kIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggd3JpdGluZy1tb2RlLgorICAgICAgICBDaGFuZ2Ug
YWxsIHRoZSBjb2RlIHRvIHVzZSB3cml0aW5nTW9kZSgpIGluc3RlYWQgb2YgYmxvY2tGbG93KCkg
YW5kIHJlbmFtZSBhbGwgZnVuY3Rpb25zIHRoYXQgcmVmZXJyZWQgdG8gYmxvY2sgZmxvdworICAg
ICAgICBhcyBhcHByb3ByaWF0ZS4KKworICAgICAgICAqIGZhc3QvYmxvY2tmbG93L2F1dG8tbWFy
Z2lucy1hY3Jvc3MtYm91bmRhcmllcy5odG1sOgorICAgICAgICAqIGZhc3QvYmxvY2tmbG93L2Js
b2NrLWZvcm1hdHRpbmctY29udGV4dC5odG1sOgorICAgICAgICAqIGZhc3QvYmxvY2tmbG93L2Js
b2NrLWxldmVsLWltYWdlcy5odG1sOgorICAgICAgICAqIGZhc3QvYmxvY2tmbG93L2Rpc3BsYXkt
bXV0YXRpb24uaHRtbDoKKyAgICAgICAgKiBmYXN0L2Jsb2NrZmxvdy9maWVsZHNldHMuaHRtbDoK
KyAgICAgICAgKiBmYXN0L2Jsb2NrZmxvdy9mbG9hdHMtaW4tYmxvY2stbGF5b3V0Lmh0bWw6Cisg
ICAgICAgICogZmFzdC9ibG9ja2Zsb3cvaW5saW5lLWRpcmVjdGlvbi1wb3NpdGlvbmluZy5odG1s
OgorICAgICAgICAqIGZhc3QvYmxvY2tmbG93L21hcmdpbi1jb2xsYXBzZS5odG1sOgorICAgICAg
ICAqIGZhc3QvYmxvY2tmbG93L3BlcmNlbnRhZ2UtcGFkZGluZy5odG1sOgorICAgICAgICAqIGZh
c3QvYmxvY2tmbG93L3JlbGF0aXZlLXBvc2l0aW9uaW5nLXBlcmNlbnRhZ2VzLmh0bWw6CisgICAg
ICAgICogZmFzdC9ibG9ja2Zsb3cvcm9vdC1sci1iYXNpYy5odG1sOgorICAgICAgICAqIGZhc3Qv
YmxvY2tmbG93L3NlbGYtY29sbGFwc2luZy1ibG9jay5odG1sOgorICAgICAgICAqIGZhc3QvY3Nz
L2xvZ2ljYWwtcHJvcGVydHktcmVzb2x1dGlvbi5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRl
ZC1zdHlsZS13aXRob3V0LXJlbmRlcmVyLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0xMC0wNiAgQWxi
ZXJ0IEouIFdvbmcgIDxhandvbmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
VW5yZXZpZXdlZC4gQnVpbGQgZml4LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ibG9ja2Zsb3cv
YXV0by1tYXJnaW5zLWFjcm9zcy1ib3VuZGFyaWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9ibG9ja2Zsb3cvYXV0by1tYXJnaW5zLWFjcm9zcy1ib3VuZGFyaWVzLmh0bWwJ
KHJldmlzaW9uIDY5MDE5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ibG9ja2Zsb3cvYXV0by1tYXJn
aW5zLWFjcm9zcy1ib3VuZGFyaWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBA
CiA8aHRtbD4KIDxoZWFkPgogPHN0eWxlPgotLmxyIHsgLXdlYmtpdC1ibG9jay1mbG93OiBscjsg
YmxvY2stZmxvdzogbHI7IGJhY2tncm91bmQtY29sb3I6Z3JlZW47IG1hcmdpbi1sZWZ0OmF1dG87
IG1hcmdpbi1yaWdodDphdXRvOyB3aWR0aDoxMDBweDsgaGVpZ2h0OjEwMHB4OyB9CisubHIgeyAt
d2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtbHI7IGJhY2tncm91bmQtY29sb3I6Z3JlZW47
IG1hcmdpbi1sZWZ0OmF1dG87IG1hcmdpbi1yaWdodDphdXRvOyB3aWR0aDoxMDBweDsgaGVpZ2h0
OjEwMHB4OyB9CiA8L3N0eWxlPgogPC9oZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Jsb2NrZmxvdy9ibG9jay1mb3JtYXR0aW5nLWNvbnRleHQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrZmxvdy9ibG9jay1mb3JtYXR0aW5nLWNvbnRleHQuaHRt
bAkocmV2aXNpb24gNjkwMTkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrZmxvdy9ibG9jay1m
b3JtYXR0aW5nLWNvbnRleHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxo
dG1sPgogPGhlYWQ+CiA8c3R5bGU+Ci0ubHIgeyAtd2Via2l0LWJsb2NrLWZsb3c6IGxyOyBibG9j
ay1mbG93OiBscjsgYmFja2dyb3VuZC1jb2xvcjpncmVlbjsgbWFyZ2luOjEwcHg7IHdpZHRoOjEw
MHB4OyBoZWlnaHQ6MTAwcHg7IH0KKy5sciB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNh
bC1scjsgYmFja2dyb3VuZC1jb2xvcjpncmVlbjsgbWFyZ2luOjEwcHg7IHdpZHRoOjEwMHB4OyBo
ZWlnaHQ6MTAwcHg7IH0KIC5mbG9hdCB7IHdpZHRoOjEwMHB4OyBoZWlnaHQ6MTAwcHg7IGJhY2tn
cm91bmQtY29sb3I6Ymx1ZTsgZmxvYXQ6bGVmdH0KIGJvZHkgeyBtYXJnaW46IDAgfQogPC9zdHls
ZT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvYmxvY2tmbG93L2Jsb2NrLWxldmVsLWltYWdlcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYmxvY2tmbG93L2Jsb2NrLWxldmVs
LWltYWdlcy5odG1sCShyZXZpc2lvbiA2OTAxOSkKKysrIExheW91dFRlc3RzL2Zhc3QvYmxvY2tm
bG93L2Jsb2NrLWxldmVsLWltYWdlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICsxLDEy
IEBACiA8IWRvY3R5cGUgaHRtbD4KLTxkaXYgc3R5bGU9Im1hcmdpbjoycHg7IGZsb2F0OmxlZnQ7
IGhlaWdodDozMDBweDtib3JkZXI6MnB4IHNvbGlkIGJsYWNrOy13ZWJraXQtd3JpdGluZy1tb2Rl
OnRiLWxyOyB3cml0aW5nLW1vZGU6dGItbHIiPgorPGRpdiBzdHlsZT0ibWFyZ2luOjJweDsgZmxv
YXQ6bGVmdDsgaGVpZ2h0OjMwMHB4O2JvcmRlcjoycHggc29saWQgYmxhY2s7LXdlYmtpdC13cml0
aW5nLW1vZGU6dmVydGljYWwtbHIiPgogPGRpdiBzdHlsZT0id2lkdGg6MjVweDtiYWNrZ3JvdW5k
LWNvbG9yOmdyZWVuIj48L2Rpdj4KIDxpbWcgc3R5bGU9ImRpc3BsYXk6YmxvY2s7aGVpZ2h0OjUw
JTsgLXdlYmtpdC1ib3JkZXItYmVmb3JlOjJweCBzb2xpZCBtYXJvb247IC13ZWJraXQtYm9yZGVy
LWFmdGVyOjJweCBzb2xpZCBtYXJvb247IC13ZWJraXQtYm9yZGVyLXN0YXJ0OiAxcHggc29saWQg
cHVycGxlOyAtd2Via2l0LWJvcmRlci1lbmQ6NXB4IGRhc2hlZCBncmV5IiBzcmM9InJlc291cmNl
cy9jaXJjbGUuc3ZnIj4KIDxpbWcgc3R5bGU9Ii13ZWJraXQtbWFyZ2luLXN0YXJ0OiA0MHB4OyBk
aXNwbGF5OmJsb2NrO2hlaWdodDo1MHB4IiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyI+CiA8ZGl2
IHN0eWxlPSJ3aWR0aDoyNXB4O2JhY2tncm91bmQtY29sb3I6Z3JlZW4iPjwvZGl2PgogPC9kaXY+
CiAKLTxkaXYgc3R5bGU9Im1hcmdpbjoycHg7IGZsb2F0OmxlZnQ7IGhlaWdodDozMDBweDtib3Jk
ZXI6MnB4IHNvbGlkIGJsYWNrOy13ZWJraXQtd3JpdGluZy1tb2RlOmJ0LWxyOyB3cml0aW5nLW1v
ZGU6YnQtbHIiPgorPGRpdiBzdHlsZT0ibWFyZ2luOjJweDsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjMw
MHB4O2JvcmRlcjoycHggc29saWQgYmxhY2s7LXdlYmtpdC13cml0aW5nLW1vZGU6dmVydGljYWwt
bHI7IGRpcmVjdGlvbjpydGwiPgogPGRpdiBzdHlsZT0id2lkdGg6MjVweDtiYWNrZ3JvdW5kLWNv
bG9yOmdyZWVuIj48L2Rpdj4KIDxpbWcgc3R5bGU9ImRpc3BsYXk6YmxvY2s7aGVpZ2h0OjUwJTsg
LXdlYmtpdC1ib3JkZXItYmVmb3JlOjJweCBzb2xpZCBtYXJvb247IC13ZWJraXQtYm9yZGVyLWFm
dGVyOjJweCBzb2xpZCBtYXJvb247IC13ZWJraXQtYm9yZGVyLXN0YXJ0OiAxcHggc29saWQgcHVy
cGxlOyAtd2Via2l0LWJvcmRlci1lbmQ6NXB4IGRhc2hlZCBncmV5IiBzcmM9InJlc291cmNlcy9j
aXJjbGUuc3ZnIj4KIDxpbWcgc3R5bGU9Ii13ZWJraXQtbWFyZ2luLXN0YXJ0OiA0MHB4OyBkaXNw
bGF5OmJsb2NrO2hlaWdodDo1MHB4IiBzcmM9InJlc291cmNlcy9vdmFsLnBuZyI+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Jsb2NrZmxvdy9kaXNwbGF5LW11dGF0aW9uLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ibG9ja2Zsb3cvZGlzcGxheS1tdXRhdGlvbi5odG1sCShy
ZXZpc2lvbiA2OTAxOSkKKysrIExheW91dFRlc3RzL2Zhc3QvYmxvY2tmbG93L2Rpc3BsYXktbXV0
YXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTUsNSArMTUsNSBAQCBmdW5jdGlvbiBydW5U
ZXN0KCkKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPHNw
YW4gaWQ9InRlc3QiIHN0eWxlPSItd2Via2l0LWJsb2NrLWZsb3c6bHIiPjwvc3Bhbj4KKzxzcGFu
IGlkPSJ0ZXN0IiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6dmVydGljYWwtbHIiPjwvc3Bh
bj4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ibG9j
a2Zsb3cvZmllbGRzZXRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ibG9j
a2Zsb3cvZmllbGRzZXRzLmh0bWwJKHJldmlzaW9uIDY5MTg0KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9ibG9ja2Zsb3cvZmllbGRzZXRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUzLDE1ICs1Mywx
NSBAQCBSVEwgZmllbGRzZXQgd2l0aCBsZWZ0L2NlbnRlci9yaWdodCB0ZXh0CiAKIFZlcnRpY2Fs
IExUUiBmaWVsZHNldCB3aXRoIGxlZnQvY2VudGVyL3JpZ2h0IHRleHQtYWxpZ246IDxicj4KIAot
PGZpZWxkc2V0IHN0eWxlPSItd2Via2l0LWJsb2NrLWZsb3c6bHI7Ij4KKzxmaWVsZHNldCBzdHls
ZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6dmVydGljYWwtbHIiPgogPGxlZ2VuZCBzdHlsZT0idGV4
dC1hbGlnbjpsZWZ0OyBtYXJnaW4tdG9wOjIwcHgiPjxkaXY+PC9kaXY+PC9sZWdlbmQ+CiA8L2Zp
ZWxkc2V0PgogCi08ZmllbGRzZXQgc3R5bGU9Ii13ZWJraXQtYmxvY2stZmxvdzpscjsiPgorPGZp
ZWxkc2V0IHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTp2ZXJ0aWNhbC1sciI+CiA8bGVnZW5k
IHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0OyBtYXJnaW4tYm90dG9tOjIwcHgiPjxkaXY+PC9kaXY+
PC9sZWdlbmQ+CiA8L2ZpZWxkc2V0PgogCi08ZmllbGRzZXQgc3R5bGU9Ii13ZWJraXQtYmxvY2st
ZmxvdzpscjsiPgorPGZpZWxkc2V0IHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTp2ZXJ0aWNh
bC1sciI+CiA8bGVnZW5kIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PGRpdj48L2Rpdj48L2xl
Z2VuZD4KIDwvZmllbGRzZXQ+CiAKQEAgLTcwLDE0ICs3MCwxNCBAQCBWZXJ0aWNhbCBMVFIgZmll
bGRzZXQgd2l0aCBsZWZ0L2NlbnRlci9yCiAKIFZlcnRpY2FsIFJUTCBmaWVsZHNldCB3aXRoIGxl
ZnQvY2VudGVyL3JpZ2h0IHRleHQtYWxpZ246IDxicj4KIAotPGZpZWxkc2V0IGRpcj1ydGwgc3R5
bGU9Ii13ZWJraXQtYmxvY2stZmxvdzpscjsiPgorPGZpZWxkc2V0IGRpcj1ydGwgc3R5bGU9Ii13
ZWJraXQtd3JpdGluZy1tb2RlOnZlcnRpY2FsLWxyIj4KIDxsZWdlbmQgc3R5bGU9InRleHQtYWxp
Z246bGVmdDsgbWFyZ2luLXRvcDoyMHB4Ij48ZGl2PjwvZGl2PjwvbGVnZW5kPgogPC9maWVsZHNl
dD4KIAotPGZpZWxkc2V0IGRpcj1ydGwgc3R5bGU9Ii13ZWJraXQtYmxvY2stZmxvdzpscjsiPgor
PGZpZWxkc2V0IGRpcj1ydGwgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOnZlcnRpY2FsLWxy
Ij4KIDxsZWdlbmQgc3R5bGU9InRleHQtYWxpZ246cmlnaHQ7IG1hcmdpbi1ib3R0b206MjBweCI+
PGRpdj48L2Rpdj48L2xlZ2VuZD4KIDwvZmllbGRzZXQ+CiAKLTxmaWVsZHNldCBkaXI9cnRsIHN0
eWxlPSItd2Via2l0LWJsb2NrLWZsb3c6bHI7Ij4KKzxmaWVsZHNldCBkaXI9cnRsIHN0eWxlPSIt
d2Via2l0LXdyaXRpbmctbW9kZTp2ZXJ0aWNhbC1sciI+CiA8bGVnZW5kIHN0eWxlPSJ0ZXh0LWFs
aWduOmNlbnRlciI+PGRpdj48L2Rpdj48L2xlZ2VuZD4KIDwvZmllbGRzZXQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Jsb2NrZmxvdy9mbG9hdHMtaW4tYmxvY2stbGF5b3V0Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ibG9ja2Zsb3cvZmxvYXRzLWluLWJsb2NrLWxheW91
dC5odG1sCShyZXZpc2lvbiA2OTEzNikKKysrIExheW91dFRlc3RzL2Zhc3QvYmxvY2tmbG93L2Zs
b2F0cy1pbi1ibG9jay1sYXlvdXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IDwhZG9jdHlwZSBodG1sPgogPGh0bWw+Ci08Ym9keSBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1v
ZGU6dGItbHI7IHdyaXRpbmctbW9kZTp0Yi1scjsiPgorPGJvZHkgc3R5bGU9Ii13ZWJraXQtd3Jp
dGluZy1tb2RlOnZlcnRpY2FsLWxyIj4KIDxkaXYgc3R5bGU9IndpZHRoOjEwMHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOnllbGxvdyI+PC9kaXY+CiA8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0O3dpZHRoOjEw
MHB4O2hlaWdodDoxMDBweDtiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuOyBtYXJnaW4tdG9wOjEwcHg7
Ij48L2Rpdj4KIDxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjEwMHB4O2hlaWdodDoxMDBw
eDtiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuOyBtYXJnaW4tYm90dG9tOjEwcHgiPjwvZGl2PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9ibG9ja2Zsb3cvaW5saW5lLWRpcmVjdGlvbi1wb3NpdGlvbmlu
Zy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYmxvY2tmbG93L2lubGluZS1k
aXJlY3Rpb24tcG9zaXRpb25pbmcuaHRtbAkocmV2aXNpb24gNjkwMTkpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Jsb2NrZmxvdy9pbmxpbmUtZGlyZWN0aW9uLXBvc2l0aW9uaW5nLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8aHRtbD4KIDxib2R5PgogPGRpdiBzdHlsZT0iYm9y
ZGVyOjJweCBzb2xpZCBibGFjazt3aWR0aDo2MDBweDsiPgotPGRpdiBzdHlsZT0iLXdlYmtpdC13
cml0aW5nLW1vZGU6IHRiLWxyOyB3cml0aW5nLW1vZGU6dGItbHI7IHdpZHRoOjEwMHB4OyBoZWln
aHQ6MTAwcHg7IG1hcmdpbi1sZWZ0OjUwcHg7IGJhY2tncm91bmQtY29sb3I6Z3JlZW4iPjwvZGl2
PgorPGRpdiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6dmVydGljYWwtbHI7IHdpZHRoOjEw
MHB4OyBoZWlnaHQ6MTAwcHg7IG1hcmdpbi1sZWZ0OjUwcHg7IGJhY2tncm91bmQtY29sb3I6Z3Jl
ZW4iPjwvZGl2PgogPC9kaXY+CiAKIDxkaXYgc3R5bGU9ImJvcmRlcjoycHggc29saWQgYmxhY2s7
d2lkdGg6NjAwcHg7ZGlyZWN0aW9uOnJ0bCI+Ci08ZGl2IHN0eWxlPSItd2Via2l0LXdyaXRpbmct
bW9kZTogdGItbHI7IHdyaXRpbmctbW9kZTp0Yi1scjsgd2lkdGg6MTAwcHg7IGhlaWdodDoxMDBw
eDsgbWFyZ2luLXJpZ2h0OjUwcHg7IGJhY2tncm91bmQtY29sb3I6Z3JlZW4iPjwvZGl2PgorPGRp
diBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6dmVydGljYWwtbHI7IHdpZHRoOjEwMHB4OyBo
ZWlnaHQ6MTAwcHg7IG1hcmdpbi1yaWdodDo1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuIj48
L2Rpdj4KIDwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ibG9ja2Zsb3cvbWFyZ2luLWNv
bGxhcHNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ibG9ja2Zsb3cvbWFy
Z2luLWNvbGxhcHNlLmh0bWwJKHJldmlzaW9uIDY5MDE5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9i
bG9ja2Zsb3cvbWFyZ2luLWNvbGxhcHNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOSArNSw5
IEBACiA8L3N0eWxlPgogPGJvZHk+CiA8ZGl2IHN0eWxlPSJib3JkZXI6MnB4IHNvbGlkIGJsYWNr
Ij4KLTxkaXYgc3R5bGU9Ii13ZWJraXQtYmxvY2stZmxvdzpsciIgY2xhc3M9ImJsb2NrIj48L2Rp
dj4KLTxkaXYgc3R5bGU9Ii13ZWJraXQtYmxvY2stZmxvdzpybCIgY2xhc3M9ImJsb2NrIj48L2Rp
dj4KLTxkaXYgc3R5bGU9Ii13ZWJraXQtYmxvY2stZmxvdzpidCIgY2xhc3M9ImJsb2NrIj48L2Rp
dj4KKzxkaXYgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOnZlcnRpY2FsLWxyIiBjbGFzcz0i
YmxvY2siPjwvZGl2PgorPGRpdiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6dmVydGljYWwt
cmwiIGNsYXNzPSJibG9jayI+PC9kaXY+Cis8ZGl2IHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9k
ZTpob3Jpem9udGFsLWJ0IiBjbGFzcz0iYmxvY2siPjwvZGl2PgogPGRpdiBjbGFzcz0iYmxvY2si
PjwvZGl2PgogPC9kaXY+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrZmxv
dy9wZXJjZW50YWdlLXBhZGRpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2Jsb2NrZmxvdy9wZXJjZW50YWdlLXBhZGRpbmcuaHRtbAkocmV2aXNpb24gNjkwMTkpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Jsb2NrZmxvdy9wZXJjZW50YWdlLXBhZGRpbmcuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEsNyArMTEsNyBAQAogPC9zdHlsZT4KIDwvaGVhZD4KIDxib2R5PgotPGRp
diBzdHlsZT0id2lkdGg6MTAwcHg7aGVpZ2h0OjIwMHB4OyAtd2Via2l0LWJsb2NrLWZsb3c6bHI7
Ij4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB4O2hlaWdodDoyMDBweDsgLXdlYmtpdC13cml0aW5n
LW1vZGU6dmVydGljYWwtbHIiPgogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImJsb2NrIj48L2Rpdj4K
IDwvZGl2PgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Jsb2NrZmxvdy9yZWxhdGl2ZS1wb3NpdGlvbmluZy1wZXJjZW50YWdlcy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYmxvY2tmbG93L3JlbGF0aXZlLXBvc2l0aW9uaW5nLXBl
cmNlbnRhZ2VzLmh0bWwJKHJldmlzaW9uIDY5MDE5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ibG9j
a2Zsb3cvcmVsYXRpdmUtcG9zaXRpb25pbmctcGVyY2VudGFnZXMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSw3ICsxLDcgQEAKIDxodG1sPgogPGhlYWQ+CiA8c3R5bGU+Ci0ubHIgeyAtd2Via2l0
LWJsb2NrLWZsb3c6IGxyOyBibG9jay1mbG93OiBscjsgYmFja2dyb3VuZC1jb2xvcjpncmVlbjsg
d2lkdGg6MTAwcHg7IGhlaWdodDoxMDBweDsgcG9zaXRpb246cmVsYXRpdmU7IHRvcDo1MCU7IH0K
Ky5sciB7IC13ZWJraXQtd3JpdGluZy1tb2RlOnZlcnRpY2FsLWxyOyBiYWNrZ3JvdW5kLWNvbG9y
OmdyZWVuOyB3aWR0aDoxMDBweDsgaGVpZ2h0OjEwMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9w
OjUwJTsgfQogPC9zdHlsZT4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ibG9ja2Zsb3cvcm9vdC1sci1iYXNpYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvYmxvY2tmbG93L3Jvb3QtbHItYmFzaWMuaHRtbAkocmV2aXNpb24gNjkwMTkpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Jsb2NrZmxvdy9yb290LWxyLWJhc2ljLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMiArMSwyIEBACiA8IWRvY3R5cGUgaHRtbD4KLTxodG1sIHN0eWxlPSJvdmVyZmxv
dzpoaWRkZW47IC13ZWJraXQtYmxvY2stZmxvdzpscjsgLXdlYmtpdC1sb2dpY2FsLWhlaWdodDox
MDBweDsgYm9yZGVyOjJweCBzb2xpZCBibGFjayI+PC9odG1sPgorPGh0bWwgc3R5bGU9Im92ZXJm
bG93OmhpZGRlbjsgLXdlYmtpdC13cml0aW5nLW1vZGU6dmVydGljYWwtbHI7IC13ZWJraXQtbG9n
aWNhbC1oZWlnaHQ6MTAwcHg7IGJvcmRlcjoycHggc29saWQgYmxhY2siPjwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvYmxvY2tmbG93L3NlbGYtY29sbGFwc2luZy1ibG9jay5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYmxvY2tmbG93L3NlbGYtY29sbGFwc2luZy1i
bG9jay5odG1sCShyZXZpc2lvbiA2OTE0MSkKKysrIExheW91dFRlc3RzL2Zhc3QvYmxvY2tmbG93
L3NlbGYtY29sbGFwc2luZy1ibG9jay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogPCFkb2N0eXBlIGh0bWw+CiA8aHRtbD4KLTxib2R5IHN0eWxlPSItd2Via2l0LXdyaXRpbmct
bW9kZTp0Yi1scjsgd3JpdGluZy1tb2RlOnRiLWxyIj4KKzxib2R5IHN0eWxlPSItd2Via2l0LXdy
aXRpbmctbW9kZTp2ZXJ0aWNhbC1sciI+CiA8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBweDtiYWNrZ3Jv
dW5kLWNvbG9yOmdyZWVuIj48L2Rpdj4KIDxkaXYgc3R5bGU9ImhlaWdodDoxMDBweDttYXJnaW4t
bGVmdDoxMDBweDttYXJnaW4tcmlnaHQ6MTAwcHgiPjwvZGl2PgogPGRpdiBzdHlsZT0id2lkdGg6
MTAwcHg7YmFja2dyb3VuZC1jb2xvcjpncmVlbiI+PC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9sb2dpY2FsLXByb3BlcnR5LXJlc29sdXRpb24uaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9sb2dpY2FsLXByb3BlcnR5LXJlc29sdXRpb24uaHRtbAkocmV2
aXNpb24gNjkwMTkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9sb2dpY2FsLXByb3BlcnR5LXJl
c29sdXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsMTkgKzEwLDE5IEBACiB9CiAKIC50
Yi1ibG9jayB7Ci0gIC13ZWJraXQtYmxvY2stZmxvdzogdGIKKyAgLXdlYmtpdC13cml0aW5nLW1v
ZGU6IGhvcml6b250YWwtdGI7CiB9CiAKIC5idC1ibG9jayB7Ci0gIC13ZWJraXQtYmxvY2stZmxv
dzogYnQKKyAgLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQKIH0KIAogLmxyLWJs
b2NrIHsKLSAgLXdlYmtpdC1ibG9jay1mbG93OiBscgorICAtd2Via2l0LXdyaXRpbmctbW9kZTog
dmVydGljYWwtbHIKIH0KIAogLnJsLWJsb2NrIHsKLSAgLXdlYmtpdC1ibG9jay1mbG93OiBybAor
ICAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmwKIH0KIAogLnRlc3QgewpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0
ZWQtc3R5bGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNjkwMTkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3Mv
Z2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEwOCw3ICsxMDgsNiBAQCB6b29tOiAxOwogLXdlYmtpdC1iYWNrZ3JvdW5kLWNvbXBv
c2l0ZTogc291cmNlLW92ZXI7CiAtd2Via2l0LWJhY2tncm91bmQtb3JpZ2luOiBwYWRkaW5nLWJv
eDsKIC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiBhdXRvIGF1dG87Ci0td2Via2l0LWJsb2NrLWZs
b3c6IHRiOwogLXdlYmtpdC1ib3JkZXItZml0OiBib3JkZXI7CiAtd2Via2l0LWJvcmRlci1ob3Jp
em9udGFsLXNwYWNpbmc6IDBweDsKIC13ZWJraXQtYm9yZGVyLWltYWdlOiBub25lOwpAQCAtMTc0
LDYgKzE3Myw3IEBAIHpvb206IDE7CiAtd2Via2l0LXVzZXItZHJhZzogYXV0bzsKIC13ZWJraXQt
dXNlci1tb2RpZnk6IHJlYWQtb25seTsKIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7Cistd2Vi
a2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC10YjsKIGNsaXAtcGF0aDogbm9uZTsKIGNsaXAt
cnVsZTogbm9uemVybzsKIG1hc2s6IG5vbmU7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13aXRob3V0LXJlbmRl
cmVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13aXRob3V0LXJlbmRlcmVy
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjkwMTkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13aXRob3V0LXJlbmRl
cmVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw2IEBAIENvbXB1
dGVkIHN0eWxlIG9mIGFuIGVsZW1lbnQgd2hvc2UgcGFyZW4KICAgICAtd2Via2l0LWJhY2tncm91
bmQtY29tcG9zaXRlOiBzb3VyY2Utb3ZlcgogICAgIC13ZWJraXQtYmFja2dyb3VuZC1vcmlnaW46
IHBhZGRpbmctYm94CiAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IGF1dG8gYXV0bwotICAg
IC13ZWJraXQtYmxvY2stZmxvdzogdGIKICAgICAtd2Via2l0LWJvcmRlci1maXQ6IGJvcmRlcgog
ICAgIC13ZWJraXQtYm9yZGVyLWhvcml6b250YWwtc3BhY2luZzogMHB4CiAgICAgLXdlYmtpdC1i
b3JkZXItaW1hZ2U6IG5vbmUKQEAgLTE3Myw2ICsxNzIsNyBAQCBDb21wdXRlZCBzdHlsZSBvZiBh
biBlbGVtZW50IHdob3NlIHBhcmVuCiAgICAgLXdlYmtpdC11c2VyLWRyYWc6IGF1dG8KICAgICAt
d2Via2l0LXVzZXItbW9kaWZ5OiByZWFkLW9ubHkKICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiB0
ZXh0CisgICAgLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtdGIKICAgICBjbGlwLXBh
dGg6IG5vbmUKICAgICBjbGlwLXJ1bGU6IG5vbnplcm8KICAgICBtYXNrOiBub25lCg==
</data>
<flag name="review"
          id="59740"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>