<?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>167454</bug_id>
          
          <creation_ts>2017-01-26 04:32:27 -0800</creation_ts>
          <short_desc>[JSC] Optimize Number.prototype.toString on Int32 / Int52 / Double</short_desc>
          <delta_ts>2017-03-21 04:31:54 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1270178</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-26 04:32:27 -0800</bug_when>
    <thetext>[JSC] Optimize Number.prototype.toString on Int32 / Int52 / Double</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270185</commentid>
    <comment_count>1</comment_count>
      <attachid>299804</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-26 06:03:03 -0800</bug_when>
    <thetext>Created attachment 299804
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270216</commentid>
    <comment_count>2</comment_count>
      <attachid>299804</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-26 09:57:51 -0800</bug_when>
    <thetext>Comment on attachment 299804
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGOperations.h:162
&gt; +char* JIT_OPERATION operationInt32ToString(ExecState*, int32_t, int32_t);

Why not make these return JSCell*?

&gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:407
&gt; +                            result = String::numberToStringECMAScript(value.asNumber());

Why not always call this?

&gt; Source/JavaScriptCore/runtime/StringConstructor.cpp:47
&gt; +  fromCharCode          stringFromCharCode         DontEnum|Function 1 FromCharCodeIntrinsic

I think this should be a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270218</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-26 09:58:43 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 299804 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=299804&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGOperations.h:162
&gt; &gt; +char* JIT_OPERATION operationInt32ToString(ExecState*, int32_t, int32_t);
&gt; 
&gt; Why not make these return JSCell*?
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:407
&gt; &gt; +                            result = String::numberToStringECMAScript(value.asNumber());
&gt; 
&gt; Why not always call this?
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/StringConstructor.cpp:47
&gt; &gt; +  fromCharCode          stringFromCharCode         DontEnum|Function 1 FromCharCodeIntrinsic
&gt; 
&gt; I think this should be a separate patch.
Also please fix 32-bit and windows build issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270656</commentid>
    <comment_count>4</comment_count>
      <attachid>299804</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-27 08:51:32 -0800</bug_when>
    <thetext>Comment on attachment 299804
Patch

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

Thanks!

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGOperations.h:162
&gt;&gt;&gt; +char* JIT_OPERATION operationInt32ToString(ExecState*, int32_t, int32_t);
&gt;&gt; 
&gt;&gt; Why not make these return JSCell*?
&gt; 
&gt; Also please fix 32-bit and windows build issues.

This is because the signatures of these functions are typedefed as P_ (returning pointer) to reuse the existing implementation of callOperation.
I&apos;ll check Win32 build issue.

&gt;&gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:407
&gt;&gt; +                            result = String::numberToStringECMAScript(value.asNumber());
&gt; 
&gt; Why not always call this?

I followed the style of the ValueAdd case. But maybe, calling numberToStringECMAScript is OK.
I&apos;ll check that.

&gt;&gt; Source/JavaScriptCore/runtime/StringConstructor.cpp:47
&gt;&gt; +  fromCharCode          stringFromCharCode         DontEnum|Function 1 FromCharCodeIntrinsic
&gt; 
&gt; I think this should be a separate patch.

I&apos;ve just uploaded this part in the separate patch :)
https://bugs.webkit.org/show_bug.cgi?id=167505</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270670</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-27 09:59:31 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 299804 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=299804&amp;action=review
&gt; 
&gt; Thanks!
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGOperations.h:162
&gt; &gt;&gt;&gt; +char* JIT_OPERATION operationInt32ToString(ExecState*, int32_t, int32_t);
&gt; &gt;&gt; 
&gt; &gt;&gt; Why not make these return JSCell*?
&gt; &gt; 
&gt; &gt; Also please fix 32-bit and windows build issues.
&gt; 
&gt; This is because the signatures of these functions are typedefed as P_
&gt; (returning pointer) to reuse the existing implementation of callOperation.
&gt; I&apos;ll check Win32 build issue.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp:407
&gt; &gt;&gt; +                            result = String::numberToStringECMAScript(value.asNumber());
&gt; &gt; 
&gt; &gt; Why not always call this?
&gt; 
&gt; I followed the style of the ValueAdd case. But maybe, calling
&gt; numberToStringECMAScript is OK.
&gt; I&apos;ll check that.
I think it&apos;s OK to be consistent with what Add does here.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/StringConstructor.cpp:47
&gt; &gt;&gt; +  fromCharCode          stringFromCharCode         DontEnum|Function 1 FromCharCodeIntrinsic
&gt; &gt; 
&gt; &gt; I think this should be a separate patch.
&gt; 
&gt; I&apos;ve just uploaded this part in the separate patch :)
&gt; https://bugs.webkit.org/show_bug.cgi?id=167505</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289728</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-21 01:11:05 -0700</bug_when>
    <thetext>Oops, I forgot this patch! I&apos;ll land it with pointed fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289745</commentid>
    <comment_count>7</comment_count>
      <attachid>304995</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-21 03:38:34 -0700</bug_when>
    <thetext>Created attachment 304995
Patch

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289756</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-21 04:31:54 -0700</bug_when>
    <thetext>Committed r214219: &lt;http://trac.webkit.org/changeset/214219&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299804</attachid>
            <date>2017-01-26 06:03:03 -0800</date>
            <delta_ts>2017-01-26 09:57:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167454-20170126230100.patch</filename>
            <type>text/plain</type>
            <size>54971</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
Yjc3MjY1NWQ2ZjI2MGVhZDEzODcwN2VlZDQyYmViODVhYjc4YmQ3Li4zYTljYmI5ZDM5MGY3N2I0
YmEzZjlmZDc1ZjM4NDJhMTQyYWExNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxNy0wMS0yNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBOdW1iZXIucHJvdG90eXBlLnRvU3RyaW5n
IG9uIEludDMyIC8gSW50NTIgLyBEb3VibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NzQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlIGNhbiBzZWUgMC44IC0gMS4zICUgcGVyZm9ybWFuY2UgaW1w
cm92ZW1lbnQgaW4ga3Jha2VuIGNyeXB0byBzaGEyNTYuCisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAgICAg
ICAgIHBhdGNoZWQKKworICAgICAgICAgICAgc3RhbmZvcmQtY3J5cHRvLXNoYTI1Ni1pdGVyYXRp
dmUgICAgICAgIDMyLjM1MCstMC4wNDYgICAgICBeICAgICAgMzIuMDg1Ky0wLjA0MiAgICAgICAg
IF4gZGVmaW5pdGVseSAxLjAwODN4IGZhc3RlcgorCisgICAgICAgICogY3JlYXRlX2hhc2hfdGFi
bGU6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKToKKyAg
ICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJp
emUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRv
ZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6Zml4dXBUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
ICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRv
U3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbk51bWJlcik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25Q
aGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9TdHJpbmdPckNhbGxT
dHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeCk6CisgICAgICAgICogaml0L0NDYWxsSGVs
cGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBydW50
aW1lL0ludHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6aW50NTJUb1N0cmluZ1dpdGhSYWRpeCk6CisgICAgICAgIChKU0M6Omlu
dDMyVG9TdHJpbmdJbnRlcm5hbCk6CisgICAgICAgIChKU0M6Om51bWJlclRvU3RyaW5nSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjppbnQzMlRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6aW50NTJU
b1N0cmluZyk6CisgICAgICAgIChKU0M6Om51bWJlclRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6
bnVtYmVyUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjppbnRlZ2VyVmFsdWVUb1N0
cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaDoKKyAg
ICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorCiAyMDE3LTAxLTI0ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgRm9sZCBVU0VSX1RJTUlORyBpbnRvIFdFQl9USU1JTkcgYW5k
IG1ha2UgaXQgYSBSdW50aW1lRW5hYmxlZEZlYXR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVh
dGVfaGFzaF90YWJsZQppbmRleCAyOGRmNmU3MjdhZWY2YWJiMzA0M2Y5NzQ3MjdhNzg4NWJmM2Nh
ZDAzLi5kMDIwZjAyZGIwZTIyYjllM2QyMTg5ZjA5NGVkMTg1YTRhYTlhZGFmIDEwMDc1NQotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCkBAIC03NiwxMSArNzYsMTIgQEAgd2hpbGUg
KDxJTj4pIHsKICAgICAgICAgJGluY2x1ZGVCdWlsdGluID0gMDsKIAogICAgICAgICAkaW5zaWRl
ID0gMDsKLSAgICB9IGVsc2lmICgvXihcUyspXHMqKFxTKylccyooW1x3XHxdKilccyooXHcqKVxz
KiQvICYmICRpbnNpZGUpIHsKKyAgICB9IGVsc2lmICgvXihcUyspXHMqKFxTKylccyooW1x3XHxd
KilccyooXHcqKVxzKihcdyopXHMqJC8gJiYgJGluc2lkZSkgewogICAgICAgICBteSAka2V5ID0g
JDE7CiAgICAgICAgIG15ICR2YWwgPSAkMjsKICAgICAgICAgbXkgJGF0dCA9ICQzOwogICAgICAg
ICBteSAkcGFyYW0gPSAkNDsKKyAgICAgICAgbXkgJGludHJpbnNpYyA9ICQ1OwogCiAgICAgICAg
IHB1c2goQGtleXMsICRrZXkpOwogICAgICAgICBwdXNoKEBhdHRycywgbGVuZ3RoKCRhdHQpID4g
MCA/ICRhdHQgOiAiMCIpOwpAQCAtOTAsNyArOTEsNyBAQCB3aGlsZSAoPElOPikgewogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKCRhdHQgPX4gbS9GdW5jdGlvbi8pIHsKLSAgICAgICAgICAgIHB1
c2goQHZhbHVlcywgeyAidHlwZSIgPT4gIkZ1bmN0aW9uIiwgImZ1bmN0aW9uIiA9PiAkdmFsLCAi
cGFyYW1zIiA9PiAobGVuZ3RoKCRwYXJhbSkgPyAkcGFyYW0gOiAiIikgfSk7CisgICAgICAgICAg
ICBwdXNoKEB2YWx1ZXMsIHsgInR5cGUiID0+ICJGdW5jdGlvbiIsICJmdW5jdGlvbiIgPT4gJHZh
bCwgInBhcmFtcyIgPT4gKGxlbmd0aCgkcGFyYW0pID8gJHBhcmFtIDogIiIpLCAiaW50cmluc2lj
IiA9PiAobGVuZ3RoKCRpbnRyaW5zaWMpID8gJGludHJpbnNpYyA6ICJOb0ludHJpbnNpYyIpIH0p
OwogICAgICAgICAgICAgI3ByaW50ZiBTVERFUlIgIldBUk5JTkc6IE51bWJlciBvZiBhcmd1bWVu
dHMgbWlzc2luZyBmb3IgJGtleS8kdmFsXG4iIGlmIChsZW5ndGgoJHBhcmFtKSA9PSAwKTsKICAg
ICAgICAgfSBlbHNpZiAoJGF0dCA9fiBtL0FjY2Vzc29yLykgewogICAgICAgICAgICAgbXkgJGdl
dCA9ICR2YWw7CkBAIC0zMDEsMTEgKzMwMiwxMyBAQCBzdWIgb3V0cHV0KCkgewogICAgICAgICBt
eSAkc2Vjb25kVmFsdWUgPSAiIjsKICAgICAgICAgbXkgJGZpcnN0Q2FzdFN0ciA9ICIiOwogICAg
ICAgICBteSAkc2Vjb25kQ2FzdFN0ciA9ICIiOworICAgICAgICBteSAkaW50cmluc2ljID0gIk5v
SW50cmluc2ljIjsKIAogICAgICAgICBpZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiRnVuY3Rp
b24iKSB7CiAgICAgICAgICAgICAkZmlyc3RDYXN0U3RyID0gInN0YXRpY19jYXN0PE5hdGl2ZUZ1
bmN0aW9uPiI7CiAgICAgICAgICAgICAkZmlyc3RWYWx1ZSA9ICR2YWx1ZXNbJGldeyJmdW5jdGlv
biJ9OwogICAgICAgICAgICAgJHNlY29uZFZhbHVlID0gJHZhbHVlc1skaV17InBhcmFtcyJ9Owor
ICAgICAgICAgICAgJGludHJpbnNpYyA9ICR2YWx1ZXNbJGldeyJpbnRyaW5zaWMifTsKICAgICAg
ICAgfSBlbHNpZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiQWNjZXNzb3IiKSB7CiAgICAgICAg
ICAgICAkZmlyc3RDYXN0U3RyID0gInN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPiI7CiAgICAg
ICAgICAgICAkc2Vjb25kQ2FzdFN0ciA9ICJzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4iOwpA
QCAtMzI5LDEzICszMzIsNiBAQCBzdWIgb3V0cHV0KCkgewogICAgICAgICAgICAgJHNlY29uZFZh
bHVlID0gIjAiOwogICAgICAgICB9CiAKLSAgICAgICAgbXkgJGludHJpbnNpYyA9ICJOb0ludHJp
bnNpYyI7Ci0gICAgICAgICRpbnRyaW5zaWMgPSAiRnJvbUNoYXJDb2RlSW50cmluc2ljIiBpZiAo
JGtleSBlcSAiZnJvbUNoYXJDb2RlIik7Ci0gICAgICAgIGlmICgkbmFtZSBlcSAiYXJyYXlQcm90
b3R5cGVUYWJsZSIpIHsKLSAgICAgICAgICAgICRpbnRyaW5zaWMgPSAiQXJyYXlQdXNoSW50cmlu
c2ljIiBpZiAoJGtleSBlcSAicHVzaCIpOwotICAgICAgICAgICAgJGludHJpbnNpYyA9ICJBcnJh
eVBvcEludHJpbnNpYyIgaWYgKCRrZXkgZXEgInBvcCIpOwotICAgICAgICB9Ci0KICAgICAgICAg
aWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9uIiAmJiAkZmlyc3RWYWx1ZSBlcSAi
SlNCdWlsdGluIikgIHsKICAgICAgICAgICAgIG15ICR0YWJsZUhlYWQgPSAkbmFtZTsKICAgICAg
ICAgICAgICR0YWJsZUhlYWQgPX4gcy9UYWJsZSQvLzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBh
ZDhlYzRhODM5OGNhMDdiNWMzZjJkMzgzMzQyZDAwNTgwMTIzYWRjLi5jMzJmZTY2MGQ4Y2I3NGE1
ZDk1MTcxMTg4YjY2ZjhjOTlkNTEzMTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xODU5LDYg
KzE4NTksOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgICAgIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnN0cmluZ09iamVjdFN0
cnVjdHVyZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0cmluZ09yU3Ry
aW5nT2JqZWN0VXNlOgorICAgICAgICBjYXNlIEludDMyVXNlOgorICAgICAgICBjYXNlIEludDUy
UmVwVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENlbGxVc2U6CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKQEAgLTE4NzEs
NiArMTg3NCwxMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLm1fdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeDoK
KyAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbV9ncmFwaC5tX3ZtLnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIE5ld1N0
cmluZ09iamVjdDogewogICAgICAgICBBU1NFUlQobm9kZS0+c3RydWN0dXJlKCktPmNsYXNzSW5m
bygpID09IFN0cmluZ09iamVjdDo6aW5mbygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMGFjMzI1MGM1OWE0NGEzMzI2NGFmOWZi
MWM0NmUzMmI4YTkyOGJiZS4uNmE0M2I3ZjNiMjgyMWI3MmE4ZDdlYjQ3ZjgxMjhkNjBkN2QzNGE4
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKQEAgLTI2ODcsNyArMjY4Nyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJp
bnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGNhc2UgVG9Mb3dlckNhc2VJbnRyaW5zaWM6IHsK
KyAgICBjYXNlIFN0cmluZ1Byb3RvdHlwZVRvTG93ZXJDYXNlSW50cmluc2ljOiB7CiAgICAgICAg
IGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAxKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC0yNzAxLDYgKzI3MDEsMjYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW4K
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgY2FzZSBOdW1iZXJQcm90b3R5cGVU
b1N0cmluZ0ludHJpbnNpYzogeworICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgIT0gMSAmJiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9m
aWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBpbnNlcnRDaGVja3MoKTsKKyAgICAgICAgTm9kZSogdGhp
c051bWJlciA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNl
dCkpOworICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPT0gMSkgeworICAg
ICAgICAgICAgTm9kZSogcmVzdWx0ID0gYWRkVG9HcmFwaChUb1N0cmluZywgdGhpc051bWJlcik7
CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCByZXN1bHQp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTm9kZSogcmFkaXggPSBnZXQodmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgIE5v
ZGUqIHJlc3VsdCA9IGFkZFRvR3JhcGgoTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXgsIHRoaXNOdW1i
ZXIsIHJhZGl4KTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFu
ZCksIHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggNjE5ZjI3NDgyNmViMjM1ODUzZDNlM2Jj
M2NlNjM4YzNiMjQ5MzM0Ni4uYWVmNTc4ODlmZDlmNWM4MDRmNWVkZTZkZDBjYzBiOWI1OWQyMmUy
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTEzODks
NiArMTM4OSwxMiBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBj
b25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICAgICAgcmVhZChX
b3JsZCk7CiAgICAgICAgICAgICB3cml0ZShIZWFwKTsKICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBjYXNlIEludDMyVXNlOgorICAgICAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAg
ICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwor
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTQzNCw2ICsxNDQwLDEw
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToKICAgICAg
ICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgTnVt
YmVyVG9TdHJpbmdXaXRoUmFkaXg6CisgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOworICAg
ICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCmluZGV4IGNkYzA0MDY5MTdhYzdmNTk0MTFkMTJlMTIzZWIyNmI3MWY5NDlhMWUu
LjM1ZGRmN2U5MjUwNjYzZDRjNWMyOTU0OTY4NmY4OGE5NGRjOTNjZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTE3OCw2ICsxNzgsNyBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUb051bWJlcjoKICAgICBjYXNl
IFRvU3RyaW5nOgogICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOgorICAgIGNhc2UgTnVt
YmVyVG9TdHJpbmdXaXRoUmFkaXg6CiAgICAgY2FzZSBJbjoKICAgICBjYXNlIEhhc093blByb3Bl
cnR5OgogICAgIGNhc2UgSnVtcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCmluZGV4IDFhZDdiYzFhZTNlMTBmY2E1OTZkY2I4N2NjNDNiNjBhZjkzMmI3MmYu
LjZmODJmZTkyZWJmMjEzZDA5YmZmNDBjMTczYzFmZGY4OWJlYzE2NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTc1MSw2ICsxNzUxLDE3IEBA
IGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAorICAgICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OiB7CisgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCisgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgZWxzZSBpZiAoZW5hYmxlSW50NTIoKSAmJiBub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlQW55SW50KCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91
YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNl
Pihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAg
ICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eTogewogICAgICAgICAgICAgZml4RWRnZTxD
ZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICAgICAgICAgIEVkZ2Um
IHByb3BlcnR5RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSk7CkBAIC0yMjA4LDYg
KzIyMTksMjQgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQorCisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRl
SW50MzIoKSkgeworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChlbmFibGVJbnQ1MigpICYm
IG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVBbnlJbnQoKSkgeworICAgICAgICAgICAg
Zml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+
Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVy
KCkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCiAgICAgYm9vbCBhdHRlbXB0VG9NYWtl
RmFzdFN0cmluZ0FkZChOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCmluZGV4IDZhZjRiMzUyZjk0NDZlMDVhMzlhNGJhZjE5YWU0M2Y1Njc2MjVmNDUuLmM5
MzM4MDMwZDU1MTg3OTA4ZmRiMWIzZGNhMDc3OTU4NWM4NGJlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTMzNCw2ICszMzQsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oVG9OdW1iZXIsIE5vZGVSZXN1bHRKUyB8IE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDYWxsT2JqZWN0Q29uc3RydWN0b3IsIE5vZGVS
ZXN1bHRKUykgXAogICAgIG1hY3JvKENhbGxTdHJpbmdDb25zdHJ1Y3RvciwgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKE51bWJlclRvU3RyaW5nV2l0aFJhZGl4
LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhOZXdTdHJpbmdPYmplY3QsIE5vZGVSZXN1bHRK
UykgXAogICAgIG1hY3JvKE1ha2VSb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhJbiwg
Tm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBlODIzOWIxY2FlMmM0NGI4MGEzZjc0
ZDkwNTM0NDM0ODk5NzFmYTM4Li4yZGYyNjAwMGNiYWJlNWYxZTU2MDM5MGFkODQwMjUxNmMzNDBi
NGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAg
LTE1ODksNiArMTU4OSw3NSBAQCBKU1N0cmluZyogSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub0xv
d2VyQ2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcsCiAgICAgcmV0dXJuIGpz
U3RyaW5nKGV4ZWMsIGxvd2VyY2FzZWRTdHJpbmcpOwogfQogCitjaGFyKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkludDMyVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBpbnQzMl90IHZhbHVlLCBp
bnQzMl90IHJhZGl4KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHJhZGl4IDwgMiB8fCByYWRpeCA+IDM2KSB7
CisgICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoInRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVu
IDIgYW5kIDM2IikpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGludDMyVG9TdHJpbmcodm0sIHZhbHVlLCByYWRp
eCkpOworfQorCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkludDUyVG9TdHJpbmcoRXhl
Y1N0YXRlKiBleGVjLCBpbnQ2NF90IHZhbHVlLCBpbnQzMl90IHJhZGl4KQoreworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4
ZWMpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
aWYgKHJhZGl4IDwgMiB8fCByYWRpeCA+IDM2KSB7CisgICAgICAgIHRocm93Vk1FcnJvcihleGVj
LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvU3RyaW5nKCkg
cmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2IikpKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGludDUyVG9TdHJpbmcodm0sIHZhbHVlLCByYWRpeCkpOworfQorCitjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRvdWJsZVRvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlIHZhbHVl
LCBpbnQzMl90IHJhZGl4KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHJhZGl4IDwgMiB8fCByYWRpeCA+IDM2
KSB7CisgICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoInRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3
ZWVuIDIgYW5kIDM2IikpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG51bWJlclRvU3RyaW5nKHZtLCB2YWx1ZSwg
cmFkaXgpKTsKK30KKworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25JbnQzMlRvU3RyaW5n
V2l0aFZhbGlkUmFkaXgoRXhlY1N0YXRlKiBleGVjLCBpbnQzMl90IHZhbHVlLCBpbnQzMl90IHJh
ZGl4KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGludDMyVG9TdHJpbmcodm0sIHZhbHVlLCByYWRpeCkpOworfQorCitjaGFyKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkludDUyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeChFeGVjU3RhdGUqIGV4
ZWMsIGludDY0X3QgdmFsdWUsIGludDMyX3QgcmFkaXgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oaW50NTJUb1N0cmluZyh2bSwgdmFsdWUs
IHJhZGl4KSk7Cit9CisKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRG91YmxlVG9TdHJp
bmdXaXRoVmFsaWRSYWRpeChFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSB2YWx1ZSwgaW50MzJfdCBy
YWRpeCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNo
YXIqPihudW1iZXJUb1N0cmluZyh2bSwgdmFsdWUsIHJhZGl4KSk7Cit9CisKIEpTU3RyaW5nKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblNpbmdsZUNoYXJhY3RlclN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMsIGludDMyX3QgY2hhcmFjdGVyKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDA0MDRjNDEyMGRlYzAz
OGRmZjI1ZjA5MDllMzdkZjBkM2M1YzM3ODQuLjg2MzhhZDAzZmIwYzZmOWViZTMyYjE4YTc3ZThi
YWJhMDM4NDI4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CkBAIC0xNTksNiArMTU5LDEzIEBAIEpTU3RyaW5nKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNp
bmdsZUNoYXJhY3RlclN0cmluZyhFeGVjU3RhdGUqLCBpbnQzMl90KTsKIAogSlNTdHJpbmcqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVG9Mb3dlckNhc2UoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCB1
aW50MzJfdCk7CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW50MzJUb1N0cmluZyhF
eGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uSW50NTJUb1N0cmluZyhFeGVjU3RhdGUqLCBpbnQ2NF90LCBpbnQzMl90KTsKK2NoYXIqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRG91YmxlVG9TdHJpbmcoRXhlY1N0YXRlKiwgZG91YmxlLCBp
bnQzMl90KTsKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW50MzJUb1N0cmluZ1dpdGhW
YWxpZFJhZGl4KEV4ZWNTdGF0ZSosIGludDMyX3QsIGludDMyX3QpOworY2hhciogSklUX09QRVJB
VElPTiBvcGVyYXRpb25JbnQ1MlRvU3RyaW5nV2l0aFZhbGlkUmFkaXgoRXhlY1N0YXRlKiwgaW50
NjRfdCwgaW50MzJfdCk7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRvdWJsZVRvU3Ry
aW5nV2l0aFZhbGlkUmFkaXgoRXhlY1N0YXRlKiwgZG91YmxlLCBpbnQzMl90KTsKKwogaW50MzJf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hcEhhc2goRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUgaW5wdXQpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkpTTWFwRmluZEJ1Y2tl
dChFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7CiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSlNTZXRGaW5kQnVja2V0KEV4ZWNTdGF0ZSosIEpTQ2Vs
bCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXgg
ZDBmNGI0NzJhODUyZWY2NTdjYWZjNTMyZjYwNTQzNmE0NDkyY2RlZC4uNTQ3ZjcwNGIyM2JhOTg0
Y2MxMGE4ODBiNzhkMGI4OGM2NjAzNjFhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTg5
Nyw2ICs4OTcsNyBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OgogICAgICAgICBjYXNlIENhbGxTdHJp
bmdDb25zdHJ1Y3RvcjoKICAgICAgICAgY2FzZSBUb1N0cmluZzoKKyAgICAgICAgY2FzZSBOdW1i
ZXJUb1N0cmluZ1dpdGhSYWRpeDoKICAgICAgICAgY2FzZSBNYWtlUm9wZToKICAgICAgICAgY2Fz
ZSBTdHJDYXQ6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY1N0cmluZyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDdiNWFmOTVj
ZjBiYzI0Yzg5NTg0NjQzNTE5MjM3YzE2OTFhNmQ2NDQuLjVlYjYxMTFkMTA0ODYzZmFhYjdhMjM5
MzViYWE4OTY4MjNmMWM4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCkBAIC0yODcsNiArMjg3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2Ug
VG9QcmltaXRpdmU6CiAgICAgY2FzZSBUb1N0cmluZzoKICAgICBjYXNlIFRvTnVtYmVyOgorICAg
IGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6CiAgICAgY2FzZSBTZXRGdW5jdGlvbk5hbWU6
CiAgICAgY2FzZSBTdHJDYXQ6CiAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDA1
ZDc2ZmE5Yjk3ZDZmY2VmYzE0MGNjYjc3MDI4YTVkZGZiZjk2NTkuLjIwZDk3ODc5YWJjYjhlNzQ3
YjM4NTIxM2Q3YTAzNDlkZmRhYjBjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC03OTEwLDYgKzc5MTAsOTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwo
Tm9kZSogbm9kZSkKICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0
cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT25OdW1iZXIoTm9kZSogbm9kZSkKK3sKKyAgICBh
dXRvIGNhbGxUb1N0cmluZyA9IFsmXSAoYXV0byBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRHUFIs
IGF1dG8gdmFsdWVSZWcpIHsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdEdQUiwgdmFsdWVSZWcsIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKDEwKSk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAg
ICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICB9OworCisgICAgc3dpdGNoIChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIEludDMyVXNlOiB7CisgICAgICAg
IFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgY2Fs
bFRvU3RyaW5nKG9wZXJhdGlvbkludDMyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCwgcmVzdWx0Lmdw
cigpLCB2YWx1ZS5ncHIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICBTcGVjdWxhdGVTdHJpY3RJ
bnQ1Mk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIGNhbGxUb1N0cmluZyhvcGVyYXRp
b25JbnQ1MlRvU3RyaW5nV2l0aFZhbGlkUmFkaXgsIHJlc3VsdC5ncHIoKSwgdmFsdWUuZ3ByKCkp
OworICAgICAgICBicmVhazsKKyAgICB9CisjZW5kaWYKKworICAgIGNhc2UgRG91YmxlUmVwVXNl
OiB7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAg
ICAgIGNhbGxUb1N0cmluZyhvcGVyYXRpb25Eb3VibGVUb1N0cmluZ1dpdGhWYWxpZFJhZGl4LCBy
ZXN1bHQuZ3ByKCksIHZhbHVlLmZwcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
ZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9
CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeChO
b2RlKiBub2RlKQoreworICAgIGJvb2wgdmFsaWRSYWRpeElzR3VhcmFudGVlZCA9IGZhbHNlOwor
ICAgIGlmIChub2RlLT5jaGlsZDIoKS0+aXNJbnQzMkNvbnN0YW50KCkpIHsKKyAgICAgICAgaW50
MzJfdCByYWRpeCA9IG5vZGUtPmNoaWxkMigpLT5hc0ludDMyKCk7CisgICAgICAgIGlmIChyYWRp
eCA+PSAyICYmIHJhZGl4IDw9IDM2KQorICAgICAgICAgICAgdmFsaWRSYWRpeElzR3VhcmFudGVl
ZCA9IHRydWU7CisgICAgfQorCisgICAgYXV0byBjYWxsVG9TdHJpbmcgPSBbJl0gKGF1dG8gb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0R1BSLCBhdXRvIHZhbHVlUmVnLCBHUFJSZWcgcmFkaXhHUFIp
IHsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb24sIHJlc3VsdEdQUiwgdmFsdWVSZWcsIHJhZGl4R1BSKTsKKyAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAg
IH07CisKKyAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgIGNhc2Ug
SW50MzJVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5k
IHJhZGl4KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1
bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBjYWxsVG9TdHJpbmcodmFsaWRSYWRpeElzR3VhcmFu
dGVlZCA/IG9wZXJhdGlvbkludDMyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCA6IG9wZXJhdGlvbklu
dDMyVG9TdHJpbmcsIHJlc3VsdC5ncHIoKSwgdmFsdWUuZ3ByKCksIHJhZGl4LmdwcigpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjYXNlIEludDUy
UmVwVXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDUyT3BlcmFuZCB2YWx1ZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBy
YWRpeCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgY2FsbFRvU3RyaW5nKHZhbGlkUmFkaXhJc0d1YXJhbnRl
ZWQgPyBvcGVyYXRpb25JbnQ1MlRvU3RyaW5nV2l0aFZhbGlkUmFkaXggOiBvcGVyYXRpb25JbnQ1
MlRvU3RyaW5nLCByZXN1bHQuZ3ByKCksIHZhbHVlLmdwcigpLCByYWRpeC5ncHIoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyNlbmRpZgorCisgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKKyAg
ICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCByYWRpeCh0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAg
ICAgICAgY2FsbFRvU3RyaW5nKHZhbGlkUmFkaXhJc0d1YXJhbnRlZWQgPyBvcGVyYXRpb25Eb3Vi
bGVUb1N0cmluZ1dpdGhWYWxpZFJhZGl4IDogb3BlcmF0aW9uRG91YmxlVG9TdHJpbmcsIHJlc3Vs
dC5ncHIoKSwgdmFsdWUuZnByKCksIHJhZGl4LmdwcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTdHJpbmdPYmplY3Qo
Tm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAppbmRleCAyNjk1N2Q4OWEzN2NjNTVmMWQwYTk1OTNiOTJlMmRlYTY5ZTllZTNmLi5k
NDliNmQyMmIzM2ZhODBjNzc1OWE4Mzk3NTYzNzI1YTA2NjcwYTJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMzEzLDYgKzEzMTMsMjkg
QEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCisgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FWlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CisKKyAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VaWiBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKKyAgICB7CisgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0KKwor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRURaIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgfQorCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlv
bl9FRFogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTMy
IGFyZzIpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKKyAgICB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oWl9KSVRPcGVyYXRpb25fRU9KIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQpAQCAtMTUzMiw2ICsxNTU1LDE3IEBA
IGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FUVogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FUVogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCisgICAgewor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAg
ICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VaSWNmWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIGludDMyX3QgYXJnMSwgSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSwgVHJ1c3Rl
ZEltbVB0cihpbmxpbmVDYWxsRnJhbWUpLCBhcmcyKTsKQEAgLTI1NjYsNiArMjYwMCw4IEBAIGNs
YXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGVtaXRTd2l0Y2goTm9kZSopOwogICAgIAog
ICAgIHZvaWQgY29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwoTm9k
ZSopOworICAgIHZvaWQgY29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbk51
bWJlcihOb2RlKik7CisgICAgdm9pZCBjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXgoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZU5ld1N0cmluZ09iamVjdChOb2RlKik7CiAgICAgCiAgICAg
dm9pZCBjb21waWxlTmV3VHlwZWRBcnJheShOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBhYjA5MjI5OWVl
MGNhOTRjZWQ4NjM1MGZhNmU5ZDM5MTliMjVmMjI4Li5hZDEwYzEyZWEzMTIyNTg4MWM3MGE5ZTdm
YjJjMTBlM2MxYWNiYzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTI4MDAsNiArMjgwMCwxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAorICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6IHsKKyAgICAgICAgY29tcGlsZU51
bWJlclRvU3RyaW5nV2l0aFJhZGl4KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFz
ZS5qc1ZhbHVlUmVncygpOwpAQCAtMzczNCw3ICszNzM5LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICBjYXNlIFRvU3RyaW5nOgogICAg
IGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOiB7Ci0gICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgeworICAgICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBH
UFJSZWcgb3AxUGF5bG9hZEdQUiA9IG9wMS5wYXlsb2FkR1BSKCk7CiAgICAgICAgICAgICBKU1Zh
bHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CkBAIC0zNzY1LDggKzM3NzEsMTcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIGNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVj
dG9yT25DZWxsKG5vZGUpOworCisgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgIGNhc2Ug
SW50NTJSZXBVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICAgICAgY29t
cGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbk51bWJlcihub2RlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1dDoKKyAgICAgICAgICAgIGNvbXBpbGVUb1N0
cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT25DZWxsKG5vZGUpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDM1
OTRlNDlmMmJhODBkNzcyMjZlOWJiYjhiNjY4YjliMDMwNDUzNDYuLmQ3ZTU2OWQ5MmNjYWIwZjNm
MzYxYTJlYTRhN2I5NDllZmU4YTdiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzcxNCw3ICszNzE0LDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICBjYXNlIFRv
U3RyaW5nOgogICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOiB7Ci0gICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgeworICAgICAgICBzd2l0Y2gg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsK
ICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOwogICAgICAgICAgICAgCkBAIC0z
NzQ0LDggKzM3NDUsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGNvbXBpbGVUb1N0cmluZ09yQ2Fs
bFN0cmluZ0NvbnN0cnVjdG9yT25DZWxsKG5vZGUpOworCisgICAgICAgIGNhc2UgSW50MzJVc2U6
CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgor
ICAgICAgICAgICAgY29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbk51bWJl
cihub2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9uQ2VsbChub2RlKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICAgICAgCkBAIC01MDM2LDYgKzUwNDYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIE51bWJlclRv
U3RyaW5nV2l0aFJhZGl4OiB7CisgICAgICAgIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhSYWRp
eChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBJc09iamVjdDogewog
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3Bw
CmluZGV4IDY2YzUwMDhlMjk5NzgwNTE5ZDY4MDQ3Y2Q5MmI2ZGE1M2I3MTNkNDYuLmFhZjIzNWMz
MjYzZTkxZWIwMWRjZTU0ZDViZjM5N2UwYjcyY2FhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcApAQCAtMzkw
LDYgKzM5MCwzNyBAQCBjbGFzcyBTdHJlbmd0aFJlZHVjdGlvblBoYXNlIDogcHVibGljIFBoYXNl
IHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBUb1N0cmlu
ZzoKKyAgICAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6IHsKKyAgICAgICAgICAgIEVk
Z2UmIGNoaWxkMSA9IG1fbm9kZS0+Y2hpbGQxKCk7CisgICAgICAgICAgICBzd2l0Y2ggKGNoaWxk
MS51c2VLaW5kKCkpIHsKKyAgICAgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgICAgICBj
YXNlIEludDUyUmVwVXNlOgorICAgICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKKyAgICAg
ICAgICAgICAgICBpZiAoY2hpbGQxLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIEpTVmFsdWUgdmFsdWUgPSBjaGlsZDEtPmNvbnN0YW50KCktPnZhbHVlKCk7CisgICAgICAg
ICAgICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5n
IHJlc3VsdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gU3RyaW5nOjpudW1iZXIodmFsdWUu
YXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLmlzTnVt
YmVyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gU3RyaW5nOjpudW1i
ZXJUb1N0cmluZ0VDTUFTY3JpcHQodmFsdWUuYXNOdW1iZXIoKSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghcmVzdWx0LmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ub2RlLT5jb252ZXJ0VG9MYXp5SlNDb25zdGFudChtX2dyYXBoLCBMYXp5SlNWYWx1
ZTo6bmV3U3RyaW5nKG1fZ3JhcGgsIHJlc3VsdCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAg
ICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6IHsKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFy
cmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6R2VuZXJpYwogICAgICAgICAgICAgICAgIHx8IG1f
bm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpTdHJpbmcpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZS5jcHAKaW5kZXggYWYwMTY0MTNhY2JkOTRmNTIyZTk2ZDA3ZDMxYWMzZGViNzY1MzBiNC4u
NWM3MzQ2M2MyYmMzZTUwYjYxOGFhYzZjZDg1MWQwZTFhMWJhZDM3MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZS5jcHAKQEAgLTE0Nyw2ICsxNDcsNyBAQCBjbGFzcyBTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGNhc2UgVG9TdHJpbmc6CiAgICAgICAgICAgICAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3Ry
dWN0b3I6CisgICAgICAgICAgICAgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeDoKICAg
ICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNDM4M2YxMmRlZWM5
MzhhYzEyMWM0ZmYwNTQyNzNhMzY1Mzg0NWU2NC4uYTUwNTNhN2VkODk1ZGQzNTU0YjA5MTc5MDVh
MzY4ZWI3NGM4YWRiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcApAQCAtMjc5LDYgKzI3OSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNh
c2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIFRvTG93ZXJDYXNlOgorICAgIGNh
c2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6CiAgICAgY2FzZSBDaGVja0RPTToKICAgICBjYXNl
IENhbGxET006CiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGYzZWNhZDFjMjYxNzUwODQ1YzNiM2Q2
MDg4MjdkOTcyZWJmYWNkNDMuLjYzZmYxNjgxODg3NDEzMWFkMmRmNWY0YzE3ZTY2N2RlZTJiNzEy
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
QEAgLTEwNzEsNiArMTA3MSw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2Ug
VG9Mb3dlckNhc2U6CiAgICAgICAgICAgICBjb21waWxlVG9Mb3dlckNhc2UoKTsKICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OgorICAgICAg
ICAgICAgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFJhZGl4KCk7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDaGVja0RPTToKICAgICAgICAgICAgIGNvbXBpbGVDaGVja0RPTSgp
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC00OTM3LDYgKzQ5NDAsMTggQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBzaW1wbGVS
ZXN1bHQsIGNvbnZlcnRlZFJlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBJbnQzMlVzZToKKyAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxs
KEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSW50MzJUb1N0cmluZ1dpdGhWYWxpZFJh
ZGl4KSwgbV9jYWxsRnJhbWUsIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291dC5jb25z
dEludDMyKDEwKSkpOworICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNhc2UgSW50NTJS
ZXBVc2U6CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0
aW9uKG9wZXJhdGlvbkludDUyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCksIG1fY2FsbEZyYW1lLCBs
b3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuY29uc3RJbnQzMigxMCkpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAg
ICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
RG91YmxlVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCksIG1fY2FsbEZyYW1lLCBsb3dEb3VibGUobV9u
b2RlLT5jaGlsZDEoKSksIG1fb3V0LmNvbnN0SW50MzIoMTApKSk7CisgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIERGR19DUkFT
SChtX2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtpbmQiKTsKQEAgLTk4NDksNiArOTg2NCwzMCBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2lu
dGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CiAgICAgfQogCisgICAgdm9pZCBj
b21waWxlTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXgoKQorICAgIHsKKyAgICAgICAgYm9vbCB2YWxp
ZFJhZGl4SXNHdWFyYW50ZWVkID0gZmFsc2U7CisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMigp
LT5pc0ludDMyQ29uc3RhbnQoKSkgeworICAgICAgICAgICAgaW50MzJfdCByYWRpeCA9IG1fbm9k
ZS0+Y2hpbGQyKCktPmFzSW50MzIoKTsKKyAgICAgICAgICAgIGlmIChyYWRpeCA+PSAyICYmIHJh
ZGl4IDw9IDM2KQorICAgICAgICAgICAgICAgIHZhbGlkUmFkaXhJc0d1YXJhbnRlZWQgPSB0cnVl
OworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSkgeworICAgICAgICBjYXNlIEludDMyVXNlOgorICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNh
bGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKHZhbGlkUmFkaXhJc0d1YXJhbnRlZWQg
PyBvcGVyYXRpb25JbnQzMlRvU3RyaW5nV2l0aFZhbGlkUmFkaXggOiBvcGVyYXRpb25JbnQzMlRv
U3RyaW5nKSwgbV9jYWxsRnJhbWUsIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dJbnQz
MihtX25vZGUtPmNoaWxkMigpKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
SW50NTJSZXBVc2U6CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgp
LCBtX291dC5vcGVyYXRpb24odmFsaWRSYWRpeElzR3VhcmFudGVlZCA/IG9wZXJhdGlvbkludDUy
VG9TdHJpbmdXaXRoVmFsaWRSYWRpeCA6IG9wZXJhdGlvbkludDUyVG9TdHJpbmcpLCBtX2NhbGxG
cmFtZSwgbG93U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSksIGxvd0ludDMyKG1fbm9kZS0+
Y2hpbGQyKCkpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBV
c2U6CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291dC5v
cGVyYXRpb24odmFsaWRSYWRpeElzR3VhcmFudGVlZCA/IG9wZXJhdGlvbkRvdWJsZVRvU3RyaW5n
V2l0aFZhbGlkUmFkaXggOiBvcGVyYXRpb25Eb3VibGVUb1N0cmluZyksIG1fY2FsbEZyYW1lLCBs
b3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGNv
bXBpbGVSZXNvbHZlU2NvcGUoKQogICAgIHsKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA3ZWUyOWIwMDQ5NDE3
NDYwOTgxNGM3N2Y1NzFmM2M5ZWE5MjBlYWFmLi44YTNjOTBkZTZhMDQyZTZiNzJmY2VmYWM1OTBi
ODRkMTQ2NWVmZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxs
SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgK
QEAgLTg2OCw2ICs4NjgsMTQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5
SGVscGVycyB7CiAgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKICAgICB9CiAKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEZQUlJlZyBhcmcx
LCBUcnVzdGVkSW1tMzIgYXJnMikKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygp
OworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcyKTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCiAgICAgewog
ICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKQEAgLTEwNjksNiArMTA3NywyMCBAQCBjbGFz
cyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgbW92ZShH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9
CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEZQ
UlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMikKKyAgICB7CisjaWYgT1MoV0lORE9XUykgJiYg
Q1BVKFg4Nl82NCkKKyAgICAgICAgLy8gT24gV2luZG93cywgYXJndW1lbnRzIG1hcCB0byBkZXNp
Z25hdGVkIHJlZ2lzdGVycyBiYXNlZCBvbiB0aGUgYXJndW1lbnQgcG9zaXRpb25zLCBldmVuIHdo
ZW4gdGhlcmUgYXJlIGludGVybGFjZWQgc2NhbGFyIGFuZCBmbG9hdGluZyBwb2ludCBhcmd1bWVu
dHMuCisgICAgICAgIC8vIFNlZSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJh
cnkvenRoazJka2guYXNweAorICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3Vt
ZW50RlBSMSk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyNl
bHNlCisgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAg
ICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworI2VuZGlmCisgICAgICAg
IG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQogICAgIHsKICNpZiBP
UyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQpAQCAtMTExMSw2ICsxMTMzLDEzIEBAIGNsYXNzIEND
YWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBtb3ZlKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KIAor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVn
IGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcx
LCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJl
ZyBhcmczKQogICAgIHsKICAgICAgICAgbW92ZURvdWJsZShhcmczLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjApOwpAQCAtMTE1MSw2ICsxMTgwLDEzIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1Ymxp
YyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIFRydXN0ZWRJbW0z
MiBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMp
OworICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyLCBhcmcxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgRlBSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJn
MSwgYXJnMik7CkBAIC0xMjA0LDYgKzEyNDAsMTMgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVi
bGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIHBva2UoYXJnMiwgNCk7CiAgICAgfQogCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcg
YXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCisgICAgeworICAgICAgICBhc3NlbWJsZXIoKS52bW92
KEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBhcmcxKTsKKyAg
ICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKKyAgICAgICAgcG9rZShhcmcyLCA0KTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgRlBSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwg
YXJnMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDM0
Yjc2MmFhYjIyYjA5M2FhMTJhNTg1NzdlZDQzZjEwOGE0NDY4MGYuLjg4NDk4MGRjYzYxMjAxOGFj
YjJlZjUxMjIyNWJmM2U1ZDQzZjZmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCkBAIC0zMDksNiArMzA5LDggQEAgdHlwZWRlZiBjaGFyKiAoSklUX09QRVJB
VElPTiAqUF9KSVRPcGVyYXRpb25fRVN0WikoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgaW50MzIK
IHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VTdFpCKShFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBCdXR0ZXJmbHkqKTsKIHR5cGVkZWYgY2hhciog
KEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VTdFpQKShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqLCBpbnQzMl90LCBjaGFyKik7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJ
VE9wZXJhdGlvbl9FWlopKEV4ZWNTdGF0ZSosIGludDMyX3QsIGludDMyX3QpOwordHlwZWRlZiBj
aGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVFaKShFeGVjU3RhdGUqLCBpbnQ2
NF90LCBpbnQzMl90KTsKK3R5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0
aW9uX0VEWikoRXhlY1N0YXRlKiwgZG91YmxlLCBpbnQzMl90KTsKIHR5cGVkZWYgU2xvd1BhdGhS
ZXR1cm5UeXBlIChKSVRfT1BFUkFUSU9OICpTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xpKShFeGVjU3Rh
dGUqLCBDYWxsTGlua0luZm8qKTsKIHR5cGVkZWYgU3RyaW5nSW1wbCogKEpJVF9PUEVSQVRJT04g
KlRfSklUT3BlcmF0aW9uX0VKc3MpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiB0eXBlZGVmIEpT
U3RyaW5nKiAoSklUX09QRVJBVElPTiAqSnNzX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwg
aW50MzJfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4
IGFkYWU1ZWY2ODQzY2JkOWIyNDU3N2ZjMTZlNDdiMDEzZDYyNzZhMTEuLjcxYmM3NjI0OGViZmVj
ZGE4Yzg4NzVjYzM5MGVjYjNiNTQyM2I5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5oCkBAIC01Niw2ICs1Niw4IEBAIGVudW0gSlNfRVhQT1JUX1BSSVZBVEUg
SW50cmluc2ljIHsKICAgICBTdHJpbmdQcm90b3R5cGVWYWx1ZU9mSW50cmluc2ljLAogICAgIFN0
cmluZ1Byb3RvdHlwZVJlcGxhY2VJbnRyaW5zaWMsCiAgICAgU3RyaW5nUHJvdG90eXBlUmVwbGFj
ZVJlZ0V4cEludHJpbnNpYywKKyAgICBTdHJpbmdQcm90b3R5cGVUb0xvd2VyQ2FzZUludHJpbnNp
YywKKyAgICBOdW1iZXJQcm90b3R5cGVUb1N0cmluZ0ludHJpbnNpYywKICAgICBJTXVsSW50cmlu
c2ljLAogICAgIFJhbmRvbUludHJpbnNpYywKICAgICBGUm91bmRJbnRyaW5zaWMsCkBAIC03OCw3
ICs4MCw2IEBAIGVudW0gSlNfRVhQT1JUX1BSSVZBVEUgSW50cmluc2ljIHsKICAgICBBdG9taWNz
V2FpdEludHJpbnNpYywKICAgICBBdG9taWNzV2FrZUludHJpbnNpYywKICAgICBBdG9taWNzWG9y
SW50cmluc2ljLAotICAgIFRvTG93ZXJDYXNlSW50cmluc2ljLAogCiAgICAgLy8gR2V0dGVyIGlu
dHJpbnNpY3MuCiAgICAgVHlwZWRBcnJheUxlbmd0aEludHJpbnNpYywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCmluZGV4IGJmMzJiYWM2
NjFjNTRmZDhmMDAxYzU2NGNkOTUzMmIwOWExZDUxNzAuLjQ0Zjk1YTMxM2E4ZTI3MGMyYjYyOWM3
YzdjMGM0M2Q1ZDc5OTI0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBjb25zdCBDbGFzc0luZm8g
TnVtYmVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJOdW1iZXIiLCAmTnVtYmVyT2JqZWN0OjpzX2lu
Zm8sICZudQogCiAvKiBTb3VyY2UgZm9yIE51bWJlclByb3RvdHlwZS5sdXQuaAogQGJlZ2luIG51
bWJlclByb3RvdHlwZVRhYmxlCi0gIHRvU3RyaW5nICAgICAgICAgIG51bWJlclByb3RvRnVuY1Rv
U3RyaW5nICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0b1N0cmluZyAgICAgICAgICBu
dW1iZXJQcm90b0Z1bmNUb1N0cmluZyAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEgTnVtYmVy
UHJvdG90eXBlVG9TdHJpbmdJbnRyaW5zaWMKICAgdG9Mb2NhbGVTdHJpbmcgICAgbnVtYmVyUHJv
dG9GdW5jVG9Mb2NhbGVTdHJpbmcgICBEb250RW51bXxGdW5jdGlvbiAwCiAgIHZhbHVlT2YgICAg
ICAgICAgIG51bWJlclByb3RvRnVuY1ZhbHVlT2YgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MAogICB0b0ZpeGVkICAgICAgICAgICBudW1iZXJQcm90b0Z1bmNUb0ZpeGVkICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKQEAgLTE0NCw3ICsxNDQsNyBAQCB0eXBlZGVmIGNoYXIgUmFkaXhC
dWZmZXJbMjE4MF07CiAvLyBNYXBwaW5nIGZyb20gaW50ZWdlcnMgMC4uMzUgdG8gZGlnaXQgaWRl
bnRpZnlpbmcgdGhpcyB2YWx1ZSwgZm9yIHJhZGl4IDIuLjM2Lgogc3RhdGljIGNvbnN0IGNoYXIg
cmFkaXhEaWdpdHNbXSA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOwog
Ci1zdGF0aWMgY2hhciogaW50NTJUb1N0cmluZ1dpdGhSYWRpeChjaGFyKiBzdGFydE9mUmVzdWx0
U3RyaW5nLCBpbnQ2NF90IGludDUyVmFsdWUsIHVuc2lnbmVkIHJhZGl4KQorc3RhdGljIGlubGlu
ZSBjaGFyKiBpbnQ1MlRvU3RyaW5nV2l0aFJhZGl4KGNoYXIqIHN0YXJ0T2ZSZXN1bHRTdHJpbmcs
IGludDY0X3QgaW50NTJWYWx1ZSwgdW5zaWduZWQgcmFkaXgpCiB7CiAgICAgYm9vbCBuZWdhdGl2
ZSA9IGZhbHNlOwogICAgIHVpbnQ2NF90IHBvc2l0aXZlTnVtYmVyID0gaW50NTJWYWx1ZTsKQEAg
LTQ5OSwyNSArNDk5LDY4IEBAIHN0YXRpYyBpbmxpbmUgaW50MzJfdCBleHRyYWN0UmFkaXhGcm9t
QXJncyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIHJhZGl4OwogfQogCi1zdGF0aWMgaW5s
aW5lIEVuY29kZWRKU1ZhbHVlIGludGVnZXJWYWx1ZVRvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywg
aW50MzJfdCByYWRpeCwgaW50MzJfdCB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgSlNTdHJpbmcqIGlu
dDMyVG9TdHJpbmdJbnRlcm5hbChWTSYgdm0sIGludDMyX3QgdmFsdWUsIGludDMyX3QgcmFkaXgp
CiB7CisgICAgQVNTRVJUKCEocmFkaXggPCAyIHx8IHJhZGl4ID4gMzYpKTsKICAgICAvLyBBIG5l
Z2F0aXZlIHZhbHVlIGNhc3RlZCB0byB1bnNpZ25lZCB3b3VsZCBiZSBiaWdnZXIgdGhhbiAzNiAo
dGhlIG1heCByYWRpeCkuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWx1ZSkgPCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFkaXgpKSB7CiAgICAgICAgIEFTU0VSVCh2YWx1ZSA8PSAz
Nik7CiAgICAgICAgIEFTU0VSVCh2YWx1ZSA+PSAwKTsKLSAgICAgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0tPnNtYWxsU3RyaW5ncy5z
aW5nbGVDaGFyYWN0ZXJTdHJpbmcocmFkaXhEaWdpdHNbdmFsdWVdKSk7CisgICAgICAgIHJldHVy
biB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKHJhZGl4RGlnaXRzW3ZhbHVl
XSk7CiAgICAgfQogCiAgICAgaWYgKHJhZGl4ID09IDEwKSB7Ci0gICAgICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCB2
bS0+bnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlKSkpOworICAgICAgICByZXR1cm4ganNTdHJpbmco
JnZtLCB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUpKTsKICAgICB9CiAKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIHRvU3RyaW5nV2l0aFJhZGl4KHZhbHVlLCBy
YWRpeCkpKTsKKyAgICByZXR1cm4ganNTdHJpbmcoJnZtLCB0b1N0cmluZ1dpdGhSYWRpeCh2YWx1
ZSwgcmFkaXgpKTsKIAogfQogCitzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyogbnVtYmVy
VG9TdHJpbmdJbnRlcm5hbChWTSYgdm0sIGRvdWJsZSBkb3VibGVWYWx1ZSwgaW50MzJfdCByYWRp
eCkKK3sKKyAgICBBU1NFUlQoIShyYWRpeCA8IDIgfHwgcmFkaXggPiAzNikpOworCisgICAgaW50
MzJfdCBpbnRlZ2VyVmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pihkb3VibGVWYWx1ZSk7Cisg
ICAgaWYgKGludGVnZXJWYWx1ZSA9PSBkb3VibGVWYWx1ZSkKKyAgICAgICAgcmV0dXJuIGludDMy
VG9TdHJpbmdJbnRlcm5hbCh2bSwgaW50ZWdlclZhbHVlLCByYWRpeCk7CisKKyAgICBpZiAocmFk
aXggPT0gMTApCisgICAgICAgIHJldHVybiBqc1N0cmluZygmdm0sIHZtLm51bWVyaWNTdHJpbmdz
LmFkZChkb3VibGVWYWx1ZSkpOworCisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRvdWJsZVZhbHVl
KSkKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZzo6bnVtYmVy
VG9TdHJpbmdFQ01BU2NyaXB0KGRvdWJsZVZhbHVlKSk7CisKKyAgICBSYWRpeEJ1ZmZlciBidWZm
ZXI7CisgICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwgdG9TdHJpbmdXaXRoUmFkaXgoYnVmZmVyLCBk
b3VibGVWYWx1ZSwgcmFkaXgpKTsKK30KKworSlNTdHJpbmcqIGludDMyVG9TdHJpbmcoVk0mIHZt
LCBpbnQzMl90IHZhbHVlLCBpbnQzMl90IHJhZGl4KQoreworICAgIHJldHVybiBpbnQzMlRvU3Ry
aW5nSW50ZXJuYWwodm0sIHZhbHVlLCByYWRpeCk7Cit9CisKK0pTU3RyaW5nKiBpbnQ1MlRvU3Ry
aW5nKFZNJiB2bSwgaW50NjRfdCB2YWx1ZSwgaW50MzJfdCByYWRpeCkKK3sKKyAgICBBU1NFUlQo
IShyYWRpeCA8IDIgfHwgcmFkaXggPiAzNikpOworICAgIGlmIChyYWRpeCA9PSAxMCkKKyAgICAg
ICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwgdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHN0YXRpY19jYXN0
PGRvdWJsZT4odmFsdWUpKSk7CisKKyAgICAvLyBQb3NpdGlvbiB0aGUgZGVjaW1hbCBwb2ludCBh
dCB0aGUgY2VudGVyIG9mIHRoZSBzdHJpbmcsIHNldAorICAgIC8vIHRoZSBzdGFydE9mUmVzdWx0
U3RyaW5nIHBvaW50ZXIgdG8gcG9pbnQgYXQgdGhlIGRlY2ltYWwgcG9pbnQuCisgICAgUmFkaXhC
dWZmZXIgYnVmZmVyOworICAgIGNoYXIqIGRlY2ltYWxQb2ludCA9IGJ1ZmZlciArIHNpemVvZihi
dWZmZXIpIC8gMjsKKyAgICBjaGFyKiBzdGFydE9mUmVzdWx0U3RyaW5nID0gZGVjaW1hbFBvaW50
OworICAgICpkZWNpbWFsUG9pbnQgPSAnXDAnOworCisgICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwg
aW50NTJUb1N0cmluZ1dpdGhSYWRpeChzdGFydE9mUmVzdWx0U3RyaW5nLCB2YWx1ZSwgcmFkaXgp
KTsKK30KKworSlNTdHJpbmcqIG51bWJlclRvU3RyaW5nKFZNJiB2bSwgZG91YmxlIGRvdWJsZVZh
bHVlLCBpbnQzMl90IHJhZGl4KQoreworICAgIHJldHVybiBudW1iZXJUb1N0cmluZ0ludGVybmFs
KHZtLCBkb3VibGVWYWx1ZSwgcmFkaXgpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwpAQCAtNTMxLDE4ICs1NzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBp
ZiAocmFkaXggPCAyIHx8IHJhZGl4ID4gMzYpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b1N0cmlu
ZygpIHJhZGl4IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNiIpKSk7CiAKLSAgICBp
bnQzMl90IGludGVnZXJWYWx1ZSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGRvdWJsZVZhbHVlKTsK
LSAgICBpZiAoaW50ZWdlclZhbHVlID09IGRvdWJsZVZhbHVlKQotICAgICAgICByZXR1cm4gaW50
ZWdlclZhbHVlVG9TdHJpbmcoZXhlYywgcmFkaXgsIGludGVnZXJWYWx1ZSk7Ci0KLSAgICBpZiAo
cmFkaXggPT0gMTApCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoJnZt
LCB2bS5udW1lcmljU3RyaW5ncy5hZGQoZG91YmxlVmFsdWUpKSk7Ci0KLSAgICBpZiAoIXN0ZDo6
aXNmaW5pdGUoZG91YmxlVmFsdWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Tm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChk
b3VibGVWYWx1ZSkpKTsKLQotICAgIFJhZGl4QnVmZmVyIHM7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1N0cmluZyhleGVjLCB0b1N0cmluZ1dpdGhSYWRpeChzLCBkb3VibGVWYWx1ZSwg
cmFkaXgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJUb1N0cmluZ0ludGVy
bmFsKHZtLCBkb3VibGVWYWx1ZSwgcmFkaXgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCmluZGV4
IDEwMmEyMTQzYTE4NzkzODU5MmU0OTA0YWEyZGU1NDQ4M2FmN2IxNDEuLjNjMDY5Y2IwMWIxMjJl
NjZhM2VlOTg2NzQ0NTMxMTM1NTA2ZDMzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCkBAIC01MSw1ICs1MSw4IEBAIGNsYXNzIE51bWJl
clByb3RvdHlwZSA6IHB1YmxpYyBOdW1iZXJPYmplY3QgewogfTsKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSopOworSlNTdHJp
bmcqIGludDMyVG9TdHJpbmcoVk0mLCBpbnQzMl90IHZhbHVlLCBpbnQzMl90IHJhZGl4KTsKK0pT
U3RyaW5nKiBpbnQ1MlRvU3RyaW5nKFZNJiwgaW50NjRfdCB2YWx1ZSwgaW50MzJfdCByYWRpeCk7
CitKU1N0cmluZyogbnVtYmVyVG9TdHJpbmcoVk0mLCBkb3VibGUgdmFsdWUsIGludDMyX3QgcmFk
aXgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAppbmRleCBhZTI2N2IwYWE5Zjk1OTdmOTNj
MDUzNjRhNGY4N2Y5YzM0NmJlMDgxLi45ZGY0YzkyNzYxNGRmNWM2YjMyODE3OTc3MWVjYjJkNDU4
NzJmNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
Q29uc3RydWN0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBAIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19p
CiAKIC8qIFNvdXJjZSBmb3IgU3RyaW5nQ29uc3RydWN0b3IubHV0LmgKIEBiZWdpbiBzdHJpbmdD
b25zdHJ1Y3RvclRhYmxlCi0gIGZyb21DaGFyQ29kZSAgICAgICAgICBzdHJpbmdGcm9tQ2hhckNv
ZGUgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZyb21DaGFyQ29kZSAgICAgICAgICBz
dHJpbmdGcm9tQ2hhckNvZGUgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxIEZyb21DaGFyQ29k
ZUludHJpbnNpYwogICBmcm9tQ29kZVBvaW50ICAgICAgICAgc3RyaW5nRnJvbUNvZGVQb2ludCAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICByYXcgICAgICAgICAgICAgICAgICAgSlNCdWls
dGluICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggZjMx
M2E4YTM5Mjc1ODc0NWE4MWQ0ZTRkMjNjZDI1MTE4NGQ4OTI5Ni4uMWYwZTBjOGIwZGNkMmY4MWQz
NjNhMmI2YTkyNTFiYTdkNzI1NDRiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBTdHJp
bmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNTdHIKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElP
Tigic2xpY2UiLCBzdHJpbmdQcm90b0Z1bmNTbGljZSwgRG9udEVudW0sIDIpOwogICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJzdWJzdHIiLCBzdHJpbmdQcm90b0Z1
bmNTdWJzdHIsIERvbnRFbnVtLCAyKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTigic3Vic3RyaW5nIiwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nLCBEb250RW51
bSwgMik7Ci0gICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKCJ0b0xvd2VyQ2FzZSIsIHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlLCBEb250RW51bSwg
MCwgVG9Mb3dlckNhc2VJbnRyaW5zaWMpOworICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTigidG9Mb3dlckNhc2UiLCBzdHJpbmdQcm90b0Z1bmNUb0xv
d2VyQ2FzZSwgRG9udEVudW0sIDAsIFN0cmluZ1Byb3RvdHlwZVRvTG93ZXJDYXNlSW50cmluc2lj
KTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigidG9VcHBlckNh
c2UiLCBzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZSwgRG9udEVudW0sIDApOwogI2lmIEVOQUJM
RShJTlRMKQogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigibG9j
YWxlQ29tcGFyZSIsIHN0cmluZ1Byb3RvdHlwZUxvY2FsZUNvbXBhcmVDb2RlR2VuZXJhdG9yLCBE
b250RW51bSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGIxOTEwNjBkMjQyMTMxOTZjNGYxYmU4ZGViOGNlNTg3NzI2ZTdkNmUuLjYxMWNm
YTEzMmQ4MGM4NzM4N2JjMGUxZThjMWQ0MTE5NGRiODAzNzMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTct
MDEtMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
W0pTQ10gT3B0aW1pemUgTnVtYmVyLnByb3RvdHlwZS50b1N0cmluZyBvbiBJbnQzMiAvIEludDUy
IC8gRG91YmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjc0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHN0cmVzcy9udW1iZXItdG8tc3RyaW5nLWFic3RyYWN0LW9wZXJhdGlvbi5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChpbnQzMlRvU3RyaW5nKToKKyAgICAgICAg
KHNob3VsZEJlLmludDMyVG9TdHJpbmcubmV3Lk51bWJlci5pbnQ1MlRvU3RyaW5nKToKKyAgICAg
ICAgKHNob3VsZEJlLmludDMyVG9TdHJpbmcubmV3Lk51bWJlcik6CisgICAgICAgIChzaG91bGRC
ZS5kb3VibGVUb1N0cmluZyk6CisgICAgICAgICogc3RyZXNzL251bWJlci10by1zdHJpbmctcmFk
aXguanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoaW50MzJUb1N0cmlu
Zyk6CisgICAgICAgIChzaG91bGRCZS5pbnQzMlRvU3RyaW5nLm5ldy5OdW1iZXIuaW50NTJUb1N0
cmluZyk6CisgICAgICAgIChzaG91bGRCZS5pbnQzMlRvU3RyaW5nLm5ldy5OdW1iZXIpOgorICAg
ICAgICAoc2hvdWxkQmUuZG91YmxlVG9TdHJpbmcpOgorICAgICAgICAqIHN0cmVzcy9udW1iZXIt
dG8tc3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGludDMy
VG9TdHJpbmcpOgorICAgICAgICAoc2hvdWxkQmUuaW50MzJUb1N0cmluZy5uZXcuTnVtYmVyLmlu
dDUyVG9TdHJpbmcpOgorICAgICAgICAoc2hvdWxkQmUuaW50MzJUb1N0cmluZy5uZXcuTnVtYmVy
KToKKyAgICAgICAgKHNob3VsZEJlLmRvdWJsZVRvU3RyaW5nKToKKwogMjAxNy0wMS0yNCAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEF0b21pY3Muc3RvcmUgc2hv
dWxkIHJldHVybiB0aGUgaW50LWNvbnZlcnRlZCB2YWx1ZSBhY2NvcmRpbmcgdG8gdG9JbnRlZ2Vy
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9udW1iZXItdG8tc3RyaW5nLWFic3RyYWN0LW9w
ZXJhdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL251bWJlci10by1zdHJpbmctYWJzdHJhY3Qtb3Bl
cmF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxYTlkNWQ0ZThiMmM3MjgyYjNkMjM1M2JjMTY5YWMwNTY5
NjM4MTUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9udW1iZXItdG8tc3RyaW5n
LWFic3RyYWN0LW9wZXJhdGlvbi5qcwpAQCAtMCwwICsxLDgwIEBACitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogZXhwZWN0ZWQ6KCR7ZXhwZWN0ZWR9KSxh
Y3R1YWw6KCR7YWN0dWFsfSlgKTsKK30KKworZnVuY3Rpb24gZXhwZWN0ZWQobnVtLCByYWRpeCkK
K3sKKyAgICBsZXQgY2hhcmFjdGVycyA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1
dnd4eXoiOworICAgIGxldCByZXN1bHQgPSAiIjsKKyAgICBsZXQgbmVnYXRpdmUgPSBmYWxzZTsK
KyAgICBpZiAobnVtIDwgMCkgeworICAgICAgICBuZWdhdGl2ZSA9IHRydWU7CisgICAgICAgIG51
bSA9IC1udW07CisgICAgfQorCisgICAgZG8geworICAgICAgICBjb25zdCBpbmRleCA9IG51bSAl
IHJhZGl4OworICAgICAgICByZXN1bHQgPSBjaGFyYWN0ZXJzW2luZGV4XSArIHJlc3VsdDsKKyAg
ICAgICAgbnVtID0gKG51bSAtIGluZGV4KSAvIHJhZGl4OworICAgIH0gd2hpbGUgKG51bSk7CisK
KyAgICBpZiAobmVnYXRpdmUpCisgICAgICAgIHJldHVybiAnLScgKyByZXN1bHQ7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworeworICAgIGZ1bmN0aW9uIGludDMyVG9TdHJpbmcobnVtKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGAke251bX1gOworICAgIH0KKyAgICBub0lubGluZShpbnQzMlRv
U3RyaW5nKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAg
c2hvdWxkQmUoaW50MzJUb1N0cmluZyhpKSwgZXhwZWN0ZWQoaSwgMTApKTsKKyAgICAgICAgc2hv
dWxkQmUoaW50MzJUb1N0cmluZygtaSksIGV4cGVjdGVkKC1pLCAxMCkpOworICAgIH0KKworICAg
IHNob3VsZEJlKGludDMyVG9TdHJpbmcoMHhmZmZmZmZmZmZmKSwgZXhwZWN0ZWQoMHhmZmZmZmZm
ZmZmLCAxMCkpOworICAgIHNob3VsZEJlKGludDMyVG9TdHJpbmcoMC4xKSwgYDAuMWApOworICAg
IHNob3VsZEJlKGludDMyVG9TdHJpbmcoLTAuMSksIGAtMC4xYCk7CisgICAgc2hvdWxkQmUoaW50
MzJUb1N0cmluZyhuZXcgTnVtYmVyKDB4ZmYpKSwgYDI1NWApOworfQorCit7CisgICAgZnVuY3Rp
b24gaW50NTJUb1N0cmluZyhudW0pCisgICAgeworICAgICAgICByZXR1cm4gYCR7ZmlhdEludDUy
KG51bSl9YDsKKyAgICB9CisgICAgbm9JbmxpbmUoaW50NTJUb1N0cmluZyk7CisKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIHNob3VsZEJlKGludDUyVG9TdHJp
bmcoMHhmZmZmZmZmZiArIGkpLCBleHBlY3RlZCgweGZmZmZmZmZmICsgaSwgMTApKTsKKyAgICAg
ICAgc2hvdWxkQmUoaW50NTJUb1N0cmluZygtKDB4ZmZmZmZmZmYgKyBpKSksIGV4cGVjdGVkKC0o
MHhmZmZmZmZmZiArIGkpLCAxMCkpOworICAgIH0KKworICAgIHNob3VsZEJlKGludDUyVG9TdHJp
bmcoMHhmZiksIGAyNTVgKTsKKyAgICBzaG91bGRCZShpbnQ1MlRvU3RyaW5nKDAuMSksIGAwLjFg
KTsKKyAgICBzaG91bGRCZShpbnQ1MlRvU3RyaW5nKC0wLjEpLCBgLTAuMWApOworICAgIHNob3Vs
ZEJlKGludDUyVG9TdHJpbmcobmV3IE51bWJlcigweGZmKSksIGAyNTVgKTsKK30KKworeworICAg
IGZ1bmN0aW9uIGRvdWJsZVRvU3RyaW5nKG51bSkKKyAgICB7CisgICAgICAgIHJldHVybiBgJHtu
dW19YDsKKyAgICB9CisgICAgbm9JbmxpbmUoZG91YmxlVG9TdHJpbmcpOworCisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICBzaG91bGRCZShkb3VibGVUb1N0cmlu
ZygxLjAxKSwgYDEuMDFgKTsKKyAgICAgICAgc2hvdWxkQmUoZG91YmxlVG9TdHJpbmcoLTEuMDEp
LCBgLTEuMDFgKTsKKyAgICB9CisKKyAgICBzaG91bGRCZShkb3VibGVUb1N0cmluZygweGZmKSwg
YDI1NWApOworICAgIHNob3VsZEJlKGRvdWJsZVRvU3RyaW5nKDAuMSksIGAwLjFgKTsKKyAgICBz
aG91bGRCZShkb3VibGVUb1N0cmluZygtMC4xKSwgYC0wLjFgKTsKKyAgICBzaG91bGRCZShkb3Vi
bGVUb1N0cmluZyhuZXcgTnVtYmVyKDB4ZmYpKSwgYDI1NWApOworfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvbnVtYmVyLXRvLXN0cmluZy1yYWRpeC5qcyBiL0pTVGVzdHMvc3RyZXNzL251
bWJlci10by1zdHJpbmctcmFkaXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRkM2E4NDFhMTJlNDg2ZDMwOWU5
ZjllNDBlOTRiMDEzZWZiODEwZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL251
bWJlci10by1zdHJpbmctcmFkaXguanMKQEAgLTAsMCArMSw4MCBAQAorZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6IGV4cGVjdGVkOigke2V4cGVjdGVkfSks
YWN0dWFsOigke2FjdHVhbH0pYCk7Cit9CisKK2Z1bmN0aW9uIGV4cGVjdGVkKG51bSwgcmFkaXgp
Cit7CisgICAgbGV0IGNoYXJhY3RlcnMgPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0
dXZ3eHl6IjsKKyAgICBsZXQgcmVzdWx0ID0gIiI7CisgICAgbGV0IG5lZ2F0aXZlID0gZmFsc2U7
CisgICAgaWYgKG51bSA8IDApIHsKKyAgICAgICAgbmVnYXRpdmUgPSB0cnVlOworICAgICAgICBu
dW0gPSAtbnVtOworICAgIH0KKworICAgIGRvIHsKKyAgICAgICAgY29uc3QgaW5kZXggPSBudW0g
JSByYWRpeDsKKyAgICAgICAgcmVzdWx0ID0gY2hhcmFjdGVyc1tpbmRleF0gKyByZXN1bHQ7Cisg
ICAgICAgIG51bSA9IChudW0gLSBpbmRleCkgLyByYWRpeDsKKyAgICB9IHdoaWxlIChudW0pOwor
CisgICAgaWYgKG5lZ2F0aXZlKQorICAgICAgICByZXR1cm4gJy0nICsgcmVzdWx0OworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK3sKKyAgICBmdW5jdGlvbiBpbnQzMlRvU3RyaW5nKG51bSwgcmFk
aXgpCisgICAgeworICAgICAgICByZXR1cm4gbnVtLnRvU3RyaW5nKHJhZGl4KTsKKyAgICB9Cisg
ICAgbm9JbmxpbmUoaW50MzJUb1N0cmluZyk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFl
MzsgKytpKSB7CisgICAgICAgIHNob3VsZEJlKGludDMyVG9TdHJpbmcoaSwgMTYpLCBleHBlY3Rl
ZChpLCAxNikpOworICAgICAgICBzaG91bGRCZShpbnQzMlRvU3RyaW5nKC1pLCAxNiksIGV4cGVj
dGVkKC1pLCAxNikpOworICAgIH0KKworICAgIHNob3VsZEJlKGludDMyVG9TdHJpbmcoMHhmZmZm
ZmZmZmZmLCAxNiksIGV4cGVjdGVkKDB4ZmZmZmZmZmZmZiwgMTYpKTsKKyAgICBzaG91bGRCZShp
bnQzMlRvU3RyaW5nKDAuMSwgMTYpLCBgMC4xOTk5OTk5OTk5OTk5YWApOworICAgIHNob3VsZEJl
KGludDMyVG9TdHJpbmcoLTAuMSwgMTYpLCBgLTAuMTk5OTk5OTk5OTk5OWFgKTsKKyAgICBzaG91
bGRCZShpbnQzMlRvU3RyaW5nKG5ldyBOdW1iZXIoMHhmZiksIDE2KSwgYGZmYCk7Cit9CisKK3sK
KyAgICBmdW5jdGlvbiBpbnQ1MlRvU3RyaW5nKG51bSwgcmFkaXgpCisgICAgeworICAgICAgICBy
ZXR1cm4gZmlhdEludDUyKG51bSkudG9TdHJpbmcocmFkaXgpOworICAgIH0KKyAgICBub0lubGlu
ZShpbnQ1MlRvU3RyaW5nKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsK
KyAgICAgICAgc2hvdWxkQmUoaW50NTJUb1N0cmluZygweGZmZmZmZmZmICsgaSwgMTYpLCBleHBl
Y3RlZCgweGZmZmZmZmZmICsgaSwgMTYpKTsKKyAgICAgICAgc2hvdWxkQmUoaW50NTJUb1N0cmlu
ZygtKDB4ZmZmZmZmZmYgKyBpKSwgMTYpLCBleHBlY3RlZCgtKDB4ZmZmZmZmZmYgKyBpKSwgMTYp
KTsKKyAgICB9CisKKyAgICBzaG91bGRCZShpbnQ1MlRvU3RyaW5nKDB4ZmYsIDE2KSwgYGZmYCk7
CisgICAgc2hvdWxkQmUoaW50NTJUb1N0cmluZygwLjEsIDE2KSwgYDAuMTk5OTk5OTk5OTk5OWFg
KTsKKyAgICBzaG91bGRCZShpbnQ1MlRvU3RyaW5nKC0wLjEsIDE2KSwgYC0wLjE5OTk5OTk5OTk5
OTlhYCk7CisgICAgc2hvdWxkQmUoaW50NTJUb1N0cmluZyhuZXcgTnVtYmVyKDB4ZmYpLCAxNiks
IGBmZmApOworfQorCit7CisgICAgZnVuY3Rpb24gZG91YmxlVG9TdHJpbmcobnVtLCByYWRpeCkK
KyAgICB7CisgICAgICAgIHJldHVybiBudW0udG9TdHJpbmcocmFkaXgpOworICAgIH0KKyAgICBu
b0lubGluZShkb3VibGVUb1N0cmluZyk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsg
KytpKSB7CisgICAgICAgIHNob3VsZEJlKGRvdWJsZVRvU3RyaW5nKDEuMDEsIDE2KSwgYDEuMDI4
ZjVjMjhmNWMyOWApOworICAgICAgICBzaG91bGRCZShkb3VibGVUb1N0cmluZygtMS4wMSwgMTYp
LCBgLTEuMDI4ZjVjMjhmNWMyOWApOworICAgIH0KKworICAgIHNob3VsZEJlKGRvdWJsZVRvU3Ry
aW5nKDB4ZmYsIDE2KSwgYGZmYCk7CisgICAgc2hvdWxkQmUoZG91YmxlVG9TdHJpbmcoMC4xLCAx
NiksIGAwLjE5OTk5OTk5OTk5OTlhYCk7CisgICAgc2hvdWxkQmUoZG91YmxlVG9TdHJpbmcoLTAu
MSwgMTYpLCBgLTAuMTk5OTk5OTk5OTk5OWFgKTsKKyAgICBzaG91bGRCZShkb3VibGVUb1N0cmlu
ZyhuZXcgTnVtYmVyKDB4ZmYpLCAxNiksIGBmZmApOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvbnVtYmVyLXRvLXN0cmluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL251bWJlci10by1zdHJp
bmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWUwYzJmYTJmZjkyNjIxN2MxNzBjNjYxNmNkNzQ2ZmJlODMyYTM5
YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL251bWJlci10by1zdHJpbmcuanMK
QEAgLTAsMCArMSw4MCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBi
YWQgdmFsdWU6IGV4cGVjdGVkOigke2V4cGVjdGVkfSksYWN0dWFsOigke2FjdHVhbH0pYCk7Cit9
CisKK2Z1bmN0aW9uIGV4cGVjdGVkKG51bSwgcmFkaXgpCit7CisgICAgbGV0IGNoYXJhY3RlcnMg
PSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKKyAgICBsZXQgcmVzdWx0
ID0gIiI7CisgICAgbGV0IG5lZ2F0aXZlID0gZmFsc2U7CisgICAgaWYgKG51bSA8IDApIHsKKyAg
ICAgICAgbmVnYXRpdmUgPSB0cnVlOworICAgICAgICBudW0gPSAtbnVtOworICAgIH0KKworICAg
IGRvIHsKKyAgICAgICAgY29uc3QgaW5kZXggPSBudW0gJSByYWRpeDsKKyAgICAgICAgcmVzdWx0
ID0gY2hhcmFjdGVyc1tpbmRleF0gKyByZXN1bHQ7CisgICAgICAgIG51bSA9IChudW0gLSBpbmRl
eCkgLyByYWRpeDsKKyAgICB9IHdoaWxlIChudW0pOworCisgICAgaWYgKG5lZ2F0aXZlKQorICAg
ICAgICByZXR1cm4gJy0nICsgcmVzdWx0OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3sKKyAg
ICBmdW5jdGlvbiBpbnQzMlRvU3RyaW5nKG51bSkKKyAgICB7CisgICAgICAgIHJldHVybiBudW0u
dG9TdHJpbmcoMTYpOworICAgIH0KKyAgICBub0lubGluZShpbnQzMlRvU3RyaW5nKTsKKworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAgc2hvdWxkQmUoaW50MzJU
b1N0cmluZyhpKSwgZXhwZWN0ZWQoaSwgMTYpKTsKKyAgICAgICAgc2hvdWxkQmUoaW50MzJUb1N0
cmluZygtaSksIGV4cGVjdGVkKC1pLCAxNikpOworICAgIH0KKworICAgIHNob3VsZEJlKGludDMy
VG9TdHJpbmcoMHhmZmZmZmZmZmZmKSwgZXhwZWN0ZWQoMHhmZmZmZmZmZmZmLCAxNikpOworICAg
IHNob3VsZEJlKGludDMyVG9TdHJpbmcoMC4xKSwgYDAuMTk5OTk5OTk5OTk5OWFgKTsKKyAgICBz
aG91bGRCZShpbnQzMlRvU3RyaW5nKC0wLjEpLCBgLTAuMTk5OTk5OTk5OTk5OWFgKTsKKyAgICBz
aG91bGRCZShpbnQzMlRvU3RyaW5nKG5ldyBOdW1iZXIoMHhmZikpLCBgZmZgKTsKK30KKworewor
ICAgIGZ1bmN0aW9uIGludDUyVG9TdHJpbmcobnVtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZp
YXRJbnQ1MihudW0pLnRvU3RyaW5nKDE2KTsKKyAgICB9CisgICAgbm9JbmxpbmUoaW50NTJUb1N0
cmluZyk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIHNo
b3VsZEJlKGludDUyVG9TdHJpbmcoMHhmZmZmZmZmZiArIGkpLCBleHBlY3RlZCgweGZmZmZmZmZm
ICsgaSwgMTYpKTsKKyAgICAgICAgc2hvdWxkQmUoaW50NTJUb1N0cmluZygtKDB4ZmZmZmZmZmYg
KyBpKSksIGV4cGVjdGVkKC0oMHhmZmZmZmZmZiArIGkpLCAxNikpOworICAgIH0KKworICAgIHNo
b3VsZEJlKGludDUyVG9TdHJpbmcoMHhmZiksIGBmZmApOworICAgIHNob3VsZEJlKGludDUyVG9T
dHJpbmcoMC4xKSwgYDAuMTk5OTk5OTk5OTk5OWFgKTsKKyAgICBzaG91bGRCZShpbnQ1MlRvU3Ry
aW5nKC0wLjEpLCBgLTAuMTk5OTk5OTk5OTk5OWFgKTsKKyAgICBzaG91bGRCZShpbnQ1MlRvU3Ry
aW5nKG5ldyBOdW1iZXIoMHhmZikpLCBgZmZgKTsKK30KKworeworICAgIGZ1bmN0aW9uIGRvdWJs
ZVRvU3RyaW5nKG51bSkKKyAgICB7CisgICAgICAgIHJldHVybiBudW0udG9TdHJpbmcoMTYpOwor
ICAgIH0KKyAgICBub0lubGluZShkb3VibGVUb1N0cmluZyk7CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIHNob3VsZEJlKGRvdWJsZVRvU3RyaW5nKDEuMDEp
LCBgMS4wMjhmNWMyOGY1YzI5YCk7CisgICAgICAgIHNob3VsZEJlKGRvdWJsZVRvU3RyaW5nKC0x
LjAxKSwgYC0xLjAyOGY1YzI4ZjVjMjlgKTsKKyAgICB9CisKKyAgICBzaG91bGRCZShkb3VibGVU
b1N0cmluZygweGZmKSwgYGZmYCk7CisgICAgc2hvdWxkQmUoZG91YmxlVG9TdHJpbmcoMC4xKSwg
YDAuMTk5OTk5OTk5OTk5OWFgKTsKKyAgICBzaG91bGRCZShkb3VibGVUb1N0cmluZygtMC4xKSwg
YC0wLjE5OTk5OTk5OTk5OTlhYCk7CisgICAgc2hvdWxkQmUoZG91YmxlVG9TdHJpbmcobmV3IE51
bWJlcigweGZmKSksIGBmZmApOworfQo=
</data>
<flag name="review"
          id="321748"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304995</attachid>
            <date>2017-03-21 03:38:34 -0700</date>
            <delta_ts>2017-03-21 03:38:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167454-20170321193828.patch</filename>
            <type>text/plain</type>
            <size>51296</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MTk1NDA1YTRlMmUyNGVlZGRkY2UyYTllYTVkOWIxODQ4YTQ0NWM2Li4zNzY3YTZmNzhkZWYwYTcz
NjU5NWM5OTQwODdlODVjMmZkNzdjNmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxNy0wMy0yMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBOdW1iZXIucHJvdG90eXBlLnRvU3RyaW5n
IG9uIEludDMyIC8gSW50NTIgLyBEb3VibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NzQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFy
YXRpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wcm92ZXMgTnVtYmVyLnRvU3RyaW5nKHJhZGl4
KSBwZXJmb3JtYW5jZQorICAgICAgICBieSBpbnRyb2R1Y2luZyBOdW1iZXJUb1N0cmluZ1dpdGhS
YWRpeCBERkcgbm9kZS4gSXQgZGlyZWN0bHkKKyAgICAgICAgY2FsbHMgdGhlIG9wZXJhdGlvbiBh
bmQgaXQgYWx3YXlzIHJldHVybnMgU3RyaW5nLgorCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmUgICAgICAgICAgICAgICAgICBw
YXRjaGVkCisKKyAgICAgICAgICAgIHN0YW5mb3JkLWNyeXB0by1zaGEyNTYtaXRlcmF0aXZlICAg
ICAgICA0NS4xMzArLTAuOTI4ICAgICAgICAgICAgIDQ0LjAzMistMS4xODQgICAgICAgICAgIG1p
Z2h0IGJlIDEuMDI1MHggZmFzdGVyCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUludHJpbnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cFRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0
b3IpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmlu
Z0NvbnN0cnVjdG9yT25OdW1iZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXgpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9uQ2Vs
bCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgICogZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3IpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoUmFk
aXgpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxI
ZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUpOgorICAgICAgICAqIGppdC9KSVRP
cGVyYXRpb25zLmg6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAgKiBy
dW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmludDUyVG9TdHJpbmdX
aXRoUmFkaXgpOgorICAgICAgICAoSlNDOjppbnQzMlRvU3RyaW5nSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpudW1iZXJUb1N0cmluZ0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6aW50MzJUb1N0
cmluZyk6CisgICAgICAgIChKU0M6OmludDUyVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpudW1i
ZXJUb1N0cmluZyk6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6aW50ZWdlclZhbHVlVG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIHJ1
bnRpbWUvTnVtYmVyUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToK
KwogMjAxNy0wMy0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IEdyYXBoIGNvbG9yaW5nIHNob3VsZCB1c2UgY29hbGVzY2FibGUgbW92ZXMgd2hlbiBzcGlsbGlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCmluZGV4IGZiZmUxNjZlYjczOWMyOGZkYWFiZmEyMmNiYTZlNjE4
MDIxYTBiODguLmI1NDllY2E2ZDk4NWNlMDdhMmRiMTgwYWNhODZhMDBhNzhlZTM1ZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKQEAgLTE4NTgsNiArMTg1OCw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1
cmUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdP
YmplY3RVc2U6CisgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgIGNhc2UgSW50NTJSZXBV
c2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICBjYXNlIE5vdENlbGxVc2U6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDZWxsVXNlOgpAQCAtMTg3MSw2ICsx
ODc0LDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGZvck5vZGUobm9kZSku
c2V0KG1fZ3JhcGgsIG1fdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQorCisgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeDoKKyAgICAgICAgY2xv
YmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKKyAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbV9ncmFwaC5tX3ZtLnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIE5ld1N0cmluZ09iamVj
dDogewogICAgICAgICBBU1NFUlQobm9kZS0+c3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09IFN0
cmluZ09iamVjdDo6aW5mbygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMzFlMGUwYjdmNTk2YjVmMzAwNTA4ZDk0ZjNkNzU2NWY2
YTc4NTBlOS4uM2M0OWM5MTVjMTA3Y2RjYjNlODQ4MTQ1YTliZmM4NDJmZjI2MDI1MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI3
MTEsNyArMjcxMSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwo
Tm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIGNhc2UgVG9Mb3dlckNhc2VJbnRyaW5zaWM6IHsKKyAgICBjYXNl
IFN0cmluZ1Byb3RvdHlwZVRvTG93ZXJDYXNlSW50cmluc2ljOiB7CiAgICAgICAgIGlmIChhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAxKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC0yNzI1LDYgKzI3MjUsMjYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmlu
c2ljQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW4KICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgY2FzZSBOdW1iZXJQcm90b3R5cGVUb1N0cmluZ0lu
dHJpbnNpYzogeworICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMSAm
JiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICBpbnNlcnRDaGVja3MoKTsKKyAgICAgICAgTm9kZSogdGhpc051bWJlciA9
IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCkpOworICAg
ICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPT0gMSkgeworICAgICAgICAgICAg
Tm9kZSogcmVzdWx0ID0gYWRkVG9HcmFwaChUb1N0cmluZywgdGhpc051bWJlcik7CisgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCByZXN1bHQpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgTm9kZSogcmFkaXggPSBnZXQodmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgIE5vZGUqIHJlc3Vs
dCA9IGFkZFRvR3JhcGgoTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXgsIHRoaXNOdW1iZXIsIHJhZGl4
KTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIHJlc3Vs
dCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgZGVmYXVs
dDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKaW5kZXggZDJlMzcyZWEyN2ZiM2EwZjZhNmY1ZGE1Y2YzNzZkNGZk
YzY3ZWUwNi4uOGIzMGZjMDllN2U3OTFiNzU5ZDlkNjkxZjZiNzNjNzVkYmMwZmY4OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTE0MDksNiArMTQwOSw5
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgICAgICB3cml0ZShIZWFwKTsKICAg
ICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBjYXNlIEludDMyVXNlOgorICAgICAgICBjYXNl
IEludDUyUmVwVXNlOgorICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgY2FzZSBO
b3RDZWxsVXNlOgogICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xNDU2LDYgKzE0NTksMTEgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICBjYXNlIFRvTG93ZXJDYXNlOgogICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsKICAg
ICAgICAgcmV0dXJuOworCisgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeDoKKyAgICAg
ICAgcmVhZChXb3JsZCk7CisgICAgICAgIHdyaXRlKEhlYXApOworICAgICAgICByZXR1cm47CiAg
ICAgICAgIAogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4
IGM3YWFlM2Q2NDFhNGU3M2ZjZmFiYzU5NWUzOTQ5NzZkNDZmM2Y1ZjUuLmI5NmEzNjJlNTcwZjg4
NDkwMzZjMTM4ZmYzY2U2MTZlNGEyN2I3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAKQEAgLTE3OCw2ICsxNzgsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUb051bWJlcjoKICAgICBjYXNlIFRvU3RyaW5nOgogICAg
IGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOgorICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRo
UmFkaXg6CiAgICAgY2FzZSBJbjoKICAgICBjYXNlIEhhc093blByb3BlcnR5OgogICAgIGNhc2Ug
SnVtcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4
IDk5MDRlNzNkOGExODlmZWMzYWI1N2U1ODMxN2FhOGE4NGIyNjQ0ZmMuLmIyZjJhODAyMDYxZDFk
OWQwOGZjMjU1ZjhhZTk4ODM0ZjdmZTRkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTc2MSw2ICsxNzYxLDE3IEBAIGNsYXNzIEZpeHVwUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAg
ICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OiB7CisgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCisgICAgICAgICAgICAgICAgZml4
RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZWxzZSBpZiAoZW5h
YmxlSW50NTIoKSAmJiBub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQW55SW50KCkpCisg
ICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eTogewogICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICAgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSk7CkBAIC0yMjM2LDYgKzIyNDcsMjQgQEAgY2xh
c3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAorICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMy
KCkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZW5hYmxlSW50NTIoKSAmJiBub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQW55SW50KCkpIHsKKyAgICAgICAgICAgIGZpeEVk
Z2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUtPmNsZWFy
RmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7
CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIFRvU3RyaW5nKFN5bWJvbCkgdGhyb3dz
IGFuIGVycm9yLiBTbyBpZiB0aGUgY2hpbGQxIGNhbiBpbmNsdWRlIFN5bWJvbHMsCiAgICAgICAg
IC8vIHdlIG5lZWQgdG8gY2FyZSBhYm91dCBpdCBpbiB0aGUgY2xvYmJlcml6ZS4gSW4gdGhlIGZv
bGxvd2luZyBjYXNlLAogICAgICAgICAvLyBzaW5jZSBOb3RDZWxsVXNlIGVkZ2UgZmlsdGVyIGlz
IHVzZWQgYW5kIHRoaXMgZWRnZSBmaWx0ZXJzIFN5bWJvbHMsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMWNlMjMwYjAzMTUyYWUyOTAzODc2ZGQ1ZTQ0MzdlZWZj
MjgwZmJhMi4uNmM2MmNlNmIzMDY2NTg4MWQyNTYyYTRjOWJhNTg0ZTcwNTEyMDE2NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMzM1LDYgKzMzNSw3IEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhUb051bWJlciwgTm9kZVJl
c3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENhbGxPYmplY3RDb25zdHJ1
Y3RvciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCBO
b2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oTnVtYmVyVG9TdHJp
bmdXaXRoUmFkaXgsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhOZXdTdHJpbmdPYmplY3QsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE1ha2VSb3BlLCBO
b2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhJbiwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVz
dEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAppbmRleCAzNWFlNjM2NTc0YzNmMzBkNTc5NTU4OWU5NWU0ZjlhZTA1YTUzMTk1Li41YzZhYTQz
MjRhNzlhZTEzMzVlNTlhNmZkZmFlYTA1MmNlNGY3N2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTE2NDQsNiArMTY0NCw3NSBAQCBKU1N0cmlu
ZyogSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub0xvd2VyQ2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpT
U3RyaW5nKiBzdHJpbmcsCiAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGxvd2VyY2FzZWRTdHJp
bmcpOwogfQogCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkludDMyVG9TdHJpbmcoRXhl
Y1N0YXRlKiBleGVjLCBpbnQzMl90IHZhbHVlLCBpbnQzMl90IHJhZGl4KQoreworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4
ZWMpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
aWYgKHJhZGl4IDwgMiB8fCByYWRpeCA+IDM2KSB7CisgICAgICAgIHRocm93Vk1FcnJvcihleGVj
LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvU3RyaW5nKCkg
cmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2IikpKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGludDMyVG9TdHJpbmcodm0sIHZhbHVlLCByYWRpeCkpOworfQorCitjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkludDUyVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBpbnQ2NF90IHZhbHVl
LCBpbnQzMl90IHJhZGl4KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHJhZGl4IDwgMiB8fCByYWRpeCA+IDM2
KSB7CisgICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoInRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3
ZWVuIDIgYW5kIDM2IikpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGludDUyVG9TdHJpbmcodm0sIHZhbHVlLCBy
YWRpeCkpOworfQorCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRvdWJsZVRvU3RyaW5n
KEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlIHZhbHVlLCBpbnQzMl90IHJhZGl4KQoreworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0s
IGV4ZWMpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgaWYgKHJhZGl4IDwgMiB8fCByYWRpeCA+IDM2KSB7CisgICAgICAgIHRocm93Vk1FcnJvcihl
eGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvU3RyaW5n
KCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2IikpKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KG51bWJlclRvU3RyaW5nKHZtLCB2YWx1ZSwgcmFkaXgpKTsKK30KKworY2hhciogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25JbnQzMlRvU3RyaW5nV2l0aFZhbGlkUmFkaXgoRXhlY1N0YXRlKiBl
eGVjLCBpbnQzMl90IHZhbHVlLCBpbnQzMl90IHJhZGl4KQoreworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGludDMyVG9TdHJpbmcodm0sIHZhbHVl
LCByYWRpeCkpOworfQorCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkludDUyVG9TdHJp
bmdXaXRoVmFsaWRSYWRpeChFeGVjU3RhdGUqIGV4ZWMsIGludDY0X3QgdmFsdWUsIGludDMyX3Qg
cmFkaXgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oaW50NTJUb1N0cmluZyh2bSwgdmFsdWUsIHJhZGl4KSk7Cit9CisKK2NoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRG91YmxlVG9TdHJpbmdXaXRoVmFsaWRSYWRpeChFeGVjU3RhdGUq
IGV4ZWMsIGRvdWJsZSB2YWx1ZSwgaW50MzJfdCByYWRpeCkKK3sKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKwor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihudW1iZXJUb1N0cmluZyh2bSwgdmFs
dWUsIHJhZGl4KSk7Cit9CisKIEpTU3RyaW5nKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNpbmds
ZUNoYXJhY3RlclN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgY2hhcmFjdGVyKQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oCmluZGV4IDg1MjE5NWNlZjk1ZGUyZmNiODAyYjE4OTE2OGVlMDFkMmY1MGI3OWMu
LjQzODZhNjY0NTJhYjk2OWI5MzhiMmIwZDk1NmQ3YjlmMmRkNmZiM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC0xNTksNiArMTU5LDEzIEBAIEpTU3Ry
aW5nKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNpbmdsZUNoYXJhY3RlclN0cmluZyhFeGVjU3Rh
dGUqLCBpbnQzMl90KTsKIAogSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9Mb3dl
ckNhc2UoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCB1aW50MzJfdCk7CiAKK2NoYXIqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSW50MzJUb1N0cmluZyhFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90
KTsKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW50NTJUb1N0cmluZyhFeGVjU3RhdGUq
LCBpbnQ2NF90LCBpbnQzMl90KTsKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRG91Ymxl
VG9TdHJpbmcoRXhlY1N0YXRlKiwgZG91YmxlLCBpbnQzMl90KTsKK2NoYXIqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uSW50MzJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4KEV4ZWNTdGF0ZSosIGludDMy
X3QsIGludDMyX3QpOworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25JbnQ1MlRvU3RyaW5n
V2l0aFZhbGlkUmFkaXgoRXhlY1N0YXRlKiwgaW50NjRfdCwgaW50MzJfdCk7CitjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRvdWJsZVRvU3RyaW5nV2l0aFZhbGlkUmFkaXgoRXhlY1N0YXRl
KiwgZG91YmxlLCBpbnQzMl90KTsKKwogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1h
cEhhc2goRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgaW5wdXQpOwogSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkpTTWFwRmluZEJ1Y2tldChFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNv
ZGVkSlNWYWx1ZSwgaW50MzJfdCk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSlNT
ZXRGaW5kQnVja2V0KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggODI1NjZkZjM0YzQyYzlhMjIwOTIzNzU2ZDNk
YWI1M2I3NDhmOGZhYS4uYmEzMzRjNjk1ZDQ1MjNhYTcwODgwYjYyODI3NmUwMmU0Mjg3N2ZlOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTg5Nyw2ICs4OTcsNyBAQCBjbGFzcyBQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgU3RyaW5n
Q2hhckF0OgogICAgICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoKICAgICAgICAgY2Fz
ZSBUb1N0cmluZzoKKyAgICAgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeDoKICAgICAg
ICAgY2FzZSBNYWtlUm9wZToKICAgICAgICAgY2FzZSBTdHJDYXQ6IHsKICAgICAgICAgICAgIHNl
dFByZWRpY3Rpb24oU3BlY1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCmluZGV4IGI5N2ViY2FlZDZhNGRkNjcxMDk3ZmMzODEyZmI2MmY0Mjll
YTAzY2UuLjMzYTM5NDcyNGRiM2UxMjYxNzA4Mzc4ODU5ODM2NWU1ZDM1ZTI4YjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yODgsNiArMjg4
LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgVG9QcmltaXRpdmU6CiAgICAgY2FzZSBUb1N0
cmluZzoKICAgICBjYXNlIFRvTnVtYmVyOgorICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFk
aXg6CiAgICAgY2FzZSBTZXRGdW5jdGlvbk5hbWU6CiAgICAgY2FzZSBTdHJDYXQ6CiAgICAgY2Fz
ZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGYzMjczZmMyNzRkNmIwMzAwNTM1MzE4MzQ1MTM3
NDgzMjg5Mzc0ZjQuLjM3Mjc5NDAwMzQwMmRmNTUxZjQwNWJiNjQ5NDEwZWVmNzk4ZjJlMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBA
IC03OTIzLDkgKzc5MjMsMTAgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjp0ZW1wb3JhcnlSZWdp
c3RlckZvclB1dEJ5VmFsKEdQUlRlbXBvcmFyeSYgdGVtcG9yYXJ5LCBBcnIKICAgICByZXR1cm4g
dGVtcG9yYXJ5LmdwcigpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJp
bmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9uQ2VsbChOb2RlKiBub2RlKQordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3IoTm9kZSogbm9k
ZSkKIHsKLSAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE5vdENlbGxVc2UpIHsK
KyAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgIGNhc2UgTm90Q2Vs
bFVzZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCks
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3Mg
PSBvcDEuanNWYWx1ZVJlZ3MoKTsKIApAQCAtNzk0Nyw3ICs3OTQ4LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwoTm9k
ZSogbm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgeworICAgIGNhc2UgVW50eXBlZFVzZTogewogICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBK
U1ZhbHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEdQUlJlZyBv
cDFQYXlsb2FkR1BSID0gb3AxUmVncy5wYXlsb2FkR1BSKCk7CkBAIC03OTc5LDYgKzc5ODAsMTUg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3Ry
dWN0b3JPbkNlbGwoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGNh
c2UgSW50MzJVc2U6CisgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICBjYXNlIERvdWJsZVJlcFVz
ZToKKyAgICAgICAgY29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbk51bWJl
cihub2RlKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7
CisgICAgfQogCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOwpAQCAtODA1NCw2ICs4MDY0LDky
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0
cnVjdG9yT25DZWxsKE5vZGUqIG5vZGUpCiAgICAgfQogfQogCit2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9uTnVtYmVyKE5vZGUqIG5v
ZGUpCit7CisgICAgYXV0byBjYWxsVG9TdHJpbmcgPSBbJl0gKGF1dG8gb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0R1BSLCBhdXRvIHZhbHVlUmVnKSB7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRHUFIsIHZhbHVlUmVnLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxMCkpOworICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgfTsKKwor
ICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgY2FzZSBJbnQzMlVz
ZTogeworICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CisgICAgICAgIGNhbGxUb1N0cmluZyhvcGVyYXRpb25JbnQzMlRvU3RyaW5nV2l0aFZhbGlkUmFk
aXgsIHJlc3VsdC5ncHIoKSwgdmFsdWUuZ3ByKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKKyAgICAgICAgU3Bl
Y3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBjYWxsVG9T
dHJpbmcob3BlcmF0aW9uSW50NTJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4LCByZXN1bHQuZ3ByKCks
IHZhbHVlLmdwcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorI2VuZGlmCisKKyAgICBjYXNl
IERvdWJsZVJlcFVzZTogeworICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOworICAgICAgICBjYWxsVG9TdHJpbmcob3BlcmF0aW9uRG91YmxlVG9TdHJpbmdXaXRo
VmFsaWRSYWRpeCwgcmVzdWx0LmdwcigpLCB2YWx1ZS5mcHIoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQorfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTnVtYmVyVG9TdHJp
bmdXaXRoUmFkaXgoTm9kZSogbm9kZSkKK3sKKyAgICBib29sIHZhbGlkUmFkaXhJc0d1YXJhbnRl
ZWQgPSBmYWxzZTsKKyAgICBpZiAobm9kZS0+Y2hpbGQyKCktPmlzSW50MzJDb25zdGFudCgpKSB7
CisgICAgICAgIGludDMyX3QgcmFkaXggPSBub2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpOworICAg
ICAgICBpZiAocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNikKKyAgICAgICAgICAgIHZhbGlkUmFk
aXhJc0d1YXJhbnRlZWQgPSB0cnVlOworICAgIH0KKworICAgIGF1dG8gY2FsbFRvU3RyaW5nID0g
WyZdIChhdXRvIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdEdQUiwgYXV0byB2YWx1ZVJlZywgR1BS
UmVnIHJhZGl4R1BSKSB7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRHUFIsIHZhbHVlUmVnLCByYWRpeEdQUik7CisgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKKyAgICB9OworCisgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkp
IHsKKyAgICBjYXNlIEludDMyVXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3Bl
cmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZVN0cmlj
dEludDMyT3BlcmFuZCByYWRpeCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgY2FsbFRvU3RyaW5nKHZhbGlk
UmFkaXhJc0d1YXJhbnRlZWQgPyBvcGVyYXRpb25JbnQzMlRvU3RyaW5nV2l0aFZhbGlkUmFkaXgg
OiBvcGVyYXRpb25JbnQzMlRvU3RyaW5nLCByZXN1bHQuZ3ByKCksIHZhbHVlLmdwcigpLCByYWRp
eC5ncHIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgY2FzZSBJbnQ1MlJlcFVzZTogeworICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJh
bmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVTdHJpY3RJ
bnQzMk9wZXJhbmQgcmFkaXgodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIGNhbGxUb1N0cmluZyh2YWxpZFJh
ZGl4SXNHdWFyYW50ZWVkID8gb3BlcmF0aW9uSW50NTJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4IDog
b3BlcmF0aW9uSW50NTJUb1N0cmluZywgcmVzdWx0LmdwcigpLCB2YWx1ZS5ncHIoKSwgcmFkaXgu
Z3ByKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisjZW5kaWYKKworICAgIGNhc2UgRG91Ymxl
UmVwVXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcmFkaXgo
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CisgICAgICAgIGNhbGxUb1N0cmluZyh2YWxpZFJhZGl4SXNHdWFyYW50ZWVkID8g
b3BlcmF0aW9uRG91YmxlVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCA6IG9wZXJhdGlvbkRvdWJsZVRv
U3RyaW5nLCByZXN1bHQuZ3ByKCksIHZhbHVlLmZwcigpLCByYWRpeC5ncHIoKSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3
U3RyaW5nT2JqZWN0KE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3Bl
cmFuZCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggZTE3ZTQ0N2ViZjUxMTk0ZDRjM2JmZmNhOWM0N2U5
ZjkyN2NkOWJhNi4uNWE4MGQ0ODQ2YzgwMDg2NTI5ZWE1Y2U2ZmUyYjk0OTY4MzBhMWQwYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTM4
MSw2ICsxMzgxLDI5IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVpaIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQorCisg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FWlogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCisg
ICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
Mik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKKyAgICB9CisKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3Bl
cmF0aW9uX0VEWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMikKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOworICAgIH0KKworICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
UF9KSVRPcGVyYXRpb25fRURaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIGFyZzEs
IFRydXN0ZWRJbW0zMiBhcmcyKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0VPSiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKQEAgLTE2MTAs
NiArMTYzMywxNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSksIGFyZzIpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVFaIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25f
RVFaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW0zMiBh
cmcyKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FWkljZlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQzMl90IGFy
ZzEsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBHUFJSZWcgYXJnMikKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIo
YXJnMSksIFRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSwgYXJnMik7CkBAIC0yNjgxLDcg
KzI3MTUsOSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBlbWl0U3dpdGNoU3Ry
aW5nKE5vZGUqLCBTd2l0Y2hEYXRhKik7CiAgICAgdm9pZCBlbWl0U3dpdGNoKE5vZGUqKTsKICAg
ICAKLSAgICB2b2lkIGNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT25DZWxs
KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9y
KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9y
T25OdW1iZXIoTm9kZSopOworICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFJhZGl4
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdTdHJpbmdPYmplY3QoTm9kZSopOwogICAgIAog
ICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJyYXkoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggZGM3NjMz
NDgwZmI0Yjc2M2QyNWFjNjc4NjU2MGE2NDhhZGE4N2JhMy4uY2VkNTQ5NTA3Zjc4ZmEzOTBmZmUz
MGEyMTdmZmI4MDVmODU2YzVlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yODM1LDYgKzI4MzUsMTEgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAg
ICB9CiAKKyAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OiB7CisgICAgICAgIGNvbXBp
bGVOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9
IGJhc2UuanNWYWx1ZVJlZ3MoKTsKQEAgLTM3NjksNyArMzc3NCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgY2FzZSBUb1N0cmluZzoK
ICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjogewotICAgICAgICBjb21waWxlVG9TdHJp
bmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9uQ2VsbChub2RlKTsKKyAgICAgICAgY29tcGlsZVRv
U3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3Iobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAppbmRleCBhNTNhNzdhMjQyNzVkODIwZWYyMDFhMThhNzlmMDU2MzYzNGIz
OGVkLi4zMjZkMTQzOGQwNDcyYzVlYzczYWQ2MzA3ODAwODY3ZTY5OTRlMTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM3
MzksNyArMzczOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgCiAgICAgY2FzZSBUb1N0cmluZzoKICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1
Y3RvcjogewotICAgICAgICBjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9u
Q2VsbChub2RlKTsKKyAgICAgICAgY29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0
b3Iobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC01MDU3LDYgKzUw
NTcsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OiB7Cisg
ICAgICAgIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeChub2RlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCiAgICAgY2FzZSBJc09iamVjdDogewogICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcywgUmV1c2UsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCmluZGV4IDUxZGQ1MGU1NTcyZGZl
ODM5MjczZTI0MzBlNGM2MWUxZTI3MWQ4ODMuLjlmZGY5ZWY1YzFjZTU4Y2M4ZGYxNWM4NjU1ZmNj
OTVmMDEyNDc3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcApAQCAtMzkwLDYgKzM5MCwzNyBAQCBjbGFzcyBT
dHJlbmd0aFJlZHVjdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBUb1N0cmluZzoKKyAgICAgICAgY2FzZSBDYWxs
U3RyaW5nQ29uc3RydWN0b3I6IHsKKyAgICAgICAgICAgIEVkZ2UmIGNoaWxkMSA9IG1fbm9kZS0+
Y2hpbGQxKCk7CisgICAgICAgICAgICBzd2l0Y2ggKGNoaWxkMS51c2VLaW5kKCkpIHsKKyAgICAg
ICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgICAgICBjYXNlIEludDUyUmVwVXNlOgorICAg
ICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6IHsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGQx
LT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBj
aGlsZDEtPmNvbnN0YW50KCktPnZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHJlc3VsdDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gU3RyaW5nOjpudW1iZXIodmFsdWUuYXNJbnQzMigpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLmlzTnVtYmVyKCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQo
dmFsdWUuYXNOdW1iZXIoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0
LmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0
VG9MYXp5SlNDb25zdGFudChtX2dyYXBoLCBMYXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3JhcGgs
IHJlc3VsdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgR2V0QXJyYXlM
ZW5ndGg6IHsKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBB
cnJheTo6R2VuZXJpYwogICAgICAgICAgICAgICAgIHx8IG1fbm9kZS0+YXJyYXlNb2RlKCkudHlw
ZSgpID09IEFycmF5OjpTdHJpbmcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCBmZjhhZmYwY2RiZThkZWFmYjAwOWYxMDg5YTNiY2U5ZDAy
MTU0ZDFiLi5hZDU0Yzk0MmNiOGJmZDBiMjg0ZmExYTcxMTY1NzlkNWE4ZGE1NDE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yNzksNiAr
Mjc5LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3Bl
cnR5OgogICAgIGNhc2UgVG9Mb3dlckNhc2U6CisgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhS
YWRpeDoKICAgICBjYXNlIENoZWNrRE9NOgogICAgIGNhc2UgQ2FsbERPTToKICAgICBjYXNlIENh
bGxET01HZXR0ZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKaW5kZXggMTIzNTMwNzUyMjcxMzJiOTJmMTlkNTA5MDY0OWZhYzg5MmNmZTg0Ny4uNmI0
ZDUwOGY1ZTJhZTY2Njg1MDc3MDZhMDAwMzQ0OWFmODFjM2UwMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTA3OCw2ICsxMDc4LDkgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBUb0xvd2VyQ2FzZToKICAgICAgICAg
ICAgIGNvbXBpbGVUb0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6CisgICAgICAgICAgICBjb21waWxlTnVtYmVyVG9T
dHJpbmdXaXRoUmFkaXgoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENoZWNr
RE9NOgogICAgICAgICAgICAgY29tcGlsZUNoZWNrRE9NKCk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTQ5ODEsNiArNDk4NCwxOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAg
c2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIHNpbXBsZVJlc3VsdCwgY29udmVydGVkUmVzdWx0
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIEludDMy
VXNlOgorICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25JbnQzMlRvU3RyaW5nV2l0aFZhbGlkUmFkaXgpLCBtX2NhbGxGcmFtZSwgbG93
SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmNvbnN0SW50MzIoMTApKSk7CisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgICAgIHNl
dEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSW50NTJUb1N0
cmluZ1dpdGhWYWxpZFJhZGl4KSwgbV9jYWxsRnJhbWUsIGxvd1N0cmljdEludDUyKG1fbm9kZS0+
Y2hpbGQxKCkpLCBtX291dC5jb25zdEludDMyKDEwKSkpOworICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNh
bGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Eb3VibGVUb1N0cmluZ1dpdGhWYWxp
ZFJhZGl4KSwgbV9jYWxsRnJhbWUsIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQu
Y29uc3RJbnQzMigxMCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJh
ZCB1c2Uga2luZCIpOwpAQCAtOTk4NCw2ICs5OTk5LDMwIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQs
IHNsb3dSZXN1bHQpKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dp
dGhSYWRpeCgpCisgICAgeworICAgICAgICBib29sIHZhbGlkUmFkaXhJc0d1YXJhbnRlZWQgPSBm
YWxzZTsKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQyKCktPmlzSW50MzJDb25zdGFudCgpKSB7
CisgICAgICAgICAgICBpbnQzMl90IHJhZGl4ID0gbV9ub2RlLT5jaGlsZDIoKS0+YXNJbnQzMigp
OworICAgICAgICAgICAgaWYgKHJhZGl4ID49IDIgJiYgcmFkaXggPD0gMzYpCisgICAgICAgICAg
ICAgICAgdmFsaWRSYWRpeElzR3VhcmFudGVlZCA9IHRydWU7CisgICAgICAgIH0KKworICAgICAg
ICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgSW50
MzJVc2U6CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291
dC5vcGVyYXRpb24odmFsaWRSYWRpeElzR3VhcmFudGVlZCA/IG9wZXJhdGlvbkludDMyVG9TdHJp
bmdXaXRoVmFsaWRSYWRpeCA6IG9wZXJhdGlvbkludDMyVG9TdHJpbmcpLCBtX2NhbGxGcmFtZSwg
bG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAg
ICAgIHNldEpTVmFsdWUodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbih2YWxp
ZFJhZGl4SXNHdWFyYW50ZWVkID8gb3BlcmF0aW9uSW50NTJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4
IDogb3BlcmF0aW9uSW50NTJUb1N0cmluZyksIG1fY2FsbEZyYW1lLCBsb3dTdHJpY3RJbnQ1Miht
X25vZGUtPmNoaWxkMSgpKSwgbG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSkpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgICAgIHNldEpT
VmFsdWUodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbih2YWxpZFJhZGl4SXNH
dWFyYW50ZWVkID8gb3BlcmF0aW9uRG91YmxlVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCA6IG9wZXJh
dGlvbkRvdWJsZVRvU3RyaW5nKSwgbV9jYWxsRnJhbWUsIGxvd0RvdWJsZShtX25vZGUtPmNoaWxk
MSgpKSwgbG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgY29tcGlsZVJlc29sdmVTY29wZSgpCiAg
ICAgewogICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVy
cygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NDYWxsSGVscGVycy5oCmluZGV4IDYyODhmOWU3YTg0Y2NmMzIxNDk5ZTNjNGQxMDAzMTcyN2Ni
YjVmYTYuLjM1YjdkODIyOGIyYjk3NDkyNGIxZTMxNGUxNzRkNmQyZTAwNThlYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtODkyLDYgKzg5MiwxNCBAQCBj
bGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzIpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyKQor
ICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgIH0KKwogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKICAgICB7CiAgICAgICAgIHJlc2V0Q2FsbEFyZ3Vt
ZW50cygpOwpAQCAtMTA5Myw2ICsxMTAxLDIwIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1Ymxp
YyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIFRydXN0ZWRJbW0z
MiBhcmcyKQorICAgIHsKKyNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQorICAgICAgICAv
LyBPbiBXaW5kb3dzLCBhcmd1bWVudHMgbWFwIHRvIGRlc2lnbmF0ZWQgcmVnaXN0ZXJzIGJhc2Vk
IG9uIHRoZSBhcmd1bWVudCBwb3NpdGlvbnMsIGV2ZW4gd2hlbiB0aGVyZSBhcmUgaW50ZXJsYWNl
ZCBzY2FsYXIgYW5kIGZsb2F0aW5nIHBvaW50IGFyZ3VtZW50cy4KKyAgICAgICAgLy8gU2VlIGh0
dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS96dGhrMmRraC5hc3B4CisgICAg
ICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgbW92
ZShhcmcyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworI2Vsc2UKKyAgICAgICAgbW92ZURvdWJs
ZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBtb3ZlKGFyZzIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CisjZW5kaWYKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMiwgRlBSUmVnIGFyZzMpCiAgICAgewogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZf
NjQpCkBAIC0xMTM1LDYgKzExNTcsMTMgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFz
c2VtYmx5SGVscGVycyB7CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTMyIGFy
ZzIpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBS
MCk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAg
bW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCiAgICAgewogICAgICAg
ICBtb3ZlRG91YmxlKGFyZzMsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CkBAIC0xMTc1LDYgKzEy
MDQsMTMgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAg
ICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShGUFJSZWcgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCisgICAgeworICAgICAg
ICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgIGFzc2VtYmxlcigp
LnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsIGFyZzEp
OworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKICAg
ICB7CiAgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKQEAgLTEyMjgsNiAr
MTI2NCwxMyBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsK
ICAgICAgICAgcG9rZShhcmcyLCA0KTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEZQUlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJn
MikKKyAgICB7CisgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjMsIGFyZzEpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBwb2tlKGFy
ZzIsIDQpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKICAgICB7
CiAgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggMWNkZjEzNjBlNmViZWUzMzkyZjYyZjIz
YmM3NTFkNWZiNDhmZjAzNy4uMjMzYjNlZDllMzVlOTEyMzcwMTVjYzFkNWZmNGUwNDRlNjg1Mjdj
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTMxMiw2
ICszMTIsOCBAQCB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9F
U3RaKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMgogdHlwZWRlZiBjaGFyKiAoSklUX09Q
RVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVN0WkIpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGlu
dDMyX3QsIEJ1dHRlcmZseSopOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRP
cGVyYXRpb25fRVN0WlApKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKTsK
IHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0
YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7Cit0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQ
X0pJVE9wZXJhdGlvbl9FUVopKEV4ZWNTdGF0ZSosIGludDY0X3QsIGludDMyX3QpOwordHlwZWRl
ZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRURaKShFeGVjU3RhdGUqLCBk
b3VibGUsIGludDMyX3QpOwogdHlwZWRlZiBTbG93UGF0aFJldHVyblR5cGUgKEpJVF9PUEVSQVRJ
T04gKlNwcnRfSklUT3BlcmF0aW9uX0VDbGkpKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyopOwog
dHlwZWRlZiBTdHJpbmdJbXBsKiAoSklUX09QRVJBVElPTiAqVF9KSVRPcGVyYXRpb25fRUpzcyko
RXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIHR5cGVkZWYgSlNTdHJpbmcqIChKSVRfT1BFUkFUSU9O
ICpKc3NfSklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKaW5kZXggMjYzYjkzZWFmNjQ0NTFiZjA5ZjNk
NjE5M2I0YzFhYWNkZjMzNTcwMy4uNzcxM2E5ZWQ0ZWM1YzY0OTRlOWUzMTNlMDI0NmM3MWU4OTJl
MjY4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2lj
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKQEAgLTU2
LDYgKzU2LDggQEAgZW51bSBKU19FWFBPUlRfUFJJVkFURSBJbnRyaW5zaWMgewogICAgIFN0cmlu
Z1Byb3RvdHlwZVZhbHVlT2ZJbnRyaW5zaWMsCiAgICAgU3RyaW5nUHJvdG90eXBlUmVwbGFjZUlu
dHJpbnNpYywKICAgICBTdHJpbmdQcm90b3R5cGVSZXBsYWNlUmVnRXhwSW50cmluc2ljLAorICAg
IFN0cmluZ1Byb3RvdHlwZVRvTG93ZXJDYXNlSW50cmluc2ljLAorICAgIE51bWJlclByb3RvdHlw
ZVRvU3RyaW5nSW50cmluc2ljLAogICAgIElNdWxJbnRyaW5zaWMsCiAgICAgUmFuZG9tSW50cmlu
c2ljLAogICAgIEZSb3VuZEludHJpbnNpYywKQEAgLTc4LDcgKzgwLDYgQEAgZW51bSBKU19FWFBP
UlRfUFJJVkFURSBJbnRyaW5zaWMgewogICAgIEF0b21pY3NXYWl0SW50cmluc2ljLAogICAgIEF0
b21pY3NXYWtlSW50cmluc2ljLAogICAgIEF0b21pY3NYb3JJbnRyaW5zaWMsCi0gICAgVG9Mb3dl
ckNhc2VJbnRyaW5zaWMsCiAgICAgUGFyc2VJbnRJbnRyaW5zaWMsCiAKICAgICAvLyBHZXR0ZXIg
aW50cmluc2ljcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQ
cm90b3R5cGUuY3BwCmluZGV4IGUwY2NjMTQ0MjZhYzRhYTFlZjg3MTE0M2FjNWI5YjE0NWU0OWI1
ZWUuLjk0ZTUxYzA5MWM2OTFiYjMxNzRhOThhNjQ5OGFlZmQ4OGQxNGI2MjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtNTgs
NyArNTgsNyBAQCBjb25zdCBDbGFzc0luZm8gTnVtYmVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJO
dW1iZXIiLCAmTnVtYmVyT2JqZWN0OjpzX2luZm8sICZudQogCiAvKiBTb3VyY2UgZm9yIE51bWJl
clByb3RvdHlwZS5sdXQuaAogQGJlZ2luIG51bWJlclByb3RvdHlwZVRhYmxlCi0gIHRvU3RyaW5n
ICAgICAgICAgIG51bWJlclByb3RvRnVuY1RvU3RyaW5nICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQorICB0b1N0cmluZyAgICAgICAgICBudW1iZXJQcm90b0Z1bmNUb1N0cmluZyAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEgTnVtYmVyUHJvdG90eXBlVG9TdHJpbmdJbnRyaW5zaWMKICAg
dG9Mb2NhbGVTdHJpbmcgICAgbnVtYmVyUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcgICBEb250RW51
bXxGdW5jdGlvbiAwCiAgIHZhbHVlT2YgICAgICAgICAgIG51bWJlclByb3RvRnVuY1ZhbHVlT2Yg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAogICB0b0ZpeGVkICAgICAgICAgICBudW1iZXJQ
cm90b0Z1bmNUb0ZpeGVkICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKQEAgLTE0NCw3ICsx
NDQsNyBAQCB0eXBlZGVmIGNoYXIgUmFkaXhCdWZmZXJbMjE4MF07CiAvLyBNYXBwaW5nIGZyb20g
aW50ZWdlcnMgMC4uMzUgdG8gZGlnaXQgaWRlbnRpZnlpbmcgdGhpcyB2YWx1ZSwgZm9yIHJhZGl4
IDIuLjM2Lgogc3RhdGljIGNvbnN0IGNoYXIgcmFkaXhEaWdpdHNbXSA9ICIwMTIzNDU2Nzg5YWJj
ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOwogCi1zdGF0aWMgY2hhciogaW50NTJUb1N0cmluZ1dp
dGhSYWRpeChjaGFyKiBzdGFydE9mUmVzdWx0U3RyaW5nLCBpbnQ2NF90IGludDUyVmFsdWUsIHVu
c2lnbmVkIHJhZGl4KQorc3RhdGljIGlubGluZSBjaGFyKiBpbnQ1MlRvU3RyaW5nV2l0aFJhZGl4
KGNoYXIqIHN0YXJ0T2ZSZXN1bHRTdHJpbmcsIGludDY0X3QgaW50NTJWYWx1ZSwgdW5zaWduZWQg
cmFkaXgpCiB7CiAgICAgYm9vbCBuZWdhdGl2ZSA9IGZhbHNlOwogICAgIHVpbnQ2NF90IHBvc2l0
aXZlTnVtYmVyID0gaW50NTJWYWx1ZTsKQEAgLTQ5OSwyNSArNDk5LDY4IEBAIHN0YXRpYyBpbmxp
bmUgaW50MzJfdCBleHRyYWN0UmFkaXhGcm9tQXJncyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0
dXJuIHJhZGl4OwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGludGVnZXJWYWx1
ZVRvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCByYWRpeCwgaW50MzJfdCB2YWx1ZSkK
K3N0YXRpYyBpbmxpbmUgSlNTdHJpbmcqIGludDMyVG9TdHJpbmdJbnRlcm5hbChWTSYgdm0sIGlu
dDMyX3QgdmFsdWUsIGludDMyX3QgcmFkaXgpCiB7CisgICAgQVNTRVJUKCEocmFkaXggPCAyIHx8
IHJhZGl4ID4gMzYpKTsKICAgICAvLyBBIG5lZ2F0aXZlIHZhbHVlIGNhc3RlZCB0byB1bnNpZ25l
ZCB3b3VsZCBiZSBiaWdnZXIgdGhhbiAzNiAodGhlIG1heCByYWRpeCkuCiAgICAgaWYgKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPih2YWx1ZSkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFkaXgpKSB7
CiAgICAgICAgIEFTU0VSVCh2YWx1ZSA8PSAzNik7CiAgICAgICAgIEFTU0VSVCh2YWx1ZSA+PSAw
KTsKLSAgICAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcocmFkaXhEaWdp
dHNbdmFsdWVdKSk7CisgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKHJhZGl4RGlnaXRzW3ZhbHVlXSk7CiAgICAgfQogCiAgICAgaWYgKHJhZGl4ID09
IDEwKSB7Ci0gICAgICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCB2bS0+bnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlKSkp
OworICAgICAgICByZXR1cm4ganNTdHJpbmcoJnZtLCB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFs
dWUpKTsKICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMs
IHRvU3RyaW5nV2l0aFJhZGl4KHZhbHVlLCByYWRpeCkpKTsKKyAgICByZXR1cm4ganNTdHJpbmco
JnZtLCB0b1N0cmluZ1dpdGhSYWRpeCh2YWx1ZSwgcmFkaXgpKTsKIAogfQogCitzdGF0aWMgQUxX
QVlTX0lOTElORSBKU1N0cmluZyogbnVtYmVyVG9TdHJpbmdJbnRlcm5hbChWTSYgdm0sIGRvdWJs
ZSBkb3VibGVWYWx1ZSwgaW50MzJfdCByYWRpeCkKK3sKKyAgICBBU1NFUlQoIShyYWRpeCA8IDIg
fHwgcmFkaXggPiAzNikpOworCisgICAgaW50MzJfdCBpbnRlZ2VyVmFsdWUgPSBzdGF0aWNfY2Fz
dDxpbnQzMl90Pihkb3VibGVWYWx1ZSk7CisgICAgaWYgKGludGVnZXJWYWx1ZSA9PSBkb3VibGVW
YWx1ZSkKKyAgICAgICAgcmV0dXJuIGludDMyVG9TdHJpbmdJbnRlcm5hbCh2bSwgaW50ZWdlclZh
bHVlLCByYWRpeCk7CisKKyAgICBpZiAocmFkaXggPT0gMTApCisgICAgICAgIHJldHVybiBqc1N0
cmluZygmdm0sIHZtLm51bWVyaWNTdHJpbmdzLmFkZChkb3VibGVWYWx1ZSkpOworCisgICAgaWYg
KCFzdGQ6OmlzZmluaXRlKGRvdWJsZVZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlh
bFN0cmluZygmdm0sIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KGRvdWJsZVZhbHVl
KSk7CisKKyAgICBSYWRpeEJ1ZmZlciBidWZmZXI7CisgICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwg
dG9TdHJpbmdXaXRoUmFkaXgoYnVmZmVyLCBkb3VibGVWYWx1ZSwgcmFkaXgpKTsKK30KKworSlNT
dHJpbmcqIGludDMyVG9TdHJpbmcoVk0mIHZtLCBpbnQzMl90IHZhbHVlLCBpbnQzMl90IHJhZGl4
KQoreworICAgIHJldHVybiBpbnQzMlRvU3RyaW5nSW50ZXJuYWwodm0sIHZhbHVlLCByYWRpeCk7
Cit9CisKK0pTU3RyaW5nKiBpbnQ1MlRvU3RyaW5nKFZNJiB2bSwgaW50NjRfdCB2YWx1ZSwgaW50
MzJfdCByYWRpeCkKK3sKKyAgICBBU1NFUlQoIShyYWRpeCA8IDIgfHwgcmFkaXggPiAzNikpOwor
ICAgIGlmIChyYWRpeCA9PSAxMCkKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwgdm0ubnVt
ZXJpY1N0cmluZ3MuYWRkKHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpKSk7CisKKyAgICAvLyBQ
b3NpdGlvbiB0aGUgZGVjaW1hbCBwb2ludCBhdCB0aGUgY2VudGVyIG9mIHRoZSBzdHJpbmcsIHNl
dAorICAgIC8vIHRoZSBzdGFydE9mUmVzdWx0U3RyaW5nIHBvaW50ZXIgdG8gcG9pbnQgYXQgdGhl
IGRlY2ltYWwgcG9pbnQuCisgICAgUmFkaXhCdWZmZXIgYnVmZmVyOworICAgIGNoYXIqIGRlY2lt
YWxQb2ludCA9IGJ1ZmZlciArIHNpemVvZihidWZmZXIpIC8gMjsKKyAgICBjaGFyKiBzdGFydE9m
UmVzdWx0U3RyaW5nID0gZGVjaW1hbFBvaW50OworICAgICpkZWNpbWFsUG9pbnQgPSAnXDAnOwor
CisgICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwgaW50NTJUb1N0cmluZ1dpdGhSYWRpeChzdGFydE9m
UmVzdWx0U3RyaW5nLCB2YWx1ZSwgcmFkaXgpKTsKK30KKworSlNTdHJpbmcqIG51bWJlclRvU3Ry
aW5nKFZNJiB2bSwgZG91YmxlIGRvdWJsZVZhbHVlLCBpbnQzMl90IHJhZGl4KQoreworICAgIHJl
dHVybiBudW1iZXJUb1N0cmluZ0ludGVybmFsKHZtLCBkb3VibGVWYWx1ZSwgcmFkaXgpOworfQor
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtNTMxLDE4ICs1
NzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAocmFkaXggPCAyIHx8IHJhZGl4ID4gMzYpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJ0b1N0cmluZygpIHJhZGl4IGFyZ3VtZW50IG11c3QgYmUgYmV0
d2VlbiAyIGFuZCAzNiIpKSk7CiAKLSAgICBpbnQzMl90IGludGVnZXJWYWx1ZSA9IHN0YXRpY19j
YXN0PGludDMyX3Q+KGRvdWJsZVZhbHVlKTsKLSAgICBpZiAoaW50ZWdlclZhbHVlID09IGRvdWJs
ZVZhbHVlKQotICAgICAgICByZXR1cm4gaW50ZWdlclZhbHVlVG9TdHJpbmcoZXhlYywgcmFkaXgs
IGludGVnZXJWYWx1ZSk7Ci0KLSAgICBpZiAocmFkaXggPT0gMTApCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoJnZtLCB2bS5udW1lcmljU3RyaW5ncy5hZGQoZG91Ymxl
VmFsdWUpKSk7Ci0KLSAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoZG91YmxlVmFsdWUpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmc6
Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChkb3VibGVWYWx1ZSkpKTsKLQotICAgIFJhZGl4QnVm
ZmVyIHM7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCB0b1N0cmlu
Z1dpdGhSYWRpeChzLCBkb3VibGVWYWx1ZSwgcmFkaXgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShudW1iZXJUb1N0cmluZ0ludGVybmFsKHZtLCBkb3VibGVWYWx1ZSwgcmFkaXgpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0xvY2Fs
ZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlclByb3RvdHlwZS5oCmluZGV4IDEwMmEyMTQzYTE4NzkzODU5MmU0OTA0YWEyZGU1
NDQ4M2FmN2IxNDEuLjNjMDY5Y2IwMWIxMjJlNjZhM2VlOTg2NzQ0NTMxMTM1NTA2ZDMzMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCkBA
IC01MSw1ICs1MSw4IEBAIGNsYXNzIE51bWJlclByb3RvdHlwZSA6IHB1YmxpYyBOdW1iZXJPYmpl
Y3QgewogfTsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNW
YWx1ZU9mKEV4ZWNTdGF0ZSopOworSlNTdHJpbmcqIGludDMyVG9TdHJpbmcoVk0mLCBpbnQzMl90
IHZhbHVlLCBpbnQzMl90IHJhZGl4KTsKK0pTU3RyaW5nKiBpbnQ1MlRvU3RyaW5nKFZNJiwgaW50
NjRfdCB2YWx1ZSwgaW50MzJfdCByYWRpeCk7CitKU1N0cmluZyogbnVtYmVyVG9TdHJpbmcoVk0m
LCBkb3VibGUgdmFsdWUsIGludDMyX3QgcmFkaXgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmlu
ZGV4IGRhYmJjMjY2Mjk0NWFkOWRjZTVjMjYwNGY4NGEwODZhMzgzMjUyN2MuLmFmYjY1ZTE3MmU0
YzE4ZjA1ZjdhZjMwNjFjNjkyZGJkNGZkY2QwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZv
aWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTU3RyCiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04oInNsaWNlIiwgc3RyaW5nUHJvdG9GdW5jU2xpY2UsIERvbnRFbnVtLCAyKTsKICAg
ICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigic3Vic3RyIiwgc3RyaW5n
UHJvdG9GdW5jU3Vic3RyLCBEb250RW51bSwgMik7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04oInN1YnN0cmluZyIsIHN0cmluZ1Byb3RvRnVuY1N1YnN0cmluZywg
RG9udEVudW0sIDIpOwotICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTigidG9Mb3dlckNhc2UiLCBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZSwgRG9u
dEVudW0sIDAsIFRvTG93ZXJDYXNlSW50cmluc2ljKTsKKyAgICBKU0NfTkFUSVZFX0lOVFJJTlNJ
Q19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInRvTG93ZXJDYXNlIiwgc3RyaW5nUHJvdG9G
dW5jVG9Mb3dlckNhc2UsIERvbnRFbnVtLCAwLCBTdHJpbmdQcm90b3R5cGVUb0xvd2VyQ2FzZUlu
dHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInRv
VXBwZXJDYXNlIiwgc3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2UsIERvbnRFbnVtLCAwKTsKICNp
ZiBFTkFCTEUoSU5UTCkKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04oImxvY2FsZUNvbXBhcmUiLCBzdHJpbmdQcm90b3R5cGVMb2NhbGVDb21wYXJlQ29kZUdlbmVy
YXRvciwgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwppbmRleCA0NDIwZjg5MmNlMzJmOWE1YjkyYWU0NzYxMjQ2OGI4NDYwMmQ0ZjY1
Li5hYWNjZmZiZjQ5YjBkYzU0MzgwYjI4NTkwN2NlZGFiNDQzOWIyOGFmIDEwMDY0NAotLS0gYS9K
U1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBA
CisyMDE3LTAzLTIxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFtKU0NdIE9wdGltaXplIE51bWJlci5wcm90b3R5cGUudG9TdHJpbmcgb24gSW50MzIg
LyBJbnQ1MiAvIERvdWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY3NDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAg
ICAgICAgKiBzdHJlc3MvbnVtYmVyLXRvLXN0cmluZy1hYnN0cmFjdC1vcGVyYXRpb24uanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoaW50MzJUb1N0cmluZyk6CisgICAg
ICAgIChzaG91bGRCZS5pbnQzMlRvU3RyaW5nLm5ldy5OdW1iZXIuaW50NTJUb1N0cmluZyk6Cisg
ICAgICAgIChzaG91bGRCZS5pbnQzMlRvU3RyaW5nLm5ldy5OdW1iZXIpOgorICAgICAgICAoc2hv
dWxkQmUuZG91YmxlVG9TdHJpbmcpOgorICAgICAgICAqIHN0cmVzcy9udW1iZXItdG8tc3RyaW5n
LXJhZGl4LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGludDMyVG9T
dHJpbmcpOgorICAgICAgICAoc2hvdWxkQmUuaW50MzJUb1N0cmluZy5uZXcuTnVtYmVyLmludDUy
VG9TdHJpbmcpOgorICAgICAgICAoc2hvdWxkQmUuaW50MzJUb1N0cmluZy5uZXcuTnVtYmVyKToK
KyAgICAgICAgKHNob3VsZEJlLmRvdWJsZVRvU3RyaW5nKToKKyAgICAgICAgKiBzdHJlc3MvbnVt
YmVyLXRvLXN0cmluZy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChp
bnQzMlRvU3RyaW5nKToKKyAgICAgICAgKHNob3VsZEJlLmludDMyVG9TdHJpbmcubmV3Lk51bWJl
ci5pbnQ1MlRvU3RyaW5nKToKKyAgICAgICAgKHNob3VsZEJlLmludDMyVG9TdHJpbmcubmV3Lk51
bWJlcik6CisgICAgICAgIChzaG91bGRCZS5kb3VibGVUb1N0cmluZyk6CisKIDIwMTctMDMtMTkg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBgY29uc3QgbG9jYXRp
b24gPSAiZm9vImAgdGhyb3dzIGluIGEgd29ya2VyCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9udW1iZXItdG8tc3RyaW5nLWFic3RyYWN0LW9wZXJhdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNz
L251bWJlci10by1zdHJpbmctYWJzdHJhY3Qtb3BlcmF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxYTlk
NWQ0ZThiMmM3MjgyYjNkMjM1M2JjMTY5YWMwNTY5NjM4MTUKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9udW1iZXItdG8tc3RyaW5nLWFic3RyYWN0LW9wZXJhdGlvbi5qcwpAQCAt
MCwwICsxLDgwIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2
YWx1ZTogZXhwZWN0ZWQ6KCR7ZXhwZWN0ZWR9KSxhY3R1YWw6KCR7YWN0dWFsfSlgKTsKK30KKwor
ZnVuY3Rpb24gZXhwZWN0ZWQobnVtLCByYWRpeCkKK3sKKyAgICBsZXQgY2hhcmFjdGVycyA9ICIw
MTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOworICAgIGxldCByZXN1bHQgPSAi
IjsKKyAgICBsZXQgbmVnYXRpdmUgPSBmYWxzZTsKKyAgICBpZiAobnVtIDwgMCkgeworICAgICAg
ICBuZWdhdGl2ZSA9IHRydWU7CisgICAgICAgIG51bSA9IC1udW07CisgICAgfQorCisgICAgZG8g
eworICAgICAgICBjb25zdCBpbmRleCA9IG51bSAlIHJhZGl4OworICAgICAgICByZXN1bHQgPSBj
aGFyYWN0ZXJzW2luZGV4XSArIHJlc3VsdDsKKyAgICAgICAgbnVtID0gKG51bSAtIGluZGV4KSAv
IHJhZGl4OworICAgIH0gd2hpbGUgKG51bSk7CisKKyAgICBpZiAobmVnYXRpdmUpCisgICAgICAg
IHJldHVybiAnLScgKyByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworeworICAgIGZ1
bmN0aW9uIGludDMyVG9TdHJpbmcobnVtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGAke251bX1g
OworICAgIH0KKyAgICBub0lubGluZShpbnQzMlRvU3RyaW5nKTsKKworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAgc2hvdWxkQmUoaW50MzJUb1N0cmluZyhpKSwg
ZXhwZWN0ZWQoaSwgMTApKTsKKyAgICAgICAgc2hvdWxkQmUoaW50MzJUb1N0cmluZygtaSksIGV4
cGVjdGVkKC1pLCAxMCkpOworICAgIH0KKworICAgIHNob3VsZEJlKGludDMyVG9TdHJpbmcoMHhm
ZmZmZmZmZmZmKSwgZXhwZWN0ZWQoMHhmZmZmZmZmZmZmLCAxMCkpOworICAgIHNob3VsZEJlKGlu
dDMyVG9TdHJpbmcoMC4xKSwgYDAuMWApOworICAgIHNob3VsZEJlKGludDMyVG9TdHJpbmcoLTAu
MSksIGAtMC4xYCk7CisgICAgc2hvdWxkQmUoaW50MzJUb1N0cmluZyhuZXcgTnVtYmVyKDB4ZmYp
KSwgYDI1NWApOworfQorCit7CisgICAgZnVuY3Rpb24gaW50NTJUb1N0cmluZyhudW0pCisgICAg
eworICAgICAgICByZXR1cm4gYCR7ZmlhdEludDUyKG51bSl9YDsKKyAgICB9CisgICAgbm9Jbmxp
bmUoaW50NTJUb1N0cmluZyk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7
CisgICAgICAgIHNob3VsZEJlKGludDUyVG9TdHJpbmcoMHhmZmZmZmZmZiArIGkpLCBleHBlY3Rl
ZCgweGZmZmZmZmZmICsgaSwgMTApKTsKKyAgICAgICAgc2hvdWxkQmUoaW50NTJUb1N0cmluZygt
KDB4ZmZmZmZmZmYgKyBpKSksIGV4cGVjdGVkKC0oMHhmZmZmZmZmZiArIGkpLCAxMCkpOworICAg
IH0KKworICAgIHNob3VsZEJlKGludDUyVG9TdHJpbmcoMHhmZiksIGAyNTVgKTsKKyAgICBzaG91
bGRCZShpbnQ1MlRvU3RyaW5nKDAuMSksIGAwLjFgKTsKKyAgICBzaG91bGRCZShpbnQ1MlRvU3Ry
aW5nKC0wLjEpLCBgLTAuMWApOworICAgIHNob3VsZEJlKGludDUyVG9TdHJpbmcobmV3IE51bWJl
cigweGZmKSksIGAyNTVgKTsKK30KKworeworICAgIGZ1bmN0aW9uIGRvdWJsZVRvU3RyaW5nKG51
bSkKKyAgICB7CisgICAgICAgIHJldHVybiBgJHtudW19YDsKKyAgICB9CisgICAgbm9JbmxpbmUo
ZG91YmxlVG9TdHJpbmcpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgewor
ICAgICAgICBzaG91bGRCZShkb3VibGVUb1N0cmluZygxLjAxKSwgYDEuMDFgKTsKKyAgICAgICAg
c2hvdWxkQmUoZG91YmxlVG9TdHJpbmcoLTEuMDEpLCBgLTEuMDFgKTsKKyAgICB9CisKKyAgICBz
aG91bGRCZShkb3VibGVUb1N0cmluZygweGZmKSwgYDI1NWApOworICAgIHNob3VsZEJlKGRvdWJs
ZVRvU3RyaW5nKDAuMSksIGAwLjFgKTsKKyAgICBzaG91bGRCZShkb3VibGVUb1N0cmluZygtMC4x
KSwgYC0wLjFgKTsKKyAgICBzaG91bGRCZShkb3VibGVUb1N0cmluZyhuZXcgTnVtYmVyKDB4ZmYp
KSwgYDI1NWApOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbnVtYmVyLXRvLXN0cmlu
Zy1yYWRpeC5qcyBiL0pTVGVzdHMvc3RyZXNzL251bWJlci10by1zdHJpbmctcmFkaXguanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmRkM2E4NDFhMTJlNDg2ZDMwOWU5ZjllNDBlOTRiMDEzZWZiODEwZgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL251bWJlci10by1zdHJpbmctcmFkaXguanMKQEAg
LTAsMCArMSw4MCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQg
dmFsdWU6IGV4cGVjdGVkOigke2V4cGVjdGVkfSksYWN0dWFsOigke2FjdHVhbH0pYCk7Cit9CisK
K2Z1bmN0aW9uIGV4cGVjdGVkKG51bSwgcmFkaXgpCit7CisgICAgbGV0IGNoYXJhY3RlcnMgPSAi
MDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKKyAgICBsZXQgcmVzdWx0ID0g
IiI7CisgICAgbGV0IG5lZ2F0aXZlID0gZmFsc2U7CisgICAgaWYgKG51bSA8IDApIHsKKyAgICAg
ICAgbmVnYXRpdmUgPSB0cnVlOworICAgICAgICBudW0gPSAtbnVtOworICAgIH0KKworICAgIGRv
IHsKKyAgICAgICAgY29uc3QgaW5kZXggPSBudW0gJSByYWRpeDsKKyAgICAgICAgcmVzdWx0ID0g
Y2hhcmFjdGVyc1tpbmRleF0gKyByZXN1bHQ7CisgICAgICAgIG51bSA9IChudW0gLSBpbmRleCkg
LyByYWRpeDsKKyAgICB9IHdoaWxlIChudW0pOworCisgICAgaWYgKG5lZ2F0aXZlKQorICAgICAg
ICByZXR1cm4gJy0nICsgcmVzdWx0OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3sKKyAgICBm
dW5jdGlvbiBpbnQzMlRvU3RyaW5nKG51bSwgcmFkaXgpCisgICAgeworICAgICAgICByZXR1cm4g
bnVtLnRvU3RyaW5nKHJhZGl4KTsKKyAgICB9CisgICAgbm9JbmxpbmUoaW50MzJUb1N0cmluZyk7
CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIHNob3VsZEJl
KGludDMyVG9TdHJpbmcoaSwgMTYpLCBleHBlY3RlZChpLCAxNikpOworICAgICAgICBzaG91bGRC
ZShpbnQzMlRvU3RyaW5nKC1pLCAxNiksIGV4cGVjdGVkKC1pLCAxNikpOworICAgIH0KKworICAg
IHNob3VsZEJlKGludDMyVG9TdHJpbmcoMHhmZmZmZmZmZmZmLCAxNiksIGV4cGVjdGVkKDB4ZmZm
ZmZmZmZmZiwgMTYpKTsKKyAgICBzaG91bGRCZShpbnQzMlRvU3RyaW5nKDAuMSwgMTYpLCBgMC4x
OTk5OTk5OTk5OTk5YWApOworICAgIHNob3VsZEJlKGludDMyVG9TdHJpbmcoLTAuMSwgMTYpLCBg
LTAuMTk5OTk5OTk5OTk5OWFgKTsKKyAgICBzaG91bGRCZShpbnQzMlRvU3RyaW5nKG5ldyBOdW1i
ZXIoMHhmZiksIDE2KSwgYGZmYCk7Cit9CisKK3sKKyAgICBmdW5jdGlvbiBpbnQ1MlRvU3RyaW5n
KG51bSwgcmFkaXgpCisgICAgeworICAgICAgICByZXR1cm4gZmlhdEludDUyKG51bSkudG9TdHJp
bmcocmFkaXgpOworICAgIH0KKyAgICBub0lubGluZShpbnQ1MlRvU3RyaW5nKTsKKworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAgc2hvdWxkQmUoaW50NTJUb1N0
cmluZygweGZmZmZmZmZmICsgaSwgMTYpLCBleHBlY3RlZCgweGZmZmZmZmZmICsgaSwgMTYpKTsK
KyAgICAgICAgc2hvdWxkQmUoaW50NTJUb1N0cmluZygtKDB4ZmZmZmZmZmYgKyBpKSwgMTYpLCBl
eHBlY3RlZCgtKDB4ZmZmZmZmZmYgKyBpKSwgMTYpKTsKKyAgICB9CisKKyAgICBzaG91bGRCZShp
bnQ1MlRvU3RyaW5nKDB4ZmYsIDE2KSwgYGZmYCk7CisgICAgc2hvdWxkQmUoaW50NTJUb1N0cmlu
ZygwLjEsIDE2KSwgYDAuMTk5OTk5OTk5OTk5OWFgKTsKKyAgICBzaG91bGRCZShpbnQ1MlRvU3Ry
aW5nKC0wLjEsIDE2KSwgYC0wLjE5OTk5OTk5OTk5OTlhYCk7CisgICAgc2hvdWxkQmUoaW50NTJU
b1N0cmluZyhuZXcgTnVtYmVyKDB4ZmYpLCAxNiksIGBmZmApOworfQorCit7CisgICAgZnVuY3Rp
b24gZG91YmxlVG9TdHJpbmcobnVtLCByYWRpeCkKKyAgICB7CisgICAgICAgIHJldHVybiBudW0u
dG9TdHJpbmcocmFkaXgpOworICAgIH0KKyAgICBub0lubGluZShkb3VibGVUb1N0cmluZyk7CisK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIHNob3VsZEJlKGRv
dWJsZVRvU3RyaW5nKDEuMDEsIDE2KSwgYDEuMDI4ZjVjMjhmNWMyOWApOworICAgICAgICBzaG91
bGRCZShkb3VibGVUb1N0cmluZygtMS4wMSwgMTYpLCBgLTEuMDI4ZjVjMjhmNWMyOWApOworICAg
IH0KKworICAgIHNob3VsZEJlKGRvdWJsZVRvU3RyaW5nKDB4ZmYsIDE2KSwgYGZmYCk7CisgICAg
c2hvdWxkQmUoZG91YmxlVG9TdHJpbmcoMC4xLCAxNiksIGAwLjE5OTk5OTk5OTk5OTlhYCk7Cisg
ICAgc2hvdWxkQmUoZG91YmxlVG9TdHJpbmcoLTAuMSwgMTYpLCBgLTAuMTk5OTk5OTk5OTk5OWFg
KTsKKyAgICBzaG91bGRCZShkb3VibGVUb1N0cmluZyhuZXcgTnVtYmVyKDB4ZmYpLCAxNiksIGBm
ZmApOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbnVtYmVyLXRvLXN0cmluZy5qcyBi
L0pTVGVzdHMvc3RyZXNzL251bWJlci10by1zdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWUwYzJmYTJm
ZjkyNjIxN2MxNzBjNjYxNmNkNzQ2ZmJlODMyYTM5YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL251bWJlci10by1zdHJpbmcuanMKQEAgLTAsMCArMSw4MCBAQAorZnVuY3Rpb24g
c2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6IGV4cGVjdGVkOigke2V4cGVj
dGVkfSksYWN0dWFsOigke2FjdHVhbH0pYCk7Cit9CisKK2Z1bmN0aW9uIGV4cGVjdGVkKG51bSwg
cmFkaXgpCit7CisgICAgbGV0IGNoYXJhY3RlcnMgPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1u
b3BxcnN0dXZ3eHl6IjsKKyAgICBsZXQgcmVzdWx0ID0gIiI7CisgICAgbGV0IG5lZ2F0aXZlID0g
ZmFsc2U7CisgICAgaWYgKG51bSA8IDApIHsKKyAgICAgICAgbmVnYXRpdmUgPSB0cnVlOworICAg
ICAgICBudW0gPSAtbnVtOworICAgIH0KKworICAgIGRvIHsKKyAgICAgICAgY29uc3QgaW5kZXgg
PSBudW0gJSByYWRpeDsKKyAgICAgICAgcmVzdWx0ID0gY2hhcmFjdGVyc1tpbmRleF0gKyByZXN1
bHQ7CisgICAgICAgIG51bSA9IChudW0gLSBpbmRleCkgLyByYWRpeDsKKyAgICB9IHdoaWxlIChu
dW0pOworCisgICAgaWYgKG5lZ2F0aXZlKQorICAgICAgICByZXR1cm4gJy0nICsgcmVzdWx0Owor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3sKKyAgICBmdW5jdGlvbiBpbnQzMlRvU3RyaW5nKG51
bSkKKyAgICB7CisgICAgICAgIHJldHVybiBudW0udG9TdHJpbmcoMTYpOworICAgIH0KKyAgICBu
b0lubGluZShpbnQzMlRvU3RyaW5nKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyAr
K2kpIHsKKyAgICAgICAgc2hvdWxkQmUoaW50MzJUb1N0cmluZyhpKSwgZXhwZWN0ZWQoaSwgMTYp
KTsKKyAgICAgICAgc2hvdWxkQmUoaW50MzJUb1N0cmluZygtaSksIGV4cGVjdGVkKC1pLCAxNikp
OworICAgIH0KKworICAgIHNob3VsZEJlKGludDMyVG9TdHJpbmcoMHhmZmZmZmZmZmZmKSwgZXhw
ZWN0ZWQoMHhmZmZmZmZmZmZmLCAxNikpOworICAgIHNob3VsZEJlKGludDMyVG9TdHJpbmcoMC4x
KSwgYDAuMTk5OTk5OTk5OTk5OWFgKTsKKyAgICBzaG91bGRCZShpbnQzMlRvU3RyaW5nKC0wLjEp
LCBgLTAuMTk5OTk5OTk5OTk5OWFgKTsKKyAgICBzaG91bGRCZShpbnQzMlRvU3RyaW5nKG5ldyBO
dW1iZXIoMHhmZikpLCBgZmZgKTsKK30KKworeworICAgIGZ1bmN0aW9uIGludDUyVG9TdHJpbmco
bnVtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZpYXRJbnQ1MihudW0pLnRvU3RyaW5nKDE2KTsK
KyAgICB9CisgICAgbm9JbmxpbmUoaW50NTJUb1N0cmluZyk7CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIHNob3VsZEJlKGludDUyVG9TdHJpbmcoMHhmZmZm
ZmZmZiArIGkpLCBleHBlY3RlZCgweGZmZmZmZmZmICsgaSwgMTYpKTsKKyAgICAgICAgc2hvdWxk
QmUoaW50NTJUb1N0cmluZygtKDB4ZmZmZmZmZmYgKyBpKSksIGV4cGVjdGVkKC0oMHhmZmZmZmZm
ZiArIGkpLCAxNikpOworICAgIH0KKworICAgIHNob3VsZEJlKGludDUyVG9TdHJpbmcoMHhmZiks
IGBmZmApOworICAgIHNob3VsZEJlKGludDUyVG9TdHJpbmcoMC4xKSwgYDAuMTk5OTk5OTk5OTk5
OWFgKTsKKyAgICBzaG91bGRCZShpbnQ1MlRvU3RyaW5nKC0wLjEpLCBgLTAuMTk5OTk5OTk5OTk5
OWFgKTsKKyAgICBzaG91bGRCZShpbnQ1MlRvU3RyaW5nKG5ldyBOdW1iZXIoMHhmZikpLCBgZmZg
KTsKK30KKworeworICAgIGZ1bmN0aW9uIGRvdWJsZVRvU3RyaW5nKG51bSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBudW0udG9TdHJpbmcoMTYpOworICAgIH0KKyAgICBub0lubGluZShkb3VibGVU
b1N0cmluZyk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAg
IHNob3VsZEJlKGRvdWJsZVRvU3RyaW5nKDEuMDEpLCBgMS4wMjhmNWMyOGY1YzI5YCk7CisgICAg
ICAgIHNob3VsZEJlKGRvdWJsZVRvU3RyaW5nKC0xLjAxKSwgYC0xLjAyOGY1YzI4ZjVjMjlgKTsK
KyAgICB9CisKKyAgICBzaG91bGRCZShkb3VibGVUb1N0cmluZygweGZmKSwgYGZmYCk7CisgICAg
c2hvdWxkQmUoZG91YmxlVG9TdHJpbmcoMC4xKSwgYDAuMTk5OTk5OTk5OTk5OWFgKTsKKyAgICBz
aG91bGRCZShkb3VibGVUb1N0cmluZygtMC4xKSwgYC0wLjE5OTk5OTk5OTk5OTlhYCk7CisgICAg
c2hvdWxkQmUoZG91YmxlVG9TdHJpbmcobmV3IE51bWJlcigweGZmKSksIGBmZmApOworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>