<?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>139744</bug_id>
          
          <creation_ts>2014-12-17 13:21:13 -0800</creation_ts>
          <short_desc>Remove custom token mechanism from ProcessThrottler</short_desc>
          <delta_ts>2014-12-18 17:41:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>139776</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1056526</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-12-17 13:21:13 -0800</bug_when>
    <thetext>ProcessThrottler implements its own token-based counter mechanism, but should just use RefCounter.

There is one new feature here. ProcessThrottler used distinct token types for background &amp; foreground activity. It would be a compile error to try to store a background token in the handle for a foreground token, and vice versa. RefCounter doesn&apos;t currently provide the facility to distinguish token types in this manner (all tokens are just Ref&lt;RefCounter::Count&gt;). Add a convenient way to easily create distinct token types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056529</commentid>
    <comment_count>1</comment_count>
      <attachid>243456</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-12-17 13:29:10 -0800</bug_when>
    <thetext>Created attachment 243456
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056531</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-17 13:32:03 -0800</bug_when>
    <thetext>Attachment 243456 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/GenericCallback.h:194:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/RefCounter.h:73:  The parameter name &quot;ref&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/RefCounter.h:77:  The parameter name &quot;token&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/RefCounter.h:78:  The parameter name &quot;token&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/RefCounter.h:81:  The parameter name &quot;o&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/RefCounter.h:82:  The parameter name &quot;o&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/ProcessThrottler.cpp:39:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 7 in 14 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>1056533</commentid>
    <comment_count>3</comment_count>
      <attachid>243456</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-12-17 13:34:56 -0800</bug_when>
    <thetext>Comment on attachment 243456
Fix

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

&gt; Source/WTF/ChangeLog:24
&gt; +            - tokens can be copied, assigned to, and suport operator!.

suport -&gt; support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056541</commentid>
    <comment_count>4</comment_count>
      <attachid>243456</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-12-17 13:54:40 -0800</bug_when>
    <thetext>Comment on attachment 243456
Fix

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

r=me

&gt; Source/WTF/wtf/RefCounter.h:73
&gt; +        inline explicit Token(Ref&lt;Count&gt;&amp;&amp; ref);

I think implicit is cool here. There&apos;s nothing lossy about accepting an rvalue reference to a count in order to make a token.

&gt; Source/WebKit2/UIProcess/GenericCallback.h:72
&gt; -    explicit CallbackBase(Type type, std::unique_ptr&lt;ProcessThrottler::BackgroundActivityToken&gt; activityToken)
&gt; +    explicit CallbackBase(Type type, ProcessThrottler::BackgroundActivityToken activityToken)

I think you want some reference action here to avoid churning the refcounts.

&gt; Source/WebKit2/UIProcess/ProcessThrottler.h:42
&gt; +    class ForegroundActivityTokenClass;
&gt; +    class BackgroundActivityTokenClass;

Maybe this would be clearer if you used an enum instead of opaque class types. enum is OK as template argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056960</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-12-18 16:54:47 -0800</bug_when>
    <thetext>Landed WTF changes separately as https://bugs.webkit.org/show_bug.cgi?id=139776.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056969</commentid>
    <comment_count>6</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-12-18 17:41:12 -0800</bug_when>
    <thetext>Transmitting file data ............
Committed revision 177548.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243456</attachid>
            <date>2014-12-17 13:29:10 -0800</date>
            <delta_ts>2014-12-17 13:54:40 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>139744.1.patch</filename>
            <type>text/plain</type>
            <size>37642</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzc0NDkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE0LTEyLTE3ICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgY3VzdG9tIHRva2VuIG1l
Y2hhbmlzbSBmcm9tIFByb2Nlc3NUaHJvdHRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTc0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFByb2Nlc3NUaHJvdHRsZXIgaW1wbGVtZW50cyBpdHMgb3du
IHRva2VuLWJhc2VkIGNvdW50ZXIgbWVjaGFuaXNtLCBidXQgc2hvdWxkCisgICAgICAgIGp1c3Qg
dXNlIFJlZkNvdW50ZXIuCisKKyAgICAgICAgVGhlcmUgaXMgb25lIG5ldyBmZWF0dXJlIGhlcmUu
IFByb2Nlc3NUaHJvdHRsZXIgdXNlZCBkaXN0aW5jdCB0b2tlbiB0eXBlcyBmb3IKKyAgICAgICAg
YmFja2dyb3VuZCAmIGZvcmVncm91bmQgYWN0aXZpdHkuIEl0IHdvdWxkIGJlIGEgY29tcGlsZSBl
cnJvciB0byB0cnkgdG8gc3RvcmUKKyAgICAgICAgYSBiYWNrZ3JvdW5kIHRva2VuIGluIHRoZSBo
YW5kbGUgZm9yIGEgZm9yZWdyb3VuZCB0b2tlbiwgYW5kIHZpY2UgdmVyc2EuCisgICAgICAgIFJl
ZkNvdW50ZXIgZG9lc24ndCBjdXJyZW50bHkgcHJvdmlkZSB0aGUgZmFjaWxpdHkgdG8gZGlzdGlu
Z3Vpc2ggdG9rZW4gdHlwZXMKKyAgICAgICAgaW4gdGhpcyBtYW5uZXIgKGFsbCB0b2tlbnMgYXJl
IGp1c3QgUmVmPFJlZkNvdW50ZXI6OkNvdW50PikuIEFkZCBhIGNvbnZlbmllbnQKKyAgICAgICAg
d2F5IHRvIGVhc2lseSBjcmVhdGUgZGlzdGluY3QgdG9rZW4gdHlwZXMuCisKKyAgICAgICAgKiB3
dGYvUmVmQ291bnRlci5oOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyOjpUb2tlbjo6VG9rZW4p
OgorICAgICAgICAgICAgLSBhZGRlZCBSZWZDb3VudGVyOjpUb2tlbiDigJPCoGEgd3JhcHBlciBv
biBSZWZQdHIsIHRlbXBsYXRlZCB0byBtYWtlIGRpc3RpbmN0LgorICAgICAgICAoV1RGOjpSZWZD
b3VudGVyOjpUb2tlbjo6b3BlcmF0b3IhKToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlcjo6VG9r
ZW48VD46OlRva2VuKToKKyAgICAgICAgKFdURjo6PSk6CisgICAgICAgICAgICAtIHRva2VucyBj
YW4gYmUgY29waWVkLCBhc3NpZ25lZCB0bywgYW5kIHN1cG9ydCBvcGVyYXRvciEuCisKIDIwMTQt
MTItMTcgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dp
bl0gQ29ycmVjdCBEZWJ1Z1N1ZmZpeCBidWlsZHMgdW5kZXIgTVNCdWlsZApJbmRleDogU291cmNl
L1dURi93dGYvUmVmQ291bnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1JlZkNv
dW50ZXIuaAkocmV2aXNpb24gMTc3NDIyKQorKysgU291cmNlL1dURi93dGYvUmVmQ291bnRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC02NywxMSArNjcsNzAgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbV9jb3VudC0+bV92YWx1ZTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBUPgorICAg
IGNsYXNzIFRva2VuICB7CisgICAgcHVibGljOgorICAgICAgICBpbmxpbmUgZXhwbGljaXQgVG9r
ZW4oUmVmPENvdW50PiYmIHJlZik7CisKKyAgICAgICAgaW5saW5lIFRva2VuKCkgeyB9CisgICAg
ICAgIGlubGluZSBUb2tlbihzdGQ6Om51bGxwdHJfdCkgeyB9CisgICAgICAgIGlubGluZSBUb2tl
bihjb25zdCBUb2tlbjxUPiYgdG9rZW4pOworICAgICAgICBpbmxpbmUgVG9rZW4oVG9rZW48VD4m
JiB0b2tlbik7CisKKyAgICAgICAgaW5saW5lIFRva2VuPFQ+JiBvcGVyYXRvcj0oc3RkOjpudWxs
cHRyX3QpOworICAgICAgICBpbmxpbmUgVG9rZW48VD4mIG9wZXJhdG9yPShjb25zdCBUb2tlbjxU
PiYgbyk7CisgICAgICAgIGlubGluZSBUb2tlbjxUPiYgb3BlcmF0b3I9KFRva2VuPFQ+JiYgbyk7
CisKKyAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIFJlZlB0cjxDb3VudD4gbV9wdHI7CisgICAgfTsKKwogcHJp
dmF0ZToKICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV92YWx1ZURpZENoYW5nZTsKICAgICBD
b3VudCogbV9jb3VudDsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIFQ+CitpbmxpbmUgUmVmQ291bnRl
cjo6VG9rZW48VD46OlRva2VuKFJlZjxSZWZDb3VudGVyOjpDb3VudD4mJiByZWYpCisgICAgOiBt
X3B0cihXVEY6Om1vdmUocmVmKSkKK3sKK30KKwordGVtcGxhdGU8Y2xhc3MgVD4KK2lubGluZSBS
ZWZDb3VudGVyOjpUb2tlbjxUPjo6VG9rZW4oY29uc3QgUmVmQ291bnRlcjo6VG9rZW48VD46OlRv
a2VuPFQ+JiB0b2tlbikKKyAgICA6IG1fcHRyKHRva2VuLm1fcHRyKQoreworfQorCit0ZW1wbGF0
ZTxjbGFzcyBUPgoraW5saW5lIFJlZkNvdW50ZXI6OlRva2VuPFQ+OjpUb2tlbihSZWZDb3VudGVy
OjpUb2tlbjxUPjo6VG9rZW48VD4mJiB0b2tlbikKKyAgICA6IG1fcHRyKHRva2VuLm1fcHRyKQor
eworfQorCit0ZW1wbGF0ZTxjbGFzcyBUPgoraW5saW5lIFJlZkNvdW50ZXI6OlRva2VuPFQ+JiBS
ZWZDb3VudGVyOjpUb2tlbjxUPjo6b3BlcmF0b3I9KHN0ZDo6bnVsbHB0cl90KQoreworICAgIG1f
cHRyID0gbnVsbHB0cjsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIFQ+
CitpbmxpbmUgUmVmQ291bnRlcjo6VG9rZW48VD4mIFJlZkNvdW50ZXI6OlRva2VuPFQ+OjpvcGVy
YXRvcj0oY29uc3QgUmVmQ291bnRlcjo6VG9rZW48VD4mIG8pCit7CisgICAgbV9wdHIgPSBvLm1f
cHRyOworICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGU8Y2xhc3MgVD4KK2lubGluZSBS
ZWZDb3VudGVyOjpUb2tlbjxUPiYgUmVmQ291bnRlcjo6VG9rZW48VD46Om9wZXJhdG9yPShSZWZD
b3VudGVyOjpUb2tlbjxUPiYmIG8pCit7CisgICAgbV9wdHIgPSBvLm1fcHRyOworICAgIHJldHVy
biAqdGhpczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6UmVmQ291bnRl
cjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NzQ0OSkKKysrIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk2IEBACisyMDE0LTEyLTE3ICBHYXZp
biBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
Y3VzdG9tIHRva2VuIG1lY2hhbmlzbSBmcm9tIFByb2Nlc3NUaHJvdHRsZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTc0NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByb2Nlc3NUaHJvdHRsZXIgaW1w
bGVtZW50cyBpdHMgb3duIHRva2VuLWJhc2VkIGNvdW50ZXIgbWVjaGFuaXNtLCBidXQgc2hvdWxk
CisgICAgICAgIGp1c3QgdXNlIFJlZkNvdW50ZXIuCisKKyAgICAgICAgVGhlcmUgaXMgb25lIG5l
dyBmZWF0dXJlIGhlcmUuIFByb2Nlc3NUaHJvdHRsZXIgdXNlZCBkaXN0aW5jdCB0b2tlbiB0eXBl
cyBmb3IKKyAgICAgICAgYmFja2dyb3VuZCAmIGZvcmVncm91bmQgYWN0aXZpdHkuIEl0IHdvdWxk
IGJlIGEgY29tcGlsZSBlcnJvciB0byB0cnkgdG8gc3RvcmUKKyAgICAgICAgYSBiYWNrZ3JvdW5k
IHRva2VuIGluIHRoZSBoYW5kbGUgZm9yIGEgZm9yZWdyb3VuZCB0b2tlbiwgYW5kIHZpY2UgdmVy
c2EuCisgICAgICAgIFJlZkNvdW50ZXIgZG9lc24ndCBjdXJyZW50bHkgcHJvdmlkZSB0aGUgZmFj
aWxpdHkgdG8gZGlzdGluZ3Vpc2ggdG9rZW4gdHlwZXMKKyAgICAgICAgaW4gdGhpcyBtYW5uZXIg
KGFsbCB0b2tlbnMgYXJlIGp1c3QgUmVmPFJlZkNvdW50ZXI6OkNvdW50PikuIEFkZCBhIGNvbnZl
bmllbnQKKyAgICAgICAgd2F5IHRvIGVhc2lseSBjcmVhdGUgZGlzdGluY3QgdG9rZW4gdHlwZXMu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAg
ICAgICAtIHJlbW92ZSBzdGQ6OnVuaXF1ZV9wdHIuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpk
aWRDaGFuZ2VJc0xvYWRpbmcpOgorICAgICAgICAgICAgLSByZW1vdmUgc3RkOjptYWtlX3VuaXF1
ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKToKKyAgICAgICAgKFdlYktpdDo6R2VuZXJp
Y0NhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpHZW5lcmljQ2FsbGJhY2s6Okdl
bmVyaWNDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrTWFwOjpwdXQpOgorICAg
ICAgICAgICAgLSByZW1vdmUgc3RkOjp1bmlxdWVfcHRyLgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
cm9jZXNzVGhyb3R0bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6
UHJvY2Vzc1Rocm90dGxlcik6CisgICAgICAgIChXZWJLaXQ6Om1fYmFja2dyb3VuZENvdW50ZXIp
OgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjphc3NlcnRpb25TdGF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OnVwZGF0ZUFzc2VydGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eVRva2VuOjpG
b3JlZ3JvdW5kQWN0aXZpdHlUb2tlbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlByb2Nl
c3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eVRva2VuOjp+Rm9yZWdyb3VuZEFjdGl2aXR5
VG9rZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bjo6fkJhY2tncm91bmRBY3Rpdml0eVRva2VuKTogRGVsZXRlZC4KKyAgICAgICAgICAgIC0gcmVt
b3ZlZCBvbGQgaW1wbGVtZW50YXRpb24gb2YgRm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4vQmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4uCisgICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIu
aDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6Zm9yZWdyb3VuZEFjdGl2aXR5
VG9rZW4pOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpiYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbik6CisgICAgICAgICAgICAtIGFkZGVkIGFjY2Vzc29ycyB0byBjcmVhdGUgYWN0
aXZpdHkgdG9rZW5zLgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjp3ZWFrUHRy
KTogRGVsZXRlZC4KKyAgICAgICAgICAgIC0gcmVtb3ZlZCBtZW1iZXJzIHJlcGxhY2VkIGJ5IFJl
ZkNvdW50ZXIgdHlwZXMuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlUb2tlbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0cmluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0Qnl0ZWNvZGVQcm9maWxlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFP
ZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRSZXNvdXJjZURhdGFG
cm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVP
ZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFz
eW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlQXN5
bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9p
bnRBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dGFrZVNu
YXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnN0YWxsVmlld1N0YXRl
Q2hhbmdlQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAgICAgLSByZW1vdmUgc3RkOjptYWtl
X3VuaXF1ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICAg
ICAtIHJlbW92ZSBzdGQ6OnVuaXF1ZV9wdHIuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0SXNIb2xk
aW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAgICAgLSByZW1vdmUgc3RkOjptYWtlX3VuaXF1ZS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICAgICAtIHJl
bW92ZSBzdGQ6OnVuaXF1ZV9wdHIuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1
cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhU
b3VjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJl
Y3Rpb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphcHBseUF1dG9jb3Jy
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1h
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFRleHRXaXRoR3JhbnVs
YXJpdHlBdFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZWxlY3RQb3Np
dGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQnlPZmZzZXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmZvY3VzTmV4dEFzc2lzdGVkTm9kZSk6CisgICAgICAgICAgICAt
IHJlbW92ZSBzdGQ6Om1ha2VfdW5pcXVlLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRT
dWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKToKKyAgICAgICAgICAgIC0gcmVtb3ZlIHN0
ZDo6bWFrZV91bmlxdWUuCisKIDIwMTQtMTItMTcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxl
LmNvbT4KIAogICAgICAgICBpT1MgYnVpbGQgZml4CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCShyZXZpc2lvbiAxNzc0MjIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDEw
ICs2OSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RydWN0IFR5cGVUYWcgeyB9OwogICAgIHR5cGVk
ZWYgY29uc3QgVHlwZVRhZyogVHlwZTsKIAotICAgIGV4cGxpY2l0IENhbGxiYWNrQmFzZShUeXBl
IHR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbj4gYWN0aXZpdHlUb2tlbikKKyAgICBleHBsaWNpdCBDYWxsYmFja0Jhc2UoVHlwZSB0
eXBlLCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBhY3Rpdml0eVRv
a2VuKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1fY2FsbGJhY2tJRChnZW5l
cmF0ZUNhbGxiYWNrSUQoKSkKLSAgICAgICAgLCBtX2FjdGl2aXR5VG9rZW4oV1RGOjptb3ZlKGFj
dGl2aXR5VG9rZW4pKQorICAgICAgICAsIG1fYWN0aXZpdHlUb2tlbihhY3Rpdml0eVRva2VuKQog
ICAgIHsKICAgICB9CiAKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKIAogICAgIFR5cGUgbV90
eXBlOwogICAgIHVpbnQ2NF90IG1fY2FsbGJhY2tJRDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+IG1fYWN0aXZpdHlUb2tlbjsK
KyAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX2FjdGl2aXR5
VG9rZW47CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgpAQCAtOTQsOSArOTQsOSBAQCBj
bGFzcyBHZW5lcmljQ2FsbGJhY2sgOiBwdWJsaWMgQ2FsbGJhY2tCCiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFQuLi4sIEVycm9yKT4gQ2FsbGJhY2tGdW5jdGlvbjsK
IAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdlbmVyaWNDYWxsYmFjaz4gY3JlYXRlKENhbGxiYWNr
RnVuY3Rpb24gY2FsbGJhY2ssIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbj4gYWN0aXZpdHlUb2tlbiA9IG51bGxwdHIpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8R2VuZXJpY0NhbGxiYWNrPiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiBjYWxs
YmFjaywgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gYWN0aXZpdHlU
b2tlbiA9IG51bGxwdHIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdlbmVy
aWNDYWxsYmFjayhjYWxsYmFjaywgV1RGOjptb3ZlKGFjdGl2aXR5VG9rZW4pKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgR2VuZXJpY0NhbGxiYWNrKGNhbGxiYWNrLCBhY3Rpdml0eVRv
a2VuKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+R2VuZXJpY0NhbGxiYWNrKCkKQEAgLTEzMCw4
ICsxMzAsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdlbmVyaWNDYWxsYmFj
ayhDYWxsYmFja0Z1bmN0aW9uIGNhbGxiYWNrLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90
dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+IGFjdGl2aXR5VG9rZW4pCi0gICAgICAgIDog
Q2FsbGJhY2tCYXNlKHR5cGUoKSwgV1RGOjptb3ZlKGFjdGl2aXR5VG9rZW4pKQorICAgIEdlbmVy
aWNDYWxsYmFjayhDYWxsYmFja0Z1bmN0aW9uIGNhbGxiYWNrLCBQcm9jZXNzVGhyb3R0bGVyOjpC
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBhY3Rpdml0eVRva2VuKQorICAgICAgICA6IENhbGxiYWNr
QmFzZSh0eXBlKCksIGFjdGl2aXR5VG9rZW4pCiAgICAgICAgICwgbV9jYWxsYmFjayhjYWxsYmFj
aykKICAgICB7CiAgICAgfQpAQCAtMTkxLDkgKzE5MSw5IEBAIHB1YmxpYzoKICAgICB9OwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KLSAgICB1aW50NjRfdCBwdXQoc3RkOjpmdW5jdGlv
bjx2b2lkIChULi4uKT4gZnVuY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVy
OjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4gYWN0aXZpdHlUb2tlbikKKyAgICB1aW50NjRfdCBw
dXQoc3RkOjpmdW5jdGlvbjx2b2lkIChULi4uKT4gZnVuY3Rpb24sIFByb2Nlc3NUaHJvdHRsZXI6
OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIGFjdGl2aXR5VG9rZW4pCiAgICAgewotICAgICAgICBh
dXRvIGNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrVHlwZTxzaXplb2YuLi4oVCksIFQuLi4+Ojp0
eXBlOjpjcmVhdGUoV1RGOjptb3ZlKGZ1bmN0aW9uKSwgV1RGOjptb3ZlKGFjdGl2aXR5VG9rZW4p
KTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IEdlbmVyaWNDYWxsYmFja1R5cGU8c2l6ZW9mLi4u
KFQpLCBULi4uPjo6dHlwZTo6Y3JlYXRlKFdURjo6bW92ZShmdW5jdGlvbiksIGFjdGl2aXR5VG9r
ZW4pOwogICAgICAgICByZXR1cm4gcHV0KGNhbGxiYWNrKTsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAJKHJldmlzaW9uIDE3
NzQyMikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNDIgKzMyLDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAg
IAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHByb2Nlc3NTdXNwZW5zaW9uVGltZW91dCA9IDMwOwog
ICAgIAotUHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5VG9rZW46OkZvcmVncm91
bmRBY3Rpdml0eVRva2VuKFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcikKLSAgICA6IG1fdGhy
b3R0bGVyKHRocm90dGxlci53ZWFrUHRyKCkpCi17Ci0gICAgdGhyb3R0bGVyLm1fZm9yZWdyb3Vu
ZENvdW50Kys7Ci0gICAgdGhyb3R0bGVyLnVwZGF0ZUFzc2VydGlvbigpOwotfQotCi1Qcm9jZXNz
VGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbjo6fkZvcmVncm91bmRBY3Rpdml0eVRv
a2VuKCkKLXsKLSAgICBpZiAoUHJvY2Vzc1Rocm90dGxlciogdGhyb3R0bGVyID0gbV90aHJvdHRs
ZXIuZ2V0KCkpIHsKLSAgICAgICAgdGhyb3R0bGVyLT5tX2ZvcmVncm91bmRDb3VudC0tOwotICAg
ICAgICB0aHJvdHRsZXItPnVwZGF0ZUFzc2VydGlvbigpOwotICAgIH0KLX0KLQotUHJvY2Vzc1Ro
cm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW46OkJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcikKLSAgICA6IG1fdGhyb3R0bGVyKHRocm90dGxl
ci53ZWFrUHRyKCkpCi17Ci0gICAgdGhyb3R0bGVyLm1fYmFja2dyb3VuZENvdW50Kys7Ci0gICAg
dGhyb3R0bGVyLnVwZGF0ZUFzc2VydGlvbigpOwotfQotCi1Qcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbjo6fkJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkKLXsKLSAgICBp
ZiAoUHJvY2Vzc1Rocm90dGxlciogdGhyb3R0bGVyID0gbV90aHJvdHRsZXIuZ2V0KCkpIHsKLSAg
ICAgICAgdGhyb3R0bGVyLT5tX2JhY2tncm91bmRDb3VudC0tOwotICAgICAgICB0aHJvdHRsZXIt
PnVwZGF0ZUFzc2VydGlvbigpOwotICAgIH0KLX0KLQogUHJvY2Vzc1Rocm90dGxlcjo6UHJvY2Vz
c1Rocm90dGxlcihXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAgICAgOiBtX3Byb2Nlc3MocHJv
Y2VzcykKLSAgICAsIG1fd2Vha1B0ckZhY3RvcnkodGhpcykKICAgICAsIG1fc3VzcGVuZFRpbWVy
KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlByb2Nlc3NUaHJvdHRsZXI6OnN1c3BlbmRUaW1lckZp
cmVkKQotICAgICwgbV9mb3JlZ3JvdW5kQ291bnQoMCkKLSAgICAsIG1fYmFja2dyb3VuZENvdW50
KDApCisgICAgLCBtX2ZvcmVncm91bmRDb3VudGVyKFt0aGlzXSgpIHsgdXBkYXRlQXNzZXJ0aW9u
KCk7IH0pCisgICAgLCBtX2JhY2tncm91bmRDb3VudGVyKFt0aGlzXSgpIHsgdXBkYXRlQXNzZXJ0
aW9uKCk7IH0pCiAgICAgLCBtX3N1c3BlbmRNZXNzYWdlQ291bnQoMCkKIHsKIH0KQEAgLTc2LDkg
KzQ1LDkgQEAgQXNzZXJ0aW9uU3RhdGUgUHJvY2Vzc1Rocm90dGxlcjo6YXNzZXJ0aQogewogICAg
IEFTU0VSVCghbV9zdXNwZW5kVGltZXIuaXNBY3RpdmUoKSk7CiAgICAgCi0gICAgaWYgKG1fZm9y
ZWdyb3VuZENvdW50KQorICAgIGlmIChtX2ZvcmVncm91bmRDb3VudGVyLnZhbHVlKCkpCiAgICAg
ICAgIHJldHVybiBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZDsKLSAgICBpZiAobV9iYWNrZ3Jv
dW5kQ291bnQpCisgICAgaWYgKG1fYmFja2dyb3VuZENvdW50ZXIudmFsdWUoKSkKICAgICAgICAg
cmV0dXJuIEFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kOwogICAgIHJldHVybiBBc3NlcnRpb25T
dGF0ZTo6U3VzcGVuZGVkOwogfQpAQCAtOTUsNyArNjQsNyBAQCB2b2lkIFByb2Nlc3NUaHJvdHRs
ZXI6OnVwZGF0ZUFzc2VydGlvbigpCiAgICAgLy8gSWYgdGhlIHByb2Nlc3MgaXMgY3VycmVudGx5
IHJ1bm5hYmxlIGJ1dCB3aWxsIGJlIHN1c3BlbmRlZCB0aGVuIGZpcnN0IGdpdmUgaXQgYSBjaGFu
Y2UgdG8gY29tcGxldGUgd2hhdCBpdCB3YXMgZG9pbmcKICAgICAvLyBhbmQgY2xlYW4gdXAgLSBt
b3ZlIGl0IHRvIHRoZSBiYWNrZ3JvdW5kIGFuZCBzZW5kIGl0IGEgbWVzc2FnZSB0byBub3RpZnku
IFNjaGVkdWxlIGEgdGltZW91dCBzbyBpdCBjYW4ndCBzdGF5IHJ1bm5pbmcKICAgICAvLyBpbiB0
aGUgYmFja2dyb3VuZCBmb3IgdG9vIGxvbmcuCi0gICAgaWYgKG1fYXNzZXJ0aW9uICYmIG1fYXNz
ZXJ0aW9uLT5zdGF0ZSgpICE9IEFzc2VydGlvblN0YXRlOjpTdXNwZW5kZWQgJiYgIW1fZm9yZWdy
b3VuZENvdW50ICYmICFtX2JhY2tncm91bmRDb3VudCkgeworICAgIGlmIChtX2Fzc2VydGlvbiAm
JiBtX2Fzc2VydGlvbi0+c3RhdGUoKSAhPSBBc3NlcnRpb25TdGF0ZTo6U3VzcGVuZGVkICYmICFt
X2ZvcmVncm91bmRDb3VudGVyLnZhbHVlKCkgJiYgIW1fYmFja2dyb3VuZENvdW50ZXIudmFsdWUo
KSkgewogICAgICAgICArK21fc3VzcGVuZE1lc3NhZ2VDb3VudDsKICAgICAgICAgbV9wcm9jZXNz
LT5zZW5kUHJvY2Vzc1dpbGxTdXNwZW5kKCk7CiAgICAgICAgIG1fc3VzcGVuZFRpbWVyLnN0YXJ0
T25lU2hvdChwcm9jZXNzU3VzcGVuc2lvblRpbWVvdXQpOwpAQCAtMTA0LDcgKzczLDcgQEAgdm9p
ZCBQcm9jZXNzVGhyb3R0bGVyOjp1cGRhdGVBc3NlcnRpb24oKQogICAgIH0KIAogICAgIC8vIElm
IHdlJ3JlIGN1cnJlbnRseSB3YWl0aW5nIGZvciB0aGUgV2ViIHByb2Nlc3MgdG8gZG8gc3VzcGVu
c2lvbiBjbGVhbnVwLCBidXQgbm8gbG9uZ2VyIG5lZWQgdG8gYmUgc3VzcGVuZGVkLCB0ZWxsIHRo
ZSBXZWIgcHJvY2VzcyB0byBjYW5jZWwgdGhlIGNsZWFudXAuCi0gICAgaWYgKG1fc3VzcGVuZFRp
bWVyLmlzQWN0aXZlKCkgJiYgKG1fZm9yZWdyb3VuZENvdW50IHx8IG1fYmFja2dyb3VuZENvdW50
KSkKKyAgICBpZiAobV9zdXNwZW5kVGltZXIuaXNBY3RpdmUoKSAmJiAobV9mb3JlZ3JvdW5kQ291
bnRlci52YWx1ZSgpIHx8IG1fYmFja2dyb3VuZENvdW50ZXIudmFsdWUoKSkpCiAgICAgICAgIG1f
cHJvY2Vzcy0+c2VuZENhbmNlbFByb2Nlc3NXaWxsU3VzcGVuZCgpOwogCiAgICAgdXBkYXRlQXNz
ZXJ0aW9uTm93KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90
dGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzVGhy
b3R0bGVyLmgJKHJldmlzaW9uIDE3NzQyMikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
cm9jZXNzVGhyb3R0bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDU4ICsyOCw1NCBAQAogCiAj
aW5jbHVkZSAiUHJvY2Vzc0Fzc2VydGlvbi5oIgogCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZXIu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogICAgIAogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwotICAgIAor
CiBjbGFzcyBQcm9jZXNzVGhyb3R0bGVyIHsKIHB1YmxpYzoKLSAgICBjbGFzcyBGb3JlZ3JvdW5k
QWN0aXZpdHlUb2tlbiB7Ci0gICAgcHVibGljOgotICAgICAgICBGb3JlZ3JvdW5kQWN0aXZpdHlU
b2tlbihQcm9jZXNzVGhyb3R0bGVyJik7Ci0gICAgICAgIH5Gb3JlZ3JvdW5kQWN0aXZpdHlUb2tl
bigpOwotICAgICAgICAKLSAgICBwcml2YXRlOgotICAgICAgICBXZWFrUHRyPFByb2Nlc3NUaHJv
dHRsZXI+IG1fdGhyb3R0bGVyOwotICAgIH07Ci0gICAgCi0gICAgY2xhc3MgQmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4gewotICAgIHB1YmxpYzoKLSAgICAgICAgQmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oUHJvY2Vzc1Rocm90dGxlciYpOwotICAgICAgICB+QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KTsKLSAgICAgICAgCi0gICAgcHJpdmF0ZToKLSAgICAgICAgV2Vha1B0cjxQcm9jZXNzVGhyb3R0
bGVyPiBtX3Rocm90dGxlcjsKLSAgICB9OwotICAgIAorICAgIGNsYXNzIEZvcmVncm91bmRBY3Rp
dml0eVRva2VuQ2xhc3M7CisgICAgY2xhc3MgQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5DbGFzczsK
KyAgICB0eXBlZGVmIFJlZkNvdW50ZXI6OlRva2VuPEZvcmVncm91bmRBY3Rpdml0eVRva2VuQ2xh
c3M+IEZvcmVncm91bmRBY3Rpdml0eVRva2VuOworICAgIHR5cGVkZWYgUmVmQ291bnRlcjo6VG9r
ZW48QmFja2dyb3VuZEFjdGl2aXR5VG9rZW5DbGFzcz4gQmFja2dyb3VuZEFjdGl2aXR5VG9rZW47
CisKICAgICBQcm9jZXNzVGhyb3R0bGVyKFdlYlByb2Nlc3NQcm94eSopOworCisgICAgaW5saW5l
IEZvcmVncm91bmRBY3Rpdml0eVRva2VuIGZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkgY29uc3Q7
CisgICAgaW5saW5lIEJhY2tncm91bmRBY3Rpdml0eVRva2VuIGJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBkaWRDb25ubmVjdFRvUHJvY2VzcyhwaWRfdCk7
CiAgICAgdm9pZCBwcm9jZXNzUmVhZHlUb1N1c3BlbmQoKTsKICAgICB2b2lkIGRpZENhbmNlbFBy
b2Nlc3NTdXNwZW5zaW9uKCk7CiAgICAgCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBGb3Jl
Z3JvdW5kQWN0aXZpdHlUb2tlbjsKLSAgICBmcmllbmQgY2xhc3MgQmFja2dyb3VuZEFjdGl2aXR5
VG9rZW47Ci0gICAgV2Vha1B0cjxQcm9jZXNzVGhyb3R0bGVyPiB3ZWFrUHRyKCkgeyByZXR1cm4g
bV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7IH0KLSAgICAKICAgICBBc3NlcnRpb25T
dGF0ZSBhc3NlcnRpb25TdGF0ZSgpOwogICAgIHZvaWQgdXBkYXRlQXNzZXJ0aW9uKCk7CiAgICAg
dm9pZCB1cGRhdGVBc3NlcnRpb25Ob3coKTsKICAgICB2b2lkIHN1c3BlbmRUaW1lckZpcmVkKCk7
CiAgICAgCiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3Byb2Nlc3M7Ci0gICAgV2Vha1B0ckZhY3Rv
cnk8UHJvY2Vzc1Rocm90dGxlcj4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPiBtX2Fzc2VydGlvbjsKICAgICBSdW5Mb29wOjpUaW1l
cjxQcm9jZXNzVGhyb3R0bGVyPiBtX3N1c3BlbmRUaW1lcjsKLSAgICB1bnNpZ25lZCBtX2ZvcmVn
cm91bmRDb3VudDsKLSAgICB1bnNpZ25lZCBtX2JhY2tncm91bmRDb3VudDsKKyAgICBSZWZDb3Vu
dGVyIG1fZm9yZWdyb3VuZENvdW50ZXI7CisgICAgUmVmQ291bnRlciBtX2JhY2tncm91bmRDb3Vu
dGVyOwogICAgIGludCBtX3N1c3BlbmRNZXNzYWdlQ291bnQ7CiB9OwogICAgIAoraW5saW5lIFBy
b2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eVRva2VuIFByb2Nlc3NUaHJvdHRsZXI6
OmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRm9yZWdyb3Vu
ZEFjdGl2aXR5VG9rZW4obV9mb3JlZ3JvdW5kQ291bnRlci5jb3VudCgpKTsKK30KKworaW5saW5l
IFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIFByb2Nlc3NUaHJvdHRs
ZXI6OmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4obV9iYWNrZ3JvdW5kQ291bnRlci5jb3VudCgpKTsKK30KKyAgICAK
IH0KIAogI2VuZGlmIC8vIFByb2Nlc3NUaHJvdHRsZXJfaApJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE3NzQyMikKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjc1
LDcgKzEyNzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aXZpdHlUb2tlbigpCiAg
ICAgaWYgKCFpc1ZpZXdWaXNpYmxlKCkpCiAgICAgICAgIG1fYWN0aXZpdHlUb2tlbiA9IG51bGxw
dHI7CiAgICAgZWxzZSBpZiAoIW1fYWN0aXZpdHlUb2tlbikKLSAgICAgICAgbV9hY3Rpdml0eVRv
a2VuID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZp
dHlUb2tlbj4obV9wcm9jZXNzLT50aHJvdHRsZXIoKSk7CisgICAgICAgIG1fYWN0aXZpdHlUb2tl
biA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKTsKICNl
bmRpZgogfQogCkBAIC0xMzUwLDcgKzEzNTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRh
dGVDb21tYW5kKGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
c3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bj4obV9wcm9jZXNzLT50aHJvdHRsZXIoKSkpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yMzUxLDcgKzIzNTEsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbj4obV9wcm9jZXNzLT50aHJvdHRsZXIoKSkpOworICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KHNjcmlwdCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtMjM2Miw3ICsyMzYyLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbAogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NU
aHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPihtX3Byb2Nlc3MtPnRocm90dGxlcigp
KSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRS
ZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC0yMzczLDcgKzIzNzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9y
RnJhbWUoV2ViCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHN0
ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+
KG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRT
dHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZXRTb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAtMjM4NSw3ICsyMzg1LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmcocwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eVRva2VuPihtX3Byb2Nlc3MtPnRocm90dGxlcigpKSk7CisgICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAg
ICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAtMjM5Nyw3ICsyMzk3LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShzdAogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NUaHJvdHRsZXI6OkJh
Y2tncm91bmRBY3Rpdml0eVRva2VuPihtX3Byb2Nlc3MtPnRocm90dGxlcigpKSk7CisgICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxl
KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CkBAIC0yNDEwLDcgKzI0MTAsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc01IVE1MRGF0CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURjo6bW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbj4obV9wcm9jZXNzLT50aHJvdHRsZXIoKSkpOworICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc01IVE1M
RGF0YShjYWxsYmFja0lELCB1c2VCaW5hcnlFbmNvZGluZyksIG1fcGFnZUlEKTsKIH0KICNlbmRp
ZgpAQCAtMjQyMiw3ICsyNDIyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9y
Q29udGVudAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBzdGQ6
Om1ha2VfdW5pcXVlPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPiht
X3Byb2Nlc3MtPnRocm90dGxlcigpKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKIH0KIApAQCAtMjQzMyw3ICsyNDMzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmdldFNlbGVjdGlvbkFzV2ViQXJjaAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91
bmRBY3Rpdml0eVRva2VuPihtX3Byb2Nlc3MtPnRocm90dGxlcigpKSk7CisgICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Bc1dlYkFyY2hp
dmVEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTI0NDQsNyArMjQ0NCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2YKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzVGhy
b3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4obV9wcm9jZXNzLT50aHJvdHRsZXIoKSkp
OworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKIH0KIApAQCAtMjQ1NSw3ICsyNDU1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJl
c291cmNlRGF0YUZyb21GcgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0
eVRva2VuPihtX3Byb2Nlc3MtPnRocm90dGxlcigpKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoZnJhbWUt
PmZyYW1lSUQoKSwgcmVzb3VyY2VVUkwtPnN0cmluZygpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQp
OwogfQogCkBAIC0yNDY2LDcgKzI0NjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4+KG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFdlYkFyY2hpdmVPZkZyYW1lKGZyYW1lLT5mcmFtZUlE
KCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTUyMjYsNyArNTIyNiw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFzeW5jKHMKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjpt
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NUaHJvdHRsZXI6
OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPihtX3Byb2Nlc3MtPnRocm90dGxlcigpKSk7CisgICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7CiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdl
QXN5bmMoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNTIzNyw3ICs1MjM3LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGVkUmFuZ2VBc3luYwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6
Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc1Rocm90dGxl
cjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+KG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkpKTsKKyAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0ZWRS
YW5nZUFzeW5jKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTUyNDgsNyArNTI0OCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW4KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NUaHJv
dHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPihtX3Byb2Nlc3MtPnRocm90dGxlcigpKSk7
CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYXJhY3Rl
ckluZGV4Rm9yUG9pbnRBc3luYyhwb2ludCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApA
QCAtNTI1OSw3ICs1MjU5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJh
Y3RlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHN0ZDo6bWFrZV91
bmlxdWU8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+KG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6Rmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNTI5MSw3ICs1MjkxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnRha2VTbmFwc2hvdChJbnRSZWN0IAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4+KG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkpKTsKKyAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hvdChyZWN0LCBiaXRtYXBT
aXplLCBvcHRpb25zLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC01MzcyLDcgKzUz
NzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zdGFsbFZpZXdTdGF0ZUNoYW5nCiAgICAgUmVm
UHRyPFZvaWRDYWxsYmFjaz4gdm9pZENhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoW2Nv
cGllZENvbXBsZXRpb25IYW5kbGVyXSAoQ2FsbGJhY2tCYXNlOjpFcnJvcikgewogICAgICAgICBj
b3BpZWRDb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBCbG9ja19yZWxlYXNlKGNvcGllZENv
bXBsZXRpb25IYW5kbGVyKTsKLSAgICB9LCBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPihtX3Byb2Nlc3MtPnRocm90dGxlcigpKSk7Cisg
ICAgfSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
ICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KHZvaWRDYWxsYmFjay5y
ZWxlYXNlKCkpOwogICAgIG1fbmV4dFZpZXdTdGF0ZUNoYW5nZUNhbGxiYWNrcy5hcHBlbmQoY2Fs
bGJhY2tJRCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CShyZXZpc2lvbiAxNzc0MjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MTUsNyArMTQxNSw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3ZpZXdXYXNFdmVySW5XaW5kb3c7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eVRva2VuPiBt
X2FjdGl2aXR5VG9rZW47CisgICAgUHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5
VG9rZW4gbV9hY3Rpdml0eVRva2VuOwogI2VuZGlmCiAgICAgICAgIAogICAgIFJlZjxXZWJCYWNr
Rm9yd2FyZExpc3Q+IG1fYmFja0ZvcndhcmRMaXN0OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDE3NzQyMikKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NTQsNyArNzU0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldElzSG9sZGluZ0xvY2tl
ZAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICghbV90b2tlbkZvckhvbGRpbmdMb2Nr
ZWRGaWxlcykKLSAgICAgICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+KCptX3Ro
cm90dGxlcik7CisgICAgICAgIG1fdG9rZW5Gb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBtX3Rocm90
dGxlci0+YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShy
ZXZpc2lvbiAxNzc0MjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw3ICsyMTksNyBAQCBwcml2YXRlOgogCiAgICAg
aW50IG1fbnVtYmVyT2ZUaW1lc1N1ZGRlblRlcm1pbmF0aW9uV2FzRGlzYWJsZWQ7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI+IG1fdGhyb3R0bGVyOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4gbV90b2tl
bkZvckhvbGRpbmdMb2NrZWRGaWxlczsKKyAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5oCShyZXZpc2lvbiAxNzc0MjIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4
NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgIH0gbV9oaXN0b3J5RGVsZWdhdGVNZXRob2RzOwog
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVy
OjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9hY3Rpdml0eVRva2VuOworICAgIFByb2Nlc3NU
aHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKICNlbmRp
ZgogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAxNzc0MjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MTUsNyAr
ODE1LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OmRpZENoYW5nZUlzTG9hZGluZwogewogI2lm
IFBMQVRGT1JNKElPUykKICAgICBpZiAobV93ZWJWaWV3LT5fcGFnZS0+cGFnZUxvYWRTdGF0ZSgp
LmlzTG9hZGluZygpKQotICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBzdGQ6Om1ha2VfdW5pcXVl
PFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPihtX3dlYlZpZXctPl9w
YWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkpOworICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBt
X3dlYlZpZXctPl9wYWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fYWN0aXZpdHlUb2tlbiA9IG51bGxwdHI7CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCShyZXZpc2lvbiAxNzc0MjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzY1LDcgKzM2NSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZShjb24KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
Ojptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPihtX3Byb2Nlc3MtPnRocm90dGxlcigpKSk7Cisg
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXaXRo
R2VzdHVyZShwb2ludCwgKHVpbnQzMl90KWdyYW51bGFyaXR5LCBnZXN0dXJlVHlwZSwgZ2VzdHVy
ZVN0YXRlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0zNzYsNyArMzc2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhUbwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6
Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc1Rocm90dGxl
cjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+KG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkpKTsKKyAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVj
dGlvbldpdGhUb3VjaGVzKHBvaW50LCB0b3VjaGVzLCBiYXNlSXNTdGFydCwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKIH0KICAgICAKQEAgLTM5Nyw3ICszOTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbj4obV9wcm9jZXNzLT50aHJvdHRsZXIoKSkpOworICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YSh0
ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTQw
OCw3ICs0MDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihjCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgc3RkOjptYWtlX3VuaXF1ZTxQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4obV9wcm9jZXNzLT50aHJv
dHRsZXIoKSkpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
Ojptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6QXBwbHlBdXRvY29ycmVjdGlvbihjb3JyZWN0aW9uLCBvcmlnaW5hbFRleHQsIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZXhlY3V0ZUVkaXRDb21tYW5kKGNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0g
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4+KG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkpKTsKKyAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhD
YWxsYmFjayhjb21tYW5kTmFtZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNDM3
LDcgKzQzNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RUZXh0V2l0aEdyYW51bGEKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgc3RkOjptYWtlX3VuaXF1
ZTxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4obV9wcm9jZXNzLT50
aHJvdHRsZXIoKSkpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQocG9pbnQsIHN0YXRpY19jYXN0
PHVpbnQzMl90PihncmFudWxhcml0eSksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAg
LTQ0OCw3ICs0NDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5k
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHN0ZDo6bWFrZV91
bmlxdWU8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+KG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24ocG9pbnQsIHN0
YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIHN0YXRpY19jYXN0PHVpbnQzMl90Pihk
aXJlY3Rpb24pLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC00NTksNyArNDU5LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRQb2ludAogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NU
aHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPihtX3Byb2Nlc3MtPnRocm90dGxlcigp
KSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxl
Y3RQb3NpdGlvbkF0UG9pbnQocG9pbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAg
LTQ3MCw3ICs0NzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TZWxlY3Rpb25JbkRpcmVj
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHN0ZDo6bWFrZV91
bmlxdWU8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+KG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC00ODEsNyArNDgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnVwZGF0ZVNlbGVjdGlvbldpdGhFeAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAg
IHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRB
Y3Rpdml0eVRva2VuPihtX3Byb2Nlc3MtPnRocm90dGxlcigpKSk7CisgICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50
UG9pbnQocG9pbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiAgICAgCiB9CkBAIC00OTMsNyAr
NDkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3REaWN0YXRpb25Db250ZQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vz
c1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+KG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURjo6bW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJl
cXVlc3REaWN0YXRpb25Db250ZXh0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTUw
NCw3ICs1MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgc3RkOjptYWtlX3VuaXF1ZTxQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4obV9wcm9jZXNzLT50aHJv
dHRsZXIoKSkpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
Ojptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC01MjAsNyArNTIwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhUd29U
b3VjaGVzKAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIHN0ZDo6bWFr
ZV91bmlxdWU8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+KG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNlbGVjdFdpdGhUd29Ub3VjaGVzKGZyb20sIHRvLCBnZXN0dXJlVHlwZSwg
Z2VzdHVyZVN0YXRlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02MDgsNyArNjA4
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25CeU9mZnNldAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nl
c3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPihtX3Byb2Nlc3MtPnRocm90dGxl
cigpKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpN
b3ZlU2VsZWN0aW9uQnlPZmZzZXQob2Zmc2V0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQog
CkBAIC04MDcsNyArODA3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvY3VzTmV4dEFzc2lzdGVk
Tm9kZQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBzdGQ6Om1h
a2VfdW5pcXVlPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPihtX3By
b2Nlc3MtPnRocm90dGxlcigpKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkZvY3VzTmV4dEFzc2lzdGVkTm9kZShpc0ZvcndhcmQsIGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCShyZXZpc2lvbiAxNzc0MjIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEy
LDcgKzMxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Vic3RyaW5nRm8KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBzdGQ6Om1ha2VfdW5pcXVlPFBy
b2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuPihtX3Byb2Nlc3MtPnRocm90
dGxlcigpKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6
Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7CiAKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6QXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9Cg==
</data>
<flag name="review"
          id="268339"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>