<?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>160405</bug_id>
          
          <creation_ts>2016-08-01 08:28:24 -0700</creation_ts>
          <short_desc>[Mac][iOS] Adopt MediaRemote &quot;seek to playback position&quot;</short_desc>
          <delta_ts>2016-08-11 09:36:38 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1216118</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-01 08:28:24 -0700</bug_when>
    <thetext>Adopt MediaRemote &quot;seek to playback position&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216119</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-01 08:30:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/27547583&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216139</commentid>
    <comment_count>2</comment_count>
      <attachid>285019</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-01 10:23:10 -0700</bug_when>
    <thetext>Created attachment 285019
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216140</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-01 10:29:17 -0700</bug_when>
    <thetext>Attachment 285019 did not pass style-queue:


ERROR: Source/WebCore/platform/ios/RemoteCommandListenerIOS.mm:115:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/audio/PlatformMediaSession.h:134:  The parameter name &quot;argument&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 21 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>1216185</commentid>
    <comment_count>4</comment_count>
      <attachid>285019</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-08-01 11:46:19 -0700</bug_when>
    <thetext>Comment on attachment 285019
Proposed patch.

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

&gt; Source/WebCore/platform/mac/RemoteCommandListenerMac.mm:129
&gt; +            CFNumberRef positionRef = static_cast&lt;CFNumberRef&gt;(CFDictionaryGetValue(options, kMRMediaRemoteOptionPlaybackPosition));
&gt; +            if (positionRef)
&gt; +                CFNumberGetValue(positionRef, kCFNumberDoubleType, &amp;argument.asDouble);
&gt; +            platformCommand = PlatformMediaSession::SeekToPlaybackPositionCommand;

Does this mean that if you can&apos;t get the playback position, you&apos;ll seek to the start?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216195</commentid>
    <comment_count>5</comment_count>
      <attachid>285019</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-01 12:03:00 -0700</bug_when>
    <thetext>Comment on attachment 285019
Proposed patch.

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

&gt;&gt; Source/WebCore/platform/mac/RemoteCommandListenerMac.mm:129
&gt;&gt; +            platformCommand = PlatformMediaSession::SeekToPlaybackPositionCommand;
&gt; 
&gt; Does this mean that if you can&apos;t get the playback position, you&apos;ll seek to the start?

Good point, I will fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216196</commentid>
    <comment_count>6</comment_count>
      <attachid>285024</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-01 12:03:25 -0700</bug_when>
    <thetext>Created attachment 285024
Updated patch for the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216197</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-01 12:05:14 -0700</bug_when>
    <thetext>Attachment 285024 did not pass style-queue:


ERROR: Source/WebCore/platform/ios/RemoteCommandListenerIOS.mm:118:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/audio/PlatformMediaSession.h:134:  The parameter name &quot;argument&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 21 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>1216227</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-01 12:51:29 -0700</bug_when>
    <thetext>Committed r203982: http://trac.webkit.org/changeset/203982</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216947</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-03 09:35:54 -0700</bug_when>
    <thetext>Plus r204082 to fix a problem on iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219324</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-11 09:36:38 -0700</bug_when>
    <thetext>And r204375 to update MediaRemoteSPI.h</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285019</attachid>
            <date>2016-08-01 10:23:10 -0700</date>
            <delta_ts>2016-08-01 12:03:25 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>seek_to_time_patch_1.txt</filename>
            <type>text/plain</type>
            <size>31919</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzk3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBACisyMDE2LTA4LTAxICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdW2lPU10gQWRv
cHQgTWVkaWFSZW1vdGUgInNlZWsgdG8gcGxheWJhY2sgcG9zaXRpb24iCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0MDUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzI3NTQ3NTgzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3Q6IG1lZGlhL3JlbW90ZS1jb250cm9sLWNvbW1hbmQtc2Vlay5odG1s
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oOiBVcGRhdGUgZm9y
IGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCBhcmd1bWVudCBjaGFuZ2UuCisKKyAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKTogU3VwcG9ydCBTZWVr
VG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZC4KKyAgICAgICAgRHJpdmUgYnkgZml4LCBzdXBwb3J0
IFN0b3AgY29tbWFuZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN1cHBv
cnRzU2Vla2luZyk6IE5ldy4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKwor
ICAgICAgICAqIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50OjpkaWRSZWNlaXZlUmVtb3RlQ29udHJv
bENvbW1hbmQpOiBBZGQgY29tbWFuZCBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUNvbW1hbmRMaXN0ZW5lckNsaWVudDo6c3VwcG9ydHNTZWVraW5nKTogTmV3LgorICAgICAgICAo
V2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjp1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcyk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjbGllbnQp
OiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpkaWRSZWNlaXZl
UmVtb3RlQ29udHJvbENvbW1hbmQpOiBBZGQgY29tbWFuZCBhcmd1bWVudC4KKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpzdXBwb3J0c1NlZWtpbmcpOiBOZXcsIHBhc3Mg
dGhyb3VnaCB0byBjbGllbnQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRp
YVNlc3Npb24uaDoKKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNldEN1cnJlbnRTZXNzaW9uKTogVGVsbCByZW1vdGUgY29tbWFuZCBsaXN0ZW5lciB0
bworICAgICAgICB1cGRhdGUgc3VwcG9ydGVkIGNvbW1hbmRzLgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbik6IE1ha2UgY29uc3Qu
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmRpZFJlY2Vp
dmVSZW1vdGVDb250cm9sQ29tbWFuZCk6IEFkZCBjb21tYW5kIGFyZ3VtZW50LgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzdXBwb3J0c1NlZWtpbmcpOiBO
ZXcsIHBhc3MgdGhyb3VnaCB0byBzZXNzaW9uLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Jl
bW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFu
ZExpc3RlbmVySU9TOjpjcmVhdGVXZWFrUHRyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUmVt
b3RlQ29tbWFuZExpc3RlbmVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFu
ZExpc3RlbmVySU9TOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MpOiBTdXBwb3J0IGNoYW5nZVBs
YXliYWNrUG9zaXRpb25Db21tYW5kLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExp
c3RlbmVySU9TOjp+UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TKTogUmVtb3ZlIHNlZWtUb1RpbWUg
dGFyZ2V0LgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjp1cGRh
dGVTdXBwb3J0ZWRDb21tYW5kcyk6IFVwZGF0ZSBjaGFuZ2VQbGF5YmFja1Bvc2l0aW9uQ29tbWFu
ZC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5oOgorCisgICAgICAgICog
cGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OnVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKTogTmV3LCBz
cGxpdCBvdXQgb2YgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21tYW5k
TGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYyk6IFNwbGl0IHNldHVwIGxvZ2lj
IG91dCBpbnRvCisgICAgICAgIHVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzLiBTdXBwb3J0IE1STWVk
aWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlvbi4gRG9uJ3QgYXNzZXJ0IHdoZW4K
KyAgICAgICAgcmVjZWl2aW5nIGFuIHVuc3VwcG9ydGVkIGNvbW1hbmQsIGl0IGhhcHBlbnMuIFJl
dHVybiBlcnJvciB3aGVuIGEgY29tbWFuZCBpc24ndCBzdXBwb3J0ZWQgb3IKKyAgICAgICAgZmFp
bHMuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnBvc3RSZW1vdGVDb250cm9sQ29tbWFuZCk6IEFkZCBjb21tYW5kIGFyZ3Vt
ZW50IHBhcmFtZXRlci4gU3VwcG9ydAorICAgICAgICBzZWVrdG9wbGF5YmFja3Bvc2l0aW9uLgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuaWRsOgorCiAyMDE2LTA4LTAxICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4K
IAogICAgICAgICBJbnRyb2R1Y2UgYSBSZW5kZXJNYXRoTUxGZW5jZWRPcGVyYXRvciBjbGFzcwpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5o
CShyZXZpc2lvbiAyMDM5MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsNyArMzE0LDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSBvdmVycmlkZTsK
ICAgICB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUmVjZWl2
ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNl
c3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBk
aWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bW1hbmRBcmd1bWVudCopIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHNob3VsZE92ZXJyaWRl
QmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVy
cnVwdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBF
dmVudFRhcmdldApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMDM5MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODM2LDcgKzY4MzYsNyBAQCBTdHJpbmcgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFTZXNzaW9uVGl0CiAgICAgcmV0dXJuIG1fY3VycmVudFNyYzsKIH0K
IAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQo
UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQor
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxh
dGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kLCBjb25z
dCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50KiBhcmd1bWVudCkK
IHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpkaWRSZWNlaXZlUmVtb3RlQ29u
dHJvbENvbW1hbmQoJXApIC0gJWkiLCB0aGlzLCBzdGF0aWNfY2FzdDxpbnQ+KGNvbW1hbmQpKTsK
IApAQCAtNjg0NSw2ICs2ODQ1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZWNlaXZl
UmVtb3RlQwogICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kOgogICAg
ICAgICBwbGF5KCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Np
b246OlN0b3BDb21tYW5kOgogICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OlBhdXNlQ29t
bWFuZDoKICAgICAgICAgcGF1c2UoKTsKICAgICAgICAgYnJlYWs7CkBAIC02ODYxLDExICs2ODYy
LDIxIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjZWl2ZVJlbW90ZUMKICAgICBjYXNl
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQ6CiAgICAgICAg
IGVuZFNjYW5uaW5nKCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1NZWRpYVNl
c3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kOgorICAgICAgICBBU1NFUlQoYXJn
dW1lbnQpOworICAgICAgICBpZiAoYXJndW1lbnQpCisgICAgICAgICAgICBmYXN0U2Vlayhhcmd1
bWVudC0+YXNEb3VibGUpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICB7
IH0gLy8gRG8gbm90aGluZwogICAgIH0KIH0KIAorYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpzdXBw
b3J0c1NlZWtpbmcoKSBjb25zdCAKK3sKKyAgICByZXR1cm4gIWlzTGl2ZVN0cmVhbSgpOworfQor
CiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNr
UmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUgdHlwZSkg
Y29uc3QKIHsKICAgICBpZiAodHlwZSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdC
YWNrZ3JvdW5kKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAko
cmV2aXNpb24gMjAzOTA2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxNiw3ICs2MTYsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICBib29sIG1lZGlhUGxheWVyU2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwotICAg
IHZvaWQgbWVkaWFQbGF5ZXJIYW5kbGVQbGF5YmFja0NvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKSBvdmVycmlkZSB7IGRpZFJlY2Vp
dmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsgfQorICAgIHZvaWQgbWVkaWFQbGF5ZXJI
YW5kbGVQbGF5YmFja0NvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xD
b21tYW5kVHlwZSBjb21tYW5kKSBvdmVycmlkZSB7IGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29t
bWFuZChjb21tYW5kLCBudWxscHRyKTsgfQogICAgIFN0cmluZyBtZWRpYVBsYXllclNvdXJjZUFw
cGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+
IG1lZGlhUGxheWVyUHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpY3MoKSBjb25zdCBvdmVycmlk
ZTsKIApAQCAtNzU3LDcgKzc1Nyw4IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1lZGlhU2Vzc2lv
bkR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZHVyYXRpb24oKTsgfQogICAgIGRv
dWJsZSBtZWRpYVNlc3Npb25DdXJyZW50VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGN1
cnJlbnRUaW1lKCk7IH0KICAgICBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVt
b3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21t
YW5kVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1h
bmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3Qg
UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCopIG92ZXJyaWRlOwor
ICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91
bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHNob3VsZE92
ZXJyaWRlQmFja2dyb3VuZExvYWRpbmdSZXN0cmljdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIu
aAkocmV2aXNpb24gMjAzOTA2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29t
bWFuZExpc3RlbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDggQEAgY2xhc3MgUmVt
b3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQoKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpS
ZW1vdGVDb21tYW5kQXJndW1lbnQqKSA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vl
a2luZygpIGNvbnN0ID0gMDsKIH07CiAKIGNsYXNzIFJlbW90ZUNvbW1hbmRMaXN0ZW5lciB7CkBA
IC00Myw2ICs0NCwxMCBAQCBwdWJsaWM6CiAgICAgUmVtb3RlQ29tbWFuZExpc3RlbmVyKFJlbW90
ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KSA6IG1fY2xpZW50KGNsaWVudCkgeyB9CiAg
ICAgdmlydHVhbCB+UmVtb3RlQ29tbWFuZExpc3RlbmVyKCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKSA9IDA7CisKKyAgICBSZW1vdGVDb21tYW5kTGlz
dGVuZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisKIHByb3Rl
Y3RlZDoKICAgICBSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIG1fY2xpZW50OwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1l
ZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDIwMzkwNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQy
LDkgKzI0MiwxNCBAQCBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjYW5SZWNlaXZlUmVtCiAg
ICAgcmV0dXJuIG1fY2xpZW50LmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKTsKIH0K
IAotdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21t
YW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQordm9pZCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21t
YW5kVHlwZSBjb21tYW5kLCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFu
ZEFyZ3VtZW50KiBhcmd1bWVudCkKIHsKLSAgICBtX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29u
dHJvbENvbW1hbmQoY29tbWFuZCk7CisgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlbW90ZUNvbnRy
b2xDb21tYW5kKGNvbW1hbmQsIGFyZ3VtZW50KTsKK30KKworYm9vbCBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6c3VwcG9ydHNTZWVraW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQuc3Vw
cG9ydHNTZWVraW5nKCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OnZpc2liaWxp
dHlDaGFuZ2VkKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3Jt
TWVkaWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAkocmV2aXNpb24gMjAzOTA2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMTE0LDYgKzExNCwxMCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkg
Y29uc3Q7CiAjZW5kaWYKIAorICAgIHR5cGVkZWYgdW5pb24geworICAgICAgICBkb3VibGUgYXNE
b3VibGU7CisgICAgfSBSZW1vdGVDb21tYW5kQXJndW1lbnQ7CisKICAgICBlbnVtIFJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSB7CiAgICAgICAgIE5vQ29tbWFuZCwKICAgICAgICAgUGxheUNvbW1h
bmQsCkBAIC0xMjQsOSArMTI4LDExIEBAIHB1YmxpYzoKICAgICAgICAgRW5kU2Vla2luZ0JhY2t3
YXJkQ29tbWFuZCwKICAgICAgICAgQmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsCiAgICAgICAg
IEVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZCwKKyAgICAgICAgU2Vla1RvUGxheWJhY2tQb3NpdGlv
bkNvbW1hbmQsCiAgICAgfTsKICAgICBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFu
ZHMoKSBjb25zdDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1v
dGVDb250cm9sQ29tbWFuZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xD
b21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUmVtb3RlQ29tbWFuZEFyZ3Vt
ZW50KiBhcmd1bWVudCA9IG51bGxwdHIpOworICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29u
c3Q7CiAKICAgICBlbnVtIERpc3BsYXlUeXBlIHsKICAgICAgICAgTm9ybWFsLApAQCAtMjAyLDcg
KzIwOCw4IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBjYW5SZWNl
aXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbnRyb2xDb21tYW5kVHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVt
b3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21t
YW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVu
dCopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29uc3QgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZEJ1ZmZlckRhdGEoYm9vbCkgeyB9CiAgICAgdmly
dHVhbCBib29sIGVsZW1lbnRJc0hpZGRlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDIwMzkwNikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2NiwxMSArMjY2LDEzIEBAIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpzZXRDdXIKIAogICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGluZGV4KTsKICAgICBt
X3Nlc3Npb25zLmluc2VydCgwLCAmc2Vzc2lvbik7CisgICAgaWYgKG1fcmVtb3RlQ29tbWFuZExp
c3RlbmVyKQorICAgICAgICBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lci0+dXBkYXRlU3VwcG9ydGVk
Q29tbWFuZHMoKTsKICAgICAKICAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNldEN1cnJlbnRTZXNzaW9uIC0gc2Vzc2lvbiBtb3ZlZCBmcm9tIGluZGV4ICV6dSB0
byAwIiwgaW5kZXgpOwogfQogICAgIAotUGxhdGZvcm1NZWRpYVNlc3Npb24qIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKQorUGxhdGZvcm1NZWRpYVNlc3Npb24q
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKSBjb25zdAogewog
ICAgIGlmICghbV9zZXNzaW9ucy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
MzQ0LDEyICszNDYsMjAgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0
ZQogfQogI2VuZGlmCiAKLXZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpkaWRSZWNl
aXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRy
b2xDb21tYW5kVHlwZSBjb21tYW5kKQordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQsIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb21tYW5kQXJndW1lbnQqIGFyZ3VtZW50KQogewogICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uKiBhY3RpdmVTZXNzaW9uID0gY3VycmVudFNlc3Npb24oKTsKICAgICBpZiAoIWFjdGl2
ZVNlc3Npb24gfHwgIWFjdGl2ZVNlc3Npb24tPmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFu
ZHMoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGFjdGl2ZVNlc3Npb24tPmRpZFJlY2VpdmVSZW1v
dGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsKKyAgICBhY3RpdmVTZXNzaW9uLT5kaWRSZWNlaXZl
UmVtb3RlQ29udHJvbENvbW1hbmQoY29tbWFuZCwgYXJndW1lbnQpOworfQorCitib29sIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c3VwcG9ydHNTZWVraW5nKCkgY29uc3QKK3sKKyAgICBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbiogYWN0aXZlU2Vzc2lvbiA9IGN1cnJlbnRTZXNzaW9uKCk7Cisg
ICAgaWYgKCFhY3RpdmVTZXNzaW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IGFjdGl2ZVNlc3Npb24tPnN1cHBvcnRzU2Vla2luZygpOwogfQogCiB2b2lkIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c3lzdGVtV2lsbFNsZWVwKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlci5oCShyZXZpc2lvbiAyMDM5MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyAr
OTAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0Q3VycmVudFNlc3Npb24oUGxh
dGZvcm1NZWRpYVNlc3Npb24mKTsKLSAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogY3VycmVudFNl
c3Npb24oKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogY3VycmVudFNlc3Npb24oKSBjb25z
dDsKIAogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBjdXJyZW50U2Vzc2lvbk1hdGNoaW5nKHN0
ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpPik7CiAKQEAgLTEx
Miw3ICsxMTIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU2Vzc2lvblN0YXRlKCk7CiAK
ICAgICAvLyBSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29tbWFuZEFyZ3VtZW50Kikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
dXBwb3J0c1NlZWtpbmcoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEF1ZGlvSGFyZHdhcmVM
aXN0ZW5lckNsaWVudAogICAgIHZvaWQgYXVkaW9IYXJkd2FyZURpZEJlY29tZUFjdGl2ZSgpIG92
ZXJyaWRlIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1h
bmRMaXN0ZW5lcklPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MuaAkocmV2aXNpb24gMjAzOTA2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NiwxMyArNDYsMTUgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgV2Vh
a1B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBt
X3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQotICAgIAorICAgIHZvaWQgdXBkYXRl
U3VwcG9ydGVkQ29tbWFuZHMoKSBvdmVycmlkZTsKKwogICAgIFdlYWtQdHJGYWN0b3J5PFJlbW90
ZUNvbW1hbmRMaXN0ZW5lcklPUz4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBSZXRhaW5QdHI8aWQ+
IG1fcGxheVRhcmdldDsKICAgICBSZXRhaW5QdHI8aWQ+IG1fcGF1c2VUYXJnZXQ7CiAgICAgUmV0
YWluUHRyPGlkPiBtX3RvZ2dsZVBsYXlQYXVzZVRhcmdldDsKICAgICBSZXRhaW5QdHI8aWQ+IG1f
c2Vla0ZvcndhcmRUYXJnZXQ7CiAgICAgUmV0YWluUHRyPGlkPiBtX3NlZWtCYWNrd2FyZFRhcmdl
dDsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fc2Vla1RvVGltZVRhcmdldDsKIH07CiAKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRM
aXN0ZW5lcklPUy5tbQkocmV2aXNpb24gMjAzOTA2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYs
NiArMzYsNyBAQAogU09GVF9MSU5LX0ZSQU1FV09SSyhNZWRpYVBsYXllcikKIFNPRlRfTElOS19D
TEFTUyhNZWRpYVBsYXllciwgTVBSZW1vdGVDb21tYW5kQ2VudGVyKQogU09GVF9MSU5LX0NMQVNT
KE1lZGlhUGxheWVyLCBNUFNlZWtDb21tYW5kRXZlbnQpCitTT0ZUX0xJTktfQ0xBU1MoTWVkaWFQ
bGF5ZXIsIE1QQ2hhbmdlUGxheWJhY2tQb3NpdGlvbkNvbW1hbmRFdmVudCkKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC01NSw3ICs1Niw3IEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6
UmVtb3RlQ29tbWFuZEwKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXNdIHsKICAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5kKTsKKyAgICAgICAgICAgIHdlYWtUaGlz
LT5tX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNl
c3Npb246OlBhdXNlQ29tbWFuZCwgbnVsbHB0cik7CiAgICAgICAgIH0pOwogCiAgICAgICAgIHJl
dHVybiBNUFJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzU3VjY2VzczsKQEAgLTY1LDcgKzY2LDcg
QEAgUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjpSZW1vdGVDb21tYW5kTAogICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt3ZWFrVGhpc10gewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGllbnQuZGlk
UmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29t
bWFuZCk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGllbnQuZGlkUmVjZWl2ZVJlbW90ZUNv
bnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCwgbnVsbHB0cik7
CiAgICAgICAgIH0pOwogCiAgICAgICAgIHJldHVybiBNUFJlbW90ZUNvbW1hbmRIYW5kbGVyU3Rh
dHVzU3VjY2VzczsKQEAgLTc1LDcgKzc2LDcgQEAgUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjpS
ZW1vdGVDb21tYW5kTAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpc10gewogICAg
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB3ZWFrVGhpcy0+bV9jbGllbnQuZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kKTsKKyAgICAgICAgICAg
IHdlYWtUaGlzLT5tX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZv
cm1NZWRpYVNlc3Npb246OlRvZ2dsZVBsYXlQYXVzZUNvbW1hbmQsIG51bGxwdHIpOwogICAgICAg
ICB9KTsKIAogICAgICAgICByZXR1cm4gTVBSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nl
c3M7CkBAIC05MCw3ICs5MSw3IEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6UmVtb3RlQ29t
bWFuZEwKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMsIGNvbW1hbmRdIHsKICAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChj
b21tYW5kKTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2NsaWVudC5kaWRSZWNlaXZlUmVtb3Rl
Q29udHJvbENvbW1hbmQoY29tbWFuZCwgbnVsbHB0cik7CiAgICAgICAgIH0pOwogCiAgICAgICAg
IHJldHVybiBNUFJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzU3VjY2VzczsKQEAgLTEwNSwxMSAr
MTA2LDMwIEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6UmVtb3RlQ29tbWFuZEwKICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMsIGNvbW1hbmRdIHsKICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgd2Vha1Ro
aXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsKKyAg
ICAgICAgICAgIHdlYWtUaGlzLT5tX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1h
bmQoY29tbWFuZCwgbnVsbHB0cik7CiAgICAgICAgIH0pOwogCiAgICAgICAgIHJldHVybiBNUFJl
bW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzU3VjY2VzczsKICAgICB9XTsKKworICAgIG1fc2Vla1Rv
VGltZVRhcmdldCA9IFtbY2VudGVyIGNoYW5nZVBsYXliYWNrUG9zaXRpb25Db21tYW5kXSBhZGRU
YXJnZXRXaXRoSGFuZGxlcjpeKE1QUmVtb3RlQ29tbWFuZEV2ZW50ICpldmVudCkgeworICAgICAg
ICBBU1NFUlQoW2V2ZW50IGlzS2luZE9mQ2xhc3M6Z2V0TVBDaGFuZ2VQbGF5YmFja1Bvc2l0aW9u
Q29tbWFuZEV2ZW50Q2xhc3MoKV0pOworCisgICAgICAgIGlmICghY2xpZW50LnN1cHBvcnRzU2Vl
a2luZygpKQorICAgICAgICAgICAgcmV0dXJuIE1QUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXND
b21tYW5kRmFpbGVkOworCisgICAgICAgIE1QQ2hhbmdlUGxheWJhY2tQb3NpdGlvbkNvbW1hbmRF
dmVudCogc2Vla0V2ZW50ID0gc3RhdGljX2Nhc3Q8TVBDaGFuZ2VQbGF5YmFja1Bvc2l0aW9uQ29t
bWFuZEV2ZW50ICo+KGV2ZW50KTsKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbW1hbmRBcmd1bWVudCBhcmd1bWVudCB7IFtzZWVrRXZlbnQgcG9zaXRpb25UaW1lXSB9Owor
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzLCBhcmd1bWVudF0geworICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB3ZWFrVGhpcy0+bV9jbGllbnQuZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kLCAmYXJndW1lbnQpOworICAg
ICAgICB9KTsKKworICAgICAgICByZXR1cm4gTVBSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1
Y2Nlc3M7CisgICAgfV07CisKIH0KIAogUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjp+UmVtb3Rl
Q29tbWFuZExpc3RlbmVySU9TKCkKQEAgLTEyMCw2ICsxNDAsMTIgQEAgUmVtb3RlQ29tbWFuZExp
c3RlbmVySU9TOjp+UmVtb3RlQ29tbWFuZAogICAgIFtbY2VudGVyIHRvZ2dsZVBsYXlQYXVzZUNv
bW1hbmRdIHJlbW92ZVRhcmdldDptX3RvZ2dsZVBsYXlQYXVzZVRhcmdldC5nZXQoKV07CiAgICAg
W1tjZW50ZXIgc2Vla0ZvcndhcmRDb21tYW5kXSByZW1vdmVUYXJnZXQ6bV9zZWVrRm9yd2FyZFRh
cmdldC5nZXQoKV07CiAgICAgW1tjZW50ZXIgc2Vla0JhY2t3YXJkQ29tbWFuZF0gcmVtb3ZlVGFy
Z2V0Om1fc2Vla0JhY2t3YXJkVGFyZ2V0LmdldCgpXTsKKyAgICBbW2NlbnRlciBjaGFuZ2VQbGF5
YmFja1Bvc2l0aW9uQ29tbWFuZF0gcmVtb3ZlVGFyZ2V0Om1fc2Vla1RvVGltZVRhcmdldC5nZXQo
KV07Cit9CisKK3ZvaWQgUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjp1cGRhdGVTdXBwb3J0ZWRD
b21tYW5kcygpCit7CisgICAgW1tbZ2V0TVBSZW1vdGVDb21tYW5kQ2VudGVyQ2xhc3MoKSBzaGFy
ZWRDb21tYW5kQ2VudGVyXSBjaGFuZ2VQbGF5YmFja1Bvc2l0aW9uQ29tbWFuZF0gc2V0RW5hYmxl
ZDohIWNsaWVudCgpLnN1cHBvcnRzU2Vla2luZygpXTsKIH0KIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmNwcAkocmV2
aXNpb24gMjAzOTA2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlhUmVtb3Rl
U29mdExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw1ICs0Niw2IEBAIFNPRlRfTElOS19D
T05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE0KIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRHVy
YXRpb24sIENGU3RyaW5nUmVmKTsKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNv
cmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUs
IENGU3RyaW5nUmVmKTsKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIE1l
ZGlhUmVtb3RlLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvUGxheWJhY2tSYXRlLCBDRlN0
cmluZ1JlZik7CitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJl
bW90ZSwga01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bvc2l0aW9uLCBDRlN0cmluZ1JlZik7
CiAKICNlbmRpZiAvLyBVU0UoTUVESUFSRU1PVEUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmgJKHJldmlzaW9uIDIwMzkwNikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYxLDUgKzYxLDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFE
RVIoV2ViQ29yZSwgTQogI2RlZmluZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNl
ZFRpbWUgZ2V0X01lZGlhUmVtb3RlX2tNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2Vk
VGltZSgpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90
ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1BsYXliYWNrUmF0ZSwgQ0ZTdHJpbmdSZWYp
OwogI2RlZmluZSBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvUGxheWJhY2tSYXRlIGdldF9N
ZWRpYVJlbW90ZV9rTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvUGxheWJhY2tSYXRlKCkKK1NP
RlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhUmVtb3RlLCBrTVJNZWRp
YVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24sIENGU3RyaW5nUmVmKTsKKyNkZWZpbmUga01S
TWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bvc2l0aW9uIGdldF9NZWRpYVJlbW90ZV9rTVJNZWRp
YVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24oKQogCiAjZW5kaWYgLy8gVVNFKE1FRElBUkVN
T1RFKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1v
dGVDb21tYW5kTGlzdGVuZXJNYWMuaAkocmV2aXNpb24gMjAzOTA2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBXZWFrUHRyPFJlbW90
ZUNvbW1hbmRMaXN0ZW5lck1hYz4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZh
Y3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9CiAKKyAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZENvbW1h
bmRzKCkgb3ZlcnJpZGU7CisKICAgICBXZWFrUHRyRmFjdG9yeTxSZW1vdGVDb21tYW5kTGlzdGVu
ZXJNYWM+IG1fd2Vha1B0ckZhY3RvcnkgeyB0aGlzIH07CiAgICAgdm9pZCogbV9jb21tYW5kSGFu
ZGxlciB7IG51bGxwdHIgfTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0JKHJldmlzaW9uIDIwMzkw
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUNvbW1hbmRMaXN0ZW5lcj4gUgogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90
ZUNvbW1hbmRMaXN0ZW5lck1hYz4oY2xpZW50KTsKIH0KIAotUmVtb3RlQ29tbWFuZExpc3RlbmVy
TWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50
JiBjbGllbnQpCi0gICAgOiBSZW1vdGVDb21tYW5kTGlzdGVuZXIoY2xpZW50KQordm9pZCBSZW1v
dGVDb21tYW5kTGlzdGVuZXJNYWM6OnVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCkKIHsKICNpZiBV
U0UoTUVESUFSRU1PVEUpCiAgICAgaWYgKCFpc01lZGlhUmVtb3RlRnJhbWV3b3JrQXZhaWxhYmxl
KCkpCkBAIC02NiwxMyArNjUsMzIgQEAgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjpSZW1vdGVD
b21tYW5kTAogICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoY29tbWFuZEluZm9BcnJheS5nZXQo
KSwgY29tbWFuZEluZm8uZ2V0KCkpOwogICAgIH0KIAorICAgIGF1dG8gc2Vla0NvbW1hbmRJbmZv
ID0gYWRvcHRDRihNUk1lZGlhUmVtb3RlQ29tbWFuZEluZm9DcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCkpOworICAgIE1STWVkaWFSZW1vdGVDb21tYW5kSW5mb1NldENvbW1hbmQoc2Vla0NvbW1h
bmRJbmZvLmdldCgpLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb24p
OworICAgIE1STWVkaWFSZW1vdGVDb21tYW5kSW5mb1NldEVuYWJsZWQoc2Vla0NvbW1hbmRJbmZv
LmdldCgpLCBjbGllbnQoKS5zdXBwb3J0c1NlZWtpbmcoKSk7CisgICAgQ0ZBcnJheUFwcGVuZFZh
bHVlKGNvbW1hbmRJbmZvQXJyYXkuZ2V0KCksIHNlZWtDb21tYW5kSW5mby5nZXQoKSk7CisKICAg
ICBNUk1lZGlhUmVtb3RlU2V0U3VwcG9ydGVkQ29tbWFuZHMoY29tbWFuZEluZm9BcnJheS5nZXQo
KSwgTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCksIG51bGxwdHIsIG51bGxwdHIpOworI2Vu
ZGlmIC8vIFVTRShNRURJQVJFTU9URSkKK30KKworUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjpS
ZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGll
bnQpCisgICAgOiBSZW1vdGVDb21tYW5kTGlzdGVuZXIoY2xpZW50KQoreworI2lmIFVTRShNRURJ
QVJFTU9URSkKKyAgICBpZiAoIWlzTWVkaWFSZW1vdGVGcmFtZXdvcmtBdmFpbGFibGUoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKTsKIAogICAgIGF1
dG8gd2Vha1RoaXMgPSBjcmVhdGVXZWFrUHRyKCk7CiAgICAgbV9jb21tYW5kSGFuZGxlciA9IE1S
TWVkaWFSZW1vdGVBZGRBc3luY0NvbW1hbmRIYW5kbGVyQmxvY2soXihNUk1lZGlhUmVtb3RlQ29t
bWFuZCBjb21tYW5kLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucywgdm9pZCheY29tcGxldGlvbiko
Q0ZBcnJheVJlZikpIHsKLSAgICAgICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOworCisgICAgICAg
IExPRyhNZWRpYSwgIlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6UmVtb3RlQ29tbWFuZExpc3Rl
bmVyTWFjIC0gcmVjZWl2ZWQgY29tbWFuZCAldSIsIGNvbW1hbmQpOwogCiAgICAgICAgIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgcGxhdGZvcm1Db21tYW5k
IHsgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vQ29tbWFuZCB9OworICAgICAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50IGFyZ3VtZW50IHsgMCB9OworICAgICAg
ICBNUk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXMgc3RhdHVzID0gTVJNZWRpYVJlbW90
ZUNvbW1hbmRIYW5kbGVyU3RhdHVzU3VjY2VzczsKIAogICAgICAgICBzd2l0Y2ggKGNvbW1hbmQp
IHsKICAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFBsYXk6CkBAIC04MSw2ICs5OSw5
IEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6UmVtb3RlQ29tbWFuZEwKICAgICAgICAgY2Fz
ZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFBhdXNlOgogICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5k
ID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBhdXNlQ29tbWFuZDsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIE1STWVkaWFSZW1vdGVDb21tYW5kU3RvcDoKKyAgICAgICAgICAgIHBs
YXRmb3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdG9wQ29tbWFuZDsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1STWVkaWFSZW1vdGVDb21tYW5kVG9nZ2xlUGxh
eVBhdXNlOgogICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Np
b246OlRvZ2dsZVBsYXlQYXVzZUNvbW1hbmQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTk2LDE0
ICsxMTcsMjggQEAgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTAogICAg
ICAgICBjYXNlIE1STWVkaWFSZW1vdGVDb21tYW5kRW5kUmV3aW5kOgogICAgICAgICAgICAgcGxh
dGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNrd2FyZENv
bW1hbmQ7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29t
bWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb246IHsKKyAgICAgICAgICAgIGlmICghY2xpZW50LnN1
cHBvcnRzU2Vla2luZygpKSB7CisgICAgICAgICAgICAgICAgc3RhdHVzID0gTVJNZWRpYVJlbW90
ZUNvbW1hbmRIYW5kbGVyU3RhdHVzQ29tbWFuZEZhaWxlZDsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ0ZOdW1iZXJSZWYgcG9zaXRpb25SZWYg
PSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUob3B0aW9ucywg
a01STWVkaWFSZW1vdGVPcHRpb25QbGF5YmFja1Bvc2l0aW9uKSk7CisgICAgICAgICAgICBpZiAo
cG9zaXRpb25SZWYpCisgICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShwb3NpdGlvblJl
Ziwga0NGTnVtYmVyRG91YmxlVHlwZSwgJmFyZ3VtZW50LmFzRG91YmxlKTsKKyAgICAgICAgICAg
IHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bv
c2l0aW9uQ29tbWFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIExP
RyhNZWRpYSwgIlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6UmVtb3RlQ29tbWFuZExpc3RlbmVy
TWFjIC0gY29tbWFuZCAldSBub3Qgc3VwcG9ydGVkISIsIGNvbW1hbmQpOworICAgICAgICAgICAg
c3RhdHVzID0gTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzQ29tbWFuZEZhaWxlZDsK
KyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfTsKIAogICAgICAgICBpZiAoIXdlYWtUaGlz
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB3ZWFrVGhpcy0+bV9jbGllbnQuZGlkUmVj
ZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKHBsYXRmb3JtQ29tbWFuZCk7Ci0gICAgICAgIGNvbXBs
ZXRpb24oc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4oQFtAMF0pKTsKKyAgICAgICAgd2Vha1RoaXMt
Pm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChwbGF0Zm9ybUNvbW1hbmQs
ICZhcmd1bWVudCk7CisgICAgICAgIGNvbXBsZXRpb24oc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4o
QFtAKHN0YXR1cyldKSk7CiAgICAgfSk7CiAjZW5kaWYgLy8gVVNFKE1FRElBUkVNT1RFKQogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjAzOTU0KQor
KysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yODgwLDEwICsyODgwLDExIEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRNZWRpYUVsZW1lbnRSZXN0
cmljdGkKICAgICBlbGVtZW50Lm1lZGlhU2Vzc2lvbigpLmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24o
cmVzdHJpY3Rpb25zKTsKIH0KIAotdm9pZCBJbnRlcm5hbHM6OnBvc3RSZW1vdGVDb250cm9sQ29t
bWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmRTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9p
ZCBJbnRlcm5hbHM6OnBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1h
bmRTdHJpbmcsIGZsb2F0IGFyZ3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQ7Ci0gICAg
CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCBwYXJhbWV0
ZXIgeyBhcmd1bWVudCB9OworCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGNvbW1hbmRTdHJpbmcsICJwbGF5IikpCiAgICAgICAgIGNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UGxheUNvbW1hbmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoY29tbWFuZFN0cmluZywgInBhdXNlIikpCkBAIC0yOTAwLDEyICsyOTAxLDE0IEBA
IHZvaWQgSW50ZXJuYWxzOjpwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQKICAgICAgICAgY29tbWFu
ZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZDsKICAg
ICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb21tYW5kU3RyaW5nLCAi
ZW5kc2Vla2luZ2ZvcndhcmQiKSkKICAgICAgICAgY29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQ7CisgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoY29tbWFuZFN0cmluZywgInNlZWt0b3BsYXliYWNrcG9zaXRpb24i
KSkKKyAgICAgICAgY29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFj
a1Bvc2l0aW9uQ29tbWFuZDsKICAgICBlbHNlIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VT
U19FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21t
YW5kKGNvbW1hbmQpOworICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kLCAmcGFyYW1ldGVy
KTsKIH0KIAogYm9vbCBJbnRlcm5hbHM6OmVsZW1lbnRJc0Jsb2NraW5nRGlzcGxheVNsZWVwKEhU
TUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgJKHJldmlzaW9uIDIwMzk1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxMSw3ICs0MTEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckJhY2tncm91bmQoKSBjb25zdDsKICAgICB2b2lkIHNl
dE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgY29uc3Qg
U3RyaW5nJiByZXN0cmljdGlvbnMsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldE1lZGlh
RWxlbWVudFJlc3RyaWN0aW9ucyhIVE1MTWVkaWFFbGVtZW50JiwgY29uc3QgU3RyaW5nJiByZXN0
cmljdGlvbnMpOwotICAgIHZvaWQgcG9zdFJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbnN0IFN0cmlu
ZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChj
b25zdCBTdHJpbmcmLCBmbG9hdCBhcmd1bWVudCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wg
ZWxlbWVudElzQmxvY2tpbmdEaXNwbGF5U2xlZXAoSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0Owog
I2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9u
IDIwMzk1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDA2LDcgKzQwNiw3IEBAIGVudW0gVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbiB7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgc2V0
TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKERPTVN0cmluZyBtZWRpYVR5cGUsIERPTVN0cmluZyBy
ZXN0cmljdGlvbnMpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdm9pZCBzZXRNZWRpYUVsZW1l
bnRSZXN0cmljdGlvbnMoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50LCBET01TdHJpbmcgcmVzdHJp
Y3Rpb25zKTsKICAgICBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSB2b2lkIHNldEF1ZGlvQ29udGV4
dFJlc3RyaWN0aW9ucyhBdWRpb0NvbnRleHQgY29udGV4dCwgRE9NU3RyaW5nIHJlc3RyaWN0aW9u
cyk7Ci0gICAgW0NvbmRpdGlvbmFsPVZJREVPLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgcG9zdFJl
bW90ZUNvbnRyb2xDb21tYW5kKERPTVN0cmluZyBjb21tYW5kKTsKKyAgICBbQ29uZGl0aW9uYWw9
VklERU8sIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoRE9N
U3RyaW5nIGNvbW1hbmQsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBhcmd1bWVudCA9IDAp
OwogICAgIFtDb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRdIHZvaWQgc2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAgICAg
W0NvbmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCwgUmFpc2VzRXhjZXB0aW9uXSB2
b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoRE9NU3RyaW5nIGRldmlj
ZU5hbWUsIERPTVN0cmluZyBkZXZpY2VTdGF0ZSk7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NU
UkVBTV0gdm9pZCBzZXRNb2NrTWVkaWFDYXB0dXJlRGV2aWNlc0VuYWJsZWQoYm9vbGVhbiBlbmFi
bGVkKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzkwNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE2LTA4LTAxICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdW2lPU10gQWRvcHQg
TWVkaWFSZW1vdGUgInNlZWsgdG8gcGxheWJhY2sgcG9zaXRpb24iCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0MDUKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI3NTQ3NTgzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogbWVkaWEvcmVtb3RlLWNvbnRyb2wtY29tbWFuZC1zZWVrLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvcmVtb3RlLWNvbnRyb2wtY29tbWFuZC1zZWVrLmh0
bWw6IEFkZGVkLgorCiAyMDE2LTA3LTI5ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnNraXAgc29tZSBtZWRpYSB0ZXN0cyBvbiBpT1Mgd2hlbiBydW4gaW4g
V2ViS2l0VGVzdFJ1bm5lcgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvcmVtb3RlLWNvbnRyb2wt
Y29tbWFuZC1zZWVrLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRp
YS9yZW1vdGUtY29udHJvbC1jb21tYW5kLXNlZWstZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL21lZGlhL3JlbW90ZS1jb250cm9sLWNvbW1hbmQtc2Vlay1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorVGVzdCB0aGF0IHRoZSAic2Vl
a1RvUGxheWJhY2tQb3NpdGlvbiIgcmVtb3RlIGNvbnRyb2wgY29tbWFuZCB3b3Jrcy4KKworCisq
IHNldCB2aWRlby5zcmMKK0VWRU5UKGxvYWRlZG1ldGFkYXRhKQorCisqIFNlbmQgYSBzZWVrIGNv
bW1hbmQuCitSVU4oaW50ZXJuYWxzLnBvc3RSZW1vdGVDb250cm9sQ29tbWFuZCgnc2Vla1RvUGxh
eWJhY2tQb3NpdGlvbicsIDEuNikpCisKK0VWRU5UKHRpbWV1cGRhdGUpCitFWFBFQ1RFRCAodmlk
ZW8uY3VycmVudFRpbWUudG9GaXhlZCgxKSA9PSAnMS42JykgT0sKKworRU5EIE9GIFRFU1QKKwpJ
bmRleDogTGF5b3V0VGVzdHMvbWVkaWEvcmVtb3RlLWNvbnRyb2wtY29tbWFuZC1zZWVrLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvcmVtb3RlLWNvbnRyb2wtY29tbWFuZC1z
ZWVrLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvcmVtb3RlLWNvbnRy
b2wtY29tbWFuZC1zZWVrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJtZWRpYS1maWxlLmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9InZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0PgorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAg
ICAgICAgICAgIGZhaWxUZXN0KCdUaGlzIHRlc3QgcmVxdWlyZXMgd2luZG93LmludGVybmFscy4n
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICAgICAgICAgIHdhaXRG
b3JFdmVudCgnbG9hZGVkbWV0YWRhdGEnLCBsb2FkZWRtZXRhZGF0YSwgZmFsc2UsIHRydWUsIGRv
Y3VtZW50KQorICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgndGltZXVwZGF0ZScsIHNlZWtl
ZCkKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnKiBzZXQgdmlkZW8uc3JjJyk7Cisg
ICAgICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgndmlkZW8nLCAnY29udGVu
dC90ZXN0Jyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGxvYWRlZG1l
dGFkYXRhKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJzxi
cj4qIFNlbmQgYSBzZWVrIGNvbW1hbmQuJyk7CisgICAgICAgICAgICAgICAgcnVuKCJpbnRlcm5h
bHMucG9zdFJlbW90ZUNvbnRyb2xDb21tYW5kKCdzZWVrVG9QbGF5YmFja1Bvc2l0aW9uJywgMS42
KSIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIHNlZWtlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5jdXJyZW50VGltZS50b0ZpeGVkKDEpJywgMS42KTsK
KyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgICAgIGVuZFRl
c3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisK
KyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8cD5UZXN0IHRoYXQgdGhlICJz
ZWVrVG9QbGF5YmFja1Bvc2l0aW9uIiByZW1vdGUgY29udHJvbCBjb21tYW5kIHdvcmtzLjwvcD4K
KyAgICAgICAgPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="308673"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285024</attachid>
            <date>2016-08-01 12:03:25 -0700</date>
            <delta_ts>2016-08-01 12:03:25 -0700</delta_ts>
            <desc>Updated patch for the bots.</desc>
            <filename>seek_to_time_patch_2.txt</filename>
            <type>text/plain</type>
            <size>32242</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzk3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBACisyMDE2LTA4LTAxICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdW2lPU10gQWRv
cHQgTWVkaWFSZW1vdGUgInNlZWsgdG8gcGxheWJhY2sgcG9zaXRpb24iCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0MDUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzI3NTQ3NTgzPgorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4K
KworICAgICAgICBUZXN0OiBtZWRpYS9yZW1vdGUtY29udHJvbC1jb21tYW5kLXNlZWsuaHRtbAor
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDogVXBkYXRlIGZvciBk
aWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQgYXJndW1lbnQgY2hhbmdlLgorCisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZCk6IFN1cHBvcnQgU2Vla1Rv
UGxheWJhY2tQb3NpdGlvbkNvbW1hbmQuCisgICAgICAgIERyaXZlIGJ5IGZpeCwgc3VwcG9ydCBT
dG9wIGNvbW1hbmQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzdXBwb3J0
c1NlZWtpbmcpOiBOZXcuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xD
b21tYW5kKTogQWRkIGNvbW1hbmQgYXJndW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVD
b21tYW5kTGlzdGVuZXJDbGllbnQ6OnN1cHBvcnRzU2Vla2luZyk6IE5ldy4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y2xpZW50KTog
RGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZGlkUmVjZWl2ZVJl
bW90ZUNvbnRyb2xDb21tYW5kKTogQWRkIGNvbW1hbmQgYXJndW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c3VwcG9ydHNTZWVraW5nKTogTmV3LCBwYXNzIHRo
cm91Z2ggdG8gY2xpZW50LgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpzZXRDdXJyZW50U2Vzc2lvbik6IFRlbGwgcmVtb3RlIGNvbW1hbmQgbGlzdGVuZXIgdG8K
KyAgICAgICAgdXBkYXRlIHN1cHBvcnRlZCBjb21tYW5kcy4KKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24pOiBNYWtlIGNvbnN0Lgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpkaWRSZWNlaXZl
UmVtb3RlQ29udHJvbENvbW1hbmQpOiBBZGQgY29tbWFuZCBhcmd1bWVudC4KKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c3VwcG9ydHNTZWVraW5nKTogTmV3
LCBwYXNzIHRocm91Z2ggdG8gc2Vzc2lvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9SZW1v
dGVDb21tYW5kTGlzdGVuZXJJT1MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRM
aXN0ZW5lcklPUzo6Y3JlYXRlV2Vha1B0cik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRM
aXN0ZW5lcklPUzo6UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TKTogU3VwcG9ydCBjaGFuZ2VQbGF5
YmFja1Bvc2l0aW9uQ29tbWFuZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0
ZW5lcklPUzo6flJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUyk6IFJlbW92ZSBzZWVrVG9UaW1lIHRh
cmdldC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6dXBkYXRl
U3VwcG9ydGVkQ29tbWFuZHMpOiBVcGRhdGUgY2hhbmdlUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExpbmsuaDoKKworICAgICAgICAqIHBs
YXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlQ29tbWFuZExpc3RlbmVyTWFjOjp1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcyk6IE5ldywgc3Bs
aXQgb3V0IG9mIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExp
c3RlbmVyTWFjOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMpOiBTcGxpdCBzZXR1cCBsb2dpYyBv
dXQgaW50bworICAgICAgICB1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcy4gU3VwcG9ydCBNUk1lZGlh
UmVtb3RlQ29tbWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb24uIERvbid0IGFzc2VydCB3aGVuCisg
ICAgICAgIHJlY2VpdmluZyBhbiB1bnN1cHBvcnRlZCBjb21tYW5kLCBpdCBoYXBwZW5zLiBSZXR1
cm4gZXJyb3Igd2hlbiBhIGNvbW1hbmQgaXNuJ3Qgc3VwcG9ydGVkIG9yCisgICAgICAgIGZhaWxz
LgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQpOiBBZGQgY29tbWFuZCBhcmd1bWVu
dCBwYXJhbWV0ZXIuIFN1cHBvcnQKKyAgICAgICAgc2Vla3RvcGxheWJhY2twb3NpdGlvbi4KKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
LmlkbDoKKwogMjAxNi0wOC0wMSAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgSW50cm9kdWNlIGEgUmVuZGVyTWF0aE1MRmVuY2VkT3BlcmF0b3IgY2xhc3MKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAko
cmV2aXNpb24gMjAzOTA2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDcgKzMxNCw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzdXNwZW5kUGxheWJhY2soKSBvdmVycmlkZTsKICAgICBib29sIGNhblJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZGlk
UmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21t
YW5kQXJndW1lbnQqKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHN1cHBvcnRzU2Vla2luZygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBzaG91bGRPdmVycmlkZUJh
Y2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1
cHRpb25UeXBlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gRXZl
bnRUYXJnZXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAko
cmV2aXNpb24gMjAzOTA2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgzNiw3ICs2ODM2LDcgQEAgU3RyaW5nIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhU2Vzc2lvblRpdAogICAgIHJldHVybiBtX2N1cnJlbnRTcmM7CiB9CiAK
LXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCwgY29uc3Qg
UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCogYXJndW1lbnQpCiB7
CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRy
b2xDb21tYW5kKCVwKSAtICVpIiwgdGhpcywgc3RhdGljX2Nhc3Q8aW50Pihjb21tYW5kKSk7CiAK
QEAgLTY4NDUsNiArNjg0NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjZWl2ZVJl
bW90ZUMKICAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZDoKICAgICAg
ICAgcGxheSgpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpTdG9wQ29tbWFuZDoKICAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1h
bmQ6CiAgICAgICAgIHBhdXNlKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtNjg2MSwxMSArNjg2Miwy
MSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2VpdmVSZW1vdGVDCiAgICAgY2FzZSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kOgogICAgICAgICBl
bmRTY2FubmluZygpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZDoKKyAgICAgICAgQVNTRVJUKGFyZ3Vt
ZW50KTsKKyAgICAgICAgaWYgKGFyZ3VtZW50KQorICAgICAgICAgICAgZmFzdFNlZWsoYXJndW1l
bnQtPmFzRG91YmxlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgeyB9
IC8vIERvIG5vdGhpbmcKICAgICB9CiB9CiAKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6c3VwcG9y
dHNTZWVraW5nKCkgY29uc3QgCit7CisgICAgcmV0dXJuICFpc0xpdmVTdHJlYW0oKTsKK30KKwog
Ym9vbCBIVE1MTWVkaWFFbGVtZW50OjpzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jl
c3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlIHR5cGUpIGNv
bnN0CiB7CiAgICAgaWYgKHR5cGUgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkVudGVyaW5nQmFj
a2dyb3VuZCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJl
dmlzaW9uIDIwMzkwNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MTYsNyArNjE2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAg
ICAgYm9vbCBtZWRpYVBsYXllclNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKLSAgICB2
b2lkIG1lZGlhUGxheWVySGFuZGxlUGxheWJhY2tDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkgb3ZlcnJpZGUgeyBkaWRSZWNlaXZl
UmVtb3RlQ29udHJvbENvbW1hbmQoY29tbWFuZCk7IH0KKyAgICB2b2lkIG1lZGlhUGxheWVySGFu
ZGxlUGxheWJhY2tDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29t
bWFuZFR5cGUgY29tbWFuZCkgb3ZlcnJpZGUgeyBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1h
bmQoY29tbWFuZCwgbnVsbHB0cik7IH0KICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJTb3VyY2VBcHBs
aWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBt
ZWRpYVBsYXllclByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKQEAgLTc1Nyw3ICs3NTcsOCBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtZWRpYVNlc3Npb25E
dXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGR1cmF0aW9uKCk7IH0KICAgICBkb3Vi
bGUgbWVkaWFTZXNzaW9uQ3VycmVudFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjdXJy
ZW50VGltZSgpOyB9CiAgICAgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90
ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFu
ZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5k
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQqKSBvdmVycmlkZTsKKyAg
ICBib29sIHN1cHBvcnRzU2Vla2luZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxk
T3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6SW50ZXJydXB0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRPdmVy
cmlkZUJhY2tncm91bmRMb2FkaW5nUmVzdHJpY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgJ
KHJldmlzaW9uIDIwMzkwNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1h
bmRMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw4IEBAIGNsYXNzIFJlbW90
ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50KCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29tbWFuZEFyZ3VtZW50KikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NlZWtp
bmcoKSBjb25zdCA9IDA7CiB9OwogCiBjbGFzcyBSZW1vdGVDb21tYW5kTGlzdGVuZXIgewpAQCAt
NDMsNiArNDQsMTAgQEAgcHVibGljOgogICAgIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcihSZW1vdGVD
b21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkgOiBtX2NsaWVudChjbGllbnQpIHsgfQogICAg
IHZpcnR1YWwgflJlbW90ZUNvbW1hbmRMaXN0ZW5lcigpIHsgfQogCisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCkgeyB9CisKKyAgICBSZW1vdGVDb21tYW5kTGlzdGVu
ZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisKIHByb3RlY3Rl
ZDoKICAgICBSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIG1fY2xpZW50OwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5jcHAJKHJldmlzaW9uIDIwMzkwNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDkg
KzI0MiwxNCBAQCBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjYW5SZWNlaXZlUmVtCiAgICAg
cmV0dXJuIG1fY2xpZW50LmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKTsKIH0KIAot
dm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5k
KFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQordm9pZCBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZSBjb21tYW5kLCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFy
Z3VtZW50KiBhcmd1bWVudCkKIHsKLSAgICBtX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJv
bENvbW1hbmQoY29tbWFuZCk7CisgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xD
b21tYW5kKGNvbW1hbmQsIGFyZ3VtZW50KTsKK30KKworYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6c3VwcG9ydHNTZWVraW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQuc3VwcG9y
dHNTZWVraW5nKCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OnZpc2liaWxpdHlD
aGFuZ2VkKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uaAkocmV2aXNpb24gMjAzOTA2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMTE0LDYgKzExNCwxMCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29u
c3Q7CiAjZW5kaWYKIAorICAgIHR5cGVkZWYgdW5pb24geworICAgICAgICBkb3VibGUgYXNEb3Vi
bGU7CisgICAgfSBSZW1vdGVDb21tYW5kQXJndW1lbnQ7CisKICAgICBlbnVtIFJlbW90ZUNvbnRy
b2xDb21tYW5kVHlwZSB7CiAgICAgICAgIE5vQ29tbWFuZCwKICAgICAgICAgUGxheUNvbW1hbmQs
CkBAIC0xMjQsOSArMTI4LDExIEBAIHB1YmxpYzoKICAgICAgICAgRW5kU2Vla2luZ0JhY2t3YXJk
Q29tbWFuZCwKICAgICAgICAgQmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsCiAgICAgICAgIEVu
ZFNlZWtpbmdGb3J3YXJkQ29tbWFuZCwKKyAgICAgICAgU2Vla1RvUGxheWJhY2tQb3NpdGlvbkNv
bW1hbmQsCiAgICAgfTsKICAgICBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMo
KSBjb25zdDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21t
YW5kKFJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUmVtb3RlQ29tbWFuZEFyZ3VtZW50
KiBhcmd1bWVudCA9IG51bGxwdHIpOworICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29uc3Q7
CiAKICAgICBlbnVtIERpc3BsYXlUeXBlIHsKICAgICAgICAgTm9ybWFsLApAQCAtMjAyLDcgKzIw
OCw4IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBjYW5SZWNlaXZl
UmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVtb3Rl
Q29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCop
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29uc3QgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldFNob3VsZEJ1ZmZlckRhdGEoYm9vbCkgeyB9CiAgICAgdmlydHVh
bCBib29sIGVsZW1lbnRJc0hpZGRlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDIwMzkwNikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2NiwxMSArMjY2LDEzIEBAIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpzZXRDdXIKIAogICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGluZGV4KTsKICAgICBtX3Nl
c3Npb25zLmluc2VydCgwLCAmc2Vzc2lvbik7CisgICAgaWYgKG1fcmVtb3RlQ29tbWFuZExpc3Rl
bmVyKQorICAgICAgICBtX3JlbW90ZUNvbW1hbmRMaXN0ZW5lci0+dXBkYXRlU3VwcG9ydGVkQ29t
bWFuZHMoKTsKICAgICAKICAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNldEN1cnJlbnRTZXNzaW9uIC0gc2Vzc2lvbiBtb3ZlZCBmcm9tIGluZGV4ICV6dSB0byAw
IiwgaW5kZXgpOwogfQogICAgIAotUGxhdGZvcm1NZWRpYVNlc3Npb24qIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKQorUGxhdGZvcm1NZWRpYVNlc3Npb24qIFBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKSBjb25zdAogewogICAg
IGlmICghbV9zZXNzaW9ucy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzQ0
LDEyICszNDYsMjAgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZQog
fQogI2VuZGlmCiAKLXZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpkaWRSZWNlaXZl
UmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xD
b21tYW5kVHlwZSBjb21tYW5kKQordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmRp
ZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQsIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpS
ZW1vdGVDb21tYW5kQXJndW1lbnQqIGFyZ3VtZW50KQogewogICAgIFBsYXRmb3JtTWVkaWFTZXNz
aW9uKiBhY3RpdmVTZXNzaW9uID0gY3VycmVudFNlc3Npb24oKTsKICAgICBpZiAoIWFjdGl2ZVNl
c3Npb24gfHwgIWFjdGl2ZVNlc3Npb24tPmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMo
KSkKICAgICAgICAgcmV0dXJuOwotICAgIGFjdGl2ZVNlc3Npb24tPmRpZFJlY2VpdmVSZW1vdGVD
b250cm9sQ29tbWFuZChjb21tYW5kKTsKKyAgICBhY3RpdmVTZXNzaW9uLT5kaWRSZWNlaXZlUmVt
b3RlQ29udHJvbENvbW1hbmQoY29tbWFuZCwgYXJndW1lbnQpOworfQorCitib29sIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c3VwcG9ydHNTZWVraW5nKCkgY29uc3QKK3sKKyAgICBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbiogYWN0aXZlU2Vzc2lvbiA9IGN1cnJlbnRTZXNzaW9uKCk7CisgICAg
aWYgKCFhY3RpdmVTZXNzaW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGFj
dGl2ZVNlc3Npb24tPnN1cHBvcnRzU2Vla2luZygpOwogfQogCiB2b2lkIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c3lzdGVtV2lsbFNsZWVwKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
ci5oCShyZXZpc2lvbiAyMDM5MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0Q3VycmVudFNlc3Npb24oUGxhdGZv
cm1NZWRpYVNlc3Npb24mKTsKLSAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogY3VycmVudFNlc3Np
b24oKTsKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogY3VycmVudFNlc3Npb24oKSBjb25zdDsK
IAogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBjdXJyZW50U2Vzc2lvbk1hdGNoaW5nKHN0ZDo6
ZnVuY3Rpb248Ym9vbChjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpPik7CiAKQEAgLTExMiw3
ICsxMTIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU2Vzc2lvblN0YXRlKCk7CiAKICAg
ICAvLyBSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29udHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29tbWFuZEFyZ3VtZW50Kikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdXBw
b3J0c1NlZWtpbmcoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEF1ZGlvSGFyZHdhcmVMaXN0
ZW5lckNsaWVudAogICAgIHZvaWQgYXVkaW9IYXJkd2FyZURpZEJlY29tZUFjdGl2ZSgpIG92ZXJy
aWRlIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRM
aXN0ZW5lcklPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9S
ZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MuaAkocmV2aXNpb24gMjAzOTA2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NiwxMyArNDYsMTUgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgV2Vha1B0
cjxSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dl
YWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQotICAgIAorICAgIHZvaWQgdXBkYXRlU3Vw
cG9ydGVkQ29tbWFuZHMoKSBvdmVycmlkZTsKKwogICAgIFdlYWtQdHJGYWN0b3J5PFJlbW90ZUNv
bW1hbmRMaXN0ZW5lcklPUz4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBSZXRhaW5QdHI8aWQ+IG1f
cGxheVRhcmdldDsKICAgICBSZXRhaW5QdHI8aWQ+IG1fcGF1c2VUYXJnZXQ7CiAgICAgUmV0YWlu
UHRyPGlkPiBtX3RvZ2dsZVBsYXlQYXVzZVRhcmdldDsKICAgICBSZXRhaW5QdHI8aWQ+IG1fc2Vl
a0ZvcndhcmRUYXJnZXQ7CiAgICAgUmV0YWluUHRyPGlkPiBtX3NlZWtCYWNrd2FyZFRhcmdldDsK
KyAgICBSZXRhaW5QdHI8aWQ+IG1fc2Vla1RvVGltZVRhcmdldDsKIH07CiAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lcklPUy5tbQkocmV2aXNpb24gMjAzOTA2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNiAr
MzYsOSBAQAogU09GVF9MSU5LX0ZSQU1FV09SSyhNZWRpYVBsYXllcikKIFNPRlRfTElOS19DTEFT
UyhNZWRpYVBsYXllciwgTVBSZW1vdGVDb21tYW5kQ2VudGVyKQogU09GVF9MSU5LX0NMQVNTKE1l
ZGlhUGxheWVyLCBNUFNlZWtDb21tYW5kRXZlbnQpCisjaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
QVhfQUxMT1dFRCA+PSA5MDEwMAorU09GVF9MSU5LX0NMQVNTKE1lZGlhUGxheWVyLCBNUENoYW5n
ZVBsYXliYWNrUG9zaXRpb25Db21tYW5kRXZlbnQpCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC01NSw3ICs1OCw3IEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6UmVtb3Rl
Q29tbWFuZEwKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXNdIHsKICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
d2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5kKTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2Ns
aWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246
OlBhdXNlQ29tbWFuZCwgbnVsbHB0cik7CiAgICAgICAgIH0pOwogCiAgICAgICAgIHJldHVybiBN
UFJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzU3VjY2VzczsKQEAgLTY1LDcgKzY4LDcgQEAgUmVt
b3RlQ29tbWFuZExpc3RlbmVySU9TOjpSZW1vdGVDb21tYW5kTAogICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFt3ZWFrVGhpc10gewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGllbnQuZGlkUmVjZWl2
ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCk7
CisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGllbnQuZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xD
b21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCwgbnVsbHB0cik7CiAgICAg
ICAgIH0pOwogCiAgICAgICAgIHJldHVybiBNUFJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzU3Vj
Y2VzczsKQEAgLTc1LDcgKzc4LDcgQEAgUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjpSZW1vdGVD
b21tYW5kTAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpc10gewogICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB3
ZWFrVGhpcy0+bV9jbGllbnQuZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kKTsKKyAgICAgICAgICAgIHdlYWtU
aGlzLT5tX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRp
YVNlc3Npb246OlRvZ2dsZVBsYXlQYXVzZUNvbW1hbmQsIG51bGxwdHIpOwogICAgICAgICB9KTsK
IAogICAgICAgICByZXR1cm4gTVBSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7CkBA
IC05MCw3ICs5Myw3IEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6UmVtb3RlQ29tbWFuZEwK
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMsIGNvbW1hbmRdIHsKICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
d2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5k
KTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJv
bENvbW1hbmQoY29tbWFuZCwgbnVsbHB0cik7CiAgICAgICAgIH0pOwogCiAgICAgICAgIHJldHVy
biBNUFJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzU3VjY2VzczsKQEAgLTEwNSwxMSArMTA4LDMx
IEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6UmVtb3RlQ29tbWFuZEwKICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbd2Vha1RoaXMsIGNvbW1hbmRdIHsKICAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgd2Vha1RoaXMtPm1f
Y2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5tX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoY29t
bWFuZCwgbnVsbHB0cik7CiAgICAgICAgIH0pOwogCiAgICAgICAgIHJldHVybiBNUFJlbW90ZUNv
bW1hbmRIYW5kbGVyU3RhdHVzU3VjY2VzczsKICAgICB9XTsKKworI2lmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPj0gOTAxMDAKKyAgICBtX3NlZWtUb1RpbWVUYXJnZXQgPSBbW2Nl
bnRlciBjaGFuZ2VQbGF5YmFja1Bvc2l0aW9uQ29tbWFuZF0gYWRkVGFyZ2V0V2l0aEhhbmRsZXI6
XihNUFJlbW90ZUNvbW1hbmRFdmVudCAqZXZlbnQpIHsKKyAgICAgICAgQVNTRVJUKFtldmVudCBp
c0tpbmRPZkNsYXNzOmdldE1QQ2hhbmdlUGxheWJhY2tQb3NpdGlvbkNvbW1hbmRFdmVudENsYXNz
KCldKTsKKworICAgICAgICBpZiAoIWNsaWVudC5zdXBwb3J0c1NlZWtpbmcoKSkKKyAgICAgICAg
ICAgIHJldHVybiBNUFJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzQ29tbWFuZEZhaWxlZDsKKwor
ICAgICAgICBNUENoYW5nZVBsYXliYWNrUG9zaXRpb25Db21tYW5kRXZlbnQqIHNlZWtFdmVudCA9
IHN0YXRpY19jYXN0PE1QQ2hhbmdlUGxheWJhY2tQb3NpdGlvbkNvbW1hbmRFdmVudCAqPihldmVu
dCk7CisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQg
YXJndW1lbnQgeyBbc2Vla0V2ZW50IHBvc2l0aW9uVGltZV0gfTsKKworICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFt3ZWFrVGhpcywgYXJndW1lbnRdIHsKKyAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgd2Vha1RoaXMtPm1fY2xp
ZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
VG9nZ2xlUGxheVBhdXNlQ29tbWFuZCwgJmFyZ3VtZW50KTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgcmV0dXJuIE1QUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNTdWNjZXNzOworICAgIH1dOwor
I2VuZGlmCiB9CiAKIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6flJlbW90ZUNvbW1hbmRMaXN0
ZW5lcklPUygpCkBAIC0xMjAsNiArMTQzLDE2IEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6
flJlbW90ZUNvbW1hbmQKICAgICBbW2NlbnRlciB0b2dnbGVQbGF5UGF1c2VDb21tYW5kXSByZW1v
dmVUYXJnZXQ6bV90b2dnbGVQbGF5UGF1c2VUYXJnZXQuZ2V0KCldOwogICAgIFtbY2VudGVyIHNl
ZWtGb3J3YXJkQ29tbWFuZF0gcmVtb3ZlVGFyZ2V0Om1fc2Vla0ZvcndhcmRUYXJnZXQuZ2V0KCld
OwogICAgIFtbY2VudGVyIHNlZWtCYWNrd2FyZENvbW1hbmRdIHJlbW92ZVRhcmdldDptX3NlZWtC
YWNrd2FyZFRhcmdldC5nZXQoKV07CisjaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dF
RCA+PSA5MDEwMAorICAgIFtbY2VudGVyIGNoYW5nZVBsYXliYWNrUG9zaXRpb25Db21tYW5kXSBy
ZW1vdmVUYXJnZXQ6bV9zZWVrVG9UaW1lVGFyZ2V0LmdldCgpXTsKKyNlbmRpZgorfQorCit2b2lk
IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKQorewor
I2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gOTAxMDAKKyAgICBbW1tnZXRN
UFJlbW90ZUNvbW1hbmRDZW50ZXJDbGFzcygpIHNoYXJlZENvbW1hbmRDZW50ZXJdIGNoYW5nZVBs
YXliYWNrUG9zaXRpb25Db21tYW5kXSBzZXRFbmFibGVkOiEhY2xpZW50KCkuc3VwcG9ydHNTZWVr
aW5nKCldOworI2VuZGlmCiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9NZWRpYVJlbW90ZVNvZnRMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5jcHAJKHJldmlzaW9uIDIwMzkwNikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZWRpYVJlbW90ZVNvZnRMaW5rLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNSArNDYsNiBAQCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJD
RShXZWJDb3JlLCBNCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRp
YVJlbW90ZSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0R1cmF0aW9uLCBDRlN0cmluZ1Jl
Zik7CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBDRlN0cmluZ1JlZik7CiBT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVk
aWFSZW1vdGVOb3dQbGF5aW5nSW5mb1BsYXliYWNrUmF0ZSwgQ0ZTdHJpbmdSZWYpOworU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVt
b3RlT3B0aW9uUGxheWJhY2tQb3NpdGlvbiwgQ0ZTdHJpbmdSZWYpOwogCiAjZW5kaWYgLy8gVVNF
KE1FRElBUkVNT1RFKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lZGlhUmVt
b3RlU29mdExpbmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
TWVkaWFSZW1vdGVTb2Z0TGluay5oCShyZXZpc2lvbiAyMDM5MDYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MSw1ICs2MSw3IEBAIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE0KICNk
ZWZpbmUga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lIGdldF9NZWRpYVJl
bW90ZV9rTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUoKQogU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFSZW1vdGUsIGtNUk1lZGlhUmVtb3Rl
Tm93UGxheWluZ0luZm9QbGF5YmFja1JhdGUsIENGU3RyaW5nUmVmKTsKICNkZWZpbmUga01STWVk
aWFSZW1vdGVOb3dQbGF5aW5nSW5mb1BsYXliYWNrUmF0ZSBnZXRfTWVkaWFSZW1vdGVfa01STWVk
aWFSZW1vdGVOb3dQbGF5aW5nSW5mb1BsYXliYWNrUmF0ZSgpCitTT0ZUX0xJTktfQ09OU1RBTlRf
Rk9SX0hFQURFUihXZWJDb3JlLCBNZWRpYVJlbW90ZSwga01STWVkaWFSZW1vdGVPcHRpb25QbGF5
YmFja1Bvc2l0aW9uLCBDRlN0cmluZ1JlZik7CisjZGVmaW5lIGtNUk1lZGlhUmVtb3RlT3B0aW9u
UGxheWJhY2tQb3NpdGlvbiBnZXRfTWVkaWFSZW1vdGVfa01STWVkaWFSZW1vdGVPcHRpb25QbGF5
YmFja1Bvc2l0aW9uKCkKIAogI2VuZGlmIC8vIFVTRShNRURJQVJFTU9URSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVy
TWFjLmgJKHJldmlzaW9uIDIwMzkwNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9S
ZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgV2Vha1B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXJN
YWM+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQ
dHIoKTsgfQogCisgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygpIG92ZXJyaWRlOwor
CiAgICAgV2Vha1B0ckZhY3Rvcnk8UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjPiBtX3dlYWtQdHJG
YWN0b3J5IHsgdGhpcyB9OwogICAgIHZvaWQqIG1fY29tbWFuZEhhbmRsZXIgeyBudWxscHRyIH07
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVt
b3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCShyZXZpc2lvbiAyMDM5MDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw4ICs0MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVu
ZXI+IFIKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJN
YWM+KGNsaWVudCk7CiB9CiAKLVJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6UmVtb3RlQ29tbWFu
ZExpc3RlbmVyTWFjKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQotICAgIDog
UmVtb3RlQ29tbWFuZExpc3RlbmVyKGNsaWVudCkKK3ZvaWQgUmVtb3RlQ29tbWFuZExpc3RlbmVy
TWFjOjp1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygpCiB7CiAjaWYgVVNFKE1FRElBUkVNT1RFKQog
ICAgIGlmICghaXNNZWRpYVJlbW90ZUZyYW1ld29ya0F2YWlsYWJsZSgpKQpAQCAtNjYsMTMgKzY1
LDMyIEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6UmVtb3RlQ29tbWFuZEwKICAgICAgICAg
Q0ZBcnJheUFwcGVuZFZhbHVlKGNvbW1hbmRJbmZvQXJyYXkuZ2V0KCksIGNvbW1hbmRJbmZvLmdl
dCgpKTsKICAgICB9CiAKKyAgICBhdXRvIHNlZWtDb21tYW5kSW5mbyA9IGFkb3B0Q0YoTVJNZWRp
YVJlbW90ZUNvbW1hbmRJbmZvQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKKyAgICBNUk1l
ZGlhUmVtb3RlQ29tbWFuZEluZm9TZXRDb21tYW5kKHNlZWtDb21tYW5kSW5mby5nZXQoKSwgTVJN
ZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0aW9uKTsKKyAgICBNUk1lZGlhUmVt
b3RlQ29tbWFuZEluZm9TZXRFbmFibGVkKHNlZWtDb21tYW5kSW5mby5nZXQoKSwgY2xpZW50KCku
c3VwcG9ydHNTZWVraW5nKCkpOworICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjb21tYW5kSW5mb0Fy
cmF5LmdldCgpLCBzZWVrQ29tbWFuZEluZm8uZ2V0KCkpOworCiAgICAgTVJNZWRpYVJlbW90ZVNl
dFN1cHBvcnRlZENvbW1hbmRzKGNvbW1hbmRJbmZvQXJyYXkuZ2V0KCksIE1STWVkaWFSZW1vdGVH
ZXRMb2NhbE9yaWdpbigpLCBudWxscHRyLCBudWxscHRyKTsKKyNlbmRpZiAvLyBVU0UoTUVESUFS
RU1PVEUpCit9CisKK1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6UmVtb3RlQ29tbWFuZExpc3Rl
bmVyTWFjKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQorICAgIDogUmVtb3Rl
Q29tbWFuZExpc3RlbmVyKGNsaWVudCkKK3sKKyNpZiBVU0UoTUVESUFSRU1PVEUpCisgICAgaWYg
KCFpc01lZGlhUmVtb3RlRnJhbWV3b3JrQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCk7CiAKICAgICBhdXRvIHdlYWtUaGlzID0gY3Jl
YXRlV2Vha1B0cigpOwogICAgIG1fY29tbWFuZEhhbmRsZXIgPSBNUk1lZGlhUmVtb3RlQWRkQXN5
bmNDb21tYW5kSGFuZGxlckJsb2NrKF4oTVJNZWRpYVJlbW90ZUNvbW1hbmQgY29tbWFuZCwgQ0ZE
aWN0aW9uYXJ5UmVmIG9wdGlvbnMsIHZvaWQoXmNvbXBsZXRpb24pKENGQXJyYXlSZWYpKSB7Ci0g
ICAgICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKKworICAgICAgICBMT0coTWVkaWEsICJSZW1v
dGVDb21tYW5kTGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYyAtIHJlY2VpdmVk
IGNvbW1hbmQgJXUiLCBjb21tYW5kKTsKIAogICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIHBsYXRmb3JtQ29tbWFuZCB7IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpOb0NvbW1hbmQgfTsKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbW1hbmRBcmd1bWVudCBhcmd1bWVudCB7IDAgfTsKKyAgICAgICAgTVJNZWRpYVJlbW90ZUNv
bW1hbmRIYW5kbGVyU3RhdHVzIHN0YXR1cyA9IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0
YXR1c1N1Y2Nlc3M7CiAKICAgICAgICAgc3dpdGNoIChjb21tYW5kKSB7CiAgICAgICAgIGNhc2Ug
TVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5OgpAQCAtODEsNiArOTksOSBAQCBSZW1vdGVDb21tYW5k
TGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMCiAgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNv
bW1hbmRQYXVzZToKICAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpQYXVzZUNvbW1hbmQ7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBN
Uk1lZGlhUmVtb3RlQ29tbWFuZFN0b3A6CisgICAgICAgICAgICBwbGF0Zm9ybUNvbW1hbmQgPSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3RvcENvbW1hbmQ7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFRvZ2dsZVBsYXlQYXVzZToKICAgICAgICAg
ICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1
c2VDb21tYW5kOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05NiwxNCArMTE3LDMyIEBAIFJlbW90
ZUNvbW1hbmRMaXN0ZW5lck1hYzo6UmVtb3RlQ29tbWFuZEwKICAgICAgICAgY2FzZSBNUk1lZGlh
UmVtb3RlQ29tbWFuZEVuZFJld2luZDoKICAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kOwogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFj
a1Bvc2l0aW9uOiB7CisgICAgICAgICAgICBpZiAoIWNsaWVudC5zdXBwb3J0c1NlZWtpbmcoKSkg
eworICAgICAgICAgICAgICAgIHN0YXR1cyA9IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0
YXR1c0NvbW1hbmRGYWlsZWQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIENGTnVtYmVyUmVmIHBvc2l0aW9uUmVmID0gc3RhdGljX2Nhc3Q8Q0ZO
dW1iZXJSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKG9wdGlvbnMsIGtNUk1lZGlhUmVtb3RlT3B0
aW9uUGxheWJhY2tQb3NpdGlvbikpOworICAgICAgICAgICAgaWYgKCFwb3NpdGlvblJlZikgewor
ICAgICAgICAgICAgICAgIHN0YXR1cyA9IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1
c0NvbW1hbmRGYWlsZWQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUocG9zaXRpb25SZWYsIGtDRk51bWJlckRvdWJs
ZVR5cGUsICZhcmd1bWVudC5hc0RvdWJsZSk7CisgICAgICAgICAgICBwbGF0Zm9ybUNvbW1hbmQg
PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBMT0coTWVkaWEsICJSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYyAtIGNvbW1hbmQgJXUg
bm90IHN1cHBvcnRlZCEiLCBjb21tYW5kKTsKKyAgICAgICAgICAgIHN0YXR1cyA9IE1STWVkaWFS
ZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c0NvbW1hbmRGYWlsZWQ7CisgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH07CiAKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9s
Q29tbWFuZChwbGF0Zm9ybUNvbW1hbmQpOwotICAgICAgICBjb21wbGV0aW9uKHN0YXRpY19jYXN0
PENGQXJyYXlSZWY+KEBbQDBdKSk7CisgICAgICAgIHdlYWtUaGlzLT5tX2NsaWVudC5kaWRSZWNl
aXZlUmVtb3RlQ29udHJvbENvbW1hbmQocGxhdGZvcm1Db21tYW5kLCAmYXJndW1lbnQpOworICAg
ICAgICBjb21wbGV0aW9uKHN0YXRpY19jYXN0PENGQXJyYXlSZWY+KEBbQChzdGF0dXMpXSkpOwog
ICAgIH0pOwogI2VuZGlmIC8vIFVTRShNRURJQVJFTU9URSkKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDIwMzk1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4MCwxMCArMjg4MCwx
MSBAQCB2b2lkIEludGVybmFsczo6c2V0TWVkaWFFbGVtZW50UmVzdHJpY3RpCiAgICAgZWxlbWVu
dC5tZWRpYVNlc3Npb24oKS5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3RyaWN0aW9ucyk7CiB9
CiAKLXZvaWQgSW50ZXJuYWxzOjpwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoY29uc3QgU3RyaW5n
JiBjb21tYW5kU3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSW50ZXJuYWxzOjpwb3N0
UmVtb3RlQ29udHJvbENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kU3RyaW5nLCBmbG9hdCBh
cmd1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kOwotICAgIAorICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQgcGFyYW1ldGVyIHsgYXJndW1lbnQgfTsK
KwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb21tYW5kU3RyaW5nLCAi
cGxheSIpKQogICAgICAgICBjb21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21t
YW5kOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbW1hbmRT
dHJpbmcsICJwYXVzZSIpKQpAQCAtMjkwMCwxMiArMjkwMSwxNCBAQCB2b2lkIEludGVybmFsczo6
cG9zdFJlbW90ZUNvbnRyb2xDb21tYW5kCiAgICAgICAgIGNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29tbWFuZFN0cmluZywgImVuZHNlZWtpbmdmb3J3YXJk
IikpCiAgICAgICAgIGNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0Zv
cndhcmRDb21tYW5kOworICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGNvbW1hbmRTdHJpbmcsICJzZWVrdG9wbGF5YmFja3Bvc2l0aW9uIikpCisgICAgICAgIGNvbW1h
bmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQ7
CiAgICAgZWxzZSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIAotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcigpLmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kKTsKKyAg
ICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5kaWRSZWNlaXZl
UmVtb3RlQ29udHJvbENvbW1hbmQoY29tbWFuZCwgJnBhcmFtZXRlcik7CiB9CiAKIGJvb2wgSW50
ZXJuYWxzOjplbGVtZW50SXNCbG9ja2luZ0Rpc3BsYXlTbGVlcChIVE1MTWVkaWFFbGVtZW50JiBl
bGVtZW50KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lv
biAyMDM5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MTEsNyArNDExLDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwbGljYXRpb25X
aWxsRW50ZXJCYWNrZ3JvdW5kKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNZWRpYVNlc3Npb25SZXN0
cmljdGlvbnMoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIGNvbnN0IFN0cmluZyYgcmVzdHJpY3Rp
b25zLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRNZWRpYUVsZW1lbnRSZXN0cmljdGlv
bnMoSFRNTE1lZGlhRWxlbWVudCYsIGNvbnN0IFN0cmluZyYgcmVzdHJpY3Rpb25zKTsKLSAgICB2
b2lkIHBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdm9pZCBwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoY29uc3QgU3RyaW5nJiwgZmxv
YXQgYXJndW1lbnQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIGVsZW1lbnRJc0Jsb2NraW5n
RGlzcGxheVNsZWVwKEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKICNlbmRpZgogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAyMDM5NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQwNiw3
ICs0MDYsNyBAQCBlbnVtIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gewogICAgIFtDb25k
aXRpb25hbD1WSURFTywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldE1lZGlhU2Vzc2lvblJlc3Ry
aWN0aW9ucyhET01TdHJpbmcgbWVkaWFUeXBlLCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKICAg
ICBbQ29uZGl0aW9uYWw9VklERU9dIHZvaWQgc2V0TWVkaWFFbGVtZW50UmVzdHJpY3Rpb25zKEhU
TUxNZWRpYUVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIHJlc3RyaWN0aW9ucyk7CiAgICAgW0Nv
bmRpdGlvbmFsPVdFQl9BVURJT10gdm9pZCBzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoQXVk
aW9Db250ZXh0IGNvbnRleHQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwotICAgIFtDb25kaXRp
b25hbD1WSURFTywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHBvc3RSZW1vdGVDb250cm9sQ29tbWFu
ZChET01TdHJpbmcgY29tbWFuZCk7CisgICAgW0NvbmRpdGlvbmFsPVZJREVPLCBSYWlzZXNFeGNl
cHRpb25dIHZvaWQgcG9zdFJlbW90ZUNvbnRyb2xDb21tYW5kKERPTVN0cmluZyBjb21tYW5kLCBv
cHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgYXJndW1lbnQgPSAwKTsKICAgICBbQ29uZGl0aW9u
YWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUXSB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogICAgIFtDb25kaXRpb25hbD1XSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclN0YXRlKERPTVN0cmluZyBkZXZpY2VOYW1lLCBET01TdHJpbmcg
ZGV2aWNlU3RhdGUpOwogICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIHZvaWQgc2V0TW9j
a01lZGlhQ2FwdHVyZURldmljZXNFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMDM5MDYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAxNi0wOC0wMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXVtpT1NdIEFkb3B0IE1lZGlhUmVtb3RlICJzZWVr
IHRvIHBsYXliYWNrIHBvc2l0aW9uIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYwNDA1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNzU0NzU4Mz4K
KworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgKiBtZWRpYS9y
ZW1vdGUtY29udHJvbC1jb21tYW5kLXNlZWstZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBtZWRpYS9yZW1vdGUtY29udHJvbC1jb21tYW5kLXNlZWsuaHRtbDogQWRkZWQuCisKIDIwMTYt
MDctMjkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFVuc2tp
cCBzb21lIG1lZGlhIHRlc3RzIG9uIGlPUyB3aGVuIHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyCklu
ZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS9yZW1vdGUtY29udHJvbC1jb21tYW5kLXNlZWstZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3JlbW90ZS1jb250cm9sLWNv
bW1hbmQtc2Vlay1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvbWVk
aWEvcmVtb3RlLWNvbnRyb2wtY29tbWFuZC1zZWVrLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE0IEBACitUZXN0IHRoYXQgdGhlICJzZWVrVG9QbGF5YmFja1Bvc2l0aW9u
IiByZW1vdGUgY29udHJvbCBjb21tYW5kIHdvcmtzLgorCisKKyogc2V0IHZpZGVvLnNyYworRVZF
TlQobG9hZGVkbWV0YWRhdGEpCisKKyogU2VuZCBhIHNlZWsgY29tbWFuZC4KK1JVTihpbnRlcm5h
bHMucG9zdFJlbW90ZUNvbnRyb2xDb21tYW5kKCdzZWVrVG9QbGF5YmFja1Bvc2l0aW9uJywgMS42
KSkKKworRVZFTlQodGltZXVwZGF0ZSkKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZS50b0Zp
eGVkKDEpID09ICcxLjYnKSBPSworCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9t
ZWRpYS9yZW1vdGUtY29udHJvbC1jb21tYW5kLXNlZWsuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9tZWRpYS9yZW1vdGUtY29udHJvbC1jb21tYW5kLXNlZWsuaHRtbAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS9yZW1vdGUtY29udHJvbC1jb21tYW5kLXNlZWsuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Im1lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0IHNyYz0idmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3Qo
J1RoaXMgdGVzdCByZXF1aXJlcyB3aW5kb3cuaW50ZXJuYWxzLicpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZmluZE1l
ZGlhRWxlbWVudCgpOworCisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdsb2FkZWRtZXRh
ZGF0YScsIGxvYWRlZG1ldGFkYXRhLCBmYWxzZSwgdHJ1ZSwgZG9jdW1lbnQpCisgICAgICAgICAg
ICAgICAgd2FpdEZvckV2ZW50KCd0aW1ldXBkYXRlJywgc2Vla2VkKQorCisgICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCcqIHNldCB2aWRlby5zcmMnKTsKKyAgICAgICAgICAgICAgICB2aWRl
by5zcmMgPSBmaW5kTWVkaWFGaWxlKCd2aWRlbycsICdjb250ZW50L3Rlc3QnKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gbG9hZGVkbWV0YWRhdGEoKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnPGJyPiogU2VuZCBhIHNlZWsgY29t
bWFuZC4nKTsKKyAgICAgICAgICAgICAgICBydW4oImludGVybmFscy5wb3N0UmVtb3RlQ29udHJv
bENvbW1hbmQoJ3NlZWtUb1BsYXliYWNrUG9zaXRpb24nLCAxLjYpIik7CisgICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCcnKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gc2Vla2VkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
J3ZpZGVvLmN1cnJlbnRUaW1lLnRvRml4ZWQoMSknLCAxLjYpOworICAgICAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAg
fQorCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKworICAgIDxib2R5IG9ubG9hZD0i
c3RhcnQoKSI+CisgICAgICAgIDxwPlRlc3QgdGhhdCB0aGUgInNlZWtUb1BsYXliYWNrUG9zaXRp
b24iIHJlbW90ZSBjb250cm9sIGNvbW1hbmQgd29ya3MuPC9wPgorICAgICAgICA8dmlkZW8gY29u
dHJvbHM+PC92aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>